import type { DeepReadonly, InjectionKey, Ref } from 'vue' import type Overlay from '@/components/ui/Overlay.vue' import type DialogBox from '@/components/ui/DialogBox.vue' import type MessageToaster from '@/components/ui/message-toaster/MessageToaster.vue' import type Router from '@/router' export type ReadonlyInjectionKey = InjectionKey<[Readonly | DeepReadonly, Closure]> export const RouterKey: InjectionKey = Symbol('Router') export const OverlayKey: InjectionKey>> = Symbol('Overlay') export const DialogBoxKey: InjectionKey>> = Symbol('DialogBox') export const MessageToasterKey: InjectionKey>> = Symbol('MessageToaster') export const PlayablesKey: ReadonlyInjectionKey> | InjectionKey> = Symbol('Playables') export const CurrentPlayableKey: InjectionKey> = Symbol('CurrentPlayable') export const SelectedPlayablesKey: ReadonlyInjectionKey> = Symbol('SelectedPlayables') export const PlayableListConfigKey: ReadonlyInjectionKey> = Symbol('SongListConfig') export const PlayableListSortFieldKey: ReadonlyInjectionKey> = Symbol('SongListSortField') export const SongListSortOrderKey: ReadonlyInjectionKey> = Symbol('SongListSortOrder') export const SongListFilterKeywordsKey: InjectionKey> = Symbol('SongListFilterKeywords') export const PlayableListContextKey: InjectionKey> = Symbol('SongListContext') export const ModalContextKey: InjectionKey>> = Symbol('ModalContext')