@maketribe/ms-app 3.2.25 → 3.2.27
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/dist/cjs/assets/iconfonts/iconfont.js +1 -1
- package/dist/cjs/assets/iconfonts/iconfont.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/element-block.js +92 -0
- package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/core/index.js +5 -6
- package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/utils.js +20 -13
- package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/editor.vue.js +4 -4
- package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
- package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +217 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +54 -43
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +19 -16
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +32 -54
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +80 -105
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +34 -7
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +41 -5
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/nodes.js +10 -4
- package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
- package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
- package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
- package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
- package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
- package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
- package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
- package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
- package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
- package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
- package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
- package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
- package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
- package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
- package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
- package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
- package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
- package/dist/cjs/modules/cms/cms-settings.js +4 -0
- package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
- package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +8 -6
- package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
- package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
- package/dist/cjs/modules/ms/components/image-select/image-select-panel.js +7 -1
- package/dist/cjs/modules/ms/components/image-select/image-select-panel.js.map +1 -1
- package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
- package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
- package/dist/esm/assets/iconfonts/iconfont.js +1 -1
- package/dist/esm/assets/iconfonts/iconfont.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/element-block.js +92 -0
- package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/core/index.js +6 -7
- package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
- package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/editor.vue.js +4 -4
- package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
- package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +218 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +55 -44
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +20 -17
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +33 -55
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +84 -109
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +37 -10
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +43 -7
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/nodes.js +10 -4
- package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
- package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
- package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
- package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
- package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
- package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
- package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
- package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
- package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
- package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
- package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
- package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
- package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
- package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
- package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
- package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
- package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
- package/dist/esm/modules/cms/cms-settings.js +4 -0
- package/dist/esm/modules/cms/cms-settings.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
- package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +9 -7
- package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
- package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
- package/dist/esm/modules/ms/components/image-select/image-select-panel.js +9 -3
- package/dist/esm/modules/ms/components/image-select/image-select-panel.js.map +1 -1
- package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
- package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
- package/dist/style/components/basic/doc-editor/index.css +1 -1
- package/dist/style/components/basic/visual-page-editor/index.css +1 -1
- package/dist/style/components/index.css +1 -1
- package/dist/style/index.css +2 -2
- package/dist/style/src/components/basic/doc-editor/index.scss +2 -0
- package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
- package/dist/types/components/basic/doc-editor/core/element-block.d.ts +45 -0
- package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -4
- package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +88 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +50 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +72 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +64 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +51 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/index.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/utils.d.ts +3 -0
- package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +24 -20
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +18 -10
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/index.d.ts +0 -1
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +0 -6
- package/dist/types/components/basic/doc-editor/plugins/index.d.ts +3 -3
- package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
- package/dist/types/components/basic/dynamic-form-panel/type.d.ts +3 -2
- package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
- package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
- package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
- package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
- package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
- package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
- package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
- package/dist/types/modules/cms/cms-settings.d.ts +4 -28
- package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +1 -0
- package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
- package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
- package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
- package/package.json +9 -8
- package/dist/cjs/components/basic/doc-editor/core/decorator-module.js +0 -13
- package/dist/cjs/components/basic/doc-editor/core/decorator-module.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/core/element-module.js +0 -68
- package/dist/cjs/components/basic/doc-editor/core/element-module.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
- package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -45
- package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
- package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
- package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
- package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
- package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
- package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
- package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/decorator-module.js +0 -13
- package/dist/esm/components/basic/doc-editor/core/decorator-module.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/element-module.js +0 -68
- package/dist/esm/components/basic/doc-editor/core/element-module.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
- package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -46
- package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
- package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
- package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
- package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
- package/dist/types/components/basic/doc-editor/core/decorator-module.d.ts +0 -60
- package/dist/types/components/basic/doc-editor/core/element-module.d.ts +0 -15
- package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.d.ts +0 -63
- package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/index.d.ts +0 -1
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.d.ts +0 -86
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleRenderComponent.d.ts +0 -23
- package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.d.ts +0 -63
- package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.d.ts +0 -58
- package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
- package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
- package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
- /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
- /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
- /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
- /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
- /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
- /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
- /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
- /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
- /package/dist/types/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.d.ts +0 -0
- /package/dist/types/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue.d.ts +0 -0
- /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
- /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ModulePlugin/utils.tsx"],"sourcesContent":["\r\nimport { Fragment,ref,unref,resolveComponent,h,reactive } from 'vue'\r\nimport { Dialoger } from '@maketribe/dm'\r\nimport { ElButton,ElCollapse,ElCollapseItem,ElInput } from \"element-plus\";\r\nimport { Search } from \"@element-plus/icons-vue\";\r\nimport { useModules,type ModuleType } from \"./composables\"\r\nimport { DynamicFormItemType } from \"../../../dynamic-form-panel\"\r\n\r\nimport { ModuleBlockNode,$createModuleBlockNode,$isModuleBlockNode } from \"./ModuleBlockNode\"\r\nimport { ModuleContainerNode} from \"./ModuleContainerNode\"\r\n\r\n/**\r\n * 显示模块模版选择\r\n * @returns \r\n */\r\nexport const showModuleSelectDialog = async () => {\r\n\r\n return new Promise(resolve => {\r\n\r\n const Modules = useModules();\r\n const selectOption = ref<ModuleType|null>(null);\r\n const searchInputValue = ref(\"\");\r\n\r\n // 取消编辑\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n };\r\n\r\n // 确认编辑\r\n const handleConfirmClick = () => {\r\n dialogInstance.destroy();\r\n resolve({...selectOption.value as any});\r\n };\r\n\r\n // 点击块\r\n const clickHandle = (item:any)=>{\r\n selectOption.value = item;\r\n }\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"模版选择\",\r\n class: \"mk-doc-editor__module-template_dialog\",\r\n width: \"700px\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n\r\n // 循环体\r\n const templateListComponent = Modules.filter(item=>{\r\n if(searchInputValue.value){\r\n return item.name.indexOf(searchInputValue.value) >= 0 || item.title.indexOf(searchInputValue.value) >= 0\r\n }\r\n else{\r\n return true;\r\n }\r\n }).map(item=>{\r\n\r\n return <div \r\n class={`mk-doc-editor__module-template_dialog_list-item ${(item.cover ? 'cover':'')} ${(selectOption.value?.name == item.name ? 'active':'')}`} \r\n onClick={()=>clickHandle(item)}>\r\n {item.cover ? <img src={item.cover} /> :null}\r\n <div class=\"mk-doc-editor__module-template_dialog_list-item_title\">{item.title}</div>\r\n </div>\r\n })\r\n\r\n return <div class=\"mk-doc-editor__module-template_dialog_warp\">\r\n <ElInput v-model={searchInputValue.value} prefix-icon={Search} clearable={true} />\r\n <div class=\"mk-doc-editor__module-template_dialog_list-body\">\r\n {templateListComponent}\r\n </div>\r\n </div>\r\n },\r\n footer: () => {\r\n return <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick} disabled={!selectOption.value}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n },\r\n });\r\n });\r\n}\r\n\r\n// 元素属性列表\r\nconst ElAttrList = [\"src\",\"alt\",\"poster\",\"href\",\"_target\"];\r\n\r\n/**\r\n * 创建html\r\n * @param template \r\n * @param data \r\n */\r\nexport const createHtml = (template:string,data:any)=>{\r\n\r\n const parser = new DOMParser();\r\n const element = parser.parseFromString(template,\"text/html\")\r\n const list = [element.body];\r\n\r\n Object.keys(data).forEach(key=>{\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n const el = list[i];\r\n const val = data[key] as any;\r\n \r\n // 忽略文本节点\r\n if(el.nodeType != 3){\r\n // 属性解析\r\n if(ElAttrList.filter(attr=>el.hasAttribute(`data-${key}-${attr}`)).\r\n some(attr=> el.setAttribute(attr,val))){ break; }\r\n // 文本解析\r\n else if(el.hasAttribute(`data-${key}`)){\r\n el.textContent = val;\r\n break;\r\n }\r\n else if(el.hasAttribute(`data-${key}-html`)){\r\n el.innerHTML = val;\r\n break;\r\n } \r\n }\r\n\r\n // 广域递归\r\n if(el.childNodes.length){\r\n el.childNodes.forEach((sub:any)=>list.push(sub))\r\n }\r\n }\r\n })\r\n\r\n return element.body.innerHTML.replaceAll(/[\\r|\\n|\\r\\n]+/g,\"\")\r\n}\r\n\r\n/**\r\n * 创建html\r\n * @param template \r\n * @param data \r\n */\r\nexport const createModuleMetaData = (html:string,options:DynamicFormItemType[])=>{\r\n\r\n\r\n const parser = new DOMParser();\r\n const element = parser.parseFromString(html,\"text/html\")\r\n const list = [element.body];\r\n const data:any = {};\r\n\r\n options.forEach(item=>{\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n const el = list[i];\r\n const val = \"\";\r\n\r\n // 忽略文本节点\r\n if(el.nodeType != 3){\r\n // 属性解析\r\n if(ElAttrList.filter(attr=>el.hasAttribute(`data-${item.name}-${attr}`)).\r\n some(attr=> data[item.name] = el.getAttribute(attr))){ break; }\r\n // 文本解析\r\n else if(el.hasAttribute(`data-${item.name}`)){\r\n data[item.name] = el.textContent;\r\n break;\r\n }\r\n // html 解析\r\n else if(el.hasAttribute(`data-${item.name}-html`)){\r\n data[item.name] = el.innerHTML;\r\n break;\r\n } \r\n }\r\n\r\n // 广域递归\r\n if(el.childNodes.length){\r\n el.childNodes.forEach((sub:any)=>list.push(sub))\r\n }\r\n\r\n data[item.name] = val;\r\n }\r\n })\r\n\r\n return { data }\r\n}\r\n\r\n/**\r\n * 查找容器节点\r\n * @param element \r\n * @returns \r\n */\r\nexport const findModuleContainerEl = (element:HTMLElement):HTMLElement|null => {\r\n\r\n var el:HTMLElement|null = element\r\n\r\n if(el.classList.contains(ModuleContainerNode.getMarkClassName())){\r\n return el;\r\n }\r\n\r\n while (el != null && !el.classList.contains(ModuleContainerNode.getMarkClassName())) {\r\n el = el.parentElement;\r\n }\r\n\r\n return el\r\n}\r\n\r\n/**\r\n * 查找模块节点\r\n * @param element \r\n * @returns \r\n */\r\nexport const findModuleNodeEl = (element:HTMLElement):HTMLElement|null => {\r\n\r\n var el:HTMLElement|null = element\r\n\r\n if(el.classList.contains(ModuleBlockNode.getMarkClassName())){\r\n return el;\r\n }\r\n\r\n while (el != null && !el.classList.contains(ModuleBlockNode.getMarkClassName())) {\r\n el = el.parentElement;\r\n }\r\n\r\nreturn el\r\n}\r\n\r\n// 测试代码\r\n// console.log(createHtml(\"<div data-title>111</div>\",{title:\"asdasdasdasd\"}))\r\n// console.log(createModuleMetaData(\"<div data-title>asdasdasd<img data-path-src src='aaa.jpg'></div>\",[\r\n// { name:\"title\", title:\"标题\", component:\"el-input\", props:{ clearable:true }, defaultValue:\"测试标题\" },\r\n// { name:\"path\", title:\"标题\", component:\"el-input\", props:{ clearable:true }, defaultValue:\"111\" }\r\n// ]))\r\n"],"names":["showModuleSelectDialog","Promise","resolve","Modules","useModules","selectOption","ref","searchInputValue","handleCancelClick","dialogInstance","destroy","handleConfirmClick","value","clickHandle","item","Dialoger","customRender","title","class","width","onClose","body","templateListComponent","filter","name","indexOf","map","_createVNode","cover","onClick","ElInput","$event","Search","footer","_Fragment","ElButton","default","_createTextVNode","ElAttrList","createHtml","template","data","parser","DOMParser","element","parseFromString","list","Object","keys","forEach","key","i","length","el","val","nodeType","attr","hasAttribute","some","setAttribute","textContent","innerHTML","childNodes","sub","push","replaceAll","createModuleMetaData","html","options","getAttribute","findModuleContainerEl","classList","contains","ModuleContainerNode","getMarkClassName","parentElement","findModuleNodeEl","ModuleBlockNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ModulePlugin/utils.tsx"],"sourcesContent":["\r\nimport { Fragment,ref,unref,resolveComponent,h,reactive } from 'vue'\r\nimport { Dialoger } from '@maketribe/dm'\r\nimport { ElButton,ElCollapse,ElCollapseItem,ElInput } from \"element-plus\";\r\nimport { Search } from \"@element-plus/icons-vue\";\r\nimport { useModules,type ModuleType } from \"./composables\"\r\nimport { DynamicFormItemType } from \"../../../dynamic-form-panel\"\r\n\r\nimport { ModuleBlockNode } from \"./ModuleBlockNode\"\r\n\r\n/**\r\n * 显示模块模版选择\r\n * @returns \r\n */\r\nexport const showModuleSelectDialog = async () => {\r\n\r\n return new Promise(resolve => {\r\n\r\n const Modules = useModules();\r\n const selectOption = ref<ModuleType|null>(null);\r\n const searchInputValue = ref(\"\");\r\n\r\n // 取消编辑\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n };\r\n\r\n // 确认编辑\r\n const handleConfirmClick = () => {\r\n dialogInstance.destroy();\r\n resolve({...selectOption.value as any});\r\n };\r\n\r\n // 点击块\r\n const clickHandle = (item:any)=>{\r\n selectOption.value = item;\r\n }\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"模版选择\",\r\n class: \"mk-doc-editor__module-template_dialog\",\r\n width: \"700px\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n\r\n // 循环体\r\n const templateListComponent = Modules.filter(item=>{\r\n if(searchInputValue.value){\r\n return item.name.indexOf(searchInputValue.value) >= 0 || item.title.indexOf(searchInputValue.value) >= 0\r\n }\r\n else{\r\n return true;\r\n }\r\n }).map(item=>{\r\n\r\n return <div \r\n class={`mk-doc-editor__module-template_dialog_list-item ${(item.cover ? 'cover':'')} ${(selectOption.value?.name == item.name ? 'active':'')}`} \r\n onClick={()=>clickHandle(item)}>\r\n {item.cover ? <img src={item.cover} /> :null}\r\n <div class=\"mk-doc-editor__module-template_dialog_list-item_title\">{item.title}</div>\r\n </div>\r\n })\r\n\r\n return <div class=\"mk-doc-editor__module-template_dialog_warp\">\r\n <ElInput v-model={searchInputValue.value} prefix-icon={Search} clearable={true} />\r\n <div class=\"mk-doc-editor__module-template_dialog_list-body\">\r\n {templateListComponent}\r\n </div>\r\n </div>\r\n },\r\n footer: () => {\r\n return <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick} disabled={!selectOption.value}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n },\r\n });\r\n });\r\n}\r\n\r\n// 元素属性列表\r\nconst ElAttrList = [\"src\",\"alt\",\"poster\",\"href\",\"_target\"];\r\n\r\n/**\r\n * 创建html\r\n * @param template \r\n * @param data \r\n */\r\nexport const createHtml = (template:string,data:any)=>{\r\n\r\n const parser = new DOMParser();\r\n const element = parser.parseFromString(template,\"text/html\")\r\n const list = [element.body];\r\n\r\n Object.keys(data).forEach(key=>{\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n const el = list[i];\r\n const val = data[key] as any;\r\n \r\n // 忽略文本节点\r\n if(el.nodeType != 3){\r\n // 属性解析\r\n if(ElAttrList.filter(attr=>el.hasAttribute(`data-${key}-${attr}`)).\r\n some(attr=> el.setAttribute(attr,val))){ break; }\r\n // 文本解析\r\n else if(el.hasAttribute(`data-${key}`)){\r\n el.textContent = val;\r\n break;\r\n }\r\n else if(el.hasAttribute(`data-${key}-html`)){\r\n el.innerHTML = val;\r\n break;\r\n } \r\n }\r\n\r\n // 广域递归\r\n if(el.childNodes.length){\r\n el.childNodes.forEach((sub:any)=>list.push(sub))\r\n }\r\n }\r\n })\r\n\r\n return element.body.innerHTML.replaceAll(/[\\r|\\n|\\r\\n]+/g,\"\")\r\n}\r\n\r\n/**\r\n * 创建html\r\n * @param template \r\n * @param data \r\n */\r\nexport const createModuleMetaData = (html:string,options:DynamicFormItemType[])=>{\r\n\r\n\r\n const parser = new DOMParser();\r\n const element = parser.parseFromString(html,\"text/html\")\r\n const list = [element.body];\r\n const data:any = {};\r\n\r\n options.forEach(item=>{\r\n\r\n for(let i=0;i<list.length;i++){\r\n\r\n const el = list[i];\r\n const val = \"\";\r\n\r\n // 忽略文本节点\r\n if(el.nodeType != 3){\r\n // 属性解析\r\n if(ElAttrList.filter(attr=>el.hasAttribute(`data-${item.name}-${attr}`)).\r\n some(attr=> data[item.name] = el.getAttribute(attr))){ break; }\r\n // 文本解析\r\n else if(el.hasAttribute(`data-${item.name}`)){\r\n data[item.name] = el.textContent;\r\n break;\r\n }\r\n // html 解析\r\n else if(el.hasAttribute(`data-${item.name}-html`)){\r\n data[item.name] = el.innerHTML;\r\n break;\r\n } \r\n }\r\n\r\n // 广域递归\r\n if(el.childNodes.length){\r\n el.childNodes.forEach((sub:any)=>list.push(sub))\r\n }\r\n\r\n data[item.name] = val;\r\n }\r\n })\r\n\r\n return { data }\r\n}\r\n\r\n/**\r\n * 查找模块节点\r\n * @param element \r\n * @returns \r\n */\r\nexport const findModuleNodeEl = (element:HTMLElement):HTMLElement|null => {\r\n\r\n var el:HTMLElement|null = element\r\n\r\n if(el.classList.contains(ModuleBlockNode.getMarkClassName())){\r\n return el;\r\n }\r\n\r\n while (el != null && !el.classList.contains(ModuleBlockNode.getMarkClassName())) {\r\n el = el.parentElement;\r\n }\r\n\r\n return el\r\n}\r\n\r\n// 测试代码\r\n// console.log(createHtml(\"<div data-title>111</div>\",{title:\"asdasdasdasd\"}))\r\n// console.log(createModuleMetaData(\"<div data-title>asdasdasd<img data-path-src src='aaa.jpg'></div>\",[\r\n// { name:\"title\", title:\"标题\", component:\"el-input\", props:{ clearable:true }, defaultValue:\"测试标题\" },\r\n// { name:\"path\", title:\"标题\", component:\"el-input\", props:{ clearable:true }, defaultValue:\"111\" }\r\n// ]))\r\n"],"names":["showModuleSelectDialog","Promise","resolve","Modules","useModules","selectOption","ref","searchInputValue","handleCancelClick","dialogInstance","destroy","handleConfirmClick","value","clickHandle","item","Dialoger","customRender","title","class","width","onClose","body","templateListComponent","filter","name","indexOf","map","_createVNode","cover","onClick","ElInput","$event","Search","footer","_Fragment","ElButton","default","_createTextVNode","ElAttrList","createHtml","template","data","parser","DOMParser","element","parseFromString","list","Object","keys","forEach","key","i","length","el","val","nodeType","attr","hasAttribute","some","setAttribute","textContent","innerHTML","childNodes","sub","push","replaceAll","createModuleMetaData","html","options","getAttribute","findModuleNodeEl","classList","contains","ModuleBlockNode","getMarkClassName","parentElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { ref,defineProps,computed,defineEmits,onMounted,onUnmounted,watch } from \"vue\"\r\nimport { useCanShowPlaceholder, useLexicalComposer, useRichTextSetup} from 'lexical-vue'\r\nimport { $getRoot, $getSelection ,$createRangeSelection,$selectAll } from 'lexical'\r\nimport { $generateHtmlFromNodes,$generateNodesFromDOM } from '@lexical/html'\r\nimport ContentEditable from \"./ContentEditable.vue\"\r\nimport DecoratedTeleports from \"./DecoratedTeleports\"\r\n\r\n// 事件\r\nconst emit = defineEmits([\"change\"]);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n content:{ type:String,default:`` },\r\n placeholder:{ type:String,default:`` }\r\n})\r\n\r\nconst editor = useLexicalComposer()\r\n\r\nconst canShowPlaceholder = useCanShowPlaceholder(editor)\r\n\r\nconst parser = new DOMParser();\r\n\r\n// html 内容\r\nconst htmlContent = ref(\"\");\r\n\r\n// 空内容\r\nconst contentIsEmpty = computed(()=>htmlContent.value == `<p class=\"mk-doc__paragraph\"><br></p>` || !htmlContent.value);\r\n\r\n// 设置 HTML\r\nconst setHtml = (html : any)=>{\r\n\r\n // 内容不同则重置 \r\n if(htmlContent.value != html){\r\n\r\n let nodes : Array<any> = [];\r\n\r\n htmlContent.value = html;\r\n\r\n editor.update(()=>{\r\n\r\n if(html.trim()){\r\n // Once you have the DOM instance it's easy to generate LexicalNodes.\r\n nodes = $generateNodesFromDOM(editor,parser.parseFromString(html.trim(),\"text/html\"));\r\n // console.log(
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { ref,defineProps,computed,defineEmits,onMounted,onUnmounted,watch } from \"vue\"\r\nimport { useCanShowPlaceholder, useLexicalComposer, useRichTextSetup} from 'lexical-vue'\r\nimport { $getRoot, $getSelection ,$createRangeSelection,$selectAll } from 'lexical'\r\nimport { $generateHtmlFromNodes,$generateNodesFromDOM } from '@lexical/html'\r\nimport ContentEditable from \"./ContentEditable.vue\"\r\nimport DecoratedTeleports from \"./DecoratedTeleports\"\r\n\r\n// 事件\r\nconst emit = defineEmits([\"change\"]);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n content:{ type:String,default:`` },\r\n placeholder:{ type:String,default:`` }\r\n})\r\n\r\nconst editor = useLexicalComposer()\r\n\r\nconst canShowPlaceholder = useCanShowPlaceholder(editor)\r\n\r\nconst parser = new DOMParser();\r\n\r\n// html 内容\r\nconst htmlContent = ref(\"\");\r\n\r\n// 空内容\r\nconst contentIsEmpty = computed(()=>htmlContent.value == `<p class=\"mk-doc__paragraph\"><br></p>` || !htmlContent.value);\r\n\r\n// 设置 HTML\r\nconst setHtml = (html : any)=>{\r\n\r\n // 内容不同则重置 \r\n if(htmlContent.value != html){\r\n\r\n let nodes : Array<any> = [];\r\n\r\n htmlContent.value = html;\r\n\r\n editor.update(()=>{\r\n\r\n if(html.trim()){\r\n // Once you have the DOM instance it's easy to generate LexicalNodes.\r\n nodes = $generateNodesFromDOM(editor,parser.parseFromString(html.trim(),\"text/html\"));\r\n // console.log($generateNodesFromDOM,parser.parseFromString(html.trim(),\"text/html\"));\r\n }\r\n // 设置权限替换\r\n $selectAll();\r\n $getSelection()?.insertText(\"\")\r\n if(nodes.length > 0){\r\n $getSelection()?.insertNodes(nodes);\r\n }\r\n })\r\n }\r\n}\r\n\r\n\r\nonMounted(()=>{\r\n \r\n // 初始化\r\n watch(()=>props.content,setHtml,{ immediate:true });\r\n\r\n // 监听内容变化\r\n watch(htmlContent,(value:any)=>emit('change',value));\r\n\r\n // 更新操作\r\n const unregisterMergeListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n htmlContent.value = $generateHtmlFromNodes(editor);\r\n })\r\n })\r\n\r\n // 取消\r\n onUnmounted(() => unregisterMergeListener());\r\n\r\n})\r\n\r\n// 使用富文本\r\nuseRichTextSetup(editor)\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-doc-editor__stage__editable\">\r\n <ContentEditable />\r\n <template v-if=\"canShowPlaceholder && contentIsEmpty\">\r\n <div class=\"mk-doc-editor__stage__placeholder mk-doc__paragraph\">\r\n {{props.placeholder}}\r\n </div>\r\n </template>\r\n <DecoratedTeleports />\r\n </div>\r\n\r\n</template>\r\n"],"names":["useLexicalComposer","useCanShowPlaceholder","ref","computed","html","$generateNodesFromDOM","$selectAll","$getSelection","onMounted","watch","$generateHtmlFromNodes","onUnmounted","useRichTextSetup"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,UAAM,OAAO;AAGb,UAAM,QAAQ;AAKd,UAAM,SAASA,WAAAA;AAET,UAAA,qBAAqBC,iCAAsB,MAAM;AAEjD,UAAA,SAAS,IAAI;AAGb,UAAA,cAAcC,QAAI,EAAE;AAGpB,UAAA,iBAAiBC,aAAS,MAAI,YAAY,SAAS,2CAA2C,CAAC,YAAY,KAAK;AAGhH,UAAA,UAAU,CAACC,WAAa;AAGvB,UAAA,YAAY,SAASA,QAAK;AAE3B,YAAI,QAAqB,CAAA;AAEzB,oBAAY,QAAQA;AAEpB,eAAO,OAAO,MAAI;;AAEb,cAAAA,OAAK,QAAO;AAEL,oBAAAC,KAAAA,sBAAsB,QAAO,OAAO,gBAAgBD,OAAK,KAAK,GAAE,WAAW,CAAC;AAAA,UAEtF;AAEWE,kBAAAA;AACGC,sCAAA,MAAAA,mBAAG,WAAW;AACzB,cAAA,MAAM,SAAS,GAAE;AACJA,wCAAA,MAAAA,mBAAG,YAAY;AAAA,UAC/B;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA;AAIJC,QAAAA,UAAU,MAAI;AAGZC,UAAA,MAAM,MAAI,MAAM,SAAQ,SAAQ,EAAE,WAAU,MAAM;AAGlDA,UAAA,MAAM,aAAY,CAAC,UAAY,KAAK,UAAS,KAAK,CAAC;AAGnD,YAAM,0BAA0B,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACjF,oBAAY,KAAK,MAAM;AACT,sBAAA,QAAQC,4BAAuB,MAAM;AAAA,QAAA,CAClD;AAAA,MAAA,CACF;AAGWC,sBAAA,MAAM,yBAAyB;AAAA,IAAA,CAE5C;AAGDC,eAAA,iBAAiB,MAAM;;;;;;;;;;;"}
|
|
@@ -114,22 +114,6 @@ function applyTextFormatFromStyle(style, shouldApply) {
|
|
|
114
114
|
if (!lexical.$isTextNode(lexicalNode)) {
|
|
115
115
|
return lexicalNode;
|
|
116
116
|
}
|
|
117
|
-
let styleStr = "";
|
|
118
|
-
if (style.color) {
|
|
119
|
-
styleStr += `color:${style.color};`;
|
|
120
|
-
}
|
|
121
|
-
if (style.fontSize) {
|
|
122
|
-
styleStr += `font-size:${style.fontSize};`;
|
|
123
|
-
}
|
|
124
|
-
if (style.fontFamily) {
|
|
125
|
-
styleStr += `font-family:${style.fontFamily};`;
|
|
126
|
-
}
|
|
127
|
-
if (style.backgroundColor) {
|
|
128
|
-
styleStr += `background-color:${style.backgroundColor};`;
|
|
129
|
-
}
|
|
130
|
-
if (styleStr) {
|
|
131
|
-
lexicalNode.setStyle(styleStr);
|
|
132
|
-
}
|
|
133
117
|
if (hasBoldFontWeight && !lexicalNode.hasFormat("bold")) {
|
|
134
118
|
lexicalNode.toggleFormat("bold");
|
|
135
119
|
}
|
|
@@ -151,6 +135,22 @@ function applyTextFormatFromStyle(style, shouldApply) {
|
|
|
151
135
|
if (shouldApply && !lexicalNode.hasFormat(shouldApply)) {
|
|
152
136
|
lexicalNode.toggleFormat(shouldApply);
|
|
153
137
|
}
|
|
138
|
+
let styleStr = "";
|
|
139
|
+
if (style.color) {
|
|
140
|
+
styleStr += `color:${style.color};`;
|
|
141
|
+
}
|
|
142
|
+
if (style.fontSize) {
|
|
143
|
+
styleStr += `font-size:${style.fontSize};`;
|
|
144
|
+
}
|
|
145
|
+
if (style.fontFamily) {
|
|
146
|
+
styleStr += `font-family:${style.fontFamily};`;
|
|
147
|
+
}
|
|
148
|
+
if (style.backgroundColor) {
|
|
149
|
+
styleStr += `background-color:${style.backgroundColor};`;
|
|
150
|
+
}
|
|
151
|
+
if (styleStr) {
|
|
152
|
+
lexicalNode.setStyle(styleStr);
|
|
153
|
+
}
|
|
154
154
|
return lexicalNode;
|
|
155
155
|
};
|
|
156
156
|
}
|
package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextNode.js","sources":["../../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.ts"],"sourcesContent":["\r\n\r\nimport type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey, SerializedTextNode } from 'lexical'\r\nimport { $isTextNode,TextNode,$createTextNode } from 'lexical'\r\n\r\n/**\r\n * 富文本的文本节点\r\n */\r\nexport class RichTextNode extends TextNode{\r\n\r\n static getType(): string {\r\n return \"rich-text\";\r\n }\r\n\r\n static clone(node: RichTextNode): RichTextNode {\r\n return new RichTextNode(node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedTextNode): TextNode {\r\n return TextNode.importJSON(serializedNode);\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n \r\n return {\r\n b: () => ({\r\n conversion: convertBringAttentionToElement,\r\n priority: 4\r\n }),\r\n code: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n em: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n i: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n s: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n span: () => ({\r\n conversion: convertSpanElement,\r\n priority: 4\r\n }),\r\n strong: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n sub: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n sup: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n u: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n })\r\n };\r\n }\r\n\r\n constructor(text:string,key?: NodeKey) {\r\n super(text,key)\r\n }\r\n\r\n exportJSON(): SerializedTextNode {\r\n return {\r\n ...super.exportJSON(),\r\n \r\n }\r\n }\r\n}\r\n\r\nfunction convertBringAttentionToElement(domNode:HTMLElement) {\r\n const b = domNode;\r\n const hasNormalFontWeight = b.style.fontWeight === \"normal\";\r\n return {\r\n forChild: applyTextFormatFromStyle(b.style, hasNormalFontWeight ? void 0 : \"bold\"),\r\n node: null\r\n };\r\n}\r\n\r\nvar nodeNameToTextFormat:any = {\r\n code: \"code\",\r\n em: \"italic\",\r\n i: \"italic\",\r\n s: \"strikethrough\",\r\n strong: \"bold\",\r\n sub: \"subscript\",\r\n sup: \"superscript\",\r\n u: \"underline\"\r\n};\r\nfunction convertTextFormatElement(domNode:HTMLElement) {\r\n const format = nodeNameToTextFormat[domNode.nodeName.toLowerCase()];\r\n if (format === void 0) {\r\n return {\r\n node: null\r\n };\r\n }\r\n return {\r\n forChild: applyTextFormatFromStyle(domNode.style, format),\r\n node: null\r\n };\r\n}\r\nfunction convertSpanElement(domNode:HTMLElement) {\r\n const span = domNode;\r\n const style = span.style;\r\n return {\r\n forChild: applyTextFormatFromStyle(style,null),\r\n node: null\r\n };\r\n}\r\n\r\nfunction applyTextFormatFromStyle(style:any, shouldApply:any) {\r\n const fontWeight = style.fontWeight;\r\n const textDecoration = style.textDecoration.split(\" \");\r\n const hasBoldFontWeight = fontWeight === \"700\" || fontWeight === \"bold\";\r\n const hasLinethroughTextDecoration = textDecoration.includes(\"line-through\");\r\n const hasItalicFontStyle = style.fontStyle === \"italic\";\r\n const hasUnderlineTextDecoration = textDecoration.includes(\"underline\");\r\n const verticalAlign = style.verticalAlign;\r\n\r\n return (lexicalNode:LexicalNode) => {\r\n if (!$isTextNode(lexicalNode)) {\r\n return lexicalNode;\r\n }\r\n\r\n
|
|
1
|
+
{"version":3,"file":"RichTextNode.js","sources":["../../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.ts"],"sourcesContent":["\r\n\r\nimport type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey, SerializedTextNode } from 'lexical'\r\nimport { $isTextNode,TextNode,$createTextNode } from 'lexical'\r\n\r\n/**\r\n * 富文本的文本节点\r\n */\r\nexport class RichTextNode extends TextNode{\r\n\r\n static getType(): string {\r\n return \"rich-text\";\r\n }\r\n\r\n static clone(node: RichTextNode): RichTextNode {\r\n return new RichTextNode(node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedTextNode): TextNode {\r\n return TextNode.importJSON(serializedNode);\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n \r\n return {\r\n b: () => ({\r\n conversion: convertBringAttentionToElement,\r\n priority: 4\r\n }),\r\n code: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n em: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n i: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n s: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n span: () => ({\r\n conversion: convertSpanElement,\r\n priority: 4\r\n }),\r\n strong: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n sub: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n sup: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n }),\r\n u: () => ({\r\n conversion: convertTextFormatElement,\r\n priority: 4\r\n })\r\n };\r\n }\r\n\r\n constructor(text:string,key?: NodeKey) {\r\n super(text,key)\r\n }\r\n\r\n exportJSON(): SerializedTextNode {\r\n return {\r\n ...super.exportJSON(),\r\n \r\n }\r\n }\r\n}\r\n\r\nfunction convertBringAttentionToElement(domNode:HTMLElement) {\r\n const b = domNode;\r\n const hasNormalFontWeight = b.style.fontWeight === \"normal\";\r\n return {\r\n forChild: applyTextFormatFromStyle(b.style, hasNormalFontWeight ? void 0 : \"bold\"),\r\n node: null\r\n };\r\n}\r\n\r\nvar nodeNameToTextFormat:any = {\r\n code: \"code\",\r\n em: \"italic\",\r\n i: \"italic\",\r\n s: \"strikethrough\",\r\n strong: \"bold\",\r\n sub: \"subscript\",\r\n sup: \"superscript\",\r\n u: \"underline\"\r\n};\r\nfunction convertTextFormatElement(domNode:HTMLElement) {\r\n const format = nodeNameToTextFormat[domNode.nodeName.toLowerCase()];\r\n if (format === void 0) {\r\n return {\r\n node: null\r\n };\r\n }\r\n return {\r\n forChild: applyTextFormatFromStyle(domNode.style, format),\r\n node: null\r\n };\r\n}\r\nfunction convertSpanElement(domNode:HTMLElement) {\r\n const span = domNode;\r\n const style = span.style;\r\n return {\r\n forChild: applyTextFormatFromStyle(style,null),\r\n node: null\r\n };\r\n}\r\n\r\nfunction applyTextFormatFromStyle(style:any, shouldApply:any) {\r\n const fontWeight = style.fontWeight;\r\n const textDecoration = style.textDecoration.split(\" \");\r\n const hasBoldFontWeight = fontWeight === \"700\" || fontWeight === \"bold\";\r\n const hasLinethroughTextDecoration = textDecoration.includes(\"line-through\");\r\n const hasItalicFontStyle = style.fontStyle === \"italic\";\r\n const hasUnderlineTextDecoration = textDecoration.includes(\"underline\");\r\n const verticalAlign = style.verticalAlign;\r\n\r\n return (lexicalNode:LexicalNode) => {\r\n if (!$isTextNode(lexicalNode)) {\r\n return lexicalNode;\r\n }\r\n\r\n\r\n\r\n if (hasBoldFontWeight && !lexicalNode.hasFormat(\"bold\")) {\r\n lexicalNode.toggleFormat(\"bold\");\r\n }\r\n if (hasLinethroughTextDecoration && !lexicalNode.hasFormat(\"strikethrough\")) {\r\n lexicalNode.toggleFormat(\"strikethrough\");\r\n }\r\n if (hasItalicFontStyle && !lexicalNode.hasFormat(\"italic\")) {\r\n lexicalNode.toggleFormat(\"italic\");\r\n }\r\n if (hasUnderlineTextDecoration && !lexicalNode.hasFormat(\"underline\")) {\r\n lexicalNode.toggleFormat(\"underline\");\r\n }\r\n if (verticalAlign === \"sub\" && !lexicalNode.hasFormat(\"subscript\")) {\r\n lexicalNode.toggleFormat(\"subscript\");\r\n }\r\n if (verticalAlign === \"super\" && !lexicalNode.hasFormat(\"superscript\")) {\r\n lexicalNode.toggleFormat(\"superscript\");\r\n }\r\n if (shouldApply && !lexicalNode.hasFormat(shouldApply)) {\r\n lexicalNode.toggleFormat(shouldApply);\r\n }\r\n\r\n let styleStr = \"\";\r\n\r\n if(style.color){\r\n styleStr += `color:${style.color};`\r\n }\r\n if(style.fontSize){\r\n styleStr += `font-size:${style.fontSize};`\r\n }\r\n if(style.fontFamily){\r\n styleStr += `font-family:${style.fontFamily};`\r\n }\r\n if(style.backgroundColor){\r\n styleStr += `background-color:${style.backgroundColor};`\r\n }\r\n\r\n if(styleStr){\r\n lexicalNode.setStyle(styleStr);\r\n }\r\n\r\n return lexicalNode;\r\n };\r\n}\r\n\r\n\r\n"],"names":["TextNode","$isTextNode"],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
21
21
|
const isItalic = vue.ref(false);
|
|
22
22
|
const isUnderline = vue.ref(false);
|
|
23
23
|
const isStrikethrough = vue.ref(false);
|
|
24
|
+
const isSubscript = vue.ref(false);
|
|
25
|
+
const isSuperscript = vue.ref(false);
|
|
24
26
|
const alignList = vue.ref(["left", "center", "right", "justify"]);
|
|
25
27
|
const alignValue = vue.ref(alignList.value[0]);
|
|
26
28
|
const disabled = vue.ref(false);
|
|
@@ -56,6 +58,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
56
58
|
isItalic.value = selection$1.hasFormat("italic");
|
|
57
59
|
isUnderline.value = selection$1.hasFormat("underline");
|
|
58
60
|
isStrikethrough.value = selection$1.hasFormat("strikethrough");
|
|
61
|
+
isSubscript.value = selection$1.hasFormat("subscript");
|
|
62
|
+
isSuperscript.value = selection$1.hasFormat("superscript");
|
|
59
63
|
var ff = selection.$getSelectionStyleValueForProperty(selection$1, "font-family", "Arial");
|
|
60
64
|
let fs = selection.$getSelectionStyleValueForProperty(selection$1, "font-size", "1rem");
|
|
61
65
|
if (fs) {
|
|
@@ -88,28 +92,27 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
88
92
|
}
|
|
89
93
|
});
|
|
90
94
|
};
|
|
91
|
-
|
|
95
|
+
const setFontColor = (color) => {
|
|
92
96
|
editor.update(() => {
|
|
93
97
|
const selection$1 = lexical.$getSelection();
|
|
94
98
|
if (selection$1 !== null) {
|
|
95
99
|
selection.$patchStyleText(selection$1, { color });
|
|
96
100
|
}
|
|
97
101
|
}, {});
|
|
98
|
-
}
|
|
99
|
-
|
|
102
|
+
};
|
|
103
|
+
const setBgColor = (color) => {
|
|
100
104
|
editor.update(() => {
|
|
101
105
|
const selection$1 = lexical.$getSelection();
|
|
102
106
|
if (selection$1 !== null) {
|
|
103
107
|
selection.$patchStyleText(selection$1, { "background-color": color });
|
|
104
108
|
}
|
|
105
109
|
}, {});
|
|
106
|
-
}
|
|
110
|
+
};
|
|
107
111
|
vue.onMounted(() => {
|
|
108
112
|
const unregisterMergeListener = utils.mergeRegister(
|
|
109
113
|
editor.registerUpdateListener(({ editorState }) => {
|
|
110
114
|
editorState.read(() => updateToolbar());
|
|
111
115
|
})
|
|
112
|
-
// editor.registerCommand(SELECTION_CHANGE_COMMAND, (_payload, _newEditor) => updateToolbar()!,lowPriority)
|
|
113
116
|
);
|
|
114
117
|
vue.onUnmounted(() => unregisterMergeListener());
|
|
115
118
|
});
|
|
@@ -221,7 +224,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
221
224
|
vue.createVNode(_component_el_color_picker, {
|
|
222
225
|
modelValue: fontColor.value,
|
|
223
226
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => fontColor.value = $event),
|
|
224
|
-
disabled: disabled.value
|
|
227
|
+
disabled: disabled.value,
|
|
228
|
+
onChange: setFontColor
|
|
225
229
|
}, null, 8, ["modelValue", "disabled"])
|
|
226
230
|
]),
|
|
227
231
|
_: 1
|
|
@@ -239,7 +243,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
239
243
|
}, null, 8, ["modelValue", "disabled"]),
|
|
240
244
|
vue.createVNode(_component_MKSvgIcon, {
|
|
241
245
|
class: "view",
|
|
242
|
-
iconClass: "doc-background-color"
|
|
246
|
+
iconClass: "doc-background-color",
|
|
247
|
+
onChange: setBgColor
|
|
243
248
|
})
|
|
244
249
|
]),
|
|
245
250
|
_: 1
|
|
@@ -290,6 +295,28 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
290
295
|
vue.createVNode(_component_MKSvgIcon, { iconClass: "doc-strikethrough" })
|
|
291
296
|
]),
|
|
292
297
|
_: 1
|
|
298
|
+
}, 8, ["disabled", "class"]),
|
|
299
|
+
vue.createVNode(_component_el_button, {
|
|
300
|
+
disabled: disabled.value,
|
|
301
|
+
text: "",
|
|
302
|
+
class: vue.normalizeClass(`${isSubscript.value ? "active" : ""}`),
|
|
303
|
+
onClick: _cache[6] || (_cache[6] = ($event) => vue.unref(editor).dispatchCommand(vue.unref(lexical.FORMAT_TEXT_COMMAND), "subscript"))
|
|
304
|
+
}, {
|
|
305
|
+
default: vue.withCtx(() => [
|
|
306
|
+
vue.createVNode(_component_MKSvgIcon, { iconClass: "doc-sub" })
|
|
307
|
+
]),
|
|
308
|
+
_: 1
|
|
309
|
+
}, 8, ["disabled", "class"]),
|
|
310
|
+
vue.createVNode(_component_el_button, {
|
|
311
|
+
disabled: disabled.value,
|
|
312
|
+
text: "",
|
|
313
|
+
class: vue.normalizeClass(`${isSuperscript.value ? "active" : ""}`),
|
|
314
|
+
onClick: _cache[7] || (_cache[7] = ($event) => vue.unref(editor).dispatchCommand(vue.unref(lexical.FORMAT_TEXT_COMMAND), "superscript"))
|
|
315
|
+
}, {
|
|
316
|
+
default: vue.withCtx(() => [
|
|
317
|
+
vue.createVNode(_component_MKSvgIcon, { iconClass: "doc-sup" })
|
|
318
|
+
]),
|
|
319
|
+
_: 1
|
|
293
320
|
}, 8, ["disabled", "class"])
|
|
294
321
|
]),
|
|
295
322
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { ShowLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await ShowLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nwatch(fontColor,(color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n})\r\n\r\n// bg颜色\r\nwatch(bgColor,(color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n})\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n }),\r\n // editor.registerCommand(SELECTION_CHANGE_COMMAND, (_payload, _newEditor) => updateToolbar()!,lowPriority)\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","FONT_FAMILY_OPTIONS","ShowLinkEditPanel","TOGGLE_LINK_COMMAND","sanitizeUrl","selection","$getSelection","$isRangeSelection","$findMatchingParent","parent","$isRootOrShadowRoot","$getSelectionStyleValueForProperty","ROOT_FONT_SIZE","getSelectedNode","$isLinkNode","$patchStyleText","watch","onMounted","mergeRegister","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { ShowLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\nconst isSubscript = ref(false)\r\nconst isSuperscript = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await ShowLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n isSubscript.value = selection.hasFormat('subscript')\r\n isSuperscript.value = selection.hasFormat('superscript')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nconst setFontColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n}\r\n\r\n// bg颜色\r\nconst setBgColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n}\r\n\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n })\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" @change=\"setFontColor\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" @change=\"setBgColor\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSubscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\">\r\n <MKSvgIcon iconClass=\"doc-sub\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSuperscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\">\r\n <MKSvgIcon iconClass=\"doc-sup\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","FONT_FAMILY_OPTIONS","ShowLinkEditPanel","TOGGLE_LINK_COMMAND","sanitizeUrl","selection","$getSelection","$isRangeSelection","$findMatchingParent","parent","$isRootOrShadowRoot","$getSelectionStyleValueForProperty","ROOT_FONT_SIZE","getSelectedNode","$isLinkNode","$patchStyleText","onMounted","mergeRegister","onUnmounted"],"mappings":"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"}
|
|
@@ -32,7 +32,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
32
32
|
editor.getEditorState().read(() => {
|
|
33
33
|
var _a, _b;
|
|
34
34
|
const doc = (_b = (_a = iframeContentRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document;
|
|
35
|
-
console.log(doc, doc.head);
|
|
36
35
|
const style = document.createElement("style");
|
|
37
36
|
style.setAttribute("type", "text/css");
|
|
38
37
|
style.innerHTML = [docEditor, docTheme].join("\r\n");
|
package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewToolbar.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { $generateHtmlFromNodes} from '@lexical/html'\r\nimport { ref,computed,defineProps,watch, nextTick } from \"vue\"\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport DocThemeCss from \"../../themes/doc-theme.css?raw\";\r\nimport DocEditorCss from \"../../themes/doc-editor.css?raw\";\r\nimport { useModules } from \"../ModulePlugin/composables\"\r\n\r\nconst editor = useLexicalComposer()\r\n// 参数\r\nconst props = defineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed<any>(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\nconst codeDialogVisible = ref(false);\r\nconst srcdoc = ref(\"\");\r\nconst linkStr = props.css.split(\",\").map(path=>{\r\n return `<link crossorigin href=\"${path}\" type=\"text/xml\" />`\r\n}).join(\"\\r\\n\");\r\n\r\n// const scriptStr = props.css.split(\",\").map(path=>{\r\n// return `<script1 crossorigin src=\"${path}\"></script1>`\r\n// }).join(\"\");\r\n \r\n\r\n// 显示\r\nconst show = function(){\r\n\r\n codeDialogVisible.value = true;\r\n\r\n nextTick(()=>{\r\n\r\n editor.getEditorState().read(() => {\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n
|
|
1
|
+
{"version":3,"file":"PreviewToolbar.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { $generateHtmlFromNodes} from '@lexical/html'\r\nimport { ref,computed,defineProps,watch, nextTick } from \"vue\"\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport DocThemeCss from \"../../themes/doc-theme.css?raw\";\r\nimport DocEditorCss from \"../../themes/doc-editor.css?raw\";\r\nimport { useModules } from \"../ModulePlugin/composables\"\r\n\r\nconst editor = useLexicalComposer()\r\n// 参数\r\nconst props = defineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed<any>(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\nconst codeDialogVisible = ref(false);\r\nconst srcdoc = ref(\"\");\r\nconst linkStr = props.css.split(\",\").map(path=>{\r\n return `<link crossorigin href=\"${path}\" type=\"text/xml\" />`\r\n}).join(\"\\r\\n\");\r\n\r\n// const scriptStr = props.css.split(\",\").map(path=>{\r\n// return `<script1 crossorigin src=\"${path}\"></script1>`\r\n// }).join(\"\");\r\n \r\n\r\n// 显示\r\nconst show = function(){\r\n\r\n codeDialogVisible.value = true;\r\n\r\n nextTick(()=>{\r\n\r\n editor.getEditorState().read(() => {\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n\r\n // 默认样式\r\n style.innerHTML = [DocEditorCss,DocThemeCss].join(\"\\r\\n\");\r\n //模块渲染样式\r\n style.innerHTML += useModules().filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n props.css.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const link = document.createElement(\"link\");\r\n link.href = path;\r\n link.setAttribute(\"rel\",\"stylesheet\")\r\n link.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(link);\r\n })\r\n\r\n // 预览显示\r\n iframeBody.value.style.fontSize = DEVICE_VIEW_MODE.value == \"pc\" ? \"14px\" : \"18px\";\r\n\r\n // 预览内容\r\n doc.body.innerHTML = $generateHtmlFromNodes(editor);\r\n\r\n setTimeout(() => {\r\n if(iframeBody.value.scrollHeight > iframeBody.value.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 100);\r\n })\r\n });\r\n\r\n\r\n \r\n}\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <el-button text @click=\"show\">\r\n <MKSvgIcon iconClass=\"View\" /> \r\n </el-button>\r\n <el-dialog v-model=\"codeDialogVisible\" append-to-body title=\"预览\" width=\"80%\" fullscreen>\r\n <div class=\"mk-doc-editor__view_warp\" :class=\"DEVICE_VIEW_MODE\">\r\n <iframe class=\"mk-doc-editor__view_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <div></div>\r\n </Teleport>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","computed","nextTick","DocEditorCss","DocThemeCss","useModules","DEVICE_VIEW_MODE","$generateHtmlFromNodes","_a"],"mappings":";;;;;;;;;;;;;;;;AAUA,UAAM,SAASA,WAAAA;AAEf,UAAM,QAAQ;AAKR,UAAA,mBAAmBC,QAAI,IAAW;AACxC,UAAM,aAAaC,IAAc,SAAA;;AAAI,gDAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC,aAAvC,mBAAiD;AAAA,KAAI;AAEpF,UAAA,oBAAoBD,QAAI,KAAK;AACpBA,QAAAA,IAAI,EAAE;AACL,UAAM,IAAI,MAAM,GAAG,EAAE,IAAI,CAAM,SAAA;AAC7C,aAAO,2BAA2B,IAAI;AAAA,IAAA,CACvC,EAAE,KAAK,MAAM;AAQd,UAAM,OAAO,WAAU;AAErB,wBAAkB,QAAQ;AAE1BE,UAAAA,SAAS,MAAI;AAEJ,eAAA,iBAAiB,KAAK,MAAM;;AAE3B,gBAAA,OAAM,4BAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC;AAG7C,gBAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,gBAAA,aAAa,QAAO,UAAU;AAGpC,gBAAM,YAAY,CAACC,WAAaC,QAAW,EAAE,KAAK,MAAM;AAExD,gBAAM,aAAaC,YAAA,WAAA,EAAa,OAAO,UAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAC9F,cAAA,KAAK,OAAO,KAAK;AAGf,gBAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,kBAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,mBAAO,MAAM;AACN,mBAAA,aAAa,eAAc,MAAM;AACpC,gBAAA,KAAK,OAAO,MAAM;AAAA,UAAA,CACvB;AACK,gBAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,kBAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,iBAAK,OAAO;AACP,iBAAA,aAAa,OAAM,YAAY;AAC/B,iBAAA,aAAa,eAAc,MAAM;AAClC,gBAAA,KAAK,OAAO,IAAI;AAAA,UAAA,CACrB;AAGD,qBAAW,MAAM,MAAM,WAAWC,MAAiB,iBAAA,SAAS,OAAO,SAAS;AAGxE,cAAA,KAAK,YAAYC,KAAA,uBAAuB,MAAM;AAElD,qBAAW,MAAM;;AACf,gBAAG,WAAW,MAAM,eAAe,WAAW,MAAM,cAAa;AAC/D,+BAAiB,MAAM,MAAM,WAAUC,MAAA,WAAW,UAAX,gBAAAA,IAAkB,gBAAe,KAAI;AAAA,YAC9E;AAAA,aACC,GAAG;AAAA,QAAA,CACP;AAAA,MAAA,CACF;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,6 +7,12 @@ const index = require("../../core/index.js");
|
|
|
7
7
|
const PreviewToolbar_vue_vue_type_script_setup_true_lang = require("./PreviewToolbar.vue.js");
|
|
8
8
|
const FontStyleTool_vue_vue_type_script_setup_true_lang = require("./FontStyleTool.vue.js");
|
|
9
9
|
const ContentStyleTool_vue_vue_type_script_setup_true_lang = require("./ContentStyleTool.vue.js");
|
|
10
|
+
const TextGridNode = require("../GridPlugin/TextGridNode.js");
|
|
11
|
+
require("../GridPlugin/LayoutGridNode.js");
|
|
12
|
+
const ImageTextGridNode = require("../GridPlugin/ImageTextGridNode.js");
|
|
13
|
+
const ModuleGridNode = require("../GridPlugin/ModuleGridNode.js");
|
|
14
|
+
require("../ModulePlugin/commands.js");
|
|
15
|
+
const ModuleBlockNode = require("../ModulePlugin/ModuleBlockNode.js");
|
|
10
16
|
const LowPriority = 1;
|
|
11
17
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
12
18
|
__name: "index",
|
|
@@ -16,6 +22,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
16
22
|
},
|
|
17
23
|
setup(__props) {
|
|
18
24
|
const toolbarRef = vue.ref(null);
|
|
25
|
+
const toolbarDisabled = vue.ref(false);
|
|
19
26
|
const editor = lexicalVue.useLexicalComposer();
|
|
20
27
|
const canUndo = vue.ref(false);
|
|
21
28
|
const canRedo = vue.ref(false);
|
|
@@ -36,7 +43,33 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
36
43
|
return false;
|
|
37
44
|
},
|
|
38
45
|
LowPriority
|
|
39
|
-
)
|
|
46
|
+
),
|
|
47
|
+
editor.registerUpdateListener(({ editorState }) => {
|
|
48
|
+
editorState.read(() => {
|
|
49
|
+
const selection = lexical.$getSelection();
|
|
50
|
+
const node = lexical.$isNodeSelection(selection) ? selection == null ? void 0 : selection.getNodes()[0] : null;
|
|
51
|
+
if (node) {
|
|
52
|
+
if (ModuleBlockNode.$isModuleBlockNode(node) || TextGridNode.$isTextGridNode(node) || ImageTextGridNode.$isImageTextGridNode(node) || ModuleGridNode.$isModuleGridNode(node)) {
|
|
53
|
+
toolbarDisabled.value = true;
|
|
54
|
+
} else {
|
|
55
|
+
toolbarDisabled.value = false;
|
|
56
|
+
}
|
|
57
|
+
} else if (lexical.$isRangeSelection(selection)) {
|
|
58
|
+
const anchorNode = selection.anchor.getNode();
|
|
59
|
+
let element = anchorNode.getKey() === "root" ? anchorNode : utils.$findMatchingParent(anchorNode, (e) => {
|
|
60
|
+
const parent = e.getParent();
|
|
61
|
+
return parent !== null && TextGridNode.$isTextGridNode(parent);
|
|
62
|
+
});
|
|
63
|
+
if (element != null && TextGridNode.$isTextGridNode(element.getParent())) {
|
|
64
|
+
toolbarDisabled.value = true;
|
|
65
|
+
} else {
|
|
66
|
+
toolbarDisabled.value = false;
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
toolbarDisabled.value = false;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
})
|
|
40
73
|
);
|
|
41
74
|
vue.onUnmounted(() => {
|
|
42
75
|
index.ToolbarExtendPlugins.length = 0;
|
|
@@ -112,7 +145,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
112
145
|
_: 1
|
|
113
146
|
}),
|
|
114
147
|
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
115
|
-
vue.createVNode(_component_el_dropdown,
|
|
148
|
+
vue.createVNode(_component_el_dropdown, { disabled: toolbarDisabled.value }, {
|
|
116
149
|
dropdown: vue.withCtx(() => [
|
|
117
150
|
vue.createVNode(_component_el_dropdown_menu, null, {
|
|
118
151
|
default: vue.withCtx(() => [
|
|
@@ -135,7 +168,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
135
168
|
})
|
|
136
169
|
]),
|
|
137
170
|
default: vue.withCtx(() => [
|
|
138
|
-
vue.createVNode(_component_el_button, {
|
|
171
|
+
vue.createVNode(_component_el_button, {
|
|
172
|
+
text: "",
|
|
173
|
+
disabled: toolbarDisabled.value
|
|
174
|
+
}, {
|
|
139
175
|
default: vue.withCtx(() => [
|
|
140
176
|
vue.createVNode(_component_MKSvgIcon, {
|
|
141
177
|
iconClass: "Plus",
|
|
@@ -144,10 +180,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
144
180
|
vue.createTextVNode(" 插入 ")
|
|
145
181
|
]),
|
|
146
182
|
_: 1
|
|
147
|
-
})
|
|
183
|
+
}, 8, ["disabled"])
|
|
148
184
|
]),
|
|
149
185
|
_: 1
|
|
150
|
-
}),
|
|
186
|
+
}, 8, ["disabled"]),
|
|
151
187
|
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
152
188
|
vue.createVNode(_component_el_button_group, null, {
|
|
153
189
|
default: vue.withCtx(() => [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport {
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n$getSelection,\r\n$isNodeSelection,\r\n $isRangeSelection,\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport PreviewToolbar from \"./PreviewToolbar.vue\"\r\nimport FontStyleToolbar from \"./FontStyleTool.vue\"\r\nimport ContentStyleToolbar from \"./ContentStyleTool.vue\"\r\nimport { ToolbarExtendPlugins } from \"../../core\"\r\nimport { $isTextGridNode,$isImageTextGridNode,$isModuleGridNode } from \"../GridPlugin\"\r\nimport { $isModuleBlockNode } from \"../ModulePlugin\"\r\n// 参数\r\ndefineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n\r\nconst LowPriority: CommandListenerPriority = 1\r\n\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst toolbarDisabled = ref(false)\r\nconst editor = useLexicalComposer()\r\n\r\nconst canUndo = ref(false)\r\nconst canRedo = ref(false)\r\n\r\nonMounted(() => {\r\n \r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerCommand(\r\n CAN_UNDO_COMMAND,\r\n (payload: boolean) => {\r\n canUndo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerCommand(\r\n CAN_REDO_COMMAND,\r\n (payload: boolean) => {\r\n canRedo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if(node){\r\n if ($isModuleBlockNode(node) || $isTextGridNode(node) || $isImageTextGridNode(node) || $isModuleGridNode(node) ) {\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isTextGridNode(parent)\r\n });\r\n\r\n // 文本节点内 也不允许插入奇怪的东西\r\n if(element != null && $isTextGridNode(element.getParent())){\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n })\r\n })\r\n )\r\n\r\n onUnmounted(() => {\r\n ToolbarExtendPlugins.length = 0;\r\n unregisterMergeListener()\r\n })\r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-doc-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :disabled=\"!canUndo\" @click=\"editor.dispatchCommand(UNDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshLeft\" /> \r\n </el-button>\r\n <el-button text :disabled=\"!canRedo\" @click=\"editor.dispatchCommand(REDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshRight\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 内容 -->\r\n <ContentStyleToolbar />\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 文字样式 -->\r\n <FontStyleToolbar /> \r\n <el-divider direction=\"vertical\" />\r\n \r\n <el-button-group>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='pc' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='mobile' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown :disabled=\"toolbarDisabled\">\r\n <el-button text :disabled=\"toolbarDisabled\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 5px;\" /> 插入\r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"item in ToolbarExtendPlugins\" :key=\"item\" @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" /> \r\n {{item.text}}\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <PreviewToolbar :js=\"js\" :css=\"css\" />\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["ref","useLexicalComposer","onMounted","mergeRegister","CAN_UNDO_COMMAND","CAN_REDO_COMMAND","$getSelection","$isNodeSelection","$isModuleBlockNode","$isTextGridNode","$isImageTextGridNode","$isModuleGridNode","$isRangeSelection","$findMatchingParent","onUnmounted","ToolbarExtendPlugins"],"mappings":";;;;;;;;;;;;;;;AA2BA,MAAM,cAAuC;;;;;;;;AAEvC,UAAA,aAAaA,QAA2B,IAAI;AAC5C,UAAA,kBAAkBA,QAAI,KAAK;AACjC,UAAM,SAASC,WAAAA;AAET,UAAA,UAAUD,QAAI,KAAK;AACnB,UAAA,UAAUA,QAAI,KAAK;AAEzBE,QAAAA,UAAU,MAAM;AAEd,YAAM,0BAA0BC,MAAA;AAAA,QAC9B,OAAO;AAAA,UACLC,QAAA;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACLC,QAAA;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACjD,sBAAY,KAAK,MAAM;AAErB,kBAAM,YAAYC,QAAAA;AACZ,kBAAA,OAAOC,yBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AAEtE,gBAAG,MAAK;AACF,kBAAAC,mCAAmB,IAAI,KAAKC,aAAAA,gBAAgB,IAAI,KAAKC,kBAAA,qBAAqB,IAAI,KAAKC,iCAAkB,IAAI,GAAI;AAC/G,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,WAEOC,QAAAA,kBAAkB,SAAS,GAAG;AAE/B,oBAAA,aAAa,UAAU,OAAO,QAAQ;AAExC,kBAAA,UAAU,WAAW,aAAa,SAClC,aACAC,MAAA,oBAAoB,YAAY,CAAC,MAAM;AACjC,sBAAA,SAAS,EAAE;AACV,uBAAA,WAAW,QAAQJ,aAAA,gBAAgB,MAAM;AAAA,cAAA,CACjD;AAGH,kBAAG,WAAW,QAAQA,aAAAA,gBAAgB,QAAQ,UAAW,CAAA,GAAE;AACzD,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,OAEE;AACF,8BAAgB,QAAQ;AAAA,YAC1B;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AAAA,MAAA;AAGHK,UAAAA,YAAY,MAAM;AAChBC,cAAA,qBAAqB,SAAS;AACN;MAAA,CACzB;AAAA,IAAA,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,11 +7,14 @@ const link = require("@lexical/link");
|
|
|
7
7
|
const hashtag = require("@lexical/hashtag");
|
|
8
8
|
require("./ImagePlugin/commands.js");
|
|
9
9
|
const ImageNode = require("./ImagePlugin/ImageNode.js");
|
|
10
|
-
const ImageTextNode = require("./ImageTextPlugin/ImageTextNode.js");
|
|
11
10
|
const RichTextNode = require("./RichTextPlugin/nodes/RichTextNode.js");
|
|
12
11
|
require("./ModulePlugin/commands.js");
|
|
13
12
|
const ModuleBlockNode = require("./ModulePlugin/ModuleBlockNode.js");
|
|
14
|
-
const
|
|
13
|
+
const GridNode = require("./GridPlugin/GridNode.js");
|
|
14
|
+
const TextGridNode = require("./GridPlugin/TextGridNode.js");
|
|
15
|
+
const LayoutGridNode = require("./GridPlugin/LayoutGridNode.js");
|
|
16
|
+
const ImageTextGridNode = require("./GridPlugin/ImageTextGridNode.js");
|
|
17
|
+
const ModuleGridNode = require("./GridPlugin/ModuleGridNode.js");
|
|
15
18
|
const Nodes = [
|
|
16
19
|
richText.HeadingNode,
|
|
17
20
|
list.ListNode,
|
|
@@ -27,10 +30,13 @@ const Nodes = [
|
|
|
27
30
|
hashtag.HashtagNode,
|
|
28
31
|
RichTextNode.RichTextNode,
|
|
29
32
|
ImageNode.ImageNode,
|
|
30
|
-
ImageTextNode.ImageTextNode,
|
|
31
33
|
ImageNode.InlineImageNode,
|
|
32
34
|
ModuleBlockNode.ModuleBlockNode,
|
|
33
|
-
|
|
35
|
+
GridNode.GridNode,
|
|
36
|
+
TextGridNode.TextGridNode,
|
|
37
|
+
LayoutGridNode.LayoutGridNode,
|
|
38
|
+
ImageTextGridNode.ImageTextGridNode,
|
|
39
|
+
ModuleGridNode.ModuleGridNode
|
|
34
40
|
];
|
|
35
41
|
module.exports = Nodes;
|
|
36
42
|
//# sourceMappingURL=nodes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sources":["../../../../../../src/components/basic/doc-editor/plugins/nodes.ts"],"sourcesContent":["import { type Klass, type LexicalNode,TextNode,ElementNode,ParagraphNode } from 'lexical'\r\nimport { HeadingNode, QuoteNode } from '@lexical/rich-text'\r\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\r\nimport { ListItemNode, ListNode } from '@lexical/list'\r\nimport { CodeHighlightNode, CodeNode } from '@lexical/code'\r\nimport { AutoLinkNode, LinkNode } from '@lexical/link'\r\nimport { HashtagNode } from '@lexical/hashtag'\r\nimport { ImageNode,InlineImageNode } from \"./ImagePlugin\"\r\nimport {
|
|
1
|
+
{"version":3,"file":"nodes.js","sources":["../../../../../../src/components/basic/doc-editor/plugins/nodes.ts"],"sourcesContent":["import { type Klass, type LexicalNode,TextNode,ElementNode,ParagraphNode, SerializedElementNode, $isTextNode } from 'lexical'\r\nimport { HeadingNode, QuoteNode } from '@lexical/rich-text'\r\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\r\nimport { ListItemNode, ListNode } from '@lexical/list'\r\nimport { CodeHighlightNode, CodeNode } from '@lexical/code'\r\nimport { AutoLinkNode, LinkNode } from '@lexical/link'\r\nimport { HashtagNode } from '@lexical/hashtag'\r\nimport { ImageNode,InlineImageNode } from \"./ImagePlugin\"\r\nimport { RichTextNode } from \"./RichTextPlugin/nodes/RichTextNode\"\r\nimport { ModuleBlockNode } from \"./ModulePlugin\"\r\nimport { GridNode,LayoutGridNode,TextGridNode,ImageTextGridNode,ModuleGridNode } from \"./GridPlugin\"\r\n\r\n\r\nconst Nodes: Array<Klass<LexicalNode>> = [\r\n HeadingNode,\r\n ListNode,\r\n ListItemNode,\r\n QuoteNode,\r\n CodeNode,\r\n CodeHighlightNode,\r\n TableNode,\r\n TableCellNode,\r\n TableRowNode,\r\n AutoLinkNode,\r\n LinkNode,\r\n HashtagNode,\r\n\r\n RichTextNode,\r\n ImageNode,\r\n InlineImageNode,\r\n ModuleBlockNode,\r\n GridNode,\r\n TextGridNode,\r\n LayoutGridNode,\r\n ImageTextGridNode,\r\n ModuleGridNode\r\n]\r\n\r\nexport default Nodes\r\n"],"names":["HeadingNode","ListNode","ListItemNode","QuoteNode","CodeNode","CodeHighlightNode","TableNode","TableCellNode","TableRowNode","AutoLinkNode","LinkNode","HashtagNode","RichTextNode","ImageNode","InlineImageNode","ModuleBlockNode","GridNode","TextGridNode","LayoutGridNode","ImageTextGridNode","ModuleGridNode"],"mappings":";;;;;;;;;;;;;;;;;AAaA,MAAM,QAAmC;AAAA,EACvCA,SAAA;AAAA,EACAC,KAAA;AAAA,EACAC,KAAA;AAAA,EACAC,SAAA;AAAA,EACAC,KAAA;AAAA,EACAC,KAAA;AAAA,EACAC,MAAA;AAAA,EACAC,MAAA;AAAA,EACAC,MAAA;AAAA,EACAC,KAAA;AAAA,EACAC,KAAA;AAAA,EACAC,QAAA;AAAA,EAEAC,aAAA;AAAA,EACAC,UAAA;AAAA,EACAC,UAAA;AAAA,EACAC,gBAAA;AAAA,EACAC,SAAA;AAAA,EACAC,aAAA;AAAA,EACAC,eAAA;AAAA,EACAC,kBAAA;AAAA,EACAC,eAAA;AACF;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const DocEditorEditCss = '\r\n.mk-doc__img {\r\n cursor: pointer;\r\n z-index: 1;\r\n position: relative;\r\n}\r\n\r\n\r\n.mk-doc-
|
|
2
|
+
const DocEditorEditCss = '\r\n.mk-doc__img {\r\n cursor: pointer;\r\n z-index: 1;\r\n position: relative;\r\n}\r\n\r\n.mk-doc__grid{\r\n outline: 2px solid #eff5ff;\r\n position: relative;\r\n cursor: pointer;\r\n white-space:initial;\r\n word-break:initial;\r\n min-height: 150px;\r\n}\r\n.mk-doc__grid.mk-doc__module-grid::before,\r\n.mk-doc__grid.doc-edit-active::before{\r\n text-align: center;\r\n background-color: #eff5ff;\r\n color: #4284ff;\r\n left: -20px;\r\n top: 0px;\r\n pointer-events: all;\r\n font-size: 14px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 999; \r\n width: 20px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n padding: 5px 0;\r\n}\r\n\r\n.mk-doc__grid.doc-edit-active::before{\r\n content: "容器";\r\n position: absolute;\r\n}\r\n.mk-doc__grid.mk-doc__layout-grid.doc-edit-active::before{\r\n content: "布局容器";\r\n}\r\n/* 文本框可编辑文字 */\r\n.mk-doc__grid.mk-doc__text-grid :not(.mk-doc__grid){\r\n cursor: text;\r\n}\r\n.mk-doc__grid.mk-doc__text-grid.doc-edit-active::before{\r\n content: "文本容器";\r\n}\r\n\r\n/* 图文环绕容器 */\r\n.mk-doc__grid.mk-doc__image-text.doc-edit-active::before{\r\n content: "图文环绕容器";\r\n}\r\n\r\n/* 图文环绕容器下的文本框不做选中 */\r\n.mk-doc__grid.mk-doc__image-text .mk-doc__text-grid{\r\n outline: 0;\r\n padding-top: 0;\r\n}\r\n.mk-doc__grid.mk-doc__image-text .mk-doc__text-grid::before{\r\n display: none;\r\n}\r\n\r\n/* 模块容器 */\r\n.mk-doc__grid.mk-doc__module-grid::before{\r\n content: "模块容器";\r\n width: 200px;\r\n height: 20px;\r\n top:0;\r\n left: 0;;\r\n position: sticky;\r\n}\r\n/* 避免模块下的a标签点击 */\r\n.mk-doc__grid.mk-doc__module-grid a{\r\n pointer-events: none;\r\n}\r\n\r\n/* 给布局下的格子加内边距方便编辑 */\r\n.mk-doc__grid.mk-doc__layout-grid >.mk-doc__grid{\r\n margin: 10px;\r\n}\r\n\r\n/* 块选中 */\r\n.mk-doc__embedBlock {\r\n position: relative;\r\n z-index: 1;\r\n padding: 1px;\r\n cursor: pointer;\r\n}\r\n.mk-doc__embedBlockFocus {\r\n outline: 2px solid rgb(60, 132, 244);\r\n}\r\n\r\n.mk-doc__embedBlock >*{\r\n pointer-events: none;\r\n}\r\n\r\n.mk-doc-active-element-block-mark{\r\n position: absolute;\r\n box-sizing:border-box;\r\n background-color:#2776f63b;\r\n z-index: 99;\r\n pointer-events: none;\r\n}\r\n.mk-doc-active-element-block-mark.box{\r\n outline: 2px solid #2776f63b;\r\n background-color: transparent;\r\n}\r\n';
|
|
3
3
|
module.exports = DocEditorEditCss;
|
|
4
4
|
//# sourceMappingURL=doc-editor-edit.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-editor-edit.css.js","sources":["../../../../../../src/components/basic/doc-editor/themes/doc-editor-edit.css?raw"],"sourcesContent":["export default \"\\r\\n.mk-doc__img {\\r\\n cursor: pointer;\\r\\n z-index: 1;\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n\\r\\n.mk-doc-
|
|
1
|
+
{"version":3,"file":"doc-editor-edit.css.js","sources":["../../../../../../src/components/basic/doc-editor/themes/doc-editor-edit.css?raw"],"sourcesContent":["export default \"\\r\\n.mk-doc__img {\\r\\n cursor: pointer;\\r\\n z-index: 1;\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.mk-doc__grid{\\r\\n outline: 2px solid #eff5ff;\\r\\n position: relative;\\r\\n cursor: pointer;\\r\\n white-space:initial;\\r\\n word-break:initial;\\r\\n min-height: 150px;\\r\\n}\\r\\n.mk-doc__grid.mk-doc__module-grid::before,\\r\\n.mk-doc__grid.doc-edit-active::before{\\r\\n text-align: center;\\r\\n background-color: #eff5ff;\\r\\n color: #4284ff;\\r\\n left: -20px;\\r\\n top: 0px;\\r\\n pointer-events: all;\\r\\n font-size: 14px;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n z-index: 999; \\r\\n width: 20px;\\r\\n cursor: pointer;\\r\\n font-size: 12px;\\r\\n padding: 5px 0;\\r\\n}\\r\\n\\r\\n.mk-doc__grid.doc-edit-active::before{\\r\\n content: \\\"容器\\\";\\r\\n position: absolute;\\r\\n}\\r\\n.mk-doc__grid.mk-doc__layout-grid.doc-edit-active::before{\\r\\n content: \\\"布局容器\\\";\\r\\n}\\r\\n/* 文本框可编辑文字 */\\r\\n.mk-doc__grid.mk-doc__text-grid :not(.mk-doc__grid){\\r\\n cursor: text;\\r\\n}\\r\\n.mk-doc__grid.mk-doc__text-grid.doc-edit-active::before{\\r\\n content: \\\"文本容器\\\";\\r\\n}\\r\\n\\r\\n/* 图文环绕容器 */\\r\\n.mk-doc__grid.mk-doc__image-text.doc-edit-active::before{\\r\\n content: \\\"图文环绕容器\\\";\\r\\n}\\r\\n\\r\\n/* 图文环绕容器下的文本框不做选中 */\\r\\n.mk-doc__grid.mk-doc__image-text .mk-doc__text-grid{\\r\\n outline: 0;\\r\\n padding-top: 0;\\r\\n}\\r\\n.mk-doc__grid.mk-doc__image-text .mk-doc__text-grid::before{\\r\\n display: none;\\r\\n}\\r\\n\\r\\n/* 模块容器 */\\r\\n.mk-doc__grid.mk-doc__module-grid::before{\\r\\n content: \\\"模块容器\\\";\\r\\n width: 200px;\\r\\n height: 20px;\\r\\n top:0;\\r\\n left: 0;;\\r\\n position: sticky;\\r\\n}\\r\\n/* 避免模块下的a标签点击 */\\r\\n.mk-doc__grid.mk-doc__module-grid a{\\r\\n pointer-events: none;\\r\\n}\\r\\n\\r\\n/* 给布局下的格子加内边距方便编辑 */\\r\\n.mk-doc__grid.mk-doc__layout-grid >.mk-doc__grid{\\r\\n margin: 10px;\\r\\n}\\r\\n\\r\\n/* 块选中 */\\r\\n.mk-doc__embedBlock {\\r\\n position: relative;\\r\\n z-index: 1;\\r\\n padding: 1px;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__embedBlockFocus {\\r\\n outline: 2px solid rgb(60, 132, 244);\\r\\n}\\r\\n\\r\\n.mk-doc__embedBlock >*{\\r\\n pointer-events: none;\\r\\n}\\r\\n\\r\\n.mk-doc-active-element-block-mark{\\r\\n position: absolute;\\r\\n box-sizing:border-box;\\r\\n background-color:#2776f63b;\\r\\n z-index: 99;\\r\\n pointer-events: none;\\r\\n}\\r\\n.mk-doc-active-element-block-mark.box{\\r\\n outline: 2px solid #2776f63b;\\r\\n background-color: transparent;\\r\\n}\\r\\n\""],"names":[],"mappings":";AAAA,MAAe,mBAAA;;"}
|