markdown-flow-ui 0.3.2-dev.2 → 0.3.2
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 +0 -13
- package/dist/_virtual/index.es8.js +2 -2
- package/dist/_virtual/index.es9.js +2 -2
- package/dist/_virtual/index8.cjs +1 -1
- package/dist/_virtual/index9.cjs +1 -1
- package/dist/assets/markdown-flow-ui.css +1 -1
- package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
- package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
- package/dist/components/ContentRender/utils/video-markdown-run.cjs.map +1 -1
- package/dist/components/ContentRender/utils/video-markdown-run.es.js.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -1
- package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -1
- package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
- 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 +2 -2
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +323 -562
- package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.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 +0 -8
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +64 -107
- package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editor-context.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/editor-context.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/editor-context.es.js +4 -10
- package/dist/components/MarkdownFlowEditor/editor-context.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +0 -308
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +87 -115
- package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/de-DE.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/de-DE.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js +88 -116
- package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +88 -116
- package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/es-ES.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/es-ES.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js +80 -108
- package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js +82 -110
- package/dist/components/MarkdownFlowEditor/locales/fil-PH.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 +1 -15
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +86 -114
- package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js +88 -116
- package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +85 -113
- package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js +94 -122
- package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js +74 -102
- package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +1 -15
- package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +72 -100
- 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.d.ts +2 -1
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +62 -53
- package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs +3 -3
- package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.d.ts +1 -5
- package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js +149 -154
- package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js.map +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.d.ts +2 -1
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +53 -42
- package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/types.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/types.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/types.d.ts +1 -11
- package/dist/components/MarkdownFlowEditor/types.es.js +2 -2
- package/dist/components/MarkdownFlowEditor/types.es.js.map +1 -1
- package/dist/components/MarkdownFlowEditor/utils.cjs +1 -1
- package/dist/components/MarkdownFlowEditor/utils.cjs.map +1 -1
- package/dist/components/MarkdownFlowEditor/utils.d.ts +0 -10
- package/dist/components/MarkdownFlowEditor/utils.es.js +59 -73
- package/dist/components/MarkdownFlowEditor/utils.es.js.map +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
- package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
- package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +16 -16
- package/dist/components/Slide/Player.cjs.map +1 -1
- package/dist/components/Slide/Player.es.js.map +1 -1
- package/dist/components/Slide/Slide.cjs.map +1 -1
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
- package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
- package/dist/components/Slide/slideI18n.cjs.map +1 -1
- package/dist/components/Slide/slideI18n.es.js.map +1 -1
- package/dist/components/Slide/useSlide.cjs.map +1 -1
- package/dist/components/Slide/useSlide.es.js.map +1 -1
- package/dist/components/Slide/utils/streamingNavigation.cjs.map +1 -1
- package/dist/components/Slide/utils/streamingNavigation.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.es.js +27 -27
- package/dist/components/ui/dialog.es.js.map +1 -1
- package/dist/lib/interaction-defaults.cjs.map +1 -1
- package/dist/lib/interaction-defaults.es.js.map +1 -1
- package/dist/markdown-flow-ui-lib.css +1 -1
- package/dist/markdown-flow-ui.css +1 -1
- package/dist/node_modules/@braintree/sanitize-url/dist/index.cjs +1 -1
- package/dist/node_modules/@braintree/sanitize-url/dist/index.es.js +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 +34 -49
- 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 +1 -5
- 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 +206 -220
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js +50 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js +82 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +216 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js +15 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js +18 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js +104 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js +70 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js +20 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js +7 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.es.js +18 -9
- package/dist/node_modules/@radix-ui/react-focus-guards/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 +148 -100
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +1 -1
- package/dist/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -1
- package/dist/node_modules/@radix-ui/react-id/dist/index.es.js +8 -8
- package/dist/node_modules/@radix-ui/react-id/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 +1 -1
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js +50 -0
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
- 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 +80 -41
- package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
- package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
- package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
- 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 +1 -1
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js +12 -0
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
- package/dist/node_modules/classnames/index.cjs +1 -1
- package/dist/node_modules/classnames/index.es.js +1 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +2 -2
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs.map +1 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js +75 -72
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js.map +1 -1
- package/package.json +10 -10
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +0 -2
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +0 -17
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +0 -46
- package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +0 -2
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +0 -18
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +0 -184
- package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +0 -2
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +0 -11
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +0 -172
- package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +0 -2
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +0 -1
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.d.ts +0 -3
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +0 -32
- package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +0 -1
- package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs +0 -3
- package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs.map +0 -1
- package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.d.ts +0 -9
- package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js +0 -53
- package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js.map +0 -1
- package/dist/components/ui/popover.cjs +0 -2
- package/dist/components/ui/popover.cjs.map +0 -1
- package/dist/components/ui/popover.es.js +0 -24
- package/dist/components/ui/popover.es.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +0 -2
- package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +0 -241
- package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs +0 -7
- package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js +0 -25
- package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs +0 -7
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js +0 -16
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +0 -7
- package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js +0 -16
- package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js.map +0 -1
- /package/dist/components/MarkdownFlowEditor/plugins/{VariablePlaceholder.test.d.ts → MediaPlaceholder.variables.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownFlowEditor.es.js","sources":["../../../src/components/MarkdownFlowEditor/MarkdownFlowEditor.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef, useEffect, useMemo } from \"react\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport { autocompletion } from \"@codemirror/autocomplete\";\nimport { EditorView, ViewUpdate } from \"@codemirror/view\";\nimport { markdown } from \"@codemirror/lang-markdown\";\nimport {\n syntaxHighlighting,\n defaultHighlightStyle,\n} from \"@codemirror/language\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/tooltip\";\nimport CustomDialog from \"./components/CustomDialog\";\nimport CustomPopover from \"./components/CustomPopover\";\nimport EditorToolbar from \"./components/EditorToolbar\";\nimport VariableSearchDropdown from \"./components/VariableSearchDropdown\";\nimport EditorContext from \"./editor-context\";\nimport ImageInject from \"./components/ImageInject\";\nimport VideoInject from \"./components/VideoInject\";\nimport VariableSelect from \"./components/VariableSelect\";\nimport {\n SelectedOption,\n IEditorContext,\n Variable,\n SelectContentInfo,\n PopoverPosition,\n EditorAction,\n EditorApi,\n} from \"./types\";\nimport \"./markdownFlowEditor.css\";\n\nimport {\n createSlashCommands,\n parseContentInfo,\n getImageContentToInsert,\n getVideoContentToInsert,\n extractVariableNames,\n findDocumentVariableMarkers,\n formatVariableReference,\n normalizeVariableName,\n} from \"./utils\";\nimport ImgPlaceholder from \"./plugins/ImgPlaceholder\";\nimport VideoPlaceholder from \"./plugins/VideoPlaceholder\";\nimport { mediaPlaceholderLabels } from \"./plugins/mediaPlaceholderLabels\";\nimport VariablePlaceholder from \"./plugins/VariablePlaceholder\";\nimport SyntaxHighlighter, {\n QuestionSyntaxHighlighter,\n} from \"./plugins/SyntaxHighlighter\";\n// import createFixedTextPlaceholder from \"./plugins/FixedTextPlaceholder\";\n// import DividerPlaceholder from \"./plugins/DividerPlaceholder\";\nimport { initReactI18next, useTranslation } from \"react-i18next\";\nimport i18next from \"i18next\";\nimport { UploadProps } from \"./uploadTypes\";\nimport {\n DEFAULT_EDITOR_LOCALE,\n editorLocaleResources,\n getEditorLocaleMessages,\n} from \"./editorI18n\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport { useDetachedLanguage } from \"../../lib/useDetachedLanguage\";\nimport { useResolvedDirection } from \"../../lib/useResolvedDirection\";\n\nif (!i18next.isInitialized) {\n i18next.use(initReactI18next).init({\n resources: editorLocaleResources,\n lng: DEFAULT_EDITOR_LOCALE,\n fallbackLng: DEFAULT_EDITOR_LOCALE,\n interpolation: { escapeValue: false },\n });\n} else {\n Object.entries(editorLocaleResources).forEach(([lng, resource]) => {\n i18next.addResourceBundle(\n lng,\n \"translation\",\n resource.translation,\n true,\n true\n );\n });\n}\n\nexport enum EditMode {\n CodeEdit = \"codeEdit\",\n QuickEdit = \"quickEdit\",\n}\n\ntype EditorProps = {\n content?: string;\n editMode?: EditMode;\n /** Author questions and memory answers without variable authoring controls. */\n questionMode?: boolean;\n variables?: Variable[];\n systemVariables?: Variable[];\n onChange?: (value: string) => void;\n onBlur?: () => void;\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n uploadProps?: UploadProps;\n disabled?: boolean;\n toolbarActionsRight?: EditorAction[];\n onReady?: (api: EditorApi) => void;\n};\n\nconst EMPTY_VARIABLES: Variable[] = [];\n\n// Detect whether cursor is still inside a {{variable}} expression\nconst isCursorInsideVariableExpression = (\n content: string,\n cursorPosition: number\n) => {\n if (!content || cursorPosition < 0) {\n return false;\n }\n for (const marker of findDocumentVariableMarkers(content)) {\n if (\n marker.name !== null &&\n cursorPosition >= marker.start + 2 &&\n cursorPosition <= marker.end - 2\n ) {\n return true;\n }\n }\n\n return false;\n};\n\nconst buildVariableTemplate = (variableName = \"\") =>\n variableName ? formatVariableReference(variableName) : \"{{ }}\";\n\nconst Editor: React.FC<EditorProps> = ({\n content = \"\",\n editMode = EditMode.CodeEdit,\n questionMode = false,\n variables: initialVariables,\n systemVariables: initialSystemVariables,\n onChange,\n onBlur,\n locale,\n lang,\n uploadProps,\n disabled = false,\n toolbarActionsRight,\n onReady,\n}) => {\n const { t, i18n } = useTranslation();\n const resolvedLocale = normalizeMarkdownFlowLocale(\n locale ?? DEFAULT_EDITOR_LOCALE\n );\n const direction = getMarkdownFlowDirection(locale);\n const language = lang ?? getMarkdownFlowLanguage(locale);\n\n useEffect(() => {\n if (i18n.language !== resolvedLocale) {\n i18n.changeLanguage(resolvedLocale);\n }\n }, [i18n, resolvedLocale]);\n\n const currentStrings = getEditorLocaleMessages(resolvedLocale);\n const toolbarLabels = useMemo(\n () => ({\n image: t(\"toolbarInsertImage\", {\n defaultValue: \"Insert image\",\n }),\n video: t(\"toolbarInsertVideo\", {\n defaultValue: \"Insert video\",\n }),\n variable: t(\"slashVariable\", {\n defaultValue: \"Variable\",\n }),\n addVariable: t(\"toolbarInsertNewVariable\", {\n defaultValue: \"Insert new variable\",\n }),\n search: t(\"toolbarInsertExistingVariable\", {\n defaultValue: \"Insert existing variable\",\n }),\n confirmOutput: t(\"toolbarConfirmOutput\", {\n defaultValue: \"Confirm output\",\n }),\n insertLink: t(\"toolbarInsertLink\", {\n defaultValue: \"Insert link\",\n }),\n insertButton: t(\"toolbarInsertButton\", {\n defaultValue: \"Insert button\",\n }),\n insertSingleChoice: t(\"toolbarInsertSingleChoice\", {\n defaultValue: \"Insert single choice\",\n }),\n insertMultiChoice: t(\"toolbarInsertMultiChoice\", {\n defaultValue: \"Insert multi choice\",\n }),\n insertInput: t(\"toolbarInsertInput\", {\n defaultValue: \"Insert input\",\n }),\n singleChoiceOption1: t(\"toolbarChoiceOption1\", {\n defaultValue: \"Option 1\",\n }),\n singleChoiceOption2: t(\"toolbarChoiceOption2\", {\n defaultValue: \"Option 2\",\n }),\n inputPlaceholder: t(\"toolbarInputPlaceholder\", {\n defaultValue: \"Please enter\",\n }),\n }),\n [t]\n );\n const variableSearchLabels = useMemo(\n () => ({\n searchPlaceholder: t(\"variableSearchPlaceholder\", {\n defaultValue: \"Search variable\",\n }),\n systemLabel: t(\"variableSectionSystem\", \"System Variables\"),\n customLabel: t(\"variableSectionCustom\", \"Custom Variables\"),\n emptyLabel: t(\"variableNotFound\", \"No variables found\"),\n }),\n [t]\n );\n const placeholderText =\n editMode === EditMode.QuickEdit\n ? t(\"placeholderQuickEdit\", {\n defaultValue: t(\"placeholderCodeEdit\", {\n defaultValue: t(\"placeholder\"),\n }),\n })\n : t(\"placeholderCodeEdit\", { defaultValue: t(\"placeholder\") });\n // Only boundary whitespace is normalized; key identity remains case-sensitive.\n const normalizedSystemVariables = useMemo(() => {\n const seen = new Set<string>();\n return (initialSystemVariables ?? EMPTY_VARIABLES).flatMap((variable) => {\n const name =\n typeof variable?.name === \"string\"\n ? normalizeVariableName(variable.name)\n : null;\n if (name === null || seen.has(name)) return [];\n seen.add(name);\n return [{ ...variable, name }];\n });\n }, [initialSystemVariables]);\n\n const normalizedCustomVariables = useMemo(() => {\n const systemNameSet = new Set(\n normalizedSystemVariables.map((variable) => variable.name)\n );\n const seen = new Set<string>();\n return (initialVariables ?? EMPTY_VARIABLES).flatMap((variable) => {\n const name =\n typeof variable?.name === \"string\"\n ? normalizeVariableName(variable.name)\n : null;\n if (name === null || systemNameSet.has(name) || seen.has(name)) return [];\n seen.add(name);\n return [{ ...variable, name }];\n });\n }, [initialVariables, normalizedSystemVariables]);\n\n const [dialogOpen, setDialogOpen] = useState(false);\n const [popoverOpen, setPopoverOpen] = useState(false);\n const editorRootRef = useRef<HTMLDivElement>(null);\n const portalLanguage = useDetachedLanguage(editorRootRef, language);\n const { resolvedDirection: portalDirection } = useResolvedDirection(\n editorRootRef,\n direction\n );\n const [popoverPosition, setPopoverPosition] =\n useState<PopoverPosition | null>(null);\n const [variables, setVariables] = useState<Variable[]>(\n normalizedCustomVariables\n );\n const [systemVariables, setSystemVariables] = useState<Variable[]>(\n normalizedSystemVariables\n );\n\n useEffect(() => {\n setVariables(normalizedCustomVariables);\n }, [normalizedCustomVariables]);\n\n useEffect(() => {\n setSystemVariables(normalizedSystemVariables);\n }, [normalizedSystemVariables]);\n\n const [selectedOption, setSelectedOption] = useState<SelectedOption>(\n SelectedOption.Empty\n );\n const [selectContentInfo, setSelectContentInfo] =\n useState<SelectContentInfo | null>();\n const editorViewRef = useRef<EditorView | null>(null);\n const pendingVariableContentRef = useRef<string | null>(null);\n const variableSearchAnchorRef = useRef<HTMLButtonElement | null>(null);\n const [variableSearchOpen, setVariableSearchOpen] = useState(false);\n const closeVariableSearch = useCallback(() => {\n setVariableSearchOpen(false);\n variableSearchAnchorRef.current = null;\n }, []);\n\n useEffect(() => {\n if (questionMode) {\n closeVariableSearch();\n }\n }, [closeVariableSearch, questionMode]);\n const handleVariableSearchToggle = useCallback(\n (button: HTMLButtonElement) => {\n if (disabled) {\n return;\n }\n if (variableSearchOpen && variableSearchAnchorRef.current === button) {\n closeVariableSearch();\n return;\n }\n variableSearchAnchorRef.current = button;\n setVariableSearchOpen(true);\n },\n [closeVariableSearch, disabled, variableSearchOpen]\n );\n\n const editorContextValue: IEditorContext = {\n selectedOption,\n setSelectedOption,\n dialogOpen,\n setDialogOpen,\n popoverOpen,\n setPopoverOpen,\n popoverPosition,\n setPopoverPosition,\n };\n\n useEffect(() => {\n if (!disabled) {\n return;\n }\n setDialogOpen(false);\n setPopoverOpen(false);\n setSelectedOption(SelectedOption.Empty);\n setSelectContentInfo(null);\n setPopoverPosition(null);\n closeVariableSearch();\n }, [\n closeVariableSearch,\n disabled,\n setDialogOpen,\n setPopoverOpen,\n setPopoverPosition,\n setSelectedOption,\n setSelectContentInfo,\n ]);\n\n const addVariablesFromContent = useCallback(\n (text: string) => {\n if (questionMode || editMode !== EditMode.QuickEdit || !text) {\n return;\n }\n\n const names = extractVariableNames(text);\n if (!names.length) {\n return;\n }\n\n const systemNameSet = new Set(\n systemVariables.map((variable) => variable.name)\n );\n\n setVariables((prev) => {\n const existingNames = new Set(prev.map((variable) => variable.name));\n const addedNames = new Set<string>();\n const newVariables: Variable[] = [];\n\n names.forEach((rawName) => {\n const normalized = rawName;\n if (\n !rawName ||\n systemNameSet.has(normalized) ||\n existingNames.has(normalized) ||\n addedNames.has(normalized)\n ) {\n return;\n }\n newVariables.push({ name: rawName });\n addedNames.add(normalized);\n });\n\n if (!newVariables.length) {\n return prev;\n }\n\n return [...newVariables, ...prev];\n });\n },\n [editMode, questionMode, systemVariables]\n );\n\n useEffect(() => {\n addVariablesFromContent(content);\n }, [content, addVariablesFromContent]);\n\n // const insertFixedText = useCallback(() => {\n // if (!editorViewRef.current) return;\n // const view = editorViewRef.current;\n // const { state, dispatch } = view;\n // const selection = state.selection.main;\n // const selectedText = state.sliceDoc(selection.from, selection.to);\n // const startTag = \"===\";\n // const endTag = \"===\";\n // const insertContent = `${startTag}${selectedText ?? \"\"}${endTag}`;\n\n // dispatch({\n // changes: {\n // from: selection.from,\n // to: selection.to,\n // insert: insertContent,\n // },\n // selection: {\n // anchor: selection.from + startTag.length + (selectedText?.length ?? 0),\n // },\n // });\n // view.focus();\n // }, []);\n\n // const insertDivider = useCallback(() => {\n // if (!editorViewRef.current) return;\n // const view = editorViewRef.current;\n // const { state, dispatch } = view;\n // const selection = state.selection.main;\n // const insertContent = `\\n\\n---\\n\\n`;\n\n // dispatch({\n // changes: {\n // from: selection.from,\n // to: selection.to,\n // insert: insertContent,\n // },\n // selection: {\n // anchor: selection.from + insertContent.length,\n // },\n // });\n // view.focus();\n // }, []);\n\n const onSelectedOption = useCallback(\n (option: SelectedOption) => {\n if (disabled || (questionMode && option === SelectedOption.Variable)) {\n return;\n }\n closeVariableSearch();\n // if (option === SelectedOption.FixedText) {\n // insertFixedText();\n // setSelectedOption(SelectedOption.Empty);\n // setDialogOpen(false);\n // setPopoverOpen(false);\n // setSelectContentInfo(null);\n // setPopoverPosition(null);\n // return;\n // }\n\n // if (option === SelectedOption.Divider) {\n // insertDivider();\n // setSelectedOption(SelectedOption.Empty);\n // setDialogOpen(false);\n // setPopoverOpen(false);\n // setSelectContentInfo(null);\n // setPopoverPosition(null);\n // return;\n // }\n\n setSelectedOption(option);\n\n if (option === SelectedOption.Variable) {\n if (editorViewRef.current) {\n const { state } = editorViewRef.current;\n const pos = state.selection.main.from;\n const coords = editorViewRef.current.coordsAtPos(pos);\n if (coords) {\n setPopoverPosition({\n x: coords.left,\n y: coords.bottom,\n });\n }\n }\n setPopoverOpen(true);\n } else {\n setDialogOpen(true);\n }\n },\n [closeVariableSearch, disabled, questionMode]\n );\n\n const insertText = useCallback(\n (text: string) => {\n if (disabled || !editorViewRef.current) return;\n\n const { state, dispatch } = editorViewRef.current;\n const from = state.selection.main.from;\n\n dispatch({\n changes: { from, insert: text },\n selection: { anchor: from + text.length },\n });\n },\n [editorViewRef, disabled]\n );\n\n const replaceSelection = useCallback(\n (text: string) => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const { state, dispatch } = editorViewRef.current;\n const selection = state.selection.main;\n dispatch({\n changes: { from: selection.from, to: selection.to, insert: text },\n selection: { anchor: selection.from + text.length },\n });\n },\n [disabled]\n );\n\n const focusEditor = useCallback(() => {\n editorViewRef.current?.focus();\n }, []);\n\n const getContent = useCallback(() => {\n return editorViewRef.current?.state.doc.toString() ?? \"\";\n }, []);\n\n const setContent = useCallback(\n (text: string) => {\n if (disabled) {\n return;\n }\n if (!editorViewRef.current) {\n onChange?.(text);\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n dispatch({\n changes: { from: 0, to: state.doc.length, insert: text },\n selection: { anchor: text.length },\n });\n },\n [disabled, onChange]\n );\n\n const deleteSelectedContent = useCallback(() => {\n if (disabled) {\n return;\n }\n if (\n !selectContentInfo ||\n !editorViewRef.current ||\n selectContentInfo.from === -1\n )\n return;\n\n const { from, to } = selectContentInfo;\n const { dispatch } = editorViewRef.current;\n\n dispatch({\n changes: { from, to, insert: \"\" },\n });\n }, [selectContentInfo, editorViewRef, disabled]);\n\n const insertVariableContent = useCallback(\n (\n variableName: string,\n range?: { from: number; to: number },\n placeCursorAtEnd = false\n ) => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = range ?? state.selection.main;\n const template = buildVariableTemplate(variableName);\n if (!template) return;\n const name = normalizeVariableName(variableName) ?? \"\";\n const cursorOffset = placeCursorAtEnd ? template.length : 3 + name.length; // Opening braces and one padding space\n\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + cursorOffset,\n },\n });\n view.focus();\n },\n [disabled]\n );\n\n const insertVariableTemplate = useCallback(() => {\n if (disabled) {\n return;\n }\n closeVariableSearch();\n insertVariableContent(\"\");\n }, [closeVariableSearch, disabled, insertVariableContent]);\n\n const insertConfirmOutputMarker = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"======\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 3,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertLinkTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"[]()\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 1,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertButtonTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"?[]\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 2,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertSingleChoiceTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const optionLabel1 = toolbarLabels.singleChoiceOption1;\n const optionLabel2 = toolbarLabels.singleChoiceOption2;\n const template = `?[%{{ ${questionMode ? currentStrings.questionPlaceholder : \"\"} }} ${optionLabel1} | ${optionLabel2}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n head:\n selection.from +\n 6 +\n (questionMode ? currentStrings.questionPlaceholder.length : 0),\n },\n });\n view.focus();\n }, [\n disabled,\n toolbarLabels.singleChoiceOption1,\n toolbarLabels.singleChoiceOption2,\n questionMode,\n currentStrings.questionPlaceholder,\n ]);\n\n const insertMultiChoiceTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const optionLabel1 = toolbarLabels.singleChoiceOption1;\n const optionLabel2 = toolbarLabels.singleChoiceOption2;\n const template = `?[%{{ ${questionMode ? currentStrings.questionPlaceholder : \"\"} }} ${optionLabel1} || ${optionLabel2}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n head:\n selection.from +\n 6 +\n (questionMode ? currentStrings.questionPlaceholder.length : 0),\n },\n });\n view.focus();\n }, [\n disabled,\n toolbarLabels.singleChoiceOption1,\n toolbarLabels.singleChoiceOption2,\n questionMode,\n currentStrings.questionPlaceholder,\n ]);\n\n const insertInputFieldTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const placeholder = toolbarLabels.inputPlaceholder ?? \"请输入\";\n const template = `?[%{{ ${questionMode ? currentStrings.questionPlaceholder : \"\"} }}...${placeholder}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n head:\n selection.from +\n 6 +\n (questionMode ? currentStrings.questionPlaceholder.length : 0),\n },\n });\n view.focus();\n }, [\n disabled,\n toolbarLabels.inputPlaceholder,\n questionMode,\n currentStrings.questionPlaceholder,\n ]);\n\n const handleSelectImage = useCallback(\n ({\n resourceUrl,\n resourceTitle,\n scalePercent,\n }: {\n resourceUrl?: string;\n resourceTitle?: string;\n scalePercent?: number;\n }) => {\n if (!resourceUrl || disabled) return;\n const textToInsert = getImageContentToInsert({\n resourceUrl,\n resourceTitle,\n scalePercent,\n });\n if (selectContentInfo?.type === SelectedOption.Image) {\n deleteSelectedContent();\n if (!editorViewRef.current) return;\n const { dispatch } = editorViewRef.current;\n dispatch({\n changes: { from: selectContentInfo.from, insert: textToInsert },\n });\n } else {\n insertText(textToInsert);\n }\n setDialogOpen(false);\n },\n [deleteSelectedContent, disabled, insertText, selectContentInfo]\n );\n\n const handleSelectVideo = useCallback(\n ({\n resourceUrl,\n resourceTitle,\n }: {\n resourceUrl: string;\n resourceTitle: string;\n }) => {\n if (disabled) {\n return;\n }\n const textToInsert = getVideoContentToInsert(resourceUrl, resourceTitle);\n if (selectContentInfo?.type === SelectedOption.Video) {\n deleteSelectedContent();\n if (!editorViewRef.current) return;\n const { dispatch } = editorViewRef.current;\n dispatch({\n changes: { from: selectContentInfo.from, insert: textToInsert },\n });\n } else {\n insertText(textToInsert);\n }\n setDialogOpen(false);\n },\n [deleteSelectedContent, disabled, insertText, selectContentInfo]\n );\n\n const handleSelectVariable = useCallback(\n (variable: Variable) => {\n if (disabled) {\n return;\n }\n const selectionRange =\n selectContentInfo?.type === SelectedOption.Variable\n ? { from: selectContentInfo.from, to: selectContentInfo.to }\n : undefined;\n insertVariableContent(variable.name, selectionRange, true);\n setPopoverOpen(false);\n closeVariableSearch();\n },\n [disabled, insertVariableContent, selectContentInfo, closeVariableSearch]\n );\n\n const slashCommandsExtension = useCallback(() => {\n return autocompletion({\n override: [\n createSlashCommands(\n onSelectedOption,\n {\n // divider: currentStrings.slashDivider,\n // fixedText: currentStrings.slashFixedText,\n image: currentStrings.slashImage,\n video: currentStrings.slashVideo,\n variable: currentStrings.slashVariable,\n },\n { enableVariables: !questionMode }\n ),\n ],\n });\n }, [\n // currentStrings.slashDivider,\n // currentStrings.slashFixedText,\n currentStrings.slashImage,\n currentStrings.slashVideo,\n currentStrings.slashVariable,\n onSelectedOption,\n questionMode,\n ]);\n\n // const fixedTextPlaceholderExtension = useMemo(\n // () =>\n // createFixedTextPlaceholder(\n // currentStrings.fixedTextPlaceholder ?? \"添加固定文本\",\n // currentStrings.fixedTextTooltip ??\n // currentStrings.slashFixedText ??\n // \"固定文本\"\n // ),\n // [\n // currentStrings.fixedTextPlaceholder,\n // currentStrings.fixedTextTooltip,\n // currentStrings.slashFixedText,\n // ]\n // );\n\n const handleEditorUpdate = useCallback(\n (update: ViewUpdate) => {\n editorViewRef.current = update.view;\n if (\n !questionMode &&\n editMode === EditMode.QuickEdit &&\n pendingVariableContentRef.current &&\n update.selectionSet\n ) {\n const cursorPosition = update.state.selection.main.head;\n const docText = update.state.doc.toString();\n const stillInside = isCursorInsideVariableExpression(\n docText,\n cursorPosition\n );\n if (!stillInside) {\n addVariablesFromContent(docText);\n pendingVariableContentRef.current = null;\n }\n }\n },\n [addVariablesFromContent, editMode, questionMode]\n );\n\n const handleTagClick = useCallback(\n (event: any) => {\n event.stopPropagation();\n if (disabled) {\n return;\n }\n const { type, from, to, dataset, target } = event.detail;\n if (questionMode && type === SelectedOption.Variable) return;\n const value = parseContentInfo(type, dataset);\n setSelectContentInfo({\n type,\n value,\n from,\n to,\n });\n setSelectedOption(type);\n\n if (type === SelectedOption.Variable) {\n if (target) {\n const rect = target.getBoundingClientRect();\n const anchorDirection =\n target.ownerDocument.defaultView?.getComputedStyle(\n editorRootRef.current ?? target\n ).direction;\n setPopoverPosition({\n x: anchorDirection === \"rtl\" ? rect.right : rect.left,\n y: rect.bottom,\n });\n }\n setPopoverOpen(true);\n } else {\n setDialogOpen(true);\n }\n },\n [disabled, questionMode]\n );\n\n useEffect(() => {\n if (!dialogOpen) {\n setSelectedOption(SelectedOption.Empty);\n setSelectContentInfo(null);\n }\n }, [dialogOpen]);\n\n useEffect(() => {\n if (!popoverOpen && selectedOption === SelectedOption.Variable) {\n setSelectedOption(SelectedOption.Empty);\n setSelectContentInfo(null);\n }\n }, [popoverOpen, selectedOption]);\n\n useEffect(() => {\n const handleWrap = (e: any) => {\n if (e.detail.view === editorViewRef.current) {\n handleTagClick(e);\n }\n };\n window.addEventListener(\"globalTagClick\", handleWrap);\n return () => {\n window.removeEventListener(\"globalTagClick\", handleWrap);\n };\n }, [handleTagClick]);\n\n const imagePlaceholderTitle = t(\"imageDefaultTitle\");\n const videoPlaceholderTitle = t(\"videoDefaultTitle\");\n const mediaPlaceholderLabelsExtension = useMemo(\n () =>\n mediaPlaceholderLabels.of({\n image: imagePlaceholderTitle,\n video: videoPlaceholderTitle,\n }),\n [imagePlaceholderTitle, videoPlaceholderTitle]\n );\n\n const editorExtensions = useMemo(() => {\n const extensions = [\n EditorView.lineWrapping,\n markdown(),\n syntaxHighlighting(defaultHighlightStyle),\n questionMode ? QuestionSyntaxHighlighter : SyntaxHighlighter,\n ];\n\n if (!disabled) {\n extensions.push(slashCommandsExtension());\n }\n\n if (editMode === EditMode.QuickEdit) {\n extensions.push(\n mediaPlaceholderLabelsExtension,\n ImgPlaceholder,\n VideoPlaceholder\n // fixedTextPlaceholderExtension,\n // DividerPlaceholder,\n );\n if (!questionMode) extensions.push(VariablePlaceholder);\n }\n\n extensions.push(\n EditorView.updateListener.of((update) => {\n handleEditorUpdate(update);\n })\n );\n\n return extensions;\n }, [\n disabled,\n editMode,\n slashCommandsExtension,\n handleEditorUpdate,\n mediaPlaceholderLabelsExtension,\n questionMode,\n ]);\n\n const handleContentChange = useCallback(\n (value: string) => {\n if (disabled) {\n return;\n }\n if (questionMode) {\n onChange?.(value);\n return;\n }\n const cursorPosition =\n editorViewRef.current?.state.selection.main.head ?? -1;\n const skipAddition = isCursorInsideVariableExpression(\n value,\n cursorPosition\n );\n if (skipAddition) {\n pendingVariableContentRef.current = value;\n } else {\n pendingVariableContentRef.current = null;\n addVariablesFromContent(value);\n }\n onChange?.(value);\n },\n [addVariablesFromContent, onChange, disabled, questionMode]\n );\n\n const isVariableSearchOpen = !questionMode && !disabled && variableSearchOpen;\n const editorApi = useMemo(\n () => ({\n insertTextAtCursor: insertText,\n replaceSelection,\n focus: focusEditor,\n getContent,\n setContent,\n }),\n [focusEditor, getContent, insertText, replaceSelection, setContent]\n );\n\n const handleToolbarActionClick = useCallback(\n (action: EditorAction) => {\n if (disabled || \"render\" in action) {\n return;\n }\n action.onClick?.(editorApi);\n },\n [disabled, editorApi]\n );\n\n const toolbarRightSlot = useMemo(() => {\n if (!toolbarActionsRight?.length) {\n return null;\n }\n return (\n <div className=\"markdown-flow-editor-toolbar-right\">\n {toolbarActionsRight.map((action) => {\n if (\"render\" in action) {\n return (\n <div\n className=\"markdown-flow-editor-toolbar-right-item\"\n key={action.key}\n >\n {action.render(editorApi)}\n </div>\n );\n }\n const ariaLabel = action.label || action.tooltip || undefined;\n const button = (\n <button\n type=\"button\"\n key={action.key}\n disabled={disabled || action.disabled}\n onClick={() => handleToolbarActionClick(action)}\n className=\"markdown-flow-editor-toolbar-right-button\"\n aria-label={ariaLabel}\n title={action.label || action.tooltip}\n >\n {action.icon ? (\n <span className=\"toolbar-right-icon\">{action.icon}</span>\n ) : null}\n {action.label ? (\n <span className=\"toolbar-right-label\">{action.label}</span>\n ) : null}\n </button>\n );\n const wrapped = action.tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"top\"\n dir={portalDirection}\n lang={portalLanguage}\n >\n {action.tooltip}\n </TooltipContent>\n </Tooltip>\n ) : (\n button\n );\n return (\n <div\n className=\"markdown-flow-editor-toolbar-right-item\"\n key={action.key}\n >\n {wrapped}\n </div>\n );\n })}\n </div>\n );\n }, [\n disabled,\n editorApi,\n handleToolbarActionClick,\n portalDirection,\n portalLanguage,\n toolbarActionsRight,\n ]);\n\n useEffect(() => {\n onReady?.(editorApi);\n }, [editorApi]);\n\n return (\n <div\n className=\"markdown-flow-editor\"\n ref={editorRootRef}\n dir={direction}\n lang={language}\n data-disabled={disabled ? \"true\" : undefined}\n aria-disabled={disabled}\n >\n <EditorToolbar\n disabled={disabled}\n enableVariables={!questionMode}\n labels={toolbarLabels}\n tooltipDirection={portalDirection}\n tooltipLanguage={portalLanguage}\n onSelect={onSelectedOption}\n onInsertVariablePlaceholder={insertVariableTemplate}\n onVariableSearchToggle={handleVariableSearchToggle}\n onVariableSearchClose={closeVariableSearch}\n onInsertConfirmOutput={insertConfirmOutputMarker}\n onInsertLink={insertLinkTemplate}\n onInsertButton={insertButtonTemplate}\n onInsertSingleChoice={insertSingleChoiceTemplate}\n onInsertMultiChoice={insertMultiChoiceTemplate}\n onInsertInputField={insertInputFieldTemplate}\n variableSearchActive={isVariableSearchOpen}\n rightSlot={toolbarRightSlot}\n />\n {!questionMode && (\n <VariableSearchDropdown\n open={isVariableSearchOpen}\n anchorElement={variableSearchAnchorRef.current}\n onClose={closeVariableSearch}\n onSelect={handleSelectVariable}\n variables={variables}\n systemVariables={systemVariables}\n labels={variableSearchLabels}\n />\n )}\n <div className=\"markdown-flow-editor-body relative overflow-auto\">\n <EditorContext.Provider value={editorContextValue}>\n <CodeMirror\n extensions={editorExtensions}\n basicSetup={{\n lineNumbers: false,\n searchKeymap: false,\n syntaxHighlighting: true,\n highlightActiveLine: true,\n highlightActiveLineGutter: true,\n foldGutter: false,\n }}\n className=\"rounded-md\"\n placeholder={placeholderText}\n value={content}\n theme=\"light\"\n minHeight=\"2rem\"\n editable={!disabled}\n onChange={handleContentChange}\n onBlur={onBlur}\n />\n {!disabled && (\n <CustomDialog\n dir={portalDirection}\n lang={portalLanguage}\n labels={{\n closeButtonLabel: t(\"dialogCloseLabel\"),\n title:\n selectedOption === SelectedOption.Image\n ? t(\"dialogTitleImage\")\n : selectedOption === SelectedOption.Video\n ? t(\"dialogTitleVideo\")\n : selectedOption === SelectedOption.Variable\n ? t(\"dialogTitleVariable\")\n : t(\"dialogTitle\"),\n }}\n >\n {selectedOption === SelectedOption.Image && (\n <ImageInject\n value={selectContentInfo?.value}\n onSelect={handleSelectImage}\n uploadProps={uploadProps}\n />\n )}\n {selectedOption === SelectedOption.Video && (\n <VideoInject\n value={selectContentInfo?.value}\n onSelect={handleSelectVideo}\n />\n )}\n </CustomDialog>\n )}\n\n {!disabled && !questionMode && (\n <CustomPopover dir={portalDirection} lang={portalLanguage}>\n <VariableSelect\n variables={variables}\n systemVariables={systemVariables}\n selectedName={selectContentInfo?.value?.variableName}\n onSelect={handleSelectVariable}\n onAddVariable={(variable) => {\n setVariables((prev) => {\n const normalized = variable.name;\n const exists = prev.some(\n (item) => item.name === normalized\n );\n if (exists) {\n return prev;\n }\n return [variable, ...prev];\n });\n }}\n />\n </CustomPopover>\n )}\n </EditorContext.Provider>\n </div>\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["i18next","editorLocaleResources","lng","resource","initReactI18next","DEFAULT_EDITOR_LOCALE","EMPTY_VARIABLES","isCursorInsideVariableExpression","content","cursorPosition","marker","findDocumentVariableMarkers","buildVariableTemplate","variableName","formatVariableReference","Editor","editMode","questionMode","initialVariables","initialSystemVariables","onChange","onBlur","locale","lang","uploadProps","disabled","toolbarActionsRight","onReady","t","i18n","useTranslation","resolvedLocale","normalizeMarkdownFlowLocale","direction","getMarkdownFlowDirection","language","getMarkdownFlowLanguage","useEffect","currentStrings","getEditorLocaleMessages","toolbarLabels","useMemo","variableSearchLabels","placeholderText","normalizedSystemVariables","seen","variable","name","normalizeVariableName","normalizedCustomVariables","systemNameSet","dialogOpen","setDialogOpen","useState","popoverOpen","setPopoverOpen","editorRootRef","useRef","portalLanguage","useDetachedLanguage","portalDirection","useResolvedDirection","popoverPosition","setPopoverPosition","variables","setVariables","systemVariables","setSystemVariables","selectedOption","setSelectedOption","SelectedOption","selectContentInfo","setSelectContentInfo","editorViewRef","pendingVariableContentRef","variableSearchAnchorRef","variableSearchOpen","setVariableSearchOpen","closeVariableSearch","useCallback","handleVariableSearchToggle","button","editorContextValue","addVariablesFromContent","text","names","extractVariableNames","prev","existingNames","addedNames","newVariables","rawName","normalized","onSelectedOption","option","state","pos","coords","insertText","dispatch","from","replaceSelection","selection","focusEditor","getContent","setContent","view","deleteSelectedContent","to","insertVariableContent","range","placeCursorAtEnd","template","cursorOffset","insertVariableTemplate","insertConfirmOutputMarker","insertLinkTemplate","insertButtonTemplate","insertSingleChoiceTemplate","optionLabel1","optionLabel2","insertMultiChoiceTemplate","insertInputFieldTemplate","placeholder","handleSelectImage","resourceUrl","resourceTitle","scalePercent","textToInsert","getImageContentToInsert","handleSelectVideo","getVideoContentToInsert","handleSelectVariable","selectionRange","slashCommandsExtension","autocompletion","createSlashCommands","handleEditorUpdate","update","docText","handleTagClick","event","type","dataset","target","value","parseContentInfo","rect","anchorDirection","handleWrap","e","imagePlaceholderTitle","videoPlaceholderTitle","mediaPlaceholderLabelsExtension","mediaPlaceholderLabels","editorExtensions","extensions","EditorView","markdown","syntaxHighlighting","defaultHighlightStyle","QuestionSyntaxHighlighter","SyntaxHighlighter","ImgPlaceholder","VideoPlaceholder","VariablePlaceholder","handleContentChange","isVariableSearchOpen","editorApi","handleToolbarActionClick","action","toolbarRightSlot","jsx","ariaLabel","jsxs","wrapped","Tooltip","TooltipTrigger","TooltipContent","EditorToolbar","VariableSearchDropdown","EditorContext","CodeMirror","CustomDialog","ImageInject","VideoInject","CustomPopover","VariableSelect","item"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEKA,GAAQ,gBAQX,OAAO,QAAQC,EAAqB,EAAE,QAAQ,CAAC,CAACC,GAAKC,CAAQ,MAAM;AACjEH,EAAAA,GAAQ;AAAA,IACNE;AAAA,IACA;AAAA,IACAC,EAAS;AAAA,IACT;AAAA,IACA;AAAA,EAAA;AAEJ,CAAC,IAfDH,GAAQ,IAAII,EAAgB,EAAE,KAAK;AAAA,EACjC,WAAWH;AAAA,EACX,KAAKI;AAAA,EACL,aAAaA;AAAA,EACb,eAAe,EAAE,aAAa,GAAA;AAAM,CACrC;AAoCH,MAAMC,KAA8B,CAAA,GAG9BC,KAAmC,CACvCC,GACAC,MACG;AACH,MAAI,CAACD,KAAWC,IAAiB;AAC/B,WAAO;AAET,aAAWC,KAAUC,8BAA4BH,CAAO;AACtD,QACEE,EAAO,SAAS,QAChBD,KAAkBC,EAAO,QAAQ,KACjCD,KAAkBC,EAAO,MAAM;AAE/B,aAAO;AAIX,SAAO;AACT,GAEME,KAAwB,CAACC,IAAe,OAC5CA,IAAeC,EAAAA,wBAAwBD,CAAY,IAAI,UAEnDE,KAAgC,CAAC;AAAA,EACrC,SAAAP,IAAU;AAAA,EACV,UAAAQ,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,WAAWC;AAAA,EACX,iBAAiBC;AAAA,EACjB,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,qBAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACJ,QAAM,EAAE,GAAAC,GAAG,MAAAC,EAAA,IAASC,GAAA,GACdC,IAAiBC;AAAA,IACrBV,KAAUjB;AAAA,EAAA,GAEN4B,KAAYC,GAAyBZ,CAAM,GAC3Ca,KAAWZ,MAAQa,GAAwBd,CAAM;AAEvD,EAAAe,EAAU,MAAM;AACd,IAAIR,EAAK,aAAaE,KACpBF,EAAK,eAAeE,CAAc;AAAA,EAEtC,GAAG,CAACF,GAAME,CAAc,CAAC;AAEzB,QAAMO,IAAiBC,GAAwBR,CAAc,GACvDS,IAAgBC;AAAA,IACpB,OAAO;AAAA,MACL,OAAOb,EAAE,sBAAsB;AAAA,QAC7B,cAAc;AAAA,MAAA,CACf;AAAA,MACD,OAAOA,EAAE,sBAAsB;AAAA,QAC7B,cAAc;AAAA,MAAA,CACf;AAAA,MACD,UAAUA,EAAE,iBAAiB;AAAA,QAC3B,cAAc;AAAA,MAAA,CACf;AAAA,MACD,aAAaA,EAAE,4BAA4B;AAAA,QACzC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,QAAQA,EAAE,iCAAiC;AAAA,QACzC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,eAAeA,EAAE,wBAAwB;AAAA,QACvC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,YAAYA,EAAE,qBAAqB;AAAA,QACjC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,cAAcA,EAAE,uBAAuB;AAAA,QACrC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,oBAAoBA,EAAE,6BAA6B;AAAA,QACjD,cAAc;AAAA,MAAA,CACf;AAAA,MACD,mBAAmBA,EAAE,4BAA4B;AAAA,QAC/C,cAAc;AAAA,MAAA,CACf;AAAA,MACD,aAAaA,EAAE,sBAAsB;AAAA,QACnC,cAAc;AAAA,MAAA,CACf;AAAA,MACD,qBAAqBA,EAAE,wBAAwB;AAAA,QAC7C,cAAc;AAAA,MAAA,CACf;AAAA,MACD,qBAAqBA,EAAE,wBAAwB;AAAA,QAC7C,cAAc;AAAA,MAAA,CACf;AAAA,MACD,kBAAkBA,EAAE,2BAA2B;AAAA,QAC7C,cAAc;AAAA,MAAA,CACf;AAAA,IAAA;AAAA,IAEH,CAACA,CAAC;AAAA,EAAA,GAEEc,KAAuBD;AAAA,IAC3B,OAAO;AAAA,MACL,mBAAmBb,EAAE,6BAA6B;AAAA,QAChD,cAAc;AAAA,MAAA,CACf;AAAA,MACD,aAAaA,EAAE,yBAAyB,kBAAkB;AAAA,MAC1D,aAAaA,EAAE,yBAAyB,kBAAkB;AAAA,MAC1D,YAAYA,EAAE,oBAAoB,oBAAoB;AAAA,IAAA;AAAA,IAExD,CAACA,CAAC;AAAA,EAAA,GAEEe,KACJ3B,MAAa,cACTY,EAAE,wBAAwB;AAAA,IACxB,cAAcA,EAAE,uBAAuB;AAAA,MACrC,cAAcA,EAAE,aAAa;AAAA,IAAA,CAC9B;AAAA,EAAA,CACF,IACDA,EAAE,uBAAuB,EAAE,cAAcA,EAAE,aAAa,GAAG,GAE3DgB,IAA4BH,EAAQ,MAAM;AAC9C,UAAMI,wBAAW,IAAA;AACjB,YAAQ1B,MAA0Bb,IAAiB,QAAQ,CAACwC,MAAa;AACvE,YAAMC,IACJ,OAAOD,GAAU,QAAS,WACtBE,wBAAsBF,EAAS,IAAI,IACnC;AACN,aAAIC,MAAS,QAAQF,EAAK,IAAIE,CAAI,IAAU,CAAA,KAC5CF,EAAK,IAAIE,CAAI,GACN,CAAC,EAAE,GAAGD,GAAU,MAAAC,GAAM;AAAA,IAC/B,CAAC;AAAA,EACH,GAAG,CAAC5B,EAAsB,CAAC,GAErB8B,IAA4BR,EAAQ,MAAM;AAC9C,UAAMS,IAAgB,IAAI;AAAA,MACxBN,EAA0B,IAAI,CAACE,MAAaA,EAAS,IAAI;AAAA,IAAA,GAErDD,wBAAW,IAAA;AACjB,YAAQ3B,MAAoBZ,IAAiB,QAAQ,CAACwC,MAAa;AACjE,YAAMC,IACJ,OAAOD,GAAU,QAAS,WACtBE,wBAAsBF,EAAS,IAAI,IACnC;AACN,aAAIC,MAAS,QAAQG,EAAc,IAAIH,CAAI,KAAKF,EAAK,IAAIE,CAAI,IAAU,CAAA,KACvEF,EAAK,IAAIE,CAAI,GACN,CAAC,EAAE,GAAGD,GAAU,MAAAC,GAAM;AAAA,IAC/B,CAAC;AAAA,EACH,GAAG,CAAC7B,IAAkB0B,CAAyB,CAAC,GAE1C,CAACO,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAaC,CAAc,IAAIF,EAAS,EAAK,GAC9CG,IAAgBC,EAAuB,IAAI,GAC3CC,IAAiBC,GAAoBH,GAAerB,EAAQ,GAC5D,EAAE,mBAAmByB,EAAA,IAAoBC;AAAA,IAC7CL;AAAA,IACAvB;AAAA,EAAA,GAEI,CAAC6B,IAAiBC,CAAkB,IACxCV,EAAiC,IAAI,GACjC,CAACW,IAAWC,EAAY,IAAIZ;AAAA,IAChCJ;AAAA,EAAA,GAEI,CAACiB,GAAiBC,EAAkB,IAAId;AAAA,IAC5CT;AAAA,EAAA;AAGF,EAAAP,EAAU,MAAM;AACd,IAAA4B,GAAahB,CAAyB;AAAA,EACxC,GAAG,CAACA,CAAyB,CAAC,GAE9BZ,EAAU,MAAM;AACd,IAAA8B,GAAmBvB,CAAyB;AAAA,EAC9C,GAAG,CAACA,CAAyB,CAAC;AAE9B,QAAM,CAACwB,GAAgBC,CAAiB,IAAIhB;AAAA,IAC1CiB,EAAe;AAAA,EAAA,GAEX,CAACC,GAAmBC,CAAoB,IAC5CnB,EAAA,GACIoB,IAAgBhB,EAA0B,IAAI,GAC9CiB,IAA4BjB,EAAsB,IAAI,GACtDkB,IAA0BlB,EAAiC,IAAI,GAC/D,CAACmB,IAAoBC,EAAqB,IAAIxB,EAAS,EAAK,GAC5DyB,IAAsBC,EAAY,MAAM;AAC5C,IAAAF,GAAsB,EAAK,GAC3BF,EAAwB,UAAU;AAAA,EACpC,GAAG,CAAA,CAAE;AAEL,EAAAtC,EAAU,MAAM;AACd,IAAIpB,KACF6D,EAAA;AAAA,EAEJ,GAAG,CAACA,GAAqB7D,CAAY,CAAC;AACtC,QAAM+D,KAA6BD;AAAA,IACjC,CAACE,MAA8B;AAC7B,UAAI,CAAAxD,GAGJ;AAAA,YAAImD,MAAsBD,EAAwB,YAAYM,GAAQ;AACpE,UAAAH,EAAA;AACA;AAAA,QACF;AACA,QAAAH,EAAwB,UAAUM,GAClCJ,GAAsB,EAAI;AAAA;AAAA,IAC5B;AAAA,IACA,CAACC,GAAqBrD,GAAUmD,EAAkB;AAAA,EAAA,GAG9CM,KAAqC;AAAA,IACzC,gBAAAd;AAAA,IACA,mBAAAC;AAAA,IACA,YAAAlB;AAAA,IACA,eAAAC;AAAA,IACA,aAAAE;AAAA,IACA,gBAAAC;AAAA,IACA,iBAAAO;AAAA,IACA,oBAAAC;AAAA,EAAA;AAGF,EAAA1B,EAAU,MAAM;AACd,IAAKZ,MAGL2B,EAAc,EAAK,GACnBG,EAAe,EAAK,GACpBc,EAAkBC,EAAe,KAAK,GACtCE,EAAqB,IAAI,GACzBT,EAAmB,IAAI,GACvBe,EAAA;AAAA,EACF,GAAG;AAAA,IACDA;AAAA,IACArD;AAAA,IACA2B;AAAA,IACAG;AAAA,IACAQ;AAAA,IACAM;AAAA,IACAG;AAAA,EAAA,CACD;AAED,QAAMW,IAA0BJ;AAAA,IAC9B,CAACK,MAAiB;AAChB,UAAInE,KAAgBD,MAAa,eAAsB,CAACoE;AACtD;AAGF,YAAMC,IAAQC,EAAAA,qBAAqBF,CAAI;AACvC,UAAI,CAACC,EAAM;AACT;AAGF,YAAMnC,IAAgB,IAAI;AAAA,QACxBgB,EAAgB,IAAI,CAACpB,MAAaA,EAAS,IAAI;AAAA,MAAA;AAGjD,MAAAmB,GAAa,CAACsB,MAAS;AACrB,cAAMC,IAAgB,IAAI,IAAID,EAAK,IAAI,CAACzC,MAAaA,EAAS,IAAI,CAAC,GAC7D2C,wBAAiB,IAAA,GACjBC,IAA2B,CAAA;AAgBjC,eAdAL,EAAM,QAAQ,CAACM,MAAY;AACzB,gBAAMC,IAAaD;AACnB,UACE,CAACA,KACDzC,EAAc,IAAI0C,CAAU,KAC5BJ,EAAc,IAAII,CAAU,KAC5BH,EAAW,IAAIG,CAAU,MAI3BF,EAAa,KAAK,EAAE,MAAMC,EAAA,CAAS,GACnCF,EAAW,IAAIG,CAAU;AAAA,QAC3B,CAAC,GAEIF,EAAa,SAIX,CAAC,GAAGA,GAAc,GAAGH,CAAI,IAHvBA;AAAA,MAIX,CAAC;AAAA,IACH;AAAA,IACA,CAACvE,GAAUC,GAAciD,CAAe;AAAA,EAAA;AAG1C,EAAA7B,EAAU,MAAM;AACd,IAAA8C,EAAwB3E,CAAO;AAAA,EACjC,GAAG,CAACA,GAAS2E,CAAuB,CAAC;AA6CrC,QAAMU,KAAmBd;AAAA,IACvB,CAACe,MAA2B;AAC1B,UAAI,EAAArE,KAAaR,KAAgB6E,MAAWxB,EAAe;AA0B3D,YAvBAQ,EAAA,GAqBAT,EAAkByB,CAAM,GAEpBA,MAAWxB,EAAe,UAAU;AACtC,cAAIG,EAAc,SAAS;AACzB,kBAAM,EAAE,OAAAsB,MAAUtB,EAAc,SAC1BuB,IAAMD,EAAM,UAAU,KAAK,MAC3BE,IAASxB,EAAc,QAAQ,YAAYuB,CAAG;AACpD,YAAIC,KACFlC,EAAmB;AAAA,cACjB,GAAGkC,EAAO;AAAA,cACV,GAAGA,EAAO;AAAA,YAAA,CACX;AAAA,UAEL;AACA,UAAA1C,EAAe,EAAI;AAAA,QACrB;AACE,UAAAH,EAAc,EAAI;AAAA,IAEtB;AAAA,IACA,CAAC0B,GAAqBrD,GAAUR,CAAY;AAAA,EAAA,GAGxCiF,IAAanB;AAAA,IACjB,CAACK,MAAiB;AAChB,UAAI3D,KAAY,CAACgD,EAAc,QAAS;AAExC,YAAM,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAa1B,EAAc,SACpC2B,IAAOL,EAAM,UAAU,KAAK;AAElC,MAAAI,EAAS;AAAA,QACP,SAAS,EAAE,MAAAC,GAAM,QAAQhB,EAAA;AAAA,QACzB,WAAW,EAAE,QAAQgB,IAAOhB,EAAK,OAAA;AAAA,MAAO,CACzC;AAAA,IACH;AAAA,IACA,CAACX,GAAehD,CAAQ;AAAA,EAAA,GAGpB4E,KAAmBtB;AAAA,IACvB,CAACK,MAAiB;AAChB,UAAI3D,KAAY,CAACgD,EAAc;AAC7B;AAEF,YAAM,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAa1B,EAAc,SACpC6B,IAAYP,EAAM,UAAU;AAClC,MAAAI,EAAS;AAAA,QACP,SAAS,EAAE,MAAMG,EAAU,MAAM,IAAIA,EAAU,IAAI,QAAQlB,EAAA;AAAA,QAC3D,WAAW,EAAE,QAAQkB,EAAU,OAAOlB,EAAK,OAAA;AAAA,MAAO,CACnD;AAAA,IACH;AAAA,IACA,CAAC3D,CAAQ;AAAA,EAAA,GAGL8E,KAAcxB,EAAY,MAAM;AACpC,IAAAN,EAAc,SAAS,MAAA;AAAA,EACzB,GAAG,CAAA,CAAE,GAEC+B,KAAazB,EAAY,MACtBN,EAAc,SAAS,MAAM,IAAI,cAAc,IACrD,CAAA,CAAE,GAECgC,KAAa1B;AAAA,IACjB,CAACK,MAAiB;AAChB,UAAI3D;AACF;AAEF,UAAI,CAACgD,EAAc,SAAS;AAC1B,QAAArD,IAAWgE,CAAI;AACf;AAAA,MACF;AACA,YAAMsB,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO;AAC5B,MAAAP,EAAS;AAAA,QACP,SAAS,EAAE,MAAM,GAAG,IAAIJ,EAAM,IAAI,QAAQ,QAAQX,EAAA;AAAA,QAClD,WAAW,EAAE,QAAQA,EAAK,OAAA;AAAA,MAAO,CAClC;AAAA,IACH;AAAA,IACA,CAAC3D,GAAUL,CAAQ;AAAA,EAAA,GAGfuF,IAAwB5B,EAAY,MAAM;AAI9C,QAHItD,KAIF,CAAC8C,KACD,CAACE,EAAc,WACfF,EAAkB,SAAS;AAE3B;AAEF,UAAM,EAAE,MAAA6B,GAAM,IAAAQ,EAAA,IAAOrC,GACf,EAAE,UAAA4B,MAAa1B,EAAc;AAEnC,IAAA0B,EAAS;AAAA,MACP,SAAS,EAAE,MAAAC,GAAM,IAAAQ,GAAI,QAAQ,GAAA;AAAA,IAAG,CACjC;AAAA,EACH,GAAG,CAACrC,GAAmBE,GAAehD,CAAQ,CAAC,GAEzCoF,IAAwB9B;AAAA,IAC5B,CACElE,GACAiG,GACAC,IAAmB,OAChB;AACH,UAAItF,KAAY,CAACgD,EAAc;AAC7B;AAEF,YAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYQ,KAASf,EAAM,UAAU,MACrCiB,IAAWpG,GAAsBC,CAAY;AACnD,UAAI,CAACmG,EAAU;AACf,YAAMjE,IAAOC,EAAAA,sBAAsBnC,CAAY,KAAK,IAC9CoG,KAAeF,IAAmBC,EAAS,SAAS,IAAIjE,EAAK;AAEnE,MAAAoD,EAAS;AAAA,QACP,SAAS;AAAA,UACP,MAAMG,EAAU;AAAA,UAChB,IAAIA,EAAU;AAAA,UACd,QAAQU;AAAA,QAAA;AAAA,QAEV,WAAW;AAAA,UACT,QAAQV,EAAU,OAAOW;AAAA,QAAA;AAAA,MAC3B,CACD,GACDP,EAAK,MAAA;AAAA,IACP;AAAA,IACA,CAACjF,CAAQ;AAAA,EAAA,GAGLyF,KAAyBnC,EAAY,MAAM;AAC/C,IAAItD,MAGJqD,EAAA,GACA+B,EAAsB,EAAE;AAAA,EAC1B,GAAG,CAAC/B,GAAqBrD,GAAUoF,CAAqB,CAAC,GAEnDM,KAA4BpC,EAAY,MAAM;AAClD,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU;AAElC,IAAAI,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QALa;AAAA,MAKL;AAAA,MAEV,WAAW;AAAA,QACT,QAAQA,EAAU,OAAO;AAAA,MAAA;AAAA,IAC3B,CACD,GACDI,EAAK,MAAA;AAAA,EACP,GAAG,CAACjF,CAAQ,CAAC,GAEP2F,KAAqBrC,EAAY,MAAM;AAC3C,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU;AAElC,IAAAI,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QALa;AAAA,MAKL;AAAA,MAEV,WAAW;AAAA,QACT,QAAQA,EAAU,OAAO;AAAA,MAAA;AAAA,IAC3B,CACD,GACDI,EAAK,MAAA;AAAA,EACP,GAAG,CAACjF,CAAQ,CAAC,GAEP4F,KAAuBtC,EAAY,MAAM;AAC7C,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU;AAElC,IAAAI,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QALa;AAAA,MAKL;AAAA,MAEV,WAAW;AAAA,QACT,QAAQA,EAAU,OAAO;AAAA,MAAA;AAAA,IAC3B,CACD,GACDI,EAAK,MAAA;AAAA,EACP,GAAG,CAACjF,CAAQ,CAAC,GAEP6F,KAA6BvC,EAAY,MAAM;AACnD,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU,MAC5BwB,IAAe/E,EAAc,qBAC7BgF,IAAehF,EAAc,qBAC7BwE,IAAW,SAAS/F,IAAeqB,EAAe,sBAAsB,EAAE,OAAOiF,CAAY,MAAMC,CAAY;AACrH,IAAArB,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QAAQU;AAAA,MAAA;AAAA,MAEV,WAAW;AAAA,QACT,QAAQV,EAAU,OAAO;AAAA,QACzB,MACEA,EAAU,OACV,KACCrF,IAAeqB,EAAe,oBAAoB,SAAS;AAAA,MAAA;AAAA,IAChE,CACD,GACDoE,EAAK,MAAA;AAAA,EACP,GAAG;AAAA,IACDjF;AAAA,IACAe,EAAc;AAAA,IACdA,EAAc;AAAA,IACdvB;AAAA,IACAqB,EAAe;AAAA,EAAA,CAChB,GAEKmF,KAA4B1C,EAAY,MAAM;AAClD,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU,MAC5BwB,IAAe/E,EAAc,qBAC7BgF,IAAehF,EAAc,qBAC7BwE,IAAW,SAAS/F,IAAeqB,EAAe,sBAAsB,EAAE,OAAOiF,CAAY,OAAOC,CAAY;AACtH,IAAArB,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QAAQU;AAAA,MAAA;AAAA,MAEV,WAAW;AAAA,QACT,QAAQV,EAAU,OAAO;AAAA,QACzB,MACEA,EAAU,OACV,KACCrF,IAAeqB,EAAe,oBAAoB,SAAS;AAAA,MAAA;AAAA,IAChE,CACD,GACDoE,EAAK,MAAA;AAAA,EACP,GAAG;AAAA,IACDjF;AAAA,IACAe,EAAc;AAAA,IACdA,EAAc;AAAA,IACdvB;AAAA,IACAqB,EAAe;AAAA,EAAA,CAChB,GAEKoF,KAA2B3C,EAAY,MAAM;AACjD,QAAItD,KAAY,CAACgD,EAAc;AAC7B;AAEF,UAAMiC,IAAOjC,EAAc,SACrB,EAAE,OAAAsB,GAAO,UAAAI,EAAA,IAAaO,GACtBJ,IAAYP,EAAM,UAAU,MAC5B4B,IAAcnF,EAAc,oBAAoB,OAChDwE,IAAW,SAAS/F,IAAeqB,EAAe,sBAAsB,EAAE,SAASqF,CAAW;AACpG,IAAAxB,EAAS;AAAA,MACP,SAAS;AAAA,QACP,MAAMG,EAAU;AAAA,QAChB,IAAIA,EAAU;AAAA,QACd,QAAQU;AAAA,MAAA;AAAA,MAEV,WAAW;AAAA,QACT,QAAQV,EAAU,OAAO;AAAA,QACzB,MACEA,EAAU,OACV,KACCrF,IAAeqB,EAAe,oBAAoB,SAAS;AAAA,MAAA;AAAA,IAChE,CACD,GACDoE,EAAK,MAAA;AAAA,EACP,GAAG;AAAA,IACDjF;AAAA,IACAe,EAAc;AAAA,IACdvB;AAAA,IACAqB,EAAe;AAAA,EAAA,CAChB,GAEKsF,KAAoB7C;AAAA,IACxB,CAAC;AAAA,MACC,aAAA8C;AAAA,MACA,eAAAC;AAAA,MACA,cAAAC;AAAA,IAAA,MAKI;AACJ,UAAI,CAACF,KAAepG,EAAU;AAC9B,YAAMuG,IAAeC,GAAwB;AAAA,QAC3C,aAAAJ;AAAA,QACA,eAAAC;AAAA,QACA,cAAAC;AAAA,MAAA,CACD;AACD,UAAIxD,GAAmB,SAASD,EAAe,OAAO;AAEpD,YADAqC,EAAA,GACI,CAAClC,EAAc,QAAS;AAC5B,cAAM,EAAE,UAAA0B,MAAa1B,EAAc;AACnC,QAAA0B,EAAS;AAAA,UACP,SAAS,EAAE,MAAM5B,EAAkB,MAAM,QAAQyD,EAAA;AAAA,QAAa,CAC/D;AAAA,MACH;AACE,QAAA9B,EAAW8B,CAAY;AAEzB,MAAA5E,EAAc,EAAK;AAAA,IACrB;AAAA,IACA,CAACuD,GAAuBlF,GAAUyE,GAAY3B,CAAiB;AAAA,EAAA,GAG3D2D,KAAoBnD;AAAA,IACxB,CAAC;AAAA,MACC,aAAA8C;AAAA,MACA,eAAAC;AAAA,IAAA,MAII;AACJ,UAAIrG;AACF;AAEF,YAAMuG,IAAeG,GAAwBN,GAAaC,CAAa;AACvE,UAAIvD,GAAmB,SAASD,EAAe,OAAO;AAEpD,YADAqC,EAAA,GACI,CAAClC,EAAc,QAAS;AAC5B,cAAM,EAAE,UAAA0B,MAAa1B,EAAc;AACnC,QAAA0B,EAAS;AAAA,UACP,SAAS,EAAE,MAAM5B,EAAkB,MAAM,QAAQyD,EAAA;AAAA,QAAa,CAC/D;AAAA,MACH;AACE,QAAA9B,EAAW8B,CAAY;AAEzB,MAAA5E,EAAc,EAAK;AAAA,IACrB;AAAA,IACA,CAACuD,GAAuBlF,GAAUyE,GAAY3B,CAAiB;AAAA,EAAA,GAG3D6D,KAAuBrD;AAAA,IAC3B,CAACjC,MAAuB;AACtB,UAAIrB;AACF;AAEF,YAAM4G,IACJ9D,GAAmB,SAASD,EAAe,WACvC,EAAE,MAAMC,EAAkB,MAAM,IAAIA,EAAkB,GAAA,IACtD;AACN,MAAAsC,EAAsB/D,EAAS,MAAMuF,GAAgB,EAAI,GACzD9E,EAAe,EAAK,GACpBuB,EAAA;AAAA,IACF;AAAA,IACA,CAACrD,GAAUoF,GAAuBtC,GAAmBO,CAAmB;AAAA,EAAA,GAGpEwD,KAAyBvD,EAAY,MAClCwD,GAAe;AAAA,IACpB,UAAU;AAAA,MACRC;AAAA,QACE3C;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,OAAOvD,EAAe;AAAA,UACtB,OAAOA,EAAe;AAAA,UACtB,UAAUA,EAAe;AAAA,QAAA;AAAA,QAE3B,EAAE,iBAAiB,CAACrB,EAAA;AAAA,MAAa;AAAA,IACnC;AAAA,EACF,CACD,GACA;AAAA;AAAA;AAAA,IAGDqB,EAAe;AAAA,IACfA,EAAe;AAAA,IACfA,EAAe;AAAA,IACfuD;AAAA,IACA5E;AAAA,EAAA,CACD,GAiBKwH,KAAqB1D;AAAA,IACzB,CAAC2D,MAAuB;AAEtB,UADAjE,EAAc,UAAUiE,EAAO,MAE7B,CAACzH,KACDD,MAAa,eACb0D,EAA0B,WAC1BgE,EAAO,cACP;AACA,cAAMjI,IAAiBiI,EAAO,MAAM,UAAU,KAAK,MAC7CC,IAAUD,EAAO,MAAM,IAAI,SAAA;AAKjC,QAJoBnI;AAAA,UAClBoI;AAAA,UACAlI;AAAA,QAAA,MAGA0E,EAAwBwD,CAAO,GAC/BjE,EAA0B,UAAU;AAAA,MAExC;AAAA,IACF;AAAA,IACA,CAACS,GAAyBnE,GAAUC,CAAY;AAAA,EAAA,GAG5C2H,KAAiB7D;AAAA,IACrB,CAAC8D,MAAe;AAEd,UADAA,EAAM,gBAAA,GACFpH;AACF;AAEF,YAAM,EAAE,MAAAqH,GAAM,MAAA1C,GAAM,IAAAQ,GAAI,SAAAmC,GAAS,QAAAC,EAAA,IAAWH,EAAM;AAClD,UAAI5H,KAAgB6H,MAASxE,EAAe,SAAU;AACtD,YAAM2E,IAAQC,GAAiBJ,GAAMC,CAAO;AAS5C,UARAvE,EAAqB;AAAA,QACnB,MAAAsE;AAAA,QACA,OAAAG;AAAA,QACA,MAAA7C;AAAA,QACA,IAAAQ;AAAA,MAAA,CACD,GACDvC,EAAkByE,CAAI,GAElBA,MAASxE,EAAe,UAAU;AACpC,YAAI0E,GAAQ;AACV,gBAAMG,IAAOH,EAAO,sBAAA,GACdI,IACJJ,EAAO,cAAc,aAAa;AAAA,YAChCxF,EAAc,WAAWwF;AAAA,UAAA,EACzB;AACJ,UAAAjF,EAAmB;AAAA,YACjB,GAAGqF,MAAoB,QAAQD,EAAK,QAAQA,EAAK;AAAA,YACjD,GAAGA,EAAK;AAAA,UAAA,CACT;AAAA,QACH;AACA,QAAA5F,EAAe,EAAI;AAAA,MACrB;AACE,QAAAH,EAAc,EAAI;AAAA,IAEtB;AAAA,IACA,CAAC3B,GAAUR,CAAY;AAAA,EAAA;AAGzB,EAAAoB,EAAU,MAAM;AACd,IAAKc,MACHkB,EAAkBC,EAAe,KAAK,GACtCE,EAAqB,IAAI;AAAA,EAE7B,GAAG,CAACrB,CAAU,CAAC,GAEfd,EAAU,MAAM;AACd,IAAI,CAACiB,KAAec,MAAmBE,EAAe,aACpDD,EAAkBC,EAAe,KAAK,GACtCE,EAAqB,IAAI;AAAA,EAE7B,GAAG,CAAClB,GAAac,CAAc,CAAC,GAEhC/B,EAAU,MAAM;AACd,UAAMgH,IAAa,CAACC,MAAW;AAC7B,MAAIA,EAAE,OAAO,SAAS7E,EAAc,WAClCmE,GAAeU,CAAC;AAAA,IAEpB;AACA,kBAAO,iBAAiB,kBAAkBD,CAAU,GAC7C,MAAM;AACX,aAAO,oBAAoB,kBAAkBA,CAAU;AAAA,IACzD;AAAA,EACF,GAAG,CAACT,EAAc,CAAC;AAEnB,QAAMW,KAAwB3H,EAAE,mBAAmB,GAC7C4H,KAAwB5H,EAAE,mBAAmB,GAC7C6H,KAAkChH;AAAA,IACtC,MACEiH,GAAuB,GAAG;AAAA,MACxB,OAAOH;AAAA,MACP,OAAOC;AAAA,IAAA,CACR;AAAA,IACH,CAACD,IAAuBC,EAAqB;AAAA,EAAA,GAGzCG,KAAmBlH,EAAQ,MAAM;AACrC,UAAMmH,IAAa;AAAA,MACjBC,GAAW;AAAA,MACXC,GAAA;AAAA,MACAC,GAAmBC,EAAqB;AAAA,MACxC/I,IAAegJ,KAA4BC;AAAA,IAAA;AAG7C,WAAKzI,KACHmI,EAAW,KAAKtB,IAAwB,GAGtCtH,MAAa,gBACf4I,EAAW;AAAA,MACTH;AAAA,MACAU;AAAA,MACAC;AAAA;AAAA;AAAA,IAAA,GAIGnJ,KAAc2I,EAAW,KAAKS,EAAmB,IAGxDT,EAAW;AAAA,MACTC,GAAW,eAAe,GAAG,CAACnB,MAAW;AACvC,QAAAD,GAAmBC,CAAM;AAAA,MAC3B,CAAC;AAAA,IAAA,GAGIkB;AAAA,EACT,GAAG;AAAA,IACDnI;AAAA,IACAT;AAAA,IACAsH;AAAA,IACAG;AAAA,IACAgB;AAAA,IACAxI;AAAA,EAAA,CACD,GAEKqJ,KAAsBvF;AAAA,IAC1B,CAACkE,MAAkB;AACjB,UAAIxH;AACF;AAEF,UAAIR,GAAc;AAChB,QAAAG,IAAW6H,CAAK;AAChB;AAAA,MACF;AACA,YAAMxI,IACJgE,EAAc,SAAS,MAAM,UAAU,KAAK,QAAQ;AAKtD,MAJqBlE;AAAA,QACnB0I;AAAA,QACAxI;AAAA,MAAA,IAGAiE,EAA0B,UAAUuE,KAEpCvE,EAA0B,UAAU,MACpCS,EAAwB8D,CAAK,IAE/B7H,IAAW6H,CAAK;AAAA,IAClB;AAAA,IACA,CAAC9D,GAAyB/D,GAAUK,GAAUR,CAAY;AAAA,EAAA,GAGtDsJ,KAAuB,CAACtJ,KAAgB,CAACQ,KAAYmD,IACrD4F,IAAY/H;AAAA,IAChB,OAAO;AAAA,MACL,oBAAoByD;AAAA,MACpB,kBAAAG;AAAA,MACA,OAAOE;AAAA,MACP,YAAAC;AAAA,MACA,YAAAC;AAAA,IAAA;AAAA,IAEF,CAACF,IAAaC,IAAYN,GAAYG,IAAkBI,EAAU;AAAA,EAAA,GAG9DgE,KAA2B1F;AAAA,IAC/B,CAAC2F,MAAyB;AACxB,MAAIjJ,KAAY,YAAYiJ,KAG5BA,EAAO,UAAUF,CAAS;AAAA,IAC5B;AAAA,IACA,CAAC/I,GAAU+I,CAAS;AAAA,EAAA,GAGhBG,KAAmBlI,EAAQ,MAC1Bf,GAAqB,2BAIvB,OAAA,EAAI,WAAU,sCACZ,UAAAA,EAAoB,IAAI,CAACgJ,MAAW;AACnC,QAAI,YAAYA;AACd,aACE,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UAGT,UAAAF,EAAO,OAAOF,CAAS;AAAA,QAAA;AAAA,QAFnBE,EAAO;AAAA,MAAA;AAMlB,UAAMG,IAAYH,EAAO,SAASA,EAAO,WAAW,QAC9CzF,IACJ,gBAAA6F;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QAEL,UAAUrJ,KAAYiJ,EAAO;AAAA,QAC7B,SAAS,MAAMD,GAAyBC,CAAM;AAAA,QAC9C,WAAU;AAAA,QACV,cAAYG;AAAA,QACZ,OAAOH,EAAO,SAASA,EAAO;AAAA,QAE7B,UAAA;AAAA,UAAAA,EAAO,OACN,gBAAAE,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAF,EAAO,MAAK,IAChD;AAAA,UACHA,EAAO,QACN,gBAAAE,EAAC,QAAA,EAAK,WAAU,uBAAuB,UAAAF,EAAO,OAAM,IAClD;AAAA,QAAA;AAAA,MAAA;AAAA,MAZCA,EAAO;AAAA,IAAA,GAeVK,IAAUL,EAAO,UACrB,gBAAAI,EAACE,IAAA,EACC,UAAA;AAAA,MAAA,gBAAAJ,EAACK,IAAA,EAAe,SAAO,IAAE,UAAAhG,GAAO;AAAA,MAChC,gBAAA2F;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,KAAKtH;AAAA,UACL,MAAMF;AAAA,UAEL,UAAAgH,EAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACV,EAAA,CACF,IAEAzF;AAEF,WACE,gBAAA2F;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QAGT,UAAAG;AAAA,MAAA;AAAA,MAFIL,EAAO;AAAA,IAAA;AAAA,EAKlB,CAAC,EAAA,CACH,IAzDO,MA2DR;AAAA,IACDjJ;AAAA,IACA+I;AAAA,IACAC;AAAA,IACA7G;AAAA,IACAF;AAAA,IACAhC;AAAA,EAAA,CACD;AAED,SAAAW,EAAU,MAAM;AACd,IAAAV,KAAU6I,CAAS;AAAA,EACrB,GAAG,CAACA,CAAS,CAAC,GAGZ,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAKtH;AAAA,MACL,KAAKvB;AAAA,MACL,MAAME;AAAA,MACN,iBAAeV,IAAW,SAAS;AAAA,MACnC,iBAAeA;AAAA,MAEf,UAAA;AAAA,QAAA,gBAAAmJ;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,UAAA1J;AAAA,YACA,iBAAiB,CAACR;AAAA,YAClB,QAAQuB;AAAA,YACR,kBAAkBoB;AAAA,YAClB,iBAAiBF;AAAA,YACjB,UAAUmC;AAAA,YACV,6BAA6BqB;AAAA,YAC7B,wBAAwBlC;AAAA,YACxB,uBAAuBF;AAAA,YACvB,uBAAuBqC;AAAA,YACvB,cAAcC;AAAA,YACd,gBAAgBC;AAAA,YAChB,sBAAsBC;AAAA,YACtB,qBAAqBG;AAAA,YACrB,oBAAoBC;AAAA,YACpB,sBAAsB6C;AAAA,YACtB,WAAWI;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,CAAC1J,KACA,gBAAA2J;AAAA,UAACQ;AAAA,UAAA;AAAA,YACC,MAAMb;AAAA,YACN,eAAe5F,EAAwB;AAAA,YACvC,SAASG;AAAA,YACT,UAAUsD;AAAA,YACV,WAAApE;AAAA,YACA,iBAAAE;AAAA,YACA,QAAQxB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZ,gBAAAkI,EAAC,SAAI,WAAU,oDACb,4BAACS,GAAc,UAAd,EAAuB,OAAOnG,IAC7B,UAAA;AAAA,UAAA,gBAAA0F;AAAA,YAACU;AAAAA,YAAA;AAAA,cACC,YAAY3B;AAAA,cACZ,YAAY;AAAA,gBACV,aAAa;AAAA,gBACb,cAAc;AAAA,gBACd,oBAAoB;AAAA,gBACpB,qBAAqB;AAAA,gBACrB,2BAA2B;AAAA,gBAC3B,YAAY;AAAA,cAAA;AAAA,cAEd,WAAU;AAAA,cACV,aAAahH;AAAA,cACb,OAAOnC;AAAA,cACP,OAAM;AAAA,cACN,WAAU;AAAA,cACV,UAAU,CAACiB;AAAA,cACX,UAAU6I;AAAA,cACV,QAAAjJ;AAAA,YAAA;AAAA,UAAA;AAAA,UAED,CAACI,KACA,gBAAAqJ;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,KAAK3H;AAAA,cACL,MAAMF;AAAA,cACN,QAAQ;AAAA,gBACN,kBAAkB9B,EAAE,kBAAkB;AAAA,gBACtC,OACEwC,MAAmBE,EAAe,QAC9B1C,EAAE,kBAAkB,IACpBwC,MAAmBE,EAAe,QAChC1C,EAAE,kBAAkB,IACpBwC,MAAmBE,EAAe,WAChC1C,EAAE,qBAAqB,IACvBA,EAAE,aAAa;AAAA,cAAA;AAAA,cAG1B,UAAA;AAAA,gBAAAwC,MAAmBE,EAAe,SACjC,gBAAAsG;AAAA,kBAACY;AAAA,kBAAA;AAAA,oBACC,OAAOjH,GAAmB;AAAA,oBAC1B,UAAUqD;AAAA,oBACV,aAAApG;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH4C,MAAmBE,EAAe,SACjC,gBAAAsG;AAAA,kBAACa;AAAA,kBAAA;AAAA,oBACC,OAAOlH,GAAmB;AAAA,oBAC1B,UAAU2D;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,UAAA;AAAA,UAKL,CAACzG,KAAY,CAACR,uBACZyK,IAAA,EAAc,KAAK9H,GAAiB,MAAMF,GACzC,UAAA,gBAAAkH;AAAA,YAACe;AAAA,YAAA;AAAA,cACC,WAAA3H;AAAA,cACA,iBAAAE;AAAA,cACA,cAAcK,GAAmB,OAAO;AAAA,cACxC,UAAU6D;AAAA,cACV,eAAe,CAACtF,MAAa;AAC3B,gBAAAmB,GAAa,CAACsB,MAAS;AACrB,wBAAMK,IAAa9C,EAAS;AAI5B,yBAHeyC,EAAK;AAAA,oBAClB,CAACqG,MAASA,EAAK,SAAShG;AAAA,kBAAA,IAGjBL,IAEF,CAACzC,GAAU,GAAGyC,CAAI;AAAA,gBAC3B,CAAC;AAAA,cACH;AAAA,YAAA;AAAA,UAAA,EACF,CACF;AAAA,QAAA,EAAA,CAEJ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
1
|
+
{"version":3,"file":"MarkdownFlowEditor.es.js","sources":["../../../src/components/MarkdownFlowEditor/MarkdownFlowEditor.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef, useEffect, useMemo } from \"react\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport { autocompletion } from \"@codemirror/autocomplete\";\nimport { EditorView, ViewUpdate } from \"@codemirror/view\";\nimport { markdown } from \"@codemirror/lang-markdown\";\nimport {\n syntaxHighlighting,\n defaultHighlightStyle,\n} from \"@codemirror/language\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/tooltip\";\nimport CustomDialog from \"./components/CustomDialog\";\nimport EditorToolbar from \"./components/EditorToolbar\";\nimport EditorContext from \"./editor-context\";\nimport ImageInject from \"./components/ImageInject\";\nimport VideoInject from \"./components/VideoInject\";\nimport {\n SelectedOption,\n IEditorContext,\n Variable,\n SelectContentInfo,\n EditorAction,\n EditorApi,\n} from \"./types\";\nimport \"./markdownFlowEditor.css\";\n\nimport {\n createSlashCommands,\n parseContentInfo,\n getImageContentToInsert,\n getVideoContentToInsert,\n} from \"./utils\";\nimport ImgPlaceholder from \"./plugins/ImgPlaceholder\";\nimport VideoPlaceholder from \"./plugins/VideoPlaceholder\";\nimport { mediaPlaceholderLabels } from \"./plugins/mediaPlaceholderLabels\";\nimport SyntaxHighlighter from \"./plugins/SyntaxHighlighter\";\n// import createFixedTextPlaceholder from \"./plugins/FixedTextPlaceholder\";\n// import DividerPlaceholder from \"./plugins/DividerPlaceholder\";\nimport { initReactI18next, useTranslation } from \"react-i18next\";\nimport i18next from \"i18next\";\nimport { UploadProps } from \"./uploadTypes\";\nimport {\n DEFAULT_EDITOR_LOCALE,\n editorLocaleResources,\n getEditorLocaleMessages,\n} from \"./editorI18n\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport { useDetachedLanguage } from \"../../lib/useDetachedLanguage\";\nimport { useResolvedDirection } from \"../../lib/useResolvedDirection\";\n\nif (!i18next.isInitialized) {\n i18next.use(initReactI18next).init({\n resources: editorLocaleResources,\n lng: DEFAULT_EDITOR_LOCALE,\n fallbackLng: DEFAULT_EDITOR_LOCALE,\n interpolation: { escapeValue: false },\n });\n} else {\n Object.entries(editorLocaleResources).forEach(([lng, resource]) => {\n i18next.addResourceBundle(\n lng,\n \"translation\",\n resource.translation,\n true,\n true\n );\n });\n}\n\nexport enum EditMode {\n CodeEdit = \"codeEdit\",\n QuickEdit = \"quickEdit\",\n}\n\ntype EditorProps = {\n content?: string;\n editMode?: EditMode;\n /** @deprecated Variable picking is no longer supported. Retained for compatibility. */\n variables?: Variable[];\n /** @deprecated Variable picking is no longer supported. Retained for compatibility. */\n systemVariables?: Variable[];\n onChange?: (value: string) => void;\n onBlur?: () => void;\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n uploadProps?: UploadProps;\n disabled?: boolean;\n toolbarActionsRight?: EditorAction[];\n onReady?: (api: EditorApi) => void;\n};\n\nconst Editor: React.FC<EditorProps> = ({\n content = \"\",\n editMode = EditMode.CodeEdit,\n onChange,\n onBlur,\n locale,\n lang,\n uploadProps,\n disabled = false,\n toolbarActionsRight,\n onReady,\n}) => {\n const { t, i18n } = useTranslation();\n const resolvedLocale = normalizeMarkdownFlowLocale(\n locale ?? DEFAULT_EDITOR_LOCALE\n );\n const direction = getMarkdownFlowDirection(locale);\n const language = lang ?? getMarkdownFlowLanguage(locale);\n\n useEffect(() => {\n if (i18n.language !== resolvedLocale) {\n i18n.changeLanguage(resolvedLocale);\n }\n }, [i18n, resolvedLocale]);\n\n const currentStrings = getEditorLocaleMessages(resolvedLocale);\n const toolbarLabels = useMemo(\n () => ({\n image: t(\"toolbarInsertImage\", {\n defaultValue: \"Insert image\",\n }),\n video: t(\"toolbarInsertVideo\", {\n defaultValue: \"Insert video\",\n }),\n confirmOutput: t(\"toolbarConfirmOutput\", {\n defaultValue: \"Confirm output\",\n }),\n insertLink: t(\"toolbarInsertLink\", {\n defaultValue: \"Insert link\",\n }),\n insertButton: t(\"toolbarInsertButton\", {\n defaultValue: \"Insert button\",\n }),\n insertSingleChoice: t(\"toolbarInsertSingleChoice\", {\n defaultValue: \"Insert single choice\",\n }),\n insertMultiChoice: t(\"toolbarInsertMultiChoice\", {\n defaultValue: \"Insert multi choice\",\n }),\n insertInput: t(\"toolbarInsertInput\", {\n defaultValue: \"Insert input\",\n }),\n singleChoiceOption1: t(\"toolbarChoiceOption1\", {\n defaultValue: \"Option 1\",\n }),\n singleChoiceOption2: t(\"toolbarChoiceOption2\", {\n defaultValue: \"Option 2\",\n }),\n inputPlaceholder: t(\"toolbarInputPlaceholder\", {\n defaultValue: \"Please enter\",\n }),\n }),\n [t]\n );\n const placeholderText =\n editMode === EditMode.QuickEdit\n ? t(\"placeholderQuickEdit\", {\n defaultValue: t(\"placeholderCodeEdit\", {\n defaultValue: t(\"placeholder\"),\n }),\n })\n : t(\"placeholderCodeEdit\", { defaultValue: t(\"placeholder\") });\n const [dialogOpen, setDialogOpen] = useState(false);\n const editorRootRef = useRef<HTMLDivElement>(null);\n const portalLanguage = useDetachedLanguage(editorRootRef, language);\n const { resolvedDirection: portalDirection } = useResolvedDirection(\n editorRootRef,\n direction\n );\n const [selectedOption, setSelectedOption] = useState<SelectedOption>(\n SelectedOption.Empty\n );\n const [selectContentInfo, setSelectContentInfo] =\n useState<SelectContentInfo | null>();\n const editorViewRef = useRef<EditorView | null>(null);\n const editorContextValue: IEditorContext = {\n selectedOption,\n setSelectedOption,\n dialogOpen,\n setDialogOpen,\n };\n\n useEffect(() => {\n if (!disabled) {\n return;\n }\n setDialogOpen(false);\n setSelectedOption(SelectedOption.Empty);\n setSelectContentInfo(null);\n }, [disabled, setDialogOpen, setSelectedOption, setSelectContentInfo]);\n\n // const insertFixedText = useCallback(() => {\n // if (!editorViewRef.current) return;\n // const view = editorViewRef.current;\n // const { state, dispatch } = view;\n // const selection = state.selection.main;\n // const selectedText = state.sliceDoc(selection.from, selection.to);\n // const startTag = \"===\";\n // const endTag = \"===\";\n // const insertContent = `${startTag}${selectedText ?? \"\"}${endTag}`;\n\n // dispatch({\n // changes: {\n // from: selection.from,\n // to: selection.to,\n // insert: insertContent,\n // },\n // selection: {\n // anchor: selection.from + startTag.length + (selectedText?.length ?? 0),\n // },\n // });\n // view.focus();\n // }, []);\n\n // const insertDivider = useCallback(() => {\n // if (!editorViewRef.current) return;\n // const view = editorViewRef.current;\n // const { state, dispatch } = view;\n // const selection = state.selection.main;\n // const insertContent = `\\n\\n---\\n\\n`;\n\n // dispatch({\n // changes: {\n // from: selection.from,\n // to: selection.to,\n // insert: insertContent,\n // },\n // selection: {\n // anchor: selection.from + insertContent.length,\n // },\n // });\n // view.focus();\n // }, []);\n\n const onSelectedOption = useCallback(\n (option: SelectedOption) => {\n if (disabled) {\n return;\n }\n // if (option === SelectedOption.FixedText) {\n // insertFixedText();\n // setSelectedOption(SelectedOption.Empty);\n // setDialogOpen(false);\n // setSelectContentInfo(null);\n // return;\n // }\n\n // if (option === SelectedOption.Divider) {\n // insertDivider();\n // setSelectedOption(SelectedOption.Empty);\n // setDialogOpen(false);\n // setSelectContentInfo(null);\n // return;\n // }\n\n setSelectedOption(option);\n\n setDialogOpen(true);\n },\n [disabled]\n );\n\n const insertText = useCallback(\n (text: string) => {\n if (disabled || !editorViewRef.current) return;\n\n const { state, dispatch } = editorViewRef.current;\n const from = state.selection.main.from;\n\n dispatch({\n changes: { from, insert: text },\n selection: { anchor: from + text.length },\n });\n },\n [editorViewRef, disabled]\n );\n\n const replaceSelection = useCallback(\n (text: string) => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const { state, dispatch } = editorViewRef.current;\n const selection = state.selection.main;\n dispatch({\n changes: { from: selection.from, to: selection.to, insert: text },\n selection: { anchor: selection.from + text.length },\n });\n },\n [disabled]\n );\n\n const focusEditor = useCallback(() => {\n editorViewRef.current?.focus();\n }, []);\n\n const getContent = useCallback(() => {\n return editorViewRef.current?.state.doc.toString() ?? \"\";\n }, []);\n\n const setContent = useCallback(\n (text: string) => {\n if (disabled) {\n return;\n }\n if (!editorViewRef.current) {\n onChange?.(text);\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n dispatch({\n changes: { from: 0, to: state.doc.length, insert: text },\n selection: { anchor: text.length },\n });\n },\n [disabled, onChange]\n );\n\n const deleteSelectedContent = useCallback(() => {\n if (disabled) {\n return;\n }\n if (\n !selectContentInfo ||\n !editorViewRef.current ||\n selectContentInfo.from === -1\n )\n return;\n\n const { from, to } = selectContentInfo;\n const { dispatch } = editorViewRef.current;\n\n dispatch({\n changes: { from, to, insert: \"\" },\n });\n }, [selectContentInfo, editorViewRef, disabled]);\n\n const insertConfirmOutputMarker = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"======\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 3,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertLinkTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"[]()\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 1,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertButtonTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const template = \"?[]\";\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 2,\n },\n });\n view.focus();\n }, [disabled]);\n\n const insertSingleChoiceTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const optionLabel1 = toolbarLabels.singleChoiceOption1;\n const optionLabel2 = toolbarLabels.singleChoiceOption2;\n const template = `?[%{{ }} ${optionLabel1} | ${optionLabel2}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n },\n });\n view.focus();\n }, [\n disabled,\n toolbarLabels.singleChoiceOption1,\n toolbarLabels.singleChoiceOption2,\n ]);\n\n const insertMultiChoiceTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const optionLabel1 = toolbarLabels.singleChoiceOption1;\n const optionLabel2 = toolbarLabels.singleChoiceOption2;\n const template = `?[%{{ }} ${optionLabel1} || ${optionLabel2}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n },\n });\n view.focus();\n }, [\n disabled,\n toolbarLabels.singleChoiceOption1,\n toolbarLabels.singleChoiceOption2,\n ]);\n\n const insertInputFieldTemplate = useCallback(() => {\n if (disabled || !editorViewRef.current) {\n return;\n }\n const view = editorViewRef.current;\n const { state, dispatch } = view;\n const selection = state.selection.main;\n const placeholder = toolbarLabels.inputPlaceholder ?? \"请输入\";\n const template = `?[%{{ }}...${placeholder}]`;\n dispatch({\n changes: {\n from: selection.from,\n to: selection.to,\n insert: template,\n },\n selection: {\n anchor: selection.from + 6,\n },\n });\n view.focus();\n }, [disabled, toolbarLabels.inputPlaceholder]);\n\n const handleSelectImage = useCallback(\n ({\n resourceUrl,\n resourceTitle,\n scalePercent,\n }: {\n resourceUrl?: string;\n resourceTitle?: string;\n scalePercent?: number;\n }) => {\n if (!resourceUrl || disabled) return;\n const textToInsert = getImageContentToInsert({\n resourceUrl,\n resourceTitle,\n scalePercent,\n });\n if (selectContentInfo?.type === SelectedOption.Image) {\n deleteSelectedContent();\n if (!editorViewRef.current) return;\n const { dispatch } = editorViewRef.current;\n dispatch({\n changes: { from: selectContentInfo.from, insert: textToInsert },\n });\n } else {\n insertText(textToInsert);\n }\n setDialogOpen(false);\n },\n [deleteSelectedContent, disabled, insertText, selectContentInfo]\n );\n\n const handleSelectVideo = useCallback(\n ({\n resourceUrl,\n resourceTitle,\n }: {\n resourceUrl: string;\n resourceTitle: string;\n }) => {\n if (disabled) {\n return;\n }\n const textToInsert = getVideoContentToInsert(resourceUrl, resourceTitle);\n if (selectContentInfo?.type === SelectedOption.Video) {\n deleteSelectedContent();\n if (!editorViewRef.current) return;\n const { dispatch } = editorViewRef.current;\n dispatch({\n changes: { from: selectContentInfo.from, insert: textToInsert },\n });\n } else {\n insertText(textToInsert);\n }\n setDialogOpen(false);\n },\n [deleteSelectedContent, disabled, insertText, selectContentInfo]\n );\n\n const slashCommandsExtension = useCallback(() => {\n return autocompletion({\n override: [\n createSlashCommands(onSelectedOption, {\n // divider: currentStrings.slashDivider,\n // fixedText: currentStrings.slashFixedText,\n image: currentStrings.slashImage,\n video: currentStrings.slashVideo,\n }),\n ],\n });\n }, [\n // currentStrings.slashDivider,\n // currentStrings.slashFixedText,\n currentStrings.slashImage,\n currentStrings.slashVideo,\n onSelectedOption,\n ]);\n\n // const fixedTextPlaceholderExtension = useMemo(\n // () =>\n // createFixedTextPlaceholder(\n // currentStrings.fixedTextPlaceholder ?? \"添加固定文本\",\n // currentStrings.fixedTextTooltip ??\n // currentStrings.slashFixedText ??\n // \"固定文本\"\n // ),\n // [\n // currentStrings.fixedTextPlaceholder,\n // currentStrings.fixedTextTooltip,\n // currentStrings.slashFixedText,\n // ]\n // );\n\n const handleEditorUpdate = useCallback((update: ViewUpdate) => {\n editorViewRef.current = update.view;\n }, []);\n\n const handleTagClick = useCallback(\n (event: any) => {\n event.stopPropagation();\n if (disabled) {\n return;\n }\n const { type, from, to, dataset } = event.detail;\n const value = parseContentInfo(type, dataset);\n setSelectContentInfo({\n type,\n value,\n from,\n to,\n });\n setSelectedOption(type);\n\n setDialogOpen(true);\n },\n [disabled]\n );\n\n useEffect(() => {\n if (!dialogOpen) {\n setSelectedOption(SelectedOption.Empty);\n setSelectContentInfo(null);\n }\n }, [dialogOpen]);\n\n useEffect(() => {\n const handleWrap = (e: any) => {\n if (e.detail.view === editorViewRef.current) {\n handleTagClick(e);\n }\n };\n window.addEventListener(\"globalTagClick\", handleWrap);\n return () => {\n window.removeEventListener(\"globalTagClick\", handleWrap);\n };\n }, [handleTagClick]);\n\n const imagePlaceholderTitle = t(\"imageDefaultTitle\");\n const videoPlaceholderTitle = t(\"videoDefaultTitle\");\n const mediaPlaceholderLabelsExtension = useMemo(\n () =>\n mediaPlaceholderLabels.of({\n image: imagePlaceholderTitle,\n video: videoPlaceholderTitle,\n }),\n [imagePlaceholderTitle, videoPlaceholderTitle]\n );\n\n const editorExtensions = useMemo(() => {\n const extensions = [\n EditorView.lineWrapping,\n markdown(),\n syntaxHighlighting(defaultHighlightStyle),\n SyntaxHighlighter,\n ];\n\n if (!disabled) {\n extensions.push(slashCommandsExtension());\n }\n\n if (editMode === EditMode.QuickEdit) {\n extensions.push(\n mediaPlaceholderLabelsExtension,\n ImgPlaceholder,\n VideoPlaceholder\n // fixedTextPlaceholderExtension,\n // DividerPlaceholder,\n );\n }\n\n extensions.push(\n EditorView.updateListener.of((update) => {\n handleEditorUpdate(update);\n })\n );\n\n return extensions;\n }, [\n disabled,\n editMode,\n slashCommandsExtension,\n handleEditorUpdate,\n mediaPlaceholderLabelsExtension,\n ]);\n\n const handleContentChange = useCallback(\n (value: string) => {\n if (disabled) {\n return;\n }\n onChange?.(value);\n },\n [onChange, disabled]\n );\n\n const editorApi = useMemo(\n () => ({\n insertTextAtCursor: insertText,\n replaceSelection,\n focus: focusEditor,\n getContent,\n setContent,\n }),\n [focusEditor, getContent, insertText, replaceSelection, setContent]\n );\n\n const handleToolbarActionClick = useCallback(\n (action: EditorAction) => {\n if (disabled || \"render\" in action) {\n return;\n }\n action.onClick?.(editorApi);\n },\n [disabled, editorApi]\n );\n\n const toolbarRightSlot = useMemo(() => {\n if (!toolbarActionsRight?.length) {\n return null;\n }\n return (\n <div className=\"markdown-flow-editor-toolbar-right\">\n {toolbarActionsRight.map((action) => {\n if (\"render\" in action) {\n return (\n <div\n className=\"markdown-flow-editor-toolbar-right-item\"\n key={action.key}\n >\n {action.render(editorApi)}\n </div>\n );\n }\n const ariaLabel = action.label || action.tooltip || undefined;\n const button = (\n <button\n type=\"button\"\n key={action.key}\n disabled={disabled || action.disabled}\n onClick={() => handleToolbarActionClick(action)}\n className=\"markdown-flow-editor-toolbar-right-button\"\n aria-label={ariaLabel}\n title={action.label || action.tooltip}\n >\n {action.icon ? (\n <span className=\"toolbar-right-icon\">{action.icon}</span>\n ) : null}\n {action.label ? (\n <span className=\"toolbar-right-label\">{action.label}</span>\n ) : null}\n </button>\n );\n const wrapped = action.tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"top\"\n dir={portalDirection}\n lang={portalLanguage}\n >\n {action.tooltip}\n </TooltipContent>\n </Tooltip>\n ) : (\n button\n );\n return (\n <div\n className=\"markdown-flow-editor-toolbar-right-item\"\n key={action.key}\n >\n {wrapped}\n </div>\n );\n })}\n </div>\n );\n }, [\n disabled,\n editorApi,\n handleToolbarActionClick,\n portalDirection,\n portalLanguage,\n toolbarActionsRight,\n ]);\n\n useEffect(() => {\n onReady?.(editorApi);\n }, [editorApi]);\n\n return (\n <div\n className=\"markdown-flow-editor\"\n ref={editorRootRef}\n dir={direction}\n lang={language}\n data-disabled={disabled ? \"true\" : undefined}\n aria-disabled={disabled}\n >\n <EditorToolbar\n disabled={disabled}\n labels={toolbarLabels}\n tooltipDirection={portalDirection}\n tooltipLanguage={portalLanguage}\n onSelect={onSelectedOption}\n onInsertConfirmOutput={insertConfirmOutputMarker}\n onInsertLink={insertLinkTemplate}\n onInsertButton={insertButtonTemplate}\n onInsertSingleChoice={insertSingleChoiceTemplate}\n onInsertMultiChoice={insertMultiChoiceTemplate}\n onInsertInputField={insertInputFieldTemplate}\n rightSlot={toolbarRightSlot}\n />\n <div className=\"markdown-flow-editor-body relative overflow-auto\">\n <EditorContext.Provider value={editorContextValue}>\n <CodeMirror\n extensions={editorExtensions}\n basicSetup={{\n lineNumbers: false,\n searchKeymap: false,\n syntaxHighlighting: true,\n highlightActiveLine: true,\n highlightActiveLineGutter: true,\n foldGutter: false,\n }}\n className=\"rounded-md\"\n placeholder={placeholderText}\n value={content}\n theme=\"light\"\n minHeight=\"2rem\"\n editable={!disabled}\n onChange={handleContentChange}\n onBlur={onBlur}\n />\n {!disabled && (\n <CustomDialog\n dir={portalDirection}\n lang={portalLanguage}\n labels={{\n closeButtonLabel: t(\"dialogCloseLabel\"),\n title:\n selectedOption === SelectedOption.Image\n ? t(\"dialogTitleImage\")\n : selectedOption === SelectedOption.Video\n ? t(\"dialogTitleVideo\")\n : t(\"dialogTitle\"),\n }}\n >\n {selectedOption === SelectedOption.Image && (\n <ImageInject\n value={selectContentInfo?.value}\n onSelect={handleSelectImage}\n uploadProps={uploadProps}\n />\n )}\n {selectedOption === SelectedOption.Video && (\n <VideoInject\n value={selectContentInfo?.value}\n onSelect={handleSelectVideo}\n />\n )}\n </CustomDialog>\n )}\n </EditorContext.Provider>\n </div>\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["i18next","editorLocaleResources","lng","resource","initReactI18next","DEFAULT_EDITOR_LOCALE","Editor","content","editMode","onChange","onBlur","locale","lang","uploadProps","disabled","toolbarActionsRight","onReady","t","i18n","useTranslation","resolvedLocale","normalizeMarkdownFlowLocale","direction","getMarkdownFlowDirection","language","getMarkdownFlowLanguage","useEffect","currentStrings","getEditorLocaleMessages","toolbarLabels","useMemo","placeholderText","dialogOpen","setDialogOpen","useState","editorRootRef","useRef","portalLanguage","useDetachedLanguage","portalDirection","useResolvedDirection","selectedOption","setSelectedOption","SelectedOption","selectContentInfo","setSelectContentInfo","editorViewRef","editorContextValue","onSelectedOption","useCallback","option","insertText","text","state","dispatch","from","replaceSelection","selection","focusEditor","getContent","setContent","view","deleteSelectedContent","to","insertConfirmOutputMarker","insertLinkTemplate","insertButtonTemplate","insertSingleChoiceTemplate","optionLabel1","optionLabel2","template","insertMultiChoiceTemplate","insertInputFieldTemplate","handleSelectImage","resourceUrl","resourceTitle","scalePercent","textToInsert","getImageContentToInsert","handleSelectVideo","getVideoContentToInsert","slashCommandsExtension","autocompletion","createSlashCommands","handleEditorUpdate","update","handleTagClick","event","type","dataset","value","parseContentInfo","handleWrap","e","imagePlaceholderTitle","videoPlaceholderTitle","mediaPlaceholderLabelsExtension","mediaPlaceholderLabels","editorExtensions","extensions","EditorView","markdown","syntaxHighlighting","defaultHighlightStyle","SyntaxHighlighter","ImgPlaceholder","VideoPlaceholder","handleContentChange","editorApi","handleToolbarActionClick","action","toolbarRightSlot","jsx","ariaLabel","button","jsxs","wrapped","Tooltip","TooltipTrigger","TooltipContent","EditorToolbar","EditorContext","CodeMirror","CustomDialog","ImageInject","VideoInject"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),l=require("react"),j=require("../types.cjs"),q=require("./icons/ButtonIcon.cjs"),e=require("../../ui/tooltip.cjs"),y=require("../../../node_modules/lucide-react/dist/esm/icons/circle-check.cjs"),v=require("../../../node_modules/lucide-react/dist/esm/icons/square-check.cjs"),w=require("../../../node_modules/lucide-react/dist/esm/icons/text-cursor-input.cjs"),z=require("../../../node_modules/lucide-react/dist/esm/icons/file-type.cjs"),I=require("../../../node_modules/lucide-react/dist/esm/icons/image.cjs"),O=require("../../../node_modules/lucide-react/dist/esm/icons/square-play.cjs"),n=18,W=({disabled:o=!1,labels:i,tooltipDirection:x,tooltipLanguage:C,onSelect:s,onInsertConfirmOutput:c,onInsertButton:u,onInsertSingleChoice:h,onInsertMultiChoice:d,onInsertInputField:a,rightSlot:p})=>{const T=l.useCallback(()=>{o||c?.()},[o,c]),g=l.useCallback(()=>{o||u?.()},[o,u]),k=l.useCallback(()=>{o||h?.()},[o,h]),f=l.useCallback(()=>{o||d?.()},[o,d]),m=l.useCallback(()=>{o||a?.()},[o,a]),r={dir:x,lang:C,side:"top"};return t.jsx(e.TooltipProvider,{delayDuration:150,children:t.jsxs("div",{className:"markdown-flow-editor-toolbar","aria-disabled":o,children:[t.jsxs("div",{className:"markdown-flow-editor-toolbar-left",children:[t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:k,"aria-label":i.insertSingleChoice,title:i.insertSingleChoice,children:t.jsx(y.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.insertSingleChoice??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:f,"aria-label":i.insertMultiChoice,title:i.insertMultiChoice,children:t.jsx(v.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.insertMultiChoice??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:m,"aria-label":i.insertInput,title:i.insertInput,children:t.jsx(w.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.insertInput??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:g,"aria-label":i.insertButton,title:i.insertButton,children:t.jsx(q.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.insertButton??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:T,"aria-label":i.confirmOutput,title:i.confirmOutput,children:t.jsx(z.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.confirmOutput??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:()=>s(j.SelectedOption.Image),"aria-label":i.image,title:i.image,children:t.jsx(I.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.image??""})]}),t.jsxs(e.Tooltip,{children:[t.jsx(e.TooltipTrigger,{asChild:!0,children:t.jsx("button",{type:"button",disabled:o,onClick:()=>s(j.SelectedOption.Video),"aria-label":i.video,title:i.video,children:t.jsx(O.default,{strokeWidth:1.75,size:n})})}),t.jsx(e.TooltipContent,{...r,children:i.video??""})]})]}),p?t.jsx("div",{className:"markdown-flow-editor-toolbar-right-wrapper",children:p}):null]})})},S=l.memo(W);exports.default=S;
|
|
2
2
|
//# sourceMappingURL=EditorToolbar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorToolbar.cjs","sources":["../../../../src/components/MarkdownFlowEditor/components/EditorToolbar.tsx"],"sourcesContent":["import { memo, useCallback } from \"react\";\nimport {\n Braces,\n FileType,\n Image as ImageIcon,\n TextCursorInput,\n // Link,\n SquareCheck,\n SquarePlay,\n CircleCheck,\n} from \"lucide-react\";\nimport { SelectedOption } from \"../types\";\nimport SearchBracesIcon from \"./icons/SearchBracesIcon\";\nimport ButtonIcon from \"./icons/ButtonIcon\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\nimport type { MarkdownFlowDirection } from \"../../../lib/locale\";\n\ntype ToolbarLabels = {\n confirmOutput: string | undefined;\n insertLink: string | undefined;\n insertButton: string | undefined;\n insertSingleChoice: string | undefined;\n insertMultiChoice: string | undefined;\n insertInput: string | undefined;\n variable: string;\n image: string;\n video: string;\n addVariable: string;\n search: string;\n};\n\ninterface EditorToolbarProps {\n disabled?: boolean;\n enableVariables?: boolean;\n labels: ToolbarLabels;\n tooltipDirection?: MarkdownFlowDirection;\n tooltipLanguage?: string;\n onSelect: (selectedOption: SelectedOption) => void;\n onInsertVariablePlaceholder?: () => void;\n onVariableSearchToggle?: (button: HTMLButtonElement) => void;\n onVariableSearchClose?: () => void;\n onInsertConfirmOutput?: () => void;\n onInsertLink?: () => void;\n onInsertButton?: () => void;\n onInsertSingleChoice?: () => void;\n onInsertMultiChoice?: () => void;\n onInsertInputField?: () => void;\n variableSearchActive?: boolean;\n rightSlot?: React.ReactNode;\n}\n\n/**\n * EditorToolbar renders quick action buttons that mirror the slash commands.\n */\nconst ICON_SIZE = 18;\n\nconst EditorToolbar: React.FC<EditorToolbarProps> = ({\n disabled = false,\n enableVariables = true,\n labels,\n tooltipDirection,\n tooltipLanguage,\n onSelect,\n onInsertVariablePlaceholder,\n onVariableSearchToggle,\n onVariableSearchClose,\n onInsertConfirmOutput,\n // onInsertLink,\n onInsertButton,\n onInsertSingleChoice,\n onInsertMultiChoice,\n onInsertInputField,\n variableSearchActive = false,\n rightSlot,\n}) => {\n const handleAddVariable = useCallback(() => {\n if (disabled) {\n return;\n }\n onVariableSearchClose?.();\n onInsertVariablePlaceholder?.();\n }, [disabled, onInsertVariablePlaceholder, onVariableSearchClose]);\n\n const handleSearchToggle = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n return;\n }\n onVariableSearchToggle?.(event.currentTarget);\n },\n [disabled, onVariableSearchToggle]\n );\n\n const handleConfirmOutput = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertConfirmOutput?.();\n }, [disabled, onInsertConfirmOutput]);\n\n // const handleInsertLink = useCallback(() => {\n // if (disabled) {\n // return;\n // }\n // onInsertLink?.();\n // }, [disabled, onInsertLink]);\n\n const handleInsertButton = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertButton?.();\n }, [disabled, onInsertButton]);\n\n const handleInsertSingleChoice = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertSingleChoice?.();\n }, [disabled, onInsertSingleChoice]);\n\n const handleInsertMultiChoice = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertMultiChoice?.();\n }, [disabled, onInsertMultiChoice]);\n\n const handleInsertInputField = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertInputField?.();\n }, [disabled, onInsertInputField]);\n\n const tooltipContentProps = {\n dir: tooltipDirection,\n lang: tooltipLanguage,\n side: \"top\" as const,\n };\n\n return (\n <TooltipProvider delayDuration={150}>\n <div className=\"markdown-flow-editor-toolbar\" aria-disabled={disabled}>\n <div className=\"markdown-flow-editor-toolbar-left\">\n {enableVariables && (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleAddVariable}\n >\n <Braces strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.addVariable ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleSearchToggle}\n data-active={\n !disabled && variableSearchActive ? \"true\" : undefined\n }\n aria-label={labels.search}\n title={labels.search}\n >\n <SearchBracesIcon strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.search ?? \"\"}\n </TooltipContent>\n </Tooltip>\n </>\n )}\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertSingleChoice}\n aria-label={labels.insertSingleChoice}\n title={labels.insertSingleChoice}\n >\n <CircleCheck strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertSingleChoice ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertMultiChoice}\n aria-label={labels.insertMultiChoice}\n title={labels.insertMultiChoice}\n >\n <SquareCheck strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertMultiChoice ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertInputField}\n aria-label={labels.insertInput}\n title={labels.insertInput}\n >\n <TextCursorInput strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertInput ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertButton}\n aria-label={labels.insertButton}\n title={labels.insertButton}\n >\n <ButtonIcon strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertButton ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleConfirmOutput}\n aria-label={labels.confirmOutput}\n title={labels.confirmOutput}\n >\n <FileType strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.confirmOutput ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onSelect(SelectedOption.Image)}\n aria-label={labels.image}\n title={labels.image}\n >\n <ImageIcon strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.image ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onSelect(SelectedOption.Video)}\n aria-label={labels.video}\n title={labels.video}\n >\n <SquarePlay strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.video ?? \"\"}\n </TooltipContent>\n </Tooltip>\n </div>\n {rightSlot ? (\n <div className=\"markdown-flow-editor-toolbar-right-wrapper\">\n {rightSlot}\n </div>\n ) : null}\n {/* <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertLink}\n aria-label={labels.insertLink}\n title={labels.insertLink}\n >\n <Link strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n {labels.insertLink ?? \"\"}\n </TooltipContent>\n </Tooltip> */}\n </div>\n </TooltipProvider>\n );\n};\n\nexport default memo(EditorToolbar);\n"],"names":["ICON_SIZE","EditorToolbar","disabled","enableVariables","labels","tooltipDirection","tooltipLanguage","onSelect","onInsertVariablePlaceholder","onVariableSearchToggle","onVariableSearchClose","onInsertConfirmOutput","onInsertButton","onInsertSingleChoice","onInsertMultiChoice","onInsertInputField","variableSearchActive","rightSlot","handleAddVariable","useCallback","handleSearchToggle","event","handleConfirmOutput","handleInsertButton","handleInsertSingleChoice","handleInsertMultiChoice","handleInsertInputField","tooltipContentProps","jsx","TooltipProvider","jsxs","Fragment","Tooltip","TooltipTrigger","Braces","TooltipContent","SearchBracesIcon","CircleCheck","SquareCheck","TextCursorInput","ButtonIcon","FileType","SelectedOption","ImageIcon","SquarePlay","EditorToolbar$1","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditorToolbar.cjs","sources":["../../../../src/components/MarkdownFlowEditor/components/EditorToolbar.tsx"],"sourcesContent":["import { memo, useCallback } from \"react\";\nimport {\n FileType,\n Image as ImageIcon,\n TextCursorInput,\n // Link,\n SquareCheck,\n SquarePlay,\n CircleCheck,\n} from \"lucide-react\";\nimport { SelectedOption } from \"../types\";\nimport ButtonIcon from \"./icons/ButtonIcon\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\nimport type { MarkdownFlowDirection } from \"../../../lib/locale\";\n\ntype ToolbarLabels = {\n confirmOutput: string | undefined;\n insertLink: string | undefined;\n insertButton: string | undefined;\n insertSingleChoice: string | undefined;\n insertMultiChoice: string | undefined;\n insertInput: string | undefined;\n image: string;\n video: string;\n};\n\ninterface EditorToolbarProps {\n disabled?: boolean;\n labels: ToolbarLabels;\n tooltipDirection?: MarkdownFlowDirection;\n tooltipLanguage?: string;\n onSelect: (selectedOption: SelectedOption) => void;\n onInsertConfirmOutput?: () => void;\n onInsertLink?: () => void;\n onInsertButton?: () => void;\n onInsertSingleChoice?: () => void;\n onInsertMultiChoice?: () => void;\n onInsertInputField?: () => void;\n rightSlot?: React.ReactNode;\n}\n\n/**\n * EditorToolbar renders quick action buttons that mirror the slash commands.\n */\nconst ICON_SIZE = 18;\n\nconst EditorToolbar: React.FC<EditorToolbarProps> = ({\n disabled = false,\n labels,\n tooltipDirection,\n tooltipLanguage,\n onSelect,\n onInsertConfirmOutput,\n // onInsertLink,\n onInsertButton,\n onInsertSingleChoice,\n onInsertMultiChoice,\n onInsertInputField,\n rightSlot,\n}) => {\n const handleConfirmOutput = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertConfirmOutput?.();\n }, [disabled, onInsertConfirmOutput]);\n\n // const handleInsertLink = useCallback(() => {\n // if (disabled) {\n // return;\n // }\n // onInsertLink?.();\n // }, [disabled, onInsertLink]);\n\n const handleInsertButton = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertButton?.();\n }, [disabled, onInsertButton]);\n\n const handleInsertSingleChoice = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertSingleChoice?.();\n }, [disabled, onInsertSingleChoice]);\n\n const handleInsertMultiChoice = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertMultiChoice?.();\n }, [disabled, onInsertMultiChoice]);\n\n const handleInsertInputField = useCallback(() => {\n if (disabled) {\n return;\n }\n onInsertInputField?.();\n }, [disabled, onInsertInputField]);\n\n const tooltipContentProps = {\n dir: tooltipDirection,\n lang: tooltipLanguage,\n side: \"top\" as const,\n };\n\n return (\n <TooltipProvider delayDuration={150}>\n <div className=\"markdown-flow-editor-toolbar\" aria-disabled={disabled}>\n <div className=\"markdown-flow-editor-toolbar-left\">\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertSingleChoice}\n aria-label={labels.insertSingleChoice}\n title={labels.insertSingleChoice}\n >\n <CircleCheck strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertSingleChoice ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertMultiChoice}\n aria-label={labels.insertMultiChoice}\n title={labels.insertMultiChoice}\n >\n <SquareCheck strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertMultiChoice ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertInputField}\n aria-label={labels.insertInput}\n title={labels.insertInput}\n >\n <TextCursorInput strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertInput ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertButton}\n aria-label={labels.insertButton}\n title={labels.insertButton}\n >\n <ButtonIcon strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.insertButton ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleConfirmOutput}\n aria-label={labels.confirmOutput}\n title={labels.confirmOutput}\n >\n <FileType strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.confirmOutput ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onSelect(SelectedOption.Image)}\n aria-label={labels.image}\n title={labels.image}\n >\n <ImageIcon strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.image ?? \"\"}\n </TooltipContent>\n </Tooltip>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onSelect(SelectedOption.Video)}\n aria-label={labels.video}\n title={labels.video}\n >\n <SquarePlay strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent {...tooltipContentProps}>\n {labels.video ?? \"\"}\n </TooltipContent>\n </Tooltip>\n </div>\n {rightSlot ? (\n <div className=\"markdown-flow-editor-toolbar-right-wrapper\">\n {rightSlot}\n </div>\n ) : null}\n {/* <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleInsertLink}\n aria-label={labels.insertLink}\n title={labels.insertLink}\n >\n <Link strokeWidth={1.75} size={ICON_SIZE} />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n {labels.insertLink ?? \"\"}\n </TooltipContent>\n </Tooltip> */}\n </div>\n </TooltipProvider>\n );\n};\n\nexport default memo(EditorToolbar);\n"],"names":["ICON_SIZE","EditorToolbar","disabled","labels","tooltipDirection","tooltipLanguage","onSelect","onInsertConfirmOutput","onInsertButton","onInsertSingleChoice","onInsertMultiChoice","onInsertInputField","rightSlot","handleConfirmOutput","useCallback","handleInsertButton","handleInsertSingleChoice","handleInsertMultiChoice","handleInsertInputField","tooltipContentProps","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","CircleCheck","TooltipContent","SquareCheck","TextCursorInput","ButtonIcon","FileType","SelectedOption","ImageIcon","SquarePlay","EditorToolbar$1","memo"],"mappings":"8tBAiDMA,EAAY,GAEZC,EAA8C,CAAC,CACnD,SAAAC,EAAW,GACX,OAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,sBAAAC,EAEA,eAAAC,EACA,qBAAAC,EACA,oBAAAC,EACA,mBAAAC,EACA,UAAAC,CACF,IAAM,CACJ,MAAMC,EAAsBC,EAAAA,YAAY,IAAM,CACxCZ,GAGJK,IAAA,CACF,EAAG,CAACL,EAAUK,CAAqB,CAAC,EAS9BQ,EAAqBD,EAAAA,YAAY,IAAM,CACvCZ,GAGJM,IAAA,CACF,EAAG,CAACN,EAAUM,CAAc,CAAC,EAEvBQ,EAA2BF,EAAAA,YAAY,IAAM,CAC7CZ,GAGJO,IAAA,CACF,EAAG,CAACP,EAAUO,CAAoB,CAAC,EAE7BQ,EAA0BH,EAAAA,YAAY,IAAM,CAC5CZ,GAGJQ,IAAA,CACF,EAAG,CAACR,EAAUQ,CAAmB,CAAC,EAE5BQ,EAAyBJ,EAAAA,YAAY,IAAM,CAC3CZ,GAGJS,IAAA,CACF,EAAG,CAACT,EAAUS,CAAkB,CAAC,EAE3BQ,EAAsB,CAC1B,IAAKf,EACL,KAAMC,EACN,KAAM,KAAA,EAGR,OACEe,EAAAA,IAACC,EAAAA,iBAAgB,cAAe,IAC9B,gBAAC,MAAA,CAAI,UAAU,+BAA+B,gBAAenB,EAC3D,SAAA,CAAAoB,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,OAACC,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAASc,EACT,aAAYb,EAAO,mBACnB,MAAOA,EAAO,mBAEd,SAAAiB,EAAAA,IAACK,UAAA,CAAY,YAAa,KAAM,KAAMzB,CAAA,CAAW,CAAA,CAAA,EAErD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,oBAAsB,EAAA,CAChC,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAASe,EACT,aAAYd,EAAO,kBACnB,MAAOA,EAAO,kBAEd,SAAAiB,EAAAA,IAACO,UAAA,CAAY,YAAa,KAAM,KAAM3B,CAAA,CAAW,CAAA,CAAA,EAErD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,mBAAqB,EAAA,CAC/B,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAASgB,EACT,aAAYf,EAAO,YACnB,MAAOA,EAAO,YAEd,SAAAiB,EAAAA,IAACQ,UAAA,CAAgB,YAAa,KAAM,KAAM5B,CAAA,CAAW,CAAA,CAAA,EAEzD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,aAAe,EAAA,CACzB,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAASa,EACT,aAAYZ,EAAO,aACnB,MAAOA,EAAO,aAEd,SAAAiB,EAAAA,IAACS,UAAA,CAAW,YAAa,KAAM,KAAM7B,CAAA,CAAW,CAAA,CAAA,EAEpD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,cAAgB,EAAA,CAC1B,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAASW,EACT,aAAYV,EAAO,cACnB,MAAOA,EAAO,cAEd,SAAAiB,EAAAA,IAACU,UAAA,CAAS,YAAa,KAAM,KAAM9B,CAAA,CAAW,CAAA,CAAA,EAElD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,eAAiB,EAAA,CAC3B,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAAS,IAAMI,EAASyB,EAAAA,eAAe,KAAK,EAC5C,aAAY5B,EAAO,MACnB,MAAOA,EAAO,MAEd,SAAAiB,EAAAA,IAACY,UAAA,CAAU,YAAa,KAAM,KAAMhC,CAAA,CAAW,CAAA,CAAA,EAEnD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,OAAS,EAAA,CACnB,CAAA,EACF,SACCoB,EAAAA,QAAA,CACC,SAAA,CAAAH,EAAAA,IAACI,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAJ,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,SAAAlB,EACA,QAAS,IAAMI,EAASyB,EAAAA,eAAe,KAAK,EAC5C,aAAY5B,EAAO,MACnB,MAAOA,EAAO,MAEd,SAAAiB,EAAAA,IAACa,UAAA,CAAW,YAAa,KAAM,KAAMjC,CAAA,CAAW,CAAA,CAAA,EAEpD,QACC0B,EAAAA,eAAA,CAAgB,GAAGP,EACjB,SAAAhB,EAAO,OAAS,EAAA,CACnB,CAAA,CAAA,CACF,CAAA,EACF,EACCS,EACCQ,EAAAA,IAAC,MAAA,CAAI,UAAU,6CACZ,WACH,EACE,IAAA,CAAA,CAiBN,CAAA,CACF,CAEJ,EAEAc,EAAeC,EAAAA,KAAKlC,CAAa"}
|
|
@@ -7,29 +7,21 @@ type ToolbarLabels = {
|
|
|
7
7
|
insertSingleChoice: string | undefined;
|
|
8
8
|
insertMultiChoice: string | undefined;
|
|
9
9
|
insertInput: string | undefined;
|
|
10
|
-
variable: string;
|
|
11
10
|
image: string;
|
|
12
11
|
video: string;
|
|
13
|
-
addVariable: string;
|
|
14
|
-
search: string;
|
|
15
12
|
};
|
|
16
13
|
interface EditorToolbarProps {
|
|
17
14
|
disabled?: boolean;
|
|
18
|
-
enableVariables?: boolean;
|
|
19
15
|
labels: ToolbarLabels;
|
|
20
16
|
tooltipDirection?: MarkdownFlowDirection;
|
|
21
17
|
tooltipLanguage?: string;
|
|
22
18
|
onSelect: (selectedOption: SelectedOption) => void;
|
|
23
|
-
onInsertVariablePlaceholder?: () => void;
|
|
24
|
-
onVariableSearchToggle?: (button: HTMLButtonElement) => void;
|
|
25
|
-
onVariableSearchClose?: () => void;
|
|
26
19
|
onInsertConfirmOutput?: () => void;
|
|
27
20
|
onInsertLink?: () => void;
|
|
28
21
|
onInsertButton?: () => void;
|
|
29
22
|
onInsertSingleChoice?: () => void;
|
|
30
23
|
onInsertMultiChoice?: () => void;
|
|
31
24
|
onInsertInputField?: () => void;
|
|
32
|
-
variableSearchActive?: boolean;
|
|
33
25
|
rightSlot?: React.ReactNode;
|
|
34
26
|
}
|
|
35
27
|
declare const _default: import('react').NamedExoticComponent<EditorToolbarProps>;
|