markdown-flow-ui 0.2.14 → 0.2.16-dev.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/README.md +7 -0
- package/dist/assets/markdown-flow-ui.css +10 -1
- package/dist/components/ContentRender/CodeBlock.cjs +1 -1
- package/dist/components/ContentRender/CodeBlock.cjs.map +1 -1
- package/dist/components/ContentRender/CodeBlock.d.ts +5 -0
- package/dist/components/ContentRender/CodeBlock.es.js +41 -38
- package/dist/components/ContentRender/CodeBlock.es.js.map +1 -1
- package/dist/components/ContentRender/ContentRender.cjs +2 -2
- package/dist/components/ContentRender/ContentRender.cjs.map +1 -1
- package/dist/components/ContentRender/ContentRender.d.ts +12 -4
- package/dist/components/ContentRender/ContentRender.es.js +436 -306
- package/dist/components/ContentRender/ContentRender.es.js.map +1 -1
- package/dist/components/ContentRender/IframeSandbox.cjs +7 -7
- package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
- package/dist/components/ContentRender/IframeSandbox.d.ts +5 -1
- package/dist/components/ContentRender/IframeSandbox.es.js +311 -266
- package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.cjs +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.cjs.map +1 -1
- package/dist/components/ContentRender/MarkdownFlowInput.d.ts +5 -1
- package/dist/components/ContentRender/MarkdownFlowInput.es.js +37 -32
- package/dist/components/ContentRender/MarkdownFlowInput.es.js.map +1 -1
- package/dist/components/ContentRender/SandboxApp.cjs +2 -2
- package/dist/components/ContentRender/SandboxApp.cjs.map +1 -1
- package/dist/components/ContentRender/SandboxApp.d.ts +5 -1
- package/dist/components/ContentRender/SandboxApp.es.js +108 -103
- package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
- package/dist/components/ContentRender/blackboard-vendor.d.ts +1 -1
- package/dist/components/ContentRender/contentRenderI18n.cjs +1 -1
- package/dist/components/ContentRender/contentRenderI18n.cjs.map +1 -1
- package/dist/components/ContentRender/contentRenderI18n.d.ts +6 -1
- package/dist/components/ContentRender/contentRenderI18n.es.js +5 -56
- package/dist/components/ContentRender/contentRenderI18n.es.js.map +1 -1
- package/dist/components/ContentRender/contentRenderI18n.test.d.ts +1 -0
- package/dist/components/ContentRender/index.cjs +1 -1
- package/dist/components/ContentRender/index.d.ts +11 -11
- package/dist/components/ContentRender/index.es.js +1 -2
- package/dist/components/ContentRender/index.es.js.map +1 -1
- package/dist/components/ContentRender/locales/contentRender.json.cjs +2 -0
- package/dist/components/ContentRender/locales/contentRender.json.cjs.map +1 -0
- package/dist/components/ContentRender/locales/contentRender.json.d.ts +90 -0
- package/dist/components/ContentRender/locales/contentRender.json.es.js +11 -0
- package/dist/components/ContentRender/locales/contentRender.json.es.js.map +1 -0
- package/dist/components/ContentRender/plugins/CustomVariable.cjs +1 -1
- package/dist/components/ContentRender/plugins/CustomVariable.cjs.map +1 -1
- package/dist/components/ContentRender/plugins/CustomVariable.d.ts +7 -3
- package/dist/components/ContentRender/plugins/CustomVariable.es.js +165 -151
- package/dist/components/ContentRender/plugins/CustomVariable.es.js.map +1 -1
- package/dist/components/ContentRender/plugins/MermaidChart.cjs +1 -1
- package/dist/components/ContentRender/plugins/MermaidChart.cjs.map +1 -1
- package/dist/components/ContentRender/plugins/MermaidChart.d.ts +1 -0
- package/dist/components/ContentRender/plugins/MermaidChart.es.js +68 -44
- package/dist/components/ContentRender/plugins/MermaidChart.es.js.map +1 -1
- package/dist/components/ContentRender/typewriterPacing.fixtures.d.ts +14 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.cjs +3 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.cjs.map +1 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.d.ts +27 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.es.js +98 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.es.js.map +1 -0
- package/dist/components/ContentRender/utils/typewriter-pacing.test.d.ts +1 -0
- package/dist/components/MarkdownFlow/MarkdownFlow.cjs +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.cjs.map +1 -1
- package/dist/components/MarkdownFlow/MarkdownFlow.d.ts +12 -4
- package/dist/components/MarkdownFlow/MarkdownFlow.es.js +51 -39
- package/dist/components/MarkdownFlow/MarkdownFlow.es.js.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.d.ts +31 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js +46 -17
- package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs +2 -0
- package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -0
- package/dist/components/MarkdownFlow/ScrollToBottomControl.d.ts +18 -0
- package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js +47 -0
- package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -0
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs +1 -1
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs.map +1 -1
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.d.ts +1 -1
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js +33 -52
- package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js.map +1 -1
- package/dist/components/MarkdownFlow/index.cjs +1 -1
- package/dist/components/MarkdownFlow/index.d.ts +9 -6
- package/dist/components/MarkdownFlow/index.es.js +6 -6
- package/dist/components/MarkdownFlow/index.es.js.map +1 -1
- package/dist/components/MarkdownFlow/useScrollToBottom.cjs +1 -1
- package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
- package/dist/components/MarkdownFlow/useScrollToBottom.d.ts +40 -8
- package/dist/components/MarkdownFlow/useScrollToBottom.es.js +352 -83
- package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +5 -3
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +371 -324
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomDialog.d.ts +10 -0
- package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js +22 -19
- package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +8 -0
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +19 -15
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.d.ts +4 -1
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +99 -93
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/ImageInject.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js +183 -182
- package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +107 -103
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +106 -106
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js +64 -63
- package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js +13 -13
- package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +12 -12
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editor-context.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +290 -0
- package/dist/components/MarkdownFlowEditor/editorI18n.es.js +12 -8
- package/dist/components/MarkdownFlowEditor/editorI18n.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.test.d.ts +1 -0
- package/dist/components/MarkdownFlowEditor/index.d.ts +6 -6
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +2 -0
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs.map +1 -0
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +72 -0
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +140 -0
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -0
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +2 -0
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +118 -114
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +2 -0
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +118 -114
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +2 -0
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs.map +1 -0
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +72 -0
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +140 -0
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -0
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +2 -0
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +70 -66
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +40 -35
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +27 -23
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs +2 -0
- package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs.map +1 -0
- package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.d.ts +7 -0
- package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js +12 -0
- package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js.map +1 -0
- package/dist/components/MarkdownFlowEditor/utils.d.ts +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.cjs +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.d.ts +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.es.js +20 -20
- package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
- package/dist/components/Slide/MobilePlayerSettingsSheet.cjs +1 -1
- package/dist/components/Slide/MobilePlayerSettingsSheet.cjs.map +1 -1
- package/dist/components/Slide/MobilePlayerSettingsSheet.d.ts +7 -2
- package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +61 -57
- package/dist/components/Slide/MobilePlayerSettingsSheet.es.js.map +1 -1
- package/dist/components/Slide/Player.cjs +1 -1
- package/dist/components/Slide/Player.cjs.map +1 -1
- package/dist/components/Slide/Player.d.ts +6 -6
- package/dist/components/Slide/Player.es.js +547 -541
- package/dist/components/Slide/Player.es.js.map +1 -1
- package/dist/components/Slide/Slide.cjs +1 -1
- package/dist/components/Slide/Slide.cjs.map +1 -1
- package/dist/components/Slide/Slide.d.ts +14 -12
- package/dist/components/Slide/Slide.es.js +745 -726
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/SubtitleOverlay.cjs +1 -1
- package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
- package/dist/components/Slide/SubtitleOverlay.d.ts +2 -2
- package/dist/components/Slide/SubtitleOverlay.es.js +17 -17
- package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
- package/dist/components/Slide/diff-utils.d.ts +1 -1
- package/dist/components/Slide/index.d.ts +12 -12
- package/dist/components/Slide/locales/slide.json.cjs +2 -0
- package/dist/components/Slide/locales/slide.json.cjs.map +1 -0
- package/dist/components/Slide/locales/slide.json.d.ts +205 -0
- package/dist/components/Slide/locales/slide.json.es.js +11 -0
- package/dist/components/Slide/locales/slide.json.es.js.map +1 -0
- package/dist/components/Slide/slideI18n.cjs +1 -1
- package/dist/components/Slide/slideI18n.cjs.map +1 -1
- package/dist/components/Slide/slideI18n.d.ts +6 -3
- package/dist/components/Slide/slideI18n.es.js +10 -155
- package/dist/components/Slide/slideI18n.es.js.map +1 -1
- package/dist/components/Slide/useSlide.d.ts +1 -1
- package/dist/components/Slide/utils/appendedMarkerAdvance.d.ts +1 -1
- package/dist/components/Slide/utils/audioSegments.d.ts +1 -1
- package/dist/components/Slide/utils/interactionResolution.d.ts +2 -2
- package/dist/components/Slide/utils/listenModeElementList.d.ts +2 -2
- package/dist/components/Slide/utils/markdownScaling.d.ts +1 -1
- package/dist/components/Slide/utils/playerCustomActions.d.ts +2 -2
- package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs +1 -1
- package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs.map +1 -1
- package/dist/components/Slide/utils/playerKeyboardShortcuts.d.ts +1 -1
- package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js +20 -20
- package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js.map +1 -1
- package/dist/components/Slide/utils/runStreamFixture.d.ts +1 -1
- package/dist/components/Slide/utils/segmentSeek.d.ts +1 -1
- package/dist/components/Slide/utils/silentStepAutoAdvance.d.ts +1 -1
- package/dist/components/Slide/utils/streamingNavigation.d.ts +1 -1
- package/dist/components/Slide/utils/subtitleCue.d.ts +1 -1
- package/dist/components/Slide/utils/subtitleJumpNavigation.d.ts +1 -1
- package/dist/components/index.d.ts +22 -18
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.es.js +12 -13
- package/dist/components/ui/button.es.js.map +1 -1
- package/dist/components/ui/checkbox.cjs +1 -1
- package/dist/components/ui/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox.es.js +35 -35
- package/dist/components/ui/checkbox.es.js.map +1 -1
- package/dist/components/ui/dialog.cjs +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.d.ts +5 -1
- package/dist/components/ui/dialog.es.js +37 -37
- package/dist/components/ui/dialog.es.js.map +1 -1
- package/dist/components/ui/input.cjs +1 -1
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.es.js +4 -4
- package/dist/components/ui/input.es.js.map +1 -1
- package/dist/components/ui/inputGroup/button.cjs +1 -1
- package/dist/components/ui/inputGroup/button.cjs.map +1 -1
- package/dist/components/ui/inputGroup/button.es.js +9 -10
- package/dist/components/ui/inputGroup/button.es.js.map +1 -1
- package/dist/components/ui/inputGroup/input-group.cjs +1 -1
- package/dist/components/ui/inputGroup/input-group.cjs.map +1 -1
- package/dist/components/ui/inputGroup/input-group.d.ts +1 -1
- package/dist/components/ui/inputGroup/input-group.es.js +10 -10
- package/dist/components/ui/inputGroup/input-group.es.js.map +1 -1
- package/dist/components/ui/inputGroup/textarea.cjs +1 -1
- package/dist/components/ui/inputGroup/textarea.cjs.map +1 -1
- package/dist/components/ui/inputGroup/textarea.es.js +2 -2
- package/dist/components/ui/inputGroup/textarea.es.js.map +1 -1
- package/dist/components/ui/loading-overlay-card.cjs +2 -2
- package/dist/components/ui/loading-overlay-card.cjs.map +1 -1
- package/dist/components/ui/loading-overlay-card.es.js +11 -11
- package/dist/components/ui/loading-overlay-card.es.js.map +1 -1
- package/dist/components/ui/popover.cjs +1 -1
- package/dist/components/ui/popover.cjs.map +1 -1
- package/dist/components/ui/popover.es.js +6 -6
- package/dist/components/ui/popover.es.js.map +1 -1
- package/dist/components/ui/tooltip.cjs +1 -1
- package/dist/components/ui/tooltip.cjs.map +1 -1
- package/dist/components/ui/tooltip.es.js +16 -16
- package/dist/components/ui/tooltip.es.js.map +1 -1
- package/dist/editor.d.ts +2 -2
- package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.es.js +22 -19
- package/dist/index.es.js.map +1 -1
- package/dist/lib/locale.cjs +1 -1
- package/dist/lib/locale.cjs.map +1 -1
- package/dist/lib/locale.d.ts +5 -1
- package/dist/lib/locale.es.js +26 -13
- package/dist/lib/locale.es.js.map +1 -1
- package/dist/lib/locale.test.d.ts +1 -0
- package/dist/lib/useDetachedLanguage.cjs +2 -0
- package/dist/lib/useDetachedLanguage.cjs.map +1 -0
- package/dist/lib/useDetachedLanguage.d.ts +3 -0
- package/dist/lib/useDetachedLanguage.es.js +25 -0
- package/dist/lib/useDetachedLanguage.es.js.map +1 -0
- package/dist/lib/useResolvedDirection.cjs +2 -0
- package/dist/lib/useResolvedDirection.cjs.map +1 -0
- package/dist/lib/useResolvedDirection.d.ts +6 -0
- package/dist/lib/useResolvedDirection.es.js +37 -0
- package/dist/lib/useResolvedDirection.es.js.map +1 -0
- package/dist/markdown-flow-ui-lib.css +1 -1
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js +6 -6
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-context/dist/index.es.js +21 -21
- package/dist/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs +2 -2
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js +100 -100
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +38 -38
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js +9 -9
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +95 -95
- package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js +48 -48
- package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js +6 -6
- package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js +9 -9
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js +17 -17
- package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js +100 -100
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js +6 -6
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js.map +1 -1
- package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs +1 -1
- package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs.map +1 -1
- package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js +27 -27
- package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js.map +1 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.cjs → chevrons-down.cjs} +2 -2
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.cjs.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.es.js → chevrons-down.es.js} +6 -3
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.es.js.map +1 -0
- package/dist/node_modules/react-markdown/lib/index.cjs +1 -1
- package/dist/node_modules/react-markdown/lib/index.cjs.map +1 -1
- package/dist/node_modules/react-markdown/lib/index.es.js +39 -39
- package/dist/node_modules/react-markdown/lib/index.es.js.map +1 -1
- package/dist/renderer.cjs +1 -1
- package/dist/renderer.d.ts +18 -17
- package/dist/renderer.es.js +20 -17
- package/dist/renderer.es.js.map +1 -1
- package/dist/scroll.cjs +1 -1
- package/dist/scroll.d.ts +6 -3
- package/dist/scroll.es.js +4 -2
- package/dist/scroll.es.js.map +1 -1
- package/dist/slide.d.ts +3 -3
- package/package.json +5 -2
- package/dist/_virtual/jsx-runtime.cjs +0 -2
- package/dist/_virtual/jsx-runtime.cjs.map +0 -1
- package/dist/_virtual/jsx-runtime.es.js +0 -6
- package/dist/_virtual/jsx-runtime.es.js.map +0 -1
- package/dist/_virtual/jsx-runtime.es2.js +0 -5
- package/dist/_virtual/jsx-runtime.es2.js.map +0 -1
- package/dist/_virtual/jsx-runtime2.cjs +0 -2
- package/dist/_virtual/jsx-runtime2.cjs.map +0 -1
- package/dist/_virtual/react-jsx-runtime.development.cjs +0 -2
- package/dist/_virtual/react-jsx-runtime.development.cjs.map +0 -1
- package/dist/_virtual/react-jsx-runtime.development.es.js +0 -5
- package/dist/_virtual/react-jsx-runtime.development.es.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.production.cjs +0 -2
- package/dist/_virtual/react-jsx-runtime.production.cjs.map +0 -1
- package/dist/_virtual/react-jsx-runtime.production.es.js +0 -5
- package/dist/_virtual/react-jsx-runtime.production.es.js.map +0 -1
- package/dist/lib/localeTextMap.cjs +0 -2
- package/dist/lib/localeTextMap.cjs.map +0 -1
- package/dist/lib/localeTextMap.es.js +0 -5
- package/dist/lib/localeTextMap.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.es.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +0 -24
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +0 -409
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs +0 -10
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js +0 -36
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js.map +0 -1
- package/dist/node_modules/react/jsx-runtime.cjs +0 -2
- package/dist/node_modules/react/jsx-runtime.cjs.map +0 -1
- package/dist/node_modules/react/jsx-runtime.es.js +0 -11
- package/dist/node_modules/react/jsx-runtime.es.js.map +0 -1
|
@@ -1,70 +1,94 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { CJK_SAFE_SANS_FONT_FAMILY as
|
|
5
|
-
const
|
|
1
|
+
import { jsxs as m, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import S, { useState as l, useEffect as _ } from "react";
|
|
3
|
+
import c from "../../../node_modules/mermaid/dist/mermaid.core.es.js";
|
|
4
|
+
import { CJK_SAFE_SANS_FONT_FAMILY as p } from "../cjkFontFamily.es.js";
|
|
5
|
+
const d = {
|
|
6
6
|
emptyChart: "Empty chart content",
|
|
7
7
|
loading: "Loading Mermaid chart...",
|
|
8
|
+
error: "Unable to display the Mermaid chart",
|
|
8
9
|
badge: "mermaid"
|
|
9
|
-
},
|
|
10
|
-
chart:
|
|
11
|
-
messages:
|
|
12
|
-
frozen:
|
|
10
|
+
}, f = (e) => e.trim().replace(/^_streaming\s*/i, ""), v = ({
|
|
11
|
+
chart: e,
|
|
12
|
+
messages: r,
|
|
13
|
+
frozen: g
|
|
13
14
|
}) => {
|
|
14
|
-
const [
|
|
15
|
+
const [h, s] = l(""), [y, o] = l(""), [u, b] = l(!1), C = async () => {
|
|
15
16
|
try {
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
18
|
-
|
|
17
|
+
const a = f(e);
|
|
18
|
+
if (!a) {
|
|
19
|
+
o(""), s("");
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
c.initialize({
|
|
22
23
|
startOnLoad: !1,
|
|
23
24
|
theme: "default",
|
|
24
25
|
securityLevel: "loose",
|
|
25
|
-
fontFamily:
|
|
26
|
+
fontFamily: p,
|
|
26
27
|
themeVariables: {
|
|
27
|
-
fontFamily:
|
|
28
|
+
fontFamily: p
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
31
|
try {
|
|
31
|
-
await
|
|
32
|
-
} catch (
|
|
33
|
-
const
|
|
34
|
-
|
|
32
|
+
await c.parse(a);
|
|
33
|
+
} catch (x) {
|
|
34
|
+
const N = String(x).toLowerCase();
|
|
35
|
+
o(N), s(""), b(!0);
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
37
|
-
const
|
|
38
|
-
s(
|
|
39
|
-
} catch (
|
|
40
|
-
const
|
|
41
|
-
n
|
|
38
|
+
const n = `mermaid-${Date.now()}`, { svg: w } = await c.render(n, a);
|
|
39
|
+
s(w), o("");
|
|
40
|
+
} catch (a) {
|
|
41
|
+
const n = String(a).toLowerCase();
|
|
42
|
+
o(n), s("");
|
|
42
43
|
}
|
|
43
44
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
_(() => {
|
|
46
|
+
g && u || C();
|
|
47
|
+
}, [e, g]);
|
|
48
|
+
const i = f(e);
|
|
49
|
+
if (y || !i) {
|
|
50
|
+
const a = i || e.trim();
|
|
51
|
+
return /* @__PURE__ */ m(
|
|
52
|
+
"div",
|
|
53
|
+
{
|
|
54
|
+
className: "my-4 border border-gray-200 rounded-lg bg-gray-50",
|
|
55
|
+
"data-mermaid-error": y || void 0,
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ m("div", { className: "px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2", children: [
|
|
58
|
+
/* @__PURE__ */ t("span", { className: "text-yellow-600", children: "⚠️" }),
|
|
59
|
+
/* @__PURE__ */ t(
|
|
60
|
+
"span",
|
|
61
|
+
{
|
|
62
|
+
dir: "auto",
|
|
63
|
+
className: "text-sm text-yellow-700 font-medium whitespace-pre-wrap",
|
|
64
|
+
children: i ? r?.error ?? d.error : r?.emptyChart ?? d.emptyChart
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ m("div", { className: "relative", children: [
|
|
69
|
+
/* @__PURE__ */ t(
|
|
70
|
+
"pre",
|
|
71
|
+
{
|
|
72
|
+
dir: "ltr",
|
|
73
|
+
className: "p-4 text-sm font-mono text-yellow-800 text-start [unicode-bidi:isolate]",
|
|
74
|
+
children: /* @__PURE__ */ t("code", { children: a })
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
/* @__PURE__ */ t("div", { className: "absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200", children: r?.badge ?? d.badge })
|
|
78
|
+
] })
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
);
|
|
58
82
|
}
|
|
59
|
-
return /* @__PURE__ */
|
|
83
|
+
return /* @__PURE__ */ t("div", { className: "my-4 text-center overflow-auto content-render-mermaid", children: h ? /* @__PURE__ */ t(
|
|
60
84
|
"div",
|
|
61
85
|
{
|
|
62
86
|
className: "content-render-mermaid-inner",
|
|
63
|
-
dangerouslySetInnerHTML: { __html:
|
|
87
|
+
dangerouslySetInnerHTML: { __html: h }
|
|
64
88
|
}
|
|
65
|
-
) : /* @__PURE__ */
|
|
66
|
-
},
|
|
89
|
+
) : /* @__PURE__ */ t("div", { className: "py-8 text-gray-500 italic", children: r?.loading ?? d.loading }) });
|
|
90
|
+
}, A = S.memo(v, (e, r) => e.chart === r.chart && e.frozen === r.frozen && e.messages?.emptyChart === r.messages?.emptyChart && e.messages?.loading === r.messages?.loading && e.messages?.error === r.messages?.error && e.messages?.badge === r.messages?.badge);
|
|
67
91
|
export {
|
|
68
|
-
|
|
92
|
+
A as default
|
|
69
93
|
};
|
|
70
94
|
//# sourceMappingURL=MermaidChart.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MermaidChart.es.js","sources":["../../../../src/components/ContentRender/plugins/MermaidChart.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport mermaid from \"mermaid\";\nimport { CJK_SAFE_SANS_FONT_FAMILY } from \"../cjkFontFamily\";\n\nexport interface MermaidChartProps {\n chart: string;\n messages?: {\n emptyChart?: string;\n loading?: string;\n badge?: string;\n };\n frozen?: boolean;\n}\n\nconst DEFAULT_MESSAGES = {\n emptyChart: \"Empty chart content\",\n loading: \"Loading Mermaid chart...\",\n badge: \"mermaid\",\n} as const;\n\nconst preprocessChart = (raw: string) =>\n raw.trim().replace(/^_streaming\\s*/i, \"\");\n\nconst MermaidChart: React.FC<MermaidChartProps> = ({\n chart,\n messages,\n frozen,\n}) => {\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [hasRendered, setHasRendered] = useState(false);\n\n const renderChart = async () => {\n try {\n const cleaned = preprocessChart(chart);\n\n if (!cleaned) {\n setError(
|
|
1
|
+
{"version":3,"file":"MermaidChart.es.js","sources":["../../../../src/components/ContentRender/plugins/MermaidChart.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport mermaid from \"mermaid\";\nimport { CJK_SAFE_SANS_FONT_FAMILY } from \"../cjkFontFamily\";\n\nexport interface MermaidChartProps {\n chart: string;\n messages?: {\n emptyChart?: string;\n loading?: string;\n error?: string;\n badge?: string;\n };\n frozen?: boolean;\n}\n\nconst DEFAULT_MESSAGES = {\n emptyChart: \"Empty chart content\",\n loading: \"Loading Mermaid chart...\",\n error: \"Unable to display the Mermaid chart\",\n badge: \"mermaid\",\n} as const;\n\nconst preprocessChart = (raw: string) =>\n raw.trim().replace(/^_streaming\\s*/i, \"\");\n\nconst MermaidChart: React.FC<MermaidChartProps> = ({\n chart,\n messages,\n frozen,\n}) => {\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [hasRendered, setHasRendered] = useState(false);\n\n const renderChart = async () => {\n try {\n const cleaned = preprocessChart(chart);\n\n if (!cleaned) {\n setError(\"\");\n setSvg(\"\");\n return;\n }\n\n // Initialize Mermaid with an explicit CJK-safe font stack.\n // Using a concrete stack avoids clipping caused by `inherit` resolving to\n // Storybook's default font during off-screen rendering.\n mermaid.initialize({\n startOnLoad: false,\n theme: \"default\",\n securityLevel: \"loose\",\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n themeVariables: {\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n },\n });\n\n // use mermaid.parse to check for errors\n try {\n await mermaid.parse(cleaned);\n } catch (parseErr) {\n const parseErrorMsg = String(parseErr).toLowerCase();\n setError(parseErrorMsg);\n setSvg(\"\");\n // once render success, setHasRendered flag\n setHasRendered(true);\n return;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Render the chart\n const { svg: renderedSvg } = await mermaid.render(id, cleaned);\n setSvg(renderedSvg);\n setError(\"\");\n } catch (err) {\n const errorMsg = String(err).toLowerCase();\n setError(errorMsg);\n setSvg(\"\");\n }\n };\n\n useEffect(() => {\n if (frozen && hasRendered) return; // 核心:被冻结就不渲染\n renderChart();\n }, [chart, frozen]);\n\n const cleanedChart = preprocessChart(chart);\n if (error || !cleanedChart) {\n const displayChart = cleanedChart || chart.trim();\n return (\n <div\n className=\"my-4 border border-gray-200 rounded-lg bg-gray-50\"\n data-mermaid-error={error || undefined}\n >\n <div className=\"px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2\">\n <span className=\"text-yellow-600\">⚠️</span>\n <span\n dir=\"auto\"\n className=\"text-sm text-yellow-700 font-medium whitespace-pre-wrap\"\n >\n {cleanedChart\n ? (messages?.error ?? DEFAULT_MESSAGES.error)\n : (messages?.emptyChart ?? DEFAULT_MESSAGES.emptyChart)}\n </span>\n </div>\n <div className=\"relative\">\n <pre\n dir=\"ltr\"\n className=\"p-4 text-sm font-mono text-yellow-800 text-start [unicode-bidi:isolate]\"\n >\n <code>{displayChart}</code>\n </pre>\n <div className=\"absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200\">\n {messages?.badge ?? DEFAULT_MESSAGES.badge}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"my-4 text-center overflow-auto content-render-mermaid\">\n {svg ? (\n <div\n className=\"content-render-mermaid-inner\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n ) : (\n <div className=\"py-8 text-gray-500 italic\">\n {messages?.loading ?? DEFAULT_MESSAGES.loading}\n </div>\n )}\n </div>\n );\n};\n\nexport default React.memo(MermaidChart, (prev, next) => {\n return (\n prev.chart === next.chart &&\n prev.frozen === next.frozen &&\n prev.messages?.emptyChart === next.messages?.emptyChart &&\n prev.messages?.loading === next.messages?.loading &&\n prev.messages?.error === next.messages?.error &&\n prev.messages?.badge === next.messages?.badge\n );\n});\n"],"names":["DEFAULT_MESSAGES","preprocessChart","raw","MermaidChart","chart","messages","frozen","svg","setSvg","useState","error","setError","hasRendered","setHasRendered","renderChart","cleaned","mermaid","CJK_SAFE_SANS_FONT_FAMILY","parseErr","parseErrorMsg","id","renderedSvg","err","errorMsg","useEffect","cleanedChart","displayChart","jsxs","jsx","MermaidChart$1","React","prev","next"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MarkdownFlowLocale } from '../../lib/locale.js';
|
|
2
|
+
export declare const TYPEWRITER_PACING_FIXTURE_LENGTHS: readonly ["short", "medium", "long"];
|
|
3
|
+
export type TypewriterPacingFixtureLength = (typeof TYPEWRITER_PACING_FIXTURE_LENGTHS)[number];
|
|
4
|
+
export declare const TYPEWRITER_PACING_LANGUAGE_CODES: readonly ["zh", "en", "fr", "ar", "th"];
|
|
5
|
+
export type TypewriterPacingLanguageCode = (typeof TYPEWRITER_PACING_LANGUAGE_CODES)[number];
|
|
6
|
+
export interface TypewriterPacingLanguage {
|
|
7
|
+
code: TypewriterPacingLanguageCode;
|
|
8
|
+
label: string;
|
|
9
|
+
locale: MarkdownFlowLocale;
|
|
10
|
+
lang: string;
|
|
11
|
+
dir: "ltr" | "rtl";
|
|
12
|
+
}
|
|
13
|
+
export declare const TYPEWRITER_PACING_LANGUAGES: readonly TypewriterPacingLanguage[];
|
|
14
|
+
export declare const TYPEWRITER_PACING_FIXTURES: Record<TypewriterPacingFixtureLength, Record<TypewriterPacingLanguageCode, string>>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=200,i={han:100,latin:28,arabic:34,thai:42,otherLetterOrNumber:35,punctuationOrEmoji:100,whitespace:0},R="",h="\r",w=`
|
|
2
|
+
`,g=new RegExp("\\p{Grapheme_Extend}","u"),N=new RegExp("\\p{Mark}","u"),C=new RegExp("\\p{Spacing_Mark}","u"),y=/^\s+$/u,f=new RegExp("\\p{Script_Extensions=Han}","u"),I=new RegExp("\\p{Script_Extensions=Latin}","u"),d=new RegExp("\\p{Script_Extensions=Arabic}","u"),k=new RegExp("\\p{Script_Extensions=Thai}","u"),S=/[\p{Letter}\p{Number}]/u,P=/[\p{Punctuation}\p{Symbol}]/u,O=new RegExp("\\p{Extended_Pictographic}","u");let c;const b=()=>{if(c!==void 0)return c;const e=typeof Intl>"u"?void 0:Intl.Segmenter;return c=e?new e(void 0,{granularity:"grapheme"}):null,c},a=(e,n,r)=>{const t=e.codePointAt(0);return t!==void 0&&t>=n&&t<=r},T=e=>a(e,127462,127487),G=e=>a(e,65024,65039)||a(e,917760,917999),u=e=>a(e,127995,127999),M=e=>a(e,917536,917631),x=e=>g.test(e)||N.test(e)||C.test(e)||G(e)||u(e)||M(e)||e==="⃣"||e==="ำ",E=e=>{const n=Array.from(e),r=[];for(let t=0;t<n.length;t+=1){let s=n[t];if(s===h&&n[t+1]===w){s+=n[t+1],t+=1,r.push(s);continue}if(T(s)&&T(n[t+1]||"")){s+=n[t+1],t+=1,r.push(s);continue}for(;t+1<n.length;){const o=n[t+1];if(x(o)){s+=o,t+=1;continue}if(o===R){s+=o,t+=1,t+1<n.length&&(s+=n[t+1],t+=1);continue}break}r.push(s)}return r},p=(e,n)=>{const r=b();return r?Array.from(r.segment(e),({segment:t})=>t):E(e)},H=e=>O.test(e)||Array.from(e).some(n=>T(n)||u(n)||n==="⃣"),A=e=>y.test(e)?i.whitespace:H(e)||P.test(e)?i.punctuationOrEmoji:f.test(e)?i.han:I.test(e)?i.latin:d.test(e)?i.arabic:k.test(e)?i.thai:S.test(e)?i.otherLetterOrNumber:i.punctuationOrEmoji,l=(e,n)=>p(e).map(r=>({text:r,cost:A(r)})),_=(e,n)=>({tokens:l(e),head:0}),L=e=>e.head>=e.tokens.length,Q=(e,n,r)=>{if(!n)return e;const t=e.tokens.slice(e.head);if(t.length===0)return _(n);const s=t[t.length-1],o=l(`${s.text}${n}`);return{tokens:[...t.slice(0,-1),...o],head:0}},j=(e,n)=>{let r=e.head,t=Math.max(0,n),s="";for(;r<e.tokens.length;){const o=e.tokens[r];if(o.cost>t)break;s+=o.text,t-=o.cost,r+=1}return{chunk:s,queue:{tokens:e.tokens,head:r},remainingBudget:t}};exports.CONTENT_AWARE_TYPEWRITER_TICK_BUDGET=m;exports.appendContentAwareTypewriterQueue=Q;exports.consumeContentAwareTypewriterQueue=j;exports.createContentAwareTypewriterQueue=_;exports.fallbackSegmentTypewriterGraphemes=E;exports.getContentAwareTypewriterCost=A;exports.isContentAwareTypewriterQueueEmpty=L;exports.segmentTypewriterGraphemes=p;
|
|
3
|
+
//# sourceMappingURL=typewriter-pacing.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typewriter-pacing.cjs","sources":["../../../../src/components/ContentRender/utils/typewriter-pacing.ts"],"sourcesContent":["export const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;\n\nconst TYPEWRITER_GRAPHEME_COST = {\n han: 100,\n latin: 28,\n arabic: 34,\n thai: 42,\n otherLetterOrNumber: 35,\n punctuationOrEmoji: 100,\n whitespace: 0,\n} as const;\n\nconst ZERO_WIDTH_JOINER = \"\\u200d\";\nconst CARRIAGE_RETURN = \"\\r\";\nconst LINE_FEED = \"\\n\";\n\nconst GRAPHEME_EXTEND_PATTERN = /\\p{Grapheme_Extend}/u;\nconst MARK_PATTERN = /\\p{Mark}/u;\nconst SPACING_MARK_PATTERN = /\\p{Spacing_Mark}/u;\nconst WHITESPACE_PATTERN = /^\\s+$/u;\nconst HAN_PATTERN = /\\p{Script_Extensions=Han}/u;\nconst LATIN_PATTERN = /\\p{Script_Extensions=Latin}/u;\nconst ARABIC_PATTERN = /\\p{Script_Extensions=Arabic}/u;\nconst THAI_PATTERN = /\\p{Script_Extensions=Thai}/u;\nconst LETTER_OR_NUMBER_PATTERN = /[\\p{Letter}\\p{Number}]/u;\nconst PUNCTUATION_OR_SYMBOL_PATTERN = /[\\p{Punctuation}\\p{Symbol}]/u;\nconst EXTENDED_PICTOGRAPHIC_PATTERN = /\\p{Extended_Pictographic}/u;\n\nexport interface TypewriterGraphemeSegmenter {\n segment(input: string): Iterable<{ segment: string }>;\n}\n\nexport interface ContentAwareTypewriterToken {\n text: string;\n cost: number;\n}\n\nexport interface ContentAwareTypewriterQueue {\n tokens: readonly ContentAwareTypewriterToken[];\n head: number;\n}\n\nexport interface ContentAwareTypewriterConsumption {\n chunk: string;\n queue: ContentAwareTypewriterQueue;\n remainingBudget: number;\n}\n\nlet cachedIntlSegmenter: TypewriterGraphemeSegmenter | null | undefined;\n\nconst getIntlSegmenter = (): TypewriterGraphemeSegmenter | null => {\n if (cachedIntlSegmenter !== undefined) {\n return cachedIntlSegmenter;\n }\n\n const Segmenter =\n typeof Intl === \"undefined\"\n ? undefined\n : (Intl as typeof Intl & { Segmenter?: typeof Intl.Segmenter }).Segmenter;\n\n cachedIntlSegmenter = Segmenter\n ? new Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n return cachedIntlSegmenter;\n};\n\nconst isCodePointInRange = (codePoint: string, start: number, end: number) => {\n const value = codePoint.codePointAt(0);\n return value !== undefined && value >= start && value <= end;\n};\n\nconst isRegionalIndicator = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f1e6, 0x1f1ff);\n\nconst isVariationSelector = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xfe00, 0xfe0f) ||\n isCodePointInRange(codePoint, 0xe0100, 0xe01ef);\n\nconst isEmojiModifier = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f3fb, 0x1f3ff);\n\nconst isEmojiTag = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xe0020, 0xe007f);\n\nconst isFallbackExtend = (codePoint: string) =>\n GRAPHEME_EXTEND_PATTERN.test(codePoint) ||\n MARK_PATTERN.test(codePoint) ||\n SPACING_MARK_PATTERN.test(codePoint) ||\n isVariationSelector(codePoint) ||\n isEmojiModifier(codePoint) ||\n isEmojiTag(codePoint) ||\n codePoint === \"\\u20e3\" ||\n codePoint === \"\\u0e33\";\n\nexport const fallbackSegmentTypewriterGraphemes = (value: string) => {\n const codePoints = Array.from(value);\n const graphemes: string[] = [];\n\n for (let index = 0; index < codePoints.length; index += 1) {\n let grapheme = codePoints[index];\n\n if (grapheme === CARRIAGE_RETURN && codePoints[index + 1] === LINE_FEED) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n if (\n isRegionalIndicator(grapheme) &&\n isRegionalIndicator(codePoints[index + 1] || \"\")\n ) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n while (index + 1 < codePoints.length) {\n const nextCodePoint = codePoints[index + 1];\n\n if (isFallbackExtend(nextCodePoint)) {\n grapheme += nextCodePoint;\n index += 1;\n continue;\n }\n\n if (nextCodePoint === ZERO_WIDTH_JOINER) {\n grapheme += nextCodePoint;\n index += 1;\n\n if (index + 1 < codePoints.length) {\n grapheme += codePoints[index + 1];\n index += 1;\n }\n\n continue;\n }\n\n break;\n }\n\n graphemes.push(grapheme);\n }\n\n return graphemes;\n};\n\nexport const segmentTypewriterGraphemes = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n const resolvedSegmenter =\n segmenter === undefined ? getIntlSegmenter() : segmenter;\n\n if (!resolvedSegmenter) {\n return fallbackSegmentTypewriterGraphemes(value);\n }\n\n return Array.from(resolvedSegmenter.segment(value), ({ segment }) => segment);\n};\n\nconst isEmojiGrapheme = (grapheme: string) =>\n EXTENDED_PICTOGRAPHIC_PATTERN.test(grapheme) ||\n Array.from(grapheme).some(\n (codePoint) =>\n isRegionalIndicator(codePoint) ||\n isEmojiModifier(codePoint) ||\n codePoint === \"\\u20e3\"\n );\n\nexport const getContentAwareTypewriterCost = (grapheme: string) => {\n if (WHITESPACE_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.whitespace;\n }\n\n if (\n isEmojiGrapheme(grapheme) ||\n PUNCTUATION_OR_SYMBOL_PATTERN.test(grapheme)\n ) {\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n }\n\n if (HAN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.han;\n }\n\n if (LATIN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.latin;\n }\n\n if (ARABIC_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.arabic;\n }\n\n if (THAI_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.thai;\n }\n\n if (LETTER_OR_NUMBER_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.otherLetterOrNumber;\n }\n\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n};\n\nconst tokenizeContentAwareTypewriterText = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) =>\n segmentTypewriterGraphemes(value, segmenter).map((text) => ({\n text,\n cost: getContentAwareTypewriterCost(text),\n }));\n\nexport const createContentAwareTypewriterQueue = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => ({\n tokens: tokenizeContentAwareTypewriterText(value, segmenter),\n head: 0,\n});\n\nexport const isContentAwareTypewriterQueueEmpty = (\n queue: ContentAwareTypewriterQueue\n) => queue.head >= queue.tokens.length;\n\nexport const appendContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n suffix: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => {\n if (!suffix) {\n return queue;\n }\n\n const remainingTokens = queue.tokens.slice(queue.head);\n if (remainingTokens.length === 0) {\n return createContentAwareTypewriterQueue(suffix, segmenter);\n }\n\n const lastToken = remainingTokens[remainingTokens.length - 1];\n const repairedTail = tokenizeContentAwareTypewriterText(\n `${lastToken.text}${suffix}`,\n segmenter\n );\n\n return {\n tokens: [...remainingTokens.slice(0, -1), ...repairedTail],\n head: 0,\n };\n};\n\nexport const consumeContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n availableBudget: number\n): ContentAwareTypewriterConsumption => {\n let head = queue.head;\n let remainingBudget = Math.max(0, availableBudget);\n let chunk = \"\";\n\n while (head < queue.tokens.length) {\n const token = queue.tokens[head];\n if (token.cost > remainingBudget) {\n break;\n }\n\n chunk += token.text;\n remainingBudget -= token.cost;\n head += 1;\n }\n\n return {\n chunk,\n queue: {\n tokens: queue.tokens,\n head,\n },\n remainingBudget,\n };\n};\n\nexport const getContentAwareTypewriterTickCount = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n let queue = createContentAwareTypewriterQueue(value, segmenter);\n let budget = 0;\n let ticks = 0;\n\n while (!isContentAwareTypewriterQueueEmpty(queue)) {\n budget += CONTENT_AWARE_TYPEWRITER_TICK_BUDGET;\n const result = consumeContentAwareTypewriterQueue(queue, budget);\n\n if (!result.chunk) {\n throw new Error(\"Typewriter pacing could not consume the next grapheme\");\n }\n\n queue = result.queue;\n budget = result.remainingBudget;\n ticks += 1;\n }\n\n return ticks;\n};\n"],"names":["CONTENT_AWARE_TYPEWRITER_TICK_BUDGET","TYPEWRITER_GRAPHEME_COST","ZERO_WIDTH_JOINER","CARRIAGE_RETURN","LINE_FEED","GRAPHEME_EXTEND_PATTERN","MARK_PATTERN","SPACING_MARK_PATTERN","WHITESPACE_PATTERN","HAN_PATTERN","LATIN_PATTERN","ARABIC_PATTERN","THAI_PATTERN","LETTER_OR_NUMBER_PATTERN","PUNCTUATION_OR_SYMBOL_PATTERN","EXTENDED_PICTOGRAPHIC_PATTERN","cachedIntlSegmenter","getIntlSegmenter","Segmenter","isCodePointInRange","codePoint","start","end","value","isRegionalIndicator","isVariationSelector","isEmojiModifier","isEmojiTag","isFallbackExtend","fallbackSegmentTypewriterGraphemes","codePoints","graphemes","index","grapheme","nextCodePoint","segmentTypewriterGraphemes","segmenter","resolvedSegmenter","segment","isEmojiGrapheme","getContentAwareTypewriterCost","tokenizeContentAwareTypewriterText","text","createContentAwareTypewriterQueue","isContentAwareTypewriterQueueEmpty","queue","appendContentAwareTypewriterQueue","suffix","remainingTokens","lastToken","repairedTail","consumeContentAwareTypewriterQueue","availableBudget","head","remainingBudget","chunk","token"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;
|
|
2
|
+
export interface TypewriterGraphemeSegmenter {
|
|
3
|
+
segment(input: string): Iterable<{
|
|
4
|
+
segment: string;
|
|
5
|
+
}>;
|
|
6
|
+
}
|
|
7
|
+
export interface ContentAwareTypewriterToken {
|
|
8
|
+
text: string;
|
|
9
|
+
cost: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ContentAwareTypewriterQueue {
|
|
12
|
+
tokens: readonly ContentAwareTypewriterToken[];
|
|
13
|
+
head: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ContentAwareTypewriterConsumption {
|
|
16
|
+
chunk: string;
|
|
17
|
+
queue: ContentAwareTypewriterQueue;
|
|
18
|
+
remainingBudget: number;
|
|
19
|
+
}
|
|
20
|
+
export declare const fallbackSegmentTypewriterGraphemes: (value: string) => string[];
|
|
21
|
+
export declare const segmentTypewriterGraphemes: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => string[];
|
|
22
|
+
export declare const getContentAwareTypewriterCost: (grapheme: string) => 0 | 100 | 28 | 34 | 42 | 35;
|
|
23
|
+
export declare const createContentAwareTypewriterQueue: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => ContentAwareTypewriterQueue;
|
|
24
|
+
export declare const isContentAwareTypewriterQueueEmpty: (queue: ContentAwareTypewriterQueue) => boolean;
|
|
25
|
+
export declare const appendContentAwareTypewriterQueue: (queue: ContentAwareTypewriterQueue, suffix: string, segmenter?: TypewriterGraphemeSegmenter | null) => ContentAwareTypewriterQueue;
|
|
26
|
+
export declare const consumeContentAwareTypewriterQueue: (queue: ContentAwareTypewriterQueue, availableBudget: number) => ContentAwareTypewriterConsumption;
|
|
27
|
+
export declare const getContentAwareTypewriterTickCount: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => number;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
const H = 200, i = {
|
|
2
|
+
han: 100,
|
|
3
|
+
latin: 28,
|
|
4
|
+
arabic: 34,
|
|
5
|
+
thai: 42,
|
|
6
|
+
otherLetterOrNumber: 35,
|
|
7
|
+
punctuationOrEmoji: 100,
|
|
8
|
+
whitespace: 0
|
|
9
|
+
}, p = "", A = "\r", l = `
|
|
10
|
+
`, _ = new RegExp("\\p{Grapheme_Extend}", "u"), R = new RegExp("\\p{Mark}", "u"), m = new RegExp("\\p{Spacing_Mark}", "u"), h = /^\s+$/u, N = new RegExp("\\p{Script_Extensions=Han}", "u"), g = new RegExp("\\p{Script_Extensions=Latin}", "u"), f = new RegExp("\\p{Script_Extensions=Arabic}", "u"), I = new RegExp("\\p{Script_Extensions=Thai}", "u"), k = /[\p{Letter}\p{Number}]/u, w = /[\p{Punctuation}\p{Symbol}]/u, C = new RegExp("\\p{Extended_Pictographic}", "u");
|
|
11
|
+
let a;
|
|
12
|
+
const d = () => {
|
|
13
|
+
if (a !== void 0)
|
|
14
|
+
return a;
|
|
15
|
+
const t = typeof Intl > "u" ? void 0 : Intl.Segmenter;
|
|
16
|
+
return a = t ? new t(void 0, { granularity: "grapheme" }) : null, a;
|
|
17
|
+
}, c = (t, n, r) => {
|
|
18
|
+
const e = t.codePointAt(0);
|
|
19
|
+
return e !== void 0 && e >= n && e <= r;
|
|
20
|
+
}, T = (t) => c(t, 127462, 127487), S = (t) => c(t, 65024, 65039) || c(t, 917760, 917999), E = (t) => c(t, 127995, 127999), P = (t) => c(t, 917536, 917631), y = (t) => _.test(t) || R.test(t) || m.test(t) || S(t) || E(t) || P(t) || t === "⃣" || t === "ำ", O = (t) => {
|
|
21
|
+
const n = Array.from(t), r = [];
|
|
22
|
+
for (let e = 0; e < n.length; e += 1) {
|
|
23
|
+
let s = n[e];
|
|
24
|
+
if (s === A && n[e + 1] === l) {
|
|
25
|
+
s += n[e + 1], e += 1, r.push(s);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (T(s) && T(n[e + 1] || "")) {
|
|
29
|
+
s += n[e + 1], e += 1, r.push(s);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
for (; e + 1 < n.length; ) {
|
|
33
|
+
const o = n[e + 1];
|
|
34
|
+
if (y(o)) {
|
|
35
|
+
s += o, e += 1;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (o === p) {
|
|
39
|
+
s += o, e += 1, e + 1 < n.length && (s += n[e + 1], e += 1);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
r.push(s);
|
|
45
|
+
}
|
|
46
|
+
return r;
|
|
47
|
+
}, b = (t, n) => {
|
|
48
|
+
const r = d();
|
|
49
|
+
return r ? Array.from(r.segment(t), ({ segment: e }) => e) : O(t);
|
|
50
|
+
}, x = (t) => C.test(t) || Array.from(t).some(
|
|
51
|
+
(n) => T(n) || E(n) || n === "⃣"
|
|
52
|
+
), G = (t) => h.test(t) ? i.whitespace : x(t) || w.test(t) ? i.punctuationOrEmoji : N.test(t) ? i.han : g.test(t) ? i.latin : f.test(t) ? i.arabic : I.test(t) ? i.thai : k.test(t) ? i.otherLetterOrNumber : i.punctuationOrEmoji, u = (t, n) => b(t).map((r) => ({
|
|
53
|
+
text: r,
|
|
54
|
+
cost: G(r)
|
|
55
|
+
})), M = (t, n) => ({
|
|
56
|
+
tokens: u(t),
|
|
57
|
+
head: 0
|
|
58
|
+
}), L = (t) => t.head >= t.tokens.length, j = (t, n, r) => {
|
|
59
|
+
if (!n)
|
|
60
|
+
return t;
|
|
61
|
+
const e = t.tokens.slice(t.head);
|
|
62
|
+
if (e.length === 0)
|
|
63
|
+
return M(n);
|
|
64
|
+
const s = e[e.length - 1], o = u(
|
|
65
|
+
`${s.text}${n}`
|
|
66
|
+
);
|
|
67
|
+
return {
|
|
68
|
+
tokens: [...e.slice(0, -1), ...o],
|
|
69
|
+
head: 0
|
|
70
|
+
};
|
|
71
|
+
}, D = (t, n) => {
|
|
72
|
+
let r = t.head, e = Math.max(0, n), s = "";
|
|
73
|
+
for (; r < t.tokens.length; ) {
|
|
74
|
+
const o = t.tokens[r];
|
|
75
|
+
if (o.cost > e)
|
|
76
|
+
break;
|
|
77
|
+
s += o.text, e -= o.cost, r += 1;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
chunk: s,
|
|
81
|
+
queue: {
|
|
82
|
+
tokens: t.tokens,
|
|
83
|
+
head: r
|
|
84
|
+
},
|
|
85
|
+
remainingBudget: e
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
export {
|
|
89
|
+
H as CONTENT_AWARE_TYPEWRITER_TICK_BUDGET,
|
|
90
|
+
j as appendContentAwareTypewriterQueue,
|
|
91
|
+
D as consumeContentAwareTypewriterQueue,
|
|
92
|
+
M as createContentAwareTypewriterQueue,
|
|
93
|
+
O as fallbackSegmentTypewriterGraphemes,
|
|
94
|
+
G as getContentAwareTypewriterCost,
|
|
95
|
+
L as isContentAwareTypewriterQueueEmpty,
|
|
96
|
+
b as segmentTypewriterGraphemes
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=typewriter-pacing.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typewriter-pacing.es.js","sources":["../../../../src/components/ContentRender/utils/typewriter-pacing.ts"],"sourcesContent":["export const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;\n\nconst TYPEWRITER_GRAPHEME_COST = {\n han: 100,\n latin: 28,\n arabic: 34,\n thai: 42,\n otherLetterOrNumber: 35,\n punctuationOrEmoji: 100,\n whitespace: 0,\n} as const;\n\nconst ZERO_WIDTH_JOINER = \"\\u200d\";\nconst CARRIAGE_RETURN = \"\\r\";\nconst LINE_FEED = \"\\n\";\n\nconst GRAPHEME_EXTEND_PATTERN = /\\p{Grapheme_Extend}/u;\nconst MARK_PATTERN = /\\p{Mark}/u;\nconst SPACING_MARK_PATTERN = /\\p{Spacing_Mark}/u;\nconst WHITESPACE_PATTERN = /^\\s+$/u;\nconst HAN_PATTERN = /\\p{Script_Extensions=Han}/u;\nconst LATIN_PATTERN = /\\p{Script_Extensions=Latin}/u;\nconst ARABIC_PATTERN = /\\p{Script_Extensions=Arabic}/u;\nconst THAI_PATTERN = /\\p{Script_Extensions=Thai}/u;\nconst LETTER_OR_NUMBER_PATTERN = /[\\p{Letter}\\p{Number}]/u;\nconst PUNCTUATION_OR_SYMBOL_PATTERN = /[\\p{Punctuation}\\p{Symbol}]/u;\nconst EXTENDED_PICTOGRAPHIC_PATTERN = /\\p{Extended_Pictographic}/u;\n\nexport interface TypewriterGraphemeSegmenter {\n segment(input: string): Iterable<{ segment: string }>;\n}\n\nexport interface ContentAwareTypewriterToken {\n text: string;\n cost: number;\n}\n\nexport interface ContentAwareTypewriterQueue {\n tokens: readonly ContentAwareTypewriterToken[];\n head: number;\n}\n\nexport interface ContentAwareTypewriterConsumption {\n chunk: string;\n queue: ContentAwareTypewriterQueue;\n remainingBudget: number;\n}\n\nlet cachedIntlSegmenter: TypewriterGraphemeSegmenter | null | undefined;\n\nconst getIntlSegmenter = (): TypewriterGraphemeSegmenter | null => {\n if (cachedIntlSegmenter !== undefined) {\n return cachedIntlSegmenter;\n }\n\n const Segmenter =\n typeof Intl === \"undefined\"\n ? undefined\n : (Intl as typeof Intl & { Segmenter?: typeof Intl.Segmenter }).Segmenter;\n\n cachedIntlSegmenter = Segmenter\n ? new Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n return cachedIntlSegmenter;\n};\n\nconst isCodePointInRange = (codePoint: string, start: number, end: number) => {\n const value = codePoint.codePointAt(0);\n return value !== undefined && value >= start && value <= end;\n};\n\nconst isRegionalIndicator = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f1e6, 0x1f1ff);\n\nconst isVariationSelector = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xfe00, 0xfe0f) ||\n isCodePointInRange(codePoint, 0xe0100, 0xe01ef);\n\nconst isEmojiModifier = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f3fb, 0x1f3ff);\n\nconst isEmojiTag = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xe0020, 0xe007f);\n\nconst isFallbackExtend = (codePoint: string) =>\n GRAPHEME_EXTEND_PATTERN.test(codePoint) ||\n MARK_PATTERN.test(codePoint) ||\n SPACING_MARK_PATTERN.test(codePoint) ||\n isVariationSelector(codePoint) ||\n isEmojiModifier(codePoint) ||\n isEmojiTag(codePoint) ||\n codePoint === \"\\u20e3\" ||\n codePoint === \"\\u0e33\";\n\nexport const fallbackSegmentTypewriterGraphemes = (value: string) => {\n const codePoints = Array.from(value);\n const graphemes: string[] = [];\n\n for (let index = 0; index < codePoints.length; index += 1) {\n let grapheme = codePoints[index];\n\n if (grapheme === CARRIAGE_RETURN && codePoints[index + 1] === LINE_FEED) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n if (\n isRegionalIndicator(grapheme) &&\n isRegionalIndicator(codePoints[index + 1] || \"\")\n ) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n while (index + 1 < codePoints.length) {\n const nextCodePoint = codePoints[index + 1];\n\n if (isFallbackExtend(nextCodePoint)) {\n grapheme += nextCodePoint;\n index += 1;\n continue;\n }\n\n if (nextCodePoint === ZERO_WIDTH_JOINER) {\n grapheme += nextCodePoint;\n index += 1;\n\n if (index + 1 < codePoints.length) {\n grapheme += codePoints[index + 1];\n index += 1;\n }\n\n continue;\n }\n\n break;\n }\n\n graphemes.push(grapheme);\n }\n\n return graphemes;\n};\n\nexport const segmentTypewriterGraphemes = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n const resolvedSegmenter =\n segmenter === undefined ? getIntlSegmenter() : segmenter;\n\n if (!resolvedSegmenter) {\n return fallbackSegmentTypewriterGraphemes(value);\n }\n\n return Array.from(resolvedSegmenter.segment(value), ({ segment }) => segment);\n};\n\nconst isEmojiGrapheme = (grapheme: string) =>\n EXTENDED_PICTOGRAPHIC_PATTERN.test(grapheme) ||\n Array.from(grapheme).some(\n (codePoint) =>\n isRegionalIndicator(codePoint) ||\n isEmojiModifier(codePoint) ||\n codePoint === \"\\u20e3\"\n );\n\nexport const getContentAwareTypewriterCost = (grapheme: string) => {\n if (WHITESPACE_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.whitespace;\n }\n\n if (\n isEmojiGrapheme(grapheme) ||\n PUNCTUATION_OR_SYMBOL_PATTERN.test(grapheme)\n ) {\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n }\n\n if (HAN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.han;\n }\n\n if (LATIN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.latin;\n }\n\n if (ARABIC_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.arabic;\n }\n\n if (THAI_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.thai;\n }\n\n if (LETTER_OR_NUMBER_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.otherLetterOrNumber;\n }\n\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n};\n\nconst tokenizeContentAwareTypewriterText = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) =>\n segmentTypewriterGraphemes(value, segmenter).map((text) => ({\n text,\n cost: getContentAwareTypewriterCost(text),\n }));\n\nexport const createContentAwareTypewriterQueue = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => ({\n tokens: tokenizeContentAwareTypewriterText(value, segmenter),\n head: 0,\n});\n\nexport const isContentAwareTypewriterQueueEmpty = (\n queue: ContentAwareTypewriterQueue\n) => queue.head >= queue.tokens.length;\n\nexport const appendContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n suffix: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => {\n if (!suffix) {\n return queue;\n }\n\n const remainingTokens = queue.tokens.slice(queue.head);\n if (remainingTokens.length === 0) {\n return createContentAwareTypewriterQueue(suffix, segmenter);\n }\n\n const lastToken = remainingTokens[remainingTokens.length - 1];\n const repairedTail = tokenizeContentAwareTypewriterText(\n `${lastToken.text}${suffix}`,\n segmenter\n );\n\n return {\n tokens: [...remainingTokens.slice(0, -1), ...repairedTail],\n head: 0,\n };\n};\n\nexport const consumeContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n availableBudget: number\n): ContentAwareTypewriterConsumption => {\n let head = queue.head;\n let remainingBudget = Math.max(0, availableBudget);\n let chunk = \"\";\n\n while (head < queue.tokens.length) {\n const token = queue.tokens[head];\n if (token.cost > remainingBudget) {\n break;\n }\n\n chunk += token.text;\n remainingBudget -= token.cost;\n head += 1;\n }\n\n return {\n chunk,\n queue: {\n tokens: queue.tokens,\n head,\n },\n remainingBudget,\n };\n};\n\nexport const getContentAwareTypewriterTickCount = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n let queue = createContentAwareTypewriterQueue(value, segmenter);\n let budget = 0;\n let ticks = 0;\n\n while (!isContentAwareTypewriterQueueEmpty(queue)) {\n budget += CONTENT_AWARE_TYPEWRITER_TICK_BUDGET;\n const result = consumeContentAwareTypewriterQueue(queue, budget);\n\n if (!result.chunk) {\n throw new Error(\"Typewriter pacing could not consume the next grapheme\");\n }\n\n queue = result.queue;\n budget = result.remainingBudget;\n ticks += 1;\n }\n\n return ticks;\n};\n"],"names":["CONTENT_AWARE_TYPEWRITER_TICK_BUDGET","TYPEWRITER_GRAPHEME_COST","ZERO_WIDTH_JOINER","CARRIAGE_RETURN","LINE_FEED","GRAPHEME_EXTEND_PATTERN","MARK_PATTERN","SPACING_MARK_PATTERN","WHITESPACE_PATTERN","HAN_PATTERN","LATIN_PATTERN","ARABIC_PATTERN","THAI_PATTERN","LETTER_OR_NUMBER_PATTERN","PUNCTUATION_OR_SYMBOL_PATTERN","EXTENDED_PICTOGRAPHIC_PATTERN","cachedIntlSegmenter","getIntlSegmenter","Segmenter","isCodePointInRange","codePoint","start","end","value","isRegionalIndicator","isVariationSelector","isEmojiModifier","isEmojiTag","isFallbackExtend","fallbackSegmentTypewriterGraphemes","codePoints","graphemes","index","grapheme","nextCodePoint","segmentTypewriterGraphemes","segmenter","resolvedSegmenter","segment","isEmojiGrapheme","getContentAwareTypewriterCost","tokenizeContentAwareTypewriterText","text","createContentAwareTypewriterQueue","isContentAwareTypewriterQueueEmpty","queue","appendContentAwareTypewriterQueue","suffix","remainingTokens","lastToken","repairedTail","consumeContentAwareTypewriterQueue","availableBudget","head","remainingBudget","chunk","token"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),d=require("../../lib/locale.cjs"),x=require("../ContentRender/ContentRender.cjs");require("react");require("react-dom/client");require("../ui/inputGroup/input-group.cjs");;/* empty css */const C=({initialContentList:i=[],locale:t,lang:r,dir:u,customRenderBar:n,onSend:s,confirmButtonText:l,copyButtonText:o,copiedButtonText:c,beforeSend:m,interactionDefaultValueOptions:w})=>a.jsx("div",{className:"markdown-flow",dir:u??d.getMarkdownFlowDirection(t),lang:r??d.getMarkdownFlowLanguage(t),children:i.map((e,F)=>{const S=e.isFinished??!1?void 0:s,q=m??(()=>!0);return a.jsx(x.default,{content:e.content,userInput:e.userInput,defaultInputText:e.defaultInputText,defaultButtonText:e.defaultButtonText,defaultSelectedValues:e.defaultSelectedValues,readonly:e.readonly,customRenderBar:e.customRenderBar||n,onSend:S,beforeSend:q,locale:t,lang:r,dir:u,interactionDefaultValueOptions:w,onClickCustomButtonAfterContent:e.onClickCustomButtonAfterContent,confirmButtonText:l,copyButtonText:o,copiedButtonText:c,dynamicInteractionFormat:e.dynamicInteractionFormat},F)})});exports.default=C;
|
|
2
2
|
//# sourceMappingURL=MarkdownFlow.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownFlow.cjs","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport type
|
|
1
|
+
{"version":3,"file":"MarkdownFlow.cjs","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /**\n * Locale used for built-in UI text when a more specific text prop is not provided.\n * Arabic sets RTL direction; other supported locales set LTR direction.\n * When omitted, direction is inherited from the host and UI text uses the default locale.\n */\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n /** Overrides the locale-derived direction. */\n dir?: React.HTMLAttributes<HTMLDivElement>[\"dir\"];\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n lang,\n dir,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div\n className=\"markdown-flow\"\n dir={dir ?? getMarkdownFlowDirection(locale)}\n lang={lang ?? getMarkdownFlowLanguage(locale)}\n >\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n lang={lang}\n dir={dir}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","lang","dir","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","getMarkdownFlowDirection","getMarkdownFlowLanguage","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":"8VA8CA,MAAMA,EAA4C,CAAC,CACjD,mBAAAC,EAAqB,CAAA,EAAC,OACtBC,EACA,KAAAC,EACA,IAAAC,EACA,gBAAAC,EACA,OAAQC,EACR,kBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,WAAYC,EACZ,+BAAAC,CACF,IAEIC,EAAAA,IAAC,MAAA,CACC,UAAU,gBACV,IAAKR,GAAOS,EAAAA,yBAAyBX,CAAM,EAC3C,KAAMC,GAAQW,EAAAA,wBAAwBZ,CAAM,EAE3C,SAAAD,EAAmB,IAAI,CAACc,EAAaC,IAAU,CAE9C,MAAMC,EADaF,EAAY,YAAc,GACjB,OAAYT,EAClCY,EAAaR,IAAmB,IAAM,IAC5C,OACEE,EAAAA,IAACO,EAAAA,QAAA,CAEC,QAASJ,EAAY,QACrB,UAAWA,EAAY,UACvB,iBAAkBA,EAAY,iBAC9B,kBAAmBA,EAAY,kBAC/B,sBAAuBA,EAAY,sBACnC,SAAUA,EAAY,SACtB,gBAAiBA,EAAY,iBAAmBV,EAChD,OAAAY,EACA,WAAAC,EAAA,OACAhB,EACA,KAAAC,EACA,IAAAC,EACA,+BAAAO,EACA,gCACEI,EAAY,gCAEd,kBAAAR,EACA,eAAAC,EACA,iBAAAC,EACA,yBAA0BM,EAAY,wBAAA,EApBjCC,CAAA,CAuBX,CAAC,CAAA,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { InteractionDefaultValueOptions } from '../../lib/interaction-defaults';
|
|
3
|
-
import { MarkdownFlowLocale } from '../../lib/locale';
|
|
4
|
-
import { CustomRenderBarProps, OnSendContentParams } from '../types';
|
|
2
|
+
import { InteractionDefaultValueOptions } from '../../lib/interaction-defaults.js';
|
|
3
|
+
import { MarkdownFlowLocale } from '../../lib/locale.js';
|
|
4
|
+
import { CustomRenderBarProps, OnSendContentParams } from '../types.js';
|
|
5
5
|
export interface MarkdownFlowProps {
|
|
6
6
|
initialContentList?: {
|
|
7
7
|
content: string;
|
|
@@ -15,8 +15,16 @@ export interface MarkdownFlowProps {
|
|
|
15
15
|
onClickCustomButtonAfterContent?: () => void;
|
|
16
16
|
dynamicInteractionFormat?: string;
|
|
17
17
|
}[];
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Locale used for built-in UI text when a more specific text prop is not provided.
|
|
20
|
+
* Arabic sets RTL direction; other supported locales set LTR direction.
|
|
21
|
+
* When omitted, direction is inherited from the host and UI text uses the default locale.
|
|
22
|
+
*/
|
|
19
23
|
locale?: MarkdownFlowLocale;
|
|
24
|
+
/** Overrides the locale-derived language. */
|
|
25
|
+
lang?: string;
|
|
26
|
+
/** Overrides the locale-derived direction. */
|
|
27
|
+
dir?: React.HTMLAttributes<HTMLDivElement>["dir"];
|
|
20
28
|
customRenderBar?: CustomRenderBarProps;
|
|
21
29
|
onSend?: (content: OnSendContentParams) => void;
|
|
22
30
|
confirmButtonText?: string;
|
|
@@ -1,46 +1,58 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { getMarkdownFlowLanguage as f, getMarkdownFlowDirection as C } from "../../lib/locale.es.js";
|
|
3
|
+
import k from "../ContentRender/ContentRender.es.js";
|
|
3
4
|
import "react";
|
|
4
5
|
import "react-dom/client";
|
|
5
|
-
import "../ContentRender/contentRenderI18n.es.js";
|
|
6
6
|
import "../ui/inputGroup/input-group.es.js";
|
|
7
7
|
/* empty css */
|
|
8
|
-
const
|
|
9
|
-
initialContentList:
|
|
10
|
-
locale:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
8
|
+
const R = ({
|
|
9
|
+
initialContentList: a = [],
|
|
10
|
+
locale: t,
|
|
11
|
+
lang: r,
|
|
12
|
+
dir: d,
|
|
13
|
+
customRenderBar: i,
|
|
14
|
+
onSend: u,
|
|
15
|
+
confirmButtonText: n,
|
|
16
|
+
copyButtonText: s,
|
|
17
|
+
copiedButtonText: m,
|
|
18
|
+
beforeSend: l,
|
|
19
|
+
interactionDefaultValueOptions: p
|
|
20
|
+
}) => /* @__PURE__ */ o(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: "markdown-flow",
|
|
24
|
+
dir: d ?? C(t),
|
|
25
|
+
lang: r ?? f(t),
|
|
26
|
+
children: a.map((e, c) => {
|
|
27
|
+
const w = e.isFinished ?? !1 ? void 0 : u, F = l ?? (() => !0);
|
|
28
|
+
return /* @__PURE__ */ o(
|
|
29
|
+
k,
|
|
30
|
+
{
|
|
31
|
+
content: e.content,
|
|
32
|
+
userInput: e.userInput,
|
|
33
|
+
defaultInputText: e.defaultInputText,
|
|
34
|
+
defaultButtonText: e.defaultButtonText,
|
|
35
|
+
defaultSelectedValues: e.defaultSelectedValues,
|
|
36
|
+
readonly: e.readonly,
|
|
37
|
+
customRenderBar: e.customRenderBar || i,
|
|
38
|
+
onSend: w,
|
|
39
|
+
beforeSend: F,
|
|
40
|
+
locale: t,
|
|
41
|
+
lang: r,
|
|
42
|
+
dir: d,
|
|
43
|
+
interactionDefaultValueOptions: p,
|
|
44
|
+
onClickCustomButtonAfterContent: e.onClickCustomButtonAfterContent,
|
|
45
|
+
confirmButtonText: n,
|
|
46
|
+
copyButtonText: s,
|
|
47
|
+
copiedButtonText: m,
|
|
48
|
+
dynamicInteractionFormat: e.dynamicInteractionFormat
|
|
49
|
+
},
|
|
50
|
+
c
|
|
51
|
+
);
|
|
52
|
+
})
|
|
53
|
+
}
|
|
54
|
+
);
|
|
43
55
|
export {
|
|
44
|
-
|
|
56
|
+
R as default
|
|
45
57
|
};
|
|
46
58
|
//# sourceMappingURL=MarkdownFlow.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownFlow.es.js","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport type
|
|
1
|
+
{"version":3,"file":"MarkdownFlow.es.js","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /**\n * Locale used for built-in UI text when a more specific text prop is not provided.\n * Arabic sets RTL direction; other supported locales set LTR direction.\n * When omitted, direction is inherited from the host and UI text uses the default locale.\n */\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n /** Overrides the locale-derived direction. */\n dir?: React.HTMLAttributes<HTMLDivElement>[\"dir\"];\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n lang,\n dir,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div\n className=\"markdown-flow\"\n dir={dir ?? getMarkdownFlowDirection(locale)}\n lang={lang ?? getMarkdownFlowLanguage(locale)}\n >\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n lang={lang}\n dir={dir}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","lang","dir","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","getMarkdownFlowDirection","getMarkdownFlowLanguage","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":";;;;;;;AA8CA,MAAMA,IAA4C,CAAC;AAAA,EACjD,oBAAAC,IAAqB,CAAA;AAAA,EACrB,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,QAAQC;AAAA,EACR,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAYC;AAAA,EACZ,gCAAAC;AACF,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,KAAKR,KAAOS,EAAyBX,CAAM;AAAA,IAC3C,MAAMC,KAAQW,EAAwBZ,CAAM;AAAA,IAE3C,UAAAD,EAAmB,IAAI,CAACc,GAAaC,MAAU;AAE9C,YAAMC,IADaF,EAAY,cAAc,KACjB,SAAYT,GAClCY,IAAaR,MAAmB,MAAM;AAC5C,aACE,gBAAAE;AAAA,QAACO;AAAA,QAAA;AAAA,UAEC,SAASJ,EAAY;AAAA,UACrB,WAAWA,EAAY;AAAA,UACvB,kBAAkBA,EAAY;AAAA,UAC9B,mBAAmBA,EAAY;AAAA,UAC/B,uBAAuBA,EAAY;AAAA,UACnC,UAAUA,EAAY;AAAA,UACtB,iBAAiBA,EAAY,mBAAmBV;AAAA,UAChD,QAAAY;AAAA,UACA,YAAAC;AAAA,UACA,QAAAhB;AAAA,UACA,MAAAC;AAAA,UACA,KAAAC;AAAA,UACA,gCAAAO;AAAA,UACA,iCACEI,EAAY;AAAA,UAEd,mBAAAR;AAAA,UACA,gBAAAC;AAAA,UACA,kBAAAC;AAAA,UACA,0BAA0BM,EAAY;AAAA,QAAA;AAAA,QApBjCC;AAAA,MAAA;AAAA,IAuBX,CAAC;AAAA,EAAA;AAAA;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),y=require("react"),j=require("react-dom"),D=require("../../lib/utils.cjs"),M=require("../../node_modules/lucide-react/dist/esm/icons/chevrons-down.cjs"),s=t=>typeof t=="number"?`${t}px`:t,e=({visible:t,ariaLabel:c,portalTarget:r,placement:a="bottom-center",position:u="absolute",bottomOffset:d=20,horizontalOffset:i=20,zIndex:m=1,className:b="",style:f,tabIndex:h,disabled:B,type:S="button",...p})=>{const q=y.useCallback(o=>{!t&&o&&o.ownerDocument.activeElement===o&&o.blur()},[t]),x={"--scroll-to-bottom-bottom":s(d),"--scroll-to-bottom-horizontal":s(i),"--scroll-to-bottom-position":u,zIndex:m,...f},n=l.jsx("button",{...p,ref:q,disabled:!t||B,type:S,className:D.cn("scroll-to-bottom-btn",b),style:x,"aria-label":c,"aria-hidden":t?void 0:!0,"data-placement":a,"data-visible":t?"true":"false",tabIndex:t?h:-1,children:l.jsx(M.default,{size:20,"aria-hidden":"true",focusable:"false"})});return r?j.createPortal(n,r):n};e.displayName="ScrollToBottomButton";exports.ScrollToBottomButton=e;exports.default=e;
|
|
2
2
|
//# sourceMappingURL=ScrollToBottomButton.cjs.map
|