import type { InjectionKey, Ref } from 'vue'

export type SlideScale = Ref<number>
export type SlideId = Ref<string>
export type RadioGroupValue = {
  value: Ref<string>
  updateValue: (value: string) => void
}

export const injectKeySlideScale: InjectionKey<SlideScale> = Symbol()
export const injectKeySlideId: InjectionKey<SlideId> = Symbol()
export const injectKeyRadioGroupValue: InjectionKey<RadioGroupValue> = Symbol()

/**
 * 单页模式。EditorEn（英语展示页）专用：整个编辑器只允许存在一页，
 * 插入口语工具时用「替换当前全部页面」代替「新增一页」。
 *
 * provide：views/Editor/indexEn.vue
 * inject ：EnglishSpeaking/layers/Layer2Speaking.vue —— 建页分支
 *          hooks/useAddSlidesOrElements.ts —— 挡住 Ctrl+V 贴页 / AIPPT 批量加页
 *
 * 其余编辑器（index / index2 / index3）不 provide，inject 一律拿到 default false，
 * 行为与今天完全一致。因为是 provide 而不是全局 store，值随 EditorEn 一起消失，
 * 不存在「切走之后旗标还留着」的问题。
 */
export const injectKeySingleSlideMode: InjectionKey<boolean> = Symbol()