@opentiny/fluent-editor 4.0.0-alpha.14 → 4.0.0-alpha.16
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.map +1 -1
- 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.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 +31 -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.map +1 -1
- package/es/modules/collaborative-editing/awareness/awareness.es.js.map +1 -1
- package/es/modules/collaborative-editing/awareness/y-indexeddb.es.js.map +1 -1
- 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.map +1 -1
- 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/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/divider.es.js.map +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.map +1 -1
- package/es/modules/flow-chart/formats/flow-chart-blot.es.js.map +1 -1
- package/es/modules/flow-chart/i18n/en-us.es.js.map +1 -1
- package/es/modules/flow-chart/i18n/index.es.js.map +1 -1
- package/es/modules/flow-chart/i18n/zh-cn.es.js.map +1 -1
- package/es/modules/flow-chart/icons.es.js.map +1 -1
- package/es/modules/flow-chart/index.es.js.map +1 -1
- package/es/modules/flow-chart/modules/context-menu.es.js.map +1 -1
- package/es/modules/flow-chart/modules/control-panel.es.js.map +1 -1
- package/es/modules/flow-chart/modules/custom-resize-action.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/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.map +1 -1
- package/es/modules/mind-map/formats/mind-map-blot.es.js.map +1 -1
- package/es/modules/mind-map/i18n/en-us.es.js.map +1 -1
- package/es/modules/mind-map/i18n/index.es.js.map +1 -1
- package/es/modules/mind-map/i18n/zh-cn.es.js.map +1 -1
- package/es/modules/mind-map/icons.es.js.map +1 -1
- package/es/modules/mind-map/index.es.js.map +1 -1
- package/es/modules/mind-map/modules/context-menu.es.js.map +1 -1
- package/es/modules/mind-map/modules/control-panel.es.js.map +1 -1
- package/es/modules/mind-map/modules/custom-resize-action.es.js.map +1 -1
- package/es/modules/syntax.es.js.map +1 -1
- package/es/modules/toolbar/better-picker.es.js.map +1 -1
- package/es/themes/snow.es.js.map +1 -1
- package/es/tools/screenshot.es.js.map +1 -1
- package/es/ui/icons.config.es.js.map +1 -1
- package/es/ui/icons.es.js.map +1 -1
- package/es/utils/debounce.es.js.map +1 -1
- package/es/utils/merge.es.js.map +1 -1
- package/es/utils/method.es.js.map +1 -1
- 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.map +1 -1
- 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.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 -10
- 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.map +1 -1
- package/lib/modules/collaborative-editing/awareness/y-indexeddb.cjs.js.map +1 -1
- 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.map +1 -1
- 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/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/divider.cjs.js.map +1 -1
- 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.map +1 -1
- package/lib/modules/flow-chart/formats/flow-chart-blot.cjs.js.map +1 -1
- package/lib/modules/flow-chart/i18n/en-us.cjs.js.map +1 -1
- package/lib/modules/flow-chart/i18n/index.cjs.js.map +1 -1
- package/lib/modules/flow-chart/i18n/zh-cn.cjs.js.map +1 -1
- package/lib/modules/flow-chart/icons.cjs.js.map +1 -1
- package/lib/modules/flow-chart/index.cjs.js.map +1 -1
- package/lib/modules/flow-chart/modules/context-menu.cjs.js.map +1 -1
- package/lib/modules/flow-chart/modules/control-panel.cjs.js.map +1 -1
- package/lib/modules/flow-chart/modules/custom-resize-action.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/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.map +1 -1
- package/lib/modules/mind-map/formats/mind-map-blot.cjs.js.map +1 -1
- package/lib/modules/mind-map/i18n/en-us.cjs.js.map +1 -1
- package/lib/modules/mind-map/i18n/index.cjs.js.map +1 -1
- package/lib/modules/mind-map/i18n/zh-cn.cjs.js.map +1 -1
- package/lib/modules/mind-map/icons.cjs.js.map +1 -1
- package/lib/modules/mind-map/index.cjs.js.map +1 -1
- package/lib/modules/mind-map/modules/context-menu.cjs.js.map +1 -1
- package/lib/modules/mind-map/modules/control-panel.cjs.js.map +1 -1
- package/lib/modules/mind-map/modules/custom-resize-action.cjs.js.map +1 -1
- package/lib/modules/syntax.cjs.js.map +1 -1
- package/lib/modules/toolbar/better-picker.cjs.js.map +1 -1
- package/lib/themes/snow.cjs.js.map +1 -1
- package/lib/tools/screenshot.cjs.js.map +1 -1
- package/lib/ui/icons.cjs.js.map +1 -1
- package/lib/ui/icons.config.cjs.js.map +1 -1
- package/lib/utils/debounce.cjs.js.map +1 -1
- package/lib/utils/merge.cjs.js.map +1 -1
- package/lib/utils/method.cjs.js.map +1 -1
- package/package.json +1 -1
- package/patches/quill@2.0.3.patch +33 -33
- package/scripts/apply-patches.cjs +248 -248
- package/style.css +1 -1
- 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 -125
- package/types/config/i18n/zh-cn.d.ts +125 -125
- 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 +38 -39
- 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 +2 -3
- package/types/modules/collaborative-editing/collaborative-editing.d.ts +20 -21
- 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 +24 -25
- package/types/modules/collaborative-editing/provider/webrtc.d.ts +33 -34
- package/types/modules/collaborative-editing/provider/websocket.d.ts +37 -38
- package/types/modules/collaborative-editing/types.d.ts +45 -46
- 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 → 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 → 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 +9 -10
- package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +40 -41
- package/types/modules/flow-chart/i18n/en-us.d.ts +26 -26
- package/types/modules/flow-chart/i18n/index.d.ts +1 -1
- package/types/modules/flow-chart/i18n/zh-cn.d.ts +26 -26
- package/types/modules/flow-chart/icons.d.ts +12 -12
- package/types/modules/flow-chart/index.d.ts +8 -9
- package/types/modules/flow-chart/modules/context-menu.d.ts +1 -2
- package/types/modules/flow-chart/modules/control-panel.d.ts +1 -2
- package/types/modules/flow-chart/modules/custom-resize-action.d.ts +22 -22
- package/types/modules/flow-chart/options.d.ts +29 -29
- package/types/modules/i18n.d.ts +13 -14
- package/types/modules/index.d.ts +18 -18
- 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 → mention.d.ts} +52 -53
- package/types/modules/mind-map/config-utils.d.ts +11 -12
- package/types/modules/mind-map/formats/mind-map-blot.d.ts +41 -42
- package/types/modules/mind-map/i18n/en-us.d.ts +25 -25
- package/types/modules/mind-map/i18n/index.d.ts +1 -1
- package/types/modules/mind-map/i18n/zh-cn.d.ts +25 -25
- package/types/modules/mind-map/icons.d.ts +21 -21
- package/types/modules/mind-map/index.d.ts +8 -9
- package/types/modules/mind-map/modules/context-menu.d.ts +1 -2
- package/types/modules/mind-map/modules/control-panel.d.ts +1 -2
- package/types/modules/mind-map/modules/custom-resize-action.d.ts +23 -23
- package/types/modules/mind-map/options.d.ts +27 -27
- 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 -40
- 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 -7
- package/types/utils/method.d.ts +6 -6
- package/types/utils/scroll-lock.d.ts +6 -6
- package/types/config/types/additional-toolbar-item.interface.d.ts +0 -8
- package/types/config/types/content-change.interface.d.ts +0 -13
- package/types/config/types/content-save.interface.d.ts +0 -6
- package/types/config/types/counter-option.interface.d.ts +0 -9
- package/types/config/types/editor-toolbar.interface.d.ts +0 -6
- package/types/config/types/file-operation.interface.d.ts +0 -12
- package/types/config/types/focus-change.interface.d.ts +0 -4
- package/types/config/types/fullscreen-module.interface.d.ts +0 -4
- package/types/config/types/help-panel-item.interface.d.ts +0 -5
- package/types/config/types/help-panel-option.interface.d.ts +0 -7
- package/types/config/types/image-module.interface.d.ts +0 -3
- package/types/config/types/image-upload.interface.d.ts +0 -7
- package/types/config/types/load-on-demand-module.interface.d.ts +0 -5
- package/types/config/types/mention-module.interface.d.ts +0 -8
- package/types/config/types/paste-change.interface.d.ts +0 -6
- package/types/config/types/quick-menu-module.interface.d.ts +0 -3
- package/types/config/types/range.interface.d.ts +0 -4
- package/types/config/types/registry-options.interface.d.ts +0 -5
- package/types/config/types/selection-change.interface.d.ts +0 -8
- package/types/config/types/toolbar-item.interface.d.ts +0 -13
- package/types/config/types/validate-error.interface.d.ts +0 -13
- package/types/modules/custom-image/BlotFormatter.d.ts +0 -29
- package/types/modules/custom-image/actions/CustomResizeAction.d.ts +0 -24
- package/types/modules/custom-image/actions/DeleteAction.d.ts +0 -7
- package/types/modules/custom-image/image-bar.d.ts +0 -15
- package/types/modules/custom-image/specs/BlotSpec.d.ts +0 -13
- package/types/modules/custom-image/specs/CustomImageSpec.d.ts +0 -21
- package/types/modules/custom-image/specs/ImageSpec.d.ts +0 -10
- package/types/modules/emoji/emoji-list/index.d.ts +0 -1
- package/types/modules/emoji/emoji-list/people.d.ts +0 -1
- package/types/modules/emoji/emoji-list.d.ts +0 -2
- package/types/modules/emoji/emoji-map.d.ts +0 -2
- package/types/modules/emoji/emoji-sprite.d.ts +0 -1
- package/types/modules/emoji/formats/emoji-blot.d.ts +0 -13
- package/types/modules/emoji/index.d.ts +0 -10
- package/types/modules/emoji/modules/emoji.d.ts +0 -38
- package/types/modules/emoji/modules/toolbar-emoji.d.ts +0 -8
- package/types/modules/emoji/utils.d.ts +0 -1
- package/types/modules/global-link/constants.d.ts +0 -3
- package/types/modules/global-link/formats/customer-widget-link.d.ts +0 -14
- package/types/modules/global-link/formats/doc-link.d.ts +0 -17
- package/types/modules/global-link/formats/wiki-link.d.ts +0 -16
- package/types/modules/global-link/formats/work-item-link.d.ts +0 -16
- package/types/modules/global-link/global-link-panel.d.ts +0 -19
- package/types/modules/global-link/index.d.ts +0 -18
- package/types/modules/global-link/utils/createTable.d.ts +0 -1
- package/types/modules/mention/MentionLink.d.ts +0 -16
- package/types/modules/quick-menu.d.ts +0 -22
- package/types/modules/table/better-table.d.ts +0 -35
- package/types/modules/table/formats/header.d.ts +0 -23
- package/types/modules/table/formats/list.d.ts +0 -34
- package/types/modules/table/formats/table.d.ts +0 -147
- package/types/modules/table/modules/table-column-tool.d.ts +0 -23
- package/types/modules/table/modules/table-operation-menu.d.ts +0 -38
- package/types/modules/table/modules/table-scroll-bar.d.ts +0 -33
- package/types/modules/table/modules/table-selection.d.ts +0 -37
- package/types/modules/table/modules/table-selector.d.ts +0 -22
- package/types/modules/table/table-config.d.ts +0 -38
- package/types/modules/table/utils/index.d.ts +0 -17
- package/types/modules/table/utils/node-matchers.d.ts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/custom-image-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\
|
|
1
|
+
{"version":3,"file":"custom-image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/custom-image-spec.ts"],"sourcesContent":["import type { BlotFormatter } from '../blot-formatter'\nimport { isInside } from '../../../config/editor.utils'\nimport { ImageSpec } from './image-spec'\n\nexport class CustomImageSpec extends ImageSpec {\n editorElem: HTMLElement | undefined\n observer: any\n oldRootScrollTop: number\n\n constructor(formatter: BlotFormatter) {\n super(formatter)\n this.formatter = formatter\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.editorElem = this.formatter.quill.container\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n\n handleQuillRootScroll() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\n }\n }\n\n init(): void {\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\n\n super.init()\n }\n\n imageMouseOver(event) {\n const target = event.target\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\n if (target.nodeName === 'IMG' || isBlotFormatter) {\n // this.addImagePreviewOverlay(event);\n }\n }\n\n imageMouseout = (event) => {\n if (event.target.nodeName === 'IMG'\n || event.target.classList.contains('blot-formatter__overlay')) {\n const imgDom = event.target\n if (!isInside(event, imgDom)) {\n this.removeImagePreviewOverlay()\n }\n }\n }\n\n addImagePreviewOverlay(event) {\n const target = event.target\n const {\n left: imgLeft,\n width: imgWidth,\n } = target.getBoundingClientRect()\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\n\n const {\n left: editorLeft,\n top: editorTop,\n } = event.currentTarget.getBoundingClientRect()\n\n const imgRelativeLeft = imgLeft - editorLeft\n const imgRelativeTop = imgTop - editorTop\n\n const maxmizeWidth = 24\n const maxmizePadding = 15\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\n const previewTop = imgRelativeTop + maxmizePadding\n\n const previewStyle = `\n left: ${previewLeft}px;\n top: ${previewTop}px;\n width: ${maxmizeWidth}px;\n `\n const imageSrc = target.src || target.getAttribute('data-image')\n const imageId = target.getAttribute('data-image-id')\n\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\n if (!previewDom) {\n event.currentTarget.insertAdjacentHTML('beforeend', `\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\n data-image=\"${imageSrc}\"></i>\n </div>\n `)\n }\n }\n\n removeImagePreviewOverlay() {\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\n if (previewDom) {\n previewDom.parentNode.removeChild(previewDom)\n }\n }\n\n onHide() {\n this.removeImagePreviewOverlay()\n super.onHide()\n }\n\n resetOverlayMarginTop() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = '0px'\n }\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n const isReadonly = this.formatter.quill.options.readOnly\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\n return\n }\n\n this.img = el as HTMLImageElement\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.resetOverlayMarginTop()\n this.formatter.show(this)\n\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\n const imageDom = this.formatter.currentSpec?.getTargetElement()\n if (imageDom) {\n imageDom.classList.add('current-select-img')\n const quill = this.formatter.quill\n const imgBlot = quill.scroll.find(this.img)\n const index = quill.getIndex(imgBlot)\n const len = imgBlot.length()\n quill.setSelection(index, len)\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/image-spec.ts"],"sourcesContent":["import { BlotSpec } from './blot-spec'\
|
|
1
|
+
{"version":3,"file":"image-spec.es.js","sources":["../../../../../src/modules/custom-image/specs/image-spec.ts"],"sourcesContent":["import { BlotSpec } from './blot-spec'\n\nexport class ImageSpec extends BlotSpec {\n img: HTMLImageElement | null = null\n\n init() {\n this.formatter.quill.root.addEventListener('click', this.onClick)\n }\n\n getTargetElement() {\n return this.img\n }\n\n onHide() {\n this.img = null\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return\n }\n event.stopPropagation()\n\n this.img = el as HTMLImageElement\n this.formatter.show(this)\n }\n}\n"],"names":[],"mappings":";;;;AAEO,MAAM,kBAAkB,SAAS;AAAA,EAAjC;AAAA;AACL,+BAA+B;AAc/B,mCAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MACF;AACA,YAAM,gBAAA;AAEN,WAAK,MAAM;AACX,WAAK,UAAU,KAAK,IAAI;AAAA,IAC1B;AAAA;AAAA,EArBA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAClE;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,SAAK,MAAM;AAAA,EACb;AAYF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divider.es.js","sources":["../../../src/modules/divider.ts"],"sourcesContent":["import type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\
|
|
1
|
+
{"version":3,"file":"divider.es.js","sources":["../../../src/modules/divider.ts"],"sourcesContent":["import type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\nimport Quill from 'quill'\n\nconst BlockEmbed = Quill.import('blots/block/embed') as typeof TypeBlockEmbed\n\nexport class DividerBlot extends BlockEmbed {\n static blotName = 'divider'\n static tagName = 'hr'\n\n static create() {\n const node = super.create() as HTMLElement\n node.setAttribute('contenteditable', 'false')\n return node\n }\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,aAAa,MAAM,OAAO,mBAAmB;AAE5C,MAAM,oBAAoB,WAAW;AAAA,EAI1C,OAAO,SAAS;AACd,UAAM,OAAO,MAAM,OAAA;AACnB,SAAK,aAAa,mBAAmB,OAAO;AAC5C,WAAO;AAAA,EACT;AACF;AARE,cADW,aACJ,YAAW;AAClB,cAFW,aAEJ,WAAU;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji.es.js","sources":["../../../src/modules/emoji.ts"],"sourcesContent":["import type { EmojiMartData } from '@emoji-mart/data'\
|
|
1
|
+
{"version":3,"file":"emoji.es.js","sources":["../../../src/modules/emoji.ts"],"sourcesContent":["import type { EmojiMartData } from '@emoji-mart/data'\nimport type { computePosition } from '@floating-ui/dom'\nimport type { Picker } from 'emoji-mart'\nimport type TypeToolbar from 'quill/modules/toolbar'\nimport type FluentEditor from '../fluent-editor'\nimport { debounce } from '../utils/debounce'\n\nexport interface EmojiModuleOptions {\n emojiData?: EmojiMartData\n EmojiPicker?: new (props: any) => Picker\n emojiPickerPosition?: typeof computePosition\n theme?: string\n locale?: string\n set?: string\n skinTonePosition?: string\n previewPosition?: string\n searchPosition?: string\n categories?: string[]\n maxFrequentRows?: number\n perLine?: number\n navPosition?: string\n noCountryFlags?: boolean\n dynamicWidth?: boolean\n}\n\nconst DEFAULT_OPTIONS: EmojiModuleOptions = {\n // @ts-ignore\n emojiData: window.emojiData,\n // @ts-ignore\n EmojiPicker: window.EmojiPicker,\n // @ts-ignore\n emojiPickerPosition: window.emojiPickerPosition,\n theme: 'light',\n set: 'native',\n skinTonePosition: 'none',\n previewPosition: 'bottom',\n searchPosition: 'sticky',\n categories: ['frequent', 'people', 'nature', 'foods', 'activity', 'places', 'objects', 'symbols', 'flags'],\n maxFrequentRows: 2,\n perLine: 8,\n navPosition: 'top',\n noCountryFlags: false,\n dynamicWidth: false,\n}\n\nconst PICKER_DOM_ID = 'emoji-picker'\n\nconst LOCALE_MAP = {\n 'zh-CN': 'zh',\n 'en-US': 'en',\n} as const\n\nclass EmojiModule {\n private readonly quill: FluentEditor\n private readonly options: EmojiModuleOptions\n private picker: HTMLElement | null = null\n private isPickerVisible = false\n private cleanupResizeObserver: (() => void) | null = null\n\n constructor(quill: FluentEditor, options: EmojiModuleOptions = {}) {\n this.quill = quill\n\n this.options = { ...DEFAULT_OPTIONS, ...options }\n\n const toolbar = this.quill.getModule('toolbar') as TypeToolbar\n\n if (toolbar) {\n toolbar.addHandler('emoji', () => {\n if (this.isPickerVisible) {\n this.closeDialog()\n }\n else {\n this.openDialog()\n }\n })\n }\n }\n\n private getEmojiButton() {\n return document.querySelector('.ql-emoji') as HTMLElement | null\n }\n\n private async updatePickerPosition() {\n const button = this.getEmojiButton()\n const pickerElement = document.getElementById(PICKER_DOM_ID)\n\n if (!button || !this.picker || !pickerElement) {\n return\n }\n\n const { emojiPickerPosition } = this.options\n\n try {\n const { x, y } = await emojiPickerPosition(button, pickerElement)\n this.picker.style.top = `${y}px`\n this.picker.style.left = `${x}px`\n }\n catch (error) {\n console.warn('Failed to compute picker position:', error)\n }\n }\n\n // 监听容器大小变化,更新表情选择弹窗位置\n private setupContainerResizeObserver() {\n const container = this.quill.root.parentElement\n if (!container) {\n return null\n }\n\n const debouncedUpdate = debounce(() => {\n this.updatePickerPosition()\n }, 100)\n\n const resizeObserver = new ResizeObserver(() => {\n debouncedUpdate()\n })\n\n resizeObserver.observe(container)\n\n return () => {\n resizeObserver.disconnect()\n debouncedUpdate.cancel()\n }\n }\n\n // 创建表情选择弹窗\n private createPicker() {\n const { EmojiPicker, emojiData, ...options } = this.options\n\n const pickerConfig = {\n // emoji-mart 与 tiny-editor 国际化的的 locale 不一致使用 LOCALE_MAP 转换\n locale: LOCALE_MAP[this.quill.lang] ?? 'en',\n data: emojiData,\n ...options,\n onEmojiSelect: this.handleEmojiSelect.bind(this),\n onClickOutside: this.handleClickOutside.bind(this),\n }\n\n const picker = new EmojiPicker(pickerConfig) as unknown as HTMLElement\n\n // 设置样式和属性\n picker.id = PICKER_DOM_ID\n picker.style.position = 'absolute'\n picker.style.zIndex = '1000'\n\n return picker\n }\n\n // 打开表情弹窗\n public openDialog() {\n if (this.picker) {\n return\n }\n\n try {\n this.picker = this.createPicker()\n document.body.appendChild(this.picker)\n\n this.updatePickerPosition()\n this.cleanupResizeObserver = this.setupContainerResizeObserver()\n this.isPickerVisible = true\n }\n catch (error) {\n console.error('Failed to open emoji picker:', error)\n this.closeDialog()\n }\n }\n\n // 关闭表情弹窗\n public closeDialog() {\n if (!this.picker) {\n return\n }\n\n this.isPickerVisible = false\n this.picker.remove()\n this.picker = null\n\n this.cleanupResizeObserver?.()\n this.cleanupResizeObserver = null\n }\n\n // 处理表情选择事件\n private handleEmojiSelect(emoji: { native: string }) {\n const selection = this.quill.getSelection(true)\n if (!selection) {\n console.warn('No selection available for emoji insertion')\n return\n }\n\n try {\n // 记录插入位置\n const insertIndex = selection.index\n this.quill.insertText(insertIndex, emoji.native, 'user')\n\n this.closeDialog()\n\n // 设置光标到表情符号后面\n this.quill.setSelection(insertIndex + emoji.native.length)\n }\n catch (error) {\n console.error('Failed to insert emoji:', error)\n }\n }\n\n // 处理外部点击事件\n private handleClickOutside(event: MouseEvent) {\n const button = this.getEmojiButton()\n\n const target = event.target\n\n const isClickOnButton = target === button || (target instanceof Element && button?.contains(target))\n\n // 如果点击的是表情符号按钮或其子元素,则不关闭选择器\n if (isClickOnButton) {\n return\n }\n\n this.closeDialog()\n }\n\n // 销毁模块,清理资源\n public destroy() {\n this.cleanupResizeObserver?.()\n this.cleanupResizeObserver = null\n this.closeDialog()\n }\n}\n\nexport { EmojiModule }\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.es.js","sources":["../../../../../src/modules/file/formats/file.ts"],"sourcesContent":["import type TypeEmbed from 'quill/blots/embed'\
|
|
1
|
+
{"version":3,"file":"file.es.js","sources":["../../../../../src/modules/file/formats/file.ts"],"sourcesContent":["import type TypeEmbed from 'quill/blots/embed'\nimport Quill from 'quill'\nimport { sanitize } from '../../../config/editor.utils'\n\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\nconst FILE_ATTRIBUTES = ['id', 'title', 'size', 'lastModified']\n\nexport interface FileValue {\n size: number\n src: string\n title: string\n}\nexport class File extends Embed {\n static blotName = 'file'\n static tagName = 'A'\n static className = 'ql-file-item'\n static PROTOCOL_WHITELIST = ['http', 'https', 'blob']\n\n static create(value: FileValue) {\n const node = super.create(value) as HTMLAnchorElement\n const size = value.size / 1024\n const fixSize = !size ? 0 : size < 1 ? 1 : size.toFixed(0)\n node.classList.add('icon-file')\n node.setAttribute('contenteditable', 'false')\n const fileSvg = '<svg viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326z m1.8 562H232V136h302v216c0 23.2 18.8 42 42 42h216v494z\" p-id=\"2307\"></path></svg>'\n node.innerHTML = `${fileSvg} ${value.title} (${fixSize} KB)`\n const src = this.sanitize(value.src)\n if (src) {\n node.href = src\n node.target = '_blank'\n }\n FILE_ATTRIBUTES.forEach((key) => {\n if (value[key]) {\n node.dataset[key] = value[key]\n }\n })\n return node\n }\n\n static value(domNode: HTMLAnchorElement) {\n return this.getFormats(domNode)\n }\n\n static getFormats(domNode: HTMLAnchorElement) {\n const formats: Record<string, string> = {}\n const href = this.sanitize(domNode.href)\n if (href) {\n formats.src = href\n }\n FILE_ATTRIBUTES.forEach((key) => {\n if (domNode.dataset[key]) {\n formats[key] = domNode.dataset[key]\n }\n })\n return formats\n }\n\n static sanitize(url: string) {\n return (sanitize(url, this.PROTOCOL_WHITELIST) && url) || ''\n }\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,QAAQ,MAAM,OAAO,aAAa;AACxC,MAAM,kBAAkB,CAAC,MAAM,SAAS,QAAQ,cAAc;AAOvD,MAAM,aAAa,MAAM;AAAA,EAM9B,OAAO,OAAO,OAAkB;AAC9B,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,UAAM,OAAO,MAAM,OAAO;AAC1B,UAAM,UAAU,CAAC,OAAO,IAAI,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC;AACzD,SAAK,UAAU,IAAI,WAAW;AAC9B,SAAK,aAAa,mBAAmB,OAAO;AAC5C,UAAM,UAAU;AAChB,SAAK,YAAY,GAAG,OAAO,IAAI,MAAM,KAAK,KAAK,OAAO;AACtD,UAAM,MAAM,KAAK,SAAS,MAAM,GAAG;AACnC,QAAI,KAAK;AACP,WAAK,OAAO;AACZ,WAAK,SAAS;AAAA,IAChB;AACA,oBAAgB,QAAQ,CAAC,QAAQ;AAC/B,UAAI,MAAM,GAAG,GAAG;AACd,aAAK,QAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAA4B;AACvC,WAAO,KAAK,WAAW,OAAO;AAAA,EAChC;AAAA,EAEA,OAAO,WAAW,SAA4B;AAC5C,UAAM,UAAkC,CAAA;AACxC,UAAM,OAAO,KAAK,SAAS,QAAQ,IAAI;AACvC,QAAI,MAAM;AACR,cAAQ,MAAM;AAAA,IAChB;AACA,oBAAgB,QAAQ,CAAC,QAAQ;AAC/B,UAAI,QAAQ,QAAQ,GAAG,GAAG;AACxB,gBAAQ,GAAG,IAAI,QAAQ,QAAQ,GAAG;AAAA,MACpC;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,KAAa;AAC3B,WAAQ,SAAS,KAAK,KAAK,kBAAkB,KAAK,OAAQ;AAAA,EAC5D;AACF;AA/CE,cADW,MACJ,YAAW;AAClB,cAFW,MAEJ,WAAU;AACjB,cAHW,MAGJ,aAAY;AACnB,cAJW,MAIJ,sBAAqB,CAAC,QAAQ,SAAS,MAAM;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-bar.es.js","sources":["../../../../../src/modules/file/modules/file-bar.ts"],"sourcesContent":["import Quill from 'quill'\
|
|
1
|
+
{"version":3,"file":"file-bar.es.js","sources":["../../../../../src/modules/file/modules/file-bar.ts"],"sourcesContent":["import Quill from 'quill'\nimport { Range } from 'quill/core/selection'\nimport { unshiftString } from '../../../utils/method'\nimport { File } from '../formats/file'\n\nconst Delta = Quill.import('delta')\n\nexport class FileBar {\n quill: any\n file: any\n domNode: HTMLElement\n fileRange: any\n template: string\n\n constructor(quill, target) {\n this.quill = quill\n this.file = target\n const fileBlot = Quill.find(target)\n const index = this.quill.getIndex(fileBlot)\n const [fileItem, offset] = this.quill.scroll.descendant(File, index)\n const length = fileItem && fileItem.length()\n this.fileRange = new Range(index - offset, length)\n\n const timestamp = Number(this.file.dataset.lastModified)\n const _lastModifiedDate = this.formatDate(timestamp)\n this.template = [\n // `<a class=\"ql-last-modified-date\" href=\"${this.file.href}\" target=\"_blank\">${this.file.href}</a>`,\n // '<span class=\"ql-split\"></span>',\n // `<a class=\"ql-file-preview\"><i class=\"icon-preview\"></i></a>`,\n `<a class=\"ql-file-download\"><i class=\"icon-download\"></i></a>`,\n '<a class=\"ql-file-delete\"><i class=\"icon-delete\"></i></a>',\n ].join('')\n\n this.createFileBar()\n }\n\n createFileBar() {\n this.domNode = document.createElement('div')\n this.domNode.className = 'ql-file-bar'\n this.domNode.innerHTML = this.template\n // 查看文件\n const filePreview = this.domNode.querySelector('a.ql-file-preview')\n if (filePreview) {\n filePreview.addEventListener('click', (event) => {\n this.operateFile(event, 'view')\n })\n }\n // 下载文件\n const fileDownload = this.domNode.querySelector('a.ql-file-download')\n if (fileDownload) {\n fileDownload.addEventListener('click', (event) => {\n this.operateFile(event, 'download')\n })\n }\n // 删除文件\n const fileDelete = this.domNode.querySelector('a.ql-file-delete')\n if (fileDelete) {\n fileDelete.addEventListener('click', (event) => {\n this.operateFile(event, 'delete')\n const delta = new Delta()\n .retain(this.fileRange.index)\n .delete(this.fileRange.length)\n this.quill.updateContents(delta, Quill.sources.USER)\n this.quill.setSelection(this.fileRange.index)\n })\n }\n\n this.setPosition()\n this.quill.root.parentNode.appendChild(this.domNode)\n }\n\n destroy() {\n if (this.domNode) {\n this.domNode.remove()\n this.domNode = null\n this.file = null\n }\n }\n\n operateFile(event, operate) {\n event.preventDefault()\n const fileId = this.file.dataset.id || ''\n const fileName = this.file.dataset.title || ''\n const fileDownloadUrl = this.file.href || ''\n if (fileId) {\n this.quill.emitter.emit('file-change', {\n operation: operate,\n data: { fileId, fileDownloadUrl },\n })\n }\n if (operate === 'download') {\n const a = document.createElement('a')\n a.href = fileDownloadUrl\n a.target = '_blank'\n a.id = 'exppub'\n a.download = fileName\n document.body.appendChild(a)\n const alink = document.getElementById('exppub')\n alink.click()\n alink.parentNode.removeChild(a)\n }\n this.destroy()\n }\n\n setPosition() {\n if (this.domNode && this.file) {\n const parent = this.quill.root.parentNode\n const child = this.file.querySelector('span')\n const containerRect = parent.getBoundingClientRect()\n const fileRect = child.getBoundingClientRect()\n this.css(this.domNode, {\n left: `${fileRect.left - containerRect.left}px`,\n top: `${fileRect.top - containerRect.top + 10}px`,\n })\n }\n }\n\n css(domNode, rules) {\n if (typeof rules === 'object') {\n for (const prop in rules) {\n if (prop) {\n if (Array.isArray(rules[prop])) {\n // 兼容IE11浏览器\n rules[prop].forEach((val) => {\n domNode.style[prop] = val\n })\n }\n else {\n domNode.style[prop] = rules[prop]\n }\n }\n }\n }\n }\n\n formatDate(timestamp) {\n const date = new Date(timestamp)\n const year = date.getFullYear()\n // TODO\n const month = unshiftString(`${date.getMonth() + 1}`, 2, '0')\n const day = unshiftString(`${date.getDate()}`, 2, '0')\n const hour = unshiftString(`${date.getHours()}`, 2, '0')\n const minute = unshiftString(`${date.getMinutes()}`, 2, '0')\n return Number.isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-module.es.js","sources":["../../../../../src/modules/file/modules/file-module.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\
|
|
1
|
+
{"version":3,"file":"file-module.es.js","sources":["../../../../../src/modules/file/modules/file-module.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\nimport Quill from 'quill'\nimport { File } from '../formats/file'\nimport { FileBar } from './file-bar'\n\nexport class FileModule {\n fileBar: FileBar\n\n static register() {\n Quill.register('formats/file', File, true)\n }\n\n constructor(public quill: FluentEditor) {\n this.quill = quill\n quill.root.addEventListener('click', event => this.clickEvent(event), false)\n }\n\n clickEvent(event: MouseEvent) {\n event.preventDefault()\n const target = event.target as HTMLElement\n const fileDom = target.closest('a.ql-file-item')\n if (fileDom) {\n if (this.fileBar) {\n this.fileBar.destroy()\n }\n this.fileBar = new FileBar(this.quill, fileDom)\n }\n else if (this.fileBar && !target.closest('.ql-file-bar')) {\n this.fileBar.destroy()\n this.fileBar = null\n }\n }\n}\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,WAAW;AAAA,EAOtB,YAAmB,OAAqB;AANxC;AAMmB,SAAA,QAAA;AACjB,SAAK,QAAQ;AACb,UAAM,KAAK,iBAAiB,SAAS,CAAA,UAAS,KAAK,WAAW,KAAK,GAAG,KAAK;AAAA,EAC7E;AAAA,EAPA,OAAO,WAAW;AAChB,UAAM,SAAS,gBAAgB,MAAM,IAAI;AAAA,EAC3C;AAAA,EAOA,WAAW,OAAmB;AAC5B,UAAM,eAAA;AACN,UAAM,SAAS,MAAM;AACrB,UAAM,UAAU,OAAO,QAAQ,gBAAgB;AAC/C,QAAI,SAAS;AACX,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ,QAAA;AAAA,MACf;AACA,WAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,OAAO;AAAA,IAChD,WACS,KAAK,WAAW,CAAC,OAAO,QAAQ,cAAc,GAAG;AACxD,WAAK,QAAQ,QAAA;AACb,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-utils.es.js","sources":["../../../../src/modules/flow-chart/config-utils.ts"],"sourcesContent":["import type Quill from 'quill'\
|
|
1
|
+
{"version":3,"file":"config-utils.es.js","sources":["../../../../src/modules/flow-chart/config-utils.ts"],"sourcesContent":["import type Quill from 'quill'\nimport type { BackgroundConfig, GridOptions } from './options'\n\nexport function getGridConfig(quill: Quill | null): any {\n const defaultGrid = {\n size: 20,\n visible: true,\n type: 'dot',\n config: {\n color: '#ababab',\n thickness: 1,\n },\n }\n\n const flowChartModule = quill?.options.modules?.['flow-chart']\n if (!flowChartModule || typeof flowChartModule !== 'object') {\n return defaultGrid\n }\n\n if ('grid' in flowChartModule) {\n const grid = flowChartModule.grid as GridOptions | boolean | undefined\n if (grid === false || grid === undefined) {\n return null\n }\n\n if (typeof grid === 'object' && grid !== null) {\n const typedGrid = grid as GridOptions\n const gridConfig = {\n size: typedGrid.size || defaultGrid.size,\n visible: typedGrid.visible !== undefined ? typedGrid.visible : defaultGrid.visible,\n type: typedGrid.type || defaultGrid.type,\n config: {\n color: typedGrid.config?.color || defaultGrid.config.color,\n thickness: typedGrid.config?.thickness || defaultGrid.config.thickness,\n },\n }\n\n return gridConfig\n }\n }\n\n return defaultGrid\n}\n\nexport function getBackgroundConfig(quill: Quill | null): false | object {\n const flowChartModule = quill?.options.modules?.['flow-chart']\n if (!flowChartModule || typeof flowChartModule !== 'object') {\n return false\n }\n if ('background' in flowChartModule) {\n const background = flowChartModule.background as BackgroundConfig | boolean | undefined\n\n if (background === false || background === undefined) {\n return false\n }\n if (typeof background === 'object' && background !== null) {\n const typedBackground = background as BackgroundConfig\n const backgroundConfig: any = {}\n\n if (typedBackground.color) {\n backgroundConfig.backgroundColor = typedBackground.color\n }\n if (typedBackground.image) {\n backgroundConfig.backgroundImage = typedBackground.image\n }\n if (typedBackground.repeat) {\n backgroundConfig.backgroundRepeat = typedBackground.repeat\n }\n if (typedBackground.position) {\n backgroundConfig.backgroundPosition = typedBackground.position\n }\n if (typedBackground.size) {\n backgroundConfig.backgroundSize = typedBackground.size\n }\n if (typedBackground.opacity) {\n backgroundConfig.opacity = typedBackground.opacity\n }\n return backgroundConfig\n }\n }\n return false\n}\n\nexport function getResizeConfig(quill: Quill | null): boolean {\n const flowChartModule = quill?.options.modules?.['flow-chart']\n if (!flowChartModule || typeof flowChartModule !== 'object') {\n return false\n }\n if ('resize' in flowChartModule) {\n const resize = (flowChartModule as any).resize as boolean | undefined\n return resize === true\n }\n return false\n}\n\nexport function getAllConfigs(quill: Quill | null): {\n gridConfig: any\n backgroundConfig: false | object\n resizeConfig: boolean\n deps?: any\n} {\n const deps = (quill?.options.modules?.['flow-chart'] as any)?.deps\n return {\n gridConfig: getGridConfig(quill),\n backgroundConfig: getBackgroundConfig(quill),\n resizeConfig: getResizeConfig(quill),\n deps,\n }\n}\n"],"names":[],"mappings":"AAGO,SAAS,cAAc,OAA0B;AAAjD;AACL,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,EACb;AAGF,QAAM,mBAAkB,oCAAO,QAAQ,YAAf,mBAAyB;AACjD,MAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;AAC3D,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,iBAAiB;AAC7B,UAAM,OAAO,gBAAgB;AAC7B,QAAI,SAAS,SAAS,SAAS,QAAW;AACxC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,YAAM,YAAY;AAClB,YAAM,aAAa;AAAA,QACjB,MAAM,UAAU,QAAQ,YAAY;AAAA,QACpC,SAAS,UAAU,YAAY,SAAY,UAAU,UAAU,YAAY;AAAA,QAC3E,MAAM,UAAU,QAAQ,YAAY;AAAA,QACpC,QAAQ;AAAA,UACN,SAAO,eAAU,WAAV,mBAAkB,UAAS,YAAY,OAAO;AAAA,UACrD,aAAW,eAAU,WAAV,mBAAkB,cAAa,YAAY,OAAO;AAAA,QAAA;AAAA,MAC/D;AAGF,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,oBAAoB,OAAqC;AAzClE;AA0CL,QAAM,mBAAkB,oCAAO,QAAQ,YAAf,mBAAyB;AACjD,MAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;AAC3D,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,iBAAiB;AACnC,UAAM,aAAa,gBAAgB;AAEnC,QAAI,eAAe,SAAS,eAAe,QAAW;AACpD,aAAO;AAAA,IACT;AACA,QAAI,OAAO,eAAe,YAAY,eAAe,MAAM;AACzD,YAAM,kBAAkB;AACxB,YAAM,mBAAwB,CAAA;AAE9B,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,OAAO;AACzB,yBAAiB,kBAAkB,gBAAgB;AAAA,MACrD;AACA,UAAI,gBAAgB,QAAQ;AAC1B,yBAAiB,mBAAmB,gBAAgB;AAAA,MACtD;AACA,UAAI,gBAAgB,UAAU;AAC5B,yBAAiB,qBAAqB,gBAAgB;AAAA,MACxD;AACA,UAAI,gBAAgB,MAAM;AACxB,yBAAiB,iBAAiB,gBAAgB;AAAA,MACpD;AACA,UAAI,gBAAgB,SAAS;AAC3B,yBAAiB,UAAU,gBAAgB;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,OAA8B;AAhFvD;AAiFL,QAAM,mBAAkB,oCAAO,QAAQ,YAAf,mBAAyB;AACjD,MAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;AAC3D,WAAO;AAAA,EACT;AACA,MAAI,YAAY,iBAAiB;AAC/B,UAAM,SAAU,gBAAwB;AACxC,WAAO,WAAW;AAAA,EACpB;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAK5B;AAjGK;AAkGL,QAAM,QAAQ,0CAAO,QAAQ,YAAf,mBAAyB,kBAAzB,mBAAgD;AAC9D,SAAO;AAAA,IACL,YAAY,cAAc,KAAK;AAAA,IAC/B,kBAAkB,oBAAoB,KAAK;AAAA,IAC3C,cAAc,gBAAgB,KAAK;AAAA,IACnC;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-chart-blot.es.js","sources":["../../../../../src/modules/flow-chart/formats/flow-chart-blot.ts"],"sourcesContent":["import type { Root } from 'parchment'\r\nimport type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\r\nimport type FluentEditor from '../../../core/fluent-editor'\r\nimport Quill from 'quill'\r\nimport { getAllConfigs } from '../config-utils'\r\nimport { contractIcon, expandIcon } from '../icons'\r\nimport { initContextMenu } from '../modules/context-menu'\r\nimport { createControlPanel } from '../modules/control-panel'\r\nimport { FlowChartResizeAction } from '../modules/custom-resize-action'\r\nimport '../style/flow-chart.scss'\r\n\r\nconst BlockEmbed = Quill.import('blots/embed') as typeof TypeBlockEmbed\r\nclass FlowChartPlaceholderBlot extends BlockEmbed {\r\n static blotName = 'flow-chart'\r\n static tagName = 'div'\r\n static className = 'ql-flow-chart-item'\r\n quill: Quill | null = null\r\n flowChart: any | null = null\r\n data: any\r\n contextMenu: HTMLElement | null = null\r\n currentElement: any = null\r\n width: number = 100\r\n height: number = 500\r\n parentObserver: MutationObserver | null = null\r\n nextPObserver: MutationObserver | null = null\r\n\r\n constructor(scroll: Root, domNode: HTMLElement) {\r\n super(scroll, domNode)\r\n const data = FlowChartPlaceholderBlot.value(domNode)\r\n this.width = data.width || 100\r\n this.height = data.height || 500\r\n this.domNode.style.width = `${this.width}${data.width ? 'px' : '%'}`\r\n this.domNode.style.height = `${this.height}px`\r\n this.domNode.style.maxWidth = '100%'\r\n this.domNode.style.border = '1px solid #e8e8e8'\r\n this.domNode.setAttribute('contenteditable', 'false')\r\n this.data = FlowChartPlaceholderBlot.value(this.domNode)\r\n this.initFlowChart()\r\n }\r\n\r\n static value(domNode: HTMLElement): any {\r\n const dataStr = JSON.parse(domNode.getAttribute('data-flow-chart'))\r\n const value = dataStr.root ? dataStr.root : dataStr\r\n if (domNode.hasAttribute('width')) {\r\n value.width = Number.parseInt(domNode.getAttribute('width'), 10)\r\n }\r\n if (domNode.hasAttribute('height')) {\r\n value.height = Number.parseInt(domNode.getAttribute('height'), 10)\r\n }\r\n return dataStr.root ? dataStr.root : dataStr\r\n }\r\n\r\n static create(value: any): HTMLElement {\r\n const node = super.create() as HTMLElement\r\n if (value) {\r\n node.setAttribute('data-flow-chart', JSON.stringify(value))\r\n }\r\n if (value.width) {\r\n node.setAttribute('width', String(value.width))\r\n node.style.width = `${value.width}%`\r\n }\r\n if (value.height) {\r\n node.setAttribute('height', String(value.height))\r\n node.style.height = `${value.height}px`\r\n }\r\n node.setAttribute('contenteditable', 'false')\r\n return node\r\n }\r\n\r\n private static findQuill(el: HTMLElement): Quill | null {\r\n let cur: HTMLElement | null = el\r\n while (cur) {\r\n const q = (cur as any).__quillInstance\r\n if (q) return q\r\n cur = cur.parentElement\r\n }\r\n return null\r\n }\r\n\r\n attach() {\r\n super.attach()\r\n this.quill = FlowChartPlaceholderBlot.findQuill(this.domNode)\r\n }\r\n\r\n initFlowChart(): void {\r\n if (this.domNode.isConnected) {\r\n this.insertFlowChartEditor()\r\n }\r\n else {\r\n const observer = new MutationObserver(() => {\r\n if (this.domNode.isConnected) {\r\n this.insertFlowChartEditor()\r\n observer.disconnect()\r\n }\r\n })\r\n observer.observe(document.body, { childList: true, subtree: true })\r\n }\r\n }\r\n\r\n insertFlowChartEditor(): void {\r\n this.domNode.style.width = `${this.width}${this.data.width ? 'px' : '%'}`\r\n this.domNode.style.height = `${this.height}px`\r\n this.updateAlignmentStyle()\r\n this.observeParentAlignment()\r\n const { gridConfig, backgroundConfig, resizeConfig, deps } = getAllConfigs(this.quill)\r\n const { LogicFlow, DndPanel, SelectionSelect, Snapshot } = deps || window as any\r\n this.flowChart = new LogicFlow({\r\n container: this.domNode,\r\n stopScrollGraph: true,\r\n stopZoomGraph: true,\r\n allowResize: true,\r\n allowRotate: true,\r\n editable: true,\r\n preventDefaultDoubleClick: true,\r\n preventDefault: true,\r\n grid: gridConfig,\r\n background: backgroundConfig,\r\n plugins: [DndPanel, SelectionSelect, Snapshot],\r\n })\r\n this.flowChart.setPatternItems([\r\n {\r\n className: 'lf-shape-dashed',\r\n callback: () => {\r\n this.flowChart.openSelectionSelect()\r\n this.flowChart.once('selection:selected', () => {\r\n this.flowChart.closeSelectionSelect()\r\n })\r\n },\r\n },\r\n {\r\n type: 'rect',\r\n text: '矩形',\r\n className: 'lf-shape-rect',\r\n },\r\n {\r\n type: 'circle',\r\n text: '圆形',\r\n className: 'lf-shape-circle',\r\n },\r\n {\r\n type: 'ellipse',\r\n text: '椭圆',\r\n className: 'lf-shape-ellipse',\r\n },\r\n {\r\n type: 'diamond',\r\n text: '菱形',\r\n className: 'lf-shape-diamond',\r\n },\r\n ])\r\n if (resizeConfig) {\r\n new FlowChartResizeAction(this)\r\n }\r\n createControlPanel(this, this.quill as FluentEditor) // 创建控制面板\r\n initContextMenu(this, this.quill as FluentEditor) // 初始化右键菜单\r\n this.observeOwnParentChange()\r\n this.observeNextPElement()\r\n this.addMouseHoverEvents()\r\n this.flowChart.render(this.data)\r\n this.flowChart.on('graph:updated', () => {\r\n this.data = this.flowChart.getGraphData()\r\n this.domNode.setAttribute('data-flow-chart', JSON.stringify(this.data))\r\n })\r\n this.flowChart.on('history:change', () => {\r\n this.data = this.flowChart.getGraphData()\r\n this.domNode.setAttribute('data-flow-chart', JSON.stringify(this.data))\r\n })\r\n this.flowChart.on('node:dbclick', this.handleNodeDblClick.bind(this))\r\n this.flowChart.on('edge:dbclick', this.handleNodeDblClick.bind(this))\r\n this.domNode.addEventListener('click', (e) => {\r\n if (this.quill) {\r\n const flowChartBlot = Quill.find(this.domNode)\r\n const index = this.quill.getIndex(flowChartBlot as FlowChartPlaceholderBlot)\r\n if (index && typeof index === 'number') {\r\n this.quill.setSelection(index + 1, 0)\r\n }\r\n }\r\n })\r\n }\r\n\r\n addMouseHoverEvents(): void {\r\n this.domNode.addEventListener('mouseenter', () => {\r\n this.showControlPanel()\r\n })\r\n\r\n this.domNode.addEventListener('mouseleave', () => {\r\n this.flowChart?.clearSelectElements()\r\n this.hideControlPanel()\r\n })\r\n }\r\n\r\n getControlElements(): { leftUpControl: HTMLElement | null, control: HTMLElement | null, panelStatusIcon: HTMLElement | null } {\r\n const leftUpControl = this.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\r\n const control = this.domNode.querySelector('.ql-flow-chart-control') as HTMLElement | null\r\n const panelStatusIcon = this.domNode.querySelector('[data-control-type=\"panel-status\"]') as HTMLElement | null\r\n return { leftUpControl, control, panelStatusIcon }\r\n }\r\n\r\n showControlPanel(): void {\r\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\r\n if (!leftUpControl || !control) return\r\n\r\n leftUpControl.style.display = 'block'\r\n control.style.display = 'flex'\r\n if (panelStatusIcon) {\r\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\r\n iconElement.innerHTML = expandIcon\r\n }\r\n }\r\n\r\n hideControlPanel(): void {\r\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\r\n if (!leftUpControl || !control) return\r\n\r\n leftUpControl.style.display = 'none'\r\n control.style.display = 'none'\r\n if (panelStatusIcon) {\r\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\r\n iconElement.innerHTML = contractIcon\r\n }\r\n }\r\n\r\n observeOwnParentChange(): void {\r\n let currentParent = this.domNode.parentElement\r\n const observer = new MutationObserver(() => {\r\n if (this.domNode.parentElement !== currentParent) {\r\n currentParent = this.domNode.parentElement\r\n this.observeParentAlignment()\r\n }\r\n })\r\n\r\n observer.observe(document.body, {\r\n attributes: false,\r\n childList: true,\r\n subtree: true,\r\n })\r\n }\r\n\r\n observeParentAlignment(): void {\r\n if (this.parentObserver) {\r\n this.parentObserver.disconnect()\r\n }\r\n\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.attributeName === 'class') {\r\n this.updateAlignmentStyle()\r\n }\r\n })\r\n })\r\n\r\n this.parentObserver = observer\r\n\r\n const parent = this.domNode.parentElement\r\n if (parent) {\r\n observer.observe(parent, {\r\n attributes: true,\r\n attributeFilter: ['class'],\r\n })\r\n this.updateAlignmentStyle()\r\n }\r\n }\r\n\r\n updateAlignmentStyle(): void {\r\n const parent = this.domNode.parentElement\r\n if (!parent) return\r\n\r\n this.domNode.style.margin = ''\r\n this.domNode.style.display = 'block'\r\n\r\n if (parent.classList.contains('ql-align-center')) {\r\n this.domNode.style.margin = '0 auto'\r\n }\r\n else if (parent.classList.contains('ql-align-right')) {\r\n this.domNode.style.marginLeft = 'auto'\r\n this.domNode.style.marginRight = '0'\r\n }\r\n else {\r\n this.domNode.style.marginLeft = '0'\r\n this.domNode.style.marginRight = 'auto'\r\n }\r\n }\r\n\r\n observeNextPElement(): void {\r\n if (this.nextPObserver) {\r\n this.nextPObserver.disconnect()\r\n }\r\n\r\n const parentElement = this.domNode.parentElement\r\n if (!parentElement) {\r\n return\r\n }\r\n\r\n const trackedParentElement = parentElement\r\n\r\n const parentElementId = parentElement.getAttribute('id') || `flow-chart-parent-${Date.now()}`\r\n parentElement.setAttribute('id', parentElementId)\r\n\r\n const observer = new MutationObserver(() => {\r\n if (!document.contains(trackedParentElement)) {\r\n const elementById = document.getElementById(parentElementId)\r\n if (!elementById) {\r\n this.remove()\r\n observer.disconnect()\r\n }\r\n }\r\n })\r\n\r\n observer.observe(document.body, {\r\n childList: true,\r\n subtree: true,\r\n })\r\n\r\n this.nextPObserver = observer\r\n }\r\n\r\n // 处理节点双击事件\r\n handleNodeDblClick(event: any) {\r\n const { data, position, e } = event\r\n if (data && data.id) {\r\n this.createEditInput(data, position, e)\r\n }\r\n }\r\n\r\n // 创建编辑输入框\r\n createEditInput(nodeData: any, position: any, e: any) {\r\n const input = document.createElement('textarea')\r\n input.className = 'ql-flow-chart-edit-input'\r\n input.value = nodeData.text?.value || ''\r\n const autoResize = () => {\r\n input.style.height = 'auto'\r\n input.style.height = `${input.scrollHeight}px`\r\n }\r\n Object.assign(input.style, {\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n width: '100px',\r\n height: '35px',\r\n padding: '5px',\r\n lineHeight: '1.2',\r\n whiteSpace: 'pre',\r\n textAlign: 'center',\r\n background: '#fff',\r\n border: '1px solid #edefed',\r\n borderRadius: '3px',\r\n outline: 'none',\r\n transform: 'translate(-50%, -50%)',\r\n resize: 'none',\r\n zIndex: '1000',\r\n left: `${e.pageX}px`,\r\n top: `${e.pageY}px`,\r\n overflow: 'hidden',\r\n })\r\n document.body.appendChild(input)\r\n autoResize()\r\n input.addEventListener('input', autoResize)\r\n input.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter' && !e.shiftKey) {\r\n this.flowChart.updateText(nodeData.id, input.value)\r\n autoResize()\r\n }\r\n })\r\n input.focus()\r\n\r\n this.flowChart.on('blank:mousedown', () => {\r\n this.flowChart.updateText(nodeData.id, input.value)\r\n input.remove()\r\n })\r\n\r\n this.flowChart.on('node:click', () => {\r\n this.flowChart.updateText(nodeData.id, input.value)\r\n input.remove()\r\n })\r\n\r\n this.flowChart.on('edge:click', () => {\r\n this.flowChart.updateText(nodeData.id, input.value)\r\n input.remove()\r\n })\r\n }\r\n\r\n updateText(nodeId: string, text: string) {\r\n this.flowChart.updateNode(nodeId, {\r\n text: { value: text },\r\n })\r\n }\r\n\r\n destroyFlowChart() {\r\n if (this.flowChart) {\r\n this.flowChart.destroy()\r\n this.flowChart = null\r\n }\r\n const editInputs = document.querySelectorAll('.ql-flow-chart-edit-input')\r\n editInputs.forEach(input => input.remove())\r\n if (this.nextPObserver) {\r\n this.nextPObserver.disconnect()\r\n this.nextPObserver = null\r\n }\r\n }\r\n\r\n remove() {\r\n this.destroyFlowChart()\r\n super.remove()\r\n }\r\n}\r\n\r\nexport default FlowChartPlaceholderBlot\r\n"],"names":["e"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flow-chart-blot.es.js","sources":["../../../../../src/modules/flow-chart/formats/flow-chart-blot.ts"],"sourcesContent":["import type { Root } from 'parchment'\nimport type { BlockEmbed as TypeBlockEmbed } from 'quill/blots/block'\nimport type FluentEditor from '../../../core/fluent-editor'\nimport Quill from 'quill'\nimport { getAllConfigs } from '../config-utils'\nimport { contractIcon, expandIcon } from '../icons'\nimport { initContextMenu } from '../modules/context-menu'\nimport { createControlPanel } from '../modules/control-panel'\nimport { FlowChartResizeAction } from '../modules/custom-resize-action'\nimport '../style/flow-chart.scss'\n\nconst BlockEmbed = Quill.import('blots/embed') as typeof TypeBlockEmbed\nclass FlowChartPlaceholderBlot extends BlockEmbed {\n static blotName = 'flow-chart'\n static tagName = 'div'\n static className = 'ql-flow-chart-item'\n quill: Quill | null = null\n flowChart: any | null = null\n data: any\n contextMenu: HTMLElement | null = null\n currentElement: any = null\n width: number = 100\n height: number = 500\n parentObserver: MutationObserver | null = null\n nextPObserver: MutationObserver | null = null\n\n constructor(scroll: Root, domNode: HTMLElement) {\n super(scroll, domNode)\n const data = FlowChartPlaceholderBlot.value(domNode)\n this.width = data.width || 100\n this.height = data.height || 500\n this.domNode.style.width = `${this.width}${data.width ? 'px' : '%'}`\n this.domNode.style.height = `${this.height}px`\n this.domNode.style.maxWidth = '100%'\n this.domNode.style.border = '1px solid #e8e8e8'\n this.domNode.setAttribute('contenteditable', 'false')\n this.data = FlowChartPlaceholderBlot.value(this.domNode)\n this.initFlowChart()\n }\n\n static value(domNode: HTMLElement): any {\n const dataStr = JSON.parse(domNode.getAttribute('data-flow-chart'))\n const value = dataStr.root ? dataStr.root : dataStr\n if (domNode.hasAttribute('width')) {\n value.width = Number.parseInt(domNode.getAttribute('width'), 10)\n }\n if (domNode.hasAttribute('height')) {\n value.height = Number.parseInt(domNode.getAttribute('height'), 10)\n }\n return dataStr.root ? dataStr.root : dataStr\n }\n\n static create(value: any): HTMLElement {\n const node = super.create() as HTMLElement\n if (value) {\n node.setAttribute('data-flow-chart', JSON.stringify(value))\n }\n if (value.width) {\n node.setAttribute('width', String(value.width))\n node.style.width = `${value.width}%`\n }\n if (value.height) {\n node.setAttribute('height', String(value.height))\n node.style.height = `${value.height}px`\n }\n node.setAttribute('contenteditable', 'false')\n return node\n }\n\n private static findQuill(el: HTMLElement): Quill | null {\n let cur: HTMLElement | null = el\n while (cur) {\n const q = (cur as any).__quillInstance\n if (q) return q\n cur = cur.parentElement\n }\n return null\n }\n\n attach() {\n super.attach()\n this.quill = FlowChartPlaceholderBlot.findQuill(this.domNode)\n }\n\n initFlowChart(): void {\n if (this.domNode.isConnected) {\n this.insertFlowChartEditor()\n }\n else {\n const observer = new MutationObserver(() => {\n if (this.domNode.isConnected) {\n this.insertFlowChartEditor()\n observer.disconnect()\n }\n })\n observer.observe(document.body, { childList: true, subtree: true })\n }\n }\n\n insertFlowChartEditor(): void {\n this.domNode.style.width = `${this.width}${this.data.width ? 'px' : '%'}`\n this.domNode.style.height = `${this.height}px`\n this.updateAlignmentStyle()\n this.observeParentAlignment()\n const { gridConfig, backgroundConfig, resizeConfig, deps } = getAllConfigs(this.quill)\n const { LogicFlow, DndPanel, SelectionSelect, Snapshot } = deps || window as any\n this.flowChart = new LogicFlow({\n container: this.domNode,\n stopScrollGraph: true,\n stopZoomGraph: true,\n allowResize: true,\n allowRotate: true,\n editable: true,\n preventDefaultDoubleClick: true,\n preventDefault: true,\n grid: gridConfig,\n background: backgroundConfig,\n plugins: [DndPanel, SelectionSelect, Snapshot],\n })\n this.flowChart.setPatternItems([\n {\n className: 'lf-shape-dashed',\n callback: () => {\n this.flowChart.openSelectionSelect()\n this.flowChart.once('selection:selected', () => {\n this.flowChart.closeSelectionSelect()\n })\n },\n },\n {\n type: 'rect',\n text: '矩形',\n className: 'lf-shape-rect',\n },\n {\n type: 'circle',\n text: '圆形',\n className: 'lf-shape-circle',\n },\n {\n type: 'ellipse',\n text: '椭圆',\n className: 'lf-shape-ellipse',\n },\n {\n type: 'diamond',\n text: '菱形',\n className: 'lf-shape-diamond',\n },\n ])\n if (resizeConfig) {\n new FlowChartResizeAction(this)\n }\n createControlPanel(this, this.quill as FluentEditor) // 创建控制面板\n initContextMenu(this, this.quill as FluentEditor) // 初始化右键菜单\n this.observeOwnParentChange()\n this.observeNextPElement()\n this.addMouseHoverEvents()\n this.flowChart.render(this.data)\n this.flowChart.on('graph:updated', () => {\n this.data = this.flowChart.getGraphData()\n this.domNode.setAttribute('data-flow-chart', JSON.stringify(this.data))\n })\n this.flowChart.on('history:change', () => {\n this.data = this.flowChart.getGraphData()\n this.domNode.setAttribute('data-flow-chart', JSON.stringify(this.data))\n })\n this.flowChart.on('node:dbclick', this.handleNodeDblClick.bind(this))\n this.flowChart.on('edge:dbclick', this.handleNodeDblClick.bind(this))\n this.domNode.addEventListener('click', (e) => {\n if (this.quill) {\n const flowChartBlot = Quill.find(this.domNode)\n const index = this.quill.getIndex(flowChartBlot as FlowChartPlaceholderBlot)\n if (index && typeof index === 'number') {\n this.quill.setSelection(index + 1, 0)\n }\n }\n })\n }\n\n addMouseHoverEvents(): void {\n this.domNode.addEventListener('mouseenter', () => {\n this.showControlPanel()\n })\n\n this.domNode.addEventListener('mouseleave', () => {\n this.flowChart?.clearSelectElements()\n this.hideControlPanel()\n })\n }\n\n getControlElements(): { leftUpControl: HTMLElement | null, control: HTMLElement | null, panelStatusIcon: HTMLElement | null } {\n const leftUpControl = this.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n const control = this.domNode.querySelector('.ql-flow-chart-control') as HTMLElement | null\n const panelStatusIcon = this.domNode.querySelector('[data-control-type=\"panel-status\"]') as HTMLElement | null\n return { leftUpControl, control, panelStatusIcon }\n }\n\n showControlPanel(): void {\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\n if (!leftUpControl || !control) return\n\n leftUpControl.style.display = 'block'\n control.style.display = 'flex'\n if (panelStatusIcon) {\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\n iconElement.innerHTML = expandIcon\n }\n }\n\n hideControlPanel(): void {\n const { leftUpControl, control, panelStatusIcon } = this.getControlElements()\n if (!leftUpControl || !control) return\n\n leftUpControl.style.display = 'none'\n control.style.display = 'none'\n if (panelStatusIcon) {\n const iconElement = panelStatusIcon.querySelector('i') || panelStatusIcon\n iconElement.innerHTML = contractIcon\n }\n }\n\n observeOwnParentChange(): void {\n let currentParent = this.domNode.parentElement\n const observer = new MutationObserver(() => {\n if (this.domNode.parentElement !== currentParent) {\n currentParent = this.domNode.parentElement\n this.observeParentAlignment()\n }\n })\n\n observer.observe(document.body, {\n attributes: false,\n childList: true,\n subtree: true,\n })\n }\n\n observeParentAlignment(): void {\n if (this.parentObserver) {\n this.parentObserver.disconnect()\n }\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n this.updateAlignmentStyle()\n }\n })\n })\n\n this.parentObserver = observer\n\n const parent = this.domNode.parentElement\n if (parent) {\n observer.observe(parent, {\n attributes: true,\n attributeFilter: ['class'],\n })\n this.updateAlignmentStyle()\n }\n }\n\n updateAlignmentStyle(): void {\n const parent = this.domNode.parentElement\n if (!parent) return\n\n this.domNode.style.margin = ''\n this.domNode.style.display = 'block'\n\n if (parent.classList.contains('ql-align-center')) {\n this.domNode.style.margin = '0 auto'\n }\n else if (parent.classList.contains('ql-align-right')) {\n this.domNode.style.marginLeft = 'auto'\n this.domNode.style.marginRight = '0'\n }\n else {\n this.domNode.style.marginLeft = '0'\n this.domNode.style.marginRight = 'auto'\n }\n }\n\n observeNextPElement(): void {\n if (this.nextPObserver) {\n this.nextPObserver.disconnect()\n }\n\n const parentElement = this.domNode.parentElement\n if (!parentElement) {\n return\n }\n\n const trackedParentElement = parentElement\n\n const parentElementId = parentElement.getAttribute('id') || `flow-chart-parent-${Date.now()}`\n parentElement.setAttribute('id', parentElementId)\n\n const observer = new MutationObserver(() => {\n if (!document.contains(trackedParentElement)) {\n const elementById = document.getElementById(parentElementId)\n if (!elementById) {\n this.remove()\n observer.disconnect()\n }\n }\n })\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n })\n\n this.nextPObserver = observer\n }\n\n // 处理节点双击事件\n handleNodeDblClick(event: any) {\n const { data, position, e } = event\n if (data && data.id) {\n this.createEditInput(data, position, e)\n }\n }\n\n // 创建编辑输入框\n createEditInput(nodeData: any, position: any, e: any) {\n const input = document.createElement('textarea')\n input.className = 'ql-flow-chart-edit-input'\n input.value = nodeData.text?.value || ''\n const autoResize = () => {\n input.style.height = 'auto'\n input.style.height = `${input.scrollHeight}px`\n }\n Object.assign(input.style, {\n position: 'absolute',\n boxSizing: 'border-box',\n width: '100px',\n height: '35px',\n padding: '5px',\n lineHeight: '1.2',\n whiteSpace: 'pre',\n textAlign: 'center',\n background: '#fff',\n border: '1px solid #edefed',\n borderRadius: '3px',\n outline: 'none',\n transform: 'translate(-50%, -50%)',\n resize: 'none',\n zIndex: '1000',\n left: `${e.pageX}px`,\n top: `${e.pageY}px`,\n overflow: 'hidden',\n })\n document.body.appendChild(input)\n autoResize()\n input.addEventListener('input', autoResize)\n input.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n this.flowChart.updateText(nodeData.id, input.value)\n autoResize()\n }\n })\n input.focus()\n\n this.flowChart.on('blank:mousedown', () => {\n this.flowChart.updateText(nodeData.id, input.value)\n input.remove()\n })\n\n this.flowChart.on('node:click', () => {\n this.flowChart.updateText(nodeData.id, input.value)\n input.remove()\n })\n\n this.flowChart.on('edge:click', () => {\n this.flowChart.updateText(nodeData.id, input.value)\n input.remove()\n })\n }\n\n updateText(nodeId: string, text: string) {\n this.flowChart.updateNode(nodeId, {\n text: { value: text },\n })\n }\n\n destroyFlowChart() {\n if (this.flowChart) {\n this.flowChart.destroy()\n this.flowChart = null\n }\n const editInputs = document.querySelectorAll('.ql-flow-chart-edit-input')\n editInputs.forEach(input => input.remove())\n if (this.nextPObserver) {\n this.nextPObserver.disconnect()\n this.nextPObserver = null\n }\n }\n\n remove() {\n this.destroyFlowChart()\n super.remove()\n }\n}\n\nexport default FlowChartPlaceholderBlot\n"],"names":["e"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-us.es.js","sources":["../../../../../src/modules/flow-chart/i18n/en-us.ts"],"sourcesContent":["export const FLOW_CHART_EN_US = {\
|
|
1
|
+
{"version":3,"file":"en-us.es.js","sources":["../../../../../src/modules/flow-chart/i18n/en-us.ts"],"sourcesContent":["export const FLOW_CHART_EN_US = {\n 'flowChart.controlPanel.export': 'Export',\n 'flowChart.controlPanel.import': 'Import',\n 'flowChart.controlPanel.setEdgeTypeTitle': 'Set Edge Type',\n 'flowChart.dndPanel.selection': 'Selection',\n 'flowChart.dndPanel.rectangle': 'Rectangle',\n 'flowChart.dndPanel.circle': 'Circle',\n 'flowChart.dndPanel.ellipse': 'Ellipse',\n 'flowChart.dndPanel.diamond': 'Diamond',\n 'flowChart.controlPanel.zoomOut': 'Out',\n 'flowChart.controlPanel.zoomIn': 'In',\n 'flowChart.controlPanel.fit': 'Fit',\n 'flowChart.controlPanel.back': 'Back',\n 'flowChart.controlPanel.forward': 'Forward',\n 'flowChart.controlPanel.zoomOutTitle': 'Zoom Out View',\n 'flowChart.controlPanel.zoomInTitle': 'Zoom In View',\n 'flowChart.controlPanel.fitTitle': 'Fit View Size',\n 'flowChart.controlPanel.backTitle': 'Step Back',\n 'flowChart.controlPanel.forwardTitle': 'Step Forward',\n 'flowChart.contextMenu.copy': 'Copy',\n 'flowChart.contextMenu.deleteContent': 'Delete',\n 'flowChart.contextMenu.deleteNode': 'Delete Node',\n 'flowChart.contextMenu.deleteEdge': 'Delete Edge',\n 'flowChart.controlPanel.panelStatusTitle': 'Panel Status',\n 'flowChart.controlPanel.screenTypeTitle': 'Screen Type',\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB;AAAA,EAC9B,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,2CAA2C;AAAA,EAC3C,gCAAgC;AAAA,EAChC,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,8BAA8B;AAAA,EAC9B,kCAAkC;AAAA,EAClC,iCAAiC;AAAA,EACjC,8BAA8B;AAAA,EAC9B,+BAA+B;AAAA,EAC/B,kCAAkC;AAAA,EAClC,uCAAuC;AAAA,EACvC,sCAAsC;AAAA,EACtC,mCAAmC;AAAA,EACnC,oCAAoC;AAAA,EACpC,uCAAuC;AAAA,EACvC,8BAA8B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,oCAAoC;AAAA,EACpC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,0CAA0C;AAC5C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../../../src/modules/flow-chart/i18n/index.ts"],"sourcesContent":["import { FLOW_CHART_EN_US } from './en-us'\
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../src/modules/flow-chart/i18n/index.ts"],"sourcesContent":["import { FLOW_CHART_EN_US } from './en-us'\nimport { FLOW_CHART_ZH_CN } from './zh-cn'\n\nexport function registerFlowChartI18N(I18N: any) {\n I18N.register({\n 'en-US': FLOW_CHART_EN_US,\n 'zh-CN': FLOW_CHART_ZH_CN,\n }, false)\n}\n"],"names":[],"mappings":";;AAGO,SAAS,sBAAsB,MAAW;AAC/C,OAAK,SAAS;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,GACR,KAAK;AACV;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-cn.es.js","sources":["../../../../../src/modules/flow-chart/i18n/zh-cn.ts"],"sourcesContent":["export const FLOW_CHART_ZH_CN = {\
|
|
1
|
+
{"version":3,"file":"zh-cn.es.js","sources":["../../../../../src/modules/flow-chart/i18n/zh-cn.ts"],"sourcesContent":["export const FLOW_CHART_ZH_CN = {\n 'flowChart.controlPanel.export': '导出',\n 'flowChart.controlPanel.import': '导入',\n 'flowChart.controlPanel.setEdgeTypeTitle': '设置边类型',\n 'flowChart.dndPanel.selection': '选区',\n 'flowChart.dndPanel.rectangle': '矩形',\n 'flowChart.dndPanel.circle': '圆形',\n 'flowChart.dndPanel.ellipse': '椭圆',\n 'flowChart.dndPanel.diamond': '菱形',\n 'flowChart.controlPanel.zoomOut': '缩小',\n 'flowChart.controlPanel.zoomIn': '放大',\n 'flowChart.controlPanel.fit': '适应',\n 'flowChart.controlPanel.back': '上一步',\n 'flowChart.controlPanel.forward': '下一步',\n 'flowChart.controlPanel.zoomOutTitle': '缩小视图',\n 'flowChart.controlPanel.zoomInTitle': '放大视图',\n 'flowChart.controlPanel.fitTitle': '适应视图大小',\n 'flowChart.controlPanel.backTitle': '上一步',\n 'flowChart.controlPanel.forwardTitle': '下一步',\n 'flowChart.contextMenu.copy': '复制',\n 'flowChart.contextMenu.deleteContent': '删除',\n 'flowChart.contextMenu.deleteNode': '删除节点',\n 'flowChart.contextMenu.deleteEdge': '删除边',\n 'flowChart.controlPanel.panelStatusTitle': '面板状态',\n 'flowChart.controlPanel.screenTypeTitle': '屏幕类型',\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB;AAAA,EAC9B,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,2CAA2C;AAAA,EAC3C,gCAAgC;AAAA,EAChC,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,8BAA8B;AAAA,EAC9B,kCAAkC;AAAA,EAClC,iCAAiC;AAAA,EACjC,8BAA8B;AAAA,EAC9B,+BAA+B;AAAA,EAC/B,kCAAkC;AAAA,EAClC,uCAAuC;AAAA,EACvC,sCAAsC;AAAA,EACtC,mCAAmC;AAAA,EACnC,oCAAoC;AAAA,EACpC,uCAAuC;AAAA,EACvC,8BAA8B;AAAA,EAC9B,uCAAuC;AAAA,EACvC,oCAAoC;AAAA,EACpC,oCAAoC;AAAA,EACpC,2CAA2C;AAAA,EAC3C,0CAA0C;AAC5C;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.es.js","sources":["../../../../src/modules/flow-chart/icons.ts"],"sourcesContent":["export const backIcon = `<svg t=\"1761403103969\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4781\" width=\"20\" height=\"20\"><path d=\"M995.648 459.296C684.448 281.568 406.08 318.656 171.232 567.904L32 416v384h352l-160.736-175.328c211.168-227.072 452.192-259.776 734.304-98.688a38.4 38.4 0 0 0 38.08-66.688z\" p-id=\"4782\" fill=\"#2c2c2c\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.26dd3a81klL5t6\" class=\"selected\"></path></svg>`\r\nexport const forwardIcon = `<svg t=\"1761403135994\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5138\" width=\"20\" height=\"20\"><path d=\"M860.992 558.912C627.904 317.536 352.384 283.648 44.8 459.296a38.4 38.4 0 1 0 38.08 66.688c278.432-159.008 516.896-129.408 726.08 89.696L640 800h352V416l-131.008 142.912z\" p-id=\"5139\"></path></svg>`\r\nexport const zoomOutIcon = `<svg t=\"1761403245796\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8340\" width=\"20\" height=\"20\"><path d=\"M170.666667 469.333333h682.666666v85.333334H170.666667z\" fill=\"#2c2c2c\" p-id=\"8341\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.466d3a81c91yTh\" class=\"selected\"></path></svg>`\r\nexport const zoomInIcon = `<svg t=\"1761403317929\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8601\" width=\"20\" height=\"20\"><path d=\"M469.333333 469.333333V170.666667h85.333334v298.666666h298.666666v85.333334h-298.666666v298.666666h-85.333334v-298.666666H170.666667v-85.333334h298.666666z\" fill=\"#2c2c2c\" p-id=\"8602\" data-spm-anchor-id=\"a313x.collections_detail.0.i3.466d3a81c91yTh\" class=\"selected\"></path></svg>`\r\nexport const fitIcon = `<svg t=\"1761403396579\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5306\" width=\"20\" height=\"20\"><path d=\"M921.6 64c20.48 0 38.4 17.92 38.4 38.4v819.2c0 20.48-17.92 38.4-38.4 38.4H102.4c-20.48 0-38.4-17.92-38.4-38.4V102.4c0-20.48 17.92-38.4 38.4-38.4h819.2z m-38.4 76.8H140.8v742.4h742.4V140.8z m-640 478.72c17.92 0 33.28 15.36 33.28 33.28v94.72H371.2c17.92 0 33.28 15.36 33.28 33.28s-15.36 33.28-33.28 33.28h-128a33.92 33.92 0 0 1-33.28-33.28v-128c0-17.92 15.36-33.28 33.28-33.28z m537.6 0c17.92 0 33.28 15.36 33.28 33.28v128c0 17.92-15.36 33.28-33.28 33.28h-128a33.92 33.92 0 0 1-33.28-33.28c0-17.92 15.36-33.28 33.28-33.28h94.72V652.8c0-17.92 15.36-33.28 33.28-33.28z m0-409.6c17.92 0 33.28 15.36 33.28 33.28v128c0 17.92-15.36 33.28-33.28 33.28a33.92 33.92 0 0 1-33.28-33.28V276.48H652.8a33.92 33.92 0 0 1-33.28-33.28c0-17.92 15.36-33.28 33.28-33.28h128z m-409.6 0c17.92 0 33.28 15.36 33.28 33.28s-15.36 33.28-33.28 33.28H276.48V371.2c0 17.92-15.36 33.28-33.28 33.28a33.92 33.92 0 0 1-33.28-33.28v-128c0-17.92 15.36-33.28 33.28-33.28h128z\" fill=\"#2c2c2c\" p-id=\"5307\" data-spm-anchor-id=\"a313x.search_index.0.i0.4ac53a81alttUW\" class=\"selected\"></path></svg>`\r\nexport const screenTypeIcon = `<svg t=\"1761452295156\" class=\"icon\" viewBox=\"0 0 1026 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1999\" width=\"20\" height=\"20\"><path d=\"M163.2 94.08a48 48 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m145.28 279.04a48 48 0 0 0 67.84 0 48 48 0 0 0 0-67.84L308.48 373.12z m-213.12-211.2l213.12 211.2 67.84-67.84-213.12-211.2-67.84 67.84zM95.36 859.52a48 48 0 0 0 67.84 68.48l-67.84-68.48z m280.96-142.72a48 48 0 0 0-67.84-68.48l67.84 68.48z m-213.12 211.2l213.12-211.2-67.84-68.48-213.12 211.2 67.84 68.48zM863.36 928a48 48 0 0 0 67.84-67.84l-67.84 67.84z m-143.36-279.04a47.36 47.36 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m211.2 211.2l-211.2-211.2-67.84 67.84 211.2 211.2 67.84-67.84zM929.28 161.92a48 48 0 0 0 0-67.84 49.28 49.28 0 0 0-68.48 0l68.48 67.84z m-279.68 143.36a48 48 0 0 0 0 67.84 49.28 49.28 0 0 0 68.48 0l-68.48-67.84z m211.2-211.2l-211.2 211.2 68.48 67.84 211.2-211.2-68.48-67.84z\" fill=\"#2c2c2c\" p-id=\"2000\" data-spm-anchor-id=\"a313x.collections_detail.0.i1.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M704 80a48 48 0 0 0 0 96v-96zM896 128h48a48.64 48.64 0 0 0-48-48V128z m-48 192a48 48 0 0 0 96 0zM704 176h192v-96h-192v96zM849.28 128v192h96V128zM945.28 704a48 48 0 0 0-96 0zM896 896v48a48.64 48.64 0 0 0 48-48z m-192-48a48 48 0 0 0 0 96v-96zM849.28 704v192h96v-192z m46.72 144h-192v96h192v-96zM320 944a48 48 0 0 0 0-96v96zM128 896h-46.72a48 48 0 0 0 48 48V896z m48-192a48 48 0 0 0-96 0zM320 848H128v96h192v-96zM177.28 896v-192h-96v192zM81.28 320a48 48 0 0 0 96 0zM128 128v-48a48 48 0 0 0-46.72 48z m192 48a48 48 0 0 0 0-96v96zM177.28 320V128h-96v192zM128 176h192v-96H128v96z\" fill=\"#2c2c2c\" p-id=\"2001\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.6af43a81bnfxmJ\" class=\"selected\"></path></svg>`\r\nexport const screenReduceIcon = `<svg t=\"1761452375205\" class=\"icon\" viewBox=\"0 0 1026 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2267\" data-spm-anchor-id=\"a313x.collections_detail.0.i9.6af43a81bnfxmJ\" width=\"20\" height=\"20\"><path d=\"M308.48 373.12a48 48 0 0 0 67.84 0 48 48 0 0 0 0-67.84L308.48 373.12zM163.2 94.08a48 48 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m213.12 211.2l-213.12-211.2-67.84 67.84 213.12 211.2 67.84-67.84zM720 650.88a48 48 0 1 0-67.84 67.84l67.84-67.84z m143.36 279.04a48 48 0 0 0 67.84-67.84l-67.84 67.84z m-211.2-211.2l211.2 211.2 67.84-67.84-211.2-211.2-67.84 67.84zM652.16 305.28a48 48 0 1 0 67.84 67.84l-67.84-67.84z m279.04-143.36a48 48 0 0 0-67.84-67.84l67.84 67.84z m-211.2 211.2l211.2-211.2-67.84-67.84-211.2 211.2 67.84 67.84z\" fill=\"#2c2c2c\" p-id=\"2268\" data-spm-anchor-id=\"a313x.collections_detail.0.i4.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M875.52 387.2a48 48 0 0 0 0-96v96z m-192-48h-48a48.64 48.64 0 0 0 48 48V339.2z m48-192a48 48 0 1 0-96 0z m144 144h-192v96h192v-96z m-144 48v-192h-96v192zM640 874.88a48 48 0 0 0 96 0z m48-192v-48a47.36 47.36 0 0 0-48 48z m192 48a48 48 0 0 0 0-96v96z m-144 144v-192H640v192z m-48-144h192v-96h-192v96zM376.32 718.72a48 48 0 0 0 0-67.84 48 48 0 0 0-67.84 0l67.84 67.84z m-280.96 143.36a48 48 0 0 0 0 67.84 48 48 0 0 0 67.84 0l-67.84-67.84z m213.12-211.2l-213.12 211.2 67.84 67.84 213.12-211.2-67.84-67.84zM150.4 634.88a48 48 0 1 0 0 96v-96z\" fill=\"#2c2c2c\" p-id=\"2269\" data-spm-anchor-id=\"a313x.collections_detail.0.i5.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M342.4 682.88h48a47.36 47.36 0 0 0-48-48v48zM294.4 874.88a48 48 0 0 0 96 0zM150.4 730.88h192v-96h-192v96z\" fill=\"#2c2c2c\" p-id=\"2270\" data-spm-anchor-id=\"a313x.collections_detail.0.i8.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M294.4 682.88v192h96v-192H294.4zM390.4 147.2a48 48 0 0 0-96 0z m-48 192v48a48 48 0 0 0 48-48z m-192-48a48 48 0 0 0 0 96v-96zM294.4 147.2v192h96v-192z m48 144h-192v96h192v-96z\" fill=\"#2c2c2c\" p-id=\"2271\" data-spm-anchor-id=\"a313x.collections_detail.0.i6.6af43a81bnfxmJ\" class=\"selected\"></path></svg>`\r\nexport const contractIcon = `<svg t=\"1761655211386\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1193\" width=\"20\" height=\"20\"><path d=\"M325.504 148.992a32.256 32.256 0 0 0-8.96 22.016 28.8 28.8 0 0 0 8.96 20.992L637.44 512l-312 320a28.8 28.8 0 0 0 0 41.984 28.8 28.8 0 0 0 20.992 8.96 30.592 30.592 0 0 0 20.992-7.936l331.008-340.992a29.952 29.952 0 0 0 8.96-22.016 29.952 29.952 0 0 0-8.96-22.016L367.488 148.992a30.592 30.592 0 0 0-20.992-8 30.592 30.592 0 0 0-20.992 8z\" fill=\"#2c2c2c\" p-id=\"1194\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i5.38213a81adgpe6\" class=\"selected\"></path></svg>`\r\nexport const expandIcon = `<svg t=\"1761655175337\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"972\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i0.38213a81adgpe6\" width=\"20\" height=\"20\"><path d=\"M656.512 148.992L325.504 489.984a29.376 29.376 0 0 0-8.96 21.504c0 8.32 2.944 15.808 8.96 22.464l331.008 341.056a30.592 30.592 0 0 0 20.992 7.936 28.8 28.8 0 0 0 20.992-8.96 28.8 28.8 0 0 0 8.96-20.992 28.8 28.8 0 0 0-8.96-20.992L386.496 512l312-320a28.8 28.8 0 0 0 8.96-20.992 28.8 28.8 0 0 0-8.96-20.992 28.8 28.8 0 0 0-20.992-8.96 30.592 30.592 0 0 0-20.992 7.936z\" fill=\"#2c2c2c\" p-id=\"973\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i1.38213a81adgpe6\" class=\"selected\"></path></svg>`\r\nexport const polyLineIcon = `<svg t=\"1761572159464\" class=\"icon\" viewBox=\"0 0 1536 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8186\" width=\"20\" height=\"20\"><path d=\"M1536 998.4H593.92v-921.6H0v-51.2h645.12v921.6H1536z\" p-id=\"8187\" fill=\"#2c2c2c\" data-spm-anchor-id=\"a313x.search_index.0.i0.2bc03a810V44kl\" class=\"selected\"></path></svg>`\r\nexport const bezierIcon = `<svg t=\"1761570981381\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2048\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.189b3a81Nmah5F\" width=\"20\" height=\"20\"><path d=\"M310.1 863.9c-124 0-218-4.2-219.3-4.3-12.7-0.6-22.5-11.3-21.9-24 0.6-12.7 11.5-22.6 24-21.9 193.3 8.8 714.8 12.7 805.6-74.1 8.5-8.1 9.5-14.1 9.5-18 0-15-16.7-48.1-128.7-101.8C696.2 580.2 586.1 541 479.6 503 241.6 418 107 366.7 107 300.4c0-43.3 43.6-96.5 383.5-123.4 180-14.3 362.3-14.4 364.1-14.4 12.7 0 22.9 10.3 22.9 22.9s-10.3 22.9-22.9 22.9c-1.8 0-182.5 0.2-360.7 14.3-337.1 26.8-341 77.2-341 77.7 0 0.9 1.1 21.4 96 64.9 65.3 29.9 153.2 61.3 246.2 94.5 277.1 98.9 458.8 170.6 458.8 262.1 0 18.9-8 36.1-23.7 51.1-53.8 51.4-207.7 80.4-470.5 88.7-52 1.6-102.9 2.2-149.6 2.2z\" fill=\"#2c2c2c\" p-id=\"2049\" data-spm-anchor-id=\"a313x.collections_detail.0.i1.189b3a81Nmah5F\" class=\"selected\"></path></svg>`\r\nexport const lineIcon = `<svg t=\"1761571015001\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2261\" width=\"20\" height=\"20\"><path d=\"M89.4 959c-5.9 0-11.8-2.3-16.3-6.8-9-9-9-23.7 0-32.7L918.3 74.2c9-9 23.7-9 32.7 0 9 9 9 23.7 0 32.7L105.7 952.2c-4.5 4.5-10.4 6.8-16.3 6.8z\" fill=\"#2c2c2c\" p-id=\"2262\" data-spm-anchor-id=\"a313x.collections_detail.0.i6.189b3a81Nmah5F\" class=\"selected\"></path></svg>`\r\n"],"names":[],"mappings":"AAAO,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AACzB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,WAAW;"}
|
|
1
|
+
{"version":3,"file":"icons.es.js","sources":["../../../../src/modules/flow-chart/icons.ts"],"sourcesContent":["export const backIcon = `<svg t=\"1761403103969\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4781\" width=\"20\" height=\"20\"><path d=\"M995.648 459.296C684.448 281.568 406.08 318.656 171.232 567.904L32 416v384h352l-160.736-175.328c211.168-227.072 452.192-259.776 734.304-98.688a38.4 38.4 0 0 0 38.08-66.688z\" p-id=\"4782\" fill=\"#2c2c2c\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.26dd3a81klL5t6\" class=\"selected\"></path></svg>`\nexport const forwardIcon = `<svg t=\"1761403135994\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5138\" width=\"20\" height=\"20\"><path d=\"M860.992 558.912C627.904 317.536 352.384 283.648 44.8 459.296a38.4 38.4 0 1 0 38.08 66.688c278.432-159.008 516.896-129.408 726.08 89.696L640 800h352V416l-131.008 142.912z\" p-id=\"5139\"></path></svg>`\nexport const zoomOutIcon = `<svg t=\"1761403245796\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8340\" width=\"20\" height=\"20\"><path d=\"M170.666667 469.333333h682.666666v85.333334H170.666667z\" fill=\"#2c2c2c\" p-id=\"8341\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.466d3a81c91yTh\" class=\"selected\"></path></svg>`\nexport const zoomInIcon = `<svg t=\"1761403317929\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8601\" width=\"20\" height=\"20\"><path d=\"M469.333333 469.333333V170.666667h85.333334v298.666666h298.666666v85.333334h-298.666666v298.666666h-85.333334v-298.666666H170.666667v-85.333334h298.666666z\" fill=\"#2c2c2c\" p-id=\"8602\" data-spm-anchor-id=\"a313x.collections_detail.0.i3.466d3a81c91yTh\" class=\"selected\"></path></svg>`\nexport const fitIcon = `<svg t=\"1761403396579\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5306\" width=\"20\" height=\"20\"><path d=\"M921.6 64c20.48 0 38.4 17.92 38.4 38.4v819.2c0 20.48-17.92 38.4-38.4 38.4H102.4c-20.48 0-38.4-17.92-38.4-38.4V102.4c0-20.48 17.92-38.4 38.4-38.4h819.2z m-38.4 76.8H140.8v742.4h742.4V140.8z m-640 478.72c17.92 0 33.28 15.36 33.28 33.28v94.72H371.2c17.92 0 33.28 15.36 33.28 33.28s-15.36 33.28-33.28 33.28h-128a33.92 33.92 0 0 1-33.28-33.28v-128c0-17.92 15.36-33.28 33.28-33.28z m537.6 0c17.92 0 33.28 15.36 33.28 33.28v128c0 17.92-15.36 33.28-33.28 33.28h-128a33.92 33.92 0 0 1-33.28-33.28c0-17.92 15.36-33.28 33.28-33.28h94.72V652.8c0-17.92 15.36-33.28 33.28-33.28z m0-409.6c17.92 0 33.28 15.36 33.28 33.28v128c0 17.92-15.36 33.28-33.28 33.28a33.92 33.92 0 0 1-33.28-33.28V276.48H652.8a33.92 33.92 0 0 1-33.28-33.28c0-17.92 15.36-33.28 33.28-33.28h128z m-409.6 0c17.92 0 33.28 15.36 33.28 33.28s-15.36 33.28-33.28 33.28H276.48V371.2c0 17.92-15.36 33.28-33.28 33.28a33.92 33.92 0 0 1-33.28-33.28v-128c0-17.92 15.36-33.28 33.28-33.28h128z\" fill=\"#2c2c2c\" p-id=\"5307\" data-spm-anchor-id=\"a313x.search_index.0.i0.4ac53a81alttUW\" class=\"selected\"></path></svg>`\nexport const screenTypeIcon = `<svg t=\"1761452295156\" class=\"icon\" viewBox=\"0 0 1026 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1999\" width=\"20\" height=\"20\"><path d=\"M163.2 94.08a48 48 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m145.28 279.04a48 48 0 0 0 67.84 0 48 48 0 0 0 0-67.84L308.48 373.12z m-213.12-211.2l213.12 211.2 67.84-67.84-213.12-211.2-67.84 67.84zM95.36 859.52a48 48 0 0 0 67.84 68.48l-67.84-68.48z m280.96-142.72a48 48 0 0 0-67.84-68.48l67.84 68.48z m-213.12 211.2l213.12-211.2-67.84-68.48-213.12 211.2 67.84 68.48zM863.36 928a48 48 0 0 0 67.84-67.84l-67.84 67.84z m-143.36-279.04a47.36 47.36 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m211.2 211.2l-211.2-211.2-67.84 67.84 211.2 211.2 67.84-67.84zM929.28 161.92a48 48 0 0 0 0-67.84 49.28 49.28 0 0 0-68.48 0l68.48 67.84z m-279.68 143.36a48 48 0 0 0 0 67.84 49.28 49.28 0 0 0 68.48 0l-68.48-67.84z m211.2-211.2l-211.2 211.2 68.48 67.84 211.2-211.2-68.48-67.84z\" fill=\"#2c2c2c\" p-id=\"2000\" data-spm-anchor-id=\"a313x.collections_detail.0.i1.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M704 80a48 48 0 0 0 0 96v-96zM896 128h48a48.64 48.64 0 0 0-48-48V128z m-48 192a48 48 0 0 0 96 0zM704 176h192v-96h-192v96zM849.28 128v192h96V128zM945.28 704a48 48 0 0 0-96 0zM896 896v48a48.64 48.64 0 0 0 48-48z m-192-48a48 48 0 0 0 0 96v-96zM849.28 704v192h96v-192z m46.72 144h-192v96h192v-96zM320 944a48 48 0 0 0 0-96v96zM128 896h-46.72a48 48 0 0 0 48 48V896z m48-192a48 48 0 0 0-96 0zM320 848H128v96h192v-96zM177.28 896v-192h-96v192zM81.28 320a48 48 0 0 0 96 0zM128 128v-48a48 48 0 0 0-46.72 48z m192 48a48 48 0 0 0 0-96v96zM177.28 320V128h-96v192zM128 176h192v-96H128v96z\" fill=\"#2c2c2c\" p-id=\"2001\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.6af43a81bnfxmJ\" class=\"selected\"></path></svg>`\nexport const screenReduceIcon = `<svg t=\"1761452375205\" class=\"icon\" viewBox=\"0 0 1026 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2267\" data-spm-anchor-id=\"a313x.collections_detail.0.i9.6af43a81bnfxmJ\" width=\"20\" height=\"20\"><path d=\"M308.48 373.12a48 48 0 0 0 67.84 0 48 48 0 0 0 0-67.84L308.48 373.12zM163.2 94.08a48 48 0 0 0-67.84 0 48 48 0 0 0 0 67.84l67.84-67.84z m213.12 211.2l-213.12-211.2-67.84 67.84 213.12 211.2 67.84-67.84zM720 650.88a48 48 0 1 0-67.84 67.84l67.84-67.84z m143.36 279.04a48 48 0 0 0 67.84-67.84l-67.84 67.84z m-211.2-211.2l211.2 211.2 67.84-67.84-211.2-211.2-67.84 67.84zM652.16 305.28a48 48 0 1 0 67.84 67.84l-67.84-67.84z m279.04-143.36a48 48 0 0 0-67.84-67.84l67.84 67.84z m-211.2 211.2l211.2-211.2-67.84-67.84-211.2 211.2 67.84 67.84z\" fill=\"#2c2c2c\" p-id=\"2268\" data-spm-anchor-id=\"a313x.collections_detail.0.i4.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M875.52 387.2a48 48 0 0 0 0-96v96z m-192-48h-48a48.64 48.64 0 0 0 48 48V339.2z m48-192a48 48 0 1 0-96 0z m144 144h-192v96h192v-96z m-144 48v-192h-96v192zM640 874.88a48 48 0 0 0 96 0z m48-192v-48a47.36 47.36 0 0 0-48 48z m192 48a48 48 0 0 0 0-96v96z m-144 144v-192H640v192z m-48-144h192v-96h-192v96zM376.32 718.72a48 48 0 0 0 0-67.84 48 48 0 0 0-67.84 0l67.84 67.84z m-280.96 143.36a48 48 0 0 0 0 67.84 48 48 0 0 0 67.84 0l-67.84-67.84z m213.12-211.2l-213.12 211.2 67.84 67.84 213.12-211.2-67.84-67.84zM150.4 634.88a48 48 0 1 0 0 96v-96z\" fill=\"#2c2c2c\" p-id=\"2269\" data-spm-anchor-id=\"a313x.collections_detail.0.i5.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M342.4 682.88h48a47.36 47.36 0 0 0-48-48v48zM294.4 874.88a48 48 0 0 0 96 0zM150.4 730.88h192v-96h-192v96z\" fill=\"#2c2c2c\" p-id=\"2270\" data-spm-anchor-id=\"a313x.collections_detail.0.i8.6af43a81bnfxmJ\" class=\"selected\"></path><path d=\"M294.4 682.88v192h96v-192H294.4zM390.4 147.2a48 48 0 0 0-96 0z m-48 192v48a48 48 0 0 0 48-48z m-192-48a48 48 0 0 0 0 96v-96zM294.4 147.2v192h96v-192z m48 144h-192v96h192v-96z\" fill=\"#2c2c2c\" p-id=\"2271\" data-spm-anchor-id=\"a313x.collections_detail.0.i6.6af43a81bnfxmJ\" class=\"selected\"></path></svg>`\nexport const contractIcon = `<svg t=\"1761655211386\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"1193\" width=\"20\" height=\"20\"><path d=\"M325.504 148.992a32.256 32.256 0 0 0-8.96 22.016 28.8 28.8 0 0 0 8.96 20.992L637.44 512l-312 320a28.8 28.8 0 0 0 0 41.984 28.8 28.8 0 0 0 20.992 8.96 30.592 30.592 0 0 0 20.992-7.936l331.008-340.992a29.952 29.952 0 0 0 8.96-22.016 29.952 29.952 0 0 0-8.96-22.016L367.488 148.992a30.592 30.592 0 0 0-20.992-8 30.592 30.592 0 0 0-20.992 8z\" fill=\"#2c2c2c\" p-id=\"1194\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i5.38213a81adgpe6\" class=\"selected\"></path></svg>`\nexport const expandIcon = `<svg t=\"1761655175337\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"972\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i0.38213a81adgpe6\" width=\"20\" height=\"20\"><path d=\"M656.512 148.992L325.504 489.984a29.376 29.376 0 0 0-8.96 21.504c0 8.32 2.944 15.808 8.96 22.464l331.008 341.056a30.592 30.592 0 0 0 20.992 7.936 28.8 28.8 0 0 0 20.992-8.96 28.8 28.8 0 0 0 8.96-20.992 28.8 28.8 0 0 0-8.96-20.992L386.496 512l312-320a28.8 28.8 0 0 0 8.96-20.992 28.8 28.8 0 0 0-8.96-20.992 28.8 28.8 0 0 0-20.992-8.96 30.592 30.592 0 0 0-20.992 7.936z\" fill=\"#2c2c2c\" p-id=\"973\" data-spm-anchor-id=\"a313x.manage_type_mylikes.0.i1.38213a81adgpe6\" class=\"selected\"></path></svg>`\nexport const polyLineIcon = `<svg t=\"1761572159464\" class=\"icon\" viewBox=\"0 0 1536 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8186\" width=\"20\" height=\"20\"><path d=\"M1536 998.4H593.92v-921.6H0v-51.2h645.12v921.6H1536z\" p-id=\"8187\" fill=\"#2c2c2c\" data-spm-anchor-id=\"a313x.search_index.0.i0.2bc03a810V44kl\" class=\"selected\"></path></svg>`\nexport const bezierIcon = `<svg t=\"1761570981381\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2048\" data-spm-anchor-id=\"a313x.collections_detail.0.i0.189b3a81Nmah5F\" width=\"20\" height=\"20\"><path d=\"M310.1 863.9c-124 0-218-4.2-219.3-4.3-12.7-0.6-22.5-11.3-21.9-24 0.6-12.7 11.5-22.6 24-21.9 193.3 8.8 714.8 12.7 805.6-74.1 8.5-8.1 9.5-14.1 9.5-18 0-15-16.7-48.1-128.7-101.8C696.2 580.2 586.1 541 479.6 503 241.6 418 107 366.7 107 300.4c0-43.3 43.6-96.5 383.5-123.4 180-14.3 362.3-14.4 364.1-14.4 12.7 0 22.9 10.3 22.9 22.9s-10.3 22.9-22.9 22.9c-1.8 0-182.5 0.2-360.7 14.3-337.1 26.8-341 77.2-341 77.7 0 0.9 1.1 21.4 96 64.9 65.3 29.9 153.2 61.3 246.2 94.5 277.1 98.9 458.8 170.6 458.8 262.1 0 18.9-8 36.1-23.7 51.1-53.8 51.4-207.7 80.4-470.5 88.7-52 1.6-102.9 2.2-149.6 2.2z\" fill=\"#2c2c2c\" p-id=\"2049\" data-spm-anchor-id=\"a313x.collections_detail.0.i1.189b3a81Nmah5F\" class=\"selected\"></path></svg>`\nexport const lineIcon = `<svg t=\"1761571015001\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"2261\" width=\"20\" height=\"20\"><path d=\"M89.4 959c-5.9 0-11.8-2.3-16.3-6.8-9-9-9-23.7 0-32.7L918.3 74.2c9-9 23.7-9 32.7 0 9 9 9 23.7 0 32.7L105.7 952.2c-4.5 4.5-10.4 6.8-16.3 6.8z\" fill=\"#2c2c2c\" p-id=\"2262\" data-spm-anchor-id=\"a313x.collections_detail.0.i6.189b3a81Nmah5F\" class=\"selected\"></path></svg>`\n"],"names":[],"mappings":"AAAO,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AACzB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,WAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../../src/modules/flow-chart/index.ts"],"sourcesContent":["import type Quill from 'quill'\
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../src/modules/flow-chart/index.ts"],"sourcesContent":["import type Quill from 'quill'\nimport type { FlowChartOptions } from './options'\nimport Quills from 'quill'\nimport FlowChartPlaceholderBlot from './formats/flow-chart-blot'\n\nexport class FlowChartModule {\n quill: Quill\n toolbar: any\n options: FlowChartOptions\n\n static register() {\n Quills.register('formats/flow-chart', FlowChartPlaceholderBlot, true)\n }\n\n constructor(quill: Quill, options: any) {\n (quill.container as any).__quillInstance = quill\n this.quill = quill\n this.options = options\n this.toolbar = quill.getModule('toolbar')\n if (this.toolbar) {\n this.toolbar.addHandler('flow-chart', () => {\n this.insertFlowChartEditor()\n })\n }\n }\n\n public insertFlowChartEditor(): void {\n const range = this.quill.getSelection()\n if (range) {\n const defaultData = {\n nodes: [\n { id: 'node1', type: 'rect', x: 100, y: 150, text: '开始' },\n { id: 'node2', type: 'rect', x: 300, y: 150, text: '结束' },\n ],\n edges: [\n { id: 'edge1', sourceNodeId: 'node1', targetNodeId: 'node2', type: 'polyline' },\n ],\n }\n this.quill.insertText(range.index, '\\n', 'user')\n this.quill.insertEmbed(range.index + 1, 'flow-chart', defaultData, 'user')\n this.quill.insertText(range.index + 2, '\\n', 'user')\n }\n }\n}\n"],"names":["Quills"],"mappings":";;;;;AAKO,MAAM,gBAAgB;AAAA,EAS3B,YAAY,OAAc,SAAc;AARxC;AACA;AACA;AAOG,UAAM,UAAkB,kBAAkB;AAC3C,SAAK,QAAQ;AACb,SAAK,UAAU;AACf,SAAK,UAAU,MAAM,UAAU,SAAS;AACxC,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,WAAW,cAAc,MAAM;AAC1C,aAAK,sBAAA;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAdA,OAAO,WAAW;AAChBA,UAAO,SAAS,sBAAsB,0BAA0B,IAAI;AAAA,EACtE;AAAA,EAcO,wBAA8B;AACnC,UAAM,QAAQ,KAAK,MAAM,aAAA;AACzB,QAAI,OAAO;AACT,YAAM,cAAc;AAAA,QAClB,OAAO;AAAA,UACL,EAAE,IAAI,SAAS,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,MAAM,KAAA;AAAA,UACnD,EAAE,IAAI,SAAS,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,MAAM,KAAA;AAAA,QAAK;AAAA,QAE1D,OAAO;AAAA,UACL,EAAE,IAAI,SAAS,cAAc,SAAS,cAAc,SAAS,MAAM,WAAA;AAAA,QAAW;AAAA,MAChF;AAEF,WAAK,MAAM,WAAW,MAAM,OAAO,MAAM,MAAM;AAC/C,WAAK,MAAM,YAAY,MAAM,QAAQ,GAAG,cAAc,aAAa,MAAM;AACzE,WAAK,MAAM,WAAW,MAAM,QAAQ,GAAG,MAAM,MAAM;AAAA,IACrD;AAAA,EACF;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.es.js","sources":["../../../../../src/modules/flow-chart/modules/context-menu.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\r\nimport type FlowChartPlaceholderBlot from '../formats/flow-chart-blot'\r\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\r\nimport { I18N } from '../../../modules/i18n'\r\nimport { registerFlowChartI18N } from '../i18n/index'\r\n\r\nclass FlowChartContextMenuHandler {\r\n private texts: Record<string, string>\r\n private lang: string\r\n getText(key: keyof Record<string, string>): string {\r\n return this.texts[key]\r\n }\r\n\r\n constructor(private quill: FluentEditor, private blot: FlowChartPlaceholderBlot) {\r\n const i18nModule = this.quill.getModule('i18n') as I18N\r\n registerFlowChartI18N(I18N)\r\n this.lang = i18nModule.options.lang\r\n this.texts = this.resolveTexts()\r\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, (lang: string) => {\r\n this.lang = lang\r\n this.texts = this.resolveTexts()\r\n this.updateContextMenuItems()\r\n })\r\n }\r\n\r\n resolveTexts() {\r\n return {\r\n copy: I18N.parserText('flowChart.contextMenu.copy', this.lang),\r\n cut: I18N.parserText('flowChart.contextMenu.cut', this.lang),\r\n paste: I18N.parserText('flowChart.contextMenu.paste', this.lang),\r\n deleteContent: I18N.parserText('flowChart.contextMenu.deleteContent', this.lang),\r\n deleteNode: I18N.parserText('flowChart.contextMenu.deleteNode', this.lang),\r\n deleteEdge: I18N.parserText('flowChart.contextMenu.deleteEdge', this.lang),\r\n }\r\n }\r\n\r\n updateContextMenuItems() {\r\n if (!this.blot.contextMenu) return\r\n\r\n const menuItems = this.blot.contextMenu.querySelectorAll('.ql-flow-chart-context-menu-item')\r\n if (menuItems.length > 0) {\r\n Array.from(menuItems).forEach((item) => {\r\n const text = item.getAttribute('data-text-key')\r\n if (text && this.texts[text as keyof Record<string, string>]) {\r\n item.textContent = this.texts[text as keyof Record<string, string>]\r\n }\r\n })\r\n }\r\n }\r\n}\r\n\r\nconst contextMenuHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartContextMenuHandler>()\r\n\r\nexport function initContextMenu(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\r\n blot.contextMenu = document.createElement('div')\r\n blot.contextMenu.className = 'ql-flow-chart-context-menu'\r\n blot.contextMenu.style.position = 'fixed'\r\n blot.contextMenu.style.background = 'white'\r\n blot.contextMenu.style.borderRadius = '4px'\r\n blot.contextMenu.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'\r\n blot.contextMenu.style.padding = '5px 0'\r\n blot.contextMenu.style.zIndex = '1000'\r\n blot.contextMenu.style.display = 'block'\r\n blot.contextMenu.style.visibility = 'visible'\r\n blot.contextMenu.style.opacity = '1'\r\n blot.contextMenu.style.width = '120px'\r\n blot.contextMenu.style.height = 'auto'\r\n blot.domNode.appendChild(blot.contextMenu)\r\n\r\n const handler = new FlowChartContextMenuHandler(quill, blot)\r\n contextMenuHandlers.set(blot, handler)\r\n\r\n if (blot.flowChart) {\r\n blot.flowChart.on('node:contextmenu', (event: any) => {\r\n const { data, e } = event\r\n e.preventDefault()\r\n e.stopPropagation()\r\n blot.currentElement = { type: 'node', data }\r\n showNodeContextMenu(blot, handler, e.clientX, e.clientY)\r\n })\r\n\r\n blot.flowChart.on('edge:contextmenu', (event: any) => {\r\n const { data, e } = event\r\n e.preventDefault()\r\n e.stopPropagation()\r\n blot.currentElement = { type: 'edge', data }\r\n showEdgeContextMenu(blot, handler, e.clientX, e.clientY)\r\n })\r\n }\r\n\r\n const hideMenu = () => {\r\n if (blot.contextMenu) {\r\n blot.contextMenu.style.display = 'none'\r\n blot.currentElement = null\r\n }\r\n }\r\n\r\n blot.flowChart.on('blank:click', hideMenu)\r\n document.addEventListener('click', (e) => {\r\n if (blot.contextMenu && !blot.contextMenu.contains(e.target as Node)) {\r\n hideMenu()\r\n }\r\n })\r\n}\r\n\r\nfunction showNodeContextMenu(blot: FlowChartPlaceholderBlot, handler: FlowChartContextMenuHandler, x: number, y: number): void {\r\n clearContextMenu(blot)\r\n\r\n addContextMenuItem(blot, handler.getText('copy'), 'copy', () => handleCopy(blot))\r\n addContextMenuItem(blot, handler.getText('deleteContent'), 'deleteContent', () => handleDeleteContent(blot))\r\n addContextMenuItem(blot, handler.getText('deleteNode'), 'deleteNode', () => handleDeleteNode(blot))\r\n\r\n showContextMenu(blot, x, y)\r\n}\r\n\r\nfunction showEdgeContextMenu(blot: FlowChartPlaceholderBlot, handler: FlowChartContextMenuHandler, x: number, y: number): void {\r\n clearContextMenu(blot)\r\n\r\n addContextMenuItem(blot, handler.getText('deleteContent'), 'deleteContent', () => handleDeleteContent(blot))\r\n addContextMenuItem(blot, handler.getText('deleteEdge'), 'deleteEdge', () => handleDeleteEdge(blot))\r\n\r\n showContextMenu(blot, x, y)\r\n}\r\n\r\nfunction clearContextMenu(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.contextMenu) {\r\n blot.contextMenu.innerHTML = ''\r\n }\r\n}\r\n\r\nfunction showContextMenu(blot: FlowChartPlaceholderBlot, x: number, y: number): void {\r\n if (blot.contextMenu) {\r\n blot.contextMenu.style.display = 'block'\r\n blot.contextMenu.style.left = `${x}px`\r\n blot.contextMenu.style.top = `${y}px`\r\n }\r\n}\r\n\r\nfunction addContextMenuItem(blot: FlowChartPlaceholderBlot, text: string, textKey: string, onClick: () => void): void {\r\n const item = document.createElement('div')\r\n item.className = 'ql-flow-chart-context-menu-item'\r\n item.textContent = text\r\n item.setAttribute('data-text-key', textKey)\r\n item.style.padding = '5px 15px'\r\n item.style.cursor = 'pointer'\r\n item.style.whiteSpace = 'nowrap'\r\n item.addEventListener('click', onClick)\r\n item.addEventListener('mouseenter', () => {\r\n item.style.background = '#f5f5f5'\r\n })\r\n item.addEventListener('mouseleave', () => {\r\n item.style.background = 'white'\r\n })\r\n blot.contextMenu!.appendChild(item)\r\n}\r\n\r\nfunction handleCopy(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.currentElement && blot.currentElement.type === 'node') {\r\n const nodeId = blot.currentElement.data.id\r\n blot.flowChart.cloneNode(nodeId)\r\n }\r\n hideContextMenu(blot)\r\n}\r\n\r\nfunction handleDeleteContent(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.currentElement) {\r\n if (blot.currentElement.type === 'node') {\r\n const node = blot.currentElement.data\r\n blot.flowChart.updateText(node.id, '')\r\n }\r\n else if (blot.currentElement.type === 'edge') {\r\n const edge = blot.currentElement.data\r\n blot.flowChart.updateText(edge.id, '')\r\n }\r\n blot.data = blot.flowChart.getGraphData()\r\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\r\n }\r\n hideContextMenu(blot)\r\n}\r\n\r\nfunction handleDeleteNode(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.currentElement && blot.currentElement.type === 'node') {\r\n blot.flowChart.deleteNode(blot.currentElement.data.id)\r\n blot.data = blot.flowChart.getGraphData()\r\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\r\n }\r\n hideContextMenu(blot)\r\n}\r\n\r\nfunction handleDeleteEdge(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.currentElement && blot.currentElement.type === 'edge') {\r\n blot.flowChart.deleteEdge(blot.currentElement.data.id)\r\n blot.data = blot.flowChart.getGraphData()\r\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\r\n }\r\n hideContextMenu(blot)\r\n}\r\n\r\nfunction hideContextMenu(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.contextMenu) {\r\n blot.contextMenu.style.display = 'none'\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,4BAA4B;AAAA,EAOhC,YAAoB,OAA6B,MAAgC;AANzE;AACA;AAKY,SAAA,QAAA;AAA6B,SAAA,OAAA;AAC/C,UAAM,aAAa,KAAK,MAAM,UAAU,MAAM;AAC9C,0BAAsB,IAAI;AAC1B,SAAK,OAAO,WAAW,QAAQ;AAC/B,SAAK,QAAQ,KAAK,aAAA;AAClB,SAAK,MAAM,QAAQ,GAAG,uBAAuB,CAAC,SAAiB;AAC7D,WAAK,OAAO;AACZ,WAAK,QAAQ,KAAK,aAAA;AAClB,WAAK,uBAAA;AAAA,IACP,CAAC;AAAA,EACH;AAAA,EAdA,QAAQ,KAA2C;AACjD,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB;AAAA,EAcA,eAAe;AACb,WAAO;AAAA,MACL,MAAM,KAAK,WAAW,8BAA8B,KAAK,IAAI;AAAA,MAC7D,KAAK,KAAK,WAAW,6BAA6B,KAAK,IAAI;AAAA,MAC3D,OAAO,KAAK,WAAW,+BAA+B,KAAK,IAAI;AAAA,MAC/D,eAAe,KAAK,WAAW,uCAAuC,KAAK,IAAI;AAAA,MAC/E,YAAY,KAAK,WAAW,oCAAoC,KAAK,IAAI;AAAA,MACzE,YAAY,KAAK,WAAW,oCAAoC,KAAK,IAAI;AAAA,IAAA;AAAA,EAE7E;AAAA,EAEA,yBAAyB;AACvB,QAAI,CAAC,KAAK,KAAK,YAAa;AAE5B,UAAM,YAAY,KAAK,KAAK,YAAY,iBAAiB,kCAAkC;AAC3F,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,KAAK,SAAS,EAAE,QAAQ,CAAC,SAAS;AACtC,cAAM,OAAO,KAAK,aAAa,eAAe;AAC9C,YAAI,QAAQ,KAAK,MAAM,IAAoC,GAAG;AAC5D,eAAK,cAAc,KAAK,MAAM,IAAoC;AAAA,QACpE;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,MAAM,0CAA0B,QAAA;AAEzB,SAAS,gBAAgB,MAAgC,OAA2B;AACzF,OAAK,cAAc,SAAS,cAAc,KAAK;AAC/C,OAAK,YAAY,YAAY;AAC7B,OAAK,YAAY,MAAM,WAAW;AAClC,OAAK,YAAY,MAAM,aAAa;AACpC,OAAK,YAAY,MAAM,eAAe;AACtC,OAAK,YAAY,MAAM,YAAY;AACnC,OAAK,YAAY,MAAM,UAAU;AACjC,OAAK,YAAY,MAAM,SAAS;AAChC,OAAK,YAAY,MAAM,UAAU;AACjC,OAAK,YAAY,MAAM,aAAa;AACpC,OAAK,YAAY,MAAM,UAAU;AACjC,OAAK,YAAY,MAAM,QAAQ;AAC/B,OAAK,YAAY,MAAM,SAAS;AAChC,OAAK,QAAQ,YAAY,KAAK,WAAW;AAEzC,QAAM,UAAU,IAAI,4BAA4B,OAAO,IAAI;AAC3D,sBAAoB,IAAI,MAAM,OAAO;AAErC,MAAI,KAAK,WAAW;AAClB,SAAK,UAAU,GAAG,oBAAoB,CAAC,UAAe;AACpD,YAAM,EAAE,MAAM,EAAA,IAAM;AACpB,QAAE,eAAA;AACF,QAAE,gBAAA;AACF,WAAK,iBAAiB,EAAE,MAAM,QAAQ,KAAA;AACtC,0BAAoB,MAAM,SAAS,EAAE,SAAS,EAAE,OAAO;AAAA,IACzD,CAAC;AAED,SAAK,UAAU,GAAG,oBAAoB,CAAC,UAAe;AACpD,YAAM,EAAE,MAAM,EAAA,IAAM;AACpB,QAAE,eAAA;AACF,QAAE,gBAAA;AACF,WAAK,iBAAiB,EAAE,MAAM,QAAQ,KAAA;AACtC,0BAAoB,MAAM,SAAS,EAAE,SAAS,EAAE,OAAO;AAAA,IACzD,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,MAAM;AACrB,QAAI,KAAK,aAAa;AACpB,WAAK,YAAY,MAAM,UAAU;AACjC,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAEA,OAAK,UAAU,GAAG,eAAe,QAAQ;AACzC,WAAS,iBAAiB,SAAS,CAAC,MAAM;AACxC,QAAI,KAAK,eAAe,CAAC,KAAK,YAAY,SAAS,EAAE,MAAc,GAAG;AACpE,eAAA;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,oBAAoB,MAAgC,SAAsC,GAAW,GAAiB;AAC7H,mBAAiB,IAAI;AAErB,qBAAmB,MAAM,QAAQ,QAAQ,MAAM,GAAG,QAAQ,MAAM,WAAW,IAAI,CAAC;AAChF,qBAAmB,MAAM,QAAQ,QAAQ,eAAe,GAAG,iBAAiB,MAAM,oBAAoB,IAAI,CAAC;AAC3G,qBAAmB,MAAM,QAAQ,QAAQ,YAAY,GAAG,cAAc,MAAM,iBAAiB,IAAI,CAAC;AAElG,kBAAgB,MAAM,GAAG,CAAC;AAC5B;AAEA,SAAS,oBAAoB,MAAgC,SAAsC,GAAW,GAAiB;AAC7H,mBAAiB,IAAI;AAErB,qBAAmB,MAAM,QAAQ,QAAQ,eAAe,GAAG,iBAAiB,MAAM,oBAAoB,IAAI,CAAC;AAC3G,qBAAmB,MAAM,QAAQ,QAAQ,YAAY,GAAG,cAAc,MAAM,iBAAiB,IAAI,CAAC;AAElG,kBAAgB,MAAM,GAAG,CAAC;AAC5B;AAEA,SAAS,iBAAiB,MAAsC;AAC9D,MAAI,KAAK,aAAa;AACpB,SAAK,YAAY,YAAY;AAAA,EAC/B;AACF;AAEA,SAAS,gBAAgB,MAAgC,GAAW,GAAiB;AACnF,MAAI,KAAK,aAAa;AACpB,SAAK,YAAY,MAAM,UAAU;AACjC,SAAK,YAAY,MAAM,OAAO,GAAG,CAAC;AAClC,SAAK,YAAY,MAAM,MAAM,GAAG,CAAC;AAAA,EACnC;AACF;AAEA,SAAS,mBAAmB,MAAgC,MAAc,SAAiB,SAA2B;AACpH,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,OAAK,YAAY;AACjB,OAAK,cAAc;AACnB,OAAK,aAAa,iBAAiB,OAAO;AAC1C,OAAK,MAAM,UAAU;AACrB,OAAK,MAAM,SAAS;AACpB,OAAK,MAAM,aAAa;AACxB,OAAK,iBAAiB,SAAS,OAAO;AACtC,OAAK,iBAAiB,cAAc,MAAM;AACxC,SAAK,MAAM,aAAa;AAAA,EAC1B,CAAC;AACD,OAAK,iBAAiB,cAAc,MAAM;AACxC,SAAK,MAAM,aAAa;AAAA,EAC1B,CAAC;AACD,OAAK,YAAa,YAAY,IAAI;AACpC;AAEA,SAAS,WAAW,MAAsC;AACxD,MAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS,QAAQ;AAC9D,UAAM,SAAS,KAAK,eAAe,KAAK;AACxC,SAAK,UAAU,UAAU,MAAM;AAAA,EACjC;AACA,kBAAgB,IAAI;AACtB;AAEA,SAAS,oBAAoB,MAAsC;AACjE,MAAI,KAAK,gBAAgB;AACvB,QAAI,KAAK,eAAe,SAAS,QAAQ;AACvC,YAAM,OAAO,KAAK,eAAe;AACjC,WAAK,UAAU,WAAW,KAAK,IAAI,EAAE;AAAA,IACvC,WACS,KAAK,eAAe,SAAS,QAAQ;AAC5C,YAAM,OAAO,KAAK,eAAe;AACjC,WAAK,UAAU,WAAW,KAAK,IAAI,EAAE;AAAA,IACvC;AACA,SAAK,OAAO,KAAK,UAAU,aAAA;AAC3B,SAAK,QAAQ,aAAa,mBAAmB,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EACxE;AACA,kBAAgB,IAAI;AACtB;AAEA,SAAS,iBAAiB,MAAsC;AAC9D,MAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS,QAAQ;AAC9D,SAAK,UAAU,WAAW,KAAK,eAAe,KAAK,EAAE;AACrD,SAAK,OAAO,KAAK,UAAU,aAAA;AAC3B,SAAK,QAAQ,aAAa,mBAAmB,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EACxE;AACA,kBAAgB,IAAI;AACtB;AAEA,SAAS,iBAAiB,MAAsC;AAC9D,MAAI,KAAK,kBAAkB,KAAK,eAAe,SAAS,QAAQ;AAC9D,SAAK,UAAU,WAAW,KAAK,eAAe,KAAK,EAAE;AACrD,SAAK,OAAO,KAAK,UAAU,aAAA;AAC3B,SAAK,QAAQ,aAAa,mBAAmB,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,EACxE;AACA,kBAAgB,IAAI;AACtB;AAEA,SAAS,gBAAgB,MAAsC;AAC7D,MAAI,KAAK,aAAa;AACpB,SAAK,YAAY,MAAM,UAAU;AAAA,EACnC;AACF;"}
|
|
1
|
+
{"version":3,"file":"context-menu.es.js","sources":["../../../../../src/modules/flow-chart/modules/context-menu.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/index'\n\nclass FlowChartContextMenuHandler {\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.updateContextMenuItems()\n })\n }\n\n resolveTexts() {\n return {\n copy: I18N.parserText('flowChart.contextMenu.copy', this.lang),\n cut: I18N.parserText('flowChart.contextMenu.cut', this.lang),\n paste: I18N.parserText('flowChart.contextMenu.paste', this.lang),\n deleteContent: I18N.parserText('flowChart.contextMenu.deleteContent', this.lang),\n deleteNode: I18N.parserText('flowChart.contextMenu.deleteNode', this.lang),\n deleteEdge: I18N.parserText('flowChart.contextMenu.deleteEdge', this.lang),\n }\n }\n\n updateContextMenuItems() {\n if (!this.blot.contextMenu) return\n\n const menuItems = this.blot.contextMenu.querySelectorAll('.ql-flow-chart-context-menu-item')\n if (menuItems.length > 0) {\n Array.from(menuItems).forEach((item) => {\n const text = item.getAttribute('data-text-key')\n if (text && this.texts[text as keyof Record<string, string>]) {\n item.textContent = this.texts[text as keyof Record<string, string>]\n }\n })\n }\n }\n}\n\nconst contextMenuHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartContextMenuHandler>()\n\nexport function initContextMenu(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\n blot.contextMenu = document.createElement('div')\n blot.contextMenu.className = 'ql-flow-chart-context-menu'\n blot.contextMenu.style.position = 'fixed'\n blot.contextMenu.style.background = 'white'\n blot.contextMenu.style.borderRadius = '4px'\n blot.contextMenu.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)'\n blot.contextMenu.style.padding = '5px 0'\n blot.contextMenu.style.zIndex = '1000'\n blot.contextMenu.style.display = 'block'\n blot.contextMenu.style.visibility = 'visible'\n blot.contextMenu.style.opacity = '1'\n blot.contextMenu.style.width = '120px'\n blot.contextMenu.style.height = 'auto'\n blot.domNode.appendChild(blot.contextMenu)\n\n const handler = new FlowChartContextMenuHandler(quill, blot)\n contextMenuHandlers.set(blot, handler)\n\n if (blot.flowChart) {\n blot.flowChart.on('node:contextmenu', (event: any) => {\n const { data, e } = event\n e.preventDefault()\n e.stopPropagation()\n blot.currentElement = { type: 'node', data }\n showNodeContextMenu(blot, handler, e.clientX, e.clientY)\n })\n\n blot.flowChart.on('edge:contextmenu', (event: any) => {\n const { data, e } = event\n e.preventDefault()\n e.stopPropagation()\n blot.currentElement = { type: 'edge', data }\n showEdgeContextMenu(blot, handler, e.clientX, e.clientY)\n })\n }\n\n const hideMenu = () => {\n if (blot.contextMenu) {\n blot.contextMenu.style.display = 'none'\n blot.currentElement = null\n }\n }\n\n blot.flowChart.on('blank:click', hideMenu)\n document.addEventListener('click', (e) => {\n if (blot.contextMenu && !blot.contextMenu.contains(e.target as Node)) {\n hideMenu()\n }\n })\n}\n\nfunction showNodeContextMenu(blot: FlowChartPlaceholderBlot, handler: FlowChartContextMenuHandler, x: number, y: number): void {\n clearContextMenu(blot)\n\n addContextMenuItem(blot, handler.getText('copy'), 'copy', () => handleCopy(blot))\n addContextMenuItem(blot, handler.getText('deleteContent'), 'deleteContent', () => handleDeleteContent(blot))\n addContextMenuItem(blot, handler.getText('deleteNode'), 'deleteNode', () => handleDeleteNode(blot))\n\n showContextMenu(blot, x, y)\n}\n\nfunction showEdgeContextMenu(blot: FlowChartPlaceholderBlot, handler: FlowChartContextMenuHandler, x: number, y: number): void {\n clearContextMenu(blot)\n\n addContextMenuItem(blot, handler.getText('deleteContent'), 'deleteContent', () => handleDeleteContent(blot))\n addContextMenuItem(blot, handler.getText('deleteEdge'), 'deleteEdge', () => handleDeleteEdge(blot))\n\n showContextMenu(blot, x, y)\n}\n\nfunction clearContextMenu(blot: FlowChartPlaceholderBlot): void {\n if (blot.contextMenu) {\n blot.contextMenu.innerHTML = ''\n }\n}\n\nfunction showContextMenu(blot: FlowChartPlaceholderBlot, x: number, y: number): void {\n if (blot.contextMenu) {\n blot.contextMenu.style.display = 'block'\n blot.contextMenu.style.left = `${x}px`\n blot.contextMenu.style.top = `${y}px`\n }\n}\n\nfunction addContextMenuItem(blot: FlowChartPlaceholderBlot, text: string, textKey: string, onClick: () => void): void {\n const item = document.createElement('div')\n item.className = 'ql-flow-chart-context-menu-item'\n item.textContent = text\n item.setAttribute('data-text-key', textKey)\n item.style.padding = '5px 15px'\n item.style.cursor = 'pointer'\n item.style.whiteSpace = 'nowrap'\n item.addEventListener('click', onClick)\n item.addEventListener('mouseenter', () => {\n item.style.background = '#f5f5f5'\n })\n item.addEventListener('mouseleave', () => {\n item.style.background = 'white'\n })\n blot.contextMenu!.appendChild(item)\n}\n\nfunction handleCopy(blot: FlowChartPlaceholderBlot): void {\n if (blot.currentElement && blot.currentElement.type === 'node') {\n const nodeId = blot.currentElement.data.id\n blot.flowChart.cloneNode(nodeId)\n }\n hideContextMenu(blot)\n}\n\nfunction handleDeleteContent(blot: FlowChartPlaceholderBlot): void {\n if (blot.currentElement) {\n if (blot.currentElement.type === 'node') {\n const node = blot.currentElement.data\n blot.flowChart.updateText(node.id, '')\n }\n else if (blot.currentElement.type === 'edge') {\n const edge = blot.currentElement.data\n blot.flowChart.updateText(edge.id, '')\n }\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n hideContextMenu(blot)\n}\n\nfunction handleDeleteNode(blot: FlowChartPlaceholderBlot): void {\n if (blot.currentElement && blot.currentElement.type === 'node') {\n blot.flowChart.deleteNode(blot.currentElement.data.id)\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n hideContextMenu(blot)\n}\n\nfunction handleDeleteEdge(blot: FlowChartPlaceholderBlot): void {\n if (blot.currentElement && blot.currentElement.type === 'edge') {\n blot.flowChart.deleteEdge(blot.currentElement.data.id)\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n hideContextMenu(blot)\n}\n\nfunction hideContextMenu(blot: FlowChartPlaceholderBlot): void {\n if (blot.contextMenu) {\n blot.contextMenu.style.display = 'none'\n }\n}\n"],"names":[],"mappings":"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"}
|