@opentiny/fluent-editor 3.19.0 → 3.19.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -96
- package/es/config/base64-image.es.js +9 -0
- package/es/config/base64-image.es.js.map +1 -0
- package/es/config/editor.config.es.js +86 -0
- package/es/config/editor.config.es.js.map +1 -0
- package/es/config/editor.utils.es.js +141 -0
- package/es/config/editor.utils.es.js.map +1 -0
- package/es/config/i18n/en-us.es.js +90 -0
- package/es/config/i18n/en-us.es.js.map +1 -0
- package/es/config/i18n/zh-cn.es.js +90 -0
- package/es/config/i18n/zh-cn.es.js.map +1 -0
- package/es/config/icons.config.es.js +301 -0
- package/es/config/icons.config.es.js.map +1 -0
- package/es/config/types/additional-toolbar-item.interface.es.js +2 -0
- package/es/config/types/additional-toolbar-item.interface.es.js.map +1 -0
- package/es/config/types/content-change.interface.es.js +2 -0
- package/es/config/types/content-change.interface.es.js.map +1 -0
- package/es/config/types/content-save.interface.es.js +2 -0
- package/es/config/types/content-save.interface.es.js.map +1 -0
- package/es/config/types/counter-option.interface.es.js +2 -0
- package/es/config/types/counter-option.interface.es.js.map +1 -0
- package/es/config/types/editor-config.interface.es.js +2 -0
- package/es/config/types/editor-config.interface.es.js.map +1 -0
- package/es/config/types/editor-modules.interface.es.js +2 -0
- package/es/config/types/editor-modules.interface.es.js.map +1 -0
- package/es/config/types/file-operation.interface.es.js +2 -0
- package/es/config/types/file-operation.interface.es.js.map +1 -0
- package/es/config/types/focus-change.interface.es.js +2 -0
- package/es/config/types/focus-change.interface.es.js.map +1 -0
- package/es/config/types/fullscreen-module.interface.es.js +2 -0
- package/es/config/types/fullscreen-module.interface.es.js.map +1 -0
- package/es/config/types/help-panel-item.interface.es.js +2 -0
- package/es/config/types/help-panel-item.interface.es.js.map +1 -0
- package/es/config/types/help-panel-option.interface.es.js +2 -0
- package/es/config/types/help-panel-option.interface.es.js.map +1 -0
- package/es/config/types/image-module.interface.es.js +2 -0
- package/es/config/types/image-module.interface.es.js.map +1 -0
- package/es/config/types/image-upload.interface.es.js +2 -0
- package/es/config/types/image-upload.interface.es.js.map +1 -0
- package/es/config/types/index.es.js +23 -0
- package/es/config/types/index.es.js.map +1 -0
- package/es/config/types/load-on-demand-module.interface.es.js +2 -0
- package/es/config/types/load-on-demand-module.interface.es.js.map +1 -0
- package/es/config/types/mention-module.interface.es.js +2 -0
- package/es/config/types/mention-module.interface.es.js.map +1 -0
- package/es/config/types/paste-change.interface.es.js +2 -0
- package/es/config/types/paste-change.interface.es.js.map +1 -0
- package/es/config/types/quick-menu-module.interface.es.js +2 -0
- package/es/config/types/quick-menu-module.interface.es.js.map +1 -0
- package/es/config/types/range.interface.es.js +2 -0
- package/es/config/types/range.interface.es.js.map +1 -0
- package/es/config/types/registry-options.interface.es.js +2 -0
- package/es/config/types/registry-options.interface.es.js.map +1 -0
- package/es/config/types/selection-change.interface.es.js +2 -0
- package/es/config/types/selection-change.interface.es.js.map +1 -0
- package/es/config/types/toolbar-item.interface.es.js +2 -0
- package/es/config/types/toolbar-item.interface.es.js.map +1 -0
- package/es/config/types/type.es.js +2 -0
- package/es/config/types/type.es.js.map +1 -0
- package/es/config/types/validate-error.interface.es.js +2 -0
- package/es/config/types/validate-error.interface.es.js.map +1 -0
- package/es/config.es.js +168 -0
- package/es/config.es.js.map +1 -0
- package/es/counter/index.es.js +60 -0
- package/es/counter/index.es.js.map +1 -0
- package/es/custom-clipboard.es.js +469 -0
- package/es/custom-clipboard.es.js.map +1 -0
- package/es/custom-image/BlotFormatter.es.js +136 -0
- package/es/custom-image/BlotFormatter.es.js.map +1 -0
- package/es/custom-image/Options.es.js +95 -0
- package/es/custom-image/Options.es.js.map +1 -0
- package/es/custom-image/actions/Action.es.js +15 -0
- package/es/custom-image/actions/Action.es.js.map +1 -0
- package/es/custom-image/actions/CustomResizeAction.es.js +158 -0
- package/es/custom-image/actions/CustomResizeAction.es.js.map +1 -0
- package/es/custom-image/actions/DeleteAction.es.js +31 -0
- package/es/custom-image/actions/DeleteAction.es.js.map +1 -0
- package/es/custom-image/image.es.js +95 -0
- package/es/custom-image/image.es.js.map +1 -0
- package/es/custom-image/specs/BlotSpec.es.js +27 -0
- package/es/custom-image/specs/BlotSpec.es.js.map +1 -0
- package/es/custom-image/specs/CustomImageSpec.es.js +117 -0
- package/es/custom-image/specs/CustomImageSpec.es.js.map +1 -0
- package/es/custom-image/specs/ImageSpec.es.js +29 -0
- package/es/custom-image/specs/ImageSpec.es.js.map +1 -0
- package/es/custom-uploader.es.js +161 -0
- package/es/custom-uploader.es.js.map +1 -0
- package/es/emoji/emoji-list/index.es.js +5 -0
- package/es/emoji/emoji-list/index.es.js.map +1 -0
- package/es/emoji/emoji-list/people.es.js +114 -0
- package/es/emoji/emoji-list/people.es.js.map +1 -0
- package/es/emoji/emoji-list.es.js +9 -0
- package/es/emoji/emoji-list.es.js.map +1 -0
- package/es/emoji/emoji-map.es.js +9 -0
- package/es/emoji/emoji-map.es.js.map +1 -0
- package/es/emoji/formats/emoji-blot.es.js +41 -0
- package/es/emoji/formats/emoji-blot.es.js.map +1 -0
- package/es/emoji/index.es.js +8 -0
- package/es/emoji/index.es.js.map +1 -0
- package/es/emoji/modules/emoji.es.js +248 -0
- package/es/emoji/modules/emoji.es.js.map +1 -0
- package/es/emoji/modules/toolbar-emoji.es.js +153 -0
- package/es/emoji/modules/toolbar-emoji.es.js.map +1 -0
- package/es/emoji/utils.es.js +19 -0
- package/es/emoji/utils.es.js.map +1 -0
- package/es/file/formats/file.es.js +56 -0
- package/es/file/formats/file.es.js.map +1 -0
- package/es/file/index.es.js +32 -0
- package/es/file/index.es.js.map +1 -0
- package/es/file/modules/file-bar.es.js +123 -0
- package/es/file/modules/file-bar.es.js.map +1 -0
- package/es/fluent-editor.es.js +163 -0
- package/es/fluent-editor.es.js.map +1 -0
- package/es/format-painter/index.es.js +66 -0
- package/es/format-painter/index.es.js.map +1 -0
- package/es/global-link/constants.es.js +9 -0
- package/es/global-link/constants.es.js.map +1 -0
- package/es/global-link/formats/customer-widget-link.es.js +28 -0
- package/es/global-link/formats/customer-widget-link.es.js.map +1 -0
- package/es/global-link/formats/doc-link.es.js +42 -0
- package/es/global-link/formats/doc-link.es.js.map +1 -0
- package/es/global-link/formats/wiki-link.es.js +34 -0
- package/es/global-link/formats/wiki-link.es.js.map +1 -0
- package/es/global-link/formats/work-item-link.es.js +36 -0
- package/es/global-link/formats/work-item-link.es.js.map +1 -0
- package/es/global-link/global-link-panel.es.js +2 -0
- package/es/global-link/global-link-panel.es.js.map +1 -0
- package/es/global-link/index.es.js +139 -0
- package/es/global-link/index.es.js.map +1 -0
- package/es/global-link/utils/createTable.es.js +50 -0
- package/es/global-link/utils/createTable.es.js.map +1 -0
- package/es/index.es.js +5 -0
- package/es/index.es.js.map +1 -0
- package/es/lineheight.es.js +11 -0
- package/es/lineheight.es.js.map +1 -0
- package/es/link/formats/link.es.js +34 -0
- package/es/link/formats/link.es.js.map +1 -0
- package/es/link/index.es.js +32 -0
- package/es/link/index.es.js.map +1 -0
- package/es/link/modules/tooltip.es.js +275 -0
- package/es/link/modules/tooltip.es.js.map +1 -0
- package/es/mention/Mention.es.js +329 -0
- package/es/mention/Mention.es.js.map +1 -0
- package/es/mention/MentionLink.es.js +37 -0
- package/es/mention/MentionLink.es.js.map +1 -0
- package/es/mention/constants.es.js +9 -0
- package/es/mention/constants.es.js.map +1 -0
- package/es/quick-menu/index.es.js +82 -0
- package/es/quick-menu/index.es.js.map +1 -0
- package/es/screenshot/index.es.js +147 -0
- package/es/screenshot/index.es.js.map +1 -0
- package/es/soft-break/index.es.js +23 -0
- package/es/soft-break/index.es.js.map +1 -0
- package/es/strike/index.es.js +12 -0
- package/es/strike/index.es.js.map +1 -0
- package/es/syntax/index.es.js +30 -0
- package/es/syntax/index.es.js.map +1 -0
- package/es/table/better-table.es.js +434 -0
- package/es/table/better-table.es.js.map +1 -0
- package/es/table/formats/header.es.js +94 -0
- package/es/table/formats/header.es.js.map +1 -0
- package/es/table/formats/list.es.js +163 -0
- package/es/table/formats/list.es.js.map +1 -0
- package/es/table/formats/table.es.js +970 -0
- package/es/table/formats/table.es.js.map +1 -0
- package/es/table/modules/table-column-tool.es.js +400 -0
- package/es/table/modules/table-column-tool.es.js.map +1 -0
- package/es/table/modules/table-operation-menu.es.js +457 -0
- package/es/table/modules/table-operation-menu.es.js.map +1 -0
- package/es/table/modules/table-scroll-bar.es.js +190 -0
- package/es/table/modules/table-scroll-bar.es.js.map +1 -0
- package/es/table/modules/table-selection.es.js +306 -0
- package/es/table/modules/table-selection.es.js.map +1 -0
- package/es/table/table-config.es.js +74 -0
- package/es/table/table-config.es.js.map +1 -0
- package/es/table/utils/index.es.js +54 -0
- package/es/table/utils/index.es.js.map +1 -0
- package/es/table/utils/node-matchers.es.js +292 -0
- package/es/table/utils/node-matchers.es.js.map +1 -0
- package/es/toolbar/better-picker.es.js +307 -0
- package/es/toolbar/better-picker.es.js.map +1 -0
- package/es/toolbar/index.es.js +139 -0
- package/es/toolbar/index.es.js.map +1 -0
- package/es/types/vue.d.es.js +2 -0
- package/es/types/vue.d.es.js.map +1 -0
- package/es/utils/debounce.es.js +112 -0
- package/es/utils/debounce.es.js.map +1 -0
- package/es/utils/method.es.js +68 -0
- package/es/utils/method.es.js.map +1 -0
- package/es/video/index.es.js +49 -0
- package/es/video/index.es.js.map +1 -0
- package/lib/config/base64-image.cjs.js +9 -0
- package/lib/config/base64-image.cjs.js.map +1 -0
- package/lib/config/editor.config.cjs.js +86 -0
- package/lib/config/editor.config.cjs.js.map +1 -0
- package/lib/config/editor.utils.cjs.js +141 -0
- package/lib/config/editor.utils.cjs.js.map +1 -0
- package/lib/config/i18n/en-us.cjs.js +90 -0
- package/lib/config/i18n/en-us.cjs.js.map +1 -0
- package/lib/config/i18n/zh-cn.cjs.js +90 -0
- package/lib/config/i18n/zh-cn.cjs.js.map +1 -0
- package/lib/config/icons.config.cjs.js +301 -0
- package/lib/config/icons.config.cjs.js.map +1 -0
- package/lib/config/types/additional-toolbar-item.interface.cjs.js +2 -0
- package/lib/config/types/additional-toolbar-item.interface.cjs.js.map +1 -0
- package/lib/config/types/content-change.interface.cjs.js +2 -0
- package/lib/config/types/content-change.interface.cjs.js.map +1 -0
- package/lib/config/types/content-save.interface.cjs.js +2 -0
- package/lib/config/types/content-save.interface.cjs.js.map +1 -0
- package/lib/config/types/counter-option.interface.cjs.js +2 -0
- package/lib/config/types/counter-option.interface.cjs.js.map +1 -0
- package/lib/config/types/editor-config.interface.cjs.js +2 -0
- package/lib/config/types/editor-config.interface.cjs.js.map +1 -0
- package/lib/config/types/editor-modules.interface.cjs.js +2 -0
- package/lib/config/types/editor-modules.interface.cjs.js.map +1 -0
- package/lib/config/types/file-operation.interface.cjs.js +2 -0
- package/lib/config/types/file-operation.interface.cjs.js.map +1 -0
- package/lib/config/types/focus-change.interface.cjs.js +2 -0
- package/lib/config/types/focus-change.interface.cjs.js.map +1 -0
- package/lib/config/types/fullscreen-module.interface.cjs.js +2 -0
- package/lib/config/types/fullscreen-module.interface.cjs.js.map +1 -0
- package/lib/config/types/help-panel-item.interface.cjs.js +2 -0
- package/lib/config/types/help-panel-item.interface.cjs.js.map +1 -0
- package/lib/config/types/help-panel-option.interface.cjs.js +2 -0
- package/lib/config/types/help-panel-option.interface.cjs.js.map +1 -0
- package/lib/config/types/image-module.interface.cjs.js +2 -0
- package/lib/config/types/image-module.interface.cjs.js.map +1 -0
- package/lib/config/types/image-upload.interface.cjs.js +2 -0
- package/lib/config/types/image-upload.interface.cjs.js.map +1 -0
- package/lib/config/types/index.cjs.js +24 -0
- package/lib/config/types/index.cjs.js.map +1 -0
- package/lib/config/types/load-on-demand-module.interface.cjs.js +2 -0
- package/lib/config/types/load-on-demand-module.interface.cjs.js.map +1 -0
- package/lib/config/types/mention-module.interface.cjs.js +2 -0
- package/lib/config/types/mention-module.interface.cjs.js.map +1 -0
- package/lib/config/types/paste-change.interface.cjs.js +2 -0
- package/lib/config/types/paste-change.interface.cjs.js.map +1 -0
- package/lib/config/types/quick-menu-module.interface.cjs.js +2 -0
- package/lib/config/types/quick-menu-module.interface.cjs.js.map +1 -0
- package/lib/config/types/range.interface.cjs.js +2 -0
- package/lib/config/types/range.interface.cjs.js.map +1 -0
- package/lib/config/types/registry-options.interface.cjs.js +2 -0
- package/lib/config/types/registry-options.interface.cjs.js.map +1 -0
- package/lib/config/types/selection-change.interface.cjs.js +2 -0
- package/lib/config/types/selection-change.interface.cjs.js.map +1 -0
- package/lib/config/types/toolbar-item.interface.cjs.js +2 -0
- package/lib/config/types/toolbar-item.interface.cjs.js.map +1 -0
- package/lib/config/types/type.cjs.js +2 -0
- package/lib/config/types/type.cjs.js.map +1 -0
- package/lib/config/types/validate-error.interface.cjs.js +2 -0
- package/lib/config/types/validate-error.interface.cjs.js.map +1 -0
- package/lib/config.cjs.js +168 -0
- package/lib/config.cjs.js.map +1 -0
- package/lib/counter/index.cjs.js +60 -0
- package/lib/counter/index.cjs.js.map +1 -0
- package/lib/custom-clipboard.cjs.js +469 -0
- package/lib/custom-clipboard.cjs.js.map +1 -0
- package/lib/custom-image/BlotFormatter.cjs.js +136 -0
- package/lib/custom-image/BlotFormatter.cjs.js.map +1 -0
- package/lib/custom-image/Options.cjs.js +95 -0
- package/lib/custom-image/Options.cjs.js.map +1 -0
- package/lib/custom-image/actions/Action.cjs.js +15 -0
- package/lib/custom-image/actions/Action.cjs.js.map +1 -0
- package/lib/custom-image/actions/CustomResizeAction.cjs.js +158 -0
- package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -0
- package/lib/custom-image/actions/DeleteAction.cjs.js +31 -0
- package/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -0
- package/lib/custom-image/image.cjs.js +95 -0
- package/lib/custom-image/image.cjs.js.map +1 -0
- package/lib/custom-image/specs/BlotSpec.cjs.js +27 -0
- package/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -0
- package/lib/custom-image/specs/CustomImageSpec.cjs.js +117 -0
- package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -0
- package/lib/custom-image/specs/ImageSpec.cjs.js +29 -0
- package/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -0
- package/lib/custom-uploader.cjs.js +161 -0
- package/lib/custom-uploader.cjs.js.map +1 -0
- package/lib/emoji/emoji-list/index.cjs.js +5 -0
- package/lib/emoji/emoji-list/index.cjs.js.map +1 -0
- package/lib/emoji/emoji-list/people.cjs.js +114 -0
- package/lib/emoji/emoji-list/people.cjs.js.map +1 -0
- package/lib/emoji/emoji-list.cjs.js +9 -0
- package/lib/emoji/emoji-list.cjs.js.map +1 -0
- package/lib/emoji/emoji-map.cjs.js +9 -0
- package/lib/emoji/emoji-map.cjs.js.map +1 -0
- package/lib/emoji/formats/emoji-blot.cjs.js +41 -0
- package/lib/emoji/formats/emoji-blot.cjs.js.map +1 -0
- package/lib/emoji/index.cjs.js +8 -0
- package/lib/emoji/index.cjs.js.map +1 -0
- package/lib/emoji/modules/emoji.cjs.js +248 -0
- package/lib/emoji/modules/emoji.cjs.js.map +1 -0
- package/lib/emoji/modules/toolbar-emoji.cjs.js +153 -0
- package/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -0
- package/lib/emoji/utils.cjs.js +19 -0
- package/lib/emoji/utils.cjs.js.map +1 -0
- package/lib/file/formats/file.cjs.js +56 -0
- package/lib/file/formats/file.cjs.js.map +1 -0
- package/lib/file/index.cjs.js +32 -0
- package/lib/file/index.cjs.js.map +1 -0
- package/lib/file/modules/file-bar.cjs.js +123 -0
- package/lib/file/modules/file-bar.cjs.js.map +1 -0
- package/lib/fluent-editor.cjs.js +163 -0
- package/lib/fluent-editor.cjs.js.map +1 -0
- package/lib/format-painter/index.cjs.js +66 -0
- package/lib/format-painter/index.cjs.js.map +1 -0
- package/lib/global-link/constants.cjs.js +9 -0
- package/lib/global-link/constants.cjs.js.map +1 -0
- package/lib/global-link/formats/customer-widget-link.cjs.js +28 -0
- package/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -0
- package/lib/global-link/formats/doc-link.cjs.js +42 -0
- package/lib/global-link/formats/doc-link.cjs.js.map +1 -0
- package/lib/global-link/formats/wiki-link.cjs.js +34 -0
- package/lib/global-link/formats/wiki-link.cjs.js.map +1 -0
- package/lib/global-link/formats/work-item-link.cjs.js +36 -0
- package/lib/global-link/formats/work-item-link.cjs.js.map +1 -0
- package/lib/global-link/global-link-panel.cjs.js +2 -0
- package/lib/global-link/global-link-panel.cjs.js.map +1 -0
- package/lib/global-link/index.cjs.js +139 -0
- package/lib/global-link/index.cjs.js.map +1 -0
- package/lib/global-link/utils/createTable.cjs.js +50 -0
- package/lib/global-link/utils/createTable.cjs.js.map +1 -0
- package/lib/index.cjs.js +5 -0
- package/lib/index.cjs.js.map +1 -0
- package/lib/lineheight.cjs.js +11 -0
- package/lib/lineheight.cjs.js.map +1 -0
- package/lib/link/formats/link.cjs.js +34 -0
- package/lib/link/formats/link.cjs.js.map +1 -0
- package/lib/link/index.cjs.js +32 -0
- package/lib/link/index.cjs.js.map +1 -0
- package/lib/link/modules/tooltip.cjs.js +275 -0
- package/lib/link/modules/tooltip.cjs.js.map +1 -0
- package/lib/mention/Mention.cjs.js +329 -0
- package/lib/mention/Mention.cjs.js.map +1 -0
- package/lib/mention/MentionLink.cjs.js +37 -0
- package/lib/mention/MentionLink.cjs.js.map +1 -0
- package/lib/mention/constants.cjs.js +9 -0
- package/lib/mention/constants.cjs.js.map +1 -0
- package/lib/quick-menu/index.cjs.js +82 -0
- package/lib/quick-menu/index.cjs.js.map +1 -0
- package/lib/screenshot/index.cjs.js +147 -0
- package/lib/screenshot/index.cjs.js.map +1 -0
- package/lib/soft-break/index.cjs.js +23 -0
- package/lib/soft-break/index.cjs.js.map +1 -0
- package/lib/strike/index.cjs.js +12 -0
- package/lib/strike/index.cjs.js.map +1 -0
- package/lib/syntax/index.cjs.js +30 -0
- package/lib/syntax/index.cjs.js.map +1 -0
- package/lib/table/better-table.cjs.js +434 -0
- package/lib/table/better-table.cjs.js.map +1 -0
- package/lib/table/formats/header.cjs.js +94 -0
- package/lib/table/formats/header.cjs.js.map +1 -0
- package/lib/table/formats/list.cjs.js +163 -0
- package/lib/table/formats/list.cjs.js.map +1 -0
- package/lib/table/formats/table.cjs.js +970 -0
- package/lib/table/formats/table.cjs.js.map +1 -0
- package/lib/table/modules/table-column-tool.cjs.js +400 -0
- package/lib/table/modules/table-column-tool.cjs.js.map +1 -0
- package/lib/table/modules/table-operation-menu.cjs.js +457 -0
- package/lib/table/modules/table-operation-menu.cjs.js.map +1 -0
- package/lib/table/modules/table-scroll-bar.cjs.js +190 -0
- package/lib/table/modules/table-scroll-bar.cjs.js.map +1 -0
- package/lib/table/modules/table-selection.cjs.js +306 -0
- package/lib/table/modules/table-selection.cjs.js.map +1 -0
- package/lib/table/table-config.cjs.js +74 -0
- package/lib/table/table-config.cjs.js.map +1 -0
- package/lib/table/utils/index.cjs.js +54 -0
- package/lib/table/utils/index.cjs.js.map +1 -0
- package/lib/table/utils/node-matchers.cjs.js +292 -0
- package/lib/table/utils/node-matchers.cjs.js.map +1 -0
- package/lib/toolbar/better-picker.cjs.js +308 -0
- package/lib/toolbar/better-picker.cjs.js.map +1 -0
- package/lib/toolbar/index.cjs.js +139 -0
- package/lib/toolbar/index.cjs.js.map +1 -0
- package/lib/types/vue.d.cjs.js +2 -0
- package/lib/types/vue.d.cjs.js.map +1 -0
- package/lib/utils/debounce.cjs.js +112 -0
- package/lib/utils/debounce.cjs.js.map +1 -0
- package/lib/utils/method.cjs.js +68 -0
- package/lib/utils/method.cjs.js.map +1 -0
- package/lib/video/index.cjs.js +49 -0
- package/lib/video/index.cjs.js.map +1 -0
- package/package.json +63 -65
- package/theme/style.css +4742 -0
- package/index.cjs.js +0 -374
- package/index.cjs.js.map +0 -1
- package/index.es.js +0 -51095
- package/index.es.js.map +0 -1
- package/style.css +0 -7
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
import { unshiftString } from "../../utils/method.es.js";
|
|
3
|
+
import File from "../formats/file.es.js";
|
|
4
|
+
import { Range } from "quill/core/selection";
|
|
5
|
+
const Delta = Quill.imports["delta"];
|
|
6
|
+
class FileBar {
|
|
7
|
+
constructor(quill, target) {
|
|
8
|
+
this.quill = quill;
|
|
9
|
+
this.file = target;
|
|
10
|
+
const fileBlot = Quill.find(target);
|
|
11
|
+
const index = this.quill.getIndex(fileBlot);
|
|
12
|
+
const [fileItem, offset] = this.quill.scroll.descendant(File, index);
|
|
13
|
+
const length = fileItem && fileItem.length();
|
|
14
|
+
this.fileRange = new Range(index - offset, length);
|
|
15
|
+
const timestamp = Number(this.file.dataset.lastModified);
|
|
16
|
+
const _lastModifiedDate = this.formatDate(timestamp);
|
|
17
|
+
this.template = [
|
|
18
|
+
// `<a class="ql-last-modified-date" href="${this.file.href}" target="_blank">${this.file.href}</a>`,
|
|
19
|
+
// '<span class="ql-split"></span>',
|
|
20
|
+
// `<a class="ql-file-preview"><i class="icon-preview"></i></a>`,
|
|
21
|
+
`<a class="ql-file-download"><i class="icon-download"></i></a>`,
|
|
22
|
+
'<a class="ql-file-delete"><i class="icon-delete"></i></a>'
|
|
23
|
+
].join("");
|
|
24
|
+
this.createFileBar();
|
|
25
|
+
}
|
|
26
|
+
createFileBar() {
|
|
27
|
+
this.domNode = document.createElement("div");
|
|
28
|
+
this.domNode.className = "ql-file-bar";
|
|
29
|
+
this.domNode.innerHTML = this.template;
|
|
30
|
+
const filePreview = this.domNode.querySelector("a.ql-file-preview");
|
|
31
|
+
if (filePreview) {
|
|
32
|
+
filePreview.addEventListener("click", (event) => {
|
|
33
|
+
this.operateFile(event, "view");
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const fileDownload = this.domNode.querySelector("a.ql-file-download");
|
|
37
|
+
if (fileDownload) {
|
|
38
|
+
fileDownload.addEventListener("click", (event) => {
|
|
39
|
+
this.operateFile(event, "download");
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const fileDelete = this.domNode.querySelector("a.ql-file-delete");
|
|
43
|
+
if (fileDelete) {
|
|
44
|
+
fileDelete.addEventListener("click", (event) => {
|
|
45
|
+
this.operateFile(event, "delete");
|
|
46
|
+
const delta = new Delta().retain(this.fileRange.index).delete(this.fileRange.length);
|
|
47
|
+
this.quill.updateContents(delta, Quill.sources.USER);
|
|
48
|
+
this.quill.setSelection(this.fileRange.index);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
this.setPosition();
|
|
52
|
+
this.quill.root.parentNode.appendChild(this.domNode);
|
|
53
|
+
}
|
|
54
|
+
destroy() {
|
|
55
|
+
if (this.domNode) {
|
|
56
|
+
this.domNode.remove();
|
|
57
|
+
this.domNode = null;
|
|
58
|
+
this.file = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
operateFile(event, operate) {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
const fileId = this.file.dataset.id || "";
|
|
64
|
+
const fileDownloadUrl = this.file.href;
|
|
65
|
+
if (fileId) {
|
|
66
|
+
this.quill.emitter.emit("file-change", {
|
|
67
|
+
operation: operate,
|
|
68
|
+
data: { fileId, fileDownloadUrl }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (operate === "download") {
|
|
72
|
+
const a = document.createElement("a");
|
|
73
|
+
a.href = fileDownloadUrl;
|
|
74
|
+
a.target = "_blank";
|
|
75
|
+
a.id = "exppub";
|
|
76
|
+
document.body.appendChild(a);
|
|
77
|
+
const alink = document.getElementById("exppub");
|
|
78
|
+
alink.click();
|
|
79
|
+
alink.parentNode.removeChild(a);
|
|
80
|
+
}
|
|
81
|
+
this.destroy();
|
|
82
|
+
}
|
|
83
|
+
setPosition() {
|
|
84
|
+
if (this.domNode && this.file) {
|
|
85
|
+
const parent = this.quill.root.parentNode;
|
|
86
|
+
const child = this.file.querySelector("span");
|
|
87
|
+
const containerRect = parent.getBoundingClientRect();
|
|
88
|
+
const fileRect = child.getBoundingClientRect();
|
|
89
|
+
this.css(this.domNode, {
|
|
90
|
+
left: `${fileRect.left - containerRect.left}px`,
|
|
91
|
+
top: `${fileRect.top - containerRect.top + 10}px`
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
css(domNode, rules) {
|
|
96
|
+
if (typeof rules === "object") {
|
|
97
|
+
for (const prop in rules) {
|
|
98
|
+
if (prop) {
|
|
99
|
+
if (Array.isArray(rules[prop])) {
|
|
100
|
+
rules[prop].forEach((val) => {
|
|
101
|
+
domNode.style[prop] = val;
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
domNode.style[prop] = rules[prop];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
formatDate(timestamp) {
|
|
111
|
+
const date = new Date(timestamp);
|
|
112
|
+
const year = date.getFullYear();
|
|
113
|
+
const month = unshiftString(`${date.getMonth() + 1}`, 2, "0");
|
|
114
|
+
const day = unshiftString(`${date.getDate()}`, 2, "0");
|
|
115
|
+
const hour = unshiftString(`${date.getHours()}`, 2, "0");
|
|
116
|
+
const minute = unshiftString(`${date.getMinutes()}`, 2, "0");
|
|
117
|
+
return isNaN(year) ? "--" : `${year}/${month}/${day} ${hour}:${minute}`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
FileBar as default
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=file-bar.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-bar.es.js","sources":["../../../../src/file/modules/file-bar.ts"],"sourcesContent":["import Quill from 'quill'\r\n// devui-internal api: utils\\public-api.ts\r\n\r\nimport { unshiftString } from '../../utils/method'\r\nimport File from '../formats/file'\r\nconst Delta = Quill.imports['delta']\r\nimport { Range } from 'quill/core/selection'\r\n\r\nexport default class FileBar {\r\n quill: any\r\n file: any\r\n domNode: HTMLElement\r\n fileRange: any\r\n template: string\r\n\r\n constructor(quill, target) {\r\n this.quill = quill\r\n this.file = target\r\n const fileBlot = Quill.find(target)\r\n const index = this.quill.getIndex(fileBlot)\r\n const [fileItem, offset] = this.quill.scroll.descendant(File, index)\r\n const length = fileItem && fileItem.length()\r\n this.fileRange = new Range(index - offset, length)\r\n\r\n const timestamp = Number(this.file.dataset.lastModified)\r\n const _lastModifiedDate = this.formatDate(timestamp)\r\n this.template = [\r\n // `<a class=\"ql-last-modified-date\" href=\"${this.file.href}\" target=\"_blank\">${this.file.href}</a>`,\r\n // '<span class=\"ql-split\"></span>',\r\n // `<a class=\"ql-file-preview\"><i class=\"icon-preview\"></i></a>`,\r\n `<a class=\"ql-file-download\"><i class=\"icon-download\"></i></a>`,\r\n '<a class=\"ql-file-delete\"><i class=\"icon-delete\"></i></a>',\r\n ].join('')\r\n\r\n this.createFileBar()\r\n }\r\n\r\n createFileBar() {\r\n this.domNode = document.createElement('div')\r\n this.domNode.className = 'ql-file-bar'\r\n this.domNode.innerHTML = this.template\r\n // 查看文件\r\n const filePreview = this.domNode.querySelector('a.ql-file-preview')\r\n if (filePreview) {\r\n filePreview.addEventListener('click', (event) => {\r\n this.operateFile(event, 'view')\r\n })\r\n }\r\n // 下载文件\r\n const fileDownload = this.domNode.querySelector('a.ql-file-download')\r\n if (fileDownload) {\r\n fileDownload.addEventListener('click', (event) => {\r\n this.operateFile(event, 'download')\r\n })\r\n }\r\n // 删除文件\r\n const fileDelete = this.domNode.querySelector('a.ql-file-delete')\r\n if (fileDelete) {\r\n fileDelete.addEventListener('click', (event) => {\r\n this.operateFile(event, 'delete')\r\n const delta = new Delta()\r\n .retain(this.fileRange.index)\r\n .delete(this.fileRange.length)\r\n this.quill.updateContents(delta, Quill.sources.USER)\r\n this.quill.setSelection(this.fileRange.index)\r\n })\r\n }\r\n\r\n this.setPosition()\r\n this.quill.root.parentNode.appendChild(this.domNode)\r\n }\r\n\r\n destroy() {\r\n if (this.domNode) {\r\n this.domNode.remove()\r\n this.domNode = null\r\n this.file = null\r\n }\r\n }\r\n\r\n operateFile(event, operate) {\r\n event.preventDefault()\r\n const fileId = this.file.dataset.id || ''\r\n const fileDownloadUrl = this.file.href\r\n if (fileId) {\r\n this.quill.emitter.emit('file-change', {\r\n operation: operate,\r\n data: { fileId, fileDownloadUrl },\r\n })\r\n }\r\n if (operate === 'download') {\r\n const a = document.createElement('a')\r\n a.href = fileDownloadUrl\r\n a.target = '_blank'\r\n a.id = 'exppub'\r\n document.body.appendChild(a)\r\n const alink = document.getElementById('exppub')\r\n alink.click()\r\n alink.parentNode.removeChild(a)\r\n }\r\n this.destroy()\r\n }\r\n\r\n setPosition() {\r\n if (this.domNode && this.file) {\r\n const parent = this.quill.root.parentNode\r\n const child = this.file.querySelector('span')\r\n const containerRect = parent.getBoundingClientRect()\r\n const fileRect = child.getBoundingClientRect()\r\n this.css(this.domNode, {\r\n left: `${fileRect.left - containerRect.left}px`,\r\n top: `${fileRect.top - containerRect.top + 10}px`,\r\n })\r\n }\r\n }\r\n\r\n css(domNode, rules) {\r\n if (typeof rules === 'object') {\r\n for (const prop in rules) {\r\n if (prop) {\r\n if (Array.isArray(rules[prop])) {\r\n // 兼容IE11浏览器\r\n rules[prop].forEach((val) => {\r\n domNode.style[prop] = val\r\n })\r\n }\r\n else {\r\n domNode.style[prop] = rules[prop]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n formatDate(timestamp) {\r\n const date = new Date(timestamp)\r\n const year = date.getFullYear()\r\n // TODO\r\n const month = unshiftString(`${date.getMonth() + 1}`, 2, '0')\r\n const day = unshiftString(`${date.getDate()}`, 2, '0')\r\n const hour = unshiftString(`${date.getHours()}`, 2, '0')\r\n const minute = unshiftString(`${date.getMinutes()}`, 2, '0')\r\n return isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
import { FONT_FAMILY_CONFIG, FONT_SIZE_CONFIG, ICONS_CONFIG, inputFile, getListValue, TABLE_RIGHT_MENU_CONFIG } from "./config.es.js";
|
|
3
|
+
import Counter from "./counter/index.es.js";
|
|
4
|
+
import CustomClipboard from "./custom-clipboard.es.js";
|
|
5
|
+
import BlotFormatter from "./custom-image/BlotFormatter.es.js";
|
|
6
|
+
import { CustomImageSpec } from "./custom-image/specs/CustomImageSpec.es.js";
|
|
7
|
+
import CustomUploader from "./custom-uploader.es.js";
|
|
8
|
+
import Emoji from "./emoji/index.es.js";
|
|
9
|
+
import FileModule from "./file/index.es.js";
|
|
10
|
+
import LineHeightStyle from "./lineheight.es.js";
|
|
11
|
+
import Link from "./link/index.es.js";
|
|
12
|
+
import Mention from "./mention/Mention.es.js";
|
|
13
|
+
import SoftBreak from "./soft-break/index.es.js";
|
|
14
|
+
import StrikeBlot from "./strike/index.es.js";
|
|
15
|
+
import BetterTable from "./table/better-table.es.js";
|
|
16
|
+
import CustomSyntax from "./syntax/index.es.js";
|
|
17
|
+
import BetterToolbar from "./toolbar/index.es.js";
|
|
18
|
+
import Video from "./video/index.es.js";
|
|
19
|
+
import { FormatPainter } from "./format-painter/index.es.js";
|
|
20
|
+
class FluentEditor extends Quill {
|
|
21
|
+
constructor(container, options = {}) {
|
|
22
|
+
super(container, options);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const registerModules = function() {
|
|
26
|
+
const FontClass = Quill.imports["formats/font"];
|
|
27
|
+
FontClass.whitelist = FONT_FAMILY_CONFIG;
|
|
28
|
+
const SizeStyle = Quill.imports["attributors/style/size"];
|
|
29
|
+
SizeStyle.whitelist = FONT_SIZE_CONFIG;
|
|
30
|
+
const Icons = Quill.imports["ui/icons"];
|
|
31
|
+
const iconKeys = Object.keys(ICONS_CONFIG);
|
|
32
|
+
iconKeys.forEach((iconKey) => {
|
|
33
|
+
Icons[iconKey] = ICONS_CONFIG[iconKey];
|
|
34
|
+
});
|
|
35
|
+
const SnowTheme = Quill.imports["themes/snow"];
|
|
36
|
+
SnowTheme.DEFAULTS = {
|
|
37
|
+
modules: {
|
|
38
|
+
"keyboard": {
|
|
39
|
+
bindings: {
|
|
40
|
+
...BetterTable.keyboardBindings
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"toolbar": {
|
|
44
|
+
handlers: {
|
|
45
|
+
...SnowTheme.DEFAULTS.modules.toolbar.handlers,
|
|
46
|
+
"undo": function() {
|
|
47
|
+
this.quill.history.undo();
|
|
48
|
+
},
|
|
49
|
+
"redo": function() {
|
|
50
|
+
this.quill.history.redo();
|
|
51
|
+
},
|
|
52
|
+
"better-table": function() {
|
|
53
|
+
this.quill.getModule("better-table").insertTable(3, 3);
|
|
54
|
+
},
|
|
55
|
+
"file": function() {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
const accept = (_b = (_a = this.quill.options) == null ? void 0 : _a.uploadOption) == null ? void 0 : _b.fileAccept;
|
|
58
|
+
inputFile.call(this, "file", accept);
|
|
59
|
+
},
|
|
60
|
+
"image": function() {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
const accept = (_b = (_a = this.quill.options) == null ? void 0 : _a.uploadOption) == null ? void 0 : _b.imageAccept;
|
|
63
|
+
inputFile.call(this, "image", accept);
|
|
64
|
+
},
|
|
65
|
+
"emoji": function() {
|
|
66
|
+
},
|
|
67
|
+
"fullscreen": function() {
|
|
68
|
+
},
|
|
69
|
+
"list": function(value) {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
const range = this.quill.getSelection();
|
|
72
|
+
const formats = this.quill.getFormat(range);
|
|
73
|
+
const preListValue = Array.isArray(formats.list) ? (_a = formats.list[0]) == null ? void 0 : _a.value : (_b = formats.list) == null ? void 0 : _b.value;
|
|
74
|
+
const curListValue = getListValue(value, preListValue);
|
|
75
|
+
const lines = this.quill.getLines(range.index, range.length);
|
|
76
|
+
const tableCols = lines.filter((line) => line.statics.blotName === "table-col" && !line.prev);
|
|
77
|
+
if (tableCols.length) {
|
|
78
|
+
let start = range.index;
|
|
79
|
+
tableCols.forEach((item, index) => {
|
|
80
|
+
const table = item.domNode.closest("table.quill-better-table");
|
|
81
|
+
const tableBlot = Quill.find(table);
|
|
82
|
+
const tableLength = tableBlot.length();
|
|
83
|
+
const tableStart = this.quill.getIndex(item);
|
|
84
|
+
const tableEnd = tableStart + tableLength;
|
|
85
|
+
const beforeTableRangeLength = tableStart - start;
|
|
86
|
+
this.quill.setSelection(start, beforeTableRangeLength, Quill.sources.SILENT);
|
|
87
|
+
this.quill.format("list", curListValue, Quill.sources.USER);
|
|
88
|
+
table.parentNode.classList.remove("quill-better-table-selected");
|
|
89
|
+
start = tableEnd;
|
|
90
|
+
if (index === tableCols.length - 1) {
|
|
91
|
+
this.quill.setSelection(tableEnd, range.index + range.length - tableEnd);
|
|
92
|
+
this.quill.format("list", curListValue, Quill.sources.USER);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
this.quill.format("list", curListValue, Quill.sources.USER);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
[FormatPainter.toolName]: FormatPainter
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"better-table": {
|
|
103
|
+
operationMenu: {
|
|
104
|
+
items: TABLE_RIGHT_MENU_CONFIG,
|
|
105
|
+
color: true
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"image": {
|
|
109
|
+
specs: [CustomImageSpec],
|
|
110
|
+
overlay: {
|
|
111
|
+
style: {
|
|
112
|
+
border: "1px dashed rgb(68, 68, 68)"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
align: {
|
|
116
|
+
icons: {
|
|
117
|
+
left: '<i class="icon-text-align-left"></i>',
|
|
118
|
+
center: '<i class="icon-text-align-center"></i>',
|
|
119
|
+
right: '<i class="icon-text-align-right"></i>'
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
FluentEditor.register(
|
|
126
|
+
{
|
|
127
|
+
"modules/toolbar": BetterToolbar,
|
|
128
|
+
"modules/mention": Mention,
|
|
129
|
+
"modules/better-table": BetterTable,
|
|
130
|
+
"modules/clipboard": CustomClipboard,
|
|
131
|
+
"modules/uploader": CustomUploader,
|
|
132
|
+
// 三者关联性最强
|
|
133
|
+
"modules/image": BlotFormatter,
|
|
134
|
+
// 三者关联性最强
|
|
135
|
+
"modules/file": FileModule,
|
|
136
|
+
// 三者关联性最强
|
|
137
|
+
"modules/counter": Counter,
|
|
138
|
+
"formats/font": FontClass,
|
|
139
|
+
"formats/size": SizeStyle,
|
|
140
|
+
"formats/strike": StrikeBlot,
|
|
141
|
+
"formats/softBreak": SoftBreak,
|
|
142
|
+
"formats/lineheight": LineHeightStyle,
|
|
143
|
+
"formats/video": Video,
|
|
144
|
+
"formats/emoji": Emoji.EmojiBlot,
|
|
145
|
+
"modules/emoji-toolbar": Emoji.ToolbarEmoji,
|
|
146
|
+
"modules/emoji-shortname": Emoji.ShortNameEmoji,
|
|
147
|
+
// 'modules/global-link': GlobalLink,//暂未开发
|
|
148
|
+
"modules/link": Link,
|
|
149
|
+
// 报错
|
|
150
|
+
// 'modules/screenshot': Screenshot,//暂未开发
|
|
151
|
+
// 'modules/quickmenu': QuickMenu,//暂未开发
|
|
152
|
+
"modules/syntax": CustomSyntax
|
|
153
|
+
},
|
|
154
|
+
true
|
|
155
|
+
// 覆盖内部模块
|
|
156
|
+
);
|
|
157
|
+
return FluentEditor;
|
|
158
|
+
};
|
|
159
|
+
const FluentEditor$1 = registerModules();
|
|
160
|
+
export {
|
|
161
|
+
FluentEditor$1 as default
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=fluent-editor.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent-editor.es.js","sources":["../../src/fluent-editor.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport type { Module, Parchment as TypeParchment } from 'quill'\r\nimport { FONT_FAMILY_CONFIG, FONT_SIZE_CONFIG, ICONS_CONFIG, TABLE_RIGHT_MENU_CONFIG, inputFile, getListValue } from './config'\r\nimport Counter from './counter' // 字符统计\r\nimport CustomClipboard from './custom-clipboard' // 粘贴板\r\nimport CustomImage from './custom-image/BlotFormatter' // 图片\r\nimport { CustomImageSpec } from './custom-image/specs/CustomImageSpec' // 图片拉伸模块\r\nimport CustomUploader from './custom-uploader' // 上传\r\nimport Emoji from './emoji' // 表情\r\nimport FileModule from './file' // 文件\r\n// import GlobalLink from './global-link' // 全局链接\r\nimport LineHeightStyle from './lineheight'\r\nimport Link from './link' // 超链接0\r\nimport Mention from './mention/Mention' // @提醒\r\n// import QuickMenu from './quick-menu' // 快捷菜单\r\n// import Screenshot from './screenshot' // 截图\r\nimport SoftBreak from './soft-break' // 软回车\r\nimport Strike from './strike' // 删除线\r\nimport BetterTable from './table/better-table' // 表格\r\nimport CustomSyntax from './syntax' // 代码块高亮\r\nimport Toolbar from './toolbar' // 工具栏\r\nimport Video from './video' // 视频\r\nimport { FormatPainter } from './format-painter'\r\nimport { IEditorConfig } from './config/types'\r\n\r\nclass FluentEditor extends Quill {\r\n constructor(container: HTMLElement | string, options: IEditorConfig = {}) {\r\n super(container, options)\r\n }\r\n}\r\n\r\nconst registerModules = function () {\r\n const FontClass = Quill.imports['formats/font'] as TypeParchment.ClassAttributor\r\n FontClass.whitelist = FONT_FAMILY_CONFIG\r\n\r\n const SizeStyle = Quill.imports['attributors/style/size'] as TypeParchment.StyleAttributor\r\n // const SizeClass = Quill.imports['attributors/class/size']\r\n SizeStyle.whitelist = FONT_SIZE_CONFIG\r\n\r\n const Icons = Quill.imports['ui/icons']\r\n const iconKeys = Object.keys(ICONS_CONFIG)\r\n iconKeys.forEach((iconKey) => {\r\n Icons[iconKey] = ICONS_CONFIG[iconKey]\r\n })\r\n\r\n const SnowTheme = Quill.imports['themes/snow'] as typeof Module\r\n SnowTheme.DEFAULTS = {\r\n modules: {\r\n 'keyboard': {\r\n bindings: {\r\n ...BetterTable.keyboardBindings,\r\n },\r\n },\r\n 'toolbar': {\r\n handlers: {\r\n ...(SnowTheme.DEFAULTS as Record<string, any>).modules.toolbar.handlers,\r\n 'undo': function () {\r\n this.quill.history.undo()\r\n },\r\n 'redo': function () {\r\n this.quill.history.redo()\r\n },\r\n 'better-table': function () {\r\n this.quill.getModule('better-table').insertTable(3, 3)\r\n },\r\n 'file': function () {\r\n const accept = this.quill.options?.uploadOption?.fileAccept\r\n inputFile.call(this, 'file', accept)\r\n },\r\n 'image': function () {\r\n const accept = this.quill.options?.uploadOption?.imageAccept\r\n inputFile.call(this, 'image', accept)\r\n },\r\n 'emoji': function () {},\r\n 'fullscreen': function () {},\r\n 'list': function (value) {\r\n const range = this.quill.getSelection()\r\n const formats = this.quill.getFormat(range)\r\n const preListValue = Array.isArray(formats.list) ? formats.list[0]?.value : formats.list?.value\r\n const curListValue = getListValue(value, preListValue)\r\n // 如果设置list的选区中有表格,判断第一个table-col位置,将表格前的内容设置为list格式\r\n const lines = this.quill.getLines(range.index, range.length)\r\n const tableCols = lines.filter(line => line.statics.blotName === 'table-col' && !line.prev)\r\n if (tableCols.length) {\r\n let start = range.index\r\n // 遍历table-col群组,以之获取表格,将表格前选区设置为对应list格式\r\n tableCols.forEach((item, index) => {\r\n const table = item.domNode.closest('table.quill-better-table')\r\n const tableBlot = Quill.find(table) as TypeParchment.Blot\r\n const tableLength = tableBlot.length()\r\n const tableStart = this.quill.getIndex(item)\r\n const tableEnd = tableStart + tableLength\r\n const beforeTableRangeLength = tableStart - start\r\n // 在表格前设置列表\r\n this.quill.setSelection(start, beforeTableRangeLength, Quill.sources.SILENT)\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n table.parentNode.classList.remove('quill-better-table-selected')\r\n // 当前表格末尾为下一个选取的开始\r\n start = tableEnd\r\n if (index === tableCols.length - 1) {\r\n // 将最后一个表格之后所有选区内容设置list格式\r\n this.quill.setSelection(tableEnd, range.index + range.length - tableEnd)\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n }\r\n })\r\n }\r\n else {\r\n this.quill.format('list', curListValue, Quill.sources.USER)\r\n }\r\n },\r\n [FormatPainter.toolName]: FormatPainter,\r\n },\r\n },\r\n 'better-table': {\r\n operationMenu: {\r\n items: TABLE_RIGHT_MENU_CONFIG,\r\n color: true,\r\n },\r\n },\r\n 'image': {\r\n specs: [CustomImageSpec],\r\n overlay: {\r\n style: {\r\n border: '1px dashed rgb(68, 68, 68)',\r\n },\r\n },\r\n align: {\r\n icons: {\r\n left: '<i class=\"icon-text-align-left\"></i>',\r\n center: '<i class=\"icon-text-align-center\"></i>',\r\n right: '<i class=\"icon-text-align-right\"></i>',\r\n },\r\n },\r\n },\r\n },\r\n }\r\n\r\n FluentEditor.register(\r\n {\r\n 'modules/toolbar': Toolbar,\r\n 'modules/mention': Mention,\r\n 'modules/better-table': BetterTable,\r\n 'modules/clipboard': CustomClipboard,\r\n 'modules/uploader': CustomUploader, // 三者关联性最强\r\n 'modules/image': CustomImage, // 三者关联性最强\r\n 'modules/file': FileModule, // 三者关联性最强\r\n 'modules/counter': Counter,\r\n 'formats/font': FontClass,\r\n 'formats/size': SizeStyle,\r\n 'formats/strike': Strike,\r\n 'formats/softBreak': SoftBreak,\r\n 'formats/lineheight': LineHeightStyle,\r\n 'formats/video': Video,\r\n 'formats/emoji': Emoji.EmojiBlot,\r\n 'modules/emoji-toolbar': Emoji.ToolbarEmoji,\r\n 'modules/emoji-shortname': Emoji.ShortNameEmoji,\r\n // 'modules/global-link': GlobalLink,//暂未开发\r\n 'modules/link': Link, // 报错\r\n // 'modules/screenshot': Screenshot,//暂未开发\r\n // 'modules/quickmenu': QuickMenu,//暂未开发\r\n 'modules/syntax': CustomSyntax,\r\n },\r\n true, // 覆盖内部模块\r\n )\r\n\r\n return FluentEditor\r\n}\r\n\r\nexport default registerModules()\r\n"],"names":["Toolbar","CustomImage","Strike"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
function FormatPainter() {
|
|
3
|
+
if (!this.formatPainter) {
|
|
4
|
+
this.formatPainter = {
|
|
5
|
+
rangeFormat: {},
|
|
6
|
+
isFormatterLock: false,
|
|
7
|
+
isFormating: false,
|
|
8
|
+
prepareLock: false
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
const [, formatterBtn] = this.controls.find(([name]) => name === FormatPainter.toolName);
|
|
12
|
+
const formatRange = (range) => {
|
|
13
|
+
if (!range) return;
|
|
14
|
+
this.quill.removeFormat(range.index, range.length);
|
|
15
|
+
for (const format in this.formatPainter.rangeFormat) {
|
|
16
|
+
this.quill.format(format, this.formatPainter.rangeFormat[format], Quill.sources.USER);
|
|
17
|
+
}
|
|
18
|
+
if (!this.formatPainter.isFormatterLock) {
|
|
19
|
+
unbindFormatSelect();
|
|
20
|
+
} else {
|
|
21
|
+
btnActive();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const btnActive = () => {
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
formatterBtn.classList.add("ql-active");
|
|
27
|
+
}, 0);
|
|
28
|
+
};
|
|
29
|
+
const btnRemoveActive = () => {
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
formatterBtn.classList.remove("ql-active");
|
|
32
|
+
}, 0);
|
|
33
|
+
};
|
|
34
|
+
const bindFormatSelect = () => {
|
|
35
|
+
const range = this.quill.getSelection();
|
|
36
|
+
if (range.length === 0) return;
|
|
37
|
+
this.formatPainter.rangeFormat = this.quill.getFormat(range);
|
|
38
|
+
this.formatPainter.isFormating = true;
|
|
39
|
+
this.quill.on(Quill.events.SELECTION_CHANGE, formatRange);
|
|
40
|
+
btnActive();
|
|
41
|
+
};
|
|
42
|
+
const unbindFormatSelect = () => {
|
|
43
|
+
this.quill.off(Quill.events.SELECTION_CHANGE, formatRange);
|
|
44
|
+
this.formatPainter.rangeFormat = void 0;
|
|
45
|
+
btnRemoveActive();
|
|
46
|
+
this.formatPainter.isFormating = false;
|
|
47
|
+
this.formatPainter.isFormatterLock = false;
|
|
48
|
+
};
|
|
49
|
+
if (this.formatPainter.isFormatterLock || this.formatPainter.isFormating && !this.formatPainter.prepareLock) {
|
|
50
|
+
unbindFormatSelect();
|
|
51
|
+
} else if (this.formatPainter.isFormating && this.formatPainter.prepareLock) {
|
|
52
|
+
this.formatPainter.isFormatterLock = true;
|
|
53
|
+
btnActive();
|
|
54
|
+
} else {
|
|
55
|
+
this.formatPainter.prepareLock = true;
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
this.formatPainter.prepareLock = false;
|
|
58
|
+
}, 200);
|
|
59
|
+
bindFormatSelect();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
FormatPainter.toolName = "format-painter";
|
|
63
|
+
export {
|
|
64
|
+
FormatPainter
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../src/format-painter/index.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport type { Range } from 'quill'\r\nimport type Toolbar from 'quill/modules/toolbar'\r\n\r\ntype FormatData = {\r\n formatPainter: {\r\n rangeFormat: Record<string, any>\r\n isFormatterLock: boolean\r\n isFormating: boolean\r\n prepareLock: boolean\r\n }\r\n}\r\nexport function FormatPainter(this: Toolbar & FormatData) {\r\n if (!this.formatPainter) {\r\n this.formatPainter = {\r\n rangeFormat: {},\r\n isFormatterLock: false,\r\n isFormating: false,\r\n prepareLock: false,\r\n }\r\n }\r\n const [, formatterBtn] = this.controls.find(([name]) => name === FormatPainter.toolName)\r\n const formatRange = (range: Range | null) => {\r\n if (!range) return\r\n this.quill.removeFormat(range.index, range.length)\r\n for (const format in this.formatPainter.rangeFormat) {\r\n this.quill.format(format, this.formatPainter.rangeFormat[format], Quill.sources.USER)\r\n }\r\n if (!this.formatPainter.isFormatterLock) {\r\n unbindFormatSelect()\r\n }\r\n else {\r\n btnActive()\r\n }\r\n }\r\n // setTime for Toolbar.update\r\n const btnActive = () => {\r\n setTimeout(() => {\r\n formatterBtn.classList.add('ql-active')\r\n }, 0)\r\n }\r\n const btnRemoveActive = () => {\r\n setTimeout(() => {\r\n formatterBtn.classList.remove('ql-active')\r\n }, 0)\r\n }\r\n const bindFormatSelect = () => {\r\n const range = this.quill.getSelection()\r\n if (range.length === 0) return\r\n this.formatPainter.rangeFormat = this.quill.getFormat(range)\r\n this.formatPainter.isFormating = true\r\n this.quill.on(Quill.events.SELECTION_CHANGE, formatRange)\r\n btnActive()\r\n }\r\n const unbindFormatSelect = () => {\r\n this.quill.off(Quill.events.SELECTION_CHANGE, formatRange)\r\n this.formatPainter.rangeFormat = undefined\r\n btnRemoveActive()\r\n this.formatPainter.isFormating = false\r\n this.formatPainter.isFormatterLock = false\r\n }\r\n\r\n if (this.formatPainter.isFormatterLock || (this.formatPainter.isFormating && !this.formatPainter.prepareLock)) {\r\n unbindFormatSelect()\r\n }\r\n else if (this.formatPainter.isFormating && this.formatPainter.prepareLock) {\r\n this.formatPainter.isFormatterLock = true\r\n btnActive()\r\n }\r\n else {\r\n // imitate double click\r\n this.formatPainter.prepareLock = true\r\n setTimeout(() => {\r\n this.formatPainter.prepareLock = false\r\n }, 200)\r\n bindFormatSelect()\r\n }\r\n}\r\nFormatPainter.toolName = 'format-painter'\r\n"],"names":[],"mappings":";AAYO,SAAS,gBAA0C;AACpD,MAAA,CAAC,KAAK,eAAe;AACvB,SAAK,gBAAgB;AAAA,MACnB,aAAa,CAAC;AAAA,MACd,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,IAAA;AAAA,EAEjB;AACA,QAAM,GAAG,YAAY,IAAI,KAAK,SAAS,KAAK,CAAC,CAAC,IAAI,MAAM,SAAS,cAAc,QAAQ;AACjF,QAAA,cAAc,CAAC,UAAwB;AAC3C,QAAI,CAAC,MAAO;AACZ,SAAK,MAAM,aAAa,MAAM,OAAO,MAAM,MAAM;AACtC,eAAA,UAAU,KAAK,cAAc,aAAa;AAC9C,WAAA,MAAM,OAAO,QAAQ,KAAK,cAAc,YAAY,MAAM,GAAG,MAAM,QAAQ,IAAI;AAAA,IACtF;AACI,QAAA,CAAC,KAAK,cAAc,iBAAiB;AACpB;IAAA,OAEhB;AACO;IACZ;AAAA,EAAA;AAGF,QAAM,YAAY,MAAM;AACtB,eAAW,MAAM;AACF,mBAAA,UAAU,IAAI,WAAW;AAAA,OACrC,CAAC;AAAA,EAAA;AAEN,QAAM,kBAAkB,MAAM;AAC5B,eAAW,MAAM;AACF,mBAAA,UAAU,OAAO,WAAW;AAAA,OACxC,CAAC;AAAA,EAAA;AAEN,QAAM,mBAAmB,MAAM;AACvB,UAAA,QAAQ,KAAK,MAAM,aAAa;AAClC,QAAA,MAAM,WAAW,EAAG;AACxB,SAAK,cAAc,cAAc,KAAK,MAAM,UAAU,KAAK;AAC3D,SAAK,cAAc,cAAc;AACjC,SAAK,MAAM,GAAG,MAAM,OAAO,kBAAkB,WAAW;AAC9C;EAAA;AAEZ,QAAM,qBAAqB,MAAM;AAC/B,SAAK,MAAM,IAAI,MAAM,OAAO,kBAAkB,WAAW;AACzD,SAAK,cAAc,cAAc;AACjB;AAChB,SAAK,cAAc,cAAc;AACjC,SAAK,cAAc,kBAAkB;AAAA,EAAA;AAGnC,MAAA,KAAK,cAAc,mBAAoB,KAAK,cAAc,eAAe,CAAC,KAAK,cAAc,aAAc;AAC1F;EAAA,WAEZ,KAAK,cAAc,eAAe,KAAK,cAAc,aAAa;AACzE,SAAK,cAAc,kBAAkB;AAC3B;EAAA,OAEP;AAEH,SAAK,cAAc,cAAc;AACjC,eAAW,MAAM;AACf,WAAK,cAAc,cAAc;AAAA,OAChC,GAAG;AACW;EACnB;AACF;AACA,cAAc,WAAW;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const ON_WIKI_LINK_REMOVE = "wiki-link/remove";
|
|
2
|
+
const ON_DOC_LINK_REMOVE = "doc-link/remove";
|
|
3
|
+
const ON_WORK_ITEM_LINK_REMOVE = "work-item-link/remove";
|
|
4
|
+
export {
|
|
5
|
+
ON_DOC_LINK_REMOVE,
|
|
6
|
+
ON_WIKI_LINK_REMOVE,
|
|
7
|
+
ON_WORK_ITEM_LINK_REMOVE
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=constants.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.es.js","sources":["../../../src/global-link/constants.ts"],"sourcesContent":["export const ON_WIKI_LINK_REMOVE = 'wiki-link/remove'\r\nexport const ON_DOC_LINK_REMOVE = 'doc-link/remove'\r\nexport const ON_WORK_ITEM_LINK_REMOVE = 'work-item-link/remove'\r\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,2BAA2B;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
const BlockEmbed = Quill.imports["blots/block/embed"];
|
|
3
|
+
class CustomerWidgetLink extends BlockEmbed {
|
|
4
|
+
static create(value) {
|
|
5
|
+
const node = super.create(value);
|
|
6
|
+
node.setAttribute("data-widget-type", value.type);
|
|
7
|
+
node.setAttribute("data-widget-id", value.id);
|
|
8
|
+
node.setAttribute("src", value.value);
|
|
9
|
+
return node;
|
|
10
|
+
}
|
|
11
|
+
static value(domNode) {
|
|
12
|
+
return {
|
|
13
|
+
type: domNode.getAttribute("data-widget-type"),
|
|
14
|
+
id: domNode.getAttribute("data-widget-id"),
|
|
15
|
+
value: domNode.getAttribute("src")
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
constructor(scroll, domNode, data) {
|
|
19
|
+
super(scroll, domNode, data);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
CustomerWidgetLink.blotName = "customer-widget-link";
|
|
23
|
+
CustomerWidgetLink.tagName = "img";
|
|
24
|
+
CustomerWidgetLink.className = "ql-customer-widget-link";
|
|
25
|
+
export {
|
|
26
|
+
CustomerWidgetLink as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=customer-widget-link.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customer-widget-link.es.js","sources":["../../../../src/global-link/formats/customer-widget-link.ts"],"sourcesContent":["import Quill from 'quill'\r\n\r\nconst BlockEmbed = Quill.imports['blots/block/embed']\r\n\r\n// @dynamic\r\nclass CustomerWidgetLink extends BlockEmbed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('data-widget-type', value.type)\r\n node.setAttribute('data-widget-id', value.id)\r\n node.setAttribute('src', value.value)\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n type: domNode.getAttribute('data-widget-type'),\r\n id: domNode.getAttribute('data-widget-id'),\r\n value: domNode.getAttribute('src'),\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n }\r\n}\r\n\r\nCustomerWidgetLink.blotName = 'customer-widget-link'\r\nCustomerWidgetLink.tagName = 'img'\r\nCustomerWidgetLink.className = 'ql-customer-widget-link'\r\n\r\nexport default CustomerWidgetLink\r\n"],"names":[],"mappings":";AAEA,MAAM,aAAa,MAAM,QAAQ,mBAAmB;AAGpD,MAAM,2BAA2B,WAAW;AAAA,EAK1C,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,oBAAoB,MAAM,IAAI;AAC3C,SAAA,aAAa,kBAAkB,MAAM,EAAE;AACvC,SAAA,aAAa,OAAO,MAAM,KAAK;AAC7B,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,kBAAkB;AAAA,MAC7C,IAAI,QAAQ,aAAa,gBAAgB;AAAA,MACzC,OAAO,QAAQ,aAAa,KAAK;AAAA,IAAA;AAAA,EAErC;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAAA,EAC7B;AACF;AAEA,mBAAmB,WAAW;AAC9B,mBAAmB,UAAU;AAC7B,mBAAmB,YAAY;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
import { ON_DOC_LINK_REMOVE } from "../constants.es.js";
|
|
3
|
+
const Embed = Quill.imports["blots/embed"];
|
|
4
|
+
class DocumentLink extends Embed {
|
|
5
|
+
static create(value) {
|
|
6
|
+
const node = super.create(value);
|
|
7
|
+
node.setAttribute("href", value.link);
|
|
8
|
+
node.setAttribute("title", value.text);
|
|
9
|
+
node.setAttribute("target", "_blank");
|
|
10
|
+
node.setAttribute("icon-link", value.icon);
|
|
11
|
+
const icon = document.createElement("span");
|
|
12
|
+
icon.classList.add("ql-doc-link-icon");
|
|
13
|
+
icon.style.background = `url(${value.icon}) no-repeat center`;
|
|
14
|
+
icon.style.backgroundSize = "contain";
|
|
15
|
+
node.insertAdjacentElement("afterbegin", icon);
|
|
16
|
+
const text = document.createTextNode(value.text);
|
|
17
|
+
node.appendChild(text);
|
|
18
|
+
return node;
|
|
19
|
+
}
|
|
20
|
+
static value(domNode) {
|
|
21
|
+
return {
|
|
22
|
+
link: domNode.getAttribute("href"),
|
|
23
|
+
icon: domNode.getAttribute("icon-link"),
|
|
24
|
+
text: domNode.textContent
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
constructor(scroll, domNode, data) {
|
|
28
|
+
super(scroll, domNode, data);
|
|
29
|
+
this.docData = data;
|
|
30
|
+
}
|
|
31
|
+
remove() {
|
|
32
|
+
this.scroll.emitter.emit(ON_DOC_LINK_REMOVE, this.docData);
|
|
33
|
+
return super.remove();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
DocumentLink.blotName = "doc-link";
|
|
37
|
+
DocumentLink.tagName = "A";
|
|
38
|
+
DocumentLink.className = "ql-doc-link";
|
|
39
|
+
export {
|
|
40
|
+
DocumentLink as default
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=doc-link.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-link.es.js","sources":["../../../../src/global-link/formats/doc-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_DOC_LINK_REMOVE } from '../constants'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\n\r\n// @dynamic\r\nclass DocumentLink extends Embed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n docData: any\r\n scroll: any\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('href', value.link)\r\n node.setAttribute('title', value.text)\r\n node.setAttribute('target', '_blank')\r\n node.setAttribute('icon-link', value.icon)\r\n\r\n const icon = document.createElement('span')\r\n icon.classList.add('ql-doc-link-icon')\r\n icon.style.background = `url(${value.icon}) no-repeat center`\r\n icon.style.backgroundSize = 'contain'\r\n\r\n node.insertAdjacentElement('afterbegin', icon)\r\n const text = document.createTextNode(value.text)\r\n node.appendChild(text)\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n link: domNode.getAttribute('href'),\r\n icon: domNode.getAttribute('icon-link'),\r\n text: domNode.textContent,\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n this.docData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_DOC_LINK_REMOVE, this.docData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nDocumentLink.blotName = 'doc-link'\r\nDocumentLink.tagName = 'A'\r\nDocumentLink.className = 'ql-doc-link'\r\n\r\nexport default DocumentLink\r\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,qBAAqB,MAAM;AAAA,EAO/B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,QAAQ,MAAM,IAAI;AAC/B,SAAA,aAAa,SAAS,MAAM,IAAI;AAChC,SAAA,aAAa,UAAU,QAAQ;AAC/B,SAAA,aAAa,aAAa,MAAM,IAAI;AAEnC,UAAA,OAAO,SAAS,cAAc,MAAM;AACrC,SAAA,UAAU,IAAI,kBAAkB;AACrC,SAAK,MAAM,aAAa,OAAO,MAAM,IAAI;AACzC,SAAK,MAAM,iBAAiB;AAEvB,SAAA,sBAAsB,cAAc,IAAI;AAC7C,UAAM,OAAO,SAAS,eAAe,MAAM,IAAI;AAC/C,SAAK,YAAY,IAAI;AACd,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,QAAQ,aAAa,WAAW;AAAA,MACtC,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,oBAAoB,KAAK,OAAO;AACzD,WAAO,MAAM;EACf;AACF;AAEA,aAAa,WAAW;AACxB,aAAa,UAAU;AACvB,aAAa,YAAY;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
import { ON_WIKI_LINK_REMOVE } from "../constants.es.js";
|
|
3
|
+
const Embed = Quill.imports["blots/embed"];
|
|
4
|
+
class WikiLink extends Embed {
|
|
5
|
+
static create(value) {
|
|
6
|
+
const node = super.create(value);
|
|
7
|
+
node.setAttribute("href", value.link);
|
|
8
|
+
node.setAttribute("target", "_blank");
|
|
9
|
+
node.setAttribute("title", value.text);
|
|
10
|
+
node.textContent = value.text;
|
|
11
|
+
return node;
|
|
12
|
+
}
|
|
13
|
+
static value(domNode) {
|
|
14
|
+
return {
|
|
15
|
+
link: domNode.getAttribute("href"),
|
|
16
|
+
text: domNode.textContent
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
constructor(scroll, domNode, data) {
|
|
20
|
+
super(scroll, domNode, data);
|
|
21
|
+
this.wikiData = data;
|
|
22
|
+
}
|
|
23
|
+
remove() {
|
|
24
|
+
this.scroll.emitter.emit(ON_WIKI_LINK_REMOVE, this.wikiData);
|
|
25
|
+
return super.remove();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
WikiLink.blotName = "wiki-link";
|
|
29
|
+
WikiLink.tagName = "A";
|
|
30
|
+
WikiLink.className = "ql-wiki-link";
|
|
31
|
+
export {
|
|
32
|
+
WikiLink as default
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=wiki-link.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-link.es.js","sources":["../../../../src/global-link/formats/wiki-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_WIKI_LINK_REMOVE } from '../constants'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\n\r\n// @dynamic\r\nclass WikiLink extends Embed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n wikiData: any\r\n scroll: any\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('href', value.link)\r\n node.setAttribute('target', '_blank')\r\n node.setAttribute('title', value.text)\r\n node.textContent = value.text\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n link: domNode.getAttribute('href'),\r\n text: domNode.textContent,\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n this.wikiData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_WIKI_LINK_REMOVE, this.wikiData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nWikiLink.blotName = 'wiki-link'\r\nWikiLink.tagName = 'A'\r\nWikiLink.className = 'ql-wiki-link'\r\n\r\nexport default WikiLink\r\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,iBAAiB,MAAM;AAAA,EAO3B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,QAAQ,MAAM,IAAI;AAC/B,SAAA,aAAa,UAAU,QAAQ;AAC/B,SAAA,aAAa,SAAS,MAAM,IAAI;AACrC,SAAK,cAAc,MAAM;AAClB,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,qBAAqB,KAAK,QAAQ;AAC3D,WAAO,MAAM;EACf;AACF;AAEA,SAAS,WAAW;AACpB,SAAS,UAAU;AACnB,SAAS,YAAY;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import Quill from "quill";
|
|
2
|
+
import { ON_WORK_ITEM_LINK_REMOVE } from "../constants.es.js";
|
|
3
|
+
import { createTable } from "../utils/createTable.es.js";
|
|
4
|
+
const BlockEmbed = Quill.imports["blots/block/embed"];
|
|
5
|
+
class WorkItemLink extends BlockEmbed {
|
|
6
|
+
static create(value) {
|
|
7
|
+
const node = super.create(value);
|
|
8
|
+
node.setAttribute("contenteditable", "false");
|
|
9
|
+
node.setAttribute("href", value.link);
|
|
10
|
+
node.setAttribute("__work_item_data__", JSON.stringify(value.data));
|
|
11
|
+
const table = createTable(value.data);
|
|
12
|
+
node.appendChild(table);
|
|
13
|
+
return node;
|
|
14
|
+
}
|
|
15
|
+
static value(domNode) {
|
|
16
|
+
return {
|
|
17
|
+
link: domNode.getAttribute("href"),
|
|
18
|
+
data: JSON.parse(domNode.getAttribute("__work_item_data__"))
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
constructor(scroll, domNode, data) {
|
|
22
|
+
super(scroll, domNode, data);
|
|
23
|
+
this.workItemData = data;
|
|
24
|
+
}
|
|
25
|
+
remove() {
|
|
26
|
+
this.scroll.emitter.emit(ON_WORK_ITEM_LINK_REMOVE, this.workItemData);
|
|
27
|
+
return super.remove();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
WorkItemLink.blotName = "work-item-link";
|
|
31
|
+
WorkItemLink.tagName = "div";
|
|
32
|
+
WorkItemLink.className = "ql-work-item-link";
|
|
33
|
+
export {
|
|
34
|
+
WorkItemLink as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=work-item-link.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-item-link.es.js","sources":["../../../../src/global-link/formats/work-item-link.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { ON_WORK_ITEM_LINK_REMOVE } from '../constants'\r\nimport { createTable } from '../utils/createTable'\r\nconst BlockEmbed = Quill.imports['blots/block/embed']\r\n\r\n// @dynamic\r\nclass WorkItemLink extends BlockEmbed {\r\n static blotName: string\r\n static tagName: string\r\n static className: string\r\n workItemData: any\r\n scroll: any\r\n\r\n static create(value) {\r\n const node = super.create(value)\r\n node.setAttribute('contenteditable', 'false')\r\n node.setAttribute('href', value.link)\r\n node.setAttribute('__work_item_data__', JSON.stringify(value.data))\r\n const table = createTable(value.data)\r\n node.appendChild(table)\r\n return node\r\n }\r\n\r\n static value(domNode) {\r\n return {\r\n link: domNode.getAttribute('href'),\r\n data: JSON.parse(domNode.getAttribute('__work_item_data__')),\r\n }\r\n }\r\n\r\n constructor(scroll, domNode, data) {\r\n super(scroll, domNode, data)\r\n this.workItemData = data\r\n }\r\n\r\n remove() {\r\n this.scroll.emitter.emit(ON_WORK_ITEM_LINK_REMOVE, this.workItemData)\r\n return super.remove()\r\n }\r\n}\r\n\r\nWorkItemLink.blotName = 'work-item-link'\r\nWorkItemLink.tagName = 'div'\r\nWorkItemLink.className = 'ql-work-item-link'\r\n\r\nexport default WorkItemLink\r\n"],"names":[],"mappings":";;;AAGA,MAAM,aAAa,MAAM,QAAQ,mBAAmB;AAGpD,MAAM,qBAAqB,WAAW;AAAA,EAOpC,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AAC1B,SAAA,aAAa,mBAAmB,OAAO;AACvC,SAAA,aAAa,QAAQ,MAAM,IAAI;AACpC,SAAK,aAAa,sBAAsB,KAAK,UAAU,MAAM,IAAI,CAAC;AAC5D,UAAA,QAAQ,YAAY,MAAM,IAAI;AACpC,SAAK,YAAY,KAAK;AACf,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA;AAAA,MACL,MAAM,QAAQ,aAAa,MAAM;AAAA,MACjC,MAAM,KAAK,MAAM,QAAQ,aAAa,oBAAoB,CAAC;AAAA,IAAA;AAAA,EAE/D;AAAA,EAEA,YAAY,QAAQ,SAAS,MAAM;AAC3B,UAAA,QAAQ,SAAS,IAAI;AAC3B,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,QAAQ,KAAK,0BAA0B,KAAK,YAAY;AACpE,WAAO,MAAM;EACf;AACF;AAEA,aAAa,WAAW;AACxB,aAAa,UAAU;AACvB,aAAa,YAAY;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-link-panel.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|