@opentiny/fluent-editor 4.0.0-alpha.9 → 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -88
- package/es/attributors/line-height.es.js.map +1 -1
- package/es/config/base64-image.es.js.map +1 -1
- package/es/config/editor.config.es.js +27 -0
- package/es/config/editor.config.es.js.map +1 -1
- package/es/config/editor.utils.es.js.map +1 -1
- package/es/config/i18n/en-us.es.js +2 -0
- package/es/config/i18n/en-us.es.js.map +1 -1
- package/es/config/i18n/zh-cn.es.js +2 -0
- package/es/config/i18n/zh-cn.es.js.map +1 -1
- package/es/config/index.es.js +3 -1
- package/es/config/index.es.js.map +1 -1
- package/es/core/fluent-editor.es.js.map +1 -1
- package/es/fluent-editor.es.js +17 -13
- package/es/fluent-editor.es.js.map +1 -1
- package/es/formats/emoji.es.js.map +1 -1
- package/es/formats/soft-break.es.js.map +1 -1
- package/es/formats/strike.es.js.map +1 -1
- package/es/formats/video.es.js.map +1 -1
- package/es/index.es.js +35 -2
- package/es/index.es.js.map +1 -1
- package/es/modules/ai/constants.es.js.map +1 -1
- package/es/modules/ai/icons.es.js.map +1 -1
- package/es/modules/ai/index.es.js +1 -1
- package/es/modules/ai/index.es.js.map +1 -1
- package/es/modules/collaborative-editing/awareness/awareness.es.js +6 -7
- package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -1
- package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js +7 -3
- package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -1
- package/es/modules/collaborative-editing/collaborative-editing.es.js +13 -8
- package/es/modules/collaborative-editing/collaborative-editing.es.js.map +1 -1
- package/es/modules/collaborative-editing/module.es.js.map +1 -1
- package/es/modules/collaborative-editing/provider/providerRegistry.es.js.map +1 -1
- package/es/modules/collaborative-editing/provider/webrtc.es.js +8 -4
- package/es/modules/collaborative-editing/provider/webrtc.es.js.map +1 -1
- package/es/modules/collaborative-editing/provider/websocket.es.js +6 -4
- package/es/modules/collaborative-editing/provider/websocket.es.js.map +1 -1
- package/es/modules/counter.es.js.map +1 -1
- package/es/modules/custom-clipboard.es.js.map +1 -1
- package/es/modules/custom-image/actions/action.es.js.map +1 -1
- package/es/modules/custom-image/actions/custom-resize-action.es.js.map +1 -1
- package/es/modules/custom-image/actions/delete-action.es.js.map +1 -1
- package/es/modules/custom-image/actions/image-toolbar-buttons.es.js +1 -1
- package/es/modules/custom-image/actions/image-toolbar-buttons.es.js.map +1 -1
- package/es/modules/custom-image/actions/toolbar-action.es.js.map +1 -1
- package/es/modules/custom-image/actions/toolbar.es.js.map +1 -1
- package/es/modules/custom-image/blot-formatter.es.js +1 -1
- package/es/modules/custom-image/blot-formatter.es.js.map +1 -1
- package/es/modules/custom-image/image.es.js.map +1 -1
- package/es/modules/custom-image/options.es.js.map +1 -1
- package/es/modules/custom-image/specs/blot-spec.es.js.map +1 -1
- package/es/modules/custom-image/specs/custom-image-spec.es.js.map +1 -1
- package/es/modules/custom-image/specs/image-spec.es.js.map +1 -1
- package/es/modules/custom-uploader.es.js.map +1 -1
- package/es/modules/divider.es.js.map +1 -1
- package/es/modules/emoji.es.js +1 -1
- package/es/modules/emoji.es.js.map +1 -1
- package/es/modules/file/formats/file.es.js.map +1 -1
- package/es/modules/file/modules/file-bar.es.js.map +1 -1
- package/es/modules/file/modules/file-module.es.js.map +1 -1
- package/es/modules/flow-chart/config-utils.es.js +102 -0
- package/es/modules/flow-chart/config-utils.es.js.map +1 -0
- package/es/modules/flow-chart/formats/flow-chart-blot.es.js +369 -0
- package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -0
- package/es/modules/flow-chart/i18n/en-us.es.js +30 -0
- package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -0
- package/es/modules/flow-chart/i18n/index.es.js +12 -0
- package/es/modules/flow-chart/i18n/index.es.js.map +1 -0
- package/es/modules/flow-chart/i18n/zh-cn.es.js +30 -0
- package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -0
- package/es/modules/flow-chart/icons.es.js +27 -0
- package/es/modules/flow-chart/icons.es.js.map +1 -0
- package/es/modules/flow-chart/index.es.js +45 -0
- package/es/modules/flow-chart/index.es.js.map +1 -0
- package/es/modules/flow-chart/modules/context-menu.es.js +184 -0
- package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -0
- package/es/modules/flow-chart/modules/control-panel.es.js +286 -0
- package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -0
- package/es/modules/flow-chart/modules/custom-resize-action.es.js +150 -0
- package/es/modules/flow-chart/modules/custom-resize-action.es.js.map +1 -0
- package/es/modules/i18n.es.js.map +1 -1
- package/es/modules/index.es.js +4 -0
- package/es/modules/index.es.js.map +1 -1
- package/es/modules/link/formats/link.es.js.map +1 -1
- package/es/modules/link/modules/tooltip.es.js.map +1 -1
- package/es/modules/mathlive/formats.es.js.map +1 -1
- package/es/modules/mathlive/module.es.js.map +1 -1
- package/es/modules/mathlive/tooltip.es.js.map +1 -1
- package/es/modules/mention/constants.es.js.map +1 -1
- package/es/modules/mention/mention-link.es.js.map +1 -1
- package/es/modules/mention/mention.es.js.map +1 -1
- package/es/modules/mind-map/config-utils.es.js +108 -0
- package/es/modules/mind-map/config-utils.es.js.map +1 -0
- package/es/modules/mind-map/formats/mind-map-blot.es.js +356 -0
- package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -0
- package/es/modules/mind-map/i18n/en-us.es.js +29 -0
- package/es/modules/mind-map/i18n/en-us.es.js.map +1 -0
- package/es/modules/mind-map/i18n/index.es.js +12 -0
- package/es/modules/mind-map/i18n/index.es.js.map +1 -0
- package/es/modules/mind-map/i18n/zh-cn.es.js +29 -0
- package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -0
- package/es/modules/mind-map/icons.es.js +45 -0
- package/es/modules/mind-map/icons.es.js.map +1 -0
- package/es/modules/mind-map/index.es.js +56 -0
- package/es/modules/mind-map/index.es.js.map +1 -0
- package/es/modules/mind-map/modules/context-menu.es.js +128 -0
- package/es/modules/mind-map/modules/context-menu.es.js.map +1 -0
- package/es/modules/mind-map/modules/control-panel.es.js +425 -0
- package/es/modules/mind-map/modules/control-panel.es.js.map +1 -0
- package/es/modules/mind-map/modules/custom-resize-action.es.js +161 -0
- package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -0
- package/es/modules/shortcut-key/index.es.js +16 -0
- package/es/modules/shortcut-key/index.es.js.map +1 -1
- package/es/modules/syntax.es.js.map +1 -1
- package/es/modules/table-up/index.es.js.map +1 -1
- package/es/modules/toolbar/better-picker.es.js.map +1 -1
- package/es/modules/toolbar/better-toolbar.es.js.map +1 -1
- package/es/modules/toolbar/toolbar-tip.es.js.map +1 -1
- package/es/themes/snow.es.js.map +1 -1
- package/es/tools/format-painter.es.js.map +1 -1
- package/es/tools/fullscreen.es.js.map +1 -1
- package/es/tools/screenshot.es.js.map +1 -1
- package/es/ui/icons.config.es.js +4 -0
- package/es/ui/icons.config.es.js.map +1 -1
- package/es/ui/icons.es.js +4 -2
- package/es/ui/icons.es.js.map +1 -1
- package/es/utils/debounce.es.js.map +1 -1
- package/es/utils/image.es.js.map +1 -1
- package/es/utils/is.es.js.map +1 -1
- package/es/utils/merge.es.js +27 -0
- package/es/utils/merge.es.js.map +1 -0
- package/es/utils/method.es.js.map +1 -1
- package/es/utils/scroll-lock.es.js.map +1 -1
- package/flow-chart.css +185 -0
- package/lib/attributors/line-height.cjs.js.map +1 -1
- package/lib/config/base64-image.cjs.js.map +1 -1
- package/lib/config/editor.config.cjs.js +27 -0
- package/lib/config/editor.config.cjs.js.map +1 -1
- package/lib/config/editor.utils.cjs.js.map +1 -1
- package/lib/config/i18n/en-us.cjs.js +2 -0
- package/lib/config/i18n/en-us.cjs.js.map +1 -1
- package/lib/config/i18n/zh-cn.cjs.js +2 -0
- package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
- package/lib/config/index.cjs.js +2 -0
- package/lib/config/index.cjs.js.map +1 -1
- package/lib/core/fluent-editor.cjs.js.map +1 -1
- package/lib/fluent-editor.cjs.js +23 -19
- package/lib/fluent-editor.cjs.js.map +1 -1
- package/lib/formats/emoji.cjs.js.map +1 -1
- package/lib/formats/soft-break.cjs.js.map +1 -1
- package/lib/formats/strike.cjs.js.map +1 -1
- package/lib/formats/video.cjs.js.map +1 -1
- package/lib/index.cjs.js +39 -6
- package/lib/index.cjs.js.map +1 -1
- package/lib/modules/ai/constants.cjs.js.map +1 -1
- package/lib/modules/ai/icons.cjs.js.map +1 -1
- package/lib/modules/ai/index.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/awareness/awareness.cjs.js +6 -24
- package/lib/modules/collaborative-editing/awareness/awareness.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js +7 -3
- package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/collaborative-editing.cjs.js +19 -31
- package/lib/modules/collaborative-editing/collaborative-editing.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/module.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/provider/providerRegistry.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/provider/webrtc.cjs.js +10 -23
- package/lib/modules/collaborative-editing/provider/webrtc.cjs.js.map +1 -1
- package/lib/modules/collaborative-editing/provider/websocket.cjs.js +10 -25
- package/lib/modules/collaborative-editing/provider/websocket.cjs.js.map +1 -1
- package/lib/modules/counter.cjs.js.map +1 -1
- package/lib/modules/custom-clipboard.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/action.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/custom-resize-action.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/delete-action.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/image-toolbar-buttons.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/toolbar-action.cjs.js.map +1 -1
- package/lib/modules/custom-image/actions/toolbar.cjs.js.map +1 -1
- package/lib/modules/custom-image/blot-formatter.cjs.js +2 -2
- package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -1
- package/lib/modules/custom-image/image.cjs.js.map +1 -1
- package/lib/modules/custom-image/options.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -1
- package/lib/modules/custom-uploader.cjs.js.map +1 -1
- package/lib/modules/divider.cjs.js.map +1 -1
- package/lib/modules/emoji.cjs.js +2 -2
- package/lib/modules/emoji.cjs.js.map +1 -1
- package/lib/modules/file/formats/file.cjs.js.map +1 -1
- package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
- package/lib/modules/file/modules/file-module.cjs.js.map +1 -1
- package/lib/modules/flow-chart/config-utils.cjs.js +102 -0
- package/lib/modules/flow-chart/config-utils.cjs.js.map +1 -0
- package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js +369 -0
- package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -0
- package/lib/modules/flow-chart/i18n/en-us.cjs.js +30 -0
- package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -0
- package/lib/modules/flow-chart/i18n/index.cjs.js +12 -0
- package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -0
- package/lib/modules/flow-chart/i18n/zh-cn.cjs.js +30 -0
- package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -0
- package/lib/modules/flow-chart/icons.cjs.js +27 -0
- package/lib/modules/flow-chart/icons.cjs.js.map +1 -0
- package/lib/modules/flow-chart/index.cjs.js +45 -0
- package/lib/modules/flow-chart/index.cjs.js.map +1 -0
- package/lib/modules/flow-chart/modules/context-menu.cjs.js +184 -0
- package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -0
- package/lib/modules/flow-chart/modules/control-panel.cjs.js +286 -0
- package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -0
- package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js +150 -0
- package/lib/modules/flow-chart/modules/custom-resize-action.cjs.js.map +1 -0
- package/lib/modules/i18n.cjs.js.map +1 -1
- package/lib/modules/index.cjs.js +9 -5
- package/lib/modules/index.cjs.js.map +1 -1
- package/lib/modules/link/formats/link.cjs.js.map +1 -1
- package/lib/modules/link/modules/tooltip.cjs.js.map +1 -1
- package/lib/modules/mathlive/formats.cjs.js.map +1 -1
- package/lib/modules/mathlive/module.cjs.js.map +1 -1
- package/lib/modules/mathlive/tooltip.cjs.js.map +1 -1
- package/lib/modules/mention/constants.cjs.js.map +1 -1
- package/lib/modules/mention/mention-link.cjs.js.map +1 -1
- package/lib/modules/mention/mention.cjs.js.map +1 -1
- package/lib/modules/mind-map/config-utils.cjs.js +108 -0
- package/lib/modules/mind-map/config-utils.cjs.js.map +1 -0
- package/lib/modules/mind-map/formats/mind-map-blot.cjs.js +356 -0
- package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -0
- package/lib/modules/mind-map/i18n/en-us.cjs.js +29 -0
- package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -0
- package/lib/modules/mind-map/i18n/index.cjs.js +12 -0
- package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -0
- package/lib/modules/mind-map/i18n/zh-cn.cjs.js +29 -0
- package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -0
- package/lib/modules/mind-map/icons.cjs.js +45 -0
- package/lib/modules/mind-map/icons.cjs.js.map +1 -0
- package/lib/modules/mind-map/index.cjs.js +56 -0
- package/lib/modules/mind-map/index.cjs.js.map +1 -0
- package/lib/modules/mind-map/modules/context-menu.cjs.js +128 -0
- package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -0
- package/lib/modules/mind-map/modules/control-panel.cjs.js +425 -0
- package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -0
- package/lib/modules/mind-map/modules/custom-resize-action.cjs.js +161 -0
- package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -0
- package/lib/modules/shortcut-key/index.cjs.js +16 -0
- package/lib/modules/shortcut-key/index.cjs.js.map +1 -1
- package/lib/modules/syntax.cjs.js.map +1 -1
- package/lib/modules/table-up/index.cjs.js.map +1 -1
- package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
- package/lib/modules/toolbar/better-toolbar.cjs.js.map +1 -1
- package/lib/modules/toolbar/toolbar-tip.cjs.js.map +1 -1
- package/lib/themes/snow.cjs.js.map +1 -1
- package/lib/tools/format-painter.cjs.js.map +1 -1
- package/lib/tools/fullscreen.cjs.js.map +1 -1
- package/lib/tools/screenshot.cjs.js.map +1 -1
- package/lib/ui/icons.cjs.js +3 -1
- package/lib/ui/icons.cjs.js.map +1 -1
- package/lib/ui/icons.config.cjs.js +4 -0
- package/lib/ui/icons.config.cjs.js.map +1 -1
- package/lib/utils/debounce.cjs.js.map +1 -1
- package/lib/utils/image.cjs.js.map +1 -1
- package/lib/utils/is.cjs.js.map +1 -1
- package/lib/utils/merge.cjs.js +27 -0
- package/lib/utils/merge.cjs.js.map +1 -0
- package/lib/utils/method.cjs.js.map +1 -1
- package/lib/utils/scroll-lock.cjs.js.map +1 -1
- package/mind-map.css +224 -0
- package/package.json +45 -67
- package/patches/quill@2.0.3.patch +33 -0
- package/scripts/apply-patches.cjs +248 -0
- package/style.css +4 -2
- package/types/attributors/font-size.d.ts +1 -1
- package/types/attributors/font-style.d.ts +1 -1
- package/types/attributors/index.d.ts +4 -4
- package/types/attributors/line-height.d.ts +1 -1
- package/types/attributors/text-indent.d.ts +1 -1
- package/types/config/base64-image.d.ts +2 -2
- package/types/config/editor.config.d.ts +55 -11
- package/types/config/editor.utils.d.ts +40 -40
- package/types/config/i18n/en-us.d.ts +125 -123
- package/types/config/i18n/zh-cn.d.ts +125 -123
- package/types/config/index.d.ts +7 -7
- package/types/config/types/editor-config.interface.d.ts +11 -12
- package/types/config/types/editor-modules.interface.d.ts +40 -37
- package/types/config/types/index.d.ts +3 -3
- package/types/config/types/type.d.ts +2 -2
- package/types/core/fluent-editor.d.ts +10 -11
- package/types/fluent-editor.d.ts +1 -2
- package/types/formats/emoji.d.ts +7 -8
- package/types/formats/index.d.ts +4 -4
- package/types/formats/soft-break.d.ts +11 -12
- package/types/formats/strike.d.ts +7 -8
- package/types/formats/video.d.ts +12 -13
- package/types/index.d.ts +7 -8
- package/types/modules/ai/constants.d.ts +30 -30
- package/types/modules/ai/icons.d.ts +21 -21
- package/types/modules/ai/index.d.ts +93 -94
- package/types/modules/ai/types.d.ts +16 -16
- package/types/modules/collaborative-editing/awareness/awareness.d.ts +25 -26
- package/types/modules/collaborative-editing/awareness/index.d.ts +2 -2
- package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +3 -3
- package/types/modules/collaborative-editing/collaborative-editing.d.ts +22 -22
- package/types/modules/collaborative-editing/index.d.ts +2 -2
- package/types/modules/collaborative-editing/module.d.ts +10 -11
- package/types/modules/collaborative-editing/provider/index.d.ts +3 -3
- package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -25
- package/types/modules/collaborative-editing/provider/webrtc.d.ts +35 -35
- package/types/modules/collaborative-editing/provider/websocket.d.ts +39 -39
- package/types/modules/collaborative-editing/types.d.ts +51 -35
- package/types/modules/counter.d.ts +21 -22
- package/types/modules/custom-clipboard.d.ts +23 -24
- package/types/modules/custom-image/actions/action.d.ts +7 -8
- package/types/modules/custom-image/actions/custom-resize-action.d.ts +22 -23
- package/types/modules/custom-image/actions/delete-action.d.ts +5 -6
- package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +15 -16
- package/types/modules/custom-image/actions/index.d.ts +6 -6
- package/types/modules/custom-image/actions/toolbar-action.d.ts +7 -8
- package/types/modules/custom-image/actions/toolbar.d.ts +16 -17
- package/types/modules/custom-image/blot-formatter.d.ts +19 -20
- package/types/modules/custom-image/image.d.ts +26 -27
- package/types/modules/custom-image/index.d.ts +4 -4
- package/types/modules/custom-image/options.d.ts +45 -46
- package/types/modules/custom-image/specs/blot-spec.d.ts +10 -11
- package/types/modules/custom-image/specs/custom-image-spec.d.ts +15 -16
- package/types/modules/custom-image/specs/image-spec.d.ts +7 -8
- package/types/modules/custom-image/specs/index.d.ts +3 -3
- package/types/modules/custom-uploader.d.ts +37 -38
- package/types/modules/divider.d.ts +7 -8
- package/types/modules/emoji.d.ts +35 -36
- package/types/modules/file/formats/file.d.ts +17 -18
- package/types/modules/file/index.d.ts +3 -3
- package/types/modules/file/modules/file-bar.d.ts +14 -14
- package/types/modules/file/modules/file-module.d.ts +7 -8
- package/types/modules/flow-chart/config-utils.d.ts +10 -0
- package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +43 -0
- package/types/modules/flow-chart/i18n/en-us.d.ts +26 -0
- package/types/modules/flow-chart/i18n/index.d.ts +1 -0
- package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -0
- package/types/modules/flow-chart/icons.d.ts +12 -0
- package/types/modules/flow-chart/index.d.ts +10 -0
- package/types/modules/flow-chart/modules/context-menu.d.ts +3 -0
- package/types/modules/flow-chart/modules/control-panel.d.ts +3 -0
- package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -0
- package/types/modules/flow-chart/options.d.ts +29 -0
- package/types/modules/i18n.d.ts +13 -14
- package/types/modules/index.d.ts +18 -16
- package/types/modules/link/formats/link.d.ts +14 -15
- package/types/modules/link/index.d.ts +2 -2
- package/types/modules/link/modules/tooltip.d.ts +25 -26
- package/types/modules/mathlive/formats.d.ts +20 -21
- package/types/modules/mathlive/index.d.ts +3 -3
- package/types/modules/mathlive/module.d.ts +7 -8
- package/types/modules/mathlive/tooltip.d.ts +14 -15
- package/types/modules/mention/constants.d.ts +3 -3
- package/types/modules/mention/index.d.ts +2 -2
- package/types/modules/mention/mention-link.d.ts +14 -15
- package/types/modules/mention/mention.d.ts +52 -53
- package/types/modules/mind-map/config-utils.d.ts +12 -0
- package/types/modules/mind-map/formats/mind-map-blot.d.ts +44 -0
- package/types/modules/mind-map/i18n/en-us.d.ts +25 -0
- package/types/modules/mind-map/i18n/index.d.ts +1 -0
- package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -0
- package/types/modules/mind-map/icons.d.ts +21 -0
- package/types/modules/mind-map/index.d.ts +10 -0
- package/types/modules/mind-map/modules/context-menu.d.ts +3 -0
- package/types/modules/mind-map/modules/control-panel.d.ts +3 -0
- package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -0
- package/types/modules/mind-map/options.d.ts +27 -0
- package/types/modules/shortcut-key/index.d.ts +67 -68
- package/types/modules/syntax.d.ts +12 -13
- package/types/modules/table-up/index.d.ts +32 -33
- package/types/modules/toolbar/better-picker.d.ts +13 -14
- package/types/modules/toolbar/better-toolbar.d.ts +6 -7
- package/types/modules/toolbar/index.d.ts +3 -3
- package/types/modules/toolbar/toolbar-tip.d.ts +7 -8
- package/types/themes/snow.d.ts +9 -10
- package/types/tools/format-painter.d.ts +12 -13
- package/types/tools/fullscreen.d.ts +4 -5
- package/types/tools/screenshot.d.ts +17 -18
- package/types/ui/icons.config.d.ts +40 -38
- package/types/ui/icons.d.ts +6 -6
- package/types/utils/debounce.d.ts +6 -6
- package/types/utils/image.d.ts +1 -1
- package/types/utils/is.d.ts +6 -6
- package/types/utils/merge.d.ts +7 -0
- package/types/utils/method.d.ts +6 -6
- package/types/utils/scroll-lock.d.ts +6 -6
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
|
+
require("../../../config/index.cjs.js");
|
|
7
|
+
const i18n = require("../../i18n.cjs.js");
|
|
8
|
+
const index = require("../i18n/index.cjs.js");
|
|
9
|
+
const icons = require("../icons.cjs.js");
|
|
10
|
+
const editor_config = require("../../../config/editor.config.cjs.js");
|
|
11
|
+
class FlowChartControlPanelHandler {
|
|
12
|
+
constructor(quill, blot) {
|
|
13
|
+
__publicField(this, "texts");
|
|
14
|
+
__publicField(this, "lang");
|
|
15
|
+
this.quill = quill;
|
|
16
|
+
this.blot = blot;
|
|
17
|
+
const i18nModule = this.quill.getModule("i18n");
|
|
18
|
+
index.registerFlowChartI18N(i18n.I18N);
|
|
19
|
+
this.lang = i18nModule.options.lang;
|
|
20
|
+
this.texts = this.resolveTexts();
|
|
21
|
+
this.quill.emitter.on(editor_config.CHANGE_LANGUAGE_EVENT, (lang) => {
|
|
22
|
+
this.lang = lang;
|
|
23
|
+
this.texts = this.resolveTexts();
|
|
24
|
+
this.updateControlPanelTexts();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getText(key) {
|
|
28
|
+
return this.texts[key];
|
|
29
|
+
}
|
|
30
|
+
resolveTexts() {
|
|
31
|
+
return {
|
|
32
|
+
exportTitle: i18n.I18N.parserText("flowChart.controlPanel.exportTitle", this.lang),
|
|
33
|
+
zoomOutTitle: i18n.I18N.parserText("flowChart.controlPanel.zoomOutTitle", this.lang),
|
|
34
|
+
zoomInTitle: i18n.I18N.parserText("flowChart.controlPanel.zoomInTitle", this.lang),
|
|
35
|
+
fitTitle: i18n.I18N.parserText("flowChart.controlPanel.fitTitle", this.lang),
|
|
36
|
+
backTitle: i18n.I18N.parserText("flowChart.controlPanel.backTitle", this.lang),
|
|
37
|
+
forwardTitle: i18n.I18N.parserText("flowChart.controlPanel.forwardTitle", this.lang),
|
|
38
|
+
setEdgeTypeTitle: i18n.I18N.parserText("flowChart.controlPanel.setEdgeTypeTitle", this.lang),
|
|
39
|
+
panelStatusTitle: i18n.I18N.parserText("flowChart.controlPanel.panelStatusTitle", this.lang),
|
|
40
|
+
screenTypeTitle: i18n.I18N.parserText("flowChart.controlPanel.screenTypeTitle", this.lang)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
updateControlPanelTexts() {
|
|
44
|
+
const controlItems = this.blot.domNode.querySelectorAll(".ql-flow-chart-control-item");
|
|
45
|
+
const controlItemMap = {
|
|
46
|
+
"zoom-out": "zoomOutTitle",
|
|
47
|
+
"zoom-in": "zoomInTitle",
|
|
48
|
+
"fit": "fitTitle",
|
|
49
|
+
"back": "backTitle",
|
|
50
|
+
"forward": "forwardTitle",
|
|
51
|
+
"set-edge-type": "setEdgeTypeTitle",
|
|
52
|
+
"panel-status": "panelStatusTitle",
|
|
53
|
+
"screen-type": "screenTypeTitle"
|
|
54
|
+
};
|
|
55
|
+
controlItems.forEach((item) => {
|
|
56
|
+
const controlType = item.dataset.controlType;
|
|
57
|
+
if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {
|
|
58
|
+
item.title = this.texts[controlItemMap[controlType]];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const controlPanelHandlers = /* @__PURE__ */ new WeakMap();
|
|
64
|
+
const DISABLED_OPACITY = "0.5";
|
|
65
|
+
const ENABLED_OPACITY = "1";
|
|
66
|
+
function createControlPanel(blot, quill) {
|
|
67
|
+
const controlPanel = document.createElement("div");
|
|
68
|
+
controlPanel.className = "ql-flow-chart-control";
|
|
69
|
+
const controlRightUpPanel = document.createElement("div");
|
|
70
|
+
controlRightUpPanel.className = "ql-flow-chart-right-up-control";
|
|
71
|
+
const handler = new FlowChartControlPanelHandler(quill, blot);
|
|
72
|
+
controlPanelHandlers.set(blot, handler);
|
|
73
|
+
const zoomOutBtn = createControlItem("zoom-out", handler.getText("zoomOutTitle"), () => handleZoomOut(blot));
|
|
74
|
+
const zoomInBtn = createControlItem("zoom-in", handler.getText("zoomInTitle"), () => handleZoomIn(blot));
|
|
75
|
+
const resetBtn = createControlItem("fit", handler.getText("fitTitle"), () => handleResetZoom(blot));
|
|
76
|
+
const backBtn = createControlItem("back", handler.getText("backTitle"), () => handleUndo(blot));
|
|
77
|
+
const forwardBtn = createControlItem("forward", handler.getText("forwardTitle"), () => handleRedo(blot));
|
|
78
|
+
const setEdgeTypeBtn = createControlItem("set-edge-type", handler.getText("setEdgeTypeTitle"), () => handleSetEdgeType(blot));
|
|
79
|
+
const panelStatusBtn = createControlItem("panel-status", handler.getText("panelStatusTitle"));
|
|
80
|
+
const screenTypeBtn = createControlItem("screen-type", handler.getText("screenTypeTitle"), () => handleScreenTypeBtn(blot));
|
|
81
|
+
const updateButtonState = (historyData) => {
|
|
82
|
+
if (!historyData.data) {
|
|
83
|
+
backBtn.style.opacity = DISABLED_OPACITY;
|
|
84
|
+
backBtn.style.cursor = "not-allowed";
|
|
85
|
+
forwardBtn.style.opacity = DISABLED_OPACITY;
|
|
86
|
+
forwardBtn.style.cursor = "not-allowed";
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0;
|
|
90
|
+
const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0;
|
|
91
|
+
if (backBtn) {
|
|
92
|
+
backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY;
|
|
93
|
+
backBtn.style.cursor = isUndoAvailable ? "pointer" : "not-allowed";
|
|
94
|
+
}
|
|
95
|
+
if (forwardBtn) {
|
|
96
|
+
forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY;
|
|
97
|
+
forwardBtn.style.cursor = isRedoAvailable ? "pointer" : "not-allowed";
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
updateButtonState(blot.flowChart.history);
|
|
101
|
+
blot.flowChart.on("history:change", (data) => {
|
|
102
|
+
updateButtonState(data);
|
|
103
|
+
});
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
const controlLeftUpPanel = blot.domNode.querySelector(".lf-dndpanel");
|
|
106
|
+
controlLeftUpPanel.append(setEdgeTypeBtn);
|
|
107
|
+
}, 0);
|
|
108
|
+
controlRightUpPanel.append(panelStatusBtn);
|
|
109
|
+
blot.domNode.appendChild(controlRightUpPanel);
|
|
110
|
+
controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn);
|
|
111
|
+
blot.domNode.appendChild(controlPanel);
|
|
112
|
+
}
|
|
113
|
+
function handleUndo(blot) {
|
|
114
|
+
if (blot.flowChart) {
|
|
115
|
+
blot.flowChart.undo();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function handleRedo(blot) {
|
|
119
|
+
if (blot.flowChart) {
|
|
120
|
+
blot.flowChart.redo();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function handleZoomIn(blot) {
|
|
124
|
+
if (blot.flowChart) {
|
|
125
|
+
blot.flowChart.zoom(true);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function handleZoomOut(blot) {
|
|
129
|
+
if (blot.flowChart) {
|
|
130
|
+
blot.flowChart.zoom(false);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function handleResetZoom(blot) {
|
|
134
|
+
if (blot.flowChart) {
|
|
135
|
+
blot.flowChart.resetZoom();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function createControlItem(iconClass, title, onClick, disabled = false) {
|
|
139
|
+
const controlItem = document.createElement("div");
|
|
140
|
+
controlItem.className = "ql-flow-chart-control-item";
|
|
141
|
+
controlItem.title = title;
|
|
142
|
+
controlItem.dataset.controlType = iconClass;
|
|
143
|
+
controlItem.style.cursor = disabled ? "not-allowed" : "pointer";
|
|
144
|
+
const iconMap = {
|
|
145
|
+
"back": icons.backIcon,
|
|
146
|
+
"forward": icons.forwardIcon,
|
|
147
|
+
"zoom-out": icons.zoomOutIcon,
|
|
148
|
+
"zoom-in": icons.zoomInIcon,
|
|
149
|
+
"fit": icons.fitIcon,
|
|
150
|
+
"screen-type": icons.screenTypeIcon,
|
|
151
|
+
"panel-status": icons.contractIcon,
|
|
152
|
+
"set-edge-type": icons.lineIcon
|
|
153
|
+
};
|
|
154
|
+
const icon = document.createElement("i");
|
|
155
|
+
icon.innerHTML = iconMap[iconClass] || "";
|
|
156
|
+
controlItem.appendChild(icon);
|
|
157
|
+
if (!disabled) {
|
|
158
|
+
controlItem.addEventListener("click", onClick);
|
|
159
|
+
}
|
|
160
|
+
return controlItem;
|
|
161
|
+
}
|
|
162
|
+
function handleSetEdgeType(blot) {
|
|
163
|
+
const controlLeftUpPanel = blot.domNode.querySelector(".lf-dndpanel");
|
|
164
|
+
if (!controlLeftUpPanel) return;
|
|
165
|
+
let edgeTypePanel = controlLeftUpPanel.querySelector(".ql-flow-chart-edge-panel");
|
|
166
|
+
if (!edgeTypePanel) {
|
|
167
|
+
edgeTypePanel = document.createElement("div");
|
|
168
|
+
edgeTypePanel.className = "ql-flow-chart-edge-panel";
|
|
169
|
+
edgeTypePanel.style.display = "flex";
|
|
170
|
+
edgeTypePanel.style.justifyContent = "space-around";
|
|
171
|
+
edgeTypePanel.style.flexWrap = "nowrap";
|
|
172
|
+
edgeTypePanel.style.width = "auto";
|
|
173
|
+
edgeTypePanel.style.minWidth = "100%";
|
|
174
|
+
edgeTypePanel.style.padding = "8px";
|
|
175
|
+
edgeTypePanel.style.boxSizing = "border-box";
|
|
176
|
+
edgeTypePanel.style.position = "absolute";
|
|
177
|
+
edgeTypePanel.style.top = "170px";
|
|
178
|
+
controlLeftUpPanel.appendChild(edgeTypePanel);
|
|
179
|
+
const edgeTypes = [
|
|
180
|
+
{
|
|
181
|
+
name: "line",
|
|
182
|
+
displayName: "直线",
|
|
183
|
+
icon: icons.lineIcon
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "polyline",
|
|
187
|
+
displayName: "折线",
|
|
188
|
+
icon: icons.polyLineIcon
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: "bezier",
|
|
192
|
+
displayName: "贝塞尔曲线",
|
|
193
|
+
icon: icons.bezierIcon
|
|
194
|
+
}
|
|
195
|
+
];
|
|
196
|
+
edgeTypes.forEach((edgeType) => {
|
|
197
|
+
const edgeItem = document.createElement("div");
|
|
198
|
+
edgeItem.className = "ql-flow-chart-edge-item";
|
|
199
|
+
edgeItem.style.padding = "8px";
|
|
200
|
+
edgeItem.style.cursor = "pointer";
|
|
201
|
+
edgeItem.style.textAlign = "center";
|
|
202
|
+
const edgeIcon = document.createElement("div");
|
|
203
|
+
edgeIcon.className = `ql-flow-chart-edge-type-icon`;
|
|
204
|
+
edgeIcon.style.width = "24px";
|
|
205
|
+
edgeIcon.style.height = "24px";
|
|
206
|
+
edgeIcon.style.margin = "0 auto";
|
|
207
|
+
if (edgeType.icon) {
|
|
208
|
+
edgeIcon.innerHTML = edgeType.icon;
|
|
209
|
+
}
|
|
210
|
+
edgeItem.appendChild(edgeIcon);
|
|
211
|
+
edgeItem.addEventListener("click", () => {
|
|
212
|
+
const { edges = [] } = blot.flowChart.getSelectElements();
|
|
213
|
+
if (edges.length > 0) {
|
|
214
|
+
edges.forEach((edge) => {
|
|
215
|
+
blot.flowChart.changeEdgeType(edge.id, edgeType.name);
|
|
216
|
+
});
|
|
217
|
+
blot.data = blot.flowChart.getGraphData();
|
|
218
|
+
blot.domNode.setAttribute("data-flow-chart", JSON.stringify(blot.data));
|
|
219
|
+
}
|
|
220
|
+
edgeTypePanel.style.display = "none";
|
|
221
|
+
});
|
|
222
|
+
edgeTypePanel.appendChild(edgeItem);
|
|
223
|
+
});
|
|
224
|
+
} else {
|
|
225
|
+
edgeTypePanel.style.display = "flex";
|
|
226
|
+
edgeTypePanel.style.justifyContent = "space-around";
|
|
227
|
+
edgeTypePanel.style.flexWrap = "nowrap";
|
|
228
|
+
}
|
|
229
|
+
const handleOutsideClick = (e) => {
|
|
230
|
+
let setEdgeTypeBtn = null;
|
|
231
|
+
const controlItems = controlLeftUpPanel.querySelectorAll(".ql-flow-chart-control-item");
|
|
232
|
+
controlItems.forEach((item) => {
|
|
233
|
+
const iconEl = item.querySelector("i");
|
|
234
|
+
if (iconEl && iconEl.className.includes("set-edge-type")) {
|
|
235
|
+
setEdgeTypeBtn = item;
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
if (!edgeTypePanel.contains(e.target) && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target))) {
|
|
239
|
+
edgeTypePanel.style.display = "none";
|
|
240
|
+
document.removeEventListener("click", handleOutsideClick);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
document.removeEventListener("click", handleOutsideClick);
|
|
244
|
+
setTimeout(() => {
|
|
245
|
+
document.addEventListener("click", handleOutsideClick);
|
|
246
|
+
}, 0);
|
|
247
|
+
}
|
|
248
|
+
function handleScreenTypeBtn(blot) {
|
|
249
|
+
const screenTypeBtn = blot.domNode.querySelector('[data-control-type="screen-type"]');
|
|
250
|
+
if (!screenTypeBtn || !blot.domNode) return;
|
|
251
|
+
const flowChartContainer = blot.domNode;
|
|
252
|
+
const isFullscreen = flowChartContainer.style.position === "fixed";
|
|
253
|
+
if (isFullscreen) {
|
|
254
|
+
const originalPosition = flowChartContainer.getAttribute("data-original-position");
|
|
255
|
+
const originalWidth = flowChartContainer.getAttribute("data-original-width");
|
|
256
|
+
const originalHeight = flowChartContainer.getAttribute("data-original-height");
|
|
257
|
+
if (originalWidth && originalHeight) {
|
|
258
|
+
flowChartContainer.style.position = originalPosition;
|
|
259
|
+
flowChartContainer.style.width = originalWidth;
|
|
260
|
+
flowChartContainer.style.height = originalHeight;
|
|
261
|
+
flowChartContainer.style.zIndex = "0";
|
|
262
|
+
}
|
|
263
|
+
const iconElement = screenTypeBtn.querySelector("i");
|
|
264
|
+
if (iconElement) {
|
|
265
|
+
iconElement.innerHTML = icons.screenTypeIcon;
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
flowChartContainer.setAttribute("data-original-position", flowChartContainer.style.position || "");
|
|
269
|
+
flowChartContainer.setAttribute("data-original-width", flowChartContainer.style.width || "");
|
|
270
|
+
flowChartContainer.setAttribute("data-original-height", flowChartContainer.style.height || "");
|
|
271
|
+
flowChartContainer.style.position = "fixed";
|
|
272
|
+
flowChartContainer.style.top = "0";
|
|
273
|
+
flowChartContainer.style.left = "0";
|
|
274
|
+
flowChartContainer.style.width = "100vw";
|
|
275
|
+
flowChartContainer.style.height = "100vh";
|
|
276
|
+
flowChartContainer.style.zIndex = "100";
|
|
277
|
+
const iconElement = screenTypeBtn.querySelector("i");
|
|
278
|
+
if (iconElement) {
|
|
279
|
+
iconElement.innerHTML = icons.screenReduceIcon;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
blot.flowChart.resize();
|
|
283
|
+
blot.flowChart.translateCenter();
|
|
284
|
+
}
|
|
285
|
+
exports.createControlPanel = createControlPanel;
|
|
286
|
+
//# sourceMappingURL=control-panel.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-panel.cjs.js","sources":["../../../../../src/modules/flow-chart/modules/control-panel.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\nimport type FlowChartPlaceholderBlot from '../formats/flow-chart-blot'\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\nimport { I18N } from '../../../modules/i18n'\nimport { registerFlowChartI18N } from '../i18n'\nimport { backIcon, bezierIcon, contractIcon, fitIcon, forwardIcon, lineIcon, polyLineIcon, screenReduceIcon, screenTypeIcon, zoomInIcon, zoomOutIcon } from '../icons'\n\nclass FlowChartControlPanelHandler {\n private texts: Record<string, string>\n private lang: string\n getText(key: keyof Record<string, string>): string {\n return this.texts[key]\n }\n\n constructor(private quill: FluentEditor, private blot: FlowChartPlaceholderBlot) {\n const i18nModule = this.quill.getModule('i18n') as I18N\n registerFlowChartI18N(I18N)\n this.lang = i18nModule.options.lang\n this.texts = this.resolveTexts()\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, (lang: string) => {\n this.lang = lang\n this.texts = this.resolveTexts()\n this.updateControlPanelTexts()\n })\n }\n\n resolveTexts() {\n return {\n exportTitle: I18N.parserText('flowChart.controlPanel.exportTitle', this.lang),\n zoomOutTitle: I18N.parserText('flowChart.controlPanel.zoomOutTitle', this.lang),\n zoomInTitle: I18N.parserText('flowChart.controlPanel.zoomInTitle', this.lang),\n fitTitle: I18N.parserText('flowChart.controlPanel.fitTitle', this.lang),\n backTitle: I18N.parserText('flowChart.controlPanel.backTitle', this.lang),\n forwardTitle: I18N.parserText('flowChart.controlPanel.forwardTitle', this.lang),\n setEdgeTypeTitle: I18N.parserText('flowChart.controlPanel.setEdgeTypeTitle', this.lang),\n panelStatusTitle: I18N.parserText('flowChart.controlPanel.panelStatusTitle', this.lang),\n screenTypeTitle: I18N.parserText('flowChart.controlPanel.screenTypeTitle', this.lang),\n }\n }\n\n updateControlPanelTexts() {\n const controlItems = this.blot.domNode.querySelectorAll('.ql-flow-chart-control-item')\n\n const controlItemMap: Record<string, string> = {\n 'zoom-out': 'zoomOutTitle',\n 'zoom-in': 'zoomInTitle',\n 'fit': 'fitTitle',\n 'back': 'backTitle',\n 'forward': 'forwardTitle',\n 'set-edge-type': 'setEdgeTypeTitle',\n 'panel-status': 'panelStatusTitle',\n 'screen-type': 'screenTypeTitle',\n }\n\n controlItems.forEach((item) => {\n const controlType = (item as HTMLElement).dataset.controlType\n if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {\n (item as HTMLElement).title = this.texts[controlItemMap[controlType]]\n }\n })\n }\n}\n\nconst controlPanelHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartControlPanelHandler>()\n\nconst DISABLED_OPACITY = '0.5'\nconst ENABLED_OPACITY = '1'\nexport function createControlPanel(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\n // 中间的控制面板\n const controlPanel = document.createElement('div')\n controlPanel.className = 'ql-flow-chart-control'\n // 右上的控制面板\n const controlRightUpPanel = document.createElement('div')\n controlRightUpPanel.className = 'ql-flow-chart-right-up-control'\n\n const handler = new FlowChartControlPanelHandler(quill, blot)\n controlPanelHandlers.set(blot, handler)\n const zoomOutBtn = createControlItem('zoom-out', handler.getText('zoomOutTitle'), () => handleZoomOut(blot))\n const zoomInBtn = createControlItem('zoom-in', handler.getText('zoomInTitle'), () => handleZoomIn(blot))\n const resetBtn = createControlItem('fit', handler.getText('fitTitle'), () => handleResetZoom(blot))\n const backBtn = createControlItem('back', handler.getText('backTitle'), () => handleUndo(blot))\n const forwardBtn = createControlItem('forward', handler.getText('forwardTitle'), () => handleRedo(blot))\n const setEdgeTypeBtn = createControlItem('set-edge-type', handler.getText('setEdgeTypeTitle'), () => handleSetEdgeType(blot))\n const panelStatusBtn = createControlItem('panel-status', handler.getText('panelStatusTitle'))\n const screenTypeBtn = createControlItem('screen-type', handler.getText('screenTypeTitle'), () => handleScreenTypeBtn(blot))\n\n const updateButtonState = (historyData: any) => {\n if (!historyData.data) {\n backBtn.style.opacity = DISABLED_OPACITY\n backBtn.style.cursor = 'not-allowed'\n forwardBtn.style.opacity = DISABLED_OPACITY\n forwardBtn.style.cursor = 'not-allowed'\n return\n }\n const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0\n const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0\n\n if (backBtn) {\n backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n backBtn.style.cursor = isUndoAvailable ? 'pointer' : 'not-allowed'\n }\n\n if (forwardBtn) {\n forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n forwardBtn.style.cursor = isRedoAvailable ? 'pointer' : 'not-allowed'\n }\n }\n updateButtonState(blot.flowChart.history)\n blot.flowChart.on('history:change', (data: any) => {\n updateButtonState(data)\n })\n\n setTimeout(() => {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n controlLeftUpPanel.append(setEdgeTypeBtn)\n }, 0)\n controlRightUpPanel.append(panelStatusBtn)\n blot.domNode.appendChild(controlRightUpPanel)\n controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn)\n blot.domNode.appendChild(controlPanel)\n}\n\nfunction handleUndo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.undo()\n }\n}\n\nfunction handleRedo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.redo()\n }\n}\n\nfunction handleZoomIn(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(true)\n }\n}\n\nfunction handleZoomOut(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(false)\n }\n}\n\nfunction handleResetZoom(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.resetZoom()\n }\n}\n\nfunction createControlItem(iconClass: string, title: string, onClick?: () => void, disabled = false) {\n const controlItem = document.createElement('div')\n controlItem.className = 'ql-flow-chart-control-item'\n controlItem.title = title\n controlItem.dataset.controlType = iconClass\n controlItem.style.cursor = disabled ? 'not-allowed' : 'pointer'\n\n const iconMap: Record<string, string> = {\n 'back': backIcon,\n 'forward': forwardIcon,\n 'zoom-out': zoomOutIcon,\n 'zoom-in': zoomInIcon,\n 'fit': fitIcon,\n 'screen-type': screenTypeIcon,\n 'panel-status': contractIcon,\n 'set-edge-type': lineIcon,\n }\n\n const icon = document.createElement('i')\n icon.innerHTML = iconMap[iconClass] || ''\n controlItem.appendChild(icon)\n\n if (!disabled) {\n controlItem.addEventListener('click', onClick)\n }\n\n return controlItem\n}\n\nfunction handleSetEdgeType(blot: FlowChartPlaceholderBlot): void {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n if (!controlLeftUpPanel) return\n let edgeTypePanel = controlLeftUpPanel.querySelector('.ql-flow-chart-edge-panel') as HTMLElement\n if (!edgeTypePanel) {\n edgeTypePanel = document.createElement('div')\n edgeTypePanel.className = 'ql-flow-chart-edge-panel'\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n edgeTypePanel.style.width = 'auto'\n edgeTypePanel.style.minWidth = '100%'\n edgeTypePanel.style.padding = '8px'\n edgeTypePanel.style.boxSizing = 'border-box'\n edgeTypePanel.style.position = 'absolute'\n edgeTypePanel.style.top = '170px'\n controlLeftUpPanel.appendChild(edgeTypePanel)\n\n const edgeTypes = [\n {\n name: 'line',\n displayName: '直线',\n icon: lineIcon,\n },\n {\n name: 'polyline',\n displayName: '折线',\n icon: polyLineIcon,\n },\n {\n name: 'bezier',\n displayName: '贝塞尔曲线',\n icon: bezierIcon,\n },\n ]\n\n edgeTypes.forEach((edgeType) => {\n const edgeItem = document.createElement('div')\n edgeItem.className = 'ql-flow-chart-edge-item'\n edgeItem.style.padding = '8px'\n edgeItem.style.cursor = 'pointer'\n edgeItem.style.textAlign = 'center'\n\n const edgeIcon = document.createElement('div')\n edgeIcon.className = `ql-flow-chart-edge-type-icon`\n edgeIcon.style.width = '24px'\n edgeIcon.style.height = '24px'\n edgeIcon.style.margin = '0 auto'\n if (edgeType.icon) {\n edgeIcon.innerHTML = edgeType.icon\n }\n\n edgeItem.appendChild(edgeIcon)\n\n edgeItem.addEventListener('click', () => {\n const { edges = [] } = blot.flowChart.getSelectElements()\n if (edges.length > 0) {\n edges.forEach((edge) => {\n blot.flowChart.changeEdgeType(edge.id, edgeType.name)\n })\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n\n edgeTypePanel.style.display = 'none'\n })\n edgeTypePanel.appendChild(edgeItem)\n })\n }\n else {\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n }\n\n const handleOutsideClick = (e: MouseEvent) => {\n let setEdgeTypeBtn: HTMLElement | null = null\n const controlItems = controlLeftUpPanel.querySelectorAll('.ql-flow-chart-control-item')\n controlItems.forEach((item) => {\n const iconEl = item.querySelector('i')\n if (iconEl && iconEl.className.includes('set-edge-type')) {\n setEdgeTypeBtn = item as HTMLElement\n }\n })\n if (!edgeTypePanel.contains(e.target as Node)\n && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target as Node))) {\n edgeTypePanel.style.display = 'none'\n document.removeEventListener('click', handleOutsideClick)\n }\n }\n\n document.removeEventListener('click', handleOutsideClick)\n setTimeout(() => {\n document.addEventListener('click', handleOutsideClick)\n }, 0)\n}\n\nfunction handleScreenTypeBtn(blot: FlowChartPlaceholderBlot): void {\n const screenTypeBtn = blot.domNode.querySelector('[data-control-type=\"screen-type\"]') as HTMLElement | null\n if (!screenTypeBtn || !blot.domNode) return\n\n const flowChartContainer = blot.domNode\n const isFullscreen = flowChartContainer.style.position === 'fixed'\n\n if (isFullscreen) {\n const originalPosition = flowChartContainer.getAttribute('data-original-position')\n const originalWidth = flowChartContainer.getAttribute('data-original-width')\n const originalHeight = flowChartContainer.getAttribute('data-original-height')\n if (originalWidth && originalHeight) {\n flowChartContainer.style.position = originalPosition\n flowChartContainer.style.width = originalWidth\n flowChartContainer.style.height = originalHeight\n flowChartContainer.style.zIndex = '0'\n }\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenTypeIcon\n }\n }\n else {\n flowChartContainer.setAttribute('data-original-position', flowChartContainer.style.position || '')\n flowChartContainer.setAttribute('data-original-width', flowChartContainer.style.width || '')\n flowChartContainer.setAttribute('data-original-height', flowChartContainer.style.height || '')\n flowChartContainer.style.position = 'fixed'\n flowChartContainer.style.top = '0'\n flowChartContainer.style.left = '0'\n flowChartContainer.style.width = '100vw'\n flowChartContainer.style.height = '100vh'\n flowChartContainer.style.zIndex = '100'\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenReduceIcon\n }\n }\n blot.flowChart.resize()\n blot.flowChart.translateCenter()\n}\n"],"names":["registerFlowChartI18N","I18N","CHANGE_LANGUAGE_EVENT","backIcon","forwardIcon","zoomOutIcon","zoomInIcon","fitIcon","screenTypeIcon","contractIcon","lineIcon","polyLineIcon","bezierIcon","screenReduceIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
|
+
const MIN_WIDTH = 350;
|
|
7
|
+
const MIN_HEIGHT = 290;
|
|
8
|
+
class FlowChartResizeAction {
|
|
9
|
+
constructor(blot) {
|
|
10
|
+
__publicField(this, "topLeftHandle");
|
|
11
|
+
__publicField(this, "topRightHandle");
|
|
12
|
+
__publicField(this, "bottomRightHandle");
|
|
13
|
+
__publicField(this, "bottomLeftHandle");
|
|
14
|
+
__publicField(this, "dragHandle", null);
|
|
15
|
+
__publicField(this, "dragStartX", 0);
|
|
16
|
+
__publicField(this, "dragStartY", 0);
|
|
17
|
+
__publicField(this, "preDragWidth", 0);
|
|
18
|
+
__publicField(this, "preDragHeight", 0);
|
|
19
|
+
__publicField(this, "targetRatio", 0);
|
|
20
|
+
__publicField(this, "blot");
|
|
21
|
+
this.blot = blot;
|
|
22
|
+
this.topLeftHandle = this.createHandle("top-left", "nwse-resize");
|
|
23
|
+
this.topRightHandle = this.createHandle("top-right", "nesw-resize");
|
|
24
|
+
this.bottomRightHandle = this.createHandle("bottom-right", "nwse-resize");
|
|
25
|
+
this.bottomLeftHandle = this.createHandle("bottom-left", "nesw-resize");
|
|
26
|
+
this.init();
|
|
27
|
+
}
|
|
28
|
+
isFullscreen() {
|
|
29
|
+
const container = this.blot.domNode;
|
|
30
|
+
return container.style.position === "fixed" && container.style.width === "100vw" && container.style.height === "100vh";
|
|
31
|
+
}
|
|
32
|
+
init() {
|
|
33
|
+
const container = this.blot.domNode;
|
|
34
|
+
container.style.position = "relative";
|
|
35
|
+
container.appendChild(this.topLeftHandle);
|
|
36
|
+
container.appendChild(this.topRightHandle);
|
|
37
|
+
container.appendChild(this.bottomRightHandle);
|
|
38
|
+
container.appendChild(this.bottomLeftHandle);
|
|
39
|
+
this.repositionHandles();
|
|
40
|
+
}
|
|
41
|
+
createHandle(position, cursor) {
|
|
42
|
+
const box = document.createElement("div");
|
|
43
|
+
box.classList.add("ql-flow-chart-resize-handle");
|
|
44
|
+
box.setAttribute("data-position", position);
|
|
45
|
+
Object.assign(box.style, {
|
|
46
|
+
cursor,
|
|
47
|
+
position: "absolute",
|
|
48
|
+
width: "10px",
|
|
49
|
+
height: "10px",
|
|
50
|
+
background: "#4285f4",
|
|
51
|
+
border: "1px solid white",
|
|
52
|
+
borderRadius: "50%",
|
|
53
|
+
zIndex: "99",
|
|
54
|
+
userSelect: "none"
|
|
55
|
+
});
|
|
56
|
+
box.addEventListener("mousedown", this.onMouseDown.bind(this));
|
|
57
|
+
return box;
|
|
58
|
+
}
|
|
59
|
+
repositionHandles() {
|
|
60
|
+
const container = this.blot.domNode;
|
|
61
|
+
const rect = container.getBoundingClientRect();
|
|
62
|
+
Object.assign(this.topLeftHandle.style, {
|
|
63
|
+
left: "-5px",
|
|
64
|
+
top: "-5px"
|
|
65
|
+
});
|
|
66
|
+
Object.assign(this.topRightHandle.style, {
|
|
67
|
+
right: "-5px",
|
|
68
|
+
top: "-5px"
|
|
69
|
+
});
|
|
70
|
+
Object.assign(this.bottomRightHandle.style, {
|
|
71
|
+
right: "-5px",
|
|
72
|
+
bottom: "-5px"
|
|
73
|
+
});
|
|
74
|
+
Object.assign(this.bottomLeftHandle.style, {
|
|
75
|
+
left: "-5px",
|
|
76
|
+
bottom: "-5px"
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
onMouseDown(event) {
|
|
80
|
+
if (this.isFullscreen()) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (!(event.target instanceof HTMLElement)) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this.dragHandle = event.target;
|
|
87
|
+
document.body.style.cursor = this.dragHandle.style.cursor;
|
|
88
|
+
const container = this.blot.domNode;
|
|
89
|
+
const rect = container.getBoundingClientRect();
|
|
90
|
+
this.dragStartX = event.clientX;
|
|
91
|
+
this.dragStartY = event.clientY;
|
|
92
|
+
this.preDragWidth = rect.width;
|
|
93
|
+
this.preDragHeight = rect.height;
|
|
94
|
+
this.targetRatio = rect.height / rect.width;
|
|
95
|
+
event.preventDefault();
|
|
96
|
+
document.addEventListener("mousemove", this.onDrag.bind(this));
|
|
97
|
+
document.addEventListener("mouseup", this.onMouseUp.bind(this));
|
|
98
|
+
}
|
|
99
|
+
onDrag(event) {
|
|
100
|
+
if (!this.dragHandle) return;
|
|
101
|
+
const container = this.blot.domNode;
|
|
102
|
+
let newWidth = this.preDragWidth;
|
|
103
|
+
let newHeight = this.preDragHeight;
|
|
104
|
+
const deltaX = event.clientX - this.dragStartX;
|
|
105
|
+
const deltaY = event.clientY - this.dragStartY;
|
|
106
|
+
switch (this.dragHandle.dataset.position) {
|
|
107
|
+
case "top-left":
|
|
108
|
+
newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX);
|
|
109
|
+
newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY);
|
|
110
|
+
break;
|
|
111
|
+
case "top-right":
|
|
112
|
+
newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX);
|
|
113
|
+
newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY);
|
|
114
|
+
break;
|
|
115
|
+
case "bottom-right":
|
|
116
|
+
newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX);
|
|
117
|
+
newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY);
|
|
118
|
+
break;
|
|
119
|
+
case "bottom-left":
|
|
120
|
+
newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX);
|
|
121
|
+
newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
container.style.width = `${newWidth}px`;
|
|
125
|
+
container.style.height = `${newHeight}px`;
|
|
126
|
+
container.setAttribute("width", String(newWidth));
|
|
127
|
+
container.setAttribute("height", String(newHeight));
|
|
128
|
+
if (this.blot.flowChart) {
|
|
129
|
+
this.blot.flowChart.resize(newWidth, newHeight);
|
|
130
|
+
}
|
|
131
|
+
this.blot.data.width = newWidth;
|
|
132
|
+
this.blot.data.height = newHeight;
|
|
133
|
+
container.setAttribute("data-flow-chart", JSON.stringify(this.blot.data));
|
|
134
|
+
}
|
|
135
|
+
onMouseUp() {
|
|
136
|
+
document.body.style.cursor = "";
|
|
137
|
+
document.removeEventListener("mousemove", this.onDrag.bind(this));
|
|
138
|
+
document.removeEventListener("mouseup", this.onMouseUp.bind(this));
|
|
139
|
+
this.dragHandle = null;
|
|
140
|
+
}
|
|
141
|
+
destroy() {
|
|
142
|
+
const container = this.blot.domNode;
|
|
143
|
+
container.removeChild(this.topLeftHandle);
|
|
144
|
+
container.removeChild(this.topRightHandle);
|
|
145
|
+
container.removeChild(this.bottomRightHandle);
|
|
146
|
+
container.removeChild(this.bottomLeftHandle);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.FlowChartResizeAction = FlowChartResizeAction;
|
|
150
|
+
//# sourceMappingURL=custom-resize-action.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-resize-action.cjs.js","sources":["../../../../../src/modules/flow-chart/modules/custom-resize-action.ts"],"sourcesContent":["const MIN_WIDTH = 350\nconst MIN_HEIGHT = 290\n\nexport class FlowChartResizeAction {\n topLeftHandle: HTMLElement\n topRightHandle: HTMLElement\n bottomRightHandle: HTMLElement\n bottomLeftHandle: HTMLElement\n dragHandle: HTMLElement | null = null\n dragStartX: number = 0\n dragStartY: number = 0\n preDragWidth: number = 0\n preDragHeight: number = 0\n targetRatio: number = 0\n blot: any\n\n constructor(blot: any) {\n this.blot = blot\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\n this.init()\n }\n\n isFullscreen(): boolean {\n const container = this.blot.domNode\n return container.style.position === 'fixed' && container.style.width === '100vw' && container.style.height === '100vh'\n }\n\n init() {\n const container = this.blot.domNode\n container.style.position = 'relative'\n container.appendChild(this.topLeftHandle)\n container.appendChild(this.topRightHandle)\n container.appendChild(this.bottomRightHandle)\n container.appendChild(this.bottomLeftHandle)\n this.repositionHandles()\n }\n\n createHandle(position: string, cursor: string): HTMLElement {\n const box = document.createElement('div')\n box.classList.add('ql-flow-chart-resize-handle')\n box.setAttribute('data-position', position)\n Object.assign(box.style, {\n cursor,\n position: 'absolute',\n width: '10px',\n height: '10px',\n background: '#4285f4',\n border: '1px solid white',\n borderRadius: '50%',\n zIndex: '99',\n userSelect: 'none',\n })\n box.addEventListener('mousedown', this.onMouseDown.bind(this))\n return box\n }\n\n repositionHandles() {\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n Object.assign(this.topLeftHandle.style, {\n left: '-5px',\n top: '-5px',\n })\n Object.assign(this.topRightHandle.style, {\n right: '-5px',\n top: '-5px',\n })\n Object.assign(this.bottomRightHandle.style, {\n right: '-5px',\n bottom: '-5px',\n })\n Object.assign(this.bottomLeftHandle.style, {\n left: '-5px',\n bottom: '-5px',\n })\n }\n\n onMouseDown(event: MouseEvent) {\n if (this.isFullscreen()) {\n return\n }\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n this.dragHandle = event.target\n document.body.style.cursor = this.dragHandle.style.cursor\n\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n this.dragStartX = event.clientX\n this.dragStartY = event.clientY\n this.preDragWidth = rect.width\n this.preDragHeight = rect.height\n this.targetRatio = rect.height / rect.width\n\n event.preventDefault()\n document.addEventListener('mousemove', this.onDrag.bind(this))\n document.addEventListener('mouseup', this.onMouseUp.bind(this))\n }\n\n onDrag(event: MouseEvent) {\n if (!this.dragHandle) return\n\n const container = this.blot.domNode\n let newWidth = this.preDragWidth\n let newHeight = this.preDragHeight\n\n const deltaX = event.clientX - this.dragStartX\n const deltaY = event.clientY - this.dragStartY\n\n switch (this.dragHandle.dataset.position) {\n case 'top-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'top-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'bottom-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n case 'bottom-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n }\n\n container.style.width = `${newWidth}px`\n container.style.height = `${newHeight}px`\n container.setAttribute('width', String(newWidth))\n container.setAttribute('height', String(newHeight))\n\n if (this.blot.flowChart) {\n this.blot.flowChart.resize(newWidth, newHeight)\n }\n\n this.blot.data.width = newWidth\n this.blot.data.height = newHeight\n container.setAttribute('data-flow-chart', JSON.stringify(this.blot.data))\n }\n\n onMouseUp() {\n document.body.style.cursor = ''\n document.removeEventListener('mousemove', this.onDrag.bind(this))\n document.removeEventListener('mouseup', this.onMouseUp.bind(this))\n this.dragHandle = null\n }\n\n destroy() {\n const container = this.blot.domNode\n container.removeChild(this.topLeftHandle)\n container.removeChild(this.topRightHandle)\n container.removeChild(this.bottomRightHandle)\n container.removeChild(this.bottomLeftHandle)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.cjs.js","sources":["../../../src/modules/i18n.ts"],"sourcesContent":["import type FluentEditor from '../fluent-editor'\r\nimport { CHANGE_LANGUAGE_EVENT, defaultLanguage } from '../config'\r\nimport { isUndefined } from '../utils/is'\r\n\r\nconst langs: Record<string, Record<string, string>> = {}\r\n\r\nexport interface I18NOptions {\r\n lang: string\r\n}\r\nexport class I18N {\r\n static register(inputLangs: Record<string, Record<string, string>>, isCover: boolean = true) {\r\n for (const lang in inputLangs) {\r\n const texts = inputLangs[lang]\r\n if (isCover) {\r\n langs[lang] = texts\r\n }\r\n else {\r\n if (!langs[lang]) langs[lang] = {}\r\n Object.assign(langs[lang], texts)\r\n }\r\n }\r\n }\r\n\r\n static parserText(text: string, lang: string): string {\r\n const i18nPattern = /^_i18n\"([^\"]*)\"/\r\n const match = text.match(i18nPattern)\r\n let key = text\r\n if (match) {\r\n key = match[1]\r\n }\r\n return langs[lang]?.[key] || key\r\n }\r\n\r\n options: I18NOptions = {\r\n lang: '',\r\n }\r\n\r\n constructor(public quill: FluentEditor, options: Partial<I18NOptions>) {\r\n this.options = Object.assign({}, options, this.resolveLanguageOption(options || {}))\r\n // wait until all module registed\r\n Promise.resolve().then(() => this.changeLanguage(this.options, true))\r\n }\r\n\r\n resolveLanguageOption(options: Partial<I18NOptions>): I18NOptions {\r\n if (isUndefined(options.lang)) {\r\n options.lang = defaultLanguage\r\n }\r\n if (!(options.lang in langs)) {\r\n console.warn(`The language ${options.lang} is not supported. Use the default language: ${defaultLanguage}`)\r\n options.lang = defaultLanguage\r\n }\r\n return {\r\n lang: options.lang,\r\n }\r\n }\r\n\r\n changeLanguage(options: Partial<I18NOptions>, force: boolean = false) {\r\n const currentLang = this.options.lang\r\n const langOps = this.resolveLanguageOption(options)\r\n if (langOps.lang === currentLang && !force) return\r\n this.options.lang = langOps.lang\r\n this.quill.emitter.emit(CHANGE_LANGUAGE_EVENT, this.options.lang, langs[langOps.lang])\r\n }\r\n}\r\n\r\nexport default I18N\r\n"],"names":["isUndefined","defaultLanguage","CHANGE_LANGUAGE_EVENT"],"mappings":";;;;;;;;AAIA,MAAM,QAAgD,
|
|
1
|
+
{"version":3,"file":"i18n.cjs.js","sources":["../../../src/modules/i18n.ts"],"sourcesContent":["import type FluentEditor from '../fluent-editor'\r\nimport { CHANGE_LANGUAGE_EVENT, defaultLanguage } from '../config'\r\nimport { isUndefined } from '../utils/is'\r\n\r\nconst langs: Record<string, Record<string, string>> = {}\r\n\r\nexport interface I18NOptions {\r\n lang: string\r\n}\r\nexport class I18N {\r\n static register(inputLangs: Record<string, Record<string, string>>, isCover: boolean = true) {\r\n for (const lang in inputLangs) {\r\n const texts = inputLangs[lang]\r\n if (isCover) {\r\n langs[lang] = texts\r\n }\r\n else {\r\n if (!langs[lang]) langs[lang] = {}\r\n Object.assign(langs[lang], texts)\r\n }\r\n }\r\n }\r\n\r\n static parserText(text: string, lang: string): string {\r\n const i18nPattern = /^_i18n\"([^\"]*)\"/\r\n const match = text.match(i18nPattern)\r\n let key = text\r\n if (match) {\r\n key = match[1]\r\n }\r\n return langs[lang]?.[key] || key\r\n }\r\n\r\n options: I18NOptions = {\r\n lang: '',\r\n }\r\n\r\n constructor(public quill: FluentEditor, options: Partial<I18NOptions>) {\r\n this.options = Object.assign({}, options, this.resolveLanguageOption(options || {}))\r\n // wait until all module registed\r\n Promise.resolve().then(() => this.changeLanguage(this.options, true))\r\n }\r\n\r\n resolveLanguageOption(options: Partial<I18NOptions>): I18NOptions {\r\n if (isUndefined(options.lang)) {\r\n options.lang = defaultLanguage\r\n }\r\n if (!(options.lang in langs)) {\r\n console.warn(`The language ${options.lang} is not supported. Use the default language: ${defaultLanguage}`)\r\n options.lang = defaultLanguage\r\n }\r\n return {\r\n lang: options.lang,\r\n }\r\n }\r\n\r\n changeLanguage(options: Partial<I18NOptions>, force: boolean = false) {\r\n const currentLang = this.options.lang\r\n const langOps = this.resolveLanguageOption(options)\r\n if (langOps.lang === currentLang && !force) return\r\n this.options.lang = langOps.lang\r\n this.quill.emitter.emit(CHANGE_LANGUAGE_EVENT, this.options.lang, langs[langOps.lang])\r\n }\r\n}\r\n\r\nexport default I18N\r\n"],"names":["isUndefined","defaultLanguage","CHANGE_LANGUAGE_EVENT"],"mappings":";;;;;;;;AAIA,MAAM,QAAgD,CAAA;AAK/C,MAAM,KAAK;AAAA,EA4BhB,YAAmB,OAAqB,SAA+B;AAJvE,mCAAuB;AAAA,MACrB,MAAM;AAAA,IAAA;AAGW,SAAA,QAAA;AACjB,SAAK,UAAU,OAAO,OAAO,CAAA,GAAI,SAAS,KAAK,sBAAsB,WAAW,CAAA,CAAE,CAAC;AAEnF,YAAQ,UAAU,KAAK,MAAM,KAAK,eAAe,KAAK,SAAS,IAAI,CAAC;AAAA,EACtE;AAAA,EA/BA,OAAO,SAAS,YAAoD,UAAmB,MAAM;AAC3F,eAAW,QAAQ,YAAY;AAC7B,YAAM,QAAQ,WAAW,IAAI;AAC7B,UAAI,SAAS;AACX,cAAM,IAAI,IAAI;AAAA,MAChB,OACK;AACH,YAAI,CAAC,MAAM,IAAI,EAAG,OAAM,IAAI,IAAI,CAAA;AAChC,eAAO,OAAO,MAAM,IAAI,GAAG,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,MAAc,MAAsB;;AACpD,UAAM,cAAc;AACpB,UAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,QAAI,MAAM;AACV,QAAI,OAAO;AACT,YAAM,MAAM,CAAC;AAAA,IACf;AACA,aAAO,WAAM,IAAI,MAAV,mBAAc,SAAQ;AAAA,EAC/B;AAAA,EAYA,sBAAsB,SAA4C;AAChE,QAAIA,GAAAA,YAAY,QAAQ,IAAI,GAAG;AAC7B,cAAQ,OAAOC,cAAAA;AAAAA,IACjB;AACA,QAAI,EAAE,QAAQ,QAAQ,QAAQ;AAC5B,cAAQ,KAAK,gBAAgB,QAAQ,IAAI,gDAAgDA,cAAAA,eAAe,EAAE;AAC1G,cAAQ,OAAOA,cAAAA;AAAAA,IACjB;AACA,WAAO;AAAA,MACL,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,eAAe,SAA+B,QAAiB,OAAO;AACpE,UAAM,cAAc,KAAK,QAAQ;AACjC,UAAM,UAAU,KAAK,sBAAsB,OAAO;AAClD,QAAI,QAAQ,SAAS,eAAe,CAAC,MAAO;AAC5C,SAAK,QAAQ,OAAO,QAAQ;AAC5B,SAAK,MAAM,QAAQ,KAAKC,cAAAA,uBAAuB,KAAK,QAAQ,MAAM,MAAM,QAAQ,IAAI,CAAC;AAAA,EACvF;AACF;;;"}
|
package/lib/modules/index.cjs.js
CHANGED
|
@@ -8,20 +8,24 @@ const customUploader = require("./custom-uploader.cjs.js");
|
|
|
8
8
|
const divider = require("./divider.cjs.js");
|
|
9
9
|
const emoji = require("./emoji.cjs.js");
|
|
10
10
|
require("./file/index.cjs.js");
|
|
11
|
+
const index = require("./flow-chart/index.cjs.js");
|
|
11
12
|
const i18n = require("./i18n.cjs.js");
|
|
12
13
|
require("./link/index.cjs.js");
|
|
13
14
|
require("./mathlive/index.cjs.js");
|
|
14
15
|
require("./mention/index.cjs.js");
|
|
15
|
-
const index = require("./
|
|
16
|
+
const index$1 = require("./mind-map/index.cjs.js");
|
|
17
|
+
const index$2 = require("./shortcut-key/index.cjs.js");
|
|
16
18
|
require("./syntax.cjs.js");
|
|
17
|
-
const index$
|
|
19
|
+
const index$3 = require("./table-up/index.cjs.js");
|
|
18
20
|
require("./toolbar/index.cjs.js");
|
|
19
21
|
exports.CustomClipboard = customClipboard.CustomClipboard;
|
|
20
22
|
exports.FileUploader = customUploader.FileUploader;
|
|
21
23
|
exports.DividerBlot = divider.DividerBlot;
|
|
22
24
|
exports.EmojiModule = emoji.EmojiModule;
|
|
25
|
+
exports.FlowChartModule = index.FlowChartModule;
|
|
23
26
|
exports.I18N = i18n.I18N;
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
26
|
-
exports.
|
|
27
|
+
exports.MindMapModule = index$1.MindMapModule;
|
|
28
|
+
exports.ShortCutKey = index$2.ShortCutKey;
|
|
29
|
+
exports.shortKey = index$2.shortKey;
|
|
30
|
+
exports.generateTableUp = index$3.generateTableUp;
|
|
27
31
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.cjs.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\
|
|
1
|
+
{"version":3,"file":"link.cjs.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\nimport Quill from 'quill'\nimport { hadProtocol, sanitize } from '../../../config/editor.utils'\n\nconst Inline = Quill.import('blots/inline') as typeof TypeInline\n\nexport class LinkBlot extends Inline {\n static blotName = 'link'\n static tagName = 'A'\n static SANITIZED_URL = 'about:blank'\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']\n static className = 'ql-normal-link'\n\n static autoProtocol: string = ''\n static create(value: string) {\n const node = super.create(value)\n let href = value\n if (!hadProtocol(href) && this.autoProtocol) {\n href = `${this.autoProtocol}://${value}`\n }\n href = this.sanitize(href)\n node.setAttribute('href', href)\n node.setAttribute('target', '_blank')\n return node\n }\n\n static formats(domNode: HTMLElement): string | null {\n return domNode.getAttribute('href')\n }\n\n static sanitize(url: string) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\n }\n\n format(name: string, value: any) {\n if (name !== this.statics.blotName || [false, null].includes(value)) {\n super.format(name, value)\n }\n else {\n this.domNode.setAttribute('href', LinkBlot.sanitize(value))\n }\n }\n}\n"],"names":["hadProtocol","sanitize"],"mappings":";;;;;;;AAIA,MAAM,SAAS,MAAM,OAAO,cAAc;AAEnC,MAAM,YAAN,MAAM,kBAAiB,OAAO;AAAA,EAQnC,OAAO,OAAO,OAAe;AAC3B,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO;AACX,QAAI,CAACA,aAAAA,YAAY,IAAI,KAAK,KAAK,cAAc;AAC3C,aAAO,GAAG,KAAK,YAAY,MAAM,KAAK;AAAA,IACxC;AACA,WAAO,KAAK,SAAS,IAAI;AACzB,SAAK,aAAa,QAAQ,IAAI;AAC9B,SAAK,aAAa,UAAU,QAAQ;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,SAAqC;AAClD,WAAO,QAAQ,aAAa,MAAM;AAAA,EACpC;AAAA,EAEA,OAAO,SAAS,KAAa;AAC3B,WAAOC,aAAAA,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAC7D;AAAA,EAEA,OAAO,MAAc,OAAY;AAC/B,QAAI,SAAS,KAAK,QAAQ,YAAY,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,GAAG;AACnE,YAAM,OAAO,MAAM,KAAK;AAAA,IAC1B,OACK;AACH,WAAK,QAAQ,aAAa,QAAQ,UAAS,SAAS,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;AAnCE,cADW,WACJ,YAAW;AAClB,cAFW,WAEJ,WAAU;AACjB,cAHW,WAGJ,iBAAgB;AACvB,cAJW,WAIJ,sBAAqB,CAAC,QAAQ,SAAS,UAAU,KAAK;AAC7D,cALW,WAKJ,aAAY;AAEnB,cAPW,WAOJ,gBAAuB;AAPzB,IAAM,WAAN;;"}
|