@opentiny/fluent-editor 3.20.1 → 3.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{README.md → dist/README.md} +99 -99
- package/dist/es/attributors/line-height.es.js.map +1 -0
- package/dist/es/config/base64-image.es.js.map +1 -0
- package/dist/es/config/editor.config.es.js.map +1 -0
- package/dist/es/config/editor.utils.es.js.map +1 -0
- package/dist/es/config/i18n/en-us.es.js.map +1 -0
- package/dist/es/config/i18n/zh-cn.es.js.map +1 -0
- package/dist/es/config/icons.config.es.js.map +1 -0
- package/{es/config.es.js → dist/es/config/index.es.js} +14 -7
- package/dist/es/config/index.es.js.map +1 -0
- package/{es → dist/es}/counter/index.es.js +2 -1
- package/dist/es/counter/index.es.js.map +1 -0
- package/dist/es/custom-clipboard.es.js.map +1 -0
- package/dist/es/custom-image/BlotFormatter.es.js.map +1 -0
- package/dist/es/custom-image/Options.es.js.map +1 -0
- package/dist/es/custom-image/actions/Action.es.js.map +1 -0
- package/dist/es/custom-image/actions/CustomResizeAction.es.js.map +1 -0
- package/dist/es/custom-image/actions/DeleteAction.es.js.map +1 -0
- package/dist/es/custom-image/image.es.js.map +1 -0
- package/dist/es/custom-image/specs/BlotSpec.es.js.map +1 -0
- package/dist/es/custom-image/specs/CustomImageSpec.es.js.map +1 -0
- package/dist/es/custom-image/specs/ImageSpec.es.js.map +1 -0
- package/dist/es/custom-uploader.es.js.map +1 -0
- package/dist/es/emoji/emoji-list/people.es.js.map +1 -0
- package/dist/es/emoji/emoji-list.es.js.map +1 -0
- package/dist/es/emoji/emoji-map.es.js.map +1 -0
- package/dist/es/emoji/formats/emoji-blot.es.js.map +1 -0
- package/dist/es/emoji/index.es.js.map +1 -0
- package/dist/es/emoji/modules/emoji.es.js.map +1 -0
- package/dist/es/emoji/modules/toolbar-emoji.es.js.map +1 -0
- package/dist/es/emoji/utils.es.js.map +1 -0
- package/dist/es/file/formats/file.es.js.map +1 -0
- package/dist/es/file/index.es.js.map +1 -0
- package/dist/es/file/modules/file-bar.es.js.map +1 -0
- package/{es → dist/es}/fluent-editor.es.js +1 -1
- package/dist/es/fluent-editor.es.js.map +1 -0
- package/dist/es/global-link/constants.es.js.map +1 -0
- package/dist/es/global-link/formats/customer-widget-link.es.js.map +1 -0
- package/dist/es/global-link/formats/doc-link.es.js.map +1 -0
- package/dist/es/global-link/formats/wiki-link.es.js.map +1 -0
- package/dist/es/global-link/formats/work-item-link.es.js.map +1 -0
- package/dist/es/global-link/index.es.js.map +1 -0
- package/dist/es/global-link/utils/createTable.es.js.map +1 -0
- package/dist/es/index.es.js +21 -0
- package/{es → dist/es}/index.es.js.map +1 -1
- package/dist/es/link/formats/link.es.js.map +1 -0
- package/dist/es/link/index.es.js.map +1 -0
- package/dist/es/link/modules/tooltip.es.js.map +1 -0
- package/dist/es/mention/Mention.es.js.map +1 -0
- package/dist/es/mention/MentionLink.es.js.map +1 -0
- package/dist/es/mention/constants.es.js.map +1 -0
- package/dist/es/quick-menu/index.es.js.map +1 -0
- package/dist/es/screenshot/index.es.js.map +1 -0
- package/dist/es/soft-break/index.es.js.map +1 -0
- package/dist/es/strike/index.es.js.map +1 -0
- package/dist/es/syntax/index.es.js.map +1 -0
- package/dist/es/table/better-table.es.js.map +1 -0
- package/dist/es/table/formats/header.es.js.map +1 -0
- package/dist/es/table/formats/list.es.js.map +1 -0
- package/dist/es/table/formats/table.es.js.map +1 -0
- package/dist/es/table/modules/table-column-tool.es.js.map +1 -0
- package/dist/es/table/modules/table-operation-menu.es.js.map +1 -0
- package/dist/es/table/modules/table-scroll-bar.es.js.map +1 -0
- package/dist/es/table/modules/table-selection.es.js.map +1 -0
- package/dist/es/table/table-config.es.js.map +1 -0
- package/dist/es/table/utils/index.es.js.map +1 -0
- package/dist/es/table/utils/node-matchers.es.js.map +1 -0
- package/dist/es/toolbar/better-picker.es.js.map +1 -0
- package/dist/es/toolbar/index.es.js.map +1 -0
- package/dist/es/utils/debounce.es.js.map +1 -0
- package/dist/es/utils/method.es.js.map +1 -0
- package/dist/es/video/index.es.js.map +1 -0
- package/dist/lib/attributors/line-height.cjs.js.map +1 -0
- package/dist/lib/config/base64-image.cjs.js.map +1 -0
- package/dist/lib/config/editor.config.cjs.js.map +1 -0
- package/dist/lib/config/editor.utils.cjs.js.map +1 -0
- package/dist/lib/config/i18n/en-us.cjs.js.map +1 -0
- package/dist/lib/config/i18n/zh-cn.cjs.js.map +1 -0
- package/dist/lib/config/icons.config.cjs.js.map +1 -0
- package/{lib/config.cjs.js → dist/lib/config/index.cjs.js} +27 -21
- package/dist/lib/config/index.cjs.js.map +1 -0
- package/{lib → dist/lib}/counter/index.cjs.js +5 -4
- package/dist/lib/counter/index.cjs.js.map +1 -0
- package/dist/lib/custom-clipboard.cjs.js.map +1 -0
- package/dist/lib/custom-image/BlotFormatter.cjs.js.map +1 -0
- package/dist/lib/custom-image/Options.cjs.js.map +1 -0
- package/dist/lib/custom-image/actions/Action.cjs.js.map +1 -0
- package/dist/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -0
- package/dist/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -0
- package/dist/lib/custom-image/image.cjs.js.map +1 -0
- package/dist/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -0
- package/dist/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -0
- package/dist/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -0
- package/dist/lib/custom-uploader.cjs.js.map +1 -0
- package/dist/lib/emoji/emoji-list/people.cjs.js.map +1 -0
- package/dist/lib/emoji/emoji-list.cjs.js.map +1 -0
- package/dist/lib/emoji/emoji-map.cjs.js.map +1 -0
- package/dist/lib/emoji/formats/emoji-blot.cjs.js.map +1 -0
- package/dist/lib/emoji/index.cjs.js.map +1 -0
- package/dist/lib/emoji/modules/emoji.cjs.js.map +1 -0
- package/dist/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -0
- package/dist/lib/emoji/utils.cjs.js.map +1 -0
- package/dist/lib/file/formats/file.cjs.js.map +1 -0
- package/dist/lib/file/index.cjs.js.map +1 -0
- package/dist/lib/file/modules/file-bar.cjs.js.map +1 -0
- package/{lib → dist/lib}/fluent-editor.cjs.js +31 -31
- package/dist/lib/fluent-editor.cjs.js.map +1 -0
- package/dist/lib/global-link/constants.cjs.js.map +1 -0
- package/dist/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -0
- package/dist/lib/global-link/formats/doc-link.cjs.js.map +1 -0
- package/dist/lib/global-link/formats/wiki-link.cjs.js.map +1 -0
- package/dist/lib/global-link/formats/work-item-link.cjs.js.map +1 -0
- package/dist/lib/global-link/index.cjs.js.map +1 -0
- package/dist/lib/global-link/utils/createTable.cjs.js.map +1 -0
- package/dist/lib/index.cjs.js +21 -0
- package/{lib → dist/lib}/index.cjs.js.map +1 -1
- package/dist/lib/link/formats/link.cjs.js.map +1 -0
- package/dist/lib/link/index.cjs.js.map +1 -0
- package/dist/lib/link/modules/tooltip.cjs.js.map +1 -0
- package/dist/lib/mention/Mention.cjs.js.map +1 -0
- package/dist/lib/mention/MentionLink.cjs.js.map +1 -0
- package/dist/lib/mention/constants.cjs.js.map +1 -0
- package/dist/lib/quick-menu/index.cjs.js.map +1 -0
- package/dist/lib/screenshot/index.cjs.js.map +1 -0
- package/dist/lib/soft-break/index.cjs.js.map +1 -0
- package/dist/lib/strike/index.cjs.js.map +1 -0
- package/dist/lib/syntax/index.cjs.js.map +1 -0
- package/dist/lib/table/better-table.cjs.js.map +1 -0
- package/dist/lib/table/formats/header.cjs.js.map +1 -0
- package/dist/lib/table/formats/list.cjs.js.map +1 -0
- package/dist/lib/table/formats/table.cjs.js.map +1 -0
- package/dist/lib/table/modules/table-column-tool.cjs.js.map +1 -0
- package/dist/lib/table/modules/table-operation-menu.cjs.js.map +1 -0
- package/dist/lib/table/modules/table-scroll-bar.cjs.js.map +1 -0
- package/dist/lib/table/modules/table-selection.cjs.js.map +1 -0
- package/dist/lib/table/table-config.cjs.js.map +1 -0
- package/dist/lib/table/utils/index.cjs.js.map +1 -0
- package/dist/lib/table/utils/node-matchers.cjs.js.map +1 -0
- package/dist/lib/toolbar/better-picker.cjs.js.map +1 -0
- package/dist/lib/toolbar/index.cjs.js.map +1 -0
- package/dist/lib/utils/debounce.cjs.js.map +1 -0
- package/dist/lib/utils/method.cjs.js.map +1 -0
- package/dist/lib/video/index.cjs.js.map +1 -0
- package/dist/package.json +52 -0
- package/{theme → dist}/style.css +74 -17
- package/package.json +52 -61
- package/scripts/pre-release.js +34 -0
- package/src/assets/better-table.scss +367 -0
- package/src/assets/common.scss +279 -0
- package/src/assets/counter.scss +19 -0
- package/src/assets/custom-image.scss +20 -0
- package/src/assets/editor.scss +365 -0
- package/src/assets/emoji/emoji.scss +461 -0
- package/src/assets/emoji/style.scss +252 -0
- package/src/assets/fileBar.scss +116 -0
- package/src/assets/font.scss +36 -0
- package/src/assets/fullscreen.scss +21 -0
- package/src/assets/iconfont/iconfont.ttf +0 -0
- package/src/assets/iconfont/iconfont.woff +0 -0
- package/src/assets/iconfont/iconfont.woff2 +0 -0
- package/src/assets/image1.png +0 -0
- package/src/assets/lineHeight.scss +16 -0
- package/src/assets/link.scss +130 -0
- package/src/assets/mention.scss +48 -0
- package/src/assets/screenshot.scss +78 -0
- package/src/assets/size.scss +13 -0
- package/src/assets/style.scss +39 -0
- package/src/assets/tasklist.scss +76 -0
- package/src/assets/toolbar.scss +416 -0
- package/src/attributors/font-size.ts +6 -0
- package/src/attributors/font-style.ts +6 -0
- package/src/attributors/index.ts +4 -0
- package/src/attributors/line-height.ts +6 -0
- package/src/attributors/text-indent.ts +6 -0
- package/src/config/base64-image.ts +8 -0
- package/src/config/editor.config.ts +88 -0
- package/src/config/editor.utils.ts +199 -0
- package/src/config/i18n/en-us.ts +106 -0
- package/src/config/i18n/zh-cn.ts +104 -0
- package/src/config/icons.config.ts +297 -0
- package/src/config/index.ts +171 -0
- package/src/config/types/additional-toolbar-item.interface.ts +8 -0
- package/src/config/types/content-change.interface.ts +13 -0
- package/src/config/types/content-save.interface.ts +6 -0
- package/src/config/types/counter-option.interface.ts +9 -0
- package/src/config/types/editor-config.interface.ts +22 -0
- package/src/config/types/editor-modules.interface.ts +41 -0
- package/src/config/types/file-operation.interface.ts +12 -0
- package/src/config/types/focus-change.interface.ts +4 -0
- package/src/config/types/fullscreen-module.interface.ts +4 -0
- package/src/config/types/help-panel-item.interface.ts +5 -0
- package/src/config/types/help-panel-option.interface.ts +7 -0
- package/src/config/types/image-module.interface.ts +3 -0
- package/src/config/types/image-upload.interface.ts +7 -0
- package/src/config/types/index.ts +22 -0
- package/src/config/types/load-on-demand-module.interface.ts +5 -0
- package/src/config/types/mention-module.interface.ts +8 -0
- package/src/config/types/paste-change.interface.ts +6 -0
- package/src/config/types/quick-menu-module.interface.ts +3 -0
- package/src/config/types/range.interface.ts +4 -0
- package/src/config/types/registry-options.interface.ts +5 -0
- package/src/config/types/selection-change.interface.ts +8 -0
- package/src/config/types/toolbar-item.interface.ts +13 -0
- package/src/config/types/type.ts +5 -0
- package/src/config/types/validate-error.interface.ts +11 -0
- package/src/counter/index.ts +69 -0
- package/src/custom-clipboard.ts +633 -0
- package/src/custom-image/BlotFormatter.ts +167 -0
- package/src/custom-image/Options.ts +150 -0
- package/src/custom-image/actions/Action.ts +13 -0
- package/src/custom-image/actions/CustomResizeAction.ts +207 -0
- package/src/custom-image/actions/DeleteAction.ts +29 -0
- package/src/custom-image/image.ts +118 -0
- package/src/custom-image/specs/BlotSpec.ts +30 -0
- package/src/custom-image/specs/CustomImageSpec.ts +139 -0
- package/src/custom-image/specs/ImageSpec.ts +33 -0
- package/src/custom-uploader.ts +199 -0
- package/src/emoji/emoji-list/index.ts +1 -0
- package/src/emoji/emoji-list/people.ts +111 -0
- package/src/emoji/emoji-list.ts +9 -0
- package/src/emoji/emoji-map.ts +9 -0
- package/src/emoji/formats/emoji-blot.ts +54 -0
- package/src/emoji/index.ts +5 -0
- package/src/emoji/modules/emoji.ts +318 -0
- package/src/emoji/modules/toolbar-emoji.ts +182 -0
- package/src/emoji/utils.ts +15 -0
- package/src/file/formats/file.ts +67 -0
- package/src/file/index.ts +38 -0
- package/src/file/modules/file-bar.ts +146 -0
- package/src/fluent-editor.ts +164 -0
- package/src/format-painter/index.ts +79 -0
- package/src/global-link/constants.ts +3 -0
- package/src/global-link/formats/customer-widget-link.ts +36 -0
- package/src/global-link/formats/doc-link.ts +55 -0
- package/src/global-link/formats/wiki-link.ts +45 -0
- package/src/global-link/formats/work-item-link.ts +47 -0
- package/src/global-link/global-link-panel.ts +20 -0
- package/src/global-link/index.ts +165 -0
- package/src/global-link/utils/createTable.ts +54 -0
- package/src/index.ts +5 -0
- package/src/link/formats/link.ts +44 -0
- package/src/link/index.ts +35 -0
- package/src/link/modules/tooltip.ts +318 -0
- package/src/mention/Mention.ts +406 -0
- package/src/mention/MentionLink.ts +51 -0
- package/src/mention/constants.ts +3 -0
- package/src/quick-menu/index.ts +100 -0
- package/src/screenshot/index.ts +231 -0
- package/src/soft-break/index.ts +34 -0
- package/src/strike/index.ts +16 -0
- package/src/syntax/index.ts +35 -0
- package/src/table/better-table.ts +553 -0
- package/src/table/formats/header.ts +129 -0
- package/src/table/formats/list.ts +229 -0
- package/src/table/formats/table.ts +1272 -0
- package/src/table/modules/table-column-tool.ts +492 -0
- package/src/table/modules/table-operation-menu.ts +584 -0
- package/src/table/modules/table-scroll-bar.ts +248 -0
- package/src/table/modules/table-selection.ts +387 -0
- package/src/table/table-config.ts +42 -0
- package/src/table/utils/index.ts +62 -0
- package/src/table/utils/node-matchers.ts +359 -0
- package/src/toolbar/better-picker.ts +370 -0
- package/src/toolbar/index.ts +180 -0
- package/src/utils/debounce.ts +149 -0
- package/src/utils/image.ts +22 -0
- package/src/utils/method.ts +82 -0
- package/src/utils/scroll-lock.ts +52 -0
- package/src/video/index.ts +62 -0
- package/tsconfig.json +26 -0
- package/vite.config.theme.ts +20 -0
- package/vite.config.ts +56 -0
- package/es/attributors/line-height.es.js.map +0 -1
- package/es/config/base64-image.es.js.map +0 -1
- package/es/config/editor.config.es.js.map +0 -1
- package/es/config/editor.utils.es.js.map +0 -1
- package/es/config/i18n/en-us.es.js.map +0 -1
- package/es/config/i18n/zh-cn.es.js.map +0 -1
- package/es/config/icons.config.es.js.map +0 -1
- package/es/config.es.js.map +0 -1
- package/es/counter/index.es.js.map +0 -1
- package/es/custom-clipboard.es.js.map +0 -1
- package/es/custom-image/BlotFormatter.es.js.map +0 -1
- package/es/custom-image/Options.es.js.map +0 -1
- package/es/custom-image/actions/Action.es.js.map +0 -1
- package/es/custom-image/actions/CustomResizeAction.es.js.map +0 -1
- package/es/custom-image/actions/DeleteAction.es.js.map +0 -1
- package/es/custom-image/image.es.js.map +0 -1
- package/es/custom-image/specs/BlotSpec.es.js.map +0 -1
- package/es/custom-image/specs/CustomImageSpec.es.js.map +0 -1
- package/es/custom-image/specs/ImageSpec.es.js.map +0 -1
- package/es/custom-uploader.es.js.map +0 -1
- package/es/emoji/emoji-list/people.es.js.map +0 -1
- package/es/emoji/emoji-list.es.js.map +0 -1
- package/es/emoji/emoji-map.es.js.map +0 -1
- package/es/emoji/formats/emoji-blot.es.js.map +0 -1
- package/es/emoji/index.es.js.map +0 -1
- package/es/emoji/modules/emoji.es.js.map +0 -1
- package/es/emoji/modules/toolbar-emoji.es.js.map +0 -1
- package/es/emoji/utils.es.js.map +0 -1
- package/es/file/formats/file.es.js.map +0 -1
- package/es/file/index.es.js.map +0 -1
- package/es/file/modules/file-bar.es.js.map +0 -1
- package/es/fluent-editor.es.js.map +0 -1
- package/es/global-link/constants.es.js.map +0 -1
- package/es/global-link/formats/customer-widget-link.es.js.map +0 -1
- package/es/global-link/formats/doc-link.es.js.map +0 -1
- package/es/global-link/formats/wiki-link.es.js.map +0 -1
- package/es/global-link/formats/work-item-link.es.js.map +0 -1
- package/es/global-link/index.es.js.map +0 -1
- package/es/global-link/utils/createTable.es.js.map +0 -1
- package/es/index.es.js +0 -5
- package/es/link/formats/link.es.js.map +0 -1
- package/es/link/index.es.js.map +0 -1
- package/es/link/modules/tooltip.es.js.map +0 -1
- package/es/mention/Mention.es.js.map +0 -1
- package/es/mention/MentionLink.es.js.map +0 -1
- package/es/mention/constants.es.js.map +0 -1
- package/es/quick-menu/index.es.js.map +0 -1
- package/es/screenshot/index.es.js.map +0 -1
- package/es/soft-break/index.es.js.map +0 -1
- package/es/strike/index.es.js.map +0 -1
- package/es/syntax/index.es.js.map +0 -1
- package/es/table/better-table.es.js.map +0 -1
- package/es/table/formats/header.es.js.map +0 -1
- package/es/table/formats/list.es.js.map +0 -1
- package/es/table/formats/table.es.js.map +0 -1
- package/es/table/modules/table-column-tool.es.js.map +0 -1
- package/es/table/modules/table-operation-menu.es.js.map +0 -1
- package/es/table/modules/table-scroll-bar.es.js.map +0 -1
- package/es/table/modules/table-selection.es.js.map +0 -1
- package/es/table/table-config.es.js.map +0 -1
- package/es/table/utils/index.es.js.map +0 -1
- package/es/table/utils/node-matchers.es.js.map +0 -1
- package/es/toolbar/better-picker.es.js.map +0 -1
- package/es/toolbar/index.es.js.map +0 -1
- package/es/utils/debounce.es.js.map +0 -1
- package/es/utils/method.es.js.map +0 -1
- package/es/video/index.es.js.map +0 -1
- package/lib/attributors/line-height.cjs.js.map +0 -1
- package/lib/config/base64-image.cjs.js.map +0 -1
- package/lib/config/editor.config.cjs.js.map +0 -1
- package/lib/config/editor.utils.cjs.js.map +0 -1
- package/lib/config/i18n/en-us.cjs.js.map +0 -1
- package/lib/config/i18n/zh-cn.cjs.js.map +0 -1
- package/lib/config/icons.config.cjs.js.map +0 -1
- package/lib/config.cjs.js.map +0 -1
- package/lib/counter/index.cjs.js.map +0 -1
- package/lib/custom-clipboard.cjs.js.map +0 -1
- package/lib/custom-image/BlotFormatter.cjs.js.map +0 -1
- package/lib/custom-image/Options.cjs.js.map +0 -1
- package/lib/custom-image/actions/Action.cjs.js.map +0 -1
- package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +0 -1
- package/lib/custom-image/actions/DeleteAction.cjs.js.map +0 -1
- package/lib/custom-image/image.cjs.js.map +0 -1
- package/lib/custom-image/specs/BlotSpec.cjs.js.map +0 -1
- package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +0 -1
- package/lib/custom-image/specs/ImageSpec.cjs.js.map +0 -1
- package/lib/custom-uploader.cjs.js.map +0 -1
- package/lib/emoji/emoji-list/people.cjs.js.map +0 -1
- package/lib/emoji/emoji-list.cjs.js.map +0 -1
- package/lib/emoji/emoji-map.cjs.js.map +0 -1
- package/lib/emoji/formats/emoji-blot.cjs.js.map +0 -1
- package/lib/emoji/index.cjs.js.map +0 -1
- package/lib/emoji/modules/emoji.cjs.js.map +0 -1
- package/lib/emoji/modules/toolbar-emoji.cjs.js.map +0 -1
- package/lib/emoji/utils.cjs.js.map +0 -1
- package/lib/file/formats/file.cjs.js.map +0 -1
- package/lib/file/index.cjs.js.map +0 -1
- package/lib/file/modules/file-bar.cjs.js.map +0 -1
- package/lib/fluent-editor.cjs.js.map +0 -1
- package/lib/global-link/constants.cjs.js.map +0 -1
- package/lib/global-link/formats/customer-widget-link.cjs.js.map +0 -1
- package/lib/global-link/formats/doc-link.cjs.js.map +0 -1
- package/lib/global-link/formats/wiki-link.cjs.js.map +0 -1
- package/lib/global-link/formats/work-item-link.cjs.js.map +0 -1
- package/lib/global-link/index.cjs.js.map +0 -1
- package/lib/global-link/utils/createTable.cjs.js.map +0 -1
- package/lib/index.cjs.js +0 -5
- package/lib/link/formats/link.cjs.js.map +0 -1
- package/lib/link/index.cjs.js.map +0 -1
- package/lib/link/modules/tooltip.cjs.js.map +0 -1
- package/lib/mention/Mention.cjs.js.map +0 -1
- package/lib/mention/MentionLink.cjs.js.map +0 -1
- package/lib/mention/constants.cjs.js.map +0 -1
- package/lib/quick-menu/index.cjs.js.map +0 -1
- package/lib/screenshot/index.cjs.js.map +0 -1
- package/lib/soft-break/index.cjs.js.map +0 -1
- package/lib/strike/index.cjs.js.map +0 -1
- package/lib/syntax/index.cjs.js.map +0 -1
- package/lib/table/better-table.cjs.js.map +0 -1
- package/lib/table/formats/header.cjs.js.map +0 -1
- package/lib/table/formats/list.cjs.js.map +0 -1
- package/lib/table/formats/table.cjs.js.map +0 -1
- package/lib/table/modules/table-column-tool.cjs.js.map +0 -1
- package/lib/table/modules/table-operation-menu.cjs.js.map +0 -1
- package/lib/table/modules/table-scroll-bar.cjs.js.map +0 -1
- package/lib/table/modules/table-selection.cjs.js.map +0 -1
- package/lib/table/table-config.cjs.js.map +0 -1
- package/lib/table/utils/index.cjs.js.map +0 -1
- package/lib/table/utils/node-matchers.cjs.js.map +0 -1
- package/lib/toolbar/better-picker.cjs.js.map +0 -1
- package/lib/toolbar/index.cjs.js.map +0 -1
- package/lib/utils/debounce.cjs.js.map +0 -1
- package/lib/utils/method.cjs.js.map +0 -1
- package/lib/video/index.cjs.js.map +0 -1
- /package/{es → dist/es}/attributors/font-size.es.js +0 -0
- /package/{es → dist/es}/attributors/font-size.es.js.map +0 -0
- /package/{es → dist/es}/attributors/font-style.es.js +0 -0
- /package/{es → dist/es}/attributors/font-style.es.js.map +0 -0
- /package/{es → dist/es}/attributors/index.es.js +0 -0
- /package/{es → dist/es}/attributors/index.es.js.map +0 -0
- /package/{es → dist/es}/attributors/line-height.es.js +0 -0
- /package/{es → dist/es}/attributors/text-indent.es.js +0 -0
- /package/{es → dist/es}/attributors/text-indent.es.js.map +0 -0
- /package/{es → dist/es}/config/base64-image.es.js +0 -0
- /package/{es → dist/es}/config/editor.config.es.js +0 -0
- /package/{es → dist/es}/config/editor.utils.es.js +0 -0
- /package/{es → dist/es}/config/i18n/en-us.es.js +0 -0
- /package/{es → dist/es}/config/i18n/zh-cn.es.js +0 -0
- /package/{es → dist/es}/config/icons.config.es.js +0 -0
- /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/additional-toolbar-item.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/content-change.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/content-change.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/content-save.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/content-save.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/counter-option.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/counter-option.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/editor-config.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/editor-config.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/editor-modules.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/editor-modules.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/file-operation.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/file-operation.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/focus-change.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/focus-change.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/fullscreen-module.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/help-panel-item.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/help-panel-item.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/help-panel-option.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/help-panel-option.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/image-module.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/image-module.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/image-upload.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/image-upload.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/index.es.js +0 -0
- /package/{es → dist/es}/config/types/index.es.js.map +0 -0
- /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/load-on-demand-module.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/mention-module.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/mention-module.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/paste-change.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/paste-change.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/quick-menu-module.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/range.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/range.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/registry-options.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/registry-options.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/selection-change.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/selection-change.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/toolbar-item.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/toolbar-item.interface.es.js.map +0 -0
- /package/{es → dist/es}/config/types/type.es.js +0 -0
- /package/{es → dist/es}/config/types/type.es.js.map +0 -0
- /package/{es → dist/es}/config/types/validate-error.interface.es.js +0 -0
- /package/{es → dist/es}/config/types/validate-error.interface.es.js.map +0 -0
- /package/{es → dist/es}/custom-clipboard.es.js +0 -0
- /package/{es → dist/es}/custom-image/BlotFormatter.es.js +0 -0
- /package/{es → dist/es}/custom-image/Options.es.js +0 -0
- /package/{es → dist/es}/custom-image/actions/Action.es.js +0 -0
- /package/{es → dist/es}/custom-image/actions/CustomResizeAction.es.js +0 -0
- /package/{es → dist/es}/custom-image/actions/DeleteAction.es.js +0 -0
- /package/{es → dist/es}/custom-image/image.es.js +0 -0
- /package/{es → dist/es}/custom-image/specs/BlotSpec.es.js +0 -0
- /package/{es → dist/es}/custom-image/specs/CustomImageSpec.es.js +0 -0
- /package/{es → dist/es}/custom-image/specs/ImageSpec.es.js +0 -0
- /package/{es → dist/es}/custom-uploader.es.js +0 -0
- /package/{es → dist/es}/emoji/emoji-list/index.es.js +0 -0
- /package/{es → dist/es}/emoji/emoji-list/index.es.js.map +0 -0
- /package/{es → dist/es}/emoji/emoji-list/people.es.js +0 -0
- /package/{es → dist/es}/emoji/emoji-list.es.js +0 -0
- /package/{es → dist/es}/emoji/emoji-map.es.js +0 -0
- /package/{es → dist/es}/emoji/formats/emoji-blot.es.js +0 -0
- /package/{es → dist/es}/emoji/index.es.js +0 -0
- /package/{es → dist/es}/emoji/modules/emoji.es.js +0 -0
- /package/{es → dist/es}/emoji/modules/toolbar-emoji.es.js +0 -0
- /package/{es → dist/es}/emoji/utils.es.js +0 -0
- /package/{es → dist/es}/file/formats/file.es.js +0 -0
- /package/{es → dist/es}/file/index.es.js +0 -0
- /package/{es → dist/es}/file/modules/file-bar.es.js +0 -0
- /package/{es → dist/es}/format-painter/index.es.js +0 -0
- /package/{es → dist/es}/format-painter/index.es.js.map +0 -0
- /package/{es → dist/es}/global-link/constants.es.js +0 -0
- /package/{es → dist/es}/global-link/formats/customer-widget-link.es.js +0 -0
- /package/{es → dist/es}/global-link/formats/doc-link.es.js +0 -0
- /package/{es → dist/es}/global-link/formats/wiki-link.es.js +0 -0
- /package/{es → dist/es}/global-link/formats/work-item-link.es.js +0 -0
- /package/{es → dist/es}/global-link/global-link-panel.es.js +0 -0
- /package/{es → dist/es}/global-link/global-link-panel.es.js.map +0 -0
- /package/{es → dist/es}/global-link/index.es.js +0 -0
- /package/{es → dist/es}/global-link/utils/createTable.es.js +0 -0
- /package/{es → dist/es}/link/formats/link.es.js +0 -0
- /package/{es → dist/es}/link/index.es.js +0 -0
- /package/{es → dist/es}/link/modules/tooltip.es.js +0 -0
- /package/{es → dist/es}/mention/Mention.es.js +0 -0
- /package/{es → dist/es}/mention/MentionLink.es.js +0 -0
- /package/{es → dist/es}/mention/constants.es.js +0 -0
- /package/{es → dist/es}/quick-menu/index.es.js +0 -0
- /package/{es → dist/es}/screenshot/index.es.js +0 -0
- /package/{es → dist/es}/soft-break/index.es.js +0 -0
- /package/{es → dist/es}/strike/index.es.js +0 -0
- /package/{es → dist/es}/syntax/index.es.js +0 -0
- /package/{es → dist/es}/table/better-table.es.js +0 -0
- /package/{es → dist/es}/table/formats/header.es.js +0 -0
- /package/{es → dist/es}/table/formats/list.es.js +0 -0
- /package/{es → dist/es}/table/formats/table.es.js +0 -0
- /package/{es → dist/es}/table/modules/table-column-tool.es.js +0 -0
- /package/{es → dist/es}/table/modules/table-operation-menu.es.js +0 -0
- /package/{es → dist/es}/table/modules/table-scroll-bar.es.js +0 -0
- /package/{es → dist/es}/table/modules/table-selection.es.js +0 -0
- /package/{es → dist/es}/table/table-config.es.js +0 -0
- /package/{es → dist/es}/table/utils/index.es.js +0 -0
- /package/{es → dist/es}/table/utils/node-matchers.es.js +0 -0
- /package/{es → dist/es}/toolbar/better-picker.es.js +0 -0
- /package/{es → dist/es}/toolbar/index.es.js +0 -0
- /package/{es → dist/es}/utils/debounce.es.js +0 -0
- /package/{es → dist/es}/utils/image.es.js +0 -0
- /package/{es → dist/es}/utils/image.es.js.map +0 -0
- /package/{es → dist/es}/utils/method.es.js +0 -0
- /package/{es → dist/es}/utils/scroll-lock.es.js +0 -0
- /package/{es → dist/es}/utils/scroll-lock.es.js.map +0 -0
- /package/{es → dist/es}/video/index.es.js +0 -0
- /package/{lib → dist/lib}/attributors/font-size.cjs.js +0 -0
- /package/{lib → dist/lib}/attributors/font-size.cjs.js.map +0 -0
- /package/{lib → dist/lib}/attributors/font-style.cjs.js +0 -0
- /package/{lib → dist/lib}/attributors/font-style.cjs.js.map +0 -0
- /package/{lib → dist/lib}/attributors/index.cjs.js +0 -0
- /package/{lib → dist/lib}/attributors/index.cjs.js.map +0 -0
- /package/{lib → dist/lib}/attributors/line-height.cjs.js +0 -0
- /package/{lib → dist/lib}/attributors/text-indent.cjs.js +0 -0
- /package/{lib → dist/lib}/attributors/text-indent.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/base64-image.cjs.js +0 -0
- /package/{lib → dist/lib}/config/editor.config.cjs.js +0 -0
- /package/{lib → dist/lib}/config/editor.utils.cjs.js +0 -0
- /package/{lib → dist/lib}/config/i18n/en-us.cjs.js +0 -0
- /package/{lib → dist/lib}/config/i18n/zh-cn.cjs.js +0 -0
- /package/{lib → dist/lib}/config/icons.config.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/additional-toolbar-item.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/content-change.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/content-save.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/counter-option.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/editor-config.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/editor-modules.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/file-operation.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/focus-change.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/fullscreen-module.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/help-panel-item.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/help-panel-option.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/image-module.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/image-upload.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/index.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/index.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/load-on-demand-module.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/mention-module.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/paste-change.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/quick-menu-module.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/range.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/range.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/registry-options.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/selection-change.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/toolbar-item.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/type.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/type.cjs.js.map +0 -0
- /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js +0 -0
- /package/{lib → dist/lib}/config/types/validate-error.interface.cjs.js.map +0 -0
- /package/{lib → dist/lib}/custom-clipboard.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/BlotFormatter.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/Options.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/actions/Action.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/actions/CustomResizeAction.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/actions/DeleteAction.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/image.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/specs/BlotSpec.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/specs/CustomImageSpec.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-image/specs/ImageSpec.cjs.js +0 -0
- /package/{lib → dist/lib}/custom-uploader.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/emoji-list/index.cjs.js.map +0 -0
- /package/{lib → dist/lib}/emoji/emoji-list/people.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/emoji-list.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/emoji-map.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/formats/emoji-blot.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/index.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/modules/emoji.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/modules/toolbar-emoji.cjs.js +0 -0
- /package/{lib → dist/lib}/emoji/utils.cjs.js +0 -0
- /package/{lib → dist/lib}/file/formats/file.cjs.js +0 -0
- /package/{lib → dist/lib}/file/index.cjs.js +0 -0
- /package/{lib → dist/lib}/file/modules/file-bar.cjs.js +0 -0
- /package/{lib → dist/lib}/format-painter/index.cjs.js +0 -0
- /package/{lib → dist/lib}/format-painter/index.cjs.js.map +0 -0
- /package/{lib → dist/lib}/global-link/constants.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/formats/customer-widget-link.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/formats/doc-link.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/formats/wiki-link.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/formats/work-item-link.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/global-link-panel.cjs.js.map +0 -0
- /package/{lib → dist/lib}/global-link/index.cjs.js +0 -0
- /package/{lib → dist/lib}/global-link/utils/createTable.cjs.js +0 -0
- /package/{lib → dist/lib}/link/formats/link.cjs.js +0 -0
- /package/{lib → dist/lib}/link/index.cjs.js +0 -0
- /package/{lib → dist/lib}/link/modules/tooltip.cjs.js +0 -0
- /package/{lib → dist/lib}/mention/Mention.cjs.js +0 -0
- /package/{lib → dist/lib}/mention/MentionLink.cjs.js +0 -0
- /package/{lib → dist/lib}/mention/constants.cjs.js +0 -0
- /package/{lib → dist/lib}/quick-menu/index.cjs.js +0 -0
- /package/{lib → dist/lib}/screenshot/index.cjs.js +0 -0
- /package/{lib → dist/lib}/soft-break/index.cjs.js +0 -0
- /package/{lib → dist/lib}/strike/index.cjs.js +0 -0
- /package/{lib → dist/lib}/syntax/index.cjs.js +0 -0
- /package/{lib → dist/lib}/table/better-table.cjs.js +0 -0
- /package/{lib → dist/lib}/table/formats/header.cjs.js +0 -0
- /package/{lib → dist/lib}/table/formats/list.cjs.js +0 -0
- /package/{lib → dist/lib}/table/formats/table.cjs.js +0 -0
- /package/{lib → dist/lib}/table/modules/table-column-tool.cjs.js +0 -0
- /package/{lib → dist/lib}/table/modules/table-operation-menu.cjs.js +0 -0
- /package/{lib → dist/lib}/table/modules/table-scroll-bar.cjs.js +0 -0
- /package/{lib → dist/lib}/table/modules/table-selection.cjs.js +0 -0
- /package/{lib → dist/lib}/table/table-config.cjs.js +0 -0
- /package/{lib → dist/lib}/table/utils/index.cjs.js +0 -0
- /package/{lib → dist/lib}/table/utils/node-matchers.cjs.js +0 -0
- /package/{lib → dist/lib}/toolbar/better-picker.cjs.js +0 -0
- /package/{lib → dist/lib}/toolbar/index.cjs.js +0 -0
- /package/{lib → dist/lib}/utils/debounce.cjs.js +0 -0
- /package/{lib → dist/lib}/utils/image.cjs.js +0 -0
- /package/{lib → dist/lib}/utils/image.cjs.js.map +0 -0
- /package/{lib → dist/lib}/utils/method.cjs.js +0 -0
- /package/{lib → dist/lib}/utils/scroll-lock.cjs.js +0 -0
- /package/{lib → dist/lib}/utils/scroll-lock.cjs.js.map +0 -0
- /package/{lib → dist/lib}/video/index.cjs.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons.config.es.js","sources":["../../../src/config/icons.config.ts"],"sourcesContent":["export const UNDO_ICON = `<svg width=\"16px\" height=\"14px\" viewBox=\"0 0 16 14\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(0.000000, -1.000000)\" fill=\"#293040\">\n <path d=\"M11,5 C13.7614237,5 16,7.23857625 16,10 C16,12.7614237 13.7614237,15 11,15 L7,15 L7,14 L11,14\n C13.209139,14 15,12.209139 15,10 C15,7.790861 13.209139,6 11,6 L5,6 L5,10 L0,5.5 L5,1 L5,5 L11,5 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const REDO_ICON = `<svg width=\"16px\" height=\"14px\" viewBox=\"0 0 16 14\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(0.000000, -1.000000)\" fill=\"#293040\">\n <path d=\"M5,5 L11,5 L11,1 L16,5.5 L11,10 L11,6 L5,6 C2.790861,6 1,7.790861 1,10 C1,12.209139 2.790861,14 5,14 L9,14\n L9,15 L5,15 C2.23857625,15 0,12.7614237 0,10 C0,7.23857625 2.23857625,5 5,5 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const CLEAN_ICON = `<svg width=\"16px\" height=\"15px\" viewBox=\"0 0 16 15\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#293040\">\n <path d=\"M4.32708124,14 L8.37150583,14 L10.5729409,11.5550586 L4.6297198,6.20375828 L1.25465311,9.95542661\n C1.09078634,10.1375782 1.0006437,10.3742369 1.00180556,10.6192474 C1.00295568,10.8617824 1.10621221,11.092615\n 1.28624979,11.2551297 L4.32708124,14 Z M16,14 L16,15 L3.93760008,15 L0.597250175,11.9923354 C0.217072683,11.6500221\n 1.59049582e-13,11.1091757 1.59428026e-13,10.6149383 C1.59806471e-13,10.1207008 0.183000942,9.64396706 0.513710349,9.27667705\n L8.56855175,0.330869394 L16,7.02217546 L9.71713856,14 L16,14 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const BOLD_ICON = `<svg width=\"12px\" height=\"16px\" viewBox=\"0 0 12 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-2.000000, 0.000000)\" fill=\"#293040\" fill-rule=\"nonzero\">\n <path d=\"M11.540636,7.0842147 C13.0068647,7.89340318 14,9.45459285 14,11.2477417 C14,13.8723415 11.8723415,16\n 9.2477417,16 L2,16 L2,7.99258423 L2,-5.06261699e-14 L9.00370789,-4.75175455e-14 C11.2107991,-4.79229815e-14 13,1.78920092\n 13,3.99629211 C13,5.24014846 12.4317244,6.35127692 11.540636,7.0842147 Z M3.5,1.5 L3.5,6.49258423 L9.00370789,6.49258423\n C10.382372,6.49258423 11.5,5.37495618 11.5,3.99629211 C11.5,2.61762805 10.382372,1.5 9.00370789,1.5 L3.5,1.5 Z M3.5,14.5\n L9.2477417,14.5 C11.0439144,14.5 12.5,13.0439144 12.5,11.2477417 C12.5,9.45156904 11.0439144,7.9954834 9.2477417,7.9954834\n L3.5,7.9954834 L3.5,14.5 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const ITALIC_ICON = `<svg width=\"9px\" height=\"16px\" viewBox=\"0 0 9 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-4.000000, 0.000000)\" fill=\"#293040\">\n <path d=\"M10.2565501,1.5 L8.41332415,14.5 L12,14.5 L12,16 L4,16 L4,14.5 L6.90083611,14.5 L8.74406208,1.5 L5,1.5\n L5,0 L13,0 L13,1.5 L10.2565501,1.5 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const UNDERLINE_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <polygon fill=\"#293040\" points=\"2 14 14 14 14 16 2 16\"></polygon>\n <path d=\"M4.5,3 L4.5,7 C4.5,8.93299662 6.06700338,10.5 8,10.5 C9.93299662,10.5 11.5,8.93299662 11.5,7 L11.5,1.5\n L11.4998322,0 L13,0 L13,7 C13,9.76142375 10.7614237,12 8,12 C5.23857625,12 3,9.76142375 3,7 L3,0 L4.49893188,0\n L4.49893188,3 L4.5,3 Z\" fill=\"#293040\" fill-rule=\"nonzero\"></path>\n</g>\n</svg>`\n\nexport const STRIKE_ICON = `<svg width=\"14px\" height=\"16px\" viewBox=\"0 0 14 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1.000000, 0.000000)\" fill=\"#293040\">\n <path d=\"M9.93321102,9 L1,9 L1,7 L3.84197169,7 C3.31015092,6.28495098 3,5.42507332 3,4.5 C3,2.01471863\n 5.23857625,0 8,0 C10.5736409,0 12.6931261,1.75002477 12.969484,4 L11.4507289,4 C11.1737591,2.60626201 9.76011738,1.5 8,1.5\n C6.03382604,1.5 4.5,2.88044344 4.5,4.5 C4.5,5.52604325 5.11562351,6.45611494 6.06678898,7 L15,7 L15,9 L12.1580283,9\n C12.6898491,9.71504902 13,10.5749267 13,11.5 C13,13.9852814 10.7614237,16 8,16 C5.42635908,16 3.30687393,14.2499752\n 3.03051599,12 L4.54927112,12 C4.82624092,13.393738 6.23988262,14.5 8,14.5 C9.96617396,14.5 11.5,13.1195566 11.5,11.5\n C11.5,10.4739568 10.8843765,9.54388506 9.93321102,9 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const COLOR_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <polygon fill=\"#293040\" points=\"2 14 14 14 14 16 2 16\"></polygon>\n <path d=\"M10.9166667,8.5 L5.08333333,8.5 L4.26618123,10.461165 L3.62338765,12 L2,12 L7,0 L9,0 L14,12 L12.3824972,12\n L11.5753038,10.0807292 L10.9166667,8.5 Z M10.2916667,7 L8,1.5 L5.70833333,7 L10.2916667,7 Z\"\n fill=\"#293040\" fill-rule=\"nonzero\"></path>\n</g>\n</svg>`\n\nexport const BACKGROUND_COLOR_ICON = ` <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M4.64447006,9.66583547 L3.17597929,8.33216965 L6.15933183,5.11039074 L5.42508645,4.44355783\n L9.39179153,1.0658141e-13 L16,6.00149616 L12.0332949,10.445054 L11.2990495,9.77822108 L8.31569698,13 L6.84720621,11.6663342\n L5.69344476,12.9587937 L2.36400649,12.9587937 L2,12.6282074 L4.64447006,9.66583547 Z M4.57134219,8.25840959\n L8.24256911,11.5925741 L10.5648041,9.11138818 L6.89357722,5.77722364 L4.57134219,8.25840959 Z M14.6046371,6.07525623\n L9.4649194,1.40742588 L6.82044935,4.36979777 L11.960167,9.03762811 L14.6046371,6.07525623 Z M2,14 L14,14 L14,16 L2,16 L2,14 Z\"\n fill=\"#293040\"></path>\n</g>\n</svg>`\n\nexport const ALIGN_LEFT_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M0,0 L1.5,0 L1.5,16 L0,16 L0,0 Z M4,3 L13,3 L13,7 L4,7 L4,3 Z M5,4 L5,6 L12,6 L12,4 L5,4 Z M4,9 L16,9\n L16,13 L4,13 L4,9 Z M5,10 L5,12 L15,12 L15,10 L5,10 Z\" fill=\"#293040\"></path>\n</g>\n</svg>`\n\nexport const ALIGN_CENTER_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M8.75,7 L8.75,9 L16,9 L16,13 L8.75,13 L8.75,16 L7.25,16 L7.25,13 L0,13 L0,9 L7.25,9 L7.25,7 L2,7\n L2,3 L7.25,3 L7.25,0 L8.75,0 L8.75,3 L14,3 L14,7 L8.75,7 Z M1,10 L1,12 L15,12 L15,10 L1,10 Z M3,4 L3,6 L13,6\n L13,4 L3,4 Z\" fill=\"#293040\"></path>\n</g>\n</svg>`\n\nexport const ALIGN_RIGHT_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M14.5,0 L16,0 L16,16 L14.5,16 L14.5,0 Z M3,3 L12,3 L12,7 L3,7 L3,3 Z M4,4 L4,6 L11,6 L11,4 L4,4 Z\n M0,9 L12,9 L12,13 L0,13 L0,9 Z M1,10 L1,12 L11,12 L11,10 L1,10 Z\" fill=\"#293040\"></path>\n</g>\n</svg>`\n\nexport const LIST_UNORDERED_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#293040\">\n <path d=\"M5,1 L16,1 L16,2.5 L5,2.5 L5,1 Z M2,4 C0.8954305,4 0,3.1045695 0,2 C0,0.8954305 0.8954305,0 2,0\n C3.1045695,0 4,0.8954305 4,2 C4,3.1045695 3.1045695,4 2,4 Z M2,3 C2.55228475,3 3,2.55228475 3,2 C3,1.44771525\n 2.55228475,1 2,1 C1.44771525,1 1,1.44771525 1,2 C1,2.55228475 1.44771525,3 2,3 Z M2,10 C0.8954305,10 0,9.1045695\n 0,8 C0,6.8954305 0.8954305,6 2,6 C3.1045695,6 4,6.8954305 4,8 C4,9.1045695 3.1045695,10 2,10 Z M2,9 C2.55228475,9\n 3,8.55228475 3,8 C3,7.44771525 2.55228475,7 2,7 C1.44771525,7 1,7.44771525 1,8 C1,8.55228475 1.44771525,9 2,9 Z\n M2,16 C0.8954305,16 0,15.1045695 0,14 C0,12.8954305 0.8954305,12 2,12 C3.1045695,12 4,12.8954305 4,14 C4,15.1045695\n 3.1045695,16 2,16 Z M2,15 C2.55228475,15 3,14.5522847 3,14 C3,13.4477153 2.55228475,13 2,13 C1.44771525,13 1,13.4477153\n 1,14 C1,14.5522847 1.44771525,15 2,15 Z M5,7 L16,7 L16,8.5 L5,8.5 L5,7 Z M5,13 L16,13 L16,14.5 L5,14.5 L5,13 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const LIST_ORDERED_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g fill=\"#293040\">\n <path d=\"M5,1 L16,1 L16,2.5 L5,2.5 L5,1 Z M0,0 L2,0 L2,3 L3,3 L3,4 L0,4 L0,3 L1,3 L1,1 L0,1 L0,0 Z M5,7 L16,7\n L16,8.5 L5,8.5 L5,7 Z M5,13 L16,13 L16,14.5 L5,14.5 L5,13 Z M0,15 L1.75,15 C1.88807119,15 2,14.8880712 2,14.75\n C2,14.6119288 1.88807119,14.5 1.75,14.5 L0,14.5 L0,13.5 L1.75,13.5 C1.88807119,13.5 2,13.3880712 2,13.25 C2,13.1119288\n 1.88807119,13 1.75,13 L0,13 L0,12 L1.5,12 C2.32842712,12 3,12.6715729 3,13.5 C3,13.6753177 2.96992289,13.8436105\n 2.91464715,14 C2.96992289,14.1563895 3,14.3246823 3,14.5 C3,15.3284271 2.32842712,16 1.5,16 L0,16 L0,15 Z M2,7.5\n C2,7.35127258 1.9375,7.22627258 1.84375,7.13845444 C1.76307119,7.05596441 1.63807119,7 1.5,7 C1.22385763,7 1,7.22385763\n 1,7.5 L1.62630326e-19,7.5 C0.147399902,6.5 0.647399902,6 1.5,6 C2.32842712,6 3,6.67157288 3,7.5 C3,8.07312512\n 2.50016007,8.55650475 2.22821045,8.74661255 C1.95626083,8.93672035 1.77325955,8.99789088 1.76769962,9 L3,9 L3,10\n L0,10 L1.62630326e-19,9 C0.619515577,8.77257137 1.06188822,8.55939591 1.32711792,8.36047363 C1.6371448,8.12795347\n 1.87259637,7.91592701 1.96143498,7.69289356 C1.98627694,7.633537 2,7.5683711 2,7.5 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const LIST_CHECK_ICON = `<svg width=\"15px\" height=\"14px\" viewBox=\"0 0 15 14\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1058.000000, -97.000000)\">\n <g transform=\"translate(407.000000, 93.000000)\">\n <g transform=\"translate(650.000000, 2.000000)\">\n <rect x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <polygon fill=\"#293040\" fill-rule=\"nonzero\" points=\"14 15 14 9.37100497 15 9.37100497 15\n 16 1 16 1 2 10.1946467 2 10.1946467 3 2 3 2 15\"></polygon>\n <path d=\"M14.4525049,2.48740937 C14.7356009,2.1850362 15.8305911,3.21021745 15.5474951,3.51259063\n L8.45990379,11.0828057 L4.46558382,7.02621226 C4.17496481,6.73106236 4.17863783,6.25620283 4.47378774,5.96558382\n C4.76893764,5.67496481 5.24379717,5.67863783 5.53441618,5.97378774 L8.43263799,8.91719429 L14.4525049,2.48740937 Z\"\n fill=\"#293040\" fill-rule=\"nonzero\"></path>\n </g>\n </g>\n </g>\n</g>\n</svg>`\n\nexport const CODE_BLOCK_ICON = `<svg t=\"1565073788159\" class=\"icon\" viewBox=\"0 0 1024 1024\" width=\"16\" height=\"16\">\n<path d=\"M110.78 469.52l70.44-39.24A60 60 0 0 0 212 377.9L212 212a120 120 0 0 1 120-120l60 0a30\n30 0 0 1 0 60L332 152a60 60 0 0 0-59.99999999 60l0 175.38a120 120 0 0\n1-63.48000001 105.9L173.42 512l35.1 18.72A120 120 0 0 1 272 636.56L272.00000001 812a60 60 0 0 0 59.99999999 60l60 0a30 30\n0 1 1 0 60L332 932a120 120 0 0 1-120-120l0-165.9a60\n60 0 0 0-30.78-52.38l-70.44-39.24a45 45 0 0 1 0-84.96z m742.44 1e-8a45 45 0 0 1 0 84.95999998l-70.44 39.24000001a60\n60 0 0 0-30.78000001 52.38L751.99999999 812a120 120 0 0 1-119.99999999 120L572 932a30 30\n0 1 1 0-60l60 0a60 60 0 0 0 60-60l0-175.38a120 120\n0 0 1 63.48-105.9L790.58 512l-35.1-18.72A120 120 0 0 1 692 387.44L692 212a60 60 0 0 0-60-60L572 152a30\n30 0 0 1 0-60l60 0a120 120 0 0 1 119.99999999 120l0 165.9a60 60 0 0 0 30.78000001 52.38l70.44 39.24000001z\"></path></svg>`\n\nexport const BLOCKQUOTE_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(0.000000, 1.000000)\" fill=\"#000000\" fill-rule=\"nonzero\">\n <path d=\"M6.86733556,12.5574136 L6.86733556,7.99108138 L2.52931996,7.99108138 C2.41516165,5.02296544\n 3.10011148,3.42474916 5.72575251,2.0548495 L5.72575251,0 C1.84437012,1.36989967 -0.0963210702,3.88138239 0.0178372352,7.76276477\n L0.0178372352,12.5574136 L6.86733556,12.5574136 Z M16,12.5574136 L16,7.99108138 L11.6619844,7.99108138 C11.5478261,5.02296544\n 12.2327759,3.42474916 14.8584169,2.0548495 L14.8584169,0 C10.9770346,1.36989967 9.03634337,3.88138239 9.15050167,7.76276477\n L9.15050167,12.5574136 L16,12.5574136 Z\"></path>\n </g>\n</g>\n</svg>`\n\nexport const IMAGE_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1196.000000, -96.000000)\" fill=\"#293040\" fill-rule=\"nonzero\">\n <g transform=\"translate(407.000000, 93.000000)\">\n <path d=\"M804,4 L790,4 L790,11.940983 L794.058237,9.91186456 L798.536534,13.3949845 L801.014076,11.908459\n L804,13.8990748 L804,4 Z M803.72265,14.9160251 L800.985924,13.091541 L798.463466,14.6050155 L793.941763,11.0881354\n L790.223607,12.9472136 C790.151699,12.9831673 790.07527,13.000168 790,13.0001094 L790,18 L804,18 L804,15.0000529\n C803.90455,15.0001406 803.80803,14.9729453 803.72265,14.9160251 Z M789,19 L789,3 L805,3 L805,19 L789,19 Z M801,9\n C800.447715,9 800,8.55228475 800,8 C800,7.44771525 800.447715,7 801,7 C801.552285,7 802,7.44771525 802,8 C802,8.55228475\n 801.552285,9 801,9 Z\"></path>\n </g>\n </g>\n</g>\n</svg>`\n\nexport const FILE_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" >\n<g id=\"icon/01\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M16,16 L1,16 L1,0 L12,0 L16,4 L16,16 Z M11,1 L2,1 L2,15 L15,15 L15,\n 5 L11,5 L11,1 Z M12,1.533 L12,4 L14.52,4 L12,1.533 Z\"\n id=\"Combined-Shape\" fill=\"#293040\" fill-rule=\"nonzero\">\n </path>\n <polygon id=\"path\" fill=\"#293040\" points=\"8 8 6 8 8.5 5 11 8 9 8 9 12 8 12\"></polygon>\n</g>\n</svg>`\n\nexport const TABLE_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1227.000000, -96.000000)\" fill=\"#293040\">\n <g transform=\"translate(407.000000, 93.000000)\">\n <path d=\"M820,3 L836,3 L836,19 L820,19 L820,3 Z M821,4 L821,8 L835,8 L835,4 L821,4 Z M821,9 L821,13 L825,\n 13 L825,9 L821,9 Z M821,14 L821,18 L825,18 L825,14 L821,14 Z M826,9 L826,13 L830,13 L830,9 L826,9 Z M826,\n 14 L826,18 L830,18 L830,14 L826,14 Z M831,9 L831,13 L835,13 L835,9 L831,9 Z M831,14 L831,18 L835,18 L835,\n 14 L831,14 Z\"></path>\n </g>\n </g>\n</g>\n</svg>`\n\nexport const LINK_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1258.000000, -96.000000)\" fill=\"#293040\" fill-rule=\"nonzero\">\n <g transform=\"translate(407.000000, 93.000000)\">\n <path d=\"M855.499,13.863 L861.863,7.499 L862.573,8.209 L856.209,14.573 L855.499,13.863 Z M854.646498,9.99452063\n C854.661947,10.0108615 854.677673,10.0270363 854.693676,10.0430391 L855.388521,10.7378841 L852.802248,13.3241571\n C851.732584,14.3938208 851.732584,16.1280884 852.802248,17.1977522 C853.871912,18.2674159 855.606179,18.2674159\n 856.675843,17.1977522 L859.262116,14.6114792 L859.956961,15.3063242 C859.972964,15.3223269 859.989138,15.3380528\n 860.005479,15.3535018 L857.468863,17.8901187 C855.989021,19.3699604 853.589723,19.3699604 852.109881,17.8901187\n C850.63004,16.4102769 850.63004,14.0109793 852.109881,12.5311375 L854.646498,9.99452063 Z M857.994521,6.64649819\n L860.531137,4.10988134 C862.010979,2.63003955 864.410277,2.63003955 865.890119,4.10988134 C867.36996,5.58972313\n 867.36996,7.98902073 865.890119,9.46886252 L863.353502,12.0054794 C863.338053,11.9891385 863.322327,11.9729637\n 863.306324,11.9569609 L862.611479,11.2621159 L865.197752,8.67584293 C866.267416,7.60617918 866.267416,5.87191157\n 865.197752,4.80224782 C864.128088,3.73258406 862.393821,3.73258406 861.324157,4.80224782 L858.737884,7.38852082\n L858.043039,6.69367584 C858.027036,6.67767307 858.010862,6.66194719 857.994521,6.64649819 Z\"></path>\n </g>\n </g>\n</g>\n</svg>`\n\nexport const EMOJI_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M8,16 C3.581722,16 0,12.418278 0,8 C0,3.581722 3.581722,0 8,0 C12.418278,0 16,3.581722 16,8 C16,12.418278\n 12.418278,16 8,16 Z M8,15 C11.8659932,15 15,11.8659932 15,8 C15,4.13400675 11.8659932,1 8,1 C4.13400675,1 1,4.13400675\n 1,8 C1,11.8659932 4.13400675,15 8,15 Z M5,7 C4.44771525,7 4,6.55228475 4,6 C4,5.44771525 4.44771525,5 5,5 C5.55228475,5\n 6,5.44771525 6,6 C6,6.55228475 5.55228475,7 5,7 Z M11,7 C10.4477153,7 10,6.55228475 10,6 C10,5.44771525 10.4477153,5 11,5\n C11.5522847,5 12,5.44771525 12,6 C12,6.55228475 11.5522847,7 11,7 Z M4,10 L12,10 C11.5415129,11.7252272 9.9244686,13 8,13\n C6.0755314,13 4.45848714,11.7252272 4,10 Z\" fill=\"#293040\"></path>\n</g>\n</svg>`\n\nexport const SCREENSHOT_ICON = `<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\">\n<g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1529.000000, -96.000000)\">\n <g transform=\"translate(1529.000000, 96.000000)\">\n <rect fill=\"#000000\" fill-rule=\"nonzero\" opacity=\"0\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <polyline stroke=\"currentColor\" points=\"16 14 2 14 2 0 2 0\"></polyline>\n <polyline stroke=\"currentColor\" points=\"4 2 14 2 14 12\"></polyline>\n <rect fill=\"currentColor\" x=\"0\" y=\"1.5\" width=\"2\" height=\"1\"></rect>\n <rect fill=\"currentColor\"\n transform=\"translate(14.000000, 15.000000)\n rotate(-90.000000)\n translate(-14.000000, -15.000000) \" x=\"13\" y=\"14.5\" width=\"2\" height=\"1\">\n </rect>\n </g>\n </g>\n</g>\n</svg>`\n\nexport const CODE_ICON = `<svg t=\"1721956397010\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4254\" width=\"20\" height=\"20\"><path d=\"M438.4 849.1l222.7-646.7c0.2-0.5 0.3-1.1 0.4-1.6L438.4 849.1z\" opacity=\".224\" p-id=\"4255\"></path><path d=\"M661.2 168.7h-67.5c-3.4 0-6.5 2.2-7.6 5.4L354.7 846c-0.3 0.8-0.4 1.7-0.4 2.6 0 4.4 3.6 8 8 8h67.8c3.4 0 6.5-2.2 7.6-5.4l0.7-2.1 223.1-648.3 7.4-21.4c0.3-0.8 0.4-1.7 0.4-2.6-0.1-4.5-3.6-8.1-8.1-8.1zM954.6 502.1c-0.8-1-1.7-1.9-2.7-2.7l-219-171.3c-3.5-2.7-8.5-2.1-11.2 1.4-1.1 1.4-1.7 3.1-1.7 4.9v81.3c0 2.5 1.1 4.8 3.1 6.3l115 90-115 90c-1.9 1.5-3.1 3.8-3.1 6.3v81.3c0 4.4 3.6 8 8 8 1.8 0 3.5-0.6 4.9-1.7l219-171.3c6.9-5.4 8.2-15.5 2.7-22.5zM291.1 328.1l-219 171.3c-1 0.8-1.9 1.7-2.7 2.7-5.4 7-4.2 17 2.7 22.5l219 171.3c1.4 1.1 3.1 1.7 4.9 1.7 4.4 0 8-3.6 8-8v-81.3c0-2.5-1.1-4.8-3.1-6.3l-115-90 115-90c1.9-1.5 3.1-3.8 3.1-6.3v-81.3c0-1.8-0.6-3.5-1.7-4.9-2.7-3.5-7.7-4.1-11.2-1.4z\" p-id=\"4256\"></path></svg>`\n\nexport const MENTION_ICON = `<i class=\"icon-set-keyword\"></i>`\n\nexport const QUICK_MENU_ICON = `<i class=\"icon-publish\"></i>`\n\nexport const SAVE_ICON = `<i class=\"icon-save\"></i>`\n\nexport const HELP_ICON = `<svg t=\"1721963829631\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"9764\" width=\"20\" height=\"20\"><path d=\"M512 74.666667C270.933333 74.666667 74.666667 270.933333 74.666667 512S270.933333 949.333333 512 949.333333 949.333333 753.066667 949.333333 512 753.066667 74.666667 512 74.666667z m0 810.666666c-204.8 0-373.333333-168.533333-373.333333-373.333333S307.2 138.666667 512 138.666667 885.333333 307.2 885.333333 512 716.8 885.333333 512 885.333333z\" fill=\"#000000\" p-id=\"9765\"></path><path d=\"M512 746.666667m-42.666667 0a42.666667 42.666667 0 1 0 85.333334 0 42.666667 42.666667 0 1 0-85.333334 0Z\" fill=\"#000000\" p-id=\"9766\"></path><path d=\"M512 245.333333c-76.8 0-138.666667 61.866667-138.666667 138.666667 0 17.066667 14.933333 32 32 32s32-14.933333 32-32c0-40.533333 34.133333-74.666667 74.666667-74.666667s74.666667 34.133333 74.666667 74.666667c0 27.733333-53.333333 76.8-91.733334 100.266667-8.533333 6.4-14.933333 17.066667-14.933333 27.733333v106.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32v-89.6c34.133333-25.6 106.666667-83.2 106.666667-145.066667 0-76.8-61.866667-138.666667-138.666667-138.666667z\" fill=\"#000000\" p-id=\"9767\"></path></svg>`\n\nexport const SCROLL_TABLE_ICON = `<i class=\"icon-switch\"></i>`\n\nexport const GLOBAL_LINK_ICON = `<svg t=\"1721963743677\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"8628\" width=\"20\" height=\"20\"><path d=\"M713.130667 283.221333V228.352a9.159111 9.159111 0 0 0-9.130667-9.130667H265.102222a9.159111 9.159111 0 0 0-9.102222 9.130667v54.869333c0 5.034667 4.096 9.130667 9.130667 9.130667H704a9.159111 9.159111 0 0 0 9.130667-9.130667z m-448 100.579556a9.130667 9.130667 0 0 0-9.130667 9.130667v54.869333c0 5.006222 4.096 9.130667 9.130667 9.130667h210.289777a9.159111 9.159111 0 0 0 9.159112-9.130667v-54.869333a9.159111 9.159111 0 0 0-9.159112-9.130667H265.130667z m164.579555 516.551111H164.579556V95.800889h640v279.352889c0 5.034667 4.096 9.159111 9.130666 9.159111h64a9.159111 9.159111 0 0 0 9.130667-9.159111V50.090667c0-20.252444-16.327111-36.579556-36.551111-36.579556H118.840889c-20.195556 0-36.551111 16.327111-36.551111 36.579556v896c0 20.195556 16.327111 36.551111 36.551111 36.551111h310.869333a9.159111 9.159111 0 0 0 9.130667-9.130667v-64a9.159111 9.159111 0 0 0-9.130667-9.159111z\" fill=\"#000000\" fill-opacity=\".85\" p-id=\"8629\"></path><path d=\"M837.859556 656.298667l-107.861334 186.794666-68.977778-39.822222 107.861334-186.794667 68.977778 39.822223z\" fill=\"#000000\" p-id=\"8630\"></path><path d=\"M691.114667 514.844444a159.146667 159.146667 0 0 1 217.315555-58.225777 159.061333 159.061333 0 0 1 58.197334 217.315555l-55.637334 96.369778-68.977778-39.822222 55.637334-96.369778a79.416889 79.416889 0 1 0-137.557334-79.416889l-55.637333 96.369778-68.977778-39.822222 55.637334-96.369778V514.844444z m-28.558223 208.782223l-56.462222 97.792a79.416889 79.416889 0 0 0 137.557334 79.388444l56.462222-97.763555 68.977778 39.822222-56.462223 97.763555a159.061333 159.061333 0 1 1-275.484444-159.061333l56.433778-97.763556 68.977777 39.822223z\" fill=\"#000000\" p-id=\"8631\"></path></svg>`\n\nexport const FULLSCREEN_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" width=\"100%\" height=\"100%\" viewBox=\"0 0 1024 1024\" version=\"1.1\">\n <path fill=\"#333333\" d=\"M64 384h96V160h224.2V64H64zM639.8 64v96H864v224h96V64zM864 864H639.8v96H960V639.61h-96zM160 639.61H64V960h320.2v-96H160z\"/>\n</svg>`\n\nexport const TRIANGLE_DOWN_ICON = `<i class=\"icon-triangle-down\"></i>`\n\nexport const FORMAT_PAINTER_ICON = `<svg viewBox=\"0 0 32 32\"><path fill=\"currentColor\" d=\"M28.83 23.17L23 17.33V13a1 1 0 0 0-.29-.71l-10-10a1 1 0 0 0-1.42 0l-9 9a1 1 0 0 0 0 1.42l10 10A1 1 0 0 0 13 23h4.34l5.83 5.84a4 4 0 0 0 5.66-5.66ZM6 10.41l2.29 2.3l1.42-1.42L7.41 9L9 7.41l4.29 4.3l1.42-1.42L10.41 6L12 4.41L18.59 11L11 18.59L4.41 12Zm21.41 17a2 2 0 0 1-2.82 0l-6.13-6.12a1.8 1.8 0 0 0-.71-.29h-4.34l-1-1L20 12.41l1 1v4.34a1 1 0 0 0 .29.7l6.12 6.14a2 2 0 0 1 0 2.82\"/></svg>`\n"],"names":[],"mappings":"AAAO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASlB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASlB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYnB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAalB,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASpB,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASvB,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAapB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASnB,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9B,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOxB,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1B,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOzB,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe5B,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB1B,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBxB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWxB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYxB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAenB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUlB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAanB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBlB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWnB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBxB,MAAM,YAAY;AAElB,MAAM,eAAe;AAErB,MAAM,kBAAkB;AAExB,MAAM,YAAY;AAElB,MAAM,YAAY;AAElB,MAAM,oBAAoB;AAE1B,MAAM,mBAAmB;AAEzB,MAAM,kBAAkB;AAAA;AAAA;AAIxB,MAAM,qBAAqB;AAE3B,MAAM,sBAAsB;"}
|
package/es/config.es.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.es.js","sources":["../../src/config.ts"],"sourcesContent":["import { isNullOrUndefined } from './config/editor.utils'\nimport { EN_US } from './config/i18n/en-us'\n\nimport { ZH_CN } from './config/i18n/zh-cn'\nimport {\n ALIGN_CENTER_ICON,\n ALIGN_LEFT_ICON,\n ALIGN_RIGHT_ICON,\n BACKGROUND_COLOR_ICON,\n BLOCKQUOTE_ICON,\n BOLD_ICON,\n CLEAN_ICON,\n CODE_BLOCK_ICON,\n CODE_ICON,\n COLOR_ICON,\n EMOJI_ICON,\n FILE_ICON,\n FORMAT_PAINTER_ICON,\n FULLSCREEN_ICON,\n GLOBAL_LINK_ICON,\n HELP_ICON,\n IMAGE_ICON,\n ITALIC_ICON,\n LINK_ICON,\n LIST_CHECK_ICON,\n LIST_ORDERED_ICON,\n LIST_UNORDERED_ICON,\n REDO_ICON,\n SCREENSHOT_ICON,\n STRIKE_ICON,\n TABLE_ICON,\n TRIANGLE_DOWN_ICON,\n UNDERLINE_ICON,\n UNDO_ICON,\n} from './config/icons.config'\n\nconst localLang = localStorage.getItem('lang') || 'zh-cn'\nexport const LANG_CONF = localLang === 'en-us' ? EN_US : ZH_CN\n\nexport const ICONS_CONFIG: { [key: string]: any } = {\n 'undo': UNDO_ICON,\n 'redo': REDO_ICON,\n 'clean': CLEAN_ICON,\n\n 'bold': BOLD_ICON,\n 'italic': ITALIC_ICON,\n 'underline': UNDERLINE_ICON,\n 'strike': STRIKE_ICON,\n\n 'font': '',\n 'size': '',\n\n 'color': `<span class=\"ql-color-inner\">\n ${COLOR_ICON}\n ${TRIANGLE_DOWN_ICON}\n <span class=\"current-color-line\"></span>\n </span>`,\n 'background': `<span class=\"ql-color-inner\">\n ${BACKGROUND_COLOR_ICON}\n ${TRIANGLE_DOWN_ICON}\n <span class=\"current-color-line color-line-background\"></span>\n </span>`,\n\n 'align': {\n '': ALIGN_LEFT_ICON,\n 'center': ALIGN_CENTER_ICON,\n 'right': ALIGN_RIGHT_ICON,\n },\n 'list': {\n bullet: LIST_UNORDERED_ICON,\n ordered: LIST_ORDERED_ICON,\n check: LIST_CHECK_ICON,\n },\n\n 'code': CODE_ICON,\n 'code-block': CODE_BLOCK_ICON,\n 'blockquote': BLOCKQUOTE_ICON,\n\n 'image': IMAGE_ICON,\n 'file': FILE_ICON,\n 'better-table': TABLE_ICON,\n 'link': LINK_ICON,\n 'global-link': GLOBAL_LINK_ICON,\n 'fullscreen': FULLSCREEN_ICON,\n 'emoji': EMOJI_ICON,\n 'help': HELP_ICON,\n 'screenshot': SCREENSHOT_ICON,\n 'format-painter': FORMAT_PAINTER_ICON,\n}\n\nexport const TABLE_RIGHT_MENU_CONFIG = {\n copyCells: {\n text: LANG_CONF['copy-cells'],\n },\n copyTable: {\n text: LANG_CONF['copy-table'],\n },\n cutCells: {\n text: LANG_CONF['cut-cells'],\n },\n emptyCells: {\n text: LANG_CONF['empty-cells'],\n },\n insertRowUp: {\n text: LANG_CONF['insert-row-up'],\n },\n insertRowDown: {\n text: LANG_CONF['insert-row-down'],\n },\n insertColumnLeft: {\n text: LANG_CONF['insert-column-left'],\n },\n insertColumnRight: {\n text: LANG_CONF['insert-column-right'],\n },\n mergeCells: {\n text: LANG_CONF['merge-cells'],\n },\n unmergeCells: {\n text: LANG_CONF['unmerge-cells'],\n },\n deleteRow: {\n text: LANG_CONF['delete-row'],\n },\n deleteColumn: {\n text: LANG_CONF['delete-column'],\n },\n deleteTable: {\n text: LANG_CONF['delete-table'],\n },\n}\n\n// 触发上传\nexport function inputFile(type, accept) {\n const defaultMIMETypes = this.quill.uploader.options[type].join(', ')\n const mimeTypes = accept || defaultMIMETypes\n let fileInput = this.container.querySelector(`input.ql-${type}[type=file]`)\n if (isNullOrUndefined(fileInput)) {\n fileInput = document.createElement('input')\n fileInput.classList.add(`ql-${type}`)\n fileInput.setAttribute('type', 'file')\n fileInput.setAttribute('accept', mimeTypes)\n if (\n this.quill.uploader.options.enableMultiUpload === true\n || (this.quill.uploader.options.enableMultiUpload.file && type === 'file')\n || (this.quill.uploader.options.enableMultiUpload.image && type === 'image')\n ) {\n fileInput.setAttribute('multiple', '')\n }\n fileInput.addEventListener('change', () => {\n const range = this.quill.getSelection(true)\n this.quill.uploader.upload(range, fileInput.files, type === 'file')\n fileInput.value = ''\n })\n this.container.appendChild(fileInput)\n }\n fileInput.click()\n}\n\nexport function getListValue(value, preListValue) {\n let curListValue = value\n if (preListValue && preListValue === value) {\n curListValue = false\n }\n else if (value === 'check') {\n if (preListValue === 'checked' || preListValue === 'unchecked') {\n curListValue = false\n }\n else {\n curListValue = 'unchecked'\n }\n }\n return curListValue\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/counter/index.ts"],"sourcesContent":["import type { ICounterOption } from '../config/types'\nimport Quill from 'quill'\nimport { LANG_CONF } from '../config'\n\nexport default class Counter {\n container: HTMLDivElement\n options: ICounterOption\n defaultOptions: ICounterOption = {\n format: 'text',\n unit: 'char',\n template: LANG_CONF['counter-template'],\n count: 500,\n }\n\n // @ts-ignore\n constructor(private quill: Quill, options: ICounterOption) {\n this.options = { ...this.defaultOptions, ...options }\n this.container = quill.addContainer('ql-counter')\n quill.on(Quill.events.TEXT_CHANGE, this.renderCount)\n this.renderCount()\n }\n\n renderCount = () => {\n setTimeout(() => {\n // @ts-ignore\n const { format, count: totalCount, unit, template: counterTemplate, errorTemplate } = this.options\n const count = this.getContentLength(format)\n const restCount = totalCount - count\n const countUnit = unit === 'char' ? LANG_CONF.char : LANG_CONF.word\n let template: any = counterTemplate\n if (typeof template === 'function') {\n template = template(count, restCount)\n }\n const desc = template.replace('{{count}}', count)\n .replace('{{totalCount}}', String(totalCount))\n .replace('{{restCount}}', String(restCount))\n .replace(/{{countUnit}}/g, countUnit)\n\n let limitTemplate: any = errorTemplate || LANG_CONF['counter-limit-tips']\n if (typeof limitTemplate === 'function') {\n limitTemplate = limitTemplate(count, restCount)\n }\n const limitTips = limitTemplate.replace('{{countUnit}}', countUnit)\n if (restCount < 0) {\n this.container.innerHTML = errorTemplate ? limitTips : `<span style=\"color:red\">${limitTips}</span>`\n }\n else {\n this.container.innerHTML = desc\n }\n })\n }\n\n getContentLength(format) {\n let content = this.quill.getText()\n if (format === 'html') {\n let html = this.quill.root.innerHTML\n // 编辑器初始时\n if (html === '<p><br></p>' || html === '<div><br><div>') {\n html = ''\n }\n content = html\n }\n const text = content.replace(/\\s/g, '').trim()\n if (this.options.unit === 'word') {\n return !content.trim() ? 0 : content.trim().split(/\\s+/).length\n }\n return text.length\n }\n}\n"],"names":[],"mappings":";;AAIA,MAAqB,QAAQ;AAAA;AAAA,EAW3B,YAAoB,OAAc,SAAyB;AAAvC,SAAA,QAAA;AARa,SAAA,iBAAA;AAAA,MAC/B,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU,UAAU,kBAAkB;AAAA,MACtC,OAAO;AAAA,IAAA;AAWT,SAAA,cAAc,MAAM;AAClB,iBAAW,MAAM;AAET,cAAA,EAAE,QAAQ,OAAO,YAAY,MAAM,UAAU,iBAAiB,cAAc,IAAI,KAAK;AACrF,cAAA,QAAQ,KAAK,iBAAiB,MAAM;AAC1C,cAAM,YAAY,aAAa;AAC/B,cAAM,YAAY,SAAS,SAAS,UAAU,OAAO,UAAU;AAC/D,YAAI,WAAgB;AAChB,YAAA,OAAO,aAAa,YAAY;AACvB,qBAAA,SAAS,OAAO,SAAS;AAAA,QACtC;AACM,cAAA,OAAO,SAAS,QAAQ,aAAa,KAAK,EAC7C,QAAQ,kBAAkB,OAAO,UAAU,CAAC,EAC5C,QAAQ,iBAAiB,OAAO,SAAS,CAAC,EAC1C,QAAQ,kBAAkB,SAAS;AAElC,YAAA,gBAAqB,iBAAiB,UAAU,oBAAoB;AACpE,YAAA,OAAO,kBAAkB,YAAY;AACvB,0BAAA,cAAc,OAAO,SAAS;AAAA,QAChD;AACA,cAAM,YAAY,cAAc,QAAQ,iBAAiB,SAAS;AAClE,YAAI,YAAY,GAAG;AACjB,eAAK,UAAU,YAAY,gBAAgB,YAAY,2BAA2B,SAAS;AAAA,QAAA,OAExF;AACH,eAAK,UAAU,YAAY;AAAA,QAC7B;AAAA,MAAA,CACD;AAAA,IAAA;AAjCD,SAAK,UAAU,EAAE,GAAG,KAAK,gBAAgB,GAAG;AACvC,SAAA,YAAY,MAAM,aAAa,YAAY;AAChD,UAAM,GAAG,MAAM,OAAO,aAAa,KAAK,WAAW;AACnD,SAAK,YAAY;AAAA,EACnB;AAAA,EAgCA,iBAAiB,QAAQ;AACnB,QAAA,UAAU,KAAK,MAAM,QAAQ;AACjC,QAAI,WAAW,QAAQ;AACjB,UAAA,OAAO,KAAK,MAAM,KAAK;AAEvB,UAAA,SAAS,iBAAiB,SAAS,kBAAkB;AAChD,eAAA;AAAA,MACT;AACU,gBAAA;AAAA,IACZ;AACA,UAAM,OAAO,QAAQ,QAAQ,OAAO,EAAE,EAAE;AACpC,QAAA,KAAK,QAAQ,SAAS,QAAQ;AACzB,aAAA,CAAC,QAAQ,KAAS,IAAA,IAAI,QAAQ,KAAK,EAAE,MAAM,KAAK,EAAE;AAAA,IAC3D;AACA,WAAO,KAAK;AAAA,EACd;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-clipboard.es.js","sources":["../../src/custom-clipboard.ts"],"sourcesContent":["import Quill from 'quill'\nimport {\n ERROR_IMAGE_PLACEHOLDER_CN,\n ERROR_IMAGE_PLACEHOLDER_EN,\n} from './config/base64-image'\nimport { BIG_DELTA_LIMIT, LANG_CONF } from './config/editor.config'\nimport {\n hexToRgbA,\n imageFileToUrl,\n imageUrlToFile,\n insideTable,\n isNullOrUndefined,\n omit,\n replaceDeltaImage,\n splitWithBreak,\n} from './config/editor.utils'\n\nconst Clipboard = Quill.imports['modules/clipboard']\nconst Delta = Quill.import('delta')\n\nclass CustomClipboard extends Clipboard {\n quill\n convert\n onCopy\n matchers\n\n prepareMatching(container, nodeMatches) {\n const elementMatchers = []\n const textMatchers = []\n this.matchers.forEach((pair) => {\n const [selector, matcher] = pair\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher)\n break\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher)\n break\n default: {\n // word 的 v:shape 系列标签只能通过 getElementsByTagName 获取\n const vRegex = /v:(.+)/\n const nodeList = vRegex.test(selector)\n ? Array.from(container.getElementsByTagName(selector))\n : Array.from(container.querySelectorAll(selector))\n nodeList.forEach((node) => {\n if (nodeMatches.has(node)) {\n const matches = nodeMatches.get(node)\n matches.push(matcher)\n }\n else {\n nodeMatches.set(node, [matcher])\n }\n })\n break\n }\n }\n })\n return [elementMatchers, textMatchers]\n }\n\n onCaptureCopy(e, isCut = false) {\n if (e.defaultPrevented) {\n return\n }\n e.preventDefault()\n const [range] = this.quill.selection.getRange()\n if (isNullOrUndefined(range)) {\n return\n }\n const { html, text } = this.onCopy(range, isCut)\n\n // 兼容IE11浏览器`\n if (!e.clipboardData) {\n e.clipboardData = {\n types: 'text/plain',\n setData: (_type, value) => {\n return window.clipboardData.setData('Text', value)\n },\n }\n }\n\n // 复制代码时移除utf8中产生的不间断空格\\u00A0\n let plainText = text\n if (html.startsWith('<pre>')) {\n plainText = text.replace(/\\u00A0/g, ' ')\n }\n\n e.clipboardData.setData('text/html', html)\n e.clipboardData.setData('text/plain', plainText)\n if (isCut) {\n this.quill.deleteText(range, Quill.sources.USER)\n }\n }\n\n onCapturePaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) {\n return\n }\n e.preventDefault()\n const range = this.quill.getSelection(true)\n if (isNullOrUndefined(range)) {\n return\n }\n\n // 兼容IE11浏览器\n if (!e.clipboardData) {\n e.clipboardData = {\n types: 'text/plain',\n getData: () => {\n return window.clipboardData.getData('Text')\n },\n }\n }\n\n const html = e.clipboardData.getData('text/html')\n const text = e.clipboardData.getData('text/plain')\n const files = Array.from(e.clipboardData.files || [])\n const msExcelCheck = /<meta.*?Microsoft Excel\\s[\\d].*?>/\n\n if (html.search(msExcelCheck) === -1 && files.length > 0) {\n this.quill.uploader.upload(range, files)\n }\n else {\n const msWordCheck1\n = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i\n const msWordCheck2 = /xmlns:o=\"urn:schemas-microsoft-com/i\n const result = { html, text, files, rtf: null }\n if (html.search(msExcelCheck) !== -1) {\n result.html = renderStyles(html)\n }\n if (msWordCheck1.test(html) || msWordCheck2.test(html)) {\n // TODO: 当word文档包含heading时text/rtf读取为空,无法获取hex图片,待修复。可参考ckeditor5/issues/2493\n result.rtf = e.clipboardData.getData('text/rtf')\n }\n this.onPaste(range, result)\n }\n }\n\n onPaste(range, { html, text, files: clipboardFiles, rtf }) {\n const hexImages = this.extractImageDataFromRtf(rtf)\n const rootBgColor = getComputedStyle(this.quill.root).backgroundColor\n const formats = this.quill.getFormat(range.index)\n let pastedDelta = this.convert({ text, html }, formats)\n pastedDelta = replaceDeltaWhiteSpace(pastedDelta, rootBgColor)\n const deltaLength = pastedDelta.ops.length\n\n let loadingTipsContainer\n if (deltaLength > BIG_DELTA_LIMIT) {\n loadingTipsContainer = this.quill.addContainer('ql-loading-tips')\n loadingTipsContainer.innerHTML = LANG_CONF.pasting\n }\n\n const linePos = { index: range.index, length: range.length, fix: 0 }\n const [line, offset] = this.quill.getLine(range.index)\n const isInsideTable = insideTable.call(this)\n\n const handlePasteContent = (content: any) => {\n let pastedContent = content\n // fix: 阻止粘贴代码块和引用导致表格断裂\n const tableBreaker = pastedContent.ops.find((op) => {\n return (\n op.attributes\n && (op.attributes.blockquote || op.attributes['code-block'])\n )\n })\n if (isInsideTable) {\n // fix: 阻止带有表格内容粘贴在表格里\n const table = line.domNode.closest('table.quill-better-table')\n const tableBlot = Quill.find(table)\n const tableIndex = this.quill.getIndex(tableBlot)\n const tableLength = tableBlot.length()\n const tableEndPos = tableIndex + tableLength\n const anchorNode = getSelection().anchorNode\n if (tableBreaker) {\n return\n }\n if (formats['table-col']) {\n // fix: 光标在表格前端的table-col处时,获取整个表格的index后以此为基准向前移动一位插入粘贴内容且不删除任何内容\n linePos.index = tableIndex - 1\n linePos.length = 0\n }\n else if (\n range.index === tableEndPos - 1\n && anchorNode instanceof HTMLDivElement\n && anchorNode.classList.contains('quill-better-table-wrapper')\n ) {\n const list = pastedContent.filter(\n op => op.attributes && op.attributes.list,\n )\n if (list && list.length) {\n return\n }\n // fix: 光标在表格末端时,向后移动一位插入粘贴内容且不删除任何内容\n // TODO\n // 当表格最后一格有内容时,没法区分在表格最后一格最末尾和光标在表格后这两种情况,它们的 range 是一样\n // 这会导致在这两处粘贴表格内容都会将该内容粘贴到表格下一行中\n linePos.index = tableEndPos\n linePos.length = 0\n }\n else {\n if (!formats['table-cell-line']) {\n return\n }\n // fix: 解决表格内粘贴问题\n // 缺陷描述:将表格内的换行文本复制粘贴到别的单元格,会导致表格断开\n // 原因是:换行的文本delta对象有问题,delta对象前面多了一个纯换行和表格控制头(table-col)\n // 解决方法:将多余的delta项移除\n pastedContent = {\n ops: pastedContent.filter((op, index) => {\n const regexp = /^[\\n\\r]+$/\n const isString = op.insert && typeof op.insert === 'string'\n const isLine = isString && regexp.test(op.insert)\n const isCellLine\n = isLine && op.attributes && op.attributes['table-cell-line']\n const isList = isLine && op.attributes && op.attributes.list\n const isPureLine = isLine && !isCellLine && !isList\n const isTableCol\n = isLine && op.attributes && op.attributes['table-col']\n const isLastCellLine = isCellLine && index === deltaLength - 1\n return !isPureLine && !isTableCol && !isLastCellLine\n }),\n }\n // fix: 解决从表格外粘贴多行文本导致表格断开的问题\n pastedContent = rebuildDelta(\n new Delta(pastedContent.ops),\n formats['table-cell-line'],\n )\n }\n }\n\n // fix: 粘贴内容末尾为List,且粘贴位置的block或table-cell-line无内容则删除该block或table-cell-line\n // TODO 这里的lastChild如果不存在,则可能报错\n const lastChild = pastedContent.ops[pastedContent.ops.length - 1]\n const hasList\n = lastChild && lastChild.attributes && lastChild.attributes.list\n if (\n hasList\n && offset === 0\n && line\n && line.cache.length === 1\n && (line.statics.blotName === 'block'\n || line.statics.blotName === 'table-cell-line')\n && (!line.next || line.next.statics.blotName !== 'table-view')\n ) {\n linePos.index = this.quill.getIndex(line)\n linePos.length = line.length()\n linePos.fix = 1\n }\n\n const oldDelta = new Delta().retain(linePos.index).delete(linePos.length)\n const delta = oldDelta.concat(pastedContent)\n\n setTimeout(() => {\n this.quill.updateContents(delta, Quill.sources.USER)\n this.quill.setSelection(\n delta.length() - linePos.length - linePos.fix,\n Quill.sources.SILENT,\n )\n this.quill.scrollIntoView()\n if (loadingTipsContainer) {\n loadingTipsContainer.remove()\n }\n })\n }\n\n ;(async () => {\n try {\n const [files, placeholders, originalUrls, imageIndexs] = this.flipFilesArray(\n await this.extractFilesFromDelta(\n pastedDelta,\n clipboardFiles,\n hexImages,\n ),\n )\n\n if (files.length === 0) {\n handlePasteContent(pastedDelta)\n }\n else {\n if (this.quill.options.editorPaste && this.quill.options.editorPaste.observers.length !== 0) {\n // 设置editorPaste回调的情况\n this.quill.options.editorPaste.emit({\n files,\n callback: ({ code, message, data }) => {\n if (code === 0) {\n const { imageUrls } = data\n pastedDelta = replaceDeltaImage(\n pastedDelta,\n imageUrls,\n placeholders,\n )\n handlePasteContent(pastedDelta)\n }\n else {\n console.error('error message:', message)\n }\n },\n })\n }\n else {\n // 没有originalUrls 也没有文件粘贴\n if (files[0] !== undefined || originalUrls.length === 0) {\n // 没有设置editorPaste回调的情况下,File格式的占位图需要手动转换成url格式,插入到编辑器中\n const imageUrls = await this.files2urls(\n files,\n placeholders,\n originalUrls,\n pastedDelta,\n imageIndexs,\n )\n pastedDelta = replaceDeltaImage(\n pastedDelta,\n imageUrls,\n placeholders,\n )\n }\n handlePasteContent(pastedDelta)\n }\n }\n }\n catch (_e) {\n throw new Error('Paste failed.')\n }\n })()\n }\n\n files2urls(files, placeholders, originalUrls, pastedDelta, imageIndexs) {\n return Promise.all(\n files.map(async (imageFile, index) => {\n const netImgExp = /^((http|https)\\:)?\\/\\/([\\s\\S]+)$/\n if (\n !placeholders[index]\n && originalUrls[index]\n && netImgExp.test(originalUrls[index])\n ) {\n // 不是占位图的普通url图片直接返回url\n return new Promise((resolve) => {\n resolve(originalUrls[index])\n })\n }\n else if (this.quill.options.uploadOption.imageUploadToServer) {\n const range = this.getImgSelection(pastedDelta, imageIndexs[index])\n this.quill.uploader.upload(range, [imageFile])\n }\n else {\n // 占位图或者跨域图需要手动转换成url格式\n return imageFileToUrl(imageFile)\n }\n }),\n )\n }\n\n flipFilesArray(filesArr) {\n const files = []\n const placeholders = []\n const originalUrls = []\n const imageIndexs = []\n filesArr.forEach((item: any) => {\n if (item) {\n const [file, placeholder, originalUrl, imageIndex] = item\n files.push(file)\n placeholders.push(placeholder)\n originalUrls.push(originalUrl)\n if (imageIndex === 0 || imageIndex) {\n imageIndexs.push(imageIndex)\n }\n }\n })\n return [files, placeholders, originalUrls, imageIndexs]\n }\n\n // 将图片从hex转为base64\n convertHexToBase64(hexString) {\n return btoa(\n hexString\n .match(/\\w{2}/g)\n .map((char) => {\n return String.fromCharCode(Number.parseInt(char, 16))\n })\n .join(''),\n )\n }\n\n // 匹配rtf中的图片,存储为{hex, type}对象数组\n extractImageDataFromRtf(rtfData) {\n if (!rtfData) {\n return []\n }\n\n const regexPictureHeader\n = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/\n const regexPicture = new RegExp(\n `(?:(${regexPictureHeader.source}))([\\\\da-fA-F\\\\s]+)\\\\}`,\n 'g',\n )\n const images = rtfData.match(regexPicture)\n const result = []\n\n if (images) {\n for (const image of images) {\n let imageType = ''\n\n if (image.includes('\\\\pngblip')) {\n imageType = 'image/png'\n }\n else if (image.includes('\\\\jpegblip')) {\n imageType = 'image/jpeg'\n }\n\n if (imageType) {\n result.push({\n hex: image\n .replace(regexPictureHeader, '')\n .replace(/[^\\da-fA-F]/g, ''),\n type: imageType,\n })\n }\n }\n }\n\n return result\n }\n\n extractFilesFromDelta(delta, clipboardFiles, hexImages?) {\n let index = -1\n return Promise.all(\n delta.map(async (op) => {\n index++\n const image = op.insert.image\n if (!image || image.hasExisted) {\n return\n }\n\n let file\n let isPlaceholderImage = false\n let imageIndex\n try {\n // hex 图片存在则为 file:/// 协议本地图片,使用 hex 图片转为 base64 读取\n const hexImage = hexImages.length && hexImages.shift()\n const newImage\n = hexImage\n && `data:${hexImage.type};base64,${this.convertHexToBase64(\n hexImage.hex,\n )}`\n imageIndex = index\n file = await imageUrlToFile(newImage || image.src || image)\n }\n catch (_err) {\n if (clipboardFiles.length !== 0) {\n // 跨域获取图片失败时从剪切板获取图片\n const clipboardFile = clipboardFiles[0]\n const imageType\n = clipboardFile.type?.indexOf('image') === -1\n ? 'image/png'\n : clipboardFile.type\n const blob = clipboardFile.slice(0, clipboardFile.size, imageType)\n file = new File([blob], `image-CORS-${new Date().getTime()}.png`, {\n type: imageType,\n })\n }\n else if (image.src.startsWith('http')) {\n // 什么都不做\n }\n else {\n // 剪切板中无图片,用失败占位图替换\n const errorImagePlaceholderJpg\n = LANG_CONF['img-error'] === 'Image Copy Error'\n ? ERROR_IMAGE_PLACEHOLDER_EN\n : ERROR_IMAGE_PLACEHOLDER_CN\n file = await imageUrlToFile(errorImagePlaceholderJpg, true)\n isPlaceholderImage = true\n }\n }\n\n return [file, isPlaceholderImage, image, imageIndex]\n }),\n )\n }\n\n getImgSelection(delta, imageIndex) {\n let length = 0\n delta.ops.every((op, index) => {\n if (index === imageIndex) {\n return false\n }\n if (typeof op.insert === 'string') {\n length += op.insert.length\n }\n return true\n })\n const range = {\n index: length,\n length: 0,\n }\n return range\n }\n}\n\nfunction rebuildDelta(delta, cellLine) {\n const { cell: cellId, colspan, row: rowId, rowspan } = cellLine\n const buildedDelta = delta.reduce((newDelta, op) => {\n if (op.insert && typeof op.insert === 'string') {\n const lines = splitWithBreak(op.insert)\n\n lines.forEach((text) => {\n if (text === '\\n') {\n // 对换行增加 table-cell-line 格式,以避免表格断开\n newDelta.insert('\\n', {\n ...op.attributes,\n 'table-cell-line': { row: rowId, cell: cellId, rowspan, colspan },\n })\n }\n else {\n text = text.endsWith('\\r') ? text.slice(0, -1) : text\n newDelta.insert(\n text,\n omit(op.attributes, ['table', 'table-cell-line']),\n )\n }\n })\n }\n else {\n newDelta.insert(op.insert, op.attributes)\n }\n\n return newDelta\n }, new Delta())\n\n return buildedDelta\n}\n\nfunction replaceStrWhiteSpace(str) {\n const isWhiteSpace = value => /^(\\u3000|\\u0020){1}$/.test(value) // 空白字符\n let textWithWhiteSpace = ''\n let beginHasChar = false\n for (const char of str) {\n if (isWhiteSpace(char) && !beginHasChar) {\n textWithWhiteSpace += '\\u00A0'\n }\n else {\n textWithWhiteSpace += char\n beginHasChar = true\n }\n }\n return textWithWhiteSpace\n}\n\nfunction replaceDeltaWhiteSpace(delta, rootBgColor?) {\n return delta.reduce((newDelta, op) => {\n // fix: 当粘贴文字颜色和编辑器背景色一致且自身无背景色的情况下移除文字颜色样式,避免误导用户粘贴无效\n if (\n rootBgColor\n && op.attributes\n && op.attributes.color\n && !op.attributes.background\n ) {\n const originColor = op.attributes.color\n const fontColor\n = originColor.indexOf('#') === 0 ? hexToRgbA(originColor) : originColor\n if (\n fontColor === rootBgColor\n || (fontColor === 'rgba(255,255,255,1)'\n && rootBgColor === 'rgba(0, 0, 0, 0)')\n ) {\n delete op.attributes.color\n }\n }\n if (op.insert && typeof op.insert === 'string') {\n const lines = splitWithBreak(op.insert)\n let insertWithWhiteSpace = ''\n lines.forEach((text) => {\n insertWithWhiteSpace += replaceStrWhiteSpace(text)\n })\n newDelta.insert(insertWithWhiteSpace, op.attributes)\n }\n else {\n newDelta.insert(op.insert, op.attributes)\n }\n return newDelta\n }, new Delta())\n}\n\nfunction renderStyles(html) {\n let htmlString = html\n // Trim unnecessary parts.\n htmlString = htmlString.substring(\n htmlString.indexOf('<html '),\n htmlString.length,\n )\n htmlString = htmlString.substring(\n 0,\n htmlString.lastIndexOf('</html>') + '</html>'.length,\n )\n\n // Add temporary iframe.\n const iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n document.body.appendChild(iframe)\n\n const iframeDoc = iframe.contentDocument || iframe.contentWindow.document\n iframeDoc.open()\n iframeDoc.write(htmlString)\n iframeDoc.close()\n\n let collection\n let pointer\n const rules\n = iframeDoc.styleSheets[iframeDoc.styleSheets.length - 1].cssRules\n\n // Convert internal styles to inline style of respective node.\n for (let idx = 0; idx < rules.length; idx++) {\n if ((rules[idx] as CSSStyleRule).selectorText === '') {\n continue\n }\n collection = iframeDoc.body.querySelectorAll(\n (rules[idx] as CSSStyleRule).selectorText,\n )\n\n for (pointer = 0; pointer < collection.length; pointer++) {\n collection[pointer].style.cssText += (\n rules[idx] as CSSStyleRule\n ).style.cssText\n }\n }\n\n const convertedString = iframeDoc.firstChild.outerHTML\n // Remove temporary iframe.\n iframe.parentNode.removeChild(iframe)\n\n return convertedString\n}\n\nexport default CustomClipboard\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BlotFormatter.es.js","sources":["../../../src/custom-image/BlotFormatter.ts"],"sourcesContent":["import type Action from './actions/Action'\nimport type { Options } from './Options'\nimport type BlotSpec from './specs/BlotSpec'\nimport { merge as deepmerge } from 'lodash-es'\nimport Quill from 'quill'\nimport ImageBlot, { ImageContainerBlot } from './image'\nimport DefaultOptions from './Options'\nimport { CustomImageSpec } from './specs/CustomImageSpec'\n\nconst dontMerge = (_destination: Array<any>, source: Array<any>) => source\n\n// @dynamic\nexport default class BlotFormatter {\n quill: any\n options: Options\n currentSpec: BlotSpec\n specs: BlotSpec[]\n overlay: HTMLElement\n actions: Action[]\n observer: any\n\n static register() {\n Quill.register('formats/image', ImageBlot, true)\n Quill.register('formats/image-container', ImageContainerBlot, true)\n Quill.register('modules/image-spec', CustomImageSpec, true)\n }\n\n constructor(quill: any, options: any = {}) {\n this.quill = quill\n this.options = deepmerge(DefaultOptions, options, { arrayMerge: dontMerge })\n this.currentSpec = null\n this.actions = []\n this.overlay = document.createElement('div')\n this.overlay.classList.add(this.options.overlay.className)\n if (this.options.overlay.style) {\n Object.assign(this.overlay.style, this.options.overlay.style)\n }\n\n // disable native image resizing on firefox\n document.execCommand('enableObjectResizing', false, 'false') // eslint-disable-next-line-line no-undef\n this.quill.root.parentNode.style.position = this.quill.root.parentNode.style.position || 'relative'\n this.quill.root.addEventListener('click', this.onClick)\n this.specs = this.options.specs.map((SpecClass: any) => new SpecClass(this))\n this.specs.forEach(spec => spec.init())\n }\n\n show(spec: BlotSpec) {\n this.currentSpec = spec\n this.currentSpec.setSelection()\n this.setUserSelect('none')\n this.quill.root.parentNode.appendChild(this.overlay)\n this.repositionOverlay()\n this.createActions(spec)\n\n // fix: 图片对齐之后,虚线外框应该跟随移动\n const imageDom = spec.getTargetElement()\n const win: any = window\n const MutationObserver = win.MutationObserver || win.WebKitMutationObserver || win.MozMutationObserver\n const element = imageDom.parentNode\n this.observer = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n const target = mutation.target\n const image = target.querySelector('img')\n if (image) {\n this.repositionOverlay()\n }\n }\n })\n this.observer.observe(element, {\n attributes: true,\n attributeFilter: ['class'],\n attributeOldValue: true,\n subtree: true,\n })\n document.body.addEventListener('click', this.hideImageOverlay, true)\n }\n\n hide() {\n if (!this.currentSpec) {\n return\n }\n\n const imgDom = this.currentSpec.getTargetElement()\n if (imgDom) {\n imgDom.classList.remove('current-select-img')\n }\n\n this.currentSpec.onHide()\n this.currentSpec = null\n this.quill.root.parentNode.removeChild(this.overlay)\n this.overlay.style.setProperty('display', 'none')\n this.setUserSelect('')\n this.destroyActions()\n }\n\n update() {\n this.repositionOverlay()\n this.actions.forEach(action => action.onUpdate())\n }\n\n createActions(spec: BlotSpec) {\n this.actions = spec.getActions().map((ActionClass: any) => {\n const action: Action = new ActionClass(this)\n action.onCreate()\n return action\n })\n }\n\n destroyActions() {\n this.actions.forEach((action: Action) => action.onDestroy())\n this.actions = []\n }\n\n repositionOverlay() {\n if (!this.currentSpec) {\n return\n }\n\n const overlayTarget = this.currentSpec.getOverlayElement()\n if (!overlayTarget) {\n return\n }\n\n const parent: HTMLElement = this.quill.root.parentNode\n const specRect = overlayTarget.getBoundingClientRect()\n const parentRect = parent.getBoundingClientRect()\n\n Object.assign(this.overlay.style, {\n display: 'block',\n left: `${specRect.left - parentRect.left - 1 + parent.scrollLeft}px`,\n top: `${specRect.top - parentRect.top + parent.scrollTop}px`,\n width: `${specRect.width}px`,\n height: `${specRect.height}px`,\n })\n }\n\n setUserSelect(value: string) {\n const props: string[] = [\n 'userSelect',\n 'mozUserSelect',\n 'webkitUserSelect',\n 'msUserSelect',\n ]\n\n props.forEach((prop: string) => {\n // set on contenteditable element and <html>\n this.quill.root.style.setProperty(prop, value)\n if (document.documentElement) {\n document.documentElement.style.setProperty(prop, value)\n }\n })\n }\n\n onClick = () => {\n this.hide()\n }\n\n hideImageOverlay = (event) => {\n const target = event.target\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\n // 点击图片操作框之外应该将其销毁\n if (!isBlotFormatter) {\n this.hide()\n }\n document.body.removeEventListener('click', this.hideImageOverlay)\n }\n}\n"],"names":["deepmerge","ImageBlot","ImageContainerBlot"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Options.es.js","sources":["../../../src/custom-image/Options.ts"],"sourcesContent":["import ImageSpec from './specs/ImageSpec'\n\nexport interface OverlayOptions {\n // classname applied to the overlay element\n className: string\n // style applied to overlay element, or null to prevent styles\n style: Record<string, string>\n}\n\nexport interface ResizeOptions {\n // class name applied to the resize handles\n handleClassName: string\n // style applied to resize handles, or null to prevent styles\n handleStyle: Record<string, string>\n}\n\nexport interface AlignOptions {\n // the name of the attribute for an element that has its alignment changed\n attribute: string\n // the aligner does the actual alignment switch\n aligner: {\n // whether or not the aligner should handle the actual alignment properties\n applyStyle: boolean\n }\n // icons used for alignment\n icons: {\n left: string\n center: string\n right: string\n }\n // the toolbar so users can change alignments\n toolbar: {\n // whether or not users can deselect an alignment. it's up to you to set the initial alignment\n allowDeselect: boolean\n // class name applied to the root toolbar element\n mainClassName: string\n // style applied to root toolbar element, or null to prevent styles\n mainStyle\n // class name applied to each button in the toolbar\n buttonClassName: string\n /* whether or not to add the selected style to the buttons.\n they'll always get the is-selected class */\n addButtonSelectStyle: boolean\n // style applied to buttons, or null to prevent styles\n buttonStyle\n // style applied to the svgs in the buttons\n svgStyle\n }\n}\n\nexport interface Options {\n // the BlotSpecs supported\n specs: any\n overlay: OverlayOptions\n align: AlignOptions\n resize: ResizeOptions\n}\n\nconst DefaultOptions: Options = {\n specs: [\n ImageSpec,\n ],\n overlay: {\n className: 'blot-formatter__overlay',\n style: {\n position: 'absolute',\n boxSizing: 'border-box',\n border: '1px dashed #444',\n },\n },\n align: {\n attribute: 'data-align',\n aligner: {\n applyStyle: true,\n },\n icons: {\n left: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"3\" x2=\"13\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"3\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n center: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"14\" x2=\"4\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"12\" x2=\"6\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n right: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"15\" x2=\"5\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"15\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n },\n toolbar: {\n allowDeselect: true,\n mainClassName: 'blot-formatter__toolbar',\n mainStyle: {\n position: 'absolute',\n top: '-12px',\n right: '0',\n left: '0',\n height: '0',\n minWidth: '100px',\n font: '12px/1.0 Arial, Helvetica, sans-serif',\n textAlign: 'center',\n color: '#333',\n boxSizing: 'border-box',\n cursor: 'default',\n zIndex: '1',\n },\n buttonClassName: 'blot-formatter__toolbar-button',\n addButtonSelectStyle: true,\n buttonStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle',\n },\n svgStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle',\n },\n },\n },\n resize: {\n handleClassName: 'blot-formatter__resize-handle',\n handleStyle: {\n position: 'absolute',\n height: '12px',\n width: '12px',\n backgroundColor: 'white',\n border: '1px solid #777',\n boxSizing: 'border-box',\n opacity: '0.80',\n },\n },\n}\n\nexport default DefaultOptions\n"],"names":[],"mappings":";AA0DA,MAAM,iBAA0B;AAAA,EAC9B,OAAO;AAAA,IACL;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,SAAS;AAAA,MACP,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAON,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOT;AAAA,IACA,SAAS;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,QACT,UAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACA,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,aAAa;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,EACF;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Action.es.js","sources":["../../../../src/custom-image/actions/Action.ts"],"sourcesContent":["export default class Action {\n formatter\n\n constructor(formatter) {\n this.formatter = formatter\n }\n\n onCreate() {}\n\n onDestroy() {}\n\n onUpdate() {}\n}\n"],"names":[],"mappings":"AAAA,MAAqB,OAAO;AAAA,EAG1B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,WAAW;AAAA,EAAC;AAAA,EAEZ,YAAY;AAAA,EAAC;AAAA,EAEb,WAAW;AAAA,EAAC;AACd;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomResizeAction.es.js","sources":["../../../../src/custom-image/actions/CustomResizeAction.ts"],"sourcesContent":["import Action from './Action'\n\nconst MIN_WIDTH = 40\n\nfunction getElementStyle(element) {\n return element.currentStyle\n ? element.currentStyle\n : window.getComputedStyle(element, null)\n}\nexport default class CustomResizeAction extends Action {\n topLeftHandle: HTMLElement\n topRightHandle: HTMLElement\n bottomRightHandle: HTMLElement\n bottomLeftHandle: HTMLElement\n dragHandle: HTMLElement\n dragStartX: number\n preDragWidth: number\n targetRatio: number\n maxWidth: number\n minWidth: number\n\n constructor(formatter) {\n super(formatter)\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.dragHandle = null\n this.dragStartX = 0\n this.preDragWidth = 0\n this.targetRatio = 0\n this.maxWidth = 0\n this.minWidth = MIN_WIDTH\n }\n\n onCreate() {\n const target: any = this.formatter.currentSpec.getTargetElement()\n this.formatter.overlay.setAttribute('data-image', target.src)\n this.formatter.overlay.appendChild(this.topLeftHandle)\n this.formatter.overlay.appendChild(this.topRightHandle)\n this.formatter.overlay.appendChild(this.bottomRightHandle)\n this.formatter.overlay.appendChild(this.bottomLeftHandle)\n this.repositionHandles(this.formatter.options.resize.handleStyle)\n }\n\n onDestroy() {\n this.setCursor('')\n this.formatter.overlay.removeChild(this.topLeftHandle)\n this.formatter.overlay.removeChild(this.topRightHandle)\n this.formatter.overlay.removeChild(this.bottomRightHandle)\n this.formatter.overlay.removeChild(this.bottomLeftHandle)\n }\n\n createHandle(position: string, cursor: string): HTMLElement {\n const box = document.createElement('div')\n box.classList.add(this.formatter.options.resize.handleClassName)\n box.setAttribute('data-position', position)\n box.style.cursor = cursor\n\n if (this.formatter.options.resize.handleStyle) {\n Object.assign(box.style, this.formatter.options.resize.handleStyle)\n }\n\n box.addEventListener('mousedown', this.onMouseDown)\n return box\n }\n\n repositionHandles(handleStyle: any) {\n let handleXOffset = '0px'\n let handleYOffset = '0px'\n if (handleStyle) {\n if (handleStyle.width) {\n handleXOffset = `${-Number.parseFloat(handleStyle.width) / 2}px`\n }\n if (handleStyle.height) {\n handleYOffset = `${-Number.parseFloat(handleStyle.height) / 2}px`\n }\n }\n\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset })\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset })\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset })\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset })\n }\n\n setCursor(value: string) {\n if (document.body) {\n document.body.style.cursor = value\n }\n\n if (this.formatter.currentSpec) {\n const target = this.formatter.currentSpec.getOverlayElement()\n if (target) {\n target.style.cursor = value\n }\n }\n }\n\n onMouseDown = (event: MouseEvent) => {\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n this.dragHandle = event.target\n this.setCursor(this.dragHandle.style.cursor)\n\n if (!this.formatter.currentSpec) {\n return\n }\n\n const target = this.formatter.currentSpec.getTargetElement()\n if (!target) {\n return\n }\n event.preventDefault()\n const rect = target.getBoundingClientRect()\n\n this.dragStartX = event.clientX\n this.preDragWidth = rect.width\n this.targetRatio = rect.height / rect.width\n\n let root: HTMLElement\n let rootStyle: any\n const tdWrap = this.findTd(target, 0)\n if (tdWrap) {\n root = tdWrap\n rootStyle = getElementStyle(tdWrap)\n }\n else {\n root = this.formatter.quill.root\n rootStyle = getElementStyle(root)\n }\n this.maxWidth = root.clientWidth\n - Number.parseFloat(rootStyle.paddingRight)\n - Number.parseFloat(rootStyle.paddingLeft)\n\n document.addEventListener('mousemove', this.onDrag)\n document.addEventListener('mouseup', this.onMouseUp)\n }\n\n findTd = (node: HTMLElement, level: number) => {\n if (level > 3) {\n return null\n }\n\n const tagName = node.tagName.toUpperCase()\n if (tagName === 'TD') {\n return node\n }\n else {\n const parentNode = node.parentElement\n if (parentNode) {\n return (this.findTd(parentNode, level += 1))\n }\n else {\n return null\n }\n }\n }\n\n onDrag = (event: MouseEvent) => {\n if (!this.formatter.currentSpec) {\n return\n }\n\n const target = this.formatter.currentSpec.getTargetElement()\n if (!target) {\n return\n }\n\n const deltaX = event.clientX - this.dragStartX\n let newWidth = 0\n\n if (this.dragHandle === this.topLeftHandle || this.dragHandle === this.bottomLeftHandle) {\n newWidth = Math.round(this.preDragWidth - deltaX)\n }\n else {\n newWidth = Math.round(this.preDragWidth + deltaX)\n }\n\n let minWidth = this.minWidth\n\n if (this.maxWidth < minWidth) {\n minWidth = this.maxWidth\n }\n\n if (newWidth > this.maxWidth) {\n newWidth = this.maxWidth\n }\n else if (newWidth < minWidth) {\n newWidth = minWidth\n }\n\n const newHeight = this.targetRatio * newWidth\n\n target.setAttribute('width', `${newWidth}`)\n target.setAttribute('height', `${newHeight}`)\n\n this.formatter.update()\n }\n\n onMouseUp = () => {\n this.setCursor('')\n document.removeEventListener('mousemove', this.onDrag)\n document.removeEventListener('mouseup', this.onMouseUp)\n }\n}\n"],"names":[],"mappings":";AAEA,MAAM,YAAY;AAElB,SAAS,gBAAgB,SAAS;AAChC,SAAO,QAAQ,eACX,QAAQ,eACR,OAAO,iBAAiB,SAAS,IAAI;AAC3C;AACA,MAAqB,2BAA2B,OAAO;AAAA,EAYrD,YAAY,WAAW;AACrB,UAAM,SAAS;AA4EjB,SAAA,cAAc,CAAC,UAAsB;AAC/B,UAAA,EAAE,MAAM,kBAAkB,cAAc;AAC1C;AAAA,MACF;AAEA,WAAK,aAAa,MAAM;AACxB,WAAK,UAAU,KAAK,WAAW,MAAM,MAAM;AAEvC,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,UAAU,YAAY,iBAAiB;AAC3D,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AACA,YAAM,eAAe;AACf,YAAA,OAAO,OAAO;AAEpB,WAAK,aAAa,MAAM;AACxB,WAAK,eAAe,KAAK;AACpB,WAAA,cAAc,KAAK,SAAS,KAAK;AAElC,UAAA;AACA,UAAA;AACJ,YAAM,SAAS,KAAK,OAAO,QAAQ,CAAC;AACpC,UAAI,QAAQ;AACH,eAAA;AACP,oBAAY,gBAAgB,MAAM;AAAA,MAAA,OAE/B;AACI,eAAA,KAAK,UAAU,MAAM;AAC5B,oBAAY,gBAAgB,IAAI;AAAA,MAClC;AACK,WAAA,WAAW,KAAK,cACnB,OAAO,WAAW,UAAU,YAAY,IACxC,OAAO,WAAW,UAAU,WAAW;AAEhC,eAAA,iBAAiB,aAAa,KAAK,MAAM;AACzC,eAAA,iBAAiB,WAAW,KAAK,SAAS;AAAA,IAAA;AAG5C,SAAA,SAAA,CAAC,MAAmB,UAAkB;AAC7C,UAAI,QAAQ,GAAG;AACN,eAAA;AAAA,MACT;AAEM,YAAA,UAAU,KAAK,QAAQ,YAAY;AACzC,UAAI,YAAY,MAAM;AACb,eAAA;AAAA,MAAA,OAEJ;AACH,cAAM,aAAa,KAAK;AACxB,YAAI,YAAY;AACd,iBAAQ,KAAK,OAAO,YAAY,SAAS,CAAC;AAAA,QAAA,OAEvC;AACI,iBAAA;AAAA,QACT;AAAA,MACF;AAAA,IAAA;AAGF,SAAA,SAAS,CAAC,UAAsB;AAC1B,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,UAAU,YAAY,iBAAiB;AAC3D,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEM,YAAA,SAAS,MAAM,UAAU,KAAK;AACpC,UAAI,WAAW;AAEf,UAAI,KAAK,eAAe,KAAK,iBAAiB,KAAK,eAAe,KAAK,kBAAkB;AACvF,mBAAW,KAAK,MAAM,KAAK,eAAe,MAAM;AAAA,MAAA,OAE7C;AACH,mBAAW,KAAK,MAAM,KAAK,eAAe,MAAM;AAAA,MAClD;AAEA,UAAI,WAAW,KAAK;AAEhB,UAAA,KAAK,WAAW,UAAU;AAC5B,mBAAW,KAAK;AAAA,MAClB;AAEI,UAAA,WAAW,KAAK,UAAU;AAC5B,mBAAW,KAAK;AAAA,MAAA,WAET,WAAW,UAAU;AACjB,mBAAA;AAAA,MACb;AAEM,YAAA,YAAY,KAAK,cAAc;AAErC,aAAO,aAAa,SAAS,GAAG,QAAQ,EAAE;AAC1C,aAAO,aAAa,UAAU,GAAG,SAAS,EAAE;AAE5C,WAAK,UAAU;IAAO;AAGxB,SAAA,YAAY,MAAM;AAChB,WAAK,UAAU,EAAE;AACR,eAAA,oBAAoB,aAAa,KAAK,MAAM;AAC5C,eAAA,oBAAoB,WAAW,KAAK,SAAS;AAAA,IAAA;AArLtD,SAAK,gBAAgB,KAAK,aAAa,YAAY,aAAa;AAChE,SAAK,iBAAiB,KAAK,aAAa,aAAa,aAAa;AAClE,SAAK,oBAAoB,KAAK,aAAa,gBAAgB,aAAa;AACxE,SAAK,mBAAmB,KAAK,aAAa,eAAe,aAAa;AACtE,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,WAAW;AACT,UAAM,SAAc,KAAK,UAAU,YAAY,iBAAiB;AAChE,SAAK,UAAU,QAAQ,aAAa,cAAc,OAAO,GAAG;AAC5D,SAAK,UAAU,QAAQ,YAAY,KAAK,aAAa;AACrD,SAAK,UAAU,QAAQ,YAAY,KAAK,cAAc;AACtD,SAAK,UAAU,QAAQ,YAAY,KAAK,iBAAiB;AACzD,SAAK,UAAU,QAAQ,YAAY,KAAK,gBAAgB;AACxD,SAAK,kBAAkB,KAAK,UAAU,QAAQ,OAAO,WAAW;AAAA,EAClE;AAAA,EAEA,YAAY;AACV,SAAK,UAAU,EAAE;AACjB,SAAK,UAAU,QAAQ,YAAY,KAAK,aAAa;AACrD,SAAK,UAAU,QAAQ,YAAY,KAAK,cAAc;AACtD,SAAK,UAAU,QAAQ,YAAY,KAAK,iBAAiB;AACzD,SAAK,UAAU,QAAQ,YAAY,KAAK,gBAAgB;AAAA,EAC1D;AAAA,EAEA,aAAa,UAAkB,QAA6B;AACpD,UAAA,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,UAAU,IAAI,KAAK,UAAU,QAAQ,OAAO,eAAe;AAC3D,QAAA,aAAa,iBAAiB,QAAQ;AAC1C,QAAI,MAAM,SAAS;AAEnB,QAAI,KAAK,UAAU,QAAQ,OAAO,aAAa;AAC7C,aAAO,OAAO,IAAI,OAAO,KAAK,UAAU,QAAQ,OAAO,WAAW;AAAA,IACpE;AAEI,QAAA,iBAAiB,aAAa,KAAK,WAAW;AAC3C,WAAA;AAAA,EACT;AAAA,EAEA,kBAAkB,aAAkB;AAClC,QAAI,gBAAgB;AACpB,QAAI,gBAAgB;AACpB,QAAI,aAAa;AACf,UAAI,YAAY,OAAO;AACrB,wBAAgB,GAAG,CAAC,OAAO,WAAW,YAAY,KAAK,IAAI,CAAC;AAAA,MAC9D;AACA,UAAI,YAAY,QAAQ;AACtB,wBAAgB,GAAG,CAAC,OAAO,WAAW,YAAY,MAAM,IAAI,CAAC;AAAA,MAC/D;AAAA,IACF;AAEO,WAAA,OAAO,KAAK,cAAc,OAAO,EAAE,MAAM,eAAe,KAAK,cAAA,CAAe;AAC5E,WAAA,OAAO,KAAK,eAAe,OAAO,EAAE,OAAO,eAAe,KAAK,cAAA,CAAe;AAC9E,WAAA,OAAO,KAAK,kBAAkB,OAAO,EAAE,OAAO,eAAe,QAAQ,cAAA,CAAe;AACpF,WAAA,OAAO,KAAK,iBAAiB,OAAO,EAAE,MAAM,eAAe,QAAQ,cAAA,CAAe;AAAA,EAC3F;AAAA,EAEA,UAAU,OAAe;AACvB,QAAI,SAAS,MAAM;AACR,eAAA,KAAK,MAAM,SAAS;AAAA,IAC/B;AAEI,QAAA,KAAK,UAAU,aAAa;AAC9B,YAAM,SAAS,KAAK,UAAU,YAAY,kBAAkB;AAC5D,UAAI,QAAQ;AACV,eAAO,MAAM,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AA8GF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteAction.es.js","sources":["../../../../src/custom-image/actions/DeleteAction.ts"],"sourcesContent":["import Quill from 'quill'\nimport Action from './Action'\n\nexport default class DeleteAction extends Action {\n onCreate() {\n document.addEventListener('keyup', this.onKeyUp, true)\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true)\n }\n\n onDestroy() {\n document.removeEventListener('keyup', this.onKeyUp)\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp)\n }\n\n onKeyUp = (event: any) => {\n if (!this.formatter.currentSpec) {\n return\n }\n\n // delete or backspace\n if (event.keyCode === 46 || event.keyCode === 8) {\n const blot = Quill.find(this.formatter.currentSpec.getTargetElement())\n if (blot) {\n blot.deleteAt(0)\n }\n this.formatter.hide()\n }\n }\n}\n"],"names":[],"mappings":";;AAGA,MAAqB,qBAAqB,OAAO;AAAA,EAAjD,cAAA;AAAA,UAAA,GAAA,SAAA;AAWE,SAAA,UAAU,CAAC,UAAe;AACpB,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAGA,UAAI,MAAM,YAAY,MAAM,MAAM,YAAY,GAAG;AAC/C,cAAM,OAAO,MAAM,KAAK,KAAK,UAAU,YAAY,kBAAkB;AACrE,YAAI,MAAM;AACR,eAAK,SAAS,CAAC;AAAA,QACjB;AACA,aAAK,UAAU;MACjB;AAAA,IAAA;AAAA,EACF;AAAA,EAvBA,WAAW;AACT,aAAS,iBAAiB,SAAS,KAAK,SAAS,IAAI;AACrD,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,SAAS,IAAI;AAAA,EACxE;AAAA,EAEA,YAAY;AACD,aAAA,oBAAoB,SAAS,KAAK,OAAO;AAClD,SAAK,UAAU,MAAM,KAAK,oBAAoB,SAAS,KAAK,OAAO;AAAA,EACrE;AAgBF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.es.js","sources":["../../../src/custom-image/image.ts"],"sourcesContent":["import Quill from 'quill'\nimport { isNullOrUndefined, sanitize } from '../config/editor.utils'\n\nconst Embed = Quill.imports['blots/embed']\nconst Inline = Quill.imports['blots/inline']\n\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\n\n// @dynamic\nclass CustomImage extends Embed {\n static ID_SEED = 0\n static blotName: string\n static tagName: string\n domNode: any\n parent: any\n scroll: any\n next: any\n static create(value) {\n const node = super.create(value)\n const url = typeof value === 'string' ? value : value.src\n if (url) {\n const imgURL = this.sanitize(url)\n if (!imgURL?.startsWith('data:image')) {\n node.dataset.src = imgURL\n }\n node.setAttribute('src', imgURL)\n }\n node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)\n node.setAttribute('devui-editorx-image', true)\n node.style.verticalAlign = 'baseline'\n return node\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce((formats, attribute) => {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute)\n }\n return formats\n }, {})\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n }\n\n static register() {\n if (/Firefox/i.test(navigator.userAgent)) {\n setTimeout(() => {\n // Disable image resizing in Firefox\n document.execCommand('enableObjectResizing', false, null)\n }, 1)\n }\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0'\n }\n\n static value(domNode) {\n const formats: any = {}\n const imageSrc = domNode.getAttribute('src')\n formats.src = this.sanitize(imageSrc)\n formats.hasExisted = domNode.getAttribute('devui-editorx-image')\n formats.imageId = domNode.dataset.imageId\n return formats\n }\n\n format(name, value) {\n if (ATTRIBUTES.includes(name)) {\n if (value) {\n this.domNode.setAttribute(name, value)\n }\n else {\n this.domNode.removeAttribute(name)\n }\n }\n else {\n super.format(name, value)\n }\n }\n\n unWrap() {\n this.parent.replaceWith(this)\n }\n\n wrap(name, value) {\n const wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name\n if (!isNullOrUndefined(this.parent)) {\n this.parent.insertBefore(wrapper, this.next || undefined)\n }\n if (typeof wrapper.appendChild !== 'function') {\n throw new TypeError(`Cannot wrap ${name}`)\n }\n wrapper.appendChild(this)\n return wrapper\n }\n}\nCustomImage.blotName = 'image'\nCustomImage.tagName = 'IMG'\n\n// @dynamic\nclass CustomImageContainer extends Inline {\n static tagName: string\n static className: string\n static blotName: string\n static allowedChildren: typeof CustomImage[]\n constructor(scroll, domNode) {\n super(scroll, domNode)\n domNode.setAttribute('contenteditable', false)\n }\n}\nCustomImageContainer.blotName = 'image-container'\nCustomImageContainer.className = 'ql-image-container'\nCustomImageContainer.tagName = 'DIV'\n\nCustomImageContainer.allowedChildren = [CustomImage]\nexport { CustomImage as default, CustomImageContainer as ImageContainerBlot }\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BlotSpec.es.js","sources":["../../../../src/custom-image/specs/BlotSpec.ts"],"sourcesContent":["import ResizeAction from '../actions/CustomResizeAction'\nimport DeleteAction from '../actions/DeleteAction'\n\nexport default class BlotSpec {\n formatter\n\n constructor(formatter) {\n this.formatter = formatter\n }\n\n init(): void {}\n\n getActions() {\n return [ResizeAction, DeleteAction]\n }\n\n getTargetElement() {\n return null\n }\n\n getOverlayElement() {\n return this.getTargetElement()\n }\n\n setSelection(): void {\n this.formatter.quill.setSelection(null)\n }\n\n onHide() {}\n}\n"],"names":["ResizeAction"],"mappings":";;AAGA,MAAqB,SAAS;AAAA,EAG5B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAa;AAAA,EAAC;AAAA,EAEd,aAAa;AACJ,WAAA,CAACA,oBAAc,YAAY;AAAA,EACpC;AAAA,EAEA,mBAAmB;AACV,WAAA;AAAA,EACT;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK;EACd;AAAA,EAEA,eAAqB;AACd,SAAA,UAAU,MAAM,aAAa,IAAI;AAAA,EACxC;AAAA,EAEA,SAAS;AAAA,EAAC;AACZ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomImageSpec.es.js","sources":["../../../../src/custom-image/specs/CustomImageSpec.ts"],"sourcesContent":["import { isInside } from '../../config/editor.utils'\nimport CustomResizeAction from '../actions/CustomResizeAction'\nimport DeleteAction from '../actions/DeleteAction'\nimport ImageSpec from './ImageSpec'\n\nexport class CustomImageSpec extends ImageSpec {\n formatter\n editorElem: HTMLElement | undefined\n observer: any\n oldRootScrollTop: any\n\n constructor(formatter) {\n super(formatter)\n this.formatter = formatter\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.editorElem = this.formatter.quill.container\n if (this.formatter.quill.root === this.formatter.quill.scrollingContainer) {\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n }\n\n handleQuillRootScroll() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\n }\n }\n\n init(): void {\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\n\n super.init()\n }\n\n getActions() {\n return [DeleteAction, CustomResizeAction]\n }\n\n imageMouseOver(event) {\n const target = event.target\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\n if (target.nodeName === 'IMG' || isBlotFormatter) {\n // this.addImagePreviewOverlay(event);\n }\n }\n\n imageMouseout = (event) => {\n if (event.target.nodeName === 'IMG'\n || event.target.classList.contains('blot-formatter__overlay')) {\n const imgDom = event.target\n if (!isInside(event, imgDom)) {\n this.removeImagePreviewOverlay()\n }\n }\n }\n\n addImagePreviewOverlay(event) {\n const target = event.target\n const {\n left: imgLeft,\n width: imgWidth,\n } = target.getBoundingClientRect()\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\n\n const {\n left: editorLeft,\n top: editorTop,\n } = event.currentTarget.getBoundingClientRect()\n\n const imgRelativeLeft = imgLeft - editorLeft\n const imgRelativeTop = imgTop - editorTop\n\n const maxmizeWidth = 24\n const maxmizePadding = 15\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\n const previewTop = imgRelativeTop + maxmizePadding\n\n const previewStyle = `\n left: ${previewLeft}px;\n top: ${previewTop}px;\n width: ${maxmizeWidth}px;\n `\n const imageSrc = target.src || target.getAttribute('data-image')\n const imageId = target.getAttribute('data-image-id')\n\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\n if (!previewDom) {\n event.currentTarget.insertAdjacentHTML('beforeend', `\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\n data-image=\"${imageSrc}\"></i>\n </div>\n `)\n }\n }\n\n removeImagePreviewOverlay() {\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\n if (previewDom) {\n previewDom.parentNode.removeChild(previewDom)\n }\n }\n\n onHide() {\n this.removeImagePreviewOverlay()\n super.onHide()\n }\n\n resetOverlayMarginTop() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = '0px'\n }\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n const isReadonly = this.formatter.quill.options.readOnly\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\n return\n }\n\n this.img = el\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.resetOverlayMarginTop()\n this.formatter.show(this)\n\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\n const imageDom = this.formatter.currentSpec?.getTargetElement()\n if (imageDom) {\n imageDom.classList.add('current-select-img')\n const quill = this.formatter.quill\n const imgBlot = quill.scroll.find(this.img)\n const index = quill.getIndex(imgBlot)\n const len = imgBlot.length()\n quill.setSelection(index, len)\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ImageSpec.es.js","sources":["../../../../src/custom-image/specs/ImageSpec.ts"],"sourcesContent":["import BlotSpec from './BlotSpec'\n\nexport default class ImageSpec extends BlotSpec {\n img\n\n constructor(formatter) {\n super(formatter)\n this.img = null\n }\n\n init() {\n this.formatter.quill.root.addEventListener('click', this.onClick)\n }\n\n getTargetElement() {\n return this.img\n }\n\n onHide() {\n this.img = null\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return\n }\n event.stopPropagation()\n\n this.img = el\n this.formatter.show(this)\n }\n}\n"],"names":[],"mappings":";AAEA,MAAqB,kBAAkB,SAAS;AAAA,EAG9C,YAAY,WAAW;AACrB,UAAM,SAAS;AAgBjB,SAAA,UAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MACF;AACA,YAAM,gBAAgB;AAEtB,WAAK,MAAM;AACN,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAvBxB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAClE;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,SAAK,MAAM;AAAA,EACb;AAYF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-uploader.es.js","sources":["../../src/custom-uploader.ts"],"sourcesContent":["import type { Range } from 'quill/core/quill'\n\nimport Quill from 'quill'\nimport {\n FILE_UPLOADER_MIME_TYPES,\n IMAGE_UPLOADER_MIME_TYPES,\n} from './config/editor.config'\n\ninterface InsertFileData {\n code: number\n message?: string\n data: {\n title: string\n size: number\n src: string\n }\n}\n\nconst Uploader = Quill.imports['modules/uploader']\nconst Delta = Quill.import('delta')\n\nclass CustomUploader extends Uploader {\n quill\n options\n\n upload(range, files, isFile?) {\n const uploads = []\n const fileFlags = []\n const rejectFlags = {\n file: false,\n image: false,\n }\n const uploadOption = this.quill.options.uploadOption\n const acceptObj\n = (uploadOption && {\n image: uploadOption.imageAccept,\n file: uploadOption.fileAccept,\n })\n || {}\n Array.from(files).forEach((file: any) => {\n if (file) {\n const fileFlag\n = typeof isFile === 'boolean'\n ? isFile\n : !/^image\\/[-\\w.]+$/.test(file.type)\n const fileType = fileFlag ? 'file' : 'image'\n const accept = acceptObj[fileType] || this.options[fileType]\n if (this.isAllowedFileType(accept, file)) {\n uploads.push(file)\n fileFlags.push(fileFlag)\n }\n else {\n rejectFlags[fileType] = true\n }\n }\n })\n this.options.handler.call(this, range, uploads, fileFlags, rejectFlags)\n }\n\n isAllowedFileType = (accept: Array<string> | string, file: File) => {\n if (accept) {\n const baseMimeType = file.type.replace(/\\/.*$/, '')\n const acceptArr = typeof accept === 'string' ? accept.split(',') : accept\n return acceptArr.some((type: string) => {\n const validType = type.trim()\n // suffix name (e.g. '.png,.xlsx')\n if (validType.startsWith('.')) {\n return (\n file.name\n .toLowerCase()\n .includes(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length)\n )\n // mime type like 'image/*'\n }\n else if (/\\/\\*$/.test(validType)) {\n return baseMimeType === validType.replace(/\\/.*$/, '')\n }\n // mime type like 'text/plain,application/json'\n return file.type === validType\n })\n }\n return true\n }\n\n // 处理上传文件\n handleUploadFile(range, files, _hasRejectedFile) {\n this.insertFileToEditor(range, files[0], {\n code: 0,\n data: {\n title: files[0].name,\n size: files[0].size,\n src: files[0].src,\n },\n })\n }\n\n // 将文件插入编辑器\n insertFileToEditor(range: Range, file: File, { code, message, data }: InsertFileData) {\n if (code === 0) {\n const oldContent = new Delta().retain(range.index).delete(range.length)\n const videoFlag = this.uploadOption && this.uploadOption.isVideoPlay && /^video\\/[-\\w.]+$/.test(file.type)\n const insertObj = videoFlag ? { video: data } : { file: data }\n const currentContent = new Delta([{ insert: insertObj }])\n const newContent = oldContent.concat(currentContent)\n this.quill.updateContents(newContent, Quill.sources.USER)\n this.quill.setSelection(range.index + 1)\n }\n else {\n console.error('error message:', message)\n }\n }\n\n // 将图片插入编辑器\n insertImageToEditor(range, { code, message, data }) {\n if (code === 0) {\n const { imageId, imageUrl } = data\n // 粘贴截图或者从外源直接拷贝的单图时,需要将编辑器中已选中的内容删除\n const oldContent = new Delta().retain(range.index).delete(range.length)\n const currentContent = new Delta([\n {\n insert: { image: imageUrl },\n attributes: { 'image-id': imageId },\n },\n ])\n const newContent = oldContent.concat(currentContent)\n this.quill.updateContents(newContent, Quill.sources.USER)\n this.quill.setSelection(range.index + 1)\n }\n else {\n console.error('error message:', message)\n }\n }\n\n // 处理上传图片\n handleUploadImage(range, { file, files }, hasRejectedImage) {\n if (this.quill.options.uploadOption?.imageUpload) {\n const imageEnableMultiUpload = this.enableMultiUpload === true || this.enableMultiUpload?.image\n\n const result = {\n file,\n data: { files: [file] },\n hasRejectedImage,\n callback: (res) => {\n if (!res) {\n return\n }\n if (imageEnableMultiUpload && Array.isArray(res)) {\n res.forEach(value => this.insertImageToEditor(range, value))\n }\n else {\n this.insertImageToEditor(range, res)\n }\n },\n }\n if (imageEnableMultiUpload) {\n result.data = { files }\n }\n this.quill.options.uploadOption?.imageUpload(result)\n }\n else {\n const promises = files.map((fileItem) => {\n return new Promise((resolve) => {\n const reader = new FileReader()\n reader.onload = (e: any) => {\n resolve(e.target.result)\n }\n reader.readAsDataURL(fileItem)\n })\n })\n Promise.all(promises).then((images) => {\n const update = images.reduce((delta: any, image) => {\n return delta.insert({ image })\n }, new Delta().retain(range.index).delete(range.length))\n\n this.quill.updateContents(update, Quill.sources.USER)\n this.quill.setSelection(range.index + images.length, Quill.sources.SILENT)\n })\n }\n }\n}\n\nCustomUploader.DEFAULTS = {\n file: FILE_UPLOADER_MIME_TYPES,\n image: IMAGE_UPLOADER_MIME_TYPES,\n enableMultiUpload: false,\n handler(range, files, fileFlags, rejectFlags) {\n const fileArr = []\n const imgArr = []\n files.forEach((file, index) => (fileFlags[index] ? fileArr.push(file) : imgArr.push(file)))\n if (this.quill.options.modules.file && (fileArr.length || rejectFlags.file)) {\n this.handleUploadFile(range, fileArr, rejectFlags.file)\n }\n if (imgArr.length || rejectFlags.image) {\n this.handleUploadImage(range, { file: imgArr[0], files: imgArr }, rejectFlags.image)\n }\n },\n}\n\nexport default CustomUploader\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"people.es.js","sources":["../../../../src/emoji/emoji-list/people.ts"],"sourcesContent":["import { createEmoji } from '../utils'\n\nconst peopleEmojiArr = [\n ['grinning', '1f600', ':grinning:', '😀', 'p', '1'],\n ['grin', '1f601', ':grin:', '😁', 'p', '2'],\n ['joy', '1f602', ':joy:', '😂', 'p', '3'],\n ['smiley', '1f603', ':smiley:', '😃', 'p', '5'],\n ['smile', '1f604', ':smile:', '😄', 'p', '6'],\n ['sweat_smile', '1f605', ':sweat_smile:', '😅', 'p', '7'],\n ['laughing', '1f606', ':laughing:', '😆', 'p', '8'],\n ['wink', '1f609', ':wink:', '😉', 'p', '9'],\n ['blush', '1f60a', ':blush:', '😊', 'p', '10'],\n ['yum', '1f60b', ':yum:', '😋', 'p', '11'],\n ['sunglasses', '1f60e', ':sunglasses:', '😎', 'p', '12'],\n ['heart_eyes', '1f60d', ':heart_eyes:', '😍', 'p', '13'],\n ['kissing_heart', '1f618', ':kissing_heart:', '😘', 'p', '14'],\n ['kissing', '1f617', ':kissing:', '😗', 'p', '15'],\n ['kissing_smiling_eyes', '1f619', ':kissing_smiling_eyes:', '😙', 'p', '16'],\n ['kissing_closed_eyes', '1f61a', ':kissing_closed_eyes:', '😚', 'p', '17'],\n ['slightly_smiling_face', '1f642', ':slight_smile:', '🙂', 'p', '19'],\n ['hugging_face', '1f917', ':hugging:', '🤗', 'p', '20'],\n ['thinking_face', '1f914', ':thinking:', '🤔', 'p', '21'],\n ['neutral_face', '1f610', ':neutral_face:', '😐', 'p', '22'],\n ['expressionless', '1f611', ':expressionless:', '😑', 'p', '23'],\n ['no_mouth', '1f636', ':no_mouth:', '😶', 'p', '24'],\n ['smirk', '1f60f', ':smirk:', '😏', 'p', '26'],\n ['persevere', '1f623', ':persevere:', '😣', 'p', '27'],\n ['disappointed_relieved', '1f625', ':disappointed_relieved:', '😥', 'p', '28'],\n ['open_mouth', '1f62e', ':open_mouth:', '😮', 'p', '29'],\n ['zipper_mouth_face', '1f910', ':zipper_mouth:', '🤐', 'p', '30'],\n ['hushed', '1f62f', ':hushed:', '😯', 'p', '31'],\n ['sleepy', '1f62a', ':sleepy:', '😪', 'p', '32'],\n ['tired_face', '1f62b', ':tired_face:', '😫', 'p', '33'],\n ['sleeping', '1f634', ':sleeping:', '😴', 'p', '34'],\n ['relieved', '1f60c', ':relieved:', '😌', 'p', '35'],\n ['nerd_face', '1f913', ':nerd:', '🤓', 'p', '36'],\n ['stuck_out_tongue', '1f61b', ':stuck_out_tongue:', '😛', 'p', '37'],\n ['stuck_out_tongue_winking_eye', '1f61c', ':stuck_out_tongue_winking_eye:', '😜', 'p', '38'],\n ['stuck_out_tongue_closed_eyes', '1f61d', ':stuck_out_tongue_closed_eyes:', '😝', 'p', '39'],\n ['unamused', '1f612', ':unamused:', '😒', 'p', '41'],\n ['sweat', '1f613', ':sweat:', '😓', 'p', '42'],\n ['pensive', '1f614', ':pensive:', '😔', 'p', '43'],\n ['confused', '1f615', ':confused:', '😕', 'p', '44'],\n ['money_mouth_face', '1f911', ':money_mouth:', '🤑', 'p', '46'],\n ['astonished', '1f632', ':astonished:', '😲', 'p', '47'],\n ['slightly_frowning_face', '1f641', ':slight_frown:', '🙁', 'p', '49'],\n ['confounded', '1f616', ':confounded:', '😖', 'p', '50'],\n ['disappointed', '1f61e', ':disappointed:', '😞', 'p', '51'],\n ['worried', '1f61f', ':worried:', '😟', 'p', '52'],\n ['triumph', '1f624', ':triumph:', '😤', 'p', '53'],\n ['cry', '1f622', ':cry:', '😢', 'p', '54'],\n ['sob', '1f62d', ':sob:', '😭', 'p', '55'],\n ['frowning', '1f626', ':frowning:', '😦', 'p', '56'],\n ['anguished', '1f627', ':anguished:', '😧', 'p', '57'],\n ['fearful', '1f628', ':fearful:', '😨', 'p', '58'],\n ['weary', '1f629', ':weary:', '😩', 'p', '59'],\n ['grimacing', '1f62c', ':grimacing:', '😬', 'p', '60'],\n ['cold_sweat', '1f630', ':cold_sweat:', '😰', 'p', '61'],\n ['scream', '1f631', ':scream:', '😱', 'p', '62'],\n ['flushed', '1f633', ':flushed:', '😳', 'p', '63'],\n ['dizzy_face', '1f635', ':dizzy_face:', '😵', 'p', '64'],\n ['rage', '1f621', ':rage:', '😡', 'p', '65'],\n ['angry', '1f620', ':angry:', '😠', 'p', '66'],\n ['innocent', '1f607', ':innocent:', '😇', 'p', '67'],\n ['mask', '1f637', ':mask:', '😷', 'p', '71'],\n ['face_with_thermometer', '1f912', ':thermometer_face:', '🤒', 'p', '72'],\n ['face_with_head_bandage', '1f915', ':head_bandage:', '🤕', 'p', '73'],\n ['smiling_imp', '1f608', ':smiling_imp:', '😈', 'p', '76'],\n ['imp', '1f47f', ':imp:', '👿', 'p', '77'],\n ['skull', '1f480', ':skull:', '💀', 'p', '80'],\n ['ghost', '1f47b', ':ghost:', '👻', 'p', '82'],\n ['alien', '1f47d', ':alien:', '👽', 'p', '83'],\n ['space_invader', '1f47e', ':space_invader:', '👾', 'a', '84'],\n ['robot_face', '1f916', ':robot:', '🤖', 'p', '85'],\n ['hankey', '1f4a9', ':poop:', '💩', 'p', '86'],\n ['smiley_cat', '1f63a', ':smiley_cat:', '😺', 'p', '87'],\n ['smile_cat', '1f638', ':smile_cat:', '😸', 'p', '88'],\n ['joy_cat', '1f639', ':joy_cat:', '😹', 'p', '89'],\n ['heart_eyes_cat', '1f63b', ':heart_eyes_cat:', '😻', 'p', '90'],\n ['smirk_cat', '1f63c', ':smirk_cat:', '😼', 'p', '91'],\n ['kissing_cat', '1f63d', ':kissing_cat:', '😽', 'p', '92'],\n ['scream_cat', '1f640', ':scream_cat:', '🙀', 'p', '93'],\n ['crying_cat_face', '1f63f', ':crying_cat_face:', '😿', 'p', '94'],\n ['pouting_cat', '1f63e', ':pouting_cat:', '😾', 'p', '95'],\n ['muscle', '1f4aa', ':muscle:', '💪', 'p', '1080'],\n ['point_left', '1f448', ':point_left:', '👈', 'p', '1092'],\n ['point_right', '1f449', ':point_right:', '👉', 'p', '1098'],\n ['point_up', '261d', ':point_up:', '☝', 'p', '1104'],\n ['point_up_2', '1f446', ':point_up_2:', '👆', 'p', '1110'],\n ['middle_finger', '1f595', ':middle_finger:', '🖕', 'p', '1116'],\n ['point_down', '1f447', ':point_down:', '👇', 'p', '1122'],\n ['v', '270c', ':v:', '✌', 'p', '1128'],\n ['raised_hand_with_fingers_splayed', '1f590', ':hand_splayed:', '🖐', 'p', '1158'],\n ['ok_hand', '1f44c', ':ok_hand:', '👌', 'p', '1170'],\n ['thumbsup', '1f44d', ':thumbsup:', '👍', 'p', '1176'],\n ['thumbsdown', '1f44e', ':thumbsdown:', '👎', 'p', '1182'],\n ['fist', '270a', ':fist:', '✊', 'p', '1188'],\n ['facepunch', '1f44a', ':punch:', '👊', 'p', '1194'],\n ['wave', '1f44b', ':wave:', '👋', 'p', '1218'],\n ['clap', '1f44f', ':clap:', '👏', 'p', '1224'],\n ['writing_hand', '270d', ':writing_hand:', '✍', 'p', '1230'],\n ['open_hands', '1f450', ':open_hands:', '👐', 'p', '1236'],\n ['pray', '1f64f', ':pray:', '🙏', 'p', '1248'],\n ['ear', '1f442', ':ear:', '👂', 'p', '1266'],\n ['nose', '1f443', ':nose:', '👃', 'p', '1272'],\n ['eyes', '1f440', ':eyes:', '👀', 'p', '1279'],\n ['eye', '1f441', ':eye:', '👁', 'p', '1280'],\n ['lips', '1f444', ':lips:', '👄', 'p', '1283'],\n ['fire', '1f525', ':fire:', '🔥', 'n', '1753'],\n]\nexport const peopleEmoji = createEmoji(peopleEmojiArr)\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-list.es.js","sources":["../../../src/emoji/emoji-list.ts"],"sourcesContent":["import {\n peopleEmoji,\n} from './emoji-list/index'\n\nconst emojiList = [\n ...peopleEmoji,\n]\n\nexport default emojiList\n"],"names":[],"mappings":";;AAIA,MAAM,YAAY;AAAA,EAChB,GAAG;AACL;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-map.es.js","sources":["../../../src/emoji/emoji-map.ts"],"sourcesContent":["import emojiList from './emoji-list'\n\nconst emojiMap = {}\n\nemojiList.forEach((emojiListObject) => {\n emojiMap[emojiListObject.name] = emojiListObject\n})\n\nexport default emojiMap\n"],"names":[],"mappings":";AAEA,MAAM,WAAW,CAAC;AAElB,UAAU,QAAQ,CAAC,oBAAoB;AAC5B,WAAA,gBAAgB,IAAI,IAAI;AACnC,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-blot.es.js","sources":["../../../../src/emoji/formats/emoji-blot.ts"],"sourcesContent":["import Quill from 'quill'\nimport emojiMap from '../emoji-map'\n\nconst Embed = Quill.imports['blots/embed']\n\n// @dynamic\nclass EmojiBlot extends Embed {\n static emojiClass: string\n static emojiPrefix: any\n static tagName: string\n static blotName: string\n static className: string\n static create(value) {\n const node = super.create()\n if (typeof value === 'object') {\n EmojiBlot.buildSpan(value, node)\n }\n else if (typeof value === 'string') {\n const valueObj = emojiMap[value]\n if (valueObj) {\n EmojiBlot.buildSpan(valueObj, node)\n }\n }\n // 修复在emoji后输入中文插入其中导致quill不能识别\n node.setAttribute('contenteditable', false)\n return node\n }\n\n static value(node) {\n return node.dataset.name\n }\n\n static buildSpan(value, node) {\n node.setAttribute('data-name', value.name)\n const emojiSpan = document.createElement('span')\n emojiSpan.classList.add(this.emojiClass)\n emojiSpan.classList.add(this.emojiPrefix + value.name)\n // unicode can be '1f1f5-1f1ea',see emoji-list.js.\n emojiSpan.textContent = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode))\n node.appendChild(emojiSpan)\n }\n\n static parseUnicode(string) {\n return string.split('-').map(str => Number.parseInt(str, 16))\n }\n}\n\nEmojiBlot.blotName = 'emoji'\nEmojiBlot.className = 'ql-emojiblot'\nEmojiBlot.tagName = 'span'\nEmojiBlot.emojiClass = 'ap'\nEmojiBlot.emojiPrefix = 'ap-'\n\nexport default EmojiBlot\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,kBAAkB,MAAM;AAAA,EAM5B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM;AACf,QAAA,OAAO,UAAU,UAAU;AACnB,gBAAA,UAAU,OAAO,IAAI;AAAA,IAAA,WAExB,OAAO,UAAU,UAAU;AAC5B,YAAA,WAAW,SAAS,KAAK;AAC/B,UAAI,UAAU;AACF,kBAAA,UAAU,UAAU,IAAI;AAAA,MACpC;AAAA,IACF;AAEK,SAAA,aAAa,mBAAmB,KAAK;AACnC,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,MAAM;AACjB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,UAAU,OAAO,MAAM;AACvB,SAAA,aAAa,aAAa,MAAM,IAAI;AACnC,UAAA,YAAY,SAAS,cAAc,MAAM;AACrC,cAAA,UAAU,IAAI,KAAK,UAAU;AACvC,cAAU,UAAU,IAAI,KAAK,cAAc,MAAM,IAAI;AAE3C,cAAA,cAAc,OAAO,cAAc,GAAG,UAAU,aAAa,MAAM,OAAO,CAAC;AACrF,SAAK,YAAY,SAAS;AAAA,EAC5B;AAAA,EAEA,OAAO,aAAa,QAAQ;AACnB,WAAA,OAAO,MAAM,GAAG,EAAE,IAAI,SAAO,OAAO,SAAS,KAAK,EAAE,CAAC;AAAA,EAC9D;AACF;AAEA,UAAU,WAAW;AACrB,UAAU,YAAY;AACtB,UAAU,UAAU;AACpB,UAAU,aAAa;AACvB,UAAU,cAAc;"}
|
package/es/emoji/index.es.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/emoji/index.ts"],"sourcesContent":["import EmojiBlot from './formats/emoji-blot'\nimport ShortNameEmoji from './modules/emoji'\nimport ToolbarEmoji from './modules/toolbar-emoji'\n\nexport default { EmojiBlot, ShortNameEmoji, ToolbarEmoji }\n"],"names":[],"mappings":";;;AAIA,MAAA,QAAe,EAAE,WAAW,gBAAgB,aAAa;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emoji.es.js","sources":["../../../../src/emoji/modules/emoji.ts"],"sourcesContent":["import Quill from 'quill'\nimport emojiList from '../emoji-list'\n\nconst Module = Quill.imports['core/module']\n\n// @dynamic\nclass ShortNameEmoji extends Module {\n static DEFAULTS: {\n emojiList: any[]\n fuse: {\n shouldSort: boolean\n threshold: number\n location: number\n distance: number\n maxPatternLength: number\n minMatchCharLength: number\n keys: string[]\n }\n }\n\n emojiList: any\n quill: any\n fuse: any\n onOpen: any\n onClose: any\n container: HTMLUListElement\n onSelectionChange: any\n onTextChange: any\n open: boolean\n atIndex: any\n focusedButton: any\n isWhiteSpace: (ch: any) => boolean\n query: any\n buttons: any\n options: any\n constructor(quill, options) {\n super(quill, options)\n\n this.emojiList = options.emojiList\n\n this.quill = quill\n this.onClose = options.onClose\n this.onOpen = options.onOpen\n this.container = document.createElement('ul')\n this.container.classList.add('emoji_completions')\n this.quill.container.appendChild(this.container)\n this.container.style.position = 'absolute'\n this.container.style.display = 'none'\n\n this.onSelectionChange = this.maybeUnfocus.bind(this)\n this.onTextChange = this.update.bind(this)\n\n this.open = false\n this.atIndex = null\n this.focusedButton = null\n\n this.isWhiteSpace = function (ch) {\n let whiteSpace = false\n if (/\\s/.test(ch)) {\n whiteSpace = true\n }\n return whiteSpace\n }\n\n quill.keyboard.addBinding({\n // TODO: Once Quill supports using event.key change this to \":\"\n key: 186, // \":\" instead of 190 in Safari. Since it's the same key it doesn't matter if we register both.\n shiftKey: true,\n }, this.triggerPicker.bind(this))\n\n quill.keyboard.addBinding({\n // gecko based browsers (firefox) use 59 as the keycode for semicolon,\n // which makes a colon character when combined with shift\n key: 59,\n shiftKey: true,\n }, this.triggerPicker.bind(this))\n\n quill.keyboard.addBinding({\n key: 39, // ArrowRight\n collapsed: true,\n }, this.handleArrow.bind(this))\n\n quill.keyboard.addBinding({\n key: 40, // ArrowRight\n collapsed: true,\n }, this.handleArrow.bind(this))\n // TODO: Add keybindings for Enter (13) and Tab (9) directly on the quill editor\n }\n\n triggerPicker(range, _context) {\n if (this.open) return true\n if (range.length > 0) {\n this.quill.deleteText(range.index, range.length, Quill.sources.USER)\n }\n\n this.quill.insertText(range.index, ':', 'emoji-shortname', Quill.sources.USER)\n const atSignBounds = this.quill.getBounds(range.index)\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT)\n\n this.atIndex = range.index\n\n const paletteMaxPos = atSignBounds.left + 250\n if (paletteMaxPos > this.quill.container.offsetWidth) {\n this.container.style.left = `${atSignBounds.left - 250}px`\n }\n else {\n this.container.style.left = `${atSignBounds.left}px`\n }\n\n this.container.style.top = `${atSignBounds.top + atSignBounds.height}px`\n this.open = true\n\n this.quill.on('text-change', this.onTextChange)\n this.quill.once('selection-change', this.onSelectionChange)\n if (this.onOpen) {\n this.onOpen()\n }\n }\n\n handleArrow() {\n if (!this.open) return true\n this.buttons[0].classList.remove('emoji-active')\n this.buttons[0].focus()\n if (this.buttons.length > 1) {\n this.buttons[1].focus()\n }\n }\n\n update(event) {\n const sel = this.quill.getSelection().index\n if (this.atIndex >= sel) { // Deleted the at character\n return this.close(null)\n }\n this.query = this.quill.getText(this.atIndex + 1, sel - this.atIndex - 1)\n\n try {\n if (this.isWhiteSpace(this.query)) {\n this.close(null)\n return\n }\n }\n catch (_e) {\n throw new Error('Close failed')\n }\n\n this.query = this.query.trim()\n\n let emojis: any = this.emojiList\n emojis.sort((a: any, b: any) => {\n return a.emoji_order - b.emoji_order\n })\n\n if (this.query.length < this.options.fuse.minMatchCharLength || emojis.length === 0) {\n this.container.style.display = 'none'\n return\n }\n if (emojis.length > 15) { // return only 15\n emojis = emojis.slice(0, 15)\n }\n this.renderCompletions(emojis, event)\n }\n\n maybeUnfocus() {\n if (this.container.querySelector('*:focus')) return\n this.close(null)\n }\n\n renderCompletions(emojis, evt) {\n try {\n if (evt) {\n if (evt.key === 'Enter' || evt.keyCode === 13) {\n this.close(emojis[0], 1)\n this.container.style.display = 'none'\n return\n }\n else if (evt.key === 'Tab' || evt.keyCode === 9) {\n this.quill.disable()\n this.buttons[0].classList.remove('emoji-active')\n this.buttons[1].focus()\n return\n }\n }\n if (evt) return\n }\n catch (_e) {\n throw new Error('Render failed')\n }\n\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild)\n }\n const buttons = Array.from({ length: emojis.length })\n this.buttons = buttons\n\n const handler = (i, emoji) => (event) => {\n const arrowLeftKey = event.key === 'ArrowLeft' || event.keyCode === 37\n const arrowUpKey = event.key === 'ArrowUp' || event.keyCode === 38\n const arrowRightKey = event.key === 'ArrowRight' || event.keyCode === 39\n const arrowDownKey = event.key === 'ArrowDown' || event.keyCode === 40\n if (arrowRightKey || arrowDownKey) {\n event.preventDefault()\n buttons[Math.min(buttons.length - 1, i + 1)].focus()\n }\n else if (event.key === 'Tab' || event.keyCode === 9) {\n event.preventDefault()\n if ((i + 1) === buttons.length) {\n buttons[0].focus()\n return\n }\n buttons[Math.min(buttons.length - 1, i + 1)].focus()\n }\n else if (arrowLeftKey || arrowUpKey) {\n event.preventDefault()\n buttons[Math.max(0, i - 1)].focus()\n }\n else if (event.key === 'Enter' || event.keyCode === 13\n || event.key === ' ' || event.keyCode === 32\n || event.key === 'Tab' || event.keyCode === 9) {\n event.preventDefault()\n this.quill.enable()\n this.close(emoji)\n }\n }\n\n emojis.forEach((emoji, i) => {\n const li = makeElement(\n 'li',\n {},\n makeElement(\n 'button',\n { type: 'button' },\n makeElement('span', { className: `button-emoji ap ap-${emoji.name}`, innerHTML: emoji.code_decimal }),\n makeElement('span', { className: 'unmatched' }, emoji.shortname),\n ),\n )\n this.container.appendChild(li)\n buttons[i] = li.firstChild\n // Events will be GC-ed with button on each re-render:\n buttons[i].addEventListener('keydown', handler(i, emoji))\n buttons[i].addEventListener('mousedown', () => this.close(emoji))\n buttons[i].addEventListener('focus', () => {\n this.focusedButton = i\n })\n buttons[i].addEventListener('unfocus', () => {\n this.focusedButton = null\n })\n })\n\n this.container.style.display = 'block'\n // emoji palette on top\n if (this.quill.container.classList.contains('top-emoji')) {\n const x = this.container.querySelectorAll('li')\n let i\n for (i = 0; i < x.length; i++) {\n x[i].style.display = 'block'\n }\n\n const windowHeight = window.innerHeight\n const editorPos = this.quill.container.getBoundingClientRect().top\n if (editorPos > windowHeight / 2 && this.container.offsetHeight > 0) {\n this.container.style.top = `-${this.container.offsetHeight}px`\n }\n }\n\n buttons[0].classList.add('emoji-active')\n }\n\n close(value, trailingDelete = 0) {\n this.quill.enable()\n this.container.style.display = 'none'\n while (this.container.firstChild) {\n this.container.removeChild(this.container.firstChild)\n }\n this.quill.off('selection-change', this.onSelectionChange)\n this.quill.off('text-change', this.onTextChange)\n if (value) {\n this.quill.deleteText(this.atIndex, this.query.length + 1 + trailingDelete, Quill.sources.USER)\n this.quill.insertEmbed(this.atIndex, 'emoji', value, Quill.sources.USER)\n setTimeout(() => this.quill.setSelection(this.atIndex + 1), 0)\n }\n this.quill.focus()\n this.open = false\n if (this.onClose) {\n this.onClose(value)\n }\n }\n}\n\nShortNameEmoji.DEFAULTS = {\n emojiList,\n fuse: {\n shouldSort: true,\n threshold: 0.1,\n location: 0,\n distance: 100,\n maxPatternLength: 32,\n minMatchCharLength: 1,\n keys: [\n 'shortname',\n ],\n },\n}\n\nfunction makeElement(tag, attrs, ...children) {\n const elem = document.createElement(tag)\n Object.keys(attrs).forEach((key) => {\n elem[key] = attrs[key]\n })\n children.forEach((child) => {\n if (typeof child === 'string') {\n child = document.createTextNode(child)\n }\n elem.appendChild(child)\n })\n return elem\n}\n\nexport default ShortNameEmoji\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-emoji.es.js","sources":["../../../../src/emoji/modules/toolbar-emoji.ts"],"sourcesContent":["import Quill from 'quill'\nimport { EMOJI_SPRITE as emojiSprite } from '../../config/base64-image'\nimport emojiList from '../emoji-list'\n\nconst Module = Quill.imports['core/module']\n\nclass ToolbarEmoji extends Module {\n quill: any\n toolbar: any\n constructor(quill, options) {\n super(quill, options)\n\n this.quill = quill\n this.toolbar = quill.getModule('toolbar')\n if (typeof this.toolbar !== 'undefined') {\n this.toolbar.addHandler('emoji', this.checkPalatteExist)\n }\n\n // 在emoji模块加载时判断并插入emoji精灵图样式,防止重复插入\n let emojiStyle = document.querySelector('style#devui-emoji-sprite')\n if (!emojiStyle) {\n emojiStyle = document.createElement('style')\n emojiStyle.setAttribute('id', 'devui-emoji-sprite')\n emojiStyle.innerHTML = `.ap{background-image:url(${emojiSprite})}`\n document.head.appendChild(emojiStyle)\n }\n }\n\n checkPalatteExist() {\n const quill = this.quill\n fnCheckDialogOpen(quill)\n this.quill.on('text-change', (_delta, _oldDelta, source) => {\n if (source === 'user') {\n fnClose()\n fnUpdateRange(quill)\n }\n })\n }\n}\n\nfunction fnClose() {\n const eleEmojiPlate = document.getElementById('emoji-palette')\n document.getElementById('emoji-close-div').style.display = 'none'\n if (eleEmojiPlate) {\n eleEmojiPlate.remove()\n }\n}\n\nfunction fnCheckDialogOpen(quill) {\n const elementExists = document.getElementById('emoji-palette')\n if (elementExists) {\n elementExists.remove()\n }\n else {\n fnShowEmojiPalatte(quill)\n }\n}\n\nfunction fnUpdateRange(quill) {\n const range = quill.getSelection()\n return range\n}\n\nfunction fnShowEmojiPalatte(quill) {\n const eleEmojiArea = document.createElement('div')\n const range = quill.getSelection()\n const atSignBounds = quill.getBounds(range.index)\n\n quill.container.appendChild(eleEmojiArea)\n const containerRect = quill.container.getBoundingClientRect()\n const paletteMaxPos = atSignBounds.left + 250 // palette max width is 250\n eleEmojiArea.id = 'emoji-palette'\n eleEmojiArea.style.top = `${10 + atSignBounds.top + atSignBounds.height + containerRect.top}px`\n if (paletteMaxPos > quill.container.offsetWidth) {\n eleEmojiArea.style.left = `${atSignBounds.left + containerRect.left - 250}px`\n }\n else {\n eleEmojiArea.style.left = `${atSignBounds.left + containerRect.left}px`\n }\n\n const tabToolbar = document.createElement('div')\n tabToolbar.id = 'tab-toolbar'\n eleEmojiArea.appendChild(tabToolbar)\n\n // panel\n const panel = document.createElement('div')\n panel.id = 'tab-panel'\n eleEmojiArea.appendChild(panel)\n\n const emojiType = [\n { type: 'p', name: 'people', content: '<div class=\"i-people\"></div>' },\n { type: 'n', name: 'nature', content: '<div class=\"i-nature\"></div>' },\n { type: 'd', name: 'food', content: '<div class=\"i-food\"></div>' },\n { type: 's', name: 'symbols', content: '<div class=\"i-symbols\"></div>' },\n { type: 'a', name: 'activity', content: '<div class=\"i-activity\"></div>' },\n { type: 't', name: 'travel', content: '<div class=\"i-travel\"></div>' },\n { type: 'o', name: 'objects', content: '<div class=\"i-objects\"></div>' },\n { type: 'f', name: 'flags', content: '<div class=\"i-flags\"></div>' },\n ]\n\n const tabElementHolder = document.createElement('ul')\n tabToolbar.appendChild(tabElementHolder)\n\n if (document.getElementById('emoji-close-div') === null) {\n const closeDiv = document.createElement('div')\n closeDiv.id = 'emoji-close-div'\n closeDiv.addEventListener('click', fnClose, false)\n document.getElementsByTagName('body')[0].appendChild(closeDiv)\n }\n else {\n document.getElementById('emoji-close-div').style.display = 'block'\n }\n\n emojiType.forEach((emojiTypeItem) => {\n // add tab bar\n const tabElement = document.createElement('li')\n tabElement.classList.add('emoji-tab')\n tabElement.classList.add(`filter-${emojiTypeItem.name}`)\n const tabValue = emojiTypeItem.content\n tabElement.innerHTML = tabValue\n tabElement.dataset.filter = emojiTypeItem.type\n tabElementHolder.appendChild(tabElement)\n\n const emojiFilter = document.querySelector(`.filter-${emojiTypeItem.name}`)\n emojiFilter.addEventListener('click', () => {\n const tab = document.querySelector('.emoji-tab.active')\n if (tab) {\n tab.classList.remove('active')\n }\n emojiFilter.classList.toggle('active')\n fnUpdateEmojiContainer(emojiFilter, panel, quill)\n })\n })\n fnEmojiPanelInit(panel, quill)\n}\n\nfunction fnEmojiPanelInit(panel, quill) {\n fnEmojiElementsToPanel('p', panel, quill)\n document.querySelector('.filter-people').classList.add('active')\n}\n\nfunction fnEmojiElementsToPanel(_type, panel, quill) {\n const result = emojiList\n result.sort((a: any, b: any) => {\n return a.emoji_order - b.emoji_order\n })\n\n quill.focus()\n const range = fnUpdateRange(quill)\n\n result.forEach((emoji: any) => {\n const span = document.createElement('span')\n const t = document.createTextNode(emoji.shortname)\n span.appendChild(t)\n span.classList.add('bem')\n span.classList.add(`bem-${emoji.name}`)\n span.classList.add('ap')\n span.classList.add(`ap-${emoji.name}`)\n const output = String(String(emoji.code_decimal))\n span.innerHTML = `${output} `\n panel.appendChild(span)\n\n const customButton = document.querySelector(`.bem-${emoji.name}`)\n if (customButton) {\n customButton.addEventListener('click', () => {\n quill.insertEmbed(range.index, 'emoji', emoji, Quill.sources.USER)\n setTimeout(() => quill.setSelection(range.index + 1), 0)\n fnClose()\n })\n }\n })\n}\n\nfunction fnUpdateEmojiContainer(emojiFilter, panel, quill) {\n while (panel.firstChild) {\n panel.removeChild(panel.firstChild)\n }\n const type = emojiFilter.dataset.filter\n fnEmojiElementsToPanel(type, panel, quill)\n}\n\nexport default ToolbarEmoji\n"],"names":["emojiSprite"],"mappings":"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"}
|
package/es/emoji/utils.es.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.es.js","sources":["../../../src/emoji/utils.ts"],"sourcesContent":["export function createEmoji(emojiArr) {\n const emojiList = []\n emojiArr.forEach((emojiItem) => {\n const [name, unicode, shortname, codeDecimal, category, emojiOrder] = emojiItem\n emojiList.push({\n name,\n unicode,\n shortname,\n codeDecimal,\n category,\n emojiOrder,\n })\n })\n return emojiList\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,UAAU;AACpC,QAAM,YAAY,CAAA;AACT,WAAA,QAAQ,CAAC,cAAc;AAC9B,UAAM,CAAC,MAAM,SAAS,WAAW,aAAa,UAAU,UAAU,IAAI;AACtE,cAAU,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AACM,SAAA;AACT;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.es.js","sources":["../../../../src/file/formats/file.ts"],"sourcesContent":["import Quill from 'quill'\nimport { sanitize } from '../../config/editor.utils'\n\nconst Embed = Quill.imports['blots/embed']\nconst FILE_ATTRIBUTES = ['id', 'title', 'size', 'lastModified']\n\nclass File extends Embed {\n static blotName: string\n static tagName: string\n static className: string\n static PROTOCOL_WHITELIST: string[]\n statics: any\n domNode: any\n\n static create(value) {\n const node = super.create(value)\n const size = value.size / 1024\n const fixSize = !size ? 0 : size < 1 ? 1 : size.toFixed(0)\n node.classList.add('icon-file')\n node.setAttribute('contenteditable', false)\n const fileSvg = '<svg viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326z m1.8 562H232V136h302v216c0 23.2 18.8 42 42 42h216v494z\" p-id=\"2307\"></path></svg>'\n node.innerHTML = `${fileSvg} ${value.title} (${fixSize} KB)`\n const src = File.sanitize(value.src)\n if (src) {\n node.href = src\n node.target = '_blank'\n }\n FILE_ATTRIBUTES.forEach((key) => {\n if (value[key]) {\n node.dataset[key] = value[key]\n }\n })\n return node\n }\n\n static value(domNode) {\n return File.getFormats(domNode)\n }\n\n static formats(domNode) {\n return File.getFormats(domNode)\n }\n\n static getFormats(domNode) {\n const formats: any = {}\n const href = File.sanitize(domNode.href)\n if (href) {\n formats.src = href\n }\n FILE_ATTRIBUTES.forEach((key) => {\n if (domNode.dataset[key]) {\n formats[key] = domNode.dataset[key]\n }\n })\n return formats\n }\n\n static sanitize(url) {\n return (sanitize(url, this.PROTOCOL_WHITELIST) && url) || ''\n }\n}\nFile.blotName = 'file'\nFile.tagName = 'A'\nFile.className = 'ql-file-item'\nFile.PROTOCOL_WHITELIST = ['http', 'https']\n\nexport default File\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AACzC,MAAM,kBAAkB,CAAC,MAAM,SAAS,QAAQ,cAAc;AAE9D,MAAM,aAAa,MAAM;AAAA,EAQvB,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM,OAAO,KAAK;AACzB,UAAA,OAAO,MAAM,OAAO;AACpB,UAAA,UAAU,CAAC,OAAO,IAAI,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC;AACpD,SAAA,UAAU,IAAI,WAAW;AACzB,SAAA,aAAa,mBAAmB,KAAK;AAC1C,UAAM,UAAU;AAChB,SAAK,YAAY,GAAG,OAAO,IAAI,MAAM,KAAK,KAAK,OAAO;AACtD,UAAM,MAAM,KAAK,SAAS,MAAM,GAAG;AACnC,QAAI,KAAK;AACP,WAAK,OAAO;AACZ,WAAK,SAAS;AAAA,IAChB;AACgB,oBAAA,QAAQ,CAAC,QAAQ;AAC3B,UAAA,MAAM,GAAG,GAAG;AACd,aAAK,QAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,MAC/B;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,SAAS;AACb,WAAA,KAAK,WAAW,OAAO;AAAA,EAChC;AAAA,EAEA,OAAO,QAAQ,SAAS;AACf,WAAA,KAAK,WAAW,OAAO;AAAA,EAChC;AAAA,EAEA,OAAO,WAAW,SAAS;AACzB,UAAM,UAAe,CAAA;AACrB,UAAM,OAAO,KAAK,SAAS,QAAQ,IAAI;AACvC,QAAI,MAAM;AACR,cAAQ,MAAM;AAAA,IAChB;AACgB,oBAAA,QAAQ,CAAC,QAAQ;AAC3B,UAAA,QAAQ,QAAQ,GAAG,GAAG;AACxB,gBAAQ,GAAG,IAAI,QAAQ,QAAQ,GAAG;AAAA,MACpC;AAAA,IAAA,CACD;AACM,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,KAAK;AACnB,WAAQ,SAAS,KAAK,KAAK,kBAAkB,KAAK,OAAQ;AAAA,EAC5D;AACF;AACA,KAAK,WAAW;AAChB,KAAK,UAAU;AACf,KAAK,YAAY;AACjB,KAAK,qBAAqB,CAAC,QAAQ,OAAO;"}
|
package/es/file/index.es.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../src/file/index.ts"],"sourcesContent":["import Quill from 'quill'\nimport File from './formats/file'\nimport FileBar from './modules/file-bar'\n\nconst Module = Quill.imports['core/module']\n\nclass FileModule extends Module {\n quill: any\n fileBar: FileBar\n\n static register() {\n Quill.register('formats/file', File, true)\n }\n\n constructor(quill, options) {\n super(quill, options)\n this.quill = quill\n quill.root.addEventListener('click', event => this.clickEvent(event), false)\n }\n\n clickEvent(event) {\n event.preventDefault()\n const target = event.target\n const fileDom = target.closest('a.ql-file-item')\n if (fileDom) {\n if (this.fileBar) {\n this.fileBar.destroy()\n }\n this.fileBar = new FileBar(this.quill, fileDom)\n }\n else if (this.fileBar && !target.closest('.ql-file-bar')) {\n this.fileBar.destroy()\n this.fileBar = null\n }\n }\n}\n\nexport default FileModule\n"],"names":[],"mappings":";;;AAIA,MAAM,SAAS,MAAM,QAAQ,aAAa;AAE1C,MAAM,mBAAmB,OAAO;AAAA,EAI9B,OAAO,WAAW;AACV,UAAA,SAAS,gBAAgB,MAAM,IAAI;AAAA,EAC3C;AAAA,EAEA,YAAY,OAAO,SAAS;AAC1B,UAAM,OAAO,OAAO;AACpB,SAAK,QAAQ;AACP,UAAA,KAAK,iBAAiB,SAAS,CAAA,UAAS,KAAK,WAAW,KAAK,GAAG,KAAK;AAAA,EAC7E;AAAA,EAEA,WAAW,OAAO;AAChB,UAAM,eAAe;AACrB,UAAM,SAAS,MAAM;AACf,UAAA,UAAU,OAAO,QAAQ,gBAAgB;AAC/C,QAAI,SAAS;AACX,UAAI,KAAK,SAAS;AAChB,aAAK,QAAQ;MACf;AACA,WAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,OAAO;AAAA,IAAA,WAEvC,KAAK,WAAW,CAAC,OAAO,QAAQ,cAAc,GAAG;AACxD,WAAK,QAAQ;AACb,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-bar.es.js","sources":["../../../../src/file/modules/file-bar.ts"],"sourcesContent":["import Quill from 'quill'\n// devui-internal api: utils\\public-api.ts\n\nimport { Range } from 'quill/core/selection'\nimport { unshiftString } from '../../utils/method'\nimport File from '../formats/file'\n\nconst Delta = Quill.imports.delta\n\nexport default class FileBar {\n quill: any\n file: any\n domNode: HTMLElement\n fileRange: any\n template: string\n\n constructor(quill, target) {\n this.quill = quill\n this.file = target\n const fileBlot = Quill.find(target)\n const index = this.quill.getIndex(fileBlot)\n const [fileItem, offset] = this.quill.scroll.descendant(File, index)\n const length = fileItem && fileItem.length()\n this.fileRange = new Range(index - offset, length)\n\n const timestamp = Number(this.file.dataset.lastModified)\n const _lastModifiedDate = this.formatDate(timestamp)\n this.template = [\n // `<a class=\"ql-last-modified-date\" href=\"${this.file.href}\" target=\"_blank\">${this.file.href}</a>`,\n // '<span class=\"ql-split\"></span>',\n // `<a class=\"ql-file-preview\"><i class=\"icon-preview\"></i></a>`,\n `<a class=\"ql-file-download\"><i class=\"icon-download\"></i></a>`,\n '<a class=\"ql-file-delete\"><i class=\"icon-delete\"></i></a>',\n ].join('')\n\n this.createFileBar()\n }\n\n createFileBar() {\n this.domNode = document.createElement('div')\n this.domNode.className = 'ql-file-bar'\n this.domNode.innerHTML = this.template\n // 查看文件\n const filePreview = this.domNode.querySelector('a.ql-file-preview')\n if (filePreview) {\n filePreview.addEventListener('click', (event) => {\n this.operateFile(event, 'view')\n })\n }\n // 下载文件\n const fileDownload = this.domNode.querySelector('a.ql-file-download')\n if (fileDownload) {\n fileDownload.addEventListener('click', (event) => {\n this.operateFile(event, 'download')\n })\n }\n // 删除文件\n const fileDelete = this.domNode.querySelector('a.ql-file-delete')\n if (fileDelete) {\n fileDelete.addEventListener('click', (event) => {\n this.operateFile(event, 'delete')\n const delta = new Delta()\n .retain(this.fileRange.index)\n .delete(this.fileRange.length)\n this.quill.updateContents(delta, Quill.sources.USER)\n this.quill.setSelection(this.fileRange.index)\n })\n }\n\n this.setPosition()\n this.quill.root.parentNode.appendChild(this.domNode)\n }\n\n destroy() {\n if (this.domNode) {\n this.domNode.remove()\n this.domNode = null\n this.file = null\n }\n }\n\n operateFile(event, operate) {\n event.preventDefault()\n const fileId = this.file.dataset.id || ''\n const fileDownloadUrl = this.file.href\n if (fileId) {\n this.quill.emitter.emit('file-change', {\n operation: operate,\n data: { fileId, fileDownloadUrl },\n })\n }\n if (operate === 'download') {\n const a = document.createElement('a')\n a.href = fileDownloadUrl\n a.target = '_blank'\n a.id = 'exppub'\n document.body.appendChild(a)\n const alink = document.getElementById('exppub')\n alink.click()\n alink.parentNode.removeChild(a)\n }\n this.destroy()\n }\n\n setPosition() {\n if (this.domNode && this.file) {\n const parent = this.quill.root.parentNode\n const child = this.file.querySelector('span')\n const containerRect = parent.getBoundingClientRect()\n const fileRect = child.getBoundingClientRect()\n this.css(this.domNode, {\n left: `${fileRect.left - containerRect.left}px`,\n top: `${fileRect.top - containerRect.top + 10}px`,\n })\n }\n }\n\n css(domNode, rules) {\n if (typeof rules === 'object') {\n for (const prop in rules) {\n if (prop) {\n if (Array.isArray(rules[prop])) {\n // 兼容IE11浏览器\n rules[prop].forEach((val) => {\n domNode.style[prop] = val\n })\n }\n else {\n domNode.style[prop] = rules[prop]\n }\n }\n }\n }\n }\n\n formatDate(timestamp) {\n const date = new Date(timestamp)\n const year = date.getFullYear()\n // TODO\n const month = unshiftString(`${date.getMonth() + 1}`, 2, '0')\n const day = unshiftString(`${date.getDate()}`, 2, '0')\n const hour = unshiftString(`${date.getHours()}`, 2, '0')\n const minute = unshiftString(`${date.getMinutes()}`, 2, '0')\n return Number.isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fluent-editor.es.js","sources":["../../src/fluent-editor.ts"],"sourcesContent":["import type { Module, Parchment as TypeParchment } from 'quill'\nimport type { IEditorConfig } from './config/types'\nimport Quill from 'quill'\nimport { FontStyle, LineHeightStyle, SizeStyle, TextIndentStyle } from './attributors' // 字符统计\nimport { getListValue, ICONS_CONFIG, inputFile, TABLE_RIGHT_MENU_CONFIG } from './config' // 粘贴板\nimport Counter from './counter' // 图片\nimport CustomClipboard from './custom-clipboard' // 图片拉伸模块\nimport CustomImage from './custom-image/BlotFormatter' // 上传\nimport { CustomImageSpec } from './custom-image/specs/CustomImageSpec' // 表情\nimport CustomUploader from './custom-uploader' // 文件\nimport Emoji from './emoji' // 超链接0\nimport FileModule from './file' // @提醒\nimport { FormatPainter } from './format-painter'// 截图\n// import GlobalLink from './global-link' // 全局链接\nimport Link from './link' // 软回车\nimport Mention from './mention/Mention' // 删除线\n// import QuickMenu from './quick-menu' // 快捷菜单\nimport { Screenshot } from './screenshot' // 表格\nimport SoftBreak from './soft-break' // 代码块高亮\nimport Strike from './strike' // 工具栏\nimport CustomSyntax from './syntax' // 视频\nimport BetterTable from './table/better-table'\nimport Toolbar from './toolbar'\nimport Video from './video'\n\nclass FluentEditor extends Quill {\n constructor(container: HTMLElement | string, options: IEditorConfig = {}) {\n super(container, options)\n }\n}\n\nconst registerModules = function () {\n const Icons = Quill.imports['ui/icons']\n const iconKeys = Object.keys(ICONS_CONFIG)\n iconKeys.forEach((iconKey) => {\n Icons[iconKey] = ICONS_CONFIG[iconKey]\n })\n\n const SnowTheme = Quill.imports['themes/snow'] as typeof Module\n SnowTheme.DEFAULTS = {\n modules: {\n 'keyboard': {\n bindings: {\n ...BetterTable.keyboardBindings,\n },\n },\n 'toolbar': {\n handlers: {\n ...(SnowTheme.DEFAULTS as Record<string, any>).modules.toolbar.handlers,\n 'undo': function () {\n this.quill.history.undo()\n },\n 'redo': function () {\n this.quill.history.redo()\n },\n 'better-table': function () {\n this.quill.getModule('better-table').insertTable(3, 3)\n },\n 'file': function () {\n const accept = this.quill.options?.uploadOption?.fileAccept\n inputFile.call(this, 'file', accept)\n },\n 'image': function () {\n const accept = this.quill.options?.uploadOption?.imageAccept\n inputFile.call(this, 'image', accept)\n },\n 'emoji': function () {},\n 'fullscreen': function () {},\n 'list': function (value) {\n const range = this.quill.getSelection()\n const formats = this.quill.getFormat(range)\n const preListValue = Array.isArray(formats.list) ? formats.list[0]?.value : formats.list?.value\n const curListValue = getListValue(value, preListValue)\n // 如果设置list的选区中有表格,判断第一个table-col位置,将表格前的内容设置为list格式\n const lines = this.quill.getLines(range.index, range.length)\n const tableCols = lines.filter(line => line.statics.blotName === 'table-col' && !line.prev)\n if (tableCols.length) {\n let start = range.index\n // 遍历table-col群组,以之获取表格,将表格前选区设置为对应list格式\n tableCols.forEach((item, index) => {\n const table = item.domNode.closest('table.quill-better-table')\n const tableBlot = Quill.find(table) as TypeParchment.Blot\n const tableLength = tableBlot.length()\n const tableStart = this.quill.getIndex(item)\n const tableEnd = tableStart + tableLength\n const beforeTableRangeLength = tableStart - start\n // 在表格前设置列表\n this.quill.setSelection(start, beforeTableRangeLength, Quill.sources.SILENT)\n this.quill.format('list', curListValue, Quill.sources.USER)\n table.parentNode.classList.remove('quill-better-table-selected')\n // 当前表格末尾为下一个选取的开始\n start = tableEnd\n if (index === tableCols.length - 1) {\n // 将最后一个表格之后所有选区内容设置list格式\n this.quill.setSelection(tableEnd, range.index + range.length - tableEnd)\n this.quill.format('list', curListValue, Quill.sources.USER)\n }\n })\n }\n else {\n this.quill.format('list', curListValue, Quill.sources.USER)\n }\n },\n [FormatPainter.toolName]: FormatPainter,\n [Screenshot.toolName]: Screenshot,\n },\n },\n 'better-table': {\n operationMenu: {\n items: TABLE_RIGHT_MENU_CONFIG,\n color: true,\n },\n },\n 'image': {\n specs: [CustomImageSpec],\n overlay: {\n style: {\n border: '1px dashed rgb(68, 68, 68)',\n },\n },\n align: {\n icons: {\n left: '<i class=\"icon-text-align-left\"></i>',\n center: '<i class=\"icon-text-align-center\"></i>',\n right: '<i class=\"icon-text-align-right\"></i>',\n },\n },\n },\n },\n }\n\n FluentEditor.register(\n {\n 'modules/toolbar': Toolbar,\n 'modules/mention': Mention,\n 'modules/better-table': BetterTable,\n 'modules/clipboard': CustomClipboard,\n 'modules/uploader': CustomUploader, // 三者关联性最强\n 'modules/image': CustomImage, // 三者关联性最强\n 'modules/file': FileModule, // 三者关联性最强\n 'modules/counter': Counter,\n 'modules/emoji-toolbar': Emoji.ToolbarEmoji,\n 'modules/emoji-shortname': Emoji.ShortNameEmoji,\n // 'modules/global-link': GlobalLink,//暂未开发\n 'modules/link': Link, // 报错\n // 'modules/quickmenu': QuickMenu,//暂未开发\n 'modules/syntax': CustomSyntax,\n\n 'formats/strike': Strike,\n 'formats/softBreak': SoftBreak,\n 'formats/video': Video,\n 'formats/emoji': Emoji.EmojiBlot,\n 'formats/font': FontStyle,\n 'formats/size': SizeStyle,\n 'formats/line-height': LineHeightStyle,\n 'formats/text-indent': TextIndentStyle,\n },\n true, // 覆盖内部模块\n )\n\n return FluentEditor\n}\n\nexport default registerModules()\n"],"names":["Toolbar","CustomImage","Strike"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.es.js","sources":["../../../src/global-link/constants.ts"],"sourcesContent":["export const ON_WIKI_LINK_REMOVE = 'wiki-link/remove'\nexport const ON_DOC_LINK_REMOVE = 'doc-link/remove'\nexport const ON_WORK_ITEM_LINK_REMOVE = 'work-item-link/remove'\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,2BAA2B;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"customer-widget-link.es.js","sources":["../../../../src/global-link/formats/customer-widget-link.ts"],"sourcesContent":["import Quill from 'quill'\n\nconst BlockEmbed = Quill.imports['blots/block/embed']\n\n// @dynamic\nclass CustomerWidgetLink extends BlockEmbed {\n static blotName: string\n static tagName: string\n static className: string\n\n static create(value) {\n const node = super.create(value)\n node.setAttribute('data-widget-type', value.type)\n node.setAttribute('data-widget-id', value.id)\n node.setAttribute('src', value.value)\n return node\n }\n\n static value(domNode) {\n return {\n type: domNode.getAttribute('data-widget-type'),\n id: domNode.getAttribute('data-widget-id'),\n value: domNode.getAttribute('src'),\n }\n }\n\n constructor(scroll, domNode, data) {\n super(scroll, domNode, data)\n }\n}\n\nCustomerWidgetLink.blotName = 'customer-widget-link'\nCustomerWidgetLink.tagName = 'img'\nCustomerWidgetLink.className = 'ql-customer-widget-link'\n\nexport default CustomerWidgetLink\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;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doc-link.es.js","sources":["../../../../src/global-link/formats/doc-link.ts"],"sourcesContent":["import Quill from 'quill'\nimport { ON_DOC_LINK_REMOVE } from '../constants'\n\nconst Embed = Quill.imports['blots/embed']\n\n// @dynamic\nclass DocumentLink extends Embed {\n static blotName: string\n static tagName: string\n static className: string\n docData: any\n scroll: any\n\n static create(value) {\n const node = super.create(value)\n node.setAttribute('href', value.link)\n node.setAttribute('title', value.text)\n node.setAttribute('target', '_blank')\n node.setAttribute('icon-link', value.icon)\n\n const icon = document.createElement('span')\n icon.classList.add('ql-doc-link-icon')\n icon.style.background = `url(${value.icon}) no-repeat center`\n icon.style.backgroundSize = 'contain'\n\n node.insertAdjacentElement('afterbegin', icon)\n const text = document.createTextNode(value.text)\n node.appendChild(text)\n return node\n }\n\n static value(domNode) {\n return {\n link: domNode.getAttribute('href'),\n icon: domNode.getAttribute('icon-link'),\n text: domNode.textContent,\n }\n }\n\n constructor(scroll, domNode, data) {\n super(scroll, domNode, data)\n this.docData = data\n }\n\n remove() {\n this.scroll.emitter.emit(ON_DOC_LINK_REMOVE, this.docData)\n return super.remove()\n }\n}\n\nDocumentLink.blotName = 'doc-link'\nDocumentLink.tagName = 'A'\nDocumentLink.className = 'ql-doc-link'\n\nexport default DocumentLink\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;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wiki-link.es.js","sources":["../../../../src/global-link/formats/wiki-link.ts"],"sourcesContent":["import Quill from 'quill'\nimport { ON_WIKI_LINK_REMOVE } from '../constants'\n\nconst Embed = Quill.imports['blots/embed']\n\n// @dynamic\nclass WikiLink extends Embed {\n static blotName: string\n static tagName: string\n static className: string\n wikiData: any\n scroll: any\n\n static create(value) {\n const node = super.create(value)\n node.setAttribute('href', value.link)\n node.setAttribute('target', '_blank')\n node.setAttribute('title', value.text)\n node.textContent = value.text\n return node\n }\n\n static value(domNode) {\n return {\n link: domNode.getAttribute('href'),\n text: domNode.textContent,\n }\n }\n\n constructor(scroll, domNode, data) {\n super(scroll, domNode, data)\n this.wikiData = data\n }\n\n remove() {\n this.scroll.emitter.emit(ON_WIKI_LINK_REMOVE, this.wikiData)\n return super.remove()\n }\n}\n\nWikiLink.blotName = 'wiki-link'\nWikiLink.tagName = 'A'\nWikiLink.className = 'ql-wiki-link'\n\nexport default WikiLink\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;"}
|