Msg<T>: { key: "arrow-left" | "arrow-right"; type: "pressed-horizontal-arrow-key"; } | { key: "arrow-up" | "arrow-down"; type: "pressed-vertical-arrow-key"; } | { type: "pressed-backspace-key"; } | { type: "pressed-escape-key"; } | { type: "pressed-enter-key"; } | { key: string; type: "pressed-key"; } | { item: T; type: "pressed-item"; } | { type: "focused-input"; } | { type: "blurred-input"; } | { inputValue: string; type: "inputted-value"; } | { index: number; type: "hovered-over-item"; } | { type: "pressed-input"; } | { type: "pressed-unselect-all-button"; } | { item: T; type: "pressed-unselect-button"; } | { item: T; type: "focused-selected-item"; } | { item: T; type: "blurred-selected-item"; } | { type: "toggle-opened"; } | { type: "pressed-clear-button"; } | { allItems: T[]; type: "set-all-items"; } | { selectedItems: T[]; type: "set-selected-items"; } | { inputValue: string; type: "set-input-value"; } | { highlightIndex: number; type: "set-highlight-index"; } | { mode: SelectMode; type: "set-mode"; }