markdown-flow-ui 0.1.111 → 0.1.112-beta.1
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/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs7.js +1 -1
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +4 -4
- package/dist/_virtual/index.es6.js +2 -5
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es7.js +5 -2
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/assets/markdown-flow-ui.css +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.es.js +321 -317
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +48 -44
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -0
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.es.js +38 -28
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +28 -26
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/utils.cjs.js +1 -1
- package/dist/components/MarkdownFlowEditor/utils.cjs.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/utils.d.ts +8 -1
- package/dist/components/MarkdownFlowEditor/utils.es.js +59 -39
- package/dist/components/MarkdownFlowEditor/utils.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 +8 -0
- package/dist/components/Slide/Slide.es.js +713 -599
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/Slide.stories.d.ts +13 -0
- package/dist/components/Slide/constants.cjs.js +1 -1
- package/dist/components/Slide/constants.cjs.js.map +1 -1
- package/dist/components/Slide/constants.d.ts +4 -0
- package/dist/components/Slide/constants.es.js +6 -2
- package/dist/components/Slide/constants.es.js.map +1 -1
- package/dist/components/Slide/index.d.ts +2 -1
- package/dist/components/Slide/useSlide.cjs.js.map +1 -1
- package/dist/components/Slide/useSlide.es.js.map +1 -1
- package/dist/components/Slide/utils/streamingNavigation.cjs.js.map +1 -1
- package/dist/components/Slide/utils/streamingNavigation.es.js.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/ui/inputGroup/textarea.cjs.js +1 -1
- package/dist/components/ui/inputGroup/textarea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/ResizableTextArea.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/style-to-object@1.0.11/node_modules/style-to-object/cjs/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/style-to-object@1.0.11/node_modules/style-to-object/cjs/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.es.js +1 -1
- package/dist/markdown-flow-ui-lib.css +1 -1
- package/dist/slide.cjs.js +1 -1
- package/dist/slide.es.js +6 -4
- package/dist/slide.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -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\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 normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\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","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","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 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\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 normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\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","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlide.es.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\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 normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\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","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","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.es.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\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 normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\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","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","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":";;;AA8BA,MAAMA,IAAuB,CAACC,MAC5BA,EAAY,OAAO,CAACC,MAAYA,EAAQ,SAAS,GAE7CC,IAA0B,CAACF,MAC/BA,EAAY,OAAiB,CAACG,GAASF,GAASG,OAC1CH,EAAQ,aACVE,EAAQ,KAAKC,CAAK,GAGbD,IACN,EAAE,GAEDE,IAAmB,CAACJ,MACxB,GACEA,GAAS,iBACRA,EAAQ,cAAcA,EAAQ,gBAAgB,UAAU,KAAK,KAG5DK,IAAmB,CAACC,IAAkC,OAC1DA,EAAS,SAAS,KAAK,CAACA,EAAS,KAAK,CAACC,MAAYA,EAAQ,QAAQ,GAE/DC,IAAqB,CAACR,GAAkBG,MAAkB;AAC9D,QAAMM,IAAmBT;AAMzB,SACES,EAAiB,eACjBA,EAAiB,YACjBA,EAAiB,uBACjB,GAAGT,EAAQ,IAAI,IAAI,OAAOA,EAAQ,mBAAmBG,CAAK,CAAC;AAE/D,GAEMO,IAAe,CAACX,MACpBA,EAAY,OAAyB,CAACY,GAAMX,GAASY,MAAiB;AACpE,MAAIR,EAAiBJ,CAAO,GAAG;AAC7B,UAAMa,IAA0Bb,EAAQ,kBAAkB,CAAA,GACpDc,IAAmBD,EAAwB,SAAS;AAE1D,IAAAF,EAAK,KAAK;AAAA,MACR,UAAUH,EAAmBR,GAASY,CAAY;AAAA,MAClD,gBAAgBZ,EAAQ;AAAA;AAAA;AAAA,MAGxB,UAAUc,IAAmB,KAAKd,EAAQ;AAAA,MAC1C,eAAea;AAAA,MACf,kBAAkBR,EAAiBQ,CAAuB;AAAA,MAC1D,SAAAb;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOW;AACT,GAAG,EAAE,GAEDI,IAAmB,CAAChB,MAA2B;AACnD,QAAMiB,wBAAoB,IAAA;AAC1B,MAAIC,IAAa;AAEjB,SAAAlB,EAAY,QAAQ,CAACC,GAASG,MAAU;AACtC,IAAIC,EAAiBJ,CAAO,MAC1BgB,EAAc,IAAIb,GAAOc,CAAU,GACnCA,KAAc;AAAA,EAElB,CAAC,GAEMD;AACT,GAEME,IAA2B,CAC/BnB,GACAoB,GACAH,MAEAG,EAAqB;AAAA,EACnB,CAACC,GAAaC,GAAYC,MAAe;AACvC,UAAMC,IACJJ,EAAqBG,IAAa,CAAC,KAAKvB,EAAY,QAChDyB,IAA4B,CAAA;AAElC,aAASrB,IAAQkB,GAAYlB,IAAQoB,GAAiBpB,KAAS,GAAG;AAChE,YAAMH,IAAUD,EAAYI,CAAK;AAEjC,UAAI,CAACC,EAAiBJ,CAAO;AAC3B;AAGF,YAAMiB,IAAaD,EAAc,IAAIb,CAAK;AAE1C,MAAIc,KAAc,QAIlBO,EAAgB,KAAKP,CAAU;AAAA,IACjC;AAEA,WAAAG,EAAY,IAAIE,GAAYE,CAAe,GACpCJ;AAAA,EACT;AAAA,sBACI,IAAA;AACN,GAEIK,IAAuB,CAACC,MAAgC;AAC5D,QAAMC,IAAeD,EAAiB;AAAA,IACpC,CAAC1B,MAAYA,EAAQ,kBAAkB;AAAA,EAAA;AAGzC,SAAI2B,KAAgB,IACXA,IAGFD,EAAiB;AAAA,IACtB,CAAC1B,MAAYA,EAAQ,kBAAkB;AAAA,EAAA;AAE3C,GAEM4B,IAAoB,CAAC5B,OAA+B;AAAA,EACxD,GAAGA;AAAA,EACH,eAAe;AACjB,IAEM6B,IAAwB,CAC5BH,GACAI,MAEIA,IAAe,IACV,CAAA,IAGFJ,EACJ,MAAM,GAAGI,IAAe,CAAC,EACzB,OAAkB,CAACC,GAAa/B,MAAY;AAC3C,MAAIA,EAAQ,SAAS;AACnB,WAAO+B;AAGT,QAAMC,IAAiBJ,EAAkB5B,CAAO;AAEhD,SAAIgC,EAAe,SAAS,SACTC,EAAiBF,GAAaC,CAAc,KAE1C,CAAC,GAAGD,GAAaC,CAAc,IAGhDhC,EAAQ,SACH,CAACgC,CAAc,IAGpBD,EAAY,WAAW,IAClB,CAACC,CAAc,IAGjB,CAAC,GAAGD,GAAaC,CAAc;AACxC,GAAG,CAAA,CAAE,GAGHE,IAAsB,CAACR,MAC3BA,EAAiB;AAAA,EAAI,CAACS,GAAGhC,MACvB0B,EAAsBH,GAAkBvB,CAAK;AAC/C,GAEIiC,IAA6B,CACjCrC,GACAoB,GACAW,MACG;AACH,MAAIA,IAAe;AACjB,WAAO;AAGT,QAAMT,IAAaF,EAAqBW,CAAY;AAEpD,MAAI,OAAOT,KAAe;AACxB,WAAO;AAGT,QAAME,IACJJ,EAAqBW,IAAe,CAAC,KAAK/B,EAAY;AAExD,WAASI,IAAQkB,GAAYlB,IAAQoB,GAAiBpB,KAAS;AAC7D,QAAIJ,EAAYI,CAAK,GAAG;AACtB,aAAO;AAIX,SAAO;AACT,GAEMkC,IAA2B,CAC/BC,GACAC,MAEAD,EAAgB,WAAWC,EAAgB,UAC3CD,EAAgB,MAAM,CAACtC,GAASG,MAAUH,MAAYuC,EAAgBpC,CAAK,CAAC,GAExEqC,IAAsB,CAACC,GAAsBC,MACjDD,EAAW,WAAWC,EAAW,UACjCD,EAAW,MAAM,CAACE,GAAOxC,MAAUwC,MAAUD,EAAWvC,CAAK,CAAC,GAE1DyC,IAAW,CAAC7C,IAAyB,OAAuB;AAChE,QAAM8C,IAAuBC,EAAO/C,CAAW,GACzCgD,IAAuCD,EAAiB,EAAE,GAC1DE,IAAoBC,EAAQ,MAC5BZ,EAAyBQ,EAAqB,SAAS9C,CAAW,IAC7D8C,EAAqB,WAI9BA,EAAqB,UAAU9C,GACxBA,IACN,CAACA,CAAW,CAAC,GACV2B,IAAmBuB;AAAA,IACvB,MAAMnD,EAAqBkD,CAAiB;AAAA,IAC5C,CAACA,CAAiB;AAAA,EAAA,GAEdE,IAA8BJ,EAAOpB,CAAgB,GACrDP,IAAuB8B;AAAA,IAC3B,MAAMhD,EAAwB+C,CAAiB;AAAA,IAC/C,CAACA,CAAiB;AAAA,EAAA,GAEdG,IAAYF;AAAA,IAChB,MAAMvC,EAAasC,CAAiB;AAAA,IACpC,CAACA,CAAiB;AAAA,EAAA,GAEdhC,IAAgBiC;AAAA,IACpB,MAAMlC,EAAiBiC,CAAiB;AAAA,IACxC,CAACA,CAAiB;AAAA,EAAA,GAEdI,IAAwBH;AAAA,IAC5B,MACE/B;AAAA,MACE8B;AAAA,MACA7B;AAAA,MACAH;AAAA,IAAA;AAAA,IAEJ,CAACA,GAAeG,GAAsB6B,CAAiB;AAAA,EAAA,GAEnD,CAAClB,GAAcuB,CAAe,IAAIC;AAAA,IAAS,MAC/C7B,EAAqBC,CAAgB;AAAA,EAAA;AAGvC,EAAA6B,EAAU,MAAM;AACd,UAAMC,IAA2BN,EAA4B;AAE7D,IAAAG,EAAgB,CAACI,MAAc;AAC7B,YAAMC,IAAoBC,EAAuC;AAAA,QAC/D,eAAeF;AAAA,QACf,0BAAAD;AAAA,QACA,sBAAsB9B;AAAA,MAAA,CACvB;AAED,aAAIgC,KAAqB,IAChBA,IAGFjC,EAAqBC,CAAgB;AAAA,IAC9C,CAAC,GAEDwB,EAA4B,UAAUxB;AAAA,EACxC,GAAG,CAACA,CAAgB,CAAC;AAErB,QAAMkC,IAAaC,EAAY,MAAM;AACnC,IAAAR,EAAgB,CAACI,MACXA,KAAa,IACR,KAAK,IAAIA,GAAW,CAAC,IAGvB,KAAK,IAAIA,IAAY,GAAG,CAAC,CACjC;AAAA,EACH,GAAG,CAAA,CAAE,GAECK,IAAaD,EAAY,MAAM;AACnC,IAAAR,EAAgB,CAACI,MACXA,IAAY,IACPA,IAGF,KAAK,IAAIA,IAAY,GAAG/B,EAAiB,SAAS,CAAC,CAC3D;AAAA,EACH,GAAG,CAACA,EAAiB,MAAM,CAAC,GAEtBqC,IAAYjC,IAAe,GAC3BkC,IACJlC,KAAgB,KAAKA,IAAeJ,EAAiB,SAAS,GAC1DuC,IAAqBhB,EAAQ,MAAM;AACvC,QAAInB,IAAe;AACjB;AAGF,UAAM9B,IAAU0B,EAAiBI,CAAY;AAE7C,QAAK9B;AAIL,aAAO4B,EAAkB5B,CAAO;AAAA,EAClC,GAAG,CAAC8B,GAAcJ,CAAgB,CAAC,GAC7BwC,IAAqBjB;AAAA,IACzB,MAAMpB,EAAsBH,GAAkBI,CAAY;AAAA,IAC1D,CAACA,GAAcJ,CAAgB;AAAA,EAAA,GAE3ByC,IAAmBlB;AAAA,IACvB,MAAMf,EAAoBR,CAAgB;AAAA,IAC1C,CAACA,CAAgB;AAAA,EAAA,GAEb0C,IAA8BnB,EAAQ,MAAM;AAChD,UAAMoB,IACJjB,EAAsB,IAAItB,CAAY,KAAK,CAAA;AAE7C,WACEU;AAAA,MACEO,EAAqC;AAAA,MACrCsB;AAAA,IAAA,IAGKtB,EAAqC,WAG9CA,EAAqC,UAAUsB,GAExCA;AAAA,EACT,GAAG,CAACvC,GAAcsB,CAAqB,CAAC,GAClCkB,IAAiCrB;AAAA,IACrC,MACEb;AAAA,MACEY;AAAA,MACA7B;AAAA,MACAW;AAAA,IAAA;AAAA,IAEJ,CAACA,GAAcX,GAAsB6B,CAAiB;AAAA,EAAA,GAElDuB,IAA4BtB;AAAA,IAChC,MACEgB,GAAoB,SAAS,gBACzBA,IACA;AAAA,IACN,CAACA,CAAkB;AAAA,EAAA;AAGrB,SAAO;AAAA,IACL,oBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAzC;AAAA,IACA,cAAAI;AAAA,IACA,WAAAqB;AAAA,IACA,6BAAAiB;AAAA,IACA,gCAAAE;AAAA,IACA,2BAAAC;AAAA,IACA,WAAAR;AAAA,IACA,WAAAC;AAAA,IACA,YAAAJ;AAAA,IACA,YAAAE;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamingNavigation.cjs.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n
|
|
1
|
+
{"version":3,"file":"streamingNavigation.cjs.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"gFAQA,MAAMA,EAAgCC,GACpC,GACEA,GAAS,OAAS,gBACjBA,EAAQ,UAAYA,EAAQ,YAAY,KAAA,IAGvCC,EAAwB,CAC5BC,EACAC,IAEAD,EAAyB,QAAUC,EAAqB,QACxDD,EAAyB,MACvB,CAACF,EAASI,IAAUJ,IAAYG,EAAqBC,CAAK,CAC5D,EAEWC,EAAyC,CAAC,CACrD,cAAAC,EACA,yBAAAJ,EACA,qBAAAC,CACF,IAAmC,CACjC,GAAIA,EAAqB,SAAW,EAClC,MAAO,GAGT,MAAMI,EACJJ,EAAqB,OAASD,EAAyB,QACvDD,EAAsBC,EAA0BC,CAAoB,EAChEK,EAA0BN,EAAyB,OAAS,EAC5DO,EACJH,IAAkBE,EACdE,EACJJ,GAAiB,EAAIJ,EAAyBI,CAAa,EAAI,OAKjE,OACEC,GACAE,GACAV,EAA6BW,CAAsB,EAE5CR,EAAyB,OAG9BI,GAAiB,GAAKA,EAAgBH,EAAqB,OACtDG,EAGF,EACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamingNavigation.es.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n
|
|
1
|
+
{"version":3,"file":"streamingNavigation.es.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"AAQA,MAAMA,IAA+B,CAACC,MACpC,GACEA,GAAS,SAAS,kBACjBA,EAAQ,YAAYA,EAAQ,YAAY,KAAA,KAGvCC,IAAwB,CAC5BC,GACAC,MAEAD,EAAyB,UAAUC,EAAqB,UACxDD,EAAyB;AAAA,EACvB,CAACF,GAASI,MAAUJ,MAAYG,EAAqBC,CAAK;AAC5D,GAEWC,IAAyC,CAAC;AAAA,EACrD,eAAAC;AAAA,EACA,0BAAAJ;AAAA,EACA,sBAAAC;AACF,MAAmC;AACjC,MAAIA,EAAqB,WAAW;AAClC,WAAO;AAGT,QAAMI,IACJJ,EAAqB,SAASD,EAAyB,UACvDD,EAAsBC,GAA0BC,CAAoB,GAChEK,IAA0BN,EAAyB,SAAS,GAC5DO,IACJH,MAAkBE,GACdE,IACJJ,KAAiB,IAAIJ,EAAyBI,CAAa,IAAI;AAKjE,SACEC,KACAE,KACAV,EAA6BW,CAAsB,IAE5CR,EAAyB,SAG9BI,KAAiB,KAAKA,IAAgBH,EAAqB,SACtDG,IAGF;AACT;"}
|
|
@@ -3,12 +3,12 @@ export { default as MarkdownFlow } from './MarkdownFlow';
|
|
|
3
3
|
export { default as ScrollableMarkdown } from './MarkdownFlow/ScrollableMarkdownFlow';
|
|
4
4
|
export { default as MarkdownFlowEditor } from './MarkdownFlowEditor';
|
|
5
5
|
export { default as Slide } from './Slide';
|
|
6
|
-
export { Player, useSlide } from './Slide';
|
|
6
|
+
export { Player, useSlide, SLIDE_ERROR_CODES } from './Slide';
|
|
7
7
|
export { getInteractionDefaultValues, getInteractionDefaultSelectedValues, } from '../lib/interaction-defaults';
|
|
8
8
|
export type { ContentRenderProps } from './ContentRender/ContentRender';
|
|
9
9
|
export type { OnSendContentParams, CustomRenderBarProps } from './types';
|
|
10
10
|
export type { EditMode, UploadProps, ImageResource, } from './MarkdownFlowEditor';
|
|
11
|
-
export type { Element, ElementSubtitleCue, SlideInteractionTexts, SlideProps, } from './Slide';
|
|
11
|
+
export type { Element, ElementSubtitleCue, SlideInteractionTexts, SlideErrorCode, SlideErrorContext, SlideProps, } from './Slide';
|
|
12
12
|
export type { InteractionDefaultResolver, InteractionDefaultResolverParams, InteractionDefaultValueOptions, InteractionDefaultValues, InteractionParseResult, } from '../lib/interaction-defaults';
|
|
13
13
|
export type { PlayerProps } from './Slide';
|
|
14
14
|
export type { UseSlideResult } from './Slide';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.cjs7.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.cjs.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.cjs.js");const d=require("../../../lib/utils.cjs.js");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const l=c(s),i=l.forwardRef(({className:e,autoSize:t={minRows:1},style:r,...a},n)=>o.jsxRuntimeExports.jsx(u.default,{ref:n,autoSize:t,className:d.cn("border-input placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 w-full rounded-md border bg-transparent pl-3 py-1.5 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","resize-none",e),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...r},...a}));i.displayName="Textarea";exports.Textarea=i;
|
|
2
2
|
//# sourceMappingURL=textarea.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as i } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
2
|
import * as d from "react";
|
|
3
3
|
import n from "../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.es.js";
|
|
4
|
-
import "../../../_virtual/index.
|
|
4
|
+
import "../../../_virtual/index.es7.js";
|
|
5
5
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.es.js";
|
|
6
6
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
|
|
7
7
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../../comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.cjs.js"),u=require("../../../../devlop@1.1.0/node_modules/devlop/lib/default.cjs.js"),f=require("../../../../property-information@7.1.0/node_modules/property-information/index.cjs.js"),C=require("../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.cjs.js"),S=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../../comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.cjs.js"),u=require("../../../../devlop@1.1.0/node_modules/devlop/lib/default.cjs.js"),f=require("../../../../property-information@7.1.0/node_modules/property-information/index.cjs.js"),C=require("../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.cjs.js"),S=require("../../../../../../../_virtual/index.cjs4.js"),N=require("../../../../hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.cjs.js"),x=require("../../../../estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.cjs.js"),h=require("../../../../vfile-message@4.0.3/node_modules/vfile-message/lib/index.cjs.js"),j=require("../../../../property-information@7.1.0/node_modules/property-information/lib/find.cjs.js"),A=require("../../../../property-information@7.1.0/node_modules/property-information/lib/hast-to-react.cjs.js"),T=require("../../../../unist-util-position@5.0.0/node_modules/unist-util-position/lib/index.cjs.js"),m={}.hasOwnProperty,F=new Map,P=/[A-Z]/g,q=new Set(["table","tbody","thead","tfoot","tr"]),J=new Set(["td","th"]),g="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function M(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=e.filePath||void 0;let n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=K(r,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=k(r,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?f.svg:f.html,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=E(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function E(t,e,r){if(e.type==="element")return I(t,e,r);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return L(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return V(t,e,r);if(e.type==="mdxjsEsm")return $(t,e);if(e.type==="root")return D(t,e,r);if(e.type==="text")return O(t,e)}function I(t,e,r){const n=t.schema;let s=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(s=f.svg,t.schema=s),t.ancestors.push(e);const i=b(t,e.tagName,!1),a=R(t,e);let o=d(t,e);return q.has(e.tagName)&&(o=o.filter(function(l){return typeof l=="string"?!N.whitespace(l):!0})),v(t,a,i,e),y(a,o),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function L(t,e){if(e.data&&e.data.estree&&t.evaluater){const n=e.data.estree.body[0];return u.ok(n.type==="ExpressionStatement"),t.evaluater.evaluateExpression(n.expression)}p(t,e.position)}function $(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);p(t,e.position)}function V(t,e,r){const n=t.schema;let s=n;e.name==="svg"&&n.space==="html"&&(s=f.svg,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:b(t,e.name,!0),a=_(t,e),o=d(t,e);return v(t,a,i,e),y(a,o),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function D(t,e,r){const n={};return y(n,d(t,e)),t.create(e,t.Fragment,n,r)}function O(t,e){return e.value}function v(t,e,r,n){typeof r!="string"&&r!==t.Fragment&&t.passNode&&(e.node=n)}function y(t,e){if(e.length>0){const r=e.length>1?e:e[0];r&&(t.children=r)}}function k(t,e,r){return n;function n(s,i,a,o){const c=Array.isArray(a.children)?r:e;return o?c(i,a,o):c(i,a)}}function K(t,e){return r;function r(n,s,i,a){const o=Array.isArray(i.children),l=T.pointStart(n);return e(s,i,a,o,{columnNumber:l?l.column-1:void 0,fileName:t,lineNumber:l?l.line:void 0},void 0)}}function R(t,e){const r={};let n,s;for(s in e.properties)if(s!=="children"&&m.call(e.properties,s)){const i=B(t,s,e.properties[s]);if(i){const[a,o]=i;t.tableCellAlignToStyle&&a==="align"&&typeof o=="string"&&J.has(e.tagName)?n=o:r[a]=o}}if(n){const i=r.style||(r.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function _(t,e){const r={};for(const n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&t.evaluater){const i=n.data.estree.body[0];u.ok(i.type==="ExpressionStatement");const a=i.expression;u.ok(a.type==="ObjectExpression");const o=a.properties[0];u.ok(o.type==="SpreadElement"),Object.assign(r,t.evaluater.evaluateExpression(o.argument))}else p(t,e.position);else{const s=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&t.evaluater){const o=n.value.data.estree.body[0];u.ok(o.type==="ExpressionStatement"),i=t.evaluater.evaluateExpression(o.expression)}else p(t,e.position);else i=n.value===null?!0:n.value;r[s]=i}return r}function d(t,e){const r=[];let n=-1;const s=t.passKeys?new Map:F;for(;++n<e.children.length;){const i=e.children[n];let a;if(t.passKeys){const l=i.type==="element"?i.tagName:i.type==="mdxJsxFlowElement"||i.type==="mdxJsxTextElement"?i.name:void 0;if(l){const c=s.get(l)||0;a=l+"-"+c,s.set(l,c+1)}}const o=E(t,i,a);o!==void 0&&r.push(o)}return r}function B(t,e,r){const n=j.find(t.schema,e);if(!(r==null||typeof r=="number"&&Number.isNaN(r))){if(Array.isArray(r)&&(r=n.commaSeparated?w.stringify(r):C.stringify(r)),n.property==="style"){let s=typeof r=="object"?r:z(t,String(r));return t.stylePropertyNameCase==="css"&&(s=X(s)),["style",s]}return[t.elementAttributeNameCase==="react"&&n.space?A.hastToReact[n.property]||n.property:n.attribute,r]}}function z(t,e){try{return S.default(e,{reactCompat:!0})}catch(r){if(t.ignoreInvalidStyle)return{};const n=r,s=new h.VFileMessage("Cannot parse `style` attribute",{ancestors:t.ancestors,cause:n,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw s.file=t.filePath||void 0,s.url=g+"#cannot-parse-style-attribute",s}}function b(t,e,r){let n;if(!r)n={type:"Literal",value:e};else if(e.includes(".")){const s=e.split(".");let i=-1,a;for(;++i<s.length;){const o=x.name(s[i])?{type:"Identifier",name:s[i]}:{type:"Literal",value:s[i]};a=a?{type:"MemberExpression",object:a,property:o,computed:!!(i&&o.type==="Literal"),optional:!1}:o}n=a}else n=x.name(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(n.type==="Literal"){const s=n.value;return m.call(t.components,s)?t.components[s]:s}if(t.evaluater)return t.evaluater.evaluateExpression(n);p(t)}function p(t,e){const r=new h.VFileMessage("Cannot handle MDX estrees without `createEvaluater`",{ancestors:t.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw r.file=t.filePath||void 0,r.url=g+"#cannot-handle-mdx-estrees-without-createevaluater",r}function X(t){const e={};let r;for(r in t)m.call(t,r)&&(e[Z(r)]=t[r]);return e}function Z(t){let e=t.replace(P,G);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function G(t){return"-"+t.toLowerCase()}exports.toJsxRuntime=M;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -2,7 +2,7 @@ import { stringify as w } from "../../../../comma-separated-tokens@2.0.3/node_mo
|
|
|
2
2
|
import { ok as u } from "../../../../devlop@1.1.0/node_modules/devlop/lib/default.es.js";
|
|
3
3
|
import { svg as m, html as C } from "../../../../property-information@7.1.0/node_modules/property-information/index.es.js";
|
|
4
4
|
import { stringify as N } from "../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.es.js";
|
|
5
|
-
import S from "../../../../../../../_virtual/index.
|
|
5
|
+
import S from "../../../../../../../_virtual/index.es4.js";
|
|
6
6
|
import { whitespace as j } from "../../../../hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.es.js";
|
|
7
7
|
import { name as x } from "../../../../estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.es.js";
|
|
8
8
|
import { VFileMessage as h } from "../../../../vfile-message@4.0.3/node_modules/vfile-message/lib/index.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../../../../../_virtual/index.cjs7.js"),n=require("react"),T=require("./utils/commonUtils.cjs.js");var de=n.forwardRef(function(e,U){var p,x,y,$=e.inputElement,N=e.children,r=e.prefixCls,k=e.prefix,f=e.suffix,C=e.addonBefore,W=e.addonAfter,z=e.className,J=e.style,m=e.disabled,I=e.readOnly,K=e.focused,E=e.triggerFocus,d=e.allowClear,b=e.value,h=e.handleReset,L=e.hidden,t=e.classes,a=e.classNames,g=e.dataAttrs,o=e.styles,l=e.components,w=e.onClear,M=N??$,Q=l?.affixWrapper||"span",V=l?.groupWrapper||"span",X=l?.wrapper||"span",S=l?.groupAddon||"span",A=n.useRef(null),Y=function(s){var q;(q=A.current)!==null&&q!==void 0&&q.contains(s.target)&&E?.()},j=T.hasPrefixSuffix(e),c=n.cloneElement(M,{value:b,className:u.default((p=M.props)===null||p===void 0?void 0:p.className,!j&&a?.variant)||null}),B=n.useRef(null);if(n.useImperativeHandle(U,function(){return{nativeElement:B.current||A.current}}),j){var D=null;if(d){var Z=!m&&!I&&b,R="".concat(r,"-clear-icon"),P=oe.default(d)==="object"&&d!==null&&d!==void 0&&d.clearIcon?d.clearIcon:"✖";D=n.createElement("button",{type:"button",tabIndex:-1,onClick:function(s){h?.(s),w?.()},onMouseDown:function(s){return s.preventDefault()},className:u.default(R,i.default(i.default({},"".concat(R,"-hidden"),!Z),"".concat(R,"-has-suffix"),!!f))},P)}var v="".concat(r,"-affix-wrapper"),ee=u.default(v,i.default(i.default(i.default(i.default(i.default({},"".concat(r,"-disabled"),m),"".concat(v,"-disabled"),m),"".concat(v,"-focused"),K),"".concat(v,"-readonly"),I),"".concat(v,"-input-with-clear-btn"),f&&d&&b),t?.affixWrapper,a?.affixWrapper,a?.variant),ae=(f||d)&&n.createElement("span",{className:u.default("".concat(r,"-suffix"),a?.suffix),style:o?.suffix},D,f);c=n.createElement(Q,te.default({className:ee,style:o?.affixWrapper,onClick:Y},g?.affixWrapper,{ref:A}),k&&n.createElement("span",{className:u.default("".concat(r,"-prefix"),a?.prefix),style:o?.prefix},k),c,ae)}if(T.hasAddon(e)){var _="".concat(r,"-group"),O="".concat(_,"-addon"),F="".concat(_,"-wrapper"),ne=u.default("".concat(r,"-wrapper"),_,t?.wrapper,a?.wrapper),le=u.default(F,i.default({},"".concat(F,"-disabled"),m),t?.group,a?.groupWrapper);c=n.createElement(V,{className:le,ref:B},n.createElement(X,{className:ne},C&&n.createElement(S,{className:O},C),c,W&&n.createElement(S,{className:O},W)))}return n.cloneElement(c,{className:u.default((x=c.props)===null||x===void 0?void 0:x.className,z)||null,style:H.default(H.default({},(y=c.props)===null||y===void 0?void 0:y.style),J),hidden:L})});exports.default=de;
|
|
2
2
|
//# sourceMappingURL=BaseInput.cjs.js.map
|
|
@@ -2,7 +2,7 @@ import $ from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
|
|
|
2
2
|
import oe from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.es.js";
|
|
3
3
|
import r from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.es.js";
|
|
4
4
|
import te from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.es.js";
|
|
5
|
-
import d from "../../../../../../../_virtual/index.
|
|
5
|
+
import d from "../../../../../../../_virtual/index.es7.js";
|
|
6
6
|
import l, { useRef as q, cloneElement as ie } from "react";
|
|
7
7
|
import { hasPrefixSuffix as re, hasAddon as de } from "./utils/commonUtils.es.js";
|
|
8
8
|
var xe = /* @__PURE__ */ l.forwardRef(function(e, z) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const Y=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),F=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),N=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),J=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),f=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),K=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),Q=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const Y=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),F=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),N=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),J=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),f=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),K=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),Q=require("../../../../../../../_virtual/index.cjs7.js"),ee=require("../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.cjs.js"),j=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js"),te=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.cjs.js"),w=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.cjs.js"),ae=require("react"),re=require("./calculateNodeHeight.cjs.js");function ne(n){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(o,e,s.get?s:{enumerable:!0,get:()=>n[e]})}}return o.default=n,Object.freeze(o)}const t=ne(ae);var ue=["prefixCls","defaultValue","value","autoSize","onResize","className","style","disabled","onChange","onInternalAutoSize"],g=0,m=1,_=2,le=t.forwardRef(function(n,o){var e=n,s=e.prefixCls,O=e.defaultValue,p=e.value,a=e.autoSize,i=e.onResize,T=e.className,$=e.style,b=e.disabled,c=e.onChange,d=e.onInternalAutoSize,P=K.default(e,ue),V=te.default(O,{value:p,postState:function(r){return r??""}}),y=f.default(V,2),D=y[0],Z=y[1],H=function(r){Z(r.target.value),c?.(r)},S=t.useRef();t.useImperativeHandle(o,function(){return{textArea:S.current}});var L=t.useMemo(function(){return a&&J.default(a)==="object"?[a.minRows,a.maxRows]:[]},[a]),E=f.default(L,2),q=E[0],x=E[1],R=!!a,k=t.useState(_),A=f.default(k,2),u=A[0],v=A[1],B=t.useState(),I=f.default(B,2),G=I[0],U=I[1],M=function(){v(g),process.env.NODE_ENV==="test"&&d?.()};j.default(function(){R&&M()},[p,q,x,R]),j.default(function(){if(u===g)v(m);else if(u===m){var l=re.default(S.current,!1,q,x);v(_),U(l)}},[u]);var h=t.useRef(),C=function(){w.default.cancel(h.current)},W=function(r){u===_&&(i?.(r),a&&(C(),h.current=w.default(function(){M()})))};t.useEffect(function(){return C},[]);var X=R?G:null,z=N.default(N.default({},$),X);return(u===g||u===m)&&(z.overflowY="hidden",z.overflowX="hidden"),t.createElement(ee.default,{onResize:W,disabled:!(a||i)},t.createElement("textarea",Y.default({},P,{ref:S,style:z,className:Q.default(s,T,F.default({},"".concat(s,"-disabled"),b)),disabled:b,value:D,onChange:H})))});exports.default=le;
|
|
2
2
|
//# sourceMappingURL=ResizableTextArea.cjs.js.map
|
|
@@ -4,7 +4,7 @@ import w from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
|
|
|
4
4
|
import J from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.es.js";
|
|
5
5
|
import s from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.es.js";
|
|
6
6
|
import K from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.es.js";
|
|
7
|
-
import Q from "../../../../../../../_virtual/index.
|
|
7
|
+
import Q from "../../../../../../../_virtual/index.es7.js";
|
|
8
8
|
import ee from "../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.es.js";
|
|
9
9
|
import M from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
|
|
10
10
|
import te from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const be=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),X=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),d=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),ze=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/toConsumableArray.cjs.js"),x=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),qe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),g=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const be=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),X=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),d=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),ze=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/toConsumableArray.cjs.js"),x=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),qe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),g=require("../../../../../../../_virtual/index.cjs7.js"),Te=require("../../../../rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.cjs.js"),Ae=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.cjs.js"),n=require("react"),Fe=require("../../../../rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/hooks/useCount.cjs.js"),Y=require("../../../../rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/utils/commonUtils.cjs.js"),Ne=require("./ResizableTextArea.cjs.js");var Oe=["defaultValue","value","onFocus","onBlur","onChange","allowClear","maxLength","onCompositionStart","onCompositionEnd","suffix","prefixCls","showCount","count","className","style","disabled","hidden","classNames","styles","onResize","onClear","onPressEnter","readOnly","autoSize","onKeyDown"],$e=n.forwardRef(function(t,Z){var C,B=t.defaultValue,_=t.value,p=t.onFocus,y=t.onBlur,L=t.onChange,R=t.allowClear,M=t.maxLength,S=t.onCompositionStart,w=t.onCompositionEnd,ee=t.suffix,P=t.prefixCls,s=P===void 0?"rc-textarea":P,E=t.showCount,te=t.count,ae=t.className,v=t.style,m=t.disabled,ne=t.hidden,l=t.classNames,i=t.styles,b=t.onResize,oe=t.onClear,D=t.onPressEnter,K=t.readOnly,V=t.autoSize,z=t.onKeyDown,le=qe.default(t,Oe),re=Ae.default(B,{value:_,defaultValue:B}),W=x.default(re,2),q=W[0],j=W[1],T=q==null?"":String(q),ue=n.useState(!1),k=x.default(ue,2),se=k[0],A=k[1],F=n.useRef(!1),ie=n.useState(null),H=x.default(ie,2),de=H[0],ce=H[1],U=n.useRef(null),N=n.useRef(null),r=function(){var e;return(e=N.current)===null||e===void 0?void 0:e.textArea},G=function(){r().focus()};n.useImperativeHandle(Z,function(){var a;return{resizableTextArea:N.current,focus:G,blur:function(){r().blur()},nativeElement:((a=U.current)===null||a===void 0?void 0:a.nativeElement)||r()}}),n.useEffect(function(){A(function(a){return!m&&a})},[m]);var fe=n.useState(null),J=x.default(fe,2),O=J[0],ve=J[1];n.useEffect(function(){if(O){var a;(a=r()).setSelectionRange.apply(a,ze.default(O))}},[O]);var o=Fe.default(te,E),c=(C=o.max)!==null&&C!==void 0?C:M,me=Number(c)>0,$=o.strategy(T),he=!!c&&$>c,Q=function(e,u){var h=u;!F.current&&o.exceedFormatter&&o.max&&o.strategy(u)>o.max&&(h=o.exceedFormatter(u,{max:o.max}),u!==h&&ve([r().selectionStart||0,r().selectionEnd||0])),j(h),Y.resolveOnChange(e.currentTarget,e,L,h)},xe=function(e){F.current=!0,S?.(e)},ge=function(e){F.current=!1,Q(e,e.currentTarget.value),w?.(e)},Ce=function(e){Q(e,e.target.value)},pe=function(e){e.key==="Enter"&&D&&D(e),z?.(e)},ye=function(e){A(!0),p?.(e)},Re=function(e){A(!1),y?.(e)},Se=function(e){j(""),G(),Y.resolveOnChange(r(),e,L)},I=ee,f;o.show&&(o.showFormatter?f=o.showFormatter({value:T,count:$,maxLength:c}):f="".concat($).concat(me?" / ".concat(c):""),I=n.createElement(n.Fragment,null,I,n.createElement("span",{className:g.default("".concat(s,"-data-count"),l?.count),style:i?.count},f)));var we=function(e){var u;b?.(e),(u=r())!==null&&u!==void 0&&u.style.height&&ce(!0)},Ee=!V&&!E&&!R;return n.createElement(Te.default,{ref:U,value:T,allowClear:R,handleReset:Se,suffix:I,prefixCls:s,classNames:d.default(d.default({},l),{},{affixWrapper:g.default(l?.affixWrapper,X.default(X.default({},"".concat(s,"-show-count"),E),"".concat(s,"-textarea-allow-clear"),R))}),disabled:m,focused:se,className:g.default(ae,he&&"".concat(s,"-out-of-range")),style:d.default(d.default({},v),de&&!Ee?{height:"auto"}:{}),dataAttrs:{affixWrapper:{"data-count":typeof f=="string"?f:void 0}},hidden:ne,readOnly:K,onClear:oe},n.createElement(Ne.default,be.default({},le,{autoSize:V,maxLength:M,onKeyDown:pe,onChange:Ce,onFocus:ye,onBlur:Re,onCompositionStart:xe,onCompositionEnd:ge,className:g.default(l?.textarea),style:d.default(d.default({},i?.textarea),{},{resize:v?.resize}),disabled:m,prefixCls:s,onResize:we,ref:N,readOnly:K})))});exports.default=$e;
|
|
2
2
|
//# sourceMappingURL=TextArea.cjs.js.map
|
|
@@ -4,7 +4,7 @@ import d from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
|
|
|
4
4
|
import Ae from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/toConsumableArray.es.js";
|
|
5
5
|
import x from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.es.js";
|
|
6
6
|
import Fe from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.es.js";
|
|
7
|
-
import h from "../../../../../../../_virtual/index.
|
|
7
|
+
import h from "../../../../../../../_virtual/index.es7.js";
|
|
8
8
|
import Ne from "../../../../rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.es.js";
|
|
9
9
|
import Te from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.es.js";
|
|
10
10
|
import o, { useRef as Y, useImperativeHandle as $e, useEffect as Ie } from "react";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./TextArea.cjs.js");require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./TextArea.cjs.js");require("../../../../../../../_virtual/index.cjs7.js");require("../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.cjs.js");require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js");require("react");require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.cjs.js");exports.default=e.default;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import t from "./TextArea.es.js";
|
|
2
|
-
import "../../../../../../../_virtual/index.
|
|
2
|
+
import "../../../../../../../_virtual/index.es7.js";
|
|
3
3
|
import "../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.es.js";
|
|
4
4
|
import "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
|
|
5
5
|
import "react";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../../../../_virtual/index.cjs6.js"),a=require("../../../../inline-style-parser@0.2.4/node_modules/inline-style-parser/index.cjs.js");var i;function d(){if(i)return t.__exports;i=1;var s=t.__exports&&t.__exports.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t.__exports,"__esModule",{value:!0}),t.__exports.default=l;const f=s(a.__require());function l(e,o){let r=null;if(!e||typeof e!="string")return r;const c=(0,f.default)(e),p=typeof o=="function";return c.forEach(u=>{if(u.type!=="declaration")return;const{property:_,value:n}=u;p?o(_,n,u):n&&(r=r||{},r[_]=n)}),r}return t.__exports}exports.__require=d;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as r } from "../../../../../../../_virtual/index.
|
|
1
|
+
import { __exports as r } from "../../../../../../../_virtual/index.es6.js";
|
|
2
2
|
import { __require as p } from "../../../../inline-style-parser@0.2.4/node_modules/inline-style-parser/index.es.js";
|
|
3
3
|
var f;
|
|
4
4
|
function q() {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../../../../bail@2.0.2/node_modules/bail/index.cjs.js"),w=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("../../../../bail@2.0.2/node_modules/bail/index.cjs.js"),w=require("../../../../../../../_virtual/index.cjs5.js"),z=require("../../../../is-plain-obj@4.1.0/node_modules/is-plain-obj/index.cjs.js"),C=require("./callable-instance.cjs.js"),S=require("../../../../trough@2.2.0/node_modules/trough/lib/index.cjs.js"),A=require("../../../../vfile@6.0.3/node_modules/vfile/lib/index.cjs.js"),F={}.hasOwnProperty;class m extends C.CallableInstance{constructor(){super("copy"),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=S.trough()}copy(){const e=new m;let n=-1;for(;++n<this.attachers.length;){const t=this.attachers[n];e.use(...t)}return e.data(w.default(!0,{},this.namespace)),e}data(e,n){return typeof e=="string"?arguments.length===2?(x("data",this.frozen),this.namespace[e]=n,this):F.call(this.namespace,e)&&this.namespace[e]||void 0:e?(x("data",this.frozen),this.namespace=e,this):this.namespace}freeze(){if(this.frozen)return this;const e=this;for(;++this.freezeIndex<this.attachers.length;){const[n,...t]=this.attachers[this.freezeIndex];if(t[0]===!1)continue;t[0]===!0&&(t[0]=void 0);const i=n.call(e,...t);typeof i=="function"&&this.transformers.use(i)}return this.frozen=!0,this.freezeIndex=Number.POSITIVE_INFINITY,this}parse(e){this.freeze();const n=y(e),t=this.parser||this.Parser;return g("parse",t),t(String(n),n)}process(e,n){const t=this;return this.freeze(),g("process",this.parser||this.Parser),b("process",this.compiler||this.Compiler),n?i(void 0,n):new Promise(i);function i(a,h){const u=y(e),l=t.parse(u);t.run(l,u,function(o,c,f){if(o||!c||!f)return s(o);const p=c,d=t.stringify(p,f);D(d)?f.value=d:f.result=d,s(o,f)});function s(o,c){o||!c?h(o):a?a(c):n(void 0,c)}}}processSync(e){let n=!1,t;return this.freeze(),g("processSync",this.parser||this.Parser),b("processSync",this.compiler||this.Compiler),this.process(e,i),T("processSync","process",n),t;function i(a,h){n=!0,P.bail(a),t=h}}run(e,n,t){I(e),this.freeze();const i=this.transformers;return!t&&typeof n=="function"&&(t=n,n=void 0),t?a(void 0,t):new Promise(a);function a(h,u){const l=y(n);i.run(e,l,s);function s(o,c,f){const p=c||e;o?u(o):h?h(p):t(void 0,p,f)}}}runSync(e,n){let t=!1,i;return this.run(e,n,a),T("runSync","run",t),i;function a(h,u){P.bail(h),i=u,t=!0}}stringify(e,n){this.freeze();const t=y(n),i=this.compiler||this.Compiler;return b("stringify",i),I(e),i(e,t)}use(e,...n){const t=this.attachers,i=this.namespace;if(x("use",this.frozen),e!=null)if(typeof e=="function")l(e,n);else if(typeof e=="object")Array.isArray(e)?u(e):h(e);else throw new TypeError("Expected usable value, not `"+e+"`");return this;function a(s){if(typeof s=="function")l(s,[]);else if(typeof s=="object")if(Array.isArray(s)){const[o,...c]=s;l(o,c)}else h(s);else throw new TypeError("Expected usable value, not `"+s+"`")}function h(s){if(!("plugins"in s)&&!("settings"in s))throw new Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");u(s.plugins),s.settings&&(i.settings=w.default(!0,i.settings,s.settings))}function u(s){let o=-1;if(s!=null)if(Array.isArray(s))for(;++o<s.length;){const c=s[o];a(c)}else throw new TypeError("Expected a list of plugins, not `"+s+"`")}function l(s,o){let c=-1,f=-1;for(;++c<t.length;)if(t[c][0]===s){f=c;break}if(f===-1)t.push([s,...o]);else if(o.length>0){let[p,...d]=o;const E=t[f][1];z.default(E)&&z.default(p)&&(p=w.default(!0,E,p)),t[f]=[s,p,...d]}}}}const q=new m().freeze();function g(r,e){if(typeof e!="function")throw new TypeError("Cannot `"+r+"` without `parser`")}function b(r,e){if(typeof e!="function")throw new TypeError("Cannot `"+r+"` without `compiler`")}function x(r,e){if(e)throw new Error("Cannot call `"+r+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function I(r){if(!z.default(r)||typeof r.type!="string")throw new TypeError("Expected node, got `"+r+"`")}function T(r,e,n){if(!n)throw new Error("`"+r+"` finished async. Use `"+e+"` instead")}function y(r){return j(r)?r:new A.VFile(r)}function j(r){return!!(r&&typeof r=="object"&&"message"in r&&"messages"in r)}function D(r){return typeof r=="string"||L(r)}function L(r){return!!(r&&typeof r=="object"&&"byteLength"in r&&"byteOffset"in r)}exports.Processor=m;exports.unified=q;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bail as P } from "../../../../bail@2.0.2/node_modules/bail/index.es.js";
|
|
2
|
-
import y from "../../../../../../../_virtual/index.
|
|
2
|
+
import y from "../../../../../../../_virtual/index.es5.js";
|
|
3
3
|
import z from "../../../../is-plain-obj@4.1.0/node_modules/is-plain-obj/index.es.js";
|
|
4
4
|
import { CallableInstance as C } from "./callable-instance.es.js";
|
|
5
5
|
import { trough as A } from "../../../../trough@2.2.0/node_modules/trough/lib/index.es.js";
|