using Microsoft.AspNetCore.Components.Web; namespace AIStudio.Settings.DataModel; public static class SendBehaviorExtensions { /// The shortcut the person chose for sending. extension(SendBehavior behavior) { /// /// Checks whether a key released in a message field sends the message. /// /// /// Every message field of the app reads the keys this way, so that the shortcut chosen for the chat holds /// wherever the person writes to a model. /// /// The key released. /// True when the key sends the message. public bool IsSendShortcut(KeyboardEventArgs keyEvent) { // Either enter or numpad enter: var key = keyEvent.Code.ToLowerInvariant(); if (key is not ("enter" or "numpadenter")) return false; var isModifier = keyEvent.AltKey || keyEvent.CtrlKey || keyEvent.MetaKey || keyEvent.ShiftKey; return behavior switch { SendBehavior.ENTER_IS_SENDING => !isModifier, SendBehavior.MODIFER_ENTER_IS_SENDING => isModifier, _ => false }; } } }