markdown-flow-ui 0.1.128 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ContentRender/ContentRender.cjs.js +2 -2
- package/dist/components/ContentRender/ContentRender.cjs.js.map +1 -1
- package/dist/components/ContentRender/ContentRender.d.ts +4 -0
- package/dist/components/ContentRender/ContentRender.es.js +217 -211
- package/dist/components/ContentRender/ContentRender.es.js.map +1 -1
- package/dist/components/ContentRender/IframeSandbox.cjs.js +3 -3
- package/dist/components/ContentRender/IframeSandbox.cjs.js.map +1 -1
- package/dist/components/ContentRender/IframeSandbox.d.ts +3 -0
- package/dist/components/ContentRender/IframeSandbox.es.js +199 -186
- package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.cjs.js +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.cjs.js.map +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.d.ts +3 -0
- package/dist/components/ContentRender/MarkdownFlowInput.es.js +35 -32
- package/dist/components/ContentRender/MarkdownFlowInput.es.js.map +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.stories.d.ts +6 -0
- package/dist/components/ContentRender/SandboxApp.cjs.js +2 -2
- package/dist/components/ContentRender/SandboxApp.cjs.js.map +1 -1
- package/dist/components/ContentRender/SandboxApp.d.ts +3 -0
- package/dist/components/ContentRender/SandboxApp.es.js +117 -104
- package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
- package/dist/components/ContentRender/contentRenderI18n.cjs.js +2 -0
- package/dist/components/ContentRender/contentRenderI18n.cjs.js.map +1 -0
- package/dist/components/ContentRender/contentRenderI18n.d.ts +15 -0
- package/dist/components/ContentRender/contentRenderI18n.es.js +59 -0
- package/dist/components/ContentRender/contentRenderI18n.es.js.map +1 -0
- package/dist/components/ContentRender/index.cjs.js +1 -1
- package/dist/components/ContentRender/index.d.ts +1 -0
- package/dist/components/ContentRender/index.es.js +1 -0
- package/dist/components/ContentRender/index.es.js.map +1 -1
- package/dist/components/ContentRender/plugins/CustomVariable.cjs.js +1 -1
- package/dist/components/ContentRender/plugins/CustomVariable.cjs.js.map +1 -1
- package/dist/components/ContentRender/plugins/CustomVariable.d.ts +3 -1
- package/dist/components/ContentRender/plugins/CustomVariable.es.js +131 -124
- package/dist/components/ContentRender/plugins/CustomVariable.es.js.map +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.cjs.js +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.cjs.js.map +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.d.ts +3 -0
- package/dist/components/MarkdownFlow/MarkdownFlow.es.js +18 -15
- package/dist/components/MarkdownFlow/MarkdownFlow.es.js.map +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.stories.d.ts +6 -0
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.d.ts +1 -0
- package/dist/components/MarkdownFlow/index.cjs.js +1 -1
- package/dist/components/MarkdownFlow/index.es.js +1 -0
- package/dist/components/MarkdownFlow/index.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +2 -2
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +23 -22
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.stories.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +0 -2
- package/dist/components/MarkdownFlowEditor/editorI18n.es.js +12 -24
- package/dist/components/MarkdownFlowEditor/editorI18n.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/index.d.ts +1 -1
- package/dist/components/Slide/Player.cjs.js +1 -1
- package/dist/components/Slide/Player.cjs.js.map +1 -1
- package/dist/components/Slide/Player.d.ts +30 -30
- package/dist/components/Slide/Player.es.js +721 -638
- package/dist/components/Slide/Player.es.js.map +1 -1
- package/dist/components/Slide/Slide.cjs.js +1 -1
- package/dist/components/Slide/Slide.cjs.js.map +1 -1
- package/dist/components/Slide/Slide.d.ts +22 -4
- package/dist/components/Slide/Slide.es.js +758 -638
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/Slide.stories.d.ts +19 -20
- package/dist/components/Slide/constants.d.ts +0 -24
- package/dist/components/Slide/index.d.ts +2 -1
- package/dist/components/Slide/slideI18n.cjs.js +2 -0
- package/dist/components/Slide/slideI18n.cjs.js.map +1 -0
- package/dist/components/Slide/slideI18n.d.ts +44 -0
- package/dist/components/Slide/slideI18n.es.js +162 -0
- package/dist/components/Slide/slideI18n.es.js.map +1 -0
- package/dist/components/Slide/useSlide.cjs.js +1 -1
- package/dist/components/Slide/useSlide.cjs.js.map +1 -1
- package/dist/components/Slide/useSlide.d.ts +2 -0
- package/dist/components/Slide/useSlide.es.js +124 -105
- package/dist/components/Slide/useSlide.es.js.map +1 -1
- package/dist/components/Slide/utils/audioSegments.cjs.js +2 -0
- package/dist/components/Slide/utils/audioSegments.cjs.js.map +1 -0
- package/dist/components/Slide/utils/audioSegments.d.ts +2 -0
- package/dist/components/Slide/utils/audioSegments.es.js +21 -0
- package/dist/components/Slide/utils/audioSegments.es.js.map +1 -0
- package/dist/components/Slide/utils/audioSegments.test.d.ts +1 -0
- package/dist/components/Slide/utils/playbackSequence.cjs.js +1 -1
- package/dist/components/Slide/utils/playbackSequence.cjs.js.map +1 -1
- package/dist/components/Slide/utils/playbackSequence.d.ts +10 -0
- package/dist/components/Slide/utils/playbackSequence.es.js +15 -6
- package/dist/components/Slide/utils/playbackSequence.es.js.map +1 -1
- package/dist/components/Slide/utils/playerVisibility.cjs.js +2 -0
- package/dist/components/Slide/utils/playerVisibility.cjs.js.map +1 -0
- package/dist/components/Slide/utils/playerVisibility.d.ts +10 -0
- package/dist/components/Slide/utils/playerVisibility.es.js +11 -0
- package/dist/components/Slide/utils/playerVisibility.es.js.map +1 -0
- package/dist/components/Slide/utils/playerVisibility.test.d.ts +1 -0
- package/dist/components/Slide/utils/subtitleCue.cjs.js +2 -2
- package/dist/components/Slide/utils/subtitleCue.cjs.js.map +1 -1
- package/dist/components/Slide/utils/subtitleCue.d.ts +21 -0
- package/dist/components/Slide/utils/subtitleCue.es.js +146 -49
- package/dist/components/Slide/utils/subtitleCue.es.js.map +1 -1
- package/dist/components/Slide/utils/subtitleJumpNavigation.cjs.js +2 -0
- package/dist/components/Slide/utils/subtitleJumpNavigation.cjs.js.map +1 -0
- package/dist/components/Slide/utils/subtitleJumpNavigation.d.ts +10 -0
- package/dist/components/Slide/utils/subtitleJumpNavigation.es.js +22 -0
- package/dist/components/Slide/utils/subtitleJumpNavigation.es.js.map +1 -0
- package/dist/components/Slide/utils/subtitleJumpNavigation.test.d.ts +1 -0
- package/dist/components/index.d.ts +2 -1
- package/dist/editor.d.ts +3 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +14 -13
- package/dist/index.es.js.map +1 -1
- package/dist/lib/locale.cjs.js +2 -0
- package/dist/lib/locale.cjs.js.map +1 -0
- package/dist/lib/locale.d.ts +4 -0
- package/dist/lib/locale.es.js +19 -0
- package/dist/lib/locale.es.js.map +1 -0
- package/dist/lib/localeTextMap.cjs.js +2 -0
- package/dist/lib/localeTextMap.cjs.js.map +1 -0
- package/dist/lib/localeTextMap.d.ts +4 -0
- package/dist/lib/localeTextMap.es.js +5 -0
- package/dist/lib/localeTextMap.es.js.map +1 -0
- package/dist/markdown-flow-ui-lib.css +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/fast-forward.cjs.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/fast-forward.cjs.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/fast-forward.es.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/fast-forward.es.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rewind.cjs.js +7 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rewind.cjs.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rewind.es.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rewind.es.js.map +1 -0
- package/dist/renderer.cjs.js +1 -1
- package/dist/renderer.d.ts +1 -0
- package/dist/renderer.es.js +15 -14
- package/dist/renderer.es.js.map +1 -1
- package/dist/slide.d.ts +1 -0
- package/package.json +1 -1
- package/dist/components/Slide/constants.cjs.js +0 -2
- package/dist/components/Slide/constants.cjs.js.map +0 -1
- package/dist/components/Slide/constants.es.js +0 -28
- package/dist/components/Slide/constants.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js +0 -7
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.cjs.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.es.js +0 -16
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-cw.cjs.js +0 -7
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-cw.cjs.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-cw.es.js +0 -16
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-cw.es.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slideI18n.cjs.js","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport {\n buildLocaleTexts,\n type LocaleTextValues,\n} from \"../../lib/localeTextMap\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n}\n\nexport type SlideBufferingReason =\n | \"waitingForAudio\"\n | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n}\n\nconst SLIDE_PLAYER_TEXT_KEYS = [\n \"closeSettingsLabel\",\n \"enterFullscreenLabel\",\n \"exitFullscreenLabel\",\n \"moreOptionsAriaLabel\",\n \"nextLabel\",\n \"nextSubtitleLabel\",\n \"notesLabel\",\n \"pauseAutoplayLabel\",\n \"pauseLabel\",\n \"playAutoplayLabel\",\n \"playLabel\",\n \"previousLabel\",\n \"previousSubtitleLabel\",\n \"screenModeLabel\",\n \"settingsTitle\",\n \"subtitleLabel\",\n \"subtitleToggleAriaLabel\",\n \"volumeAriaLabel\",\n \"screenLabel\",\n \"nonFullscreenLabel\",\n \"fullscreenLabel\",\n \"fullscreenHintText\",\n] as const satisfies readonly (keyof SlidePlayerLocaleTexts)[];\n\nconst SLIDE_INTERACTION_TEXT_KEYS = [\n \"title\",\n \"confirmButtonText\",\n \"copyButtonText\",\n \"copiedButtonText\",\n] as const satisfies readonly (keyof SlideInteractionLocaleTexts)[];\n\nconst SLIDE_BUFFERING_TEXT_KEYS = [\n \"waitingForAudio\",\n \"loadingAudio\",\n \"waitingForMoreAudio\",\n] as const satisfies readonly SlideBufferingReason[];\n\nconst createSlidePlayerTexts = (\n values: LocaleTextValues<typeof SLIDE_PLAYER_TEXT_KEYS>\n): SlidePlayerLocaleTexts =>\n buildLocaleTexts(SLIDE_PLAYER_TEXT_KEYS, values) as SlidePlayerLocaleTexts;\n\nconst createSlideInteractionTexts = (\n values: LocaleTextValues<typeof SLIDE_INTERACTION_TEXT_KEYS>\n): SlideInteractionLocaleTexts =>\n buildLocaleTexts(\n SLIDE_INTERACTION_TEXT_KEYS,\n values\n ) as SlideInteractionLocaleTexts;\n\nconst createSlideBufferingTexts = (\n values: LocaleTextValues<typeof SLIDE_BUFFERING_TEXT_KEYS>\n): Record<SlideBufferingReason, string> =>\n buildLocaleTexts(SLIDE_BUFFERING_TEXT_KEYS, values) as Record<\n SlideBufferingReason,\n string\n >;\n\nconst createSlideLocaleTexts = (\n fullscreenBackAriaLabel: string,\n bufferingValues: LocaleTextValues<typeof SLIDE_BUFFERING_TEXT_KEYS>,\n interactionValues: LocaleTextValues<typeof SLIDE_INTERACTION_TEXT_KEYS>,\n playerValues: LocaleTextValues<typeof SLIDE_PLAYER_TEXT_KEYS>\n): SlideLocaleTexts => ({\n bufferingText: createSlideBufferingTexts(bufferingValues),\n fullscreenBackAriaLabel,\n interactionTexts: createSlideInteractionTexts(interactionValues),\n playerTexts: createSlidePlayerTexts(playerValues),\n});\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n createSlidePlayerTexts([\n \"Close settings\",\n \"Enter fullscreen\",\n \"Exit fullscreen\",\n \"More options\",\n \"Next page\",\n \"Next sentence\",\n \"Notes\",\n \"Pause autoplay\",\n \"Pause\",\n \"Play autoplay\",\n \"Play\",\n \"Previous page\",\n \"Previous sentence\",\n \"Screen mode\",\n \"Settings\",\n \"Subtitles\",\n \"Toggle subtitles\",\n \"Volume\",\n \"Screen\",\n \"Non-fullscreen\",\n \"Fullscreen\",\n \"Rotate your screen for the best experience.\",\n ]);\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n createSlideInteractionTexts([\n \"Submit the content below to continue.\",\n \"Submit\",\n \"Copy\",\n \"Copied\",\n ]);\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS = createSlideBufferingTexts([\n \"Waiting for current slide audio...\",\n \"Loading current slide audio...\",\n \"Waiting for more current slide audio...\",\n]);\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n {\n \"en-US\": {\n bufferingText: DEFAULT_SLIDE_BUFFERING_TEXTS,\n fullscreenBackAriaLabel: \"Back\",\n interactionTexts: DEFAULT_SLIDE_INTERACTION_TEXTS,\n playerTexts: DEFAULT_SLIDE_PLAYER_TEXTS,\n },\n \"fr-FR\": createSlideLocaleTexts(\n \"Retour\",\n [\n \"En attente de l'audio de la diapositive actuelle...\",\n \"Chargement de l'audio de la diapositive actuelle...\",\n \"En attente de la suite de l'audio de la diapositive actuelle...\",\n ],\n [\n \"Soumettez le contenu ci-dessous pour continuer.\",\n \"Soumettre\",\n \"Copier\",\n \"Copié\",\n ],\n [\n \"Fermer les paramètres\",\n \"Passer en plein écran\",\n \"Quitter le plein écran\",\n \"Plus d'options\",\n \"Page suivante\",\n \"Phrase suivante\",\n \"Notes\",\n \"Suspendre la lecture automatique\",\n \"Pause\",\n \"Lancer la lecture automatique\",\n \"Lecture\",\n \"Page précédente\",\n \"Phrase précédente\",\n \"Mode d'affichage\",\n \"Paramètres\",\n \"Sous-titres\",\n \"Afficher ou masquer les sous-titres\",\n \"Volume\",\n \"Écran\",\n \"Hors plein écran\",\n \"Plein écran\",\n \"Faites pivoter votre écran pour une meilleure expérience.\",\n ]\n ),\n \"zh-CN\": createSlideLocaleTexts(\n \"返回\",\n [\n \"正在等待当前页音频...\",\n \"正在加载当前页音频...\",\n \"正在等待更多当前页音频...\",\n ],\n [\"提交下面的内容以继续\", \"提交\", \"复制\", \"已复制\"],\n [\n \"关闭设置\",\n \"进入全屏\",\n \"退出全屏\",\n \"更多选项\",\n \"下一页\",\n \"下一句\",\n \"笔记\",\n \"暂停自动播放\",\n \"暂停\",\n \"开始自动播放\",\n \"播放\",\n \"上一页\",\n \"上一句\",\n \"屏幕模式\",\n \"设置\",\n \"字幕\",\n \"切换字幕\",\n \"音量\",\n \"屏幕\",\n \"非全屏\",\n \"全屏\",\n \"旋转屏幕以获得更好的体验。\",\n ]\n ),\n };\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_PLAYER_TEXT_KEYS","SLIDE_INTERACTION_TEXT_KEYS","SLIDE_BUFFERING_TEXT_KEYS","createSlidePlayerTexts","values","buildLocaleTexts","createSlideInteractionTexts","createSlideBufferingTexts","createSlideLocaleTexts","fullscreenBackAriaLabel","bufferingValues","interactionValues","playerValues","DEFAULT_SLIDE_PLAYER_TEXTS","DEFAULT_SLIDE_INTERACTION_TEXTS","DEFAULT_SLIDE_BUFFERING_TEXTS","SLIDE_LOCALE_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":"uKAoDMA,EAAyB,CAC7B,qBACA,uBACA,sBACA,uBACA,YACA,oBACA,aACA,qBACA,aACA,oBACA,YACA,gBACA,wBACA,kBACA,gBACA,gBACA,0BACA,kBACA,cACA,qBACA,kBACA,oBACF,EAEMC,EAA8B,CAClC,QACA,oBACA,iBACA,kBACF,EAEMC,EAA4B,CAChC,kBACA,eACA,qBACF,EAEMC,EACJC,GAEAC,mBAAiBL,EAAwBI,CAAM,EAE3CE,EACJF,GAEAC,EAAAA,iBACEJ,EACAG,CACF,EAEIG,EACJH,GAEAC,mBAAiBH,EAA2BE,CAAM,EAK9CI,EAAyB,CAC7BC,EACAC,EACAC,EACAC,KACsB,CACtB,cAAeL,EAA0BG,CAAe,EACxD,wBAAAD,EACA,iBAAkBH,EAA4BK,CAAiB,EAC/D,YAAaR,EAAuBS,CAAY,CAClD,GAEaC,EACXV,EAAuB,CACrB,iBACA,mBACA,kBACA,eACA,YACA,gBACA,QACA,iBACA,QACA,gBACA,OACA,gBACA,oBACA,cACA,WACA,YACA,mBACA,SACA,SACA,iBACA,aACA,6CACF,CAAC,EAEUW,EACXR,EAA4B,CAC1B,wCACA,SACA,OACA,QACF,CAAC,EAEUS,EAAgCR,EAA0B,CACrE,qCACA,iCACA,yCACF,CAAC,EAEYS,EACX,CACE,QAAS,CACP,cAAeD,EACf,wBAAyB,OACzB,iBAAkBD,EAClB,YAAaD,CAAA,EAEf,QAASL,EACP,SACA,CACE,sDACA,sDACA,iEAAA,EAEF,CACE,kDACA,YACA,SACA,OAAA,EAEF,CACE,wBACA,wBACA,yBACA,iBACA,gBACA,kBACA,QACA,mCACA,QACA,gCACA,UACA,kBACA,oBACA,mBACA,aACA,cACA,sCACA,SACA,QACA,mBACA,cACA,2DAAA,CACF,EAEF,QAASA,EACP,KACA,CACE,eACA,eACA,gBAAA,EAEF,CAAC,aAAc,KAAM,KAAM,KAAK,EAChC,CACE,OACA,OACA,OACA,OACA,MACA,MACA,KACA,SACA,KACA,SACA,KACA,MACA,MACA,OACA,KACA,KACA,OACA,KACA,KACA,MACA,KACA,eAAA,CACF,CAEJ,EAEWS,EAAuBC,GAClCF,EAAmBG,EAAAA,4BAA4BD,CAAM,CAAC,EAE3CE,EACXF,GAC2BD,EAAoBC,CAAM,EAAE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { MarkdownFlowLocale } from '../../lib/locale';
|
|
2
|
+
export interface SlidePlayerLocaleTexts {
|
|
3
|
+
closeSettingsLabel: string;
|
|
4
|
+
enterFullscreenLabel: string;
|
|
5
|
+
exitFullscreenLabel: string;
|
|
6
|
+
moreOptionsAriaLabel: string;
|
|
7
|
+
nextLabel: string;
|
|
8
|
+
nextSubtitleLabel: string;
|
|
9
|
+
notesLabel: string;
|
|
10
|
+
pauseAutoplayLabel: string;
|
|
11
|
+
pauseLabel: string;
|
|
12
|
+
playAutoplayLabel: string;
|
|
13
|
+
playLabel: string;
|
|
14
|
+
previousLabel: string;
|
|
15
|
+
previousSubtitleLabel: string;
|
|
16
|
+
screenModeLabel: string;
|
|
17
|
+
settingsTitle: string;
|
|
18
|
+
subtitleLabel: string;
|
|
19
|
+
subtitleToggleAriaLabel: string;
|
|
20
|
+
volumeAriaLabel: string;
|
|
21
|
+
screenLabel: string;
|
|
22
|
+
nonFullscreenLabel: string;
|
|
23
|
+
fullscreenLabel: string;
|
|
24
|
+
fullscreenHintText: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SlideInteractionLocaleTexts {
|
|
27
|
+
title: string;
|
|
28
|
+
confirmButtonText: string;
|
|
29
|
+
copyButtonText: string;
|
|
30
|
+
copiedButtonText: string;
|
|
31
|
+
}
|
|
32
|
+
export type SlideBufferingReason = "waitingForAudio" | import('./Player').SlidePlayerLoadingReason;
|
|
33
|
+
export interface SlideLocaleTexts {
|
|
34
|
+
bufferingText: Record<SlideBufferingReason, string>;
|
|
35
|
+
fullscreenBackAriaLabel: string;
|
|
36
|
+
interactionTexts: SlideInteractionLocaleTexts;
|
|
37
|
+
playerTexts: SlidePlayerLocaleTexts;
|
|
38
|
+
}
|
|
39
|
+
export declare const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts;
|
|
40
|
+
export declare const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts;
|
|
41
|
+
export declare const DEFAULT_SLIDE_BUFFERING_TEXTS: Record<SlideBufferingReason, string>;
|
|
42
|
+
export declare const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts>;
|
|
43
|
+
export declare const getSlideLocaleTexts: (locale?: string | null) => SlideLocaleTexts;
|
|
44
|
+
export declare const getSlidePlayerTexts: (locale?: string | null) => SlidePlayerLocaleTexts;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { normalizeMarkdownFlowLocale as u } from "../../lib/locale.es.js";
|
|
2
|
+
import { buildLocaleTexts as t } from "../../lib/localeTextMap.es.js";
|
|
3
|
+
const c = [
|
|
4
|
+
"closeSettingsLabel",
|
|
5
|
+
"enterFullscreenLabel",
|
|
6
|
+
"exitFullscreenLabel",
|
|
7
|
+
"moreOptionsAriaLabel",
|
|
8
|
+
"nextLabel",
|
|
9
|
+
"nextSubtitleLabel",
|
|
10
|
+
"notesLabel",
|
|
11
|
+
"pauseAutoplayLabel",
|
|
12
|
+
"pauseLabel",
|
|
13
|
+
"playAutoplayLabel",
|
|
14
|
+
"playLabel",
|
|
15
|
+
"previousLabel",
|
|
16
|
+
"previousSubtitleLabel",
|
|
17
|
+
"screenModeLabel",
|
|
18
|
+
"settingsTitle",
|
|
19
|
+
"subtitleLabel",
|
|
20
|
+
"subtitleToggleAriaLabel",
|
|
21
|
+
"volumeAriaLabel",
|
|
22
|
+
"screenLabel",
|
|
23
|
+
"nonFullscreenLabel",
|
|
24
|
+
"fullscreenLabel",
|
|
25
|
+
"fullscreenHintText"
|
|
26
|
+
], d = [
|
|
27
|
+
"title",
|
|
28
|
+
"confirmButtonText",
|
|
29
|
+
"copyButtonText",
|
|
30
|
+
"copiedButtonText"
|
|
31
|
+
], p = [
|
|
32
|
+
"waitingForAudio",
|
|
33
|
+
"loadingAudio",
|
|
34
|
+
"waitingForMoreAudio"
|
|
35
|
+
], l = (e) => t(c, e), o = (e) => t(
|
|
36
|
+
d,
|
|
37
|
+
e
|
|
38
|
+
), n = (e) => t(p, e), a = (e, r, i, s) => ({
|
|
39
|
+
bufferingText: n(r),
|
|
40
|
+
fullscreenBackAriaLabel: e,
|
|
41
|
+
interactionTexts: o(i),
|
|
42
|
+
playerTexts: l(s)
|
|
43
|
+
}), L = l([
|
|
44
|
+
"Close settings",
|
|
45
|
+
"Enter fullscreen",
|
|
46
|
+
"Exit fullscreen",
|
|
47
|
+
"More options",
|
|
48
|
+
"Next page",
|
|
49
|
+
"Next sentence",
|
|
50
|
+
"Notes",
|
|
51
|
+
"Pause autoplay",
|
|
52
|
+
"Pause",
|
|
53
|
+
"Play autoplay",
|
|
54
|
+
"Play",
|
|
55
|
+
"Previous page",
|
|
56
|
+
"Previous sentence",
|
|
57
|
+
"Screen mode",
|
|
58
|
+
"Settings",
|
|
59
|
+
"Subtitles",
|
|
60
|
+
"Toggle subtitles",
|
|
61
|
+
"Volume",
|
|
62
|
+
"Screen",
|
|
63
|
+
"Non-fullscreen",
|
|
64
|
+
"Fullscreen",
|
|
65
|
+
"Rotate your screen for the best experience."
|
|
66
|
+
]), T = o([
|
|
67
|
+
"Submit the content below to continue.",
|
|
68
|
+
"Submit",
|
|
69
|
+
"Copy",
|
|
70
|
+
"Copied"
|
|
71
|
+
]), b = n([
|
|
72
|
+
"Waiting for current slide audio...",
|
|
73
|
+
"Loading current slide audio...",
|
|
74
|
+
"Waiting for more current slide audio..."
|
|
75
|
+
]), S = {
|
|
76
|
+
"en-US": {
|
|
77
|
+
bufferingText: b,
|
|
78
|
+
fullscreenBackAriaLabel: "Back",
|
|
79
|
+
interactionTexts: T,
|
|
80
|
+
playerTexts: L
|
|
81
|
+
},
|
|
82
|
+
"fr-FR": a(
|
|
83
|
+
"Retour",
|
|
84
|
+
[
|
|
85
|
+
"En attente de l'audio de la diapositive actuelle...",
|
|
86
|
+
"Chargement de l'audio de la diapositive actuelle...",
|
|
87
|
+
"En attente de la suite de l'audio de la diapositive actuelle..."
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
"Soumettez le contenu ci-dessous pour continuer.",
|
|
91
|
+
"Soumettre",
|
|
92
|
+
"Copier",
|
|
93
|
+
"Copié"
|
|
94
|
+
],
|
|
95
|
+
[
|
|
96
|
+
"Fermer les paramètres",
|
|
97
|
+
"Passer en plein écran",
|
|
98
|
+
"Quitter le plein écran",
|
|
99
|
+
"Plus d'options",
|
|
100
|
+
"Page suivante",
|
|
101
|
+
"Phrase suivante",
|
|
102
|
+
"Notes",
|
|
103
|
+
"Suspendre la lecture automatique",
|
|
104
|
+
"Pause",
|
|
105
|
+
"Lancer la lecture automatique",
|
|
106
|
+
"Lecture",
|
|
107
|
+
"Page précédente",
|
|
108
|
+
"Phrase précédente",
|
|
109
|
+
"Mode d'affichage",
|
|
110
|
+
"Paramètres",
|
|
111
|
+
"Sous-titres",
|
|
112
|
+
"Afficher ou masquer les sous-titres",
|
|
113
|
+
"Volume",
|
|
114
|
+
"Écran",
|
|
115
|
+
"Hors plein écran",
|
|
116
|
+
"Plein écran",
|
|
117
|
+
"Faites pivoter votre écran pour une meilleure expérience."
|
|
118
|
+
]
|
|
119
|
+
),
|
|
120
|
+
"zh-CN": a(
|
|
121
|
+
"返回",
|
|
122
|
+
[
|
|
123
|
+
"正在等待当前页音频...",
|
|
124
|
+
"正在加载当前页音频...",
|
|
125
|
+
"正在等待更多当前页音频..."
|
|
126
|
+
],
|
|
127
|
+
["提交下面的内容以继续", "提交", "复制", "已复制"],
|
|
128
|
+
[
|
|
129
|
+
"关闭设置",
|
|
130
|
+
"进入全屏",
|
|
131
|
+
"退出全屏",
|
|
132
|
+
"更多选项",
|
|
133
|
+
"下一页",
|
|
134
|
+
"下一句",
|
|
135
|
+
"笔记",
|
|
136
|
+
"暂停自动播放",
|
|
137
|
+
"暂停",
|
|
138
|
+
"开始自动播放",
|
|
139
|
+
"播放",
|
|
140
|
+
"上一页",
|
|
141
|
+
"上一句",
|
|
142
|
+
"屏幕模式",
|
|
143
|
+
"设置",
|
|
144
|
+
"字幕",
|
|
145
|
+
"切换字幕",
|
|
146
|
+
"音量",
|
|
147
|
+
"屏幕",
|
|
148
|
+
"非全屏",
|
|
149
|
+
"全屏",
|
|
150
|
+
"旋转屏幕以获得更好的体验。"
|
|
151
|
+
]
|
|
152
|
+
)
|
|
153
|
+
}, E = (e) => S[u(e)], m = (e) => E(e).playerTexts;
|
|
154
|
+
export {
|
|
155
|
+
b as DEFAULT_SLIDE_BUFFERING_TEXTS,
|
|
156
|
+
T as DEFAULT_SLIDE_INTERACTION_TEXTS,
|
|
157
|
+
L as DEFAULT_SLIDE_PLAYER_TEXTS,
|
|
158
|
+
S as SLIDE_LOCALE_TEXTS,
|
|
159
|
+
E as getSlideLocaleTexts,
|
|
160
|
+
m as getSlidePlayerTexts
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=slideI18n.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slideI18n.es.js","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport {\n buildLocaleTexts,\n type LocaleTextValues,\n} from \"../../lib/localeTextMap\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n}\n\nexport type SlideBufferingReason =\n | \"waitingForAudio\"\n | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n}\n\nconst SLIDE_PLAYER_TEXT_KEYS = [\n \"closeSettingsLabel\",\n \"enterFullscreenLabel\",\n \"exitFullscreenLabel\",\n \"moreOptionsAriaLabel\",\n \"nextLabel\",\n \"nextSubtitleLabel\",\n \"notesLabel\",\n \"pauseAutoplayLabel\",\n \"pauseLabel\",\n \"playAutoplayLabel\",\n \"playLabel\",\n \"previousLabel\",\n \"previousSubtitleLabel\",\n \"screenModeLabel\",\n \"settingsTitle\",\n \"subtitleLabel\",\n \"subtitleToggleAriaLabel\",\n \"volumeAriaLabel\",\n \"screenLabel\",\n \"nonFullscreenLabel\",\n \"fullscreenLabel\",\n \"fullscreenHintText\",\n] as const satisfies readonly (keyof SlidePlayerLocaleTexts)[];\n\nconst SLIDE_INTERACTION_TEXT_KEYS = [\n \"title\",\n \"confirmButtonText\",\n \"copyButtonText\",\n \"copiedButtonText\",\n] as const satisfies readonly (keyof SlideInteractionLocaleTexts)[];\n\nconst SLIDE_BUFFERING_TEXT_KEYS = [\n \"waitingForAudio\",\n \"loadingAudio\",\n \"waitingForMoreAudio\",\n] as const satisfies readonly SlideBufferingReason[];\n\nconst createSlidePlayerTexts = (\n values: LocaleTextValues<typeof SLIDE_PLAYER_TEXT_KEYS>\n): SlidePlayerLocaleTexts =>\n buildLocaleTexts(SLIDE_PLAYER_TEXT_KEYS, values) as SlidePlayerLocaleTexts;\n\nconst createSlideInteractionTexts = (\n values: LocaleTextValues<typeof SLIDE_INTERACTION_TEXT_KEYS>\n): SlideInteractionLocaleTexts =>\n buildLocaleTexts(\n SLIDE_INTERACTION_TEXT_KEYS,\n values\n ) as SlideInteractionLocaleTexts;\n\nconst createSlideBufferingTexts = (\n values: LocaleTextValues<typeof SLIDE_BUFFERING_TEXT_KEYS>\n): Record<SlideBufferingReason, string> =>\n buildLocaleTexts(SLIDE_BUFFERING_TEXT_KEYS, values) as Record<\n SlideBufferingReason,\n string\n >;\n\nconst createSlideLocaleTexts = (\n fullscreenBackAriaLabel: string,\n bufferingValues: LocaleTextValues<typeof SLIDE_BUFFERING_TEXT_KEYS>,\n interactionValues: LocaleTextValues<typeof SLIDE_INTERACTION_TEXT_KEYS>,\n playerValues: LocaleTextValues<typeof SLIDE_PLAYER_TEXT_KEYS>\n): SlideLocaleTexts => ({\n bufferingText: createSlideBufferingTexts(bufferingValues),\n fullscreenBackAriaLabel,\n interactionTexts: createSlideInteractionTexts(interactionValues),\n playerTexts: createSlidePlayerTexts(playerValues),\n});\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n createSlidePlayerTexts([\n \"Close settings\",\n \"Enter fullscreen\",\n \"Exit fullscreen\",\n \"More options\",\n \"Next page\",\n \"Next sentence\",\n \"Notes\",\n \"Pause autoplay\",\n \"Pause\",\n \"Play autoplay\",\n \"Play\",\n \"Previous page\",\n \"Previous sentence\",\n \"Screen mode\",\n \"Settings\",\n \"Subtitles\",\n \"Toggle subtitles\",\n \"Volume\",\n \"Screen\",\n \"Non-fullscreen\",\n \"Fullscreen\",\n \"Rotate your screen for the best experience.\",\n ]);\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n createSlideInteractionTexts([\n \"Submit the content below to continue.\",\n \"Submit\",\n \"Copy\",\n \"Copied\",\n ]);\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS = createSlideBufferingTexts([\n \"Waiting for current slide audio...\",\n \"Loading current slide audio...\",\n \"Waiting for more current slide audio...\",\n]);\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n {\n \"en-US\": {\n bufferingText: DEFAULT_SLIDE_BUFFERING_TEXTS,\n fullscreenBackAriaLabel: \"Back\",\n interactionTexts: DEFAULT_SLIDE_INTERACTION_TEXTS,\n playerTexts: DEFAULT_SLIDE_PLAYER_TEXTS,\n },\n \"fr-FR\": createSlideLocaleTexts(\n \"Retour\",\n [\n \"En attente de l'audio de la diapositive actuelle...\",\n \"Chargement de l'audio de la diapositive actuelle...\",\n \"En attente de la suite de l'audio de la diapositive actuelle...\",\n ],\n [\n \"Soumettez le contenu ci-dessous pour continuer.\",\n \"Soumettre\",\n \"Copier\",\n \"Copié\",\n ],\n [\n \"Fermer les paramètres\",\n \"Passer en plein écran\",\n \"Quitter le plein écran\",\n \"Plus d'options\",\n \"Page suivante\",\n \"Phrase suivante\",\n \"Notes\",\n \"Suspendre la lecture automatique\",\n \"Pause\",\n \"Lancer la lecture automatique\",\n \"Lecture\",\n \"Page précédente\",\n \"Phrase précédente\",\n \"Mode d'affichage\",\n \"Paramètres\",\n \"Sous-titres\",\n \"Afficher ou masquer les sous-titres\",\n \"Volume\",\n \"Écran\",\n \"Hors plein écran\",\n \"Plein écran\",\n \"Faites pivoter votre écran pour une meilleure expérience.\",\n ]\n ),\n \"zh-CN\": createSlideLocaleTexts(\n \"返回\",\n [\n \"正在等待当前页音频...\",\n \"正在加载当前页音频...\",\n \"正在等待更多当前页音频...\",\n ],\n [\"提交下面的内容以继续\", \"提交\", \"复制\", \"已复制\"],\n [\n \"关闭设置\",\n \"进入全屏\",\n \"退出全屏\",\n \"更多选项\",\n \"下一页\",\n \"下一句\",\n \"笔记\",\n \"暂停自动播放\",\n \"暂停\",\n \"开始自动播放\",\n \"播放\",\n \"上一页\",\n \"上一句\",\n \"屏幕模式\",\n \"设置\",\n \"字幕\",\n \"切换字幕\",\n \"音量\",\n \"屏幕\",\n \"非全屏\",\n \"全屏\",\n \"旋转屏幕以获得更好的体验。\",\n ]\n ),\n };\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_PLAYER_TEXT_KEYS","SLIDE_INTERACTION_TEXT_KEYS","SLIDE_BUFFERING_TEXT_KEYS","createSlidePlayerTexts","values","buildLocaleTexts","createSlideInteractionTexts","createSlideBufferingTexts","createSlideLocaleTexts","fullscreenBackAriaLabel","bufferingValues","interactionValues","playerValues","DEFAULT_SLIDE_PLAYER_TEXTS","DEFAULT_SLIDE_INTERACTION_TEXTS","DEFAULT_SLIDE_BUFFERING_TEXTS","SLIDE_LOCALE_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":";;AAoDA,MAAMA,IAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAA8B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAAyB,CAC7BC,MAEAC,EAAiBL,GAAwBI,CAAM,GAE3CE,IAA8B,CAClCF,MAEAC;AAAA,EACEJ;AAAA,EACAG;AACF,GAEIG,IAA4B,CAChCH,MAEAC,EAAiBH,GAA2BE,CAAM,GAK9CI,IAAyB,CAC7BC,GACAC,GACAC,GACAC,OACsB;AAAA,EACtB,eAAeL,EAA0BG,CAAe;AAAA,EACxD,yBAAAD;AAAA,EACA,kBAAkBH,EAA4BK,CAAiB;AAAA,EAC/D,aAAaR,EAAuBS,CAAY;AAClD,IAEaC,IACXV,EAAuB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,GAEUW,IACXR,EAA4B;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,GAEUS,IAAgCR,EAA0B;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AACF,CAAC,GAEYS,IACX;AAAA,EACE,SAAS;AAAA,IACP,eAAeD;AAAA,IACf,yBAAyB;AAAA,IACzB,kBAAkBD;AAAA,IAClB,aAAaD;AAAA,EAAA;AAAA,EAEf,SAASL;AAAA,IACP;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,SAASA;AAAA,IACP;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,CAAC,cAAc,MAAM,MAAM,KAAK;AAAA,IAChC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ,GAEWS,IAAsB,CAACC,MAClCF,EAAmBG,EAA4BD,CAAM,CAAC,GAE3CE,IAAsB,CACjCF,MAC2BD,EAAoBC,CAAM,EAAE;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react"),w=require("./diff-utils.cjs.js"),G=require("./utils/streamingNavigation.cjs.js"),U=e=>e.filter(n=>n.is_marker),B=e=>e.reduce((n,t,s)=>(t.is_marker&&n.push(s),n),[]),h=e=>!!(e?.is_speakable&&(e.audio_url||(e.audio_segments?.length??0)>0)),H=(e=[])=>e.length>0&&!e.some(n=>n.is_final),x=e=>{const n=e.audio_url?.trim()??"",t=e.audio_segments??[];return{audioUrl:n,audioSegments:t,isAudioStreaming:!n&&H(t)}},K=(e,n)=>{const t=e;return t.element_bid||t.blockBid||t.generated_block_bid||`${e.type}:${String(e.sequence_number??n)}`},T=e=>e.reduce((n,t,s)=>{if(h(t)){const{audioUrl:r,audioSegments:c,isAudioStreaming:a}=x(t);n.push({audioKey:K(t,s),sequenceNumber:t.sequence_number,audioUrl:r,audioSegments:c,isAudioStreaming:a,element:t})}return n},[]),$=e=>{const n=new Map;let t=0;return e.forEach((s,r)=>{h(s)&&(n.set(r,t),t+=1)}),n},j=(e,n,t)=>n.reduce((s,r,c)=>{const a=n[c+1]??e.length,f=[];for(let d=r;d<a;d+=1){const l=e[d];if(!h(l))continue;const m=t.get(d);m!=null&&f.push(m)}return s.set(c,f),s},new Map),D=e=>{const n=[];return e.forEach((t,s)=>{t.forEach(r=>{n[r]=s})}),n},b=e=>{const n=e.findIndex(t=>t.is_renderable===!0);return n>=0?n:e.findIndex(t=>t.is_renderable!==!1)},p=e=>({...e,is_renderable:!0}),E=(e,n)=>n<0?[]:e.slice(0,n+1).reduce((t,s)=>{if(s.type==="interaction")return t;const r=p(s);return r.type==="diff"?w.applyDiffElement(t,r)??[...t,r]:s.is_new?[r]:t.length===0?[r]:[...t,r]},[]),F=e=>e.map((n,t)=>E(e,t)),L=(e,n,t)=>{if(t<0)return!1;const s=n[t];if(typeof s!="number")return!1;const r=n[t+1]??e.length;for(let c=s;c<r;c+=1)if(e[c]?.is_speakable)return!0;return!1},O=(e,n)=>e.length===n.length&&e.every((t,s)=>t===n[s]),z=(e,n)=>e.length===n.length&&e.every((t,s)=>t===n[s]),J=(e=[])=>{const n=o.useRef(e),t=o.useRef([]),s=o.useMemo(()=>O(n.current,e)?n.current:(n.current=e,e),[e]),r=o.useMemo(()=>U(s),[s]),c=o.useRef(r),a=o.useMemo(()=>B(s),[s]),f=o.useMemo(()=>T(s),[s]),d=o.useMemo(()=>$(s),[s]),l=o.useMemo(()=>j(s,a,d),[d,a,s]),m=o.useMemo(()=>D(l),[l]),[i,g]=o.useState(()=>b(r));o.useEffect(()=>{const u=c.current;g(P=>{const M=G.resolveNextSlideIndexAfterMarkerAppend({previousIndex:P,previousSlideElementList:u,nextSlideElementList:r});return M>=0?M:b(r)}),c.current=r},[r]);const _=o.useCallback(()=>{g(u=>u<=0?Math.max(u,0):Math.max(u-1,0))},[]),I=o.useCallback(()=>{g(u=>u<0?u:Math.min(u+1,r.length-1))},[r.length]),A=o.useCallback(u=>{!Number.isFinite(u)||r.length===0||g(Math.min(Math.max(Math.trunc(u),0),r.length-1))},[r.length]),k=i>0,v=i>=0&&i<r.length-1,S=o.useMemo(()=>{if(i<0)return;const u=r[i];if(u)return p(u)},[i,r]),y=o.useMemo(()=>E(r,i),[i,r]),q=o.useMemo(()=>F(r),[r]),N=o.useMemo(()=>{const u=l.get(i)??[];return z(t.current,u)?t.current:(t.current=u,u)},[i,l]),R=o.useMemo(()=>L(s,a,i),[i,a,s]),C=o.useMemo(()=>S?.type==="interaction"?S:void 0,[S]);return{currentElementList:y,stepElementLists:q,slideElementList:r,currentIndex:i,audioList:f,audioSlideIndexes:m,currentAudioSequenceIndexes:N,currentStepHasSpeakableElement:R,currentInteractionElement:C,canGoPrev:k,canGoNext:v,handlePrev:_,handleNext:I,handleGoTo:A}};exports.default=J;exports.resolveSlideAudioItemSource=x;
|
|
2
2
|
//# sourceMappingURL=useSlide.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlide.cjs.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","slideAudioSequenceMap","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSlide.cjs.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n audioSlideIndexes: number[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleGoTo: (index: number) => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getAudioSlideIndexes = (slideAudioSequenceMap: Map<number, number[]>) => {\n const audioSlideIndexes: number[] = [];\n\n slideAudioSequenceMap.forEach((audioIndexes, slideIndex) => {\n audioIndexes.forEach((audioIndex) => {\n audioSlideIndexes[audioIndex] = slideIndex;\n });\n });\n\n return audioSlideIndexes;\n};\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const audioSlideIndexes = useMemo(\n () => getAudioSlideIndexes(slideAudioSequenceMap),\n [slideAudioSequenceMap]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const handleGoTo = useCallback(\n (index: number) => {\n if (!Number.isFinite(index) || slideElementList.length === 0) {\n return;\n }\n\n setCurrentIndex(\n Math.min(Math.max(Math.trunc(index), 0), slideElementList.length - 1)\n );\n },\n [slideElementList.length]\n );\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n audioSlideIndexes,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n handleGoTo,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getAudioSlideIndexes","slideAudioSequenceMap","audioSlideIndexes","audioIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","handleGoTo","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export interface UseSlideResult {
|
|
|
13
13
|
slideElementList: Element[];
|
|
14
14
|
currentIndex: number;
|
|
15
15
|
audioList: SlideAudioItem[];
|
|
16
|
+
audioSlideIndexes: number[];
|
|
16
17
|
currentAudioSequenceIndexes: number[];
|
|
17
18
|
currentStepHasSpeakableElement: boolean;
|
|
18
19
|
currentInteractionElement?: Element;
|
|
@@ -20,6 +21,7 @@ export interface UseSlideResult {
|
|
|
20
21
|
canGoNext: boolean;
|
|
21
22
|
handlePrev: () => void;
|
|
22
23
|
handleNext: () => void;
|
|
24
|
+
handleGoTo: (index: number) => void;
|
|
23
25
|
}
|
|
24
26
|
export declare const resolveSlideAudioItemSource: (element: Element) => {
|
|
25
27
|
audioUrl: string;
|