{"version":3,"file":"symbol.mjs","sources":["../../../../../../packages/components/video/src/symbol.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\nexport type VideoPresetControl =\n  | 'play'\n  | 'play-prev'\n  | 'play-next'\n  | 'refresh'\n  | 'timer'\n  | 'playback-rate'\n  | 'flip'\n  | 'volume'\n  | 'pip'\n  | 'full-window'\n  | 'full-browser'\nexport type VideoShortcutOptions = Partial<Record<VideoPresetControl, string>>\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type VideoControlName = VideoPresetControl | (string & {})\nexport type VideoControlConfig = VideoControlName | [VideoControlName, any]\n\nexport interface VideoControlLayout {\n  left?: VideoControlConfig[]\n  center?: VideoControlConfig[]\n  right?: VideoControlConfig[]\n}\n\nexport interface VideoPlaybackRate {\n  label?: string\n  value: number\n}\n\nexport type VideoControlType = 'button' | 'select' | 'panel'\n\nexport interface VideoControlOption {\n  value: string | number\n  label?: string\n  selectedLabel?: string\n  disabled?: boolean\n  divided?: boolean\n  title?: string\n}\n\nexport interface VideoSegment {\n  time: number\n  title?: string\n}\n\n// export interface VideoKernel {\n//   play: () => void,\n//   pause: () => void,\n//   mute: () => void,\n//   unmute: () => void,\n//   prev: () => void,\n//   next: () => void,\n//   refresh: () => void | boolean\n// }\n\nexport interface VideoState {\n  placeId?: string\n  iconScale: number\n  addShortcut: (key: string, cb: () => void) => () => void\n}\n\nconst defaultLayout: Required<VideoControlLayout> = {\n  left: ['play-prev', 'play', 'play-next', 'refresh', 'timer'],\n  center: [],\n  right: [\n    'playback-rate',\n    'volume',\n    'flip',\n    'pip',\n    'full-window',\n    'full-browser',\n  ],\n}\n\nfor (const key of Object.keys(defaultLayout) as (keyof VideoControlLayout)[]) {\n  defaultLayout[key] = Object.freeze(defaultLayout[key]) as any\n}\n\nexport const videoDefaultControlLayout = Object.freeze(defaultLayout)\n\nexport const videoDefaultShortcuts = Object.freeze({\n  play: 'Space',\n  'play-prev': 'PageUp',\n  'play-next': 'PageDown',\n  refresh: 'R',\n  flip: 'C',\n  volume: 'M',\n  pip: 'P',\n  'full-window': 'G',\n  'full-browser': 'F',\n})\n\nexport const VIDEO_STATE =\n  '__VXP_VIDEO_STATE' as unknown as InjectionKey<VideoState>\n\nexport const localeVideo = {\n  play: '播放',\n  pause: '暂停',\n  playPrev: '上一个',\n  playNext: '下一个',\n  refresh: '刷新',\n  flip: '镜像翻转',\n  requestPip: '进入画中画',\n  exitPip: '退出画中画',\n  fullWindow: '进入网页全屏',\n  fullWindowExit: '退出网页全屏',\n  fullScreen: '进入全屏',\n  fullScreenExit: '退出全屏',\n  chapterCount: '第 {n} 章',\n}\n\n/**\n * 根据一系列判断条件，执行第一个为 `true` 的条件所对应的回调函数\n *\n * @param conditions 判断条件及回调函数\n * @param options 额外的选项\n *\n * @returns 是否匹配了任一条件\n */\nexport async function decide(\n  conditions: [boolean | (() => boolean), () => void | Promise<void>][],\n  options: {\n    /**\n     * 当匹配任意一个条件时，会在该条件对应的回调函数执行前执行\n     */\n    beforeMatchAny?: () => void | Promise<void>\n    /**\n     * 当匹配任意一个条件时，会在该条件对应的回调函数执行完后执行\n     */\n    afterMatchAny?: () => void | Promise<void>\n  } = {}\n) {\n  if (conditions.length) {\n    for (const [condition, callback] of conditions) {\n      if (typeof condition === 'function' ? condition() : condition) {\n        if (typeof options.beforeMatchAny === 'function') {\n          await options.beforeMatchAny()\n        }\n\n        await callback()\n\n        if (typeof options.afterMatchAny === 'function') {\n          await options.afterMatchAny()\n        }\n\n        return true\n      }\n    }\n  }\n\n  return false\n}\n"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;AAC9D,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,KAAK,EAAE;AACT,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,MAAM;AACV,IAAI,KAAK;AACT,IAAI,aAAa;AACjB,IAAI,cAAc;AAClB,GAAG;AACH,CAAC,CAAC;AACF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC9C,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AACW,MAAC,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAC1D,MAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AACnD,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,WAAW,EAAE,QAAQ;AACvB,EAAE,WAAW,EAAE,UAAU;AACzB,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,GAAG,EAAE,GAAG;AACV,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,cAAc,EAAE,GAAG;AACrB,CAAC,EAAE;AACS,MAAC,WAAW,GAAG,oBAAoB;AACnC,MAAC,WAAW,GAAG;AAC3B,EAAE,IAAI,EAAE,cAAc;AACtB,EAAE,KAAK,EAAE,cAAc;AACvB,EAAE,QAAQ,EAAE,oBAAoB;AAChC,EAAE,QAAQ,EAAE,oBAAoB;AAChC,EAAE,OAAO,EAAE,cAAc;AACzB,EAAE,IAAI,EAAE,0BAA0B;AAClC,EAAE,UAAU,EAAE,gCAAgC;AAC9C,EAAE,OAAO,EAAE,gCAAgC;AAC3C,EAAE,UAAU,EAAE,sCAAsC;AACpD,EAAE,cAAc,EAAE,sCAAsC;AACxD,EAAE,UAAU,EAAE,0BAA0B;AACxC,EAAE,cAAc,EAAE,0BAA0B;AAC5C,EAAE,YAAY,EAAE,mBAAmB;AACnC,EAAE;AACK,eAAe,MAAM,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,EAAE;AACvD,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE;AACzB,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE;AACpD,MAAM,IAAI,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE;AACrE,QAAQ,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;AAC1D,UAAU,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,QAAQ,EAAE,CAAC;AACzB,QAAQ,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;AACzD,UAAU,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf;;;;"}