@opentiny/fluent-editor 4.0.0-alpha.12 → 4.0.0-alpha.14
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.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.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/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 +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 +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 +2 -2
- 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 +27 -0
- package/es/utils/merge.es.js.map +1 -0
- 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.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.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/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 +2 -2
- package/lib/modules/custom-image/blot-formatter.cjs.js.map +1 -1
- package/lib/modules/custom-image/image.cjs.js.map +1 -1
- package/lib/modules/custom-image/options.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/blot-spec.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/custom-image-spec.cjs.js.map +1 -1
- package/lib/modules/custom-image/specs/image-spec.cjs.js.map +1 -1
- package/lib/modules/divider.cjs.js.map +1 -1
- package/lib/modules/emoji.cjs.js +2 -2
- package/lib/modules/emoji.cjs.js.map +1 -1
- package/lib/modules/file/formats/file.cjs.js.map +1 -1
- package/lib/modules/file/modules/file-bar.cjs.js.map +1 -1
- package/lib/modules/file/modules/file-module.cjs.js.map +1 -1
- package/lib/modules/flow-chart/config-utils.cjs.js.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 +2 -2
- 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 +27 -0
- package/lib/utils/merge.cjs.js.map +1 -0
- package/lib/utils/method.cjs.js.map +1 -1
- package/package.json +13 -3
- package/patches/quill@2.0.3.patch +33 -33
- package/scripts/apply-patches.cjs +248 -248
- 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 +11 -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/additional-toolbar-item.interface.d.ts +8 -0
- package/types/config/types/content-change.interface.d.ts +13 -0
- package/types/config/types/content-save.interface.d.ts +6 -0
- package/types/config/types/counter-option.interface.d.ts +9 -0
- package/types/config/types/editor-config.interface.d.ts +12 -11
- package/types/config/types/editor-modules.interface.d.ts +39 -38
- package/types/config/types/editor-toolbar.interface.d.ts +6 -0
- package/types/config/types/file-operation.interface.d.ts +12 -0
- package/types/config/types/focus-change.interface.d.ts +4 -0
- package/types/config/types/fullscreen-module.interface.d.ts +4 -0
- package/types/config/types/help-panel-item.interface.d.ts +5 -0
- package/types/config/types/help-panel-option.interface.d.ts +7 -0
- package/types/config/types/image-module.interface.d.ts +3 -0
- package/types/config/types/image-upload.interface.d.ts +7 -0
- package/types/config/types/index.d.ts +3 -3
- package/types/config/types/load-on-demand-module.interface.d.ts +5 -0
- package/types/config/types/mention-module.interface.d.ts +8 -0
- package/types/config/types/paste-change.interface.d.ts +6 -0
- package/types/config/types/quick-menu-module.interface.d.ts +3 -0
- package/types/config/types/range.interface.d.ts +4 -0
- package/types/config/types/registry-options.interface.d.ts +5 -0
- package/types/config/types/selection-change.interface.d.ts +8 -0
- package/types/config/types/toolbar-item.interface.d.ts +13 -0
- package/types/config/types/type.d.ts +2 -2
- package/types/config/types/validate-error.interface.d.ts +13 -0
- package/types/core/fluent-editor.d.ts +11 -10
- package/types/fluent-editor.d.ts +2 -1
- package/types/formats/emoji.d.ts +8 -7
- package/types/formats/index.d.ts +4 -4
- package/types/formats/soft-break.d.ts +12 -11
- package/types/formats/strike.d.ts +8 -7
- package/types/formats/video.d.ts +13 -12
- package/types/index.d.ts +8 -7
- 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 +94 -93
- package/types/modules/ai/types.d.ts +16 -16
- package/types/modules/collaborative-editing/awareness/awareness.d.ts +26 -25
- package/types/modules/collaborative-editing/awareness/index.d.ts +2 -2
- package/types/modules/collaborative-editing/awareness/y-indexeddb.d.ts +3 -2
- package/types/modules/collaborative-editing/collaborative-editing.d.ts +21 -20
- package/types/modules/collaborative-editing/index.d.ts +2 -2
- package/types/modules/collaborative-editing/module.d.ts +11 -10
- package/types/modules/collaborative-editing/provider/index.d.ts +3 -3
- package/types/modules/collaborative-editing/provider/providerRegistry.d.ts +25 -24
- package/types/modules/collaborative-editing/provider/webrtc.d.ts +34 -33
- package/types/modules/collaborative-editing/provider/websocket.d.ts +38 -37
- package/types/modules/collaborative-editing/types.d.ts +46 -45
- package/types/modules/counter.d.ts +22 -21
- package/types/modules/custom-clipboard.d.ts +24 -23
- package/types/modules/custom-image/BlotFormatter.d.ts +29 -0
- package/types/modules/custom-image/{options.d.ts → Options.d.ts} +46 -45
- package/types/modules/custom-image/actions/{action.d.ts → Action.d.ts} +8 -7
- package/types/modules/custom-image/actions/CustomResizeAction.d.ts +24 -0
- package/types/modules/custom-image/actions/DeleteAction.d.ts +7 -0
- package/types/modules/custom-image/actions/custom-resize-action.d.ts +23 -22
- package/types/modules/custom-image/actions/delete-action.d.ts +6 -5
- package/types/modules/custom-image/actions/image-toolbar-buttons.d.ts +16 -15
- package/types/modules/custom-image/actions/index.d.ts +6 -6
- package/types/modules/custom-image/actions/toolbar-action.d.ts +8 -7
- package/types/modules/custom-image/actions/toolbar.d.ts +17 -16
- package/types/modules/custom-image/blot-formatter.d.ts +20 -19
- package/types/modules/custom-image/image-bar.d.ts +15 -0
- package/types/modules/custom-image/image.d.ts +27 -26
- package/types/modules/custom-image/index.d.ts +4 -4
- package/types/modules/custom-image/specs/BlotSpec.d.ts +13 -0
- package/types/modules/custom-image/specs/CustomImageSpec.d.ts +21 -0
- package/types/modules/custom-image/specs/ImageSpec.d.ts +10 -0
- package/types/modules/custom-image/specs/blot-spec.d.ts +11 -10
- package/types/modules/custom-image/specs/custom-image-spec.d.ts +16 -15
- package/types/modules/custom-image/specs/image-spec.d.ts +8 -7
- package/types/modules/custom-image/specs/index.d.ts +3 -3
- package/types/modules/custom-uploader.d.ts +38 -37
- package/types/modules/divider.d.ts +8 -7
- package/types/modules/emoji/emoji-list/index.d.ts +1 -0
- package/types/modules/emoji/emoji-list/people.d.ts +1 -0
- package/types/modules/emoji/emoji-list.d.ts +2 -0
- package/types/modules/emoji/emoji-map.d.ts +2 -0
- package/types/modules/emoji/emoji-sprite.d.ts +1 -0
- package/types/modules/emoji/formats/emoji-blot.d.ts +13 -0
- package/types/modules/emoji/index.d.ts +10 -0
- package/types/modules/emoji/modules/emoji.d.ts +38 -0
- package/types/modules/emoji/modules/toolbar-emoji.d.ts +8 -0
- package/types/modules/emoji/utils.d.ts +1 -0
- package/types/modules/emoji.d.ts +36 -35
- package/types/modules/file/formats/file.d.ts +18 -17
- 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 +8 -7
- package/types/modules/flow-chart/config-utils.d.ts +10 -9
- package/types/modules/flow-chart/formats/flow-chart-blot.d.ts +41 -40
- 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 +9 -8
- package/types/modules/flow-chart/modules/context-menu.d.ts +2 -1
- package/types/modules/flow-chart/modules/control-panel.d.ts +2 -1
- 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/global-link/constants.d.ts +3 -0
- package/types/modules/global-link/formats/customer-widget-link.d.ts +14 -0
- package/types/modules/global-link/formats/doc-link.d.ts +17 -0
- package/types/modules/global-link/formats/wiki-link.d.ts +16 -0
- package/types/modules/global-link/formats/work-item-link.d.ts +16 -0
- package/types/modules/global-link/global-link-panel.d.ts +19 -0
- package/types/modules/global-link/index.d.ts +18 -0
- package/types/modules/global-link/utils/createTable.d.ts +1 -0
- package/types/modules/i18n.d.ts +14 -13
- package/types/modules/index.d.ts +18 -18
- package/types/modules/link/formats/link.d.ts +15 -14
- package/types/modules/link/index.d.ts +2 -2
- package/types/modules/link/modules/tooltip.d.ts +26 -25
- package/types/modules/mathlive/formats.d.ts +21 -20
- package/types/modules/mathlive/index.d.ts +3 -3
- package/types/modules/mathlive/module.d.ts +8 -7
- package/types/modules/mathlive/tooltip.d.ts +15 -14
- package/types/modules/mention/{mention.d.ts → Mention.d.ts} +53 -52
- package/types/modules/mention/MentionLink.d.ts +16 -0
- 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 +15 -14
- package/types/modules/mind-map/config-utils.d.ts +12 -11
- package/types/modules/mind-map/formats/mind-map-blot.d.ts +42 -41
- 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 +9 -8
- package/types/modules/mind-map/modules/context-menu.d.ts +2 -1
- package/types/modules/mind-map/modules/control-panel.d.ts +2 -1
- 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/quick-menu.d.ts +22 -0
- package/types/modules/shortcut-key/index.d.ts +68 -67
- package/types/modules/syntax.d.ts +13 -12
- package/types/modules/table/better-table.d.ts +35 -0
- package/types/modules/table/formats/header.d.ts +23 -0
- package/types/modules/table/formats/list.d.ts +34 -0
- package/types/modules/table/formats/table.d.ts +147 -0
- package/types/modules/table/modules/table-column-tool.d.ts +23 -0
- package/types/modules/table/modules/table-operation-menu.d.ts +38 -0
- package/types/modules/table/modules/table-scroll-bar.d.ts +33 -0
- package/types/modules/table/modules/table-selection.d.ts +37 -0
- package/types/modules/table/modules/table-selector.d.ts +22 -0
- package/types/modules/table/table-config.d.ts +38 -0
- package/types/modules/table/utils/index.d.ts +17 -0
- package/types/modules/table/utils/node-matchers.d.ts +9 -0
- package/types/modules/table-up/index.d.ts +33 -32
- package/types/modules/toolbar/better-picker.d.ts +14 -13
- package/types/modules/toolbar/better-toolbar.d.ts +7 -6
- package/types/modules/toolbar/index.d.ts +3 -3
- package/types/modules/toolbar/toolbar-tip.d.ts +8 -7
- package/types/themes/snow.d.ts +10 -9
- package/types/tools/format-painter.d.ts +13 -12
- package/types/tools/fullscreen.d.ts +5 -4
- package/types/tools/screenshot.d.ts +18 -17
- 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 -0
- package/types/utils/method.d.ts +6 -6
- package/types/utils/scroll-lock.d.ts +6 -6
|
@@ -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 = {\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
|
+
{"version":3,"file":"zh-cn.es.js","sources":["../../../../../src/modules/flow-chart/i18n/zh-cn.ts"],"sourcesContent":["export const FLOW_CHART_ZH_CN = {\r\n 'flowChart.controlPanel.export': '导出',\r\n 'flowChart.controlPanel.import': '导入',\r\n 'flowChart.controlPanel.setEdgeTypeTitle': '设置边类型',\r\n 'flowChart.dndPanel.selection': '选区',\r\n 'flowChart.dndPanel.rectangle': '矩形',\r\n 'flowChart.dndPanel.circle': '圆形',\r\n 'flowChart.dndPanel.ellipse': '椭圆',\r\n 'flowChart.dndPanel.diamond': '菱形',\r\n 'flowChart.controlPanel.zoomOut': '缩小',\r\n 'flowChart.controlPanel.zoomIn': '放大',\r\n 'flowChart.controlPanel.fit': '适应',\r\n 'flowChart.controlPanel.back': '上一步',\r\n 'flowChart.controlPanel.forward': '下一步',\r\n 'flowChart.controlPanel.zoomOutTitle': '缩小视图',\r\n 'flowChart.controlPanel.zoomInTitle': '放大视图',\r\n 'flowChart.controlPanel.fitTitle': '适应视图大小',\r\n 'flowChart.controlPanel.backTitle': '上一步',\r\n 'flowChart.controlPanel.forwardTitle': '下一步',\r\n 'flowChart.contextMenu.copy': '复制',\r\n 'flowChart.contextMenu.deleteContent': '删除',\r\n 'flowChart.contextMenu.deleteNode': '删除节点',\r\n 'flowChart.contextMenu.deleteEdge': '删除边',\r\n 'flowChart.controlPanel.panelStatusTitle': '面板状态',\r\n 'flowChart.controlPanel.screenTypeTitle': '屏幕类型',\r\n}\r\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>`\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
|
+
{"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 +1 @@
|
|
|
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
|
+
{"version":3,"file":"index.es.js","sources":["../../../../src/modules/flow-chart/index.ts"],"sourcesContent":["import type Quill from 'quill'\r\nimport type { FlowChartOptions } from './options'\r\nimport Quills from 'quill'\r\nimport FlowChartPlaceholderBlot from './formats/flow-chart-blot'\r\n\r\nexport class FlowChartModule {\r\n quill: Quill\r\n toolbar: any\r\n options: FlowChartOptions\r\n\r\n static register() {\r\n Quills.register('formats/flow-chart', FlowChartPlaceholderBlot, true)\r\n }\r\n\r\n constructor(quill: Quill, options: any) {\r\n (quill.container as any).__quillInstance = quill\r\n this.quill = quill\r\n this.options = options\r\n this.toolbar = quill.getModule('toolbar')\r\n if (this.toolbar) {\r\n this.toolbar.addHandler('flow-chart', () => {\r\n this.insertFlowChartEditor()\r\n })\r\n }\r\n }\r\n\r\n public insertFlowChartEditor(): void {\r\n const range = this.quill.getSelection()\r\n if (range) {\r\n const defaultData = {\r\n nodes: [\r\n { id: 'node1', type: 'rect', x: 100, y: 150, text: '开始' },\r\n { id: 'node2', type: 'rect', x: 300, y: 150, text: '结束' },\r\n ],\r\n edges: [\r\n { id: 'edge1', sourceNodeId: 'node1', targetNodeId: 'node2', type: 'polyline' },\r\n ],\r\n }\r\n this.quill.insertText(range.index, '\\n', 'user')\r\n this.quill.insertEmbed(range.index + 1, 'flow-chart', defaultData, 'user')\r\n this.quill.insertText(range.index + 2, '\\n', 'user')\r\n }\r\n }\r\n}\r\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'\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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"}
|
|
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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-panel.es.js","sources":["../../../../../src/modules/flow-chart/modules/control-panel.ts"],"sourcesContent":["import type FluentEditor from '../../../core/fluent-editor'\nimport type FlowChartPlaceholderBlot from '../formats/flow-chart-blot'\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\nimport { I18N } from '../../../modules/i18n'\nimport { registerFlowChartI18N } from '../i18n'\nimport { backIcon, bezierIcon, contractIcon, fitIcon, forwardIcon, lineIcon, polyLineIcon, screenReduceIcon, screenTypeIcon, zoomInIcon, zoomOutIcon } from '../icons'\n\nclass FlowChartControlPanelHandler {\n private texts: Record<string, string>\n private lang: string\n getText(key: keyof Record<string, string>): string {\n return this.texts[key]\n }\n\n constructor(private quill: FluentEditor, private blot: FlowChartPlaceholderBlot) {\n const i18nModule = this.quill.getModule('i18n') as I18N\n registerFlowChartI18N(I18N)\n this.lang = i18nModule.options.lang\n this.texts = this.resolveTexts()\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, (lang: string) => {\n this.lang = lang\n this.texts = this.resolveTexts()\n this.updateControlPanelTexts()\n })\n }\n\n resolveTexts() {\n return {\n exportTitle: I18N.parserText('flowChart.controlPanel.exportTitle', this.lang),\n zoomOutTitle: I18N.parserText('flowChart.controlPanel.zoomOutTitle', this.lang),\n zoomInTitle: I18N.parserText('flowChart.controlPanel.zoomInTitle', this.lang),\n fitTitle: I18N.parserText('flowChart.controlPanel.fitTitle', this.lang),\n backTitle: I18N.parserText('flowChart.controlPanel.backTitle', this.lang),\n forwardTitle: I18N.parserText('flowChart.controlPanel.forwardTitle', this.lang),\n setEdgeTypeTitle: I18N.parserText('flowChart.controlPanel.setEdgeTypeTitle', this.lang),\n panelStatusTitle: I18N.parserText('flowChart.controlPanel.panelStatusTitle', this.lang),\n screenTypeTitle: I18N.parserText('flowChart.controlPanel.screenTypeTitle', this.lang),\n }\n }\n\n updateControlPanelTexts() {\n const controlItems = this.blot.domNode.querySelectorAll('.ql-flow-chart-control-item')\n\n const controlItemMap: Record<string, string> = {\n 'zoom-out': 'zoomOutTitle',\n 'zoom-in': 'zoomInTitle',\n 'fit': 'fitTitle',\n 'back': 'backTitle',\n 'forward': 'forwardTitle',\n 'set-edge-type': 'setEdgeTypeTitle',\n 'panel-status': 'panelStatusTitle',\n 'screen-type': 'screenTypeTitle',\n }\n\n controlItems.forEach((item) => {\n const controlType = (item as HTMLElement).dataset.controlType\n if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {\n (item as HTMLElement).title = this.texts[controlItemMap[controlType]]\n }\n })\n }\n}\n\nconst controlPanelHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartControlPanelHandler>()\n\nconst DISABLED_OPACITY = '0.5'\nconst ENABLED_OPACITY = '1'\nexport function createControlPanel(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\n // 中间的控制面板\n const controlPanel = document.createElement('div')\n controlPanel.className = 'ql-flow-chart-control'\n // 右上的控制面板\n const controlRightUpPanel = document.createElement('div')\n controlRightUpPanel.className = 'ql-flow-chart-right-up-control'\n\n const handler = new FlowChartControlPanelHandler(quill, blot)\n controlPanelHandlers.set(blot, handler)\n const zoomOutBtn = createControlItem('zoom-out', handler.getText('zoomOutTitle'), () => handleZoomOut(blot))\n const zoomInBtn = createControlItem('zoom-in', handler.getText('zoomInTitle'), () => handleZoomIn(blot))\n const resetBtn = createControlItem('fit', handler.getText('fitTitle'), () => handleResetZoom(blot))\n const backBtn = createControlItem('back', handler.getText('backTitle'), () => handleUndo(blot))\n const forwardBtn = createControlItem('forward', handler.getText('forwardTitle'), () => handleRedo(blot))\n const setEdgeTypeBtn = createControlItem('set-edge-type', handler.getText('setEdgeTypeTitle'), () => handleSetEdgeType(blot))\n const panelStatusBtn = createControlItem('panel-status', handler.getText('panelStatusTitle'))\n const screenTypeBtn = createControlItem('screen-type', handler.getText('screenTypeTitle'), () => handleScreenTypeBtn(blot))\n\n const updateButtonState = (historyData: any) => {\n if (!historyData.data) {\n backBtn.style.opacity = DISABLED_OPACITY\n backBtn.style.cursor = 'not-allowed'\n forwardBtn.style.opacity = DISABLED_OPACITY\n forwardBtn.style.cursor = 'not-allowed'\n return\n }\n const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0\n const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0\n\n if (backBtn) {\n backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n backBtn.style.cursor = isUndoAvailable ? 'pointer' : 'not-allowed'\n }\n\n if (forwardBtn) {\n forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\n forwardBtn.style.cursor = isRedoAvailable ? 'pointer' : 'not-allowed'\n }\n }\n updateButtonState(blot.flowChart.history)\n blot.flowChart.on('history:change', (data: any) => {\n updateButtonState(data)\n })\n\n setTimeout(() => {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n controlLeftUpPanel.append(setEdgeTypeBtn)\n }, 0)\n controlRightUpPanel.append(panelStatusBtn)\n blot.domNode.appendChild(controlRightUpPanel)\n controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn)\n blot.domNode.appendChild(controlPanel)\n}\n\nfunction handleUndo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.undo()\n }\n}\n\nfunction handleRedo(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.redo()\n }\n}\n\nfunction handleZoomIn(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(true)\n }\n}\n\nfunction handleZoomOut(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.zoom(false)\n }\n}\n\nfunction handleResetZoom(blot: FlowChartPlaceholderBlot): void {\n if (blot.flowChart) {\n blot.flowChart.resetZoom()\n }\n}\n\nfunction createControlItem(iconClass: string, title: string, onClick?: () => void, disabled = false) {\n const controlItem = document.createElement('div')\n controlItem.className = 'ql-flow-chart-control-item'\n controlItem.title = title\n controlItem.dataset.controlType = iconClass\n controlItem.style.cursor = disabled ? 'not-allowed' : 'pointer'\n\n const iconMap: Record<string, string> = {\n 'back': backIcon,\n 'forward': forwardIcon,\n 'zoom-out': zoomOutIcon,\n 'zoom-in': zoomInIcon,\n 'fit': fitIcon,\n 'screen-type': screenTypeIcon,\n 'panel-status': contractIcon,\n 'set-edge-type': lineIcon,\n }\n\n const icon = document.createElement('i')\n icon.innerHTML = iconMap[iconClass] || ''\n controlItem.appendChild(icon)\n\n if (!disabled) {\n controlItem.addEventListener('click', onClick)\n }\n\n return controlItem\n}\n\nfunction handleSetEdgeType(blot: FlowChartPlaceholderBlot): void {\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\n if (!controlLeftUpPanel) return\n let edgeTypePanel = controlLeftUpPanel.querySelector('.ql-flow-chart-edge-panel') as HTMLElement\n if (!edgeTypePanel) {\n edgeTypePanel = document.createElement('div')\n edgeTypePanel.className = 'ql-flow-chart-edge-panel'\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n edgeTypePanel.style.width = 'auto'\n edgeTypePanel.style.minWidth = '100%'\n edgeTypePanel.style.padding = '8px'\n edgeTypePanel.style.boxSizing = 'border-box'\n edgeTypePanel.style.position = 'absolute'\n edgeTypePanel.style.top = '170px'\n controlLeftUpPanel.appendChild(edgeTypePanel)\n\n const edgeTypes = [\n {\n name: 'line',\n displayName: '直线',\n icon: lineIcon,\n },\n {\n name: 'polyline',\n displayName: '折线',\n icon: polyLineIcon,\n },\n {\n name: 'bezier',\n displayName: '贝塞尔曲线',\n icon: bezierIcon,\n },\n ]\n\n edgeTypes.forEach((edgeType) => {\n const edgeItem = document.createElement('div')\n edgeItem.className = 'ql-flow-chart-edge-item'\n edgeItem.style.padding = '8px'\n edgeItem.style.cursor = 'pointer'\n edgeItem.style.textAlign = 'center'\n\n const edgeIcon = document.createElement('div')\n edgeIcon.className = `ql-flow-chart-edge-type-icon`\n edgeIcon.style.width = '24px'\n edgeIcon.style.height = '24px'\n edgeIcon.style.margin = '0 auto'\n if (edgeType.icon) {\n edgeIcon.innerHTML = edgeType.icon\n }\n\n edgeItem.appendChild(edgeIcon)\n\n edgeItem.addEventListener('click', () => {\n const { edges = [] } = blot.flowChart.getSelectElements()\n if (edges.length > 0) {\n edges.forEach((edge) => {\n blot.flowChart.changeEdgeType(edge.id, edgeType.name)\n })\n blot.data = blot.flowChart.getGraphData()\n blot.domNode.setAttribute('data-flow-chart', JSON.stringify(blot.data))\n }\n\n edgeTypePanel.style.display = 'none'\n })\n edgeTypePanel.appendChild(edgeItem)\n })\n }\n else {\n edgeTypePanel.style.display = 'flex'\n edgeTypePanel.style.justifyContent = 'space-around'\n edgeTypePanel.style.flexWrap = 'nowrap'\n }\n\n const handleOutsideClick = (e: MouseEvent) => {\n let setEdgeTypeBtn: HTMLElement | null = null\n const controlItems = controlLeftUpPanel.querySelectorAll('.ql-flow-chart-control-item')\n controlItems.forEach((item) => {\n const iconEl = item.querySelector('i')\n if (iconEl && iconEl.className.includes('set-edge-type')) {\n setEdgeTypeBtn = item as HTMLElement\n }\n })\n if (!edgeTypePanel.contains(e.target as Node)\n && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target as Node))) {\n edgeTypePanel.style.display = 'none'\n document.removeEventListener('click', handleOutsideClick)\n }\n }\n\n document.removeEventListener('click', handleOutsideClick)\n setTimeout(() => {\n document.addEventListener('click', handleOutsideClick)\n }, 0)\n}\n\nfunction handleScreenTypeBtn(blot: FlowChartPlaceholderBlot): void {\n const screenTypeBtn = blot.domNode.querySelector('[data-control-type=\"screen-type\"]') as HTMLElement | null\n if (!screenTypeBtn || !blot.domNode) return\n\n const flowChartContainer = blot.domNode\n const isFullscreen = flowChartContainer.style.position === 'fixed'\n\n if (isFullscreen) {\n const originalPosition = flowChartContainer.getAttribute('data-original-position')\n const originalWidth = flowChartContainer.getAttribute('data-original-width')\n const originalHeight = flowChartContainer.getAttribute('data-original-height')\n if (originalWidth && originalHeight) {\n flowChartContainer.style.position = originalPosition\n flowChartContainer.style.width = originalWidth\n flowChartContainer.style.height = originalHeight\n flowChartContainer.style.zIndex = '0'\n }\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenTypeIcon\n }\n }\n else {\n flowChartContainer.setAttribute('data-original-position', flowChartContainer.style.position || '')\n flowChartContainer.setAttribute('data-original-width', flowChartContainer.style.width || '')\n flowChartContainer.setAttribute('data-original-height', flowChartContainer.style.height || '')\n flowChartContainer.style.position = 'fixed'\n flowChartContainer.style.top = '0'\n flowChartContainer.style.left = '0'\n flowChartContainer.style.width = '100vw'\n flowChartContainer.style.height = '100vh'\n flowChartContainer.style.zIndex = '100'\n const iconElement = screenTypeBtn.querySelector('i')\n if (iconElement) {\n iconElement.innerHTML = screenReduceIcon\n }\n }\n blot.flowChart.resize()\n blot.flowChart.translateCenter()\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"control-panel.es.js","sources":["../../../../../src/modules/flow-chart/modules/control-panel.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'\r\nimport { backIcon, bezierIcon, contractIcon, fitIcon, forwardIcon, lineIcon, polyLineIcon, screenReduceIcon, screenTypeIcon, zoomInIcon, zoomOutIcon } from '../icons'\r\n\r\nclass FlowChartControlPanelHandler {\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.updateControlPanelTexts()\r\n })\r\n }\r\n\r\n resolveTexts() {\r\n return {\r\n exportTitle: I18N.parserText('flowChart.controlPanel.exportTitle', this.lang),\r\n zoomOutTitle: I18N.parserText('flowChart.controlPanel.zoomOutTitle', this.lang),\r\n zoomInTitle: I18N.parserText('flowChart.controlPanel.zoomInTitle', this.lang),\r\n fitTitle: I18N.parserText('flowChart.controlPanel.fitTitle', this.lang),\r\n backTitle: I18N.parserText('flowChart.controlPanel.backTitle', this.lang),\r\n forwardTitle: I18N.parserText('flowChart.controlPanel.forwardTitle', this.lang),\r\n setEdgeTypeTitle: I18N.parserText('flowChart.controlPanel.setEdgeTypeTitle', this.lang),\r\n panelStatusTitle: I18N.parserText('flowChart.controlPanel.panelStatusTitle', this.lang),\r\n screenTypeTitle: I18N.parserText('flowChart.controlPanel.screenTypeTitle', this.lang),\r\n }\r\n }\r\n\r\n updateControlPanelTexts() {\r\n const controlItems = this.blot.domNode.querySelectorAll('.ql-flow-chart-control-item')\r\n\r\n const controlItemMap: Record<string, string> = {\r\n 'zoom-out': 'zoomOutTitle',\r\n 'zoom-in': 'zoomInTitle',\r\n 'fit': 'fitTitle',\r\n 'back': 'backTitle',\r\n 'forward': 'forwardTitle',\r\n 'set-edge-type': 'setEdgeTypeTitle',\r\n 'panel-status': 'panelStatusTitle',\r\n 'screen-type': 'screenTypeTitle',\r\n }\r\n\r\n controlItems.forEach((item) => {\r\n const controlType = (item as HTMLElement).dataset.controlType\r\n if (controlType && controlItemMap[controlType] && this.texts[controlItemMap[controlType]]) {\r\n (item as HTMLElement).title = this.texts[controlItemMap[controlType]]\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst controlPanelHandlers = new WeakMap<FlowChartPlaceholderBlot, FlowChartControlPanelHandler>()\r\n\r\nconst DISABLED_OPACITY = '0.5'\r\nconst ENABLED_OPACITY = '1'\r\nexport function createControlPanel(blot: FlowChartPlaceholderBlot, quill: FluentEditor): void {\r\n // 中间的控制面板\r\n const controlPanel = document.createElement('div')\r\n controlPanel.className = 'ql-flow-chart-control'\r\n // 右上的控制面板\r\n const controlRightUpPanel = document.createElement('div')\r\n controlRightUpPanel.className = 'ql-flow-chart-right-up-control'\r\n\r\n const handler = new FlowChartControlPanelHandler(quill, blot)\r\n controlPanelHandlers.set(blot, handler)\r\n const zoomOutBtn = createControlItem('zoom-out', handler.getText('zoomOutTitle'), () => handleZoomOut(blot))\r\n const zoomInBtn = createControlItem('zoom-in', handler.getText('zoomInTitle'), () => handleZoomIn(blot))\r\n const resetBtn = createControlItem('fit', handler.getText('fitTitle'), () => handleResetZoom(blot))\r\n const backBtn = createControlItem('back', handler.getText('backTitle'), () => handleUndo(blot))\r\n const forwardBtn = createControlItem('forward', handler.getText('forwardTitle'), () => handleRedo(blot))\r\n const setEdgeTypeBtn = createControlItem('set-edge-type', handler.getText('setEdgeTypeTitle'), () => handleSetEdgeType(blot))\r\n const panelStatusBtn = createControlItem('panel-status', handler.getText('panelStatusTitle'))\r\n const screenTypeBtn = createControlItem('screen-type', handler.getText('screenTypeTitle'), () => handleScreenTypeBtn(blot))\r\n\r\n const updateButtonState = (historyData: any) => {\r\n if (!historyData.data) {\r\n backBtn.style.opacity = DISABLED_OPACITY\r\n backBtn.style.cursor = 'not-allowed'\r\n forwardBtn.style.opacity = DISABLED_OPACITY\r\n forwardBtn.style.cursor = 'not-allowed'\r\n return\r\n }\r\n const isUndoAvailable = historyData.data.undoAble || historyData.data.undos.length < 0\r\n const isRedoAvailable = historyData.data.redoAble || historyData.data.redos.length > 0\r\n\r\n if (backBtn) {\r\n backBtn.style.opacity = isUndoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\r\n backBtn.style.cursor = isUndoAvailable ? 'pointer' : 'not-allowed'\r\n }\r\n\r\n if (forwardBtn) {\r\n forwardBtn.style.opacity = isRedoAvailable ? ENABLED_OPACITY : DISABLED_OPACITY\r\n forwardBtn.style.cursor = isRedoAvailable ? 'pointer' : 'not-allowed'\r\n }\r\n }\r\n updateButtonState(blot.flowChart.history)\r\n blot.flowChart.on('history:change', (data: any) => {\r\n updateButtonState(data)\r\n })\r\n\r\n setTimeout(() => {\r\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\r\n controlLeftUpPanel.append(setEdgeTypeBtn)\r\n }, 0)\r\n controlRightUpPanel.append(panelStatusBtn)\r\n blot.domNode.appendChild(controlRightUpPanel)\r\n controlPanel.append(zoomOutBtn, zoomInBtn, resetBtn, screenTypeBtn, backBtn, forwardBtn)\r\n blot.domNode.appendChild(controlPanel)\r\n}\r\n\r\nfunction handleUndo(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.flowChart) {\r\n blot.flowChart.undo()\r\n }\r\n}\r\n\r\nfunction handleRedo(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.flowChart) {\r\n blot.flowChart.redo()\r\n }\r\n}\r\n\r\nfunction handleZoomIn(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.flowChart) {\r\n blot.flowChart.zoom(true)\r\n }\r\n}\r\n\r\nfunction handleZoomOut(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.flowChart) {\r\n blot.flowChart.zoom(false)\r\n }\r\n}\r\n\r\nfunction handleResetZoom(blot: FlowChartPlaceholderBlot): void {\r\n if (blot.flowChart) {\r\n blot.flowChart.resetZoom()\r\n }\r\n}\r\n\r\nfunction createControlItem(iconClass: string, title: string, onClick?: () => void, disabled = false) {\r\n const controlItem = document.createElement('div')\r\n controlItem.className = 'ql-flow-chart-control-item'\r\n controlItem.title = title\r\n controlItem.dataset.controlType = iconClass\r\n controlItem.style.cursor = disabled ? 'not-allowed' : 'pointer'\r\n\r\n const iconMap: Record<string, string> = {\r\n 'back': backIcon,\r\n 'forward': forwardIcon,\r\n 'zoom-out': zoomOutIcon,\r\n 'zoom-in': zoomInIcon,\r\n 'fit': fitIcon,\r\n 'screen-type': screenTypeIcon,\r\n 'panel-status': contractIcon,\r\n 'set-edge-type': lineIcon,\r\n }\r\n\r\n const icon = document.createElement('i')\r\n icon.innerHTML = iconMap[iconClass] || ''\r\n controlItem.appendChild(icon)\r\n\r\n if (!disabled) {\r\n controlItem.addEventListener('click', onClick)\r\n }\r\n\r\n return controlItem\r\n}\r\n\r\nfunction handleSetEdgeType(blot: FlowChartPlaceholderBlot): void {\r\n const controlLeftUpPanel = blot.domNode.querySelector('.lf-dndpanel') as HTMLElement | null\r\n if (!controlLeftUpPanel) return\r\n let edgeTypePanel = controlLeftUpPanel.querySelector('.ql-flow-chart-edge-panel') as HTMLElement\r\n if (!edgeTypePanel) {\r\n edgeTypePanel = document.createElement('div')\r\n edgeTypePanel.className = 'ql-flow-chart-edge-panel'\r\n edgeTypePanel.style.display = 'flex'\r\n edgeTypePanel.style.justifyContent = 'space-around'\r\n edgeTypePanel.style.flexWrap = 'nowrap'\r\n edgeTypePanel.style.width = 'auto'\r\n edgeTypePanel.style.minWidth = '100%'\r\n edgeTypePanel.style.padding = '8px'\r\n edgeTypePanel.style.boxSizing = 'border-box'\r\n edgeTypePanel.style.position = 'absolute'\r\n edgeTypePanel.style.top = '170px'\r\n controlLeftUpPanel.appendChild(edgeTypePanel)\r\n\r\n const edgeTypes = [\r\n {\r\n name: 'line',\r\n displayName: '直线',\r\n icon: lineIcon,\r\n },\r\n {\r\n name: 'polyline',\r\n displayName: '折线',\r\n icon: polyLineIcon,\r\n },\r\n {\r\n name: 'bezier',\r\n displayName: '贝塞尔曲线',\r\n icon: bezierIcon,\r\n },\r\n ]\r\n\r\n edgeTypes.forEach((edgeType) => {\r\n const edgeItem = document.createElement('div')\r\n edgeItem.className = 'ql-flow-chart-edge-item'\r\n edgeItem.style.padding = '8px'\r\n edgeItem.style.cursor = 'pointer'\r\n edgeItem.style.textAlign = 'center'\r\n\r\n const edgeIcon = document.createElement('div')\r\n edgeIcon.className = `ql-flow-chart-edge-type-icon`\r\n edgeIcon.style.width = '24px'\r\n edgeIcon.style.height = '24px'\r\n edgeIcon.style.margin = '0 auto'\r\n if (edgeType.icon) {\r\n edgeIcon.innerHTML = edgeType.icon\r\n }\r\n\r\n edgeItem.appendChild(edgeIcon)\r\n\r\n edgeItem.addEventListener('click', () => {\r\n const { edges = [] } = blot.flowChart.getSelectElements()\r\n if (edges.length > 0) {\r\n edges.forEach((edge) => {\r\n blot.flowChart.changeEdgeType(edge.id, edgeType.name)\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\r\n edgeTypePanel.style.display = 'none'\r\n })\r\n edgeTypePanel.appendChild(edgeItem)\r\n })\r\n }\r\n else {\r\n edgeTypePanel.style.display = 'flex'\r\n edgeTypePanel.style.justifyContent = 'space-around'\r\n edgeTypePanel.style.flexWrap = 'nowrap'\r\n }\r\n\r\n const handleOutsideClick = (e: MouseEvent) => {\r\n let setEdgeTypeBtn: HTMLElement | null = null\r\n const controlItems = controlLeftUpPanel.querySelectorAll('.ql-flow-chart-control-item')\r\n controlItems.forEach((item) => {\r\n const iconEl = item.querySelector('i')\r\n if (iconEl && iconEl.className.includes('set-edge-type')) {\r\n setEdgeTypeBtn = item as HTMLElement\r\n }\r\n })\r\n if (!edgeTypePanel.contains(e.target as Node)\r\n && (!setEdgeTypeBtn || !setEdgeTypeBtn.contains(e.target as Node))) {\r\n edgeTypePanel.style.display = 'none'\r\n document.removeEventListener('click', handleOutsideClick)\r\n }\r\n }\r\n\r\n document.removeEventListener('click', handleOutsideClick)\r\n setTimeout(() => {\r\n document.addEventListener('click', handleOutsideClick)\r\n }, 0)\r\n}\r\n\r\nfunction handleScreenTypeBtn(blot: FlowChartPlaceholderBlot): void {\r\n const screenTypeBtn = blot.domNode.querySelector('[data-control-type=\"screen-type\"]') as HTMLElement | null\r\n if (!screenTypeBtn || !blot.domNode) return\r\n\r\n const flowChartContainer = blot.domNode\r\n const isFullscreen = flowChartContainer.style.position === 'fixed'\r\n\r\n if (isFullscreen) {\r\n const originalPosition = flowChartContainer.getAttribute('data-original-position')\r\n const originalWidth = flowChartContainer.getAttribute('data-original-width')\r\n const originalHeight = flowChartContainer.getAttribute('data-original-height')\r\n if (originalWidth && originalHeight) {\r\n flowChartContainer.style.position = originalPosition\r\n flowChartContainer.style.width = originalWidth\r\n flowChartContainer.style.height = originalHeight\r\n flowChartContainer.style.zIndex = '0'\r\n }\r\n const iconElement = screenTypeBtn.querySelector('i')\r\n if (iconElement) {\r\n iconElement.innerHTML = screenTypeIcon\r\n }\r\n }\r\n else {\r\n flowChartContainer.setAttribute('data-original-position', flowChartContainer.style.position || '')\r\n flowChartContainer.setAttribute('data-original-width', flowChartContainer.style.width || '')\r\n flowChartContainer.setAttribute('data-original-height', flowChartContainer.style.height || '')\r\n flowChartContainer.style.position = 'fixed'\r\n flowChartContainer.style.top = '0'\r\n flowChartContainer.style.left = '0'\r\n flowChartContainer.style.width = '100vw'\r\n flowChartContainer.style.height = '100vh'\r\n flowChartContainer.style.zIndex = '100'\r\n const iconElement = screenTypeBtn.querySelector('i')\r\n if (iconElement) {\r\n iconElement.innerHTML = screenReduceIcon\r\n }\r\n }\r\n blot.flowChart.resize()\r\n blot.flowChart.translateCenter()\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-resize-action.es.js","sources":["../../../../../src/modules/flow-chart/modules/custom-resize-action.ts"],"sourcesContent":["const MIN_WIDTH = 350\nconst MIN_HEIGHT = 290\n\nexport class FlowChartResizeAction {\n topLeftHandle: HTMLElement\n topRightHandle: HTMLElement\n bottomRightHandle: HTMLElement\n bottomLeftHandle: HTMLElement\n dragHandle: HTMLElement | null = null\n dragStartX: number = 0\n dragStartY: number = 0\n preDragWidth: number = 0\n preDragHeight: number = 0\n targetRatio: number = 0\n blot: any\n\n constructor(blot: any) {\n this.blot = blot\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\n this.init()\n }\n\n isFullscreen(): boolean {\n const container = this.blot.domNode\n return container.style.position === 'fixed' && container.style.width === '100vw' && container.style.height === '100vh'\n }\n\n init() {\n const container = this.blot.domNode\n container.style.position = 'relative'\n container.appendChild(this.topLeftHandle)\n container.appendChild(this.topRightHandle)\n container.appendChild(this.bottomRightHandle)\n container.appendChild(this.bottomLeftHandle)\n this.repositionHandles()\n }\n\n createHandle(position: string, cursor: string): HTMLElement {\n const box = document.createElement('div')\n box.classList.add('ql-flow-chart-resize-handle')\n box.setAttribute('data-position', position)\n Object.assign(box.style, {\n cursor,\n position: 'absolute',\n width: '10px',\n height: '10px',\n background: '#4285f4',\n border: '1px solid white',\n borderRadius: '50%',\n zIndex: '99',\n userSelect: 'none',\n })\n box.addEventListener('mousedown', this.onMouseDown.bind(this))\n return box\n }\n\n repositionHandles() {\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n Object.assign(this.topLeftHandle.style, {\n left: '-5px',\n top: '-5px',\n })\n Object.assign(this.topRightHandle.style, {\n right: '-5px',\n top: '-5px',\n })\n Object.assign(this.bottomRightHandle.style, {\n right: '-5px',\n bottom: '-5px',\n })\n Object.assign(this.bottomLeftHandle.style, {\n left: '-5px',\n bottom: '-5px',\n })\n }\n\n onMouseDown(event: MouseEvent) {\n if (this.isFullscreen()) {\n return\n }\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n this.dragHandle = event.target\n document.body.style.cursor = this.dragHandle.style.cursor\n\n const container = this.blot.domNode\n const rect = container.getBoundingClientRect()\n\n this.dragStartX = event.clientX\n this.dragStartY = event.clientY\n this.preDragWidth = rect.width\n this.preDragHeight = rect.height\n this.targetRatio = rect.height / rect.width\n\n event.preventDefault()\n document.addEventListener('mousemove', this.onDrag.bind(this))\n document.addEventListener('mouseup', this.onMouseUp.bind(this))\n }\n\n onDrag(event: MouseEvent) {\n if (!this.dragHandle) return\n\n const container = this.blot.domNode\n let newWidth = this.preDragWidth\n let newHeight = this.preDragHeight\n\n const deltaX = event.clientX - this.dragStartX\n const deltaY = event.clientY - this.dragStartY\n\n switch (this.dragHandle.dataset.position) {\n case 'top-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'top-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\n break\n case 'bottom-right':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n case 'bottom-left':\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\n break\n }\n\n container.style.width = `${newWidth}px`\n container.style.height = `${newHeight}px`\n container.setAttribute('width', String(newWidth))\n container.setAttribute('height', String(newHeight))\n\n if (this.blot.flowChart) {\n this.blot.flowChart.resize(newWidth, newHeight)\n }\n\n this.blot.data.width = newWidth\n this.blot.data.height = newHeight\n container.setAttribute('data-flow-chart', JSON.stringify(this.blot.data))\n }\n\n onMouseUp() {\n document.body.style.cursor = ''\n document.removeEventListener('mousemove', this.onDrag.bind(this))\n document.removeEventListener('mouseup', this.onMouseUp.bind(this))\n this.dragHandle = null\n }\n\n destroy() {\n const container = this.blot.domNode\n container.removeChild(this.topLeftHandle)\n container.removeChild(this.topRightHandle)\n container.removeChild(this.bottomRightHandle)\n container.removeChild(this.bottomLeftHandle)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custom-resize-action.es.js","sources":["../../../../../src/modules/flow-chart/modules/custom-resize-action.ts"],"sourcesContent":["const MIN_WIDTH = 350\r\nconst MIN_HEIGHT = 290\r\n\r\nexport class FlowChartResizeAction {\r\n topLeftHandle: HTMLElement\r\n topRightHandle: HTMLElement\r\n bottomRightHandle: HTMLElement\r\n bottomLeftHandle: HTMLElement\r\n dragHandle: HTMLElement | null = null\r\n dragStartX: number = 0\r\n dragStartY: number = 0\r\n preDragWidth: number = 0\r\n preDragHeight: number = 0\r\n targetRatio: number = 0\r\n blot: any\r\n\r\n constructor(blot: any) {\r\n this.blot = blot\r\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\r\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\r\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\r\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\r\n this.init()\r\n }\r\n\r\n isFullscreen(): boolean {\r\n const container = this.blot.domNode\r\n return container.style.position === 'fixed' && container.style.width === '100vw' && container.style.height === '100vh'\r\n }\r\n\r\n init() {\r\n const container = this.blot.domNode\r\n container.style.position = 'relative'\r\n container.appendChild(this.topLeftHandle)\r\n container.appendChild(this.topRightHandle)\r\n container.appendChild(this.bottomRightHandle)\r\n container.appendChild(this.bottomLeftHandle)\r\n this.repositionHandles()\r\n }\r\n\r\n createHandle(position: string, cursor: string): HTMLElement {\r\n const box = document.createElement('div')\r\n box.classList.add('ql-flow-chart-resize-handle')\r\n box.setAttribute('data-position', position)\r\n Object.assign(box.style, {\r\n cursor,\r\n position: 'absolute',\r\n width: '10px',\r\n height: '10px',\r\n background: '#4285f4',\r\n border: '1px solid white',\r\n borderRadius: '50%',\r\n zIndex: '99',\r\n userSelect: 'none',\r\n })\r\n box.addEventListener('mousedown', this.onMouseDown.bind(this))\r\n return box\r\n }\r\n\r\n repositionHandles() {\r\n const container = this.blot.domNode\r\n const rect = container.getBoundingClientRect()\r\n\r\n Object.assign(this.topLeftHandle.style, {\r\n left: '-5px',\r\n top: '-5px',\r\n })\r\n Object.assign(this.topRightHandle.style, {\r\n right: '-5px',\r\n top: '-5px',\r\n })\r\n Object.assign(this.bottomRightHandle.style, {\r\n right: '-5px',\r\n bottom: '-5px',\r\n })\r\n Object.assign(this.bottomLeftHandle.style, {\r\n left: '-5px',\r\n bottom: '-5px',\r\n })\r\n }\r\n\r\n onMouseDown(event: MouseEvent) {\r\n if (this.isFullscreen()) {\r\n return\r\n }\r\n if (!(event.target instanceof HTMLElement)) {\r\n return\r\n }\r\n\r\n this.dragHandle = event.target\r\n document.body.style.cursor = this.dragHandle.style.cursor\r\n\r\n const container = this.blot.domNode\r\n const rect = container.getBoundingClientRect()\r\n\r\n this.dragStartX = event.clientX\r\n this.dragStartY = event.clientY\r\n this.preDragWidth = rect.width\r\n this.preDragHeight = rect.height\r\n this.targetRatio = rect.height / rect.width\r\n\r\n event.preventDefault()\r\n document.addEventListener('mousemove', this.onDrag.bind(this))\r\n document.addEventListener('mouseup', this.onMouseUp.bind(this))\r\n }\r\n\r\n onDrag(event: MouseEvent) {\r\n if (!this.dragHandle) return\r\n\r\n const container = this.blot.domNode\r\n let newWidth = this.preDragWidth\r\n let newHeight = this.preDragHeight\r\n\r\n const deltaX = event.clientX - this.dragStartX\r\n const deltaY = event.clientY - this.dragStartY\r\n\r\n switch (this.dragHandle.dataset.position) {\r\n case 'top-left':\r\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\r\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\r\n break\r\n case 'top-right':\r\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\r\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight - deltaY)\r\n break\r\n case 'bottom-right':\r\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth + deltaX)\r\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\r\n break\r\n case 'bottom-left':\r\n newWidth = Math.max(MIN_WIDTH, this.preDragWidth - deltaX)\r\n newHeight = Math.max(MIN_HEIGHT, this.preDragHeight + deltaY)\r\n break\r\n }\r\n\r\n container.style.width = `${newWidth}px`\r\n container.style.height = `${newHeight}px`\r\n container.setAttribute('width', String(newWidth))\r\n container.setAttribute('height', String(newHeight))\r\n\r\n if (this.blot.flowChart) {\r\n this.blot.flowChart.resize(newWidth, newHeight)\r\n }\r\n\r\n this.blot.data.width = newWidth\r\n this.blot.data.height = newHeight\r\n container.setAttribute('data-flow-chart', JSON.stringify(this.blot.data))\r\n }\r\n\r\n onMouseUp() {\r\n document.body.style.cursor = ''\r\n document.removeEventListener('mousemove', this.onDrag.bind(this))\r\n document.removeEventListener('mouseup', this.onMouseUp.bind(this))\r\n this.dragHandle = null\r\n }\r\n\r\n destroy() {\r\n const container = this.blot.domNode\r\n container.removeChild(this.topLeftHandle)\r\n container.removeChild(this.topRightHandle)\r\n container.removeChild(this.bottomRightHandle)\r\n container.removeChild(this.bottomLeftHandle)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.es.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\nimport Quill from 'quill'\nimport { hadProtocol, sanitize } from '../../../config/editor.utils'\n\nconst Inline = Quill.import('blots/inline') as typeof TypeInline\n\nexport class LinkBlot extends Inline {\n static blotName = 'link'\n static tagName = 'A'\n static SANITIZED_URL = 'about:blank'\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']\n static className = 'ql-normal-link'\n\n static autoProtocol: string = ''\n static create(value: string) {\n const node = super.create(value)\n let href = value\n if (!hadProtocol(href) && this.autoProtocol) {\n href = `${this.autoProtocol}://${value}`\n }\n href = this.sanitize(href)\n node.setAttribute('href', href)\n node.setAttribute('target', '_blank')\n return node\n }\n\n static formats(domNode: HTMLElement): string | null {\n return domNode.getAttribute('href')\n }\n\n static sanitize(url: string) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\n }\n\n format(name: string, value: any) {\n if (name !== this.statics.blotName || [false, null].includes(value)) {\n super.format(name, value)\n }\n else {\n this.domNode.setAttribute('href', LinkBlot.sanitize(value))\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,SAAS,MAAM,OAAO,cAAc;AAEnC,MAAM,YAAN,MAAM,kBAAiB,OAAO;AAAA,EAQnC,OAAO,OAAO,OAAe;AAC3B,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO;AACX,QAAI,CAAC,YAAY,IAAI,KAAK,KAAK,cAAc;AAC3C,aAAO,GAAG,KAAK,YAAY,MAAM,KAAK;AAAA,IACxC;AACA,WAAO,KAAK,SAAS,IAAI;AACzB,SAAK,aAAa,QAAQ,IAAI;AAC9B,SAAK,aAAa,UAAU,QAAQ;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,SAAqC;AAClD,WAAO,QAAQ,aAAa,MAAM;AAAA,EACpC;AAAA,EAEA,OAAO,SAAS,KAAa;AAC3B,WAAO,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAC7D;AAAA,EAEA,OAAO,MAAc,OAAY;AAC/B,QAAI,SAAS,KAAK,QAAQ,YAAY,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,GAAG;AACnE,YAAM,OAAO,MAAM,KAAK;AAAA,IAC1B,OACK;AACH,WAAK,QAAQ,aAAa,QAAQ,UAAS,SAAS,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;AAnCE,cADW,WACJ,YAAW;AAClB,cAFW,WAEJ,WAAU;AACjB,cAHW,WAGJ,iBAAgB;AACvB,cAJW,WAIJ,sBAAqB,CAAC,QAAQ,SAAS,UAAU,KAAK;AAC7D,cALW,WAKJ,aAAY;AAEnB,cAPW,WAOJ,gBAAuB;AAPzB,IAAM,WAAN;"}
|
|
1
|
+
{"version":3,"file":"link.es.js","sources":["../../../../../src/modules/link/formats/link.ts"],"sourcesContent":["import type TypeInline from 'quill/blots/inline'\r\nimport Quill from 'quill'\r\nimport { hadProtocol, sanitize } from '../../../config/editor.utils'\r\n\r\nconst Inline = Quill.import('blots/inline') as typeof TypeInline\r\n\r\nexport class LinkBlot extends Inline {\r\n static blotName = 'link'\r\n static tagName = 'A'\r\n static SANITIZED_URL = 'about:blank'\r\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel']\r\n static className = 'ql-normal-link'\r\n\r\n static autoProtocol: string = ''\r\n static create(value: string) {\r\n const node = super.create(value)\r\n let href = value\r\n if (!hadProtocol(href) && this.autoProtocol) {\r\n href = `${this.autoProtocol}://${value}`\r\n }\r\n href = this.sanitize(href)\r\n node.setAttribute('href', href)\r\n node.setAttribute('target', '_blank')\r\n return node\r\n }\r\n\r\n static formats(domNode: HTMLElement): string | null {\r\n return domNode.getAttribute('href')\r\n }\r\n\r\n static sanitize(url: string) {\r\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL\r\n }\r\n\r\n format(name: string, value: any) {\r\n if (name !== this.statics.blotName || [false, null].includes(value)) {\r\n super.format(name, value)\r\n }\r\n else {\r\n this.domNode.setAttribute('href', LinkBlot.sanitize(value))\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAIA,MAAM,SAAS,MAAM,OAAO,cAAc;AAEnC,MAAM,YAAN,MAAM,kBAAiB,OAAO;AAAA,EAQnC,OAAO,OAAO,OAAe;AAC3B,UAAM,OAAO,MAAM,OAAO,KAAK;AAC/B,QAAI,OAAO;AACX,QAAI,CAAC,YAAY,IAAI,KAAK,KAAK,cAAc;AAC3C,aAAO,GAAG,KAAK,YAAY,MAAM,KAAK;AAAA,IACxC;AACA,WAAO,KAAK,SAAS,IAAI;AACzB,SAAK,aAAa,QAAQ,IAAI;AAC9B,SAAK,aAAa,UAAU,QAAQ;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAQ,SAAqC;AAClD,WAAO,QAAQ,aAAa,MAAM;AAAA,EACpC;AAAA,EAEA,OAAO,SAAS,KAAa;AAC3B,WAAO,SAAS,KAAK,KAAK,kBAAkB,IAAI,MAAM,KAAK;AAAA,EAC7D;AAAA,EAEA,OAAO,MAAc,OAAY;AAC/B,QAAI,SAAS,KAAK,QAAQ,YAAY,CAAC,OAAO,IAAI,EAAE,SAAS,KAAK,GAAG;AACnE,YAAM,OAAO,MAAM,KAAK;AAAA,IAC1B,OACK;AACH,WAAK,QAAQ,aAAa,QAAQ,UAAS,SAAS,KAAK,CAAC;AAAA,IAC5D;AAAA,EACF;AACF;AAnCE,cADW,WACJ,YAAW;AAClB,cAFW,WAEJ,WAAU;AACjB,cAHW,WAGJ,iBAAgB;AACvB,cAJW,WAIJ,sBAAqB,CAAC,QAAQ,SAAS,UAAU,KAAK;AAC7D,cALW,WAKJ,aAAY;AAEnB,cAPW,WAOJ,gBAAuB;AAPzB,IAAM,WAAN;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.es.js","sources":["../../../../../src/modules/link/modules/tooltip.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\nimport type FluentEditor from '../../../core/fluent-editor'\nimport Quill, { Range } from 'quill'\nimport Emitter from 'quill/core/emitter'\nimport { BaseTooltip } from 'quill/themes/base'\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\nimport { hadProtocol, isNullOrUndefined } from '../../../config/editor.utils'\nimport { EN_US } from '../../../config/i18n/en-us'\nimport { debounce } from '../../../utils/debounce'\nimport { LinkBlot } from '../formats/link'\n\nexport class LinkTooltip extends BaseTooltip {\n static TEMPLATE: string = [\n `<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"${EN_US.linkplaceholder}\" data-video=\"Embed URL\" style=\"width: 225px;\">`,\n '<span class=\"ql-split\"></span>',\n '<a class=\"ql-preview\"><i class=\"icon-share\"></i></a>',\n '<a class=\"ql-remove\"><i class=\"icon-delete\"></i></a>',\n ].join('')\n\n isInputFocus: boolean\n isHover: boolean\n debouncedHideToolTip: any\n debouncedShowToolTip: any\n options: { autoProtocol: string } = {\n autoProtocol: 'https',\n }\n\n constructor(public quill: FluentEditor, bounds) {\n super(quill, bounds)\n this.setTemplate()\n this.isInputFocus = false\n this.isHover = false\n\n this.resolveOptions()\n LinkBlot.autoProtocol = this.options.autoProtocol\n this.debouncedHideToolTip = debounce(this.hideToolTip, 300)\n this.debouncedShowToolTip = debounce(this.showToolTip, 300)\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, () => {\n this.setTemplate()\n })\n }\n\n setTemplate() {\n this.root.innerHTML = [\n `<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"${this.quill.getLangText('linkplaceholder')}\" data-video=\"Embed URL\" style=\"width: 225px;\">`,\n '<span class=\"ql-split\"></span>',\n '<a class=\"ql-preview\"><i class=\"icon-share\"></i></a>',\n '<a class=\"ql-remove\"><i class=\"icon-delete\"></i></a>',\n ].join('')\n this.textbox = this.root.querySelector('input[type=\"text\"]')\n this.listen()\n }\n\n resolveOptions() {\n this.options = {\n autoProtocol: 'https',\n }\n const value = this.quill.options.autoProtocol\n if (value && typeof value === 'string') {\n this.options.autoProtocol = value\n }\n else if (typeof value === 'boolean' && !value) {\n this.options.autoProtocol = ''\n }\n }\n\n shouldHide() {\n return !this.isHover && !this.isInputFocus\n }\n\n hideToolTip() {\n if (this.shouldHide()) {\n this.hide()\n }\n }\n\n showToolTip(name, value, range) {\n if (!this.shouldHide()) {\n this.edit(name, value, range)\n }\n }\n\n handleMouseLeave() {\n this.isHover = false\n this.debouncedHideToolTip()\n }\n\n handleMouseEnter(event: MouseEvent) {\n const isTooltipShow = !this.root.classList.contains('ql-hidden')\n if (isTooltipShow) {\n return\n }\n\n if (this.isInputFocus) {\n this.save()\n }\n this.isHover = true\n const linkNode = event.target as HTMLElement\n const preview = LinkBlot.formats(linkNode)\n if (!preview || preview.startsWith('#')) {\n return\n }\n const linkBlot = Quill.find(linkNode) as TypeParchment.Blot\n const index = this.quill.getIndex(linkBlot)\n const [link, offset] = this.quill.scroll.descendant(\n LinkBlot,\n index,\n )\n const length = link && link.length()\n this.linkRange = new Range(index - offset, length)\n this.debouncedShowToolTip('link', preview, this.linkRange)\n }\n\n listen() {\n super.listen()\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (!isNullOrUndefined(this.linkRange)) {\n const range = this.linkRange\n this.restoreFocus()\n this.quill.formatText(range, 'link', false, Emitter.sources.API)\n delete this.linkRange\n }\n event.preventDefault()\n this.hide()\n })\n\n this.quill.root.addEventListener(\n 'mouseover',\n (event) => {\n const target = event.target as HTMLElement\n if (\n (target.tagName.toUpperCase() !== 'A'\n || !target.classList.contains(LinkBlot.className))\n && !target.closest(`a.${LinkBlot.className}`)\n ) {\n return\n }\n this.handleMouseEnter(event)\n },\n false,\n )\n\n this.quill.root.addEventListener(\n 'mouseout',\n (event) => {\n const target = event.target as HTMLElement\n if (target.tagName.toUpperCase() !== 'A' && !target.closest(`a.${LinkBlot.className}`)) {\n return\n }\n this.handleMouseLeave()\n },\n false,\n )\n\n this.root.addEventListener(\n 'mouseenter',\n () => {\n this.isHover = true\n },\n false,\n )\n\n this.root.addEventListener('mouseleave', this.handleMouseLeave.bind(this), false)\n\n this.root.querySelector('a.ql-preview').addEventListener('click', (event) => {\n const link = LinkBlot.sanitize(this.textbox.value)\n window.open(link, '_blank')\n event.preventDefault()\n })\n this.root.querySelector('input[type=\"text\"]').addEventListener('focus', () => {\n this.isInputFocus = true\n })\n this.root.querySelector('input[type=\"text\"]').addEventListener('blur', () => {\n this.isInputFocus = false\n this.save()\n })\n this.quill.on(\n Emitter.events.SELECTION_CHANGE,\n (range, _oldRange, source) => {\n if (isNullOrUndefined(range)) return\n if (source === Emitter.sources.USER) {\n const [link, offset] = this.quill.scroll.descendant(\n LinkBlot,\n range.index,\n )\n\n if (!isNullOrUndefined(link)) {\n this.linkRange = new Range(range.index - offset, link.length())\n const preview = LinkBlot.formats(link.domNode)\n if (!preview.startsWith('#')) {\n this.edit('link', preview, this.linkRange)\n }\n return\n }\n }\n if (this.shouldHide()) {\n this.hide()\n }\n },\n )\n this.quill.on(\n Emitter.events.TEXT_CHANGE,\n () => {\n const selection = this.quill.getSelection()\n const index = selection && selection.index\n setTimeout(() => {\n const link = this.quill.scroll.descendant(\n LinkBlot,\n index,\n )[0]\n if (!link) {\n this.handleMouseLeave()\n }\n })\n },\n )\n }\n\n save() {\n let value = this.textbox.value\n if (!value) return\n this.textbox.value = ''\n switch (this.root.getAttribute('data-mode')) {\n case 'link': {\n const { scrollTop } = this.quill.root\n if (this.options.autoProtocol) {\n value = this.addHttpProtocol(value)\n }\n\n if (this.linkRange) {\n this.quill.formatText(\n this.linkRange,\n 'link',\n value,\n Emitter.sources.USER,\n )\n this.restoreFocus()\n }\n else {\n this.restoreFocus()\n this.quill.format('link', value, Emitter.sources.USER)\n }\n this.quill.root.scrollTop = scrollTop\n break\n }\n case 'formula': {\n const range = this.quill.getSelection(true)\n if (!isNullOrUndefined(range)) {\n const index = range.index + range.length\n this.quill.insertEmbed(\n index,\n this.root.getAttribute('data-mode'),\n value,\n Emitter.sources.USER,\n )\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER)\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER)\n }\n break\n }\n case 'video': {\n const range = this.quill.getSelection(true)\n this.quill.insertText(range.index, '\\n', Emitter.sources.USER)\n this.quill.insertEmbed(range.index + 1, 'video', { src: value }, Emitter.sources.USER)\n this.quill.insertText(range.index + 2, '\\n', Emitter.sources.USER)\n this.quill.setSelection(range.index + 3, Emitter.sources.SILENT)\n this.textbox.value = ''\n this.hide()\n break\n }\n default:\n }\n }\n\n position(reference) {\n const left = reference.left\n const top = reference.bottom + this.quill.root.scrollTop\n this.root.style.left = `${left}px`\n this.root.style.top = `${top}px`\n this.root.classList.remove('ql-flip')\n const containerBounds = this.boundsContainer.getBoundingClientRect()\n const rootBounds = this.root.getBoundingClientRect()\n let shift = 0\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right\n this.root.style.left = `${left + shift}px`\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left\n this.root.style.left = `${left + shift}px`\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n const height = rootBounds.bottom - rootBounds.top\n const verticalShift = reference.bottom - reference.top + height\n const fixedTop = top - verticalShift\n this.root.style.top = `${fixedTop < 0 ? this.quill.root.scrollTop + reference.top : fixedTop}px`\n this.root.classList.add('ql-flip')\n }\n return shift\n }\n\n // @ts-expect-error\n edit(mode: string = 'link', preview = null, range) {\n this.linkRange = range || this.quill.selection.savedRange\n this.root.classList.remove('ql-hidden')\n this.root.classList.add('ql-editing')\n if (!isNullOrUndefined(preview)) {\n this.textbox.value = preview\n }\n else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = ''\n }\n this.position(this.quill.getBounds(range || this.quill.selection.savedRange))\n if (this.textbox.value === '') {\n this.textbox.focus()\n }\n this.textbox.setAttribute(\n 'placeholder',\n this.textbox.getAttribute(`data-${mode}`) || '',\n )\n this.root.setAttribute('data-mode', mode)\n }\n\n show() {\n super.show()\n this.root.removeAttribute('data-mode')\n }\n\n addHttpProtocol(url: string) {\n let result = url\n if (!url) {\n return ''\n }\n if (!hadProtocol(url)) {\n result = `${this.options.autoProtocol}://${url}`\n }\n return result\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.es.js","sources":["../../../../../src/modules/link/modules/tooltip.ts"],"sourcesContent":["import type { Parchment as TypeParchment } from 'quill'\r\nimport type FluentEditor from '../../../core/fluent-editor'\r\nimport Quill, { Range } from 'quill'\r\nimport Emitter from 'quill/core/emitter'\r\nimport { BaseTooltip } from 'quill/themes/base'\r\nimport { CHANGE_LANGUAGE_EVENT } from '../../../config'\r\nimport { hadProtocol, isNullOrUndefined } from '../../../config/editor.utils'\r\nimport { EN_US } from '../../../config/i18n/en-us'\r\nimport { debounce } from '../../../utils/debounce'\r\nimport { LinkBlot } from '../formats/link'\r\n\r\nexport class LinkTooltip extends BaseTooltip {\r\n static TEMPLATE: string = [\r\n `<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"${EN_US.linkplaceholder}\" data-video=\"Embed URL\" style=\"width: 225px;\">`,\r\n '<span class=\"ql-split\"></span>',\r\n '<a class=\"ql-preview\"><i class=\"icon-share\"></i></a>',\r\n '<a class=\"ql-remove\"><i class=\"icon-delete\"></i></a>',\r\n ].join('')\r\n\r\n isInputFocus: boolean\r\n isHover: boolean\r\n debouncedHideToolTip: any\r\n debouncedShowToolTip: any\r\n options: { autoProtocol: string } = {\r\n autoProtocol: 'https',\r\n }\r\n\r\n constructor(public quill: FluentEditor, bounds) {\r\n super(quill, bounds)\r\n this.setTemplate()\r\n this.isInputFocus = false\r\n this.isHover = false\r\n\r\n this.resolveOptions()\r\n LinkBlot.autoProtocol = this.options.autoProtocol\r\n this.debouncedHideToolTip = debounce(this.hideToolTip, 300)\r\n this.debouncedShowToolTip = debounce(this.showToolTip, 300)\r\n this.quill.emitter.on(CHANGE_LANGUAGE_EVENT, () => {\r\n this.setTemplate()\r\n })\r\n }\r\n\r\n setTemplate() {\r\n this.root.innerHTML = [\r\n `<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"${this.quill.getLangText('linkplaceholder')}\" data-video=\"Embed URL\" style=\"width: 225px;\">`,\r\n '<span class=\"ql-split\"></span>',\r\n '<a class=\"ql-preview\"><i class=\"icon-share\"></i></a>',\r\n '<a class=\"ql-remove\"><i class=\"icon-delete\"></i></a>',\r\n ].join('')\r\n this.textbox = this.root.querySelector('input[type=\"text\"]')\r\n this.listen()\r\n }\r\n\r\n resolveOptions() {\r\n this.options = {\r\n autoProtocol: 'https',\r\n }\r\n const value = this.quill.options.autoProtocol\r\n if (value && typeof value === 'string') {\r\n this.options.autoProtocol = value\r\n }\r\n else if (typeof value === 'boolean' && !value) {\r\n this.options.autoProtocol = ''\r\n }\r\n }\r\n\r\n shouldHide() {\r\n return !this.isHover && !this.isInputFocus\r\n }\r\n\r\n hideToolTip() {\r\n if (this.shouldHide()) {\r\n this.hide()\r\n }\r\n }\r\n\r\n showToolTip(name, value, range) {\r\n if (!this.shouldHide()) {\r\n this.edit(name, value, range)\r\n }\r\n }\r\n\r\n handleMouseLeave() {\r\n this.isHover = false\r\n this.debouncedHideToolTip()\r\n }\r\n\r\n handleMouseEnter(event: MouseEvent) {\r\n const isTooltipShow = !this.root.classList.contains('ql-hidden')\r\n if (isTooltipShow) {\r\n return\r\n }\r\n\r\n if (this.isInputFocus) {\r\n this.save()\r\n }\r\n this.isHover = true\r\n const linkNode = event.target as HTMLElement\r\n const preview = LinkBlot.formats(linkNode)\r\n if (!preview || preview.startsWith('#')) {\r\n return\r\n }\r\n const linkBlot = Quill.find(linkNode) as TypeParchment.Blot\r\n const index = this.quill.getIndex(linkBlot)\r\n const [link, offset] = this.quill.scroll.descendant(\r\n LinkBlot,\r\n index,\r\n )\r\n const length = link && link.length()\r\n this.linkRange = new Range(index - offset, length)\r\n this.debouncedShowToolTip('link', preview, this.linkRange)\r\n }\r\n\r\n listen() {\r\n super.listen()\r\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\r\n if (!isNullOrUndefined(this.linkRange)) {\r\n const range = this.linkRange\r\n this.restoreFocus()\r\n this.quill.formatText(range, 'link', false, Emitter.sources.API)\r\n delete this.linkRange\r\n }\r\n event.preventDefault()\r\n this.hide()\r\n })\r\n\r\n this.quill.root.addEventListener(\r\n 'mouseover',\r\n (event) => {\r\n const target = event.target as HTMLElement\r\n if (\r\n (target.tagName.toUpperCase() !== 'A'\r\n || !target.classList.contains(LinkBlot.className))\r\n && !target.closest(`a.${LinkBlot.className}`)\r\n ) {\r\n return\r\n }\r\n this.handleMouseEnter(event)\r\n },\r\n false,\r\n )\r\n\r\n this.quill.root.addEventListener(\r\n 'mouseout',\r\n (event) => {\r\n const target = event.target as HTMLElement\r\n if (target.tagName.toUpperCase() !== 'A' && !target.closest(`a.${LinkBlot.className}`)) {\r\n return\r\n }\r\n this.handleMouseLeave()\r\n },\r\n false,\r\n )\r\n\r\n this.root.addEventListener(\r\n 'mouseenter',\r\n () => {\r\n this.isHover = true\r\n },\r\n false,\r\n )\r\n\r\n this.root.addEventListener('mouseleave', this.handleMouseLeave.bind(this), false)\r\n\r\n this.root.querySelector('a.ql-preview').addEventListener('click', (event) => {\r\n const link = LinkBlot.sanitize(this.textbox.value)\r\n window.open(link, '_blank')\r\n event.preventDefault()\r\n })\r\n this.root.querySelector('input[type=\"text\"]').addEventListener('focus', () => {\r\n this.isInputFocus = true\r\n })\r\n this.root.querySelector('input[type=\"text\"]').addEventListener('blur', () => {\r\n this.isInputFocus = false\r\n this.save()\r\n })\r\n this.quill.on(\r\n Emitter.events.SELECTION_CHANGE,\r\n (range, _oldRange, source) => {\r\n if (isNullOrUndefined(range)) return\r\n if (source === Emitter.sources.USER) {\r\n const [link, offset] = this.quill.scroll.descendant(\r\n LinkBlot,\r\n range.index,\r\n )\r\n\r\n if (!isNullOrUndefined(link)) {\r\n this.linkRange = new Range(range.index - offset, link.length())\r\n const preview = LinkBlot.formats(link.domNode)\r\n if (!preview.startsWith('#')) {\r\n this.edit('link', preview, this.linkRange)\r\n }\r\n return\r\n }\r\n }\r\n if (this.shouldHide()) {\r\n this.hide()\r\n }\r\n },\r\n )\r\n this.quill.on(\r\n Emitter.events.TEXT_CHANGE,\r\n () => {\r\n const selection = this.quill.getSelection()\r\n const index = selection && selection.index\r\n setTimeout(() => {\r\n const link = this.quill.scroll.descendant(\r\n LinkBlot,\r\n index,\r\n )[0]\r\n if (!link) {\r\n this.handleMouseLeave()\r\n }\r\n })\r\n },\r\n )\r\n }\r\n\r\n save() {\r\n let value = this.textbox.value\r\n if (!value) return\r\n this.textbox.value = ''\r\n switch (this.root.getAttribute('data-mode')) {\r\n case 'link': {\r\n const { scrollTop } = this.quill.root\r\n if (this.options.autoProtocol) {\r\n value = this.addHttpProtocol(value)\r\n }\r\n\r\n if (this.linkRange) {\r\n this.quill.formatText(\r\n this.linkRange,\r\n 'link',\r\n value,\r\n Emitter.sources.USER,\r\n )\r\n this.restoreFocus()\r\n }\r\n else {\r\n this.restoreFocus()\r\n this.quill.format('link', value, Emitter.sources.USER)\r\n }\r\n this.quill.root.scrollTop = scrollTop\r\n break\r\n }\r\n case 'formula': {\r\n const range = this.quill.getSelection(true)\r\n if (!isNullOrUndefined(range)) {\r\n const index = range.index + range.length\r\n this.quill.insertEmbed(\r\n index,\r\n this.root.getAttribute('data-mode'),\r\n value,\r\n Emitter.sources.USER,\r\n )\r\n if (this.root.getAttribute('data-mode') === 'formula') {\r\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER)\r\n }\r\n this.quill.setSelection(index + 2, Emitter.sources.USER)\r\n }\r\n break\r\n }\r\n case 'video': {\r\n const range = this.quill.getSelection(true)\r\n this.quill.insertText(range.index, '\\n', Emitter.sources.USER)\r\n this.quill.insertEmbed(range.index + 1, 'video', { src: value }, Emitter.sources.USER)\r\n this.quill.insertText(range.index + 2, '\\n', Emitter.sources.USER)\r\n this.quill.setSelection(range.index + 3, Emitter.sources.SILENT)\r\n this.textbox.value = ''\r\n this.hide()\r\n break\r\n }\r\n default:\r\n }\r\n }\r\n\r\n position(reference) {\r\n const left = reference.left\r\n const top = reference.bottom + this.quill.root.scrollTop\r\n this.root.style.left = `${left}px`\r\n this.root.style.top = `${top}px`\r\n this.root.classList.remove('ql-flip')\r\n const containerBounds = this.boundsContainer.getBoundingClientRect()\r\n const rootBounds = this.root.getBoundingClientRect()\r\n let shift = 0\r\n if (rootBounds.right > containerBounds.right) {\r\n shift = containerBounds.right - rootBounds.right\r\n this.root.style.left = `${left + shift}px`\r\n }\r\n if (rootBounds.left < containerBounds.left) {\r\n shift = containerBounds.left - rootBounds.left\r\n this.root.style.left = `${left + shift}px`\r\n }\r\n if (rootBounds.bottom > containerBounds.bottom) {\r\n const height = rootBounds.bottom - rootBounds.top\r\n const verticalShift = reference.bottom - reference.top + height\r\n const fixedTop = top - verticalShift\r\n this.root.style.top = `${fixedTop < 0 ? this.quill.root.scrollTop + reference.top : fixedTop}px`\r\n this.root.classList.add('ql-flip')\r\n }\r\n return shift\r\n }\r\n\r\n // @ts-expect-error\r\n edit(mode: string = 'link', preview = null, range) {\r\n this.linkRange = range || this.quill.selection.savedRange\r\n this.root.classList.remove('ql-hidden')\r\n this.root.classList.add('ql-editing')\r\n if (!isNullOrUndefined(preview)) {\r\n this.textbox.value = preview\r\n }\r\n else if (mode !== this.root.getAttribute('data-mode')) {\r\n this.textbox.value = ''\r\n }\r\n this.position(this.quill.getBounds(range || this.quill.selection.savedRange))\r\n if (this.textbox.value === '') {\r\n this.textbox.focus()\r\n }\r\n this.textbox.setAttribute(\r\n 'placeholder',\r\n this.textbox.getAttribute(`data-${mode}`) || '',\r\n )\r\n this.root.setAttribute('data-mode', mode)\r\n }\r\n\r\n show() {\r\n super.show()\r\n this.root.removeAttribute('data-mode')\r\n }\r\n\r\n addHttpProtocol(url: string) {\r\n let result = url\r\n if (!url) {\r\n return ''\r\n }\r\n if (!hadProtocol(url)) {\r\n result = `${this.options.autoProtocol}://${url}`\r\n }\r\n return result\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formats.es.js","sources":["../../../../src/modules/mathlive/formats.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\nimport type { Root } from 'parchment'\nimport Quill from 'quill'\n\nconst Parchment = Quill.import('parchment')\nexport type MathliveBlotMode = 'dialog' | 'only-read'\nexport class MathliveBlot extends Parchment.EmbedBlot {\n static blotName = 'mathlive'\n static tagName = 'math-field'\n static className = 'ql-math-field'\n mode: MathliveBlotMode\n\n static create(obj: { value: string, mode: MathliveBlotMode }) {\n const el = super.create() as MathfieldElement\n el.setAttribute('mode', obj.mode)\n el.classList.add('view')\n el.innerHTML = obj.value\n el.setValue(obj.value)\n return el\n }\n\n static value(domNode: MathfieldElement) {\n return {\n value: domNode.value,\n mode: domNode.getAttribute('mode'),\n }\n }\n\n constructor(scroll: Root, public domNode: MathfieldElement) {\n super(scroll, domNode)\n domNode.setAttribute('contenteditable', 'false')\n this.mode = (domNode.getAttribute('mode') || 'only-read') as MathliveBlotMode\n }\n\n html() {\n const formula = this.domNode.value\n return `<math-field class=\"ql-math-field view\" contenteditable=\"false\" mode=\"${this.mode}\">${formula}</math-field>`\n }\n}\n"],"names":[],"mappings":";;;;AAIA,MAAM,YAAY,MAAM,OAAO,WAAW;AAEnC,MAAM,qBAAqB,UAAU,UAAU;AAAA,EAsBpD,YAAY,QAAqB,SAA2B;AAC1D,UAAM,QAAQ,OAAO;AAnBvB;AAkBiC,SAAA,UAAA;AAE/B,YAAQ,aAAa,mBAAmB,OAAO;AAC/C,SAAK,OAAQ,QAAQ,aAAa,MAAM,KAAK;AAAA,EAC/C;AAAA,EApBA,OAAO,OAAO,KAAgD;AAC5D,UAAM,KAAK,MAAM,OAAA;AACjB,OAAG,aAAa,QAAQ,IAAI,IAAI;AAChC,OAAG,UAAU,IAAI,MAAM;AACvB,OAAG,YAAY,IAAI;AACnB,OAAG,SAAS,IAAI,KAAK;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAA2B;AACtC,WAAO;AAAA,MACL,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ,aAAa,MAAM;AAAA,IAAA;AAAA,EAErC;AAAA,EAQA,OAAO;AACL,UAAM,UAAU,KAAK,QAAQ;AAC7B,WAAO,wEAAwE,KAAK,IAAI,KAAK,OAAO;AAAA,EACtG;AACF;AA/BE,cADW,cACJ,YAAW;AAClB,cAFW,cAEJ,WAAU;AACjB,cAHW,cAGJ,aAAY;"}
|
|
1
|
+
{"version":3,"file":"formats.es.js","sources":["../../../../src/modules/mathlive/formats.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\r\nimport type { Root } from 'parchment'\r\nimport Quill from 'quill'\r\n\r\nconst Parchment = Quill.import('parchment')\r\nexport type MathliveBlotMode = 'dialog' | 'only-read'\r\nexport class MathliveBlot extends Parchment.EmbedBlot {\r\n static blotName = 'mathlive'\r\n static tagName = 'math-field'\r\n static className = 'ql-math-field'\r\n mode: MathliveBlotMode\r\n\r\n static create(obj: { value: string, mode: MathliveBlotMode }) {\r\n const el = super.create() as MathfieldElement\r\n el.setAttribute('mode', obj.mode)\r\n el.classList.add('view')\r\n el.innerHTML = obj.value\r\n el.setValue(obj.value)\r\n return el\r\n }\r\n\r\n static value(domNode: MathfieldElement) {\r\n return {\r\n value: domNode.value,\r\n mode: domNode.getAttribute('mode'),\r\n }\r\n }\r\n\r\n constructor(scroll: Root, public domNode: MathfieldElement) {\r\n super(scroll, domNode)\r\n domNode.setAttribute('contenteditable', 'false')\r\n this.mode = (domNode.getAttribute('mode') || 'only-read') as MathliveBlotMode\r\n }\r\n\r\n html() {\r\n const formula = this.domNode.value\r\n return `<math-field class=\"ql-math-field view\" contenteditable=\"false\" mode=\"${this.mode}\">${formula}</math-field>`\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAIA,MAAM,YAAY,MAAM,OAAO,WAAW;AAEnC,MAAM,qBAAqB,UAAU,UAAU;AAAA,EAsBpD,YAAY,QAAqB,SAA2B;AAC1D,UAAM,QAAQ,OAAO;AAnBvB;AAkBiC,SAAA,UAAA;AAE/B,YAAQ,aAAa,mBAAmB,OAAO;AAC/C,SAAK,OAAQ,QAAQ,aAAa,MAAM,KAAK;AAAA,EAC/C;AAAA,EApBA,OAAO,OAAO,KAAgD;AAC5D,UAAM,KAAK,MAAM,OAAA;AACjB,OAAG,aAAa,QAAQ,IAAI,IAAI;AAChC,OAAG,UAAU,IAAI,MAAM;AACvB,OAAG,YAAY,IAAI;AACnB,OAAG,SAAS,IAAI,KAAK;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAA2B;AACtC,WAAO;AAAA,MACL,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ,aAAa,MAAM;AAAA,IAAA;AAAA,EAErC;AAAA,EAQA,OAAO;AACL,UAAM,UAAU,KAAK,QAAQ;AAC7B,WAAO,wEAAwE,KAAK,IAAI,KAAK,OAAO;AAAA,EACtG;AACF;AA/BE,cADW,cACJ,YAAW;AAClB,cAFW,cAEJ,WAAU;AACjB,cAHW,cAGJ,aAAY;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.es.js","sources":["../../../../src/modules/mathlive/tooltip.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\nimport type { Bounds } from 'quill/core/selection'\nimport type TypeTooltip from 'quill/ui/tooltip'\nimport Quill from 'quill'\nimport { isString } from '../../utils/is'\n\nconst Delta = Quill.import('delta')\nconst Tooltip = Quill.import('ui/tooltip') as typeof TypeTooltip\nexport class MathliveTooltip extends Tooltip {\n static TEMPLATE = ``\n\n mathliveDom: MathfieldElement\n editValue?: string\n\n constructor(quill: Quill, boundsContainer?: HTMLElement) {\n super(quill, boundsContainer)\n this.mathliveDom = document.createElement('math-field') as MathfieldElement\n this.mathliveDom.classList.add('ql-math-field')\n this.root.appendChild(this.mathliveDom)\n this.root.classList.add('math-field-tooltip')\n this.listen()\n }\n\n listen() {\n this.mathliveDom.addEventListener('blur', (event) => {\n this.hide()\n })\n this.root.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n this.save()\n }\n else if (event.key === 'Escape') {\n event.preventDefault()\n this.cancel()\n }\n })\n }\n\n cancel() {\n this.hide()\n this.restoreFocus()\n }\n\n edit(value?: string) {\n this.editValue = value\n this.root.classList.remove('ql-hidden')\n this.root.classList.add('ql-editing')\n this.mathliveDom.setValue(value || '')\n const range = this.quill.getSelection()\n const bounds = range ? this.quill.getBounds(range) : null\n if (bounds != null) {\n this.position(bounds)\n }\n this.show()\n this.mathliveDom.focus()\n }\n\n restoreFocus() {\n this.mathliveDom.blur()\n this.quill.focus({ preventScroll: true })\n }\n\n save() {\n const range = this.quill.getSelection(true)\n const inputValue = this.mathliveDom.value\n if (!inputValue) return\n const contentData = this.quill.getContents(range.index, 1).ops[0].insert\n let deleteCount = 0\n if (!isString(contentData) && contentData.mathlive) {\n deleteCount += 1\n }\n const delta = new Delta()\n .retain(range.index)\n .delete(Math.max(deleteCount, range.length))\n .insert({ mathlive: { value: inputValue, mode: 'dialog' } })\n this.quill.updateContents(delta, Quill.sources.USER)\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT)\n this.hide()\n }\n\n position(reference: Bounds) {\n const adjustedReference = { ...reference }\n adjustedReference.left = reference.left + this.root.offsetWidth / 2 - reference.width / 2\n return super.position(adjustedReference)\n }\n}\n"],"names":[],"mappings":";;;;;AAMA,MAAM,QAAQ,MAAM,OAAO,OAAO;AAClC,MAAM,UAAU,MAAM,OAAO,YAAY;AAClC,MAAM,wBAAwB,QAAQ;AAAA,EAM3C,YAAY,OAAc,iBAA+B;AACvD,UAAM,OAAO,eAAe;AAJ9B;AACA;AAIE,SAAK,cAAc,SAAS,cAAc,YAAY;AACtD,SAAK,YAAY,UAAU,IAAI,eAAe;AAC9C,SAAK,KAAK,YAAY,KAAK,WAAW;AACtC,SAAK,KAAK,UAAU,IAAI,oBAAoB;AAC5C,SAAK,OAAA;AAAA,EACP;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,iBAAiB,QAAQ,CAAC,UAAU;AACnD,WAAK,KAAA;AAAA,IACP,CAAC;AACD,SAAK,KAAK,iBAAiB,WAAW,CAAC,UAAU;AAC/C,UAAI,MAAM,QAAQ,SAAS;AACzB,cAAM,eAAA;AACN,aAAK,KAAA;AAAA,MACP,WACS,MAAM,QAAQ,UAAU;AAC/B,cAAM,eAAA;AACN,aAAK,OAAA;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS;AACP,SAAK,KAAA;AACL,SAAK,aAAA;AAAA,EACP;AAAA,EAEA,KAAK,OAAgB;AACnB,SAAK,YAAY;AACjB,SAAK,KAAK,UAAU,OAAO,WAAW;AACtC,SAAK,KAAK,UAAU,IAAI,YAAY;AACpC,SAAK,YAAY,SAAS,SAAS,EAAE;AACrC,UAAM,QAAQ,KAAK,MAAM,aAAA;AACzB,UAAM,SAAS,QAAQ,KAAK,MAAM,UAAU,KAAK,IAAI;AACrD,QAAI,UAAU,MAAM;AAClB,WAAK,SAAS,MAAM;AAAA,IACtB;AACA,SAAK,KAAA;AACL,SAAK,YAAY,MAAA;AAAA,EACnB;AAAA,EAEA,eAAe;AACb,SAAK,YAAY,KAAA;AACjB,SAAK,MAAM,MAAM,EAAE,eAAe,MAAM;AAAA,EAC1C;AAAA,EAEA,OAAO;AACL,UAAM,QAAQ,KAAK,MAAM,aAAa,IAAI;AAC1C,UAAM,aAAa,KAAK,YAAY;AACpC,QAAI,CAAC,WAAY;AACjB,UAAM,cAAc,KAAK,MAAM,YAAY,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;AAClE,QAAI,cAAc;AAClB,QAAI,CAAC,SAAS,WAAW,KAAK,YAAY,UAAU;AAClD,qBAAe;AAAA,IACjB;AACA,UAAM,QAAQ,IAAI,MAAA,EACf,OAAO,MAAM,KAAK,EAClB,OAAO,KAAK,IAAI,aAAa,MAAM,MAAM,CAAC,EAC1C,OAAO,EAAE,UAAU,EAAE,OAAO,YAAY,MAAM,SAAA,GAAY;AAC7D,SAAK,MAAM,eAAe,OAAO,MAAM,QAAQ,IAAI;AACnD,SAAK,MAAM,aAAa,MAAM,QAAQ,GAAG,MAAM,QAAQ,MAAM;AAC7D,SAAK,KAAA;AAAA,EACP;AAAA,EAEA,SAAS,WAAmB;AAC1B,UAAM,oBAAoB,EAAE,GAAG,UAAA;AAC/B,sBAAkB,OAAO,UAAU,OAAO,KAAK,KAAK,cAAc,IAAI,UAAU,QAAQ;AACxF,WAAO,MAAM,SAAS,iBAAiB;AAAA,EACzC;AACF;AA7EE,cADW,iBACJ,YAAW;"}
|
|
1
|
+
{"version":3,"file":"tooltip.es.js","sources":["../../../../src/modules/mathlive/tooltip.ts"],"sourcesContent":["import type { MathfieldElement } from 'mathlive'\r\nimport type { Bounds } from 'quill/core/selection'\r\nimport type TypeTooltip from 'quill/ui/tooltip'\r\nimport Quill from 'quill'\r\nimport { isString } from '../../utils/is'\r\n\r\nconst Delta = Quill.import('delta')\r\nconst Tooltip = Quill.import('ui/tooltip') as typeof TypeTooltip\r\nexport class MathliveTooltip extends Tooltip {\r\n static TEMPLATE = ``\r\n\r\n mathliveDom: MathfieldElement\r\n editValue?: string\r\n\r\n constructor(quill: Quill, boundsContainer?: HTMLElement) {\r\n super(quill, boundsContainer)\r\n this.mathliveDom = document.createElement('math-field') as MathfieldElement\r\n this.mathliveDom.classList.add('ql-math-field')\r\n this.root.appendChild(this.mathliveDom)\r\n this.root.classList.add('math-field-tooltip')\r\n this.listen()\r\n }\r\n\r\n listen() {\r\n this.mathliveDom.addEventListener('blur', (event) => {\r\n this.hide()\r\n })\r\n this.root.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault()\r\n this.save()\r\n }\r\n else if (event.key === 'Escape') {\r\n event.preventDefault()\r\n this.cancel()\r\n }\r\n })\r\n }\r\n\r\n cancel() {\r\n this.hide()\r\n this.restoreFocus()\r\n }\r\n\r\n edit(value?: string) {\r\n this.editValue = value\r\n this.root.classList.remove('ql-hidden')\r\n this.root.classList.add('ql-editing')\r\n this.mathliveDom.setValue(value || '')\r\n const range = this.quill.getSelection()\r\n const bounds = range ? this.quill.getBounds(range) : null\r\n if (bounds != null) {\r\n this.position(bounds)\r\n }\r\n this.show()\r\n this.mathliveDom.focus()\r\n }\r\n\r\n restoreFocus() {\r\n this.mathliveDom.blur()\r\n this.quill.focus({ preventScroll: true })\r\n }\r\n\r\n save() {\r\n const range = this.quill.getSelection(true)\r\n const inputValue = this.mathliveDom.value\r\n if (!inputValue) return\r\n const contentData = this.quill.getContents(range.index, 1).ops[0].insert\r\n let deleteCount = 0\r\n if (!isString(contentData) && contentData.mathlive) {\r\n deleteCount += 1\r\n }\r\n const delta = new Delta()\r\n .retain(range.index)\r\n .delete(Math.max(deleteCount, range.length))\r\n .insert({ mathlive: { value: inputValue, mode: 'dialog' } })\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT)\r\n this.hide()\r\n }\r\n\r\n position(reference: Bounds) {\r\n const adjustedReference = { ...reference }\r\n adjustedReference.left = reference.left + this.root.offsetWidth / 2 - reference.width / 2\r\n return super.position(adjustedReference)\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAMA,MAAM,QAAQ,MAAM,OAAO,OAAO;AAClC,MAAM,UAAU,MAAM,OAAO,YAAY;AAClC,MAAM,wBAAwB,QAAQ;AAAA,EAM3C,YAAY,OAAc,iBAA+B;AACvD,UAAM,OAAO,eAAe;AAJ9B;AACA;AAIE,SAAK,cAAc,SAAS,cAAc,YAAY;AACtD,SAAK,YAAY,UAAU,IAAI,eAAe;AAC9C,SAAK,KAAK,YAAY,KAAK,WAAW;AACtC,SAAK,KAAK,UAAU,IAAI,oBAAoB;AAC5C,SAAK,OAAA;AAAA,EACP;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,iBAAiB,QAAQ,CAAC,UAAU;AACnD,WAAK,KAAA;AAAA,IACP,CAAC;AACD,SAAK,KAAK,iBAAiB,WAAW,CAAC,UAAU;AAC/C,UAAI,MAAM,QAAQ,SAAS;AACzB,cAAM,eAAA;AACN,aAAK,KAAA;AAAA,MACP,WACS,MAAM,QAAQ,UAAU;AAC/B,cAAM,eAAA;AACN,aAAK,OAAA;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,SAAS;AACP,SAAK,KAAA;AACL,SAAK,aAAA;AAAA,EACP;AAAA,EAEA,KAAK,OAAgB;AACnB,SAAK,YAAY;AACjB,SAAK,KAAK,UAAU,OAAO,WAAW;AACtC,SAAK,KAAK,UAAU,IAAI,YAAY;AACpC,SAAK,YAAY,SAAS,SAAS,EAAE;AACrC,UAAM,QAAQ,KAAK,MAAM,aAAA;AACzB,UAAM,SAAS,QAAQ,KAAK,MAAM,UAAU,KAAK,IAAI;AACrD,QAAI,UAAU,MAAM;AAClB,WAAK,SAAS,MAAM;AAAA,IACtB;AACA,SAAK,KAAA;AACL,SAAK,YAAY,MAAA;AAAA,EACnB;AAAA,EAEA,eAAe;AACb,SAAK,YAAY,KAAA;AACjB,SAAK,MAAM,MAAM,EAAE,eAAe,MAAM;AAAA,EAC1C;AAAA,EAEA,OAAO;AACL,UAAM,QAAQ,KAAK,MAAM,aAAa,IAAI;AAC1C,UAAM,aAAa,KAAK,YAAY;AACpC,QAAI,CAAC,WAAY;AACjB,UAAM,cAAc,KAAK,MAAM,YAAY,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;AAClE,QAAI,cAAc;AAClB,QAAI,CAAC,SAAS,WAAW,KAAK,YAAY,UAAU;AAClD,qBAAe;AAAA,IACjB;AACA,UAAM,QAAQ,IAAI,MAAA,EACf,OAAO,MAAM,KAAK,EAClB,OAAO,KAAK,IAAI,aAAa,MAAM,MAAM,CAAC,EAC1C,OAAO,EAAE,UAAU,EAAE,OAAO,YAAY,MAAM,SAAA,GAAY;AAC7D,SAAK,MAAM,eAAe,OAAO,MAAM,QAAQ,IAAI;AACnD,SAAK,MAAM,aAAa,MAAM,QAAQ,GAAG,MAAM,QAAQ,MAAM;AAC7D,SAAK,KAAA;AAAA,EACP;AAAA,EAEA,SAAS,WAAmB;AAC1B,UAAM,oBAAoB,EAAE,GAAG,UAAA;AAC/B,sBAAkB,OAAO,UAAU,OAAO,KAAK,KAAK,cAAc,IAAI,UAAU,QAAQ;AACxF,WAAO,MAAM,SAAS,iBAAiB;AAAA,EACzC;AACF;AA7EE,cADW,iBACJ,YAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.es.js","sources":["../../../../src/modules/mention/constants.ts"],"sourcesContent":["export const ON_MENTION_LINK_REMOVE = 'mention-link/remove'\nexport const MENTION_CHAR = 'mentionChar'\nexport const DEFAULT_MENTION_CHAR = '@'\n"],"names":[],"mappings":"AAAO,MAAM,yBAAyB;AAC/B,MAAM,eAAe;AACrB,MAAM,uBAAuB;"}
|
|
1
|
+
{"version":3,"file":"constants.es.js","sources":["../../../../src/modules/mention/constants.ts"],"sourcesContent":["export const ON_MENTION_LINK_REMOVE = 'mention-link/remove'\r\nexport const MENTION_CHAR = 'mentionChar'\r\nexport const DEFAULT_MENTION_CHAR = '@'\r\n"],"names":[],"mappings":"AAAO,MAAM,yBAAyB;AAC/B,MAAM,eAAe;AACrB,MAAM,uBAAuB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mention-link.es.js","sources":["../../../../src/modules/mention/mention-link.ts"],"sourcesContent":["import type TypeEmbed from 'quill/blots/embed'\nimport type TypeScroll from 'quill/blots/scroll'\nimport Quill from 'quill'\nimport { DEFAULT_MENTION_CHAR, MENTION_CHAR, ON_MENTION_LINK_REMOVE } from './constants'\n\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\n\nexport class MentionLink extends Embed {\n static blotName: string\n static tagName: string\n static className: string\n mentionData: any\n\n static create(data) {\n let node: HTMLElement\n if (data.link) {\n node = document.createElement('a')\n node.setAttribute('href', data.link)\n node.setAttribute('target', data.target)\n }\n else {\n node = document.createElement(this.tagName)\n }\n node.classList.add(this.className)\n node.dataset.mentionId = data.name || (data.mention && data.mention[data.searchKey || 'name']) || ''\n node.setAttribute('title', data.text)\n node.setAttribute(MENTION_CHAR, data.char)\n node.textContent = data.char + data.text\n return node\n }\n\n static value(domNode: HTMLElement) {\n const value: Record<string, any> = {\n char: domNode.getAttribute(MENTION_CHAR) || DEFAULT_MENTION_CHAR,\n text: domNode.getAttribute('title'),\n name: domNode.dataset.mentionId,\n }\n if (domNode.tagName.toLowerCase() === 'a' && domNode.hasAttribute('href')) {\n value.link = domNode.getAttribute('href')\n value.target = domNode.getAttribute('target')\n }\n return value\n }\n\n constructor(public scroll: TypeScroll, domNode, data) {\n super(scroll, domNode)\n this.mentionData = data\n }\n\n value() {\n // fix: 将@提醒内容加入到 Delta 里,以解决输入空格,@提醒内容被删除的问题\n // return ' ';\n return super.value()\n }\n\n remove() {\n this.scroll.emitter.emit(ON_MENTION_LINK_REMOVE, this.mentionData)\n return super.remove()\n }\n}\n\nMentionLink.blotName = 'mention'\nMentionLink.tagName = 'span'\nMentionLink.className = 'ql-mention-link'\n"],"names":[],"mappings":";;;;;AAKA,MAAM,QAAQ,MAAM,OAAO,aAAa;AAEjC,MAAM,oBAAoB,MAAM;AAAA,EAqCrC,YAAmB,QAAoB,SAAS,MAAM;AACpD,UAAM,QAAQ,OAAO;AAlCvB;AAiCmB,SAAA,SAAA;AAEjB,SAAK,cAAc;AAAA,EACrB;AAAA,EAlCA,OAAO,OAAO,MAAM;AAClB,QAAI;AACJ,QAAI,KAAK,MAAM;AACb,aAAO,SAAS,cAAc,GAAG;AACjC,WAAK,aAAa,QAAQ,KAAK,IAAI;AACnC,WAAK,aAAa,UAAU,KAAK,MAAM;AAAA,IACzC,OACK;AACH,aAAO,SAAS,cAAc,KAAK,OAAO;AAAA,IAC5C;AACA,SAAK,UAAU,IAAI,KAAK,SAAS;AACjC,SAAK,QAAQ,YAAY,KAAK,QAAS,KAAK,WAAW,KAAK,QAAQ,KAAK,aAAa,MAAM,KAAM;AAClG,SAAK,aAAa,SAAS,KAAK,IAAI;AACpC,SAAK,aAAa,cAAc,KAAK,IAAI;AACzC,SAAK,cAAc,KAAK,OAAO,KAAK;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAsB;AACjC,UAAM,QAA6B;AAAA,MACjC,MAAM,QAAQ,aAAa,YAAY,KAAK;AAAA,MAC5C,MAAM,QAAQ,aAAa,OAAO;AAAA,MAClC,MAAM,QAAQ,QAAQ;AAAA,IAAA;AAExB,QAAI,QAAQ,QAAQ,YAAA,MAAkB,OAAO,QAAQ,aAAa,MAAM,GAAG;AACzE,YAAM,OAAO,QAAQ,aAAa,MAAM;AACxC,YAAM,SAAS,QAAQ,aAAa,QAAQ;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAAA,EAOA,QAAQ;AAGN,WAAO,MAAM,MAAA;AAAA,EACf;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,wBAAwB,KAAK,WAAW;AACjE,WAAO,MAAM,OAAA;AAAA,EACf;AACF;AAnDE,cADW,aACJ;AACP,cAFW,aAEJ;AACP,cAHW,aAGJ;AAmDT,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,YAAY;"}
|
|
1
|
+
{"version":3,"file":"mention-link.es.js","sources":["../../../../src/modules/mention/mention-link.ts"],"sourcesContent":["import type TypeEmbed from 'quill/blots/embed'\r\nimport type TypeScroll from 'quill/blots/scroll'\r\nimport Quill from 'quill'\r\nimport { DEFAULT_MENTION_CHAR, MENTION_CHAR, ON_MENTION_LINK_REMOVE } from './constants'\r\n\r\nconst Embed = Quill.import('blots/embed') as typeof TypeEmbed\r\n\r\nexport class MentionLink extends Embed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n mentionData: any\r\n\r\n static create(data) {\r\n let node: HTMLElement\r\n if (data.link) {\r\n node = document.createElement('a')\r\n node.setAttribute('href', data.link)\r\n node.setAttribute('target', data.target)\r\n }\r\n else {\r\n node = document.createElement(this.tagName)\r\n }\r\n node.classList.add(this.className)\r\n node.dataset.mentionId = data.name || (data.mention && data.mention[data.searchKey || 'name']) || ''\r\n node.setAttribute('title', data.text)\r\n node.setAttribute(MENTION_CHAR, data.char)\r\n node.textContent = data.char + data.text\r\n return node\r\n }\r\n\r\n static value(domNode: HTMLElement) {\r\n const value: Record<string, any> = {\r\n char: domNode.getAttribute(MENTION_CHAR) || DEFAULT_MENTION_CHAR,\r\n text: domNode.getAttribute('title'),\r\n name: domNode.dataset.mentionId,\r\n }\r\n if (domNode.tagName.toLowerCase() === 'a' && domNode.hasAttribute('href')) {\r\n value.link = domNode.getAttribute('href')\r\n value.target = domNode.getAttribute('target')\r\n }\r\n return value\r\n }\r\n\r\n constructor(public scroll: TypeScroll, domNode, data) {\r\n super(scroll, domNode)\r\n this.mentionData = data\r\n }\r\n\r\n value() {\r\n // fix: 将@提醒内容加入到 Delta 里,以解决输入空格,@提醒内容被删除的问题\r\n // return ' ';\r\n return super.value()\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_MENTION_LINK_REMOVE, this.mentionData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nMentionLink.blotName = 'mention'\r\nMentionLink.tagName = 'span'\r\nMentionLink.className = 'ql-mention-link'\r\n"],"names":[],"mappings":";;;;;AAKA,MAAM,QAAQ,MAAM,OAAO,aAAa;AAEjC,MAAM,oBAAoB,MAAM;AAAA,EAqCrC,YAAmB,QAAoB,SAAS,MAAM;AACpD,UAAM,QAAQ,OAAO;AAlCvB;AAiCmB,SAAA,SAAA;AAEjB,SAAK,cAAc;AAAA,EACrB;AAAA,EAlCA,OAAO,OAAO,MAAM;AAClB,QAAI;AACJ,QAAI,KAAK,MAAM;AACb,aAAO,SAAS,cAAc,GAAG;AACjC,WAAK,aAAa,QAAQ,KAAK,IAAI;AACnC,WAAK,aAAa,UAAU,KAAK,MAAM;AAAA,IACzC,OACK;AACH,aAAO,SAAS,cAAc,KAAK,OAAO;AAAA,IAC5C;AACA,SAAK,UAAU,IAAI,KAAK,SAAS;AACjC,SAAK,QAAQ,YAAY,KAAK,QAAS,KAAK,WAAW,KAAK,QAAQ,KAAK,aAAa,MAAM,KAAM;AAClG,SAAK,aAAa,SAAS,KAAK,IAAI;AACpC,SAAK,aAAa,cAAc,KAAK,IAAI;AACzC,SAAK,cAAc,KAAK,OAAO,KAAK;AACpC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAsB;AACjC,UAAM,QAA6B;AAAA,MACjC,MAAM,QAAQ,aAAa,YAAY,KAAK;AAAA,MAC5C,MAAM,QAAQ,aAAa,OAAO;AAAA,MAClC,MAAM,QAAQ,QAAQ;AAAA,IAAA;AAExB,QAAI,QAAQ,QAAQ,YAAA,MAAkB,OAAO,QAAQ,aAAa,MAAM,GAAG;AACzE,YAAM,OAAO,QAAQ,aAAa,MAAM;AACxC,YAAM,SAAS,QAAQ,aAAa,QAAQ;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAAA,EAOA,QAAQ;AAGN,WAAO,MAAM,MAAA;AAAA,EACf;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,wBAAwB,KAAK,WAAW;AACjE,WAAO,MAAM,OAAA;AAAA,EACf;AACF;AAnDE,cADW,aACJ;AACP,cAFW,aAEJ;AACP,cAHW,aAGJ;AAmDT,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,YAAY;"}
|