@maketribe/ms-app 3.2.25 → 3.2.26
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-module.js → element-block.js} +31 -12
- 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.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 +89 -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 +115 -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 +83 -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 +143 -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 +33 -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 +18 -21
- 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 +16 -11
- 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 +6 -6
- 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/index.vue.js +46 -108
- 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/ToolbarPlugin/FontStyleTool.vue.js +26 -0
- 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/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/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 -5
- package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +35 -6
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.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/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-module.js → element-block.js} +32 -13
- 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.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 +89 -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 +115 -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 +83 -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 +144 -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 +33 -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 +18 -21
- 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 +17 -12
- 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 +6 -6
- 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/index.vue.js +50 -112
- 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/ToolbarPlugin/FontStyleTool.vue.js +26 -0
- 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/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/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 -6
- package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +35 -6
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.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/style/components/basic/doc-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/types/components/basic/doc-editor/core/element-block.d.ts +44 -0
- package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -4
- 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 +58 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +58 -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 +4 -13
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +18 -10
- 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/dynamic-form-panel/type.d.ts +2 -2
- package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +1 -0
- package/package.json +5 -5
- 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.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/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.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/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/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
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const
|
|
5
|
-
require("@lexical/utils");
|
|
4
|
+
const elementBlock = require("./element-block.js");
|
|
6
5
|
require("lexical");
|
|
7
|
-
require("lexical-vue");
|
|
8
6
|
const DEVICE_VIEW_MODE = vue.ref("pc");
|
|
9
7
|
const ToolbarExtendPlugins = vue.reactive([]);
|
|
10
8
|
const registerDocEditorToolbarExtend = function(options) {
|
|
11
9
|
ToolbarExtendPlugins.push(options);
|
|
12
10
|
ToolbarExtendPlugins.sort((a, b) => a.sort < b.sort ? 1 : -1);
|
|
13
11
|
};
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
12
|
+
exports.REMOVE_ELEMENTBLOCK_COMMAND = elementBlock.REMOVE_ELEMENTBLOCK_COMMAND;
|
|
13
|
+
exports.SELECTED_ELEMENTBLOCK_COMMAND = elementBlock.SELECTED_ELEMENTBLOCK_COMMAND;
|
|
14
|
+
exports.UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND = elementBlock.UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND;
|
|
15
|
+
exports.useElementBlockSelection = elementBlock.useElementBlockSelection;
|
|
17
16
|
exports.DEVICE_VIEW_MODE = DEVICE_VIEW_MODE;
|
|
18
17
|
exports.ToolbarExtendPlugins = ToolbarExtendPlugins;
|
|
19
18
|
exports.registerDocEditorToolbarExtend = registerDocEditorToolbarExtend;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\nexport * from \"./element-block\"\r\nexport * from \"./utils\"\r\n\r\n/**\r\n * 设备显示模式\r\n */\r\nexport const DEVICE_VIEW_MODE = ref<'pc' | 'mobile'>(\"pc\")\r\n\r\n/**\r\n * 工具条扩展\r\n */\r\nexport type ToolbarExtendPlugin = {\r\n icon: string;\r\n text:string,\r\n action:Function,\r\n sort:number\r\n};\r\n\r\n/**\r\n * 插入的插件列表\r\n */\r\nexport const ToolbarExtendPlugins = reactive<ToolbarExtendPlugin[]>([]);\r\n\r\n/**\r\n * 注册工具条的扩展\r\n * @param options \r\n */\r\nexport const registerDocEditorToolbarExtend = function(options:ToolbarExtendPlugin){\r\n ToolbarExtendPlugins.push(options);\r\n ToolbarExtendPlugins.sort((a,b)=>a.sort<b.sort ? 1:-1);\r\n}\r\n\r\n\r\n"],"names":["ref","reactive"],"mappings":";;;;;AAQa,MAAA,mBAAmBA,QAAqB,IAAI;AAe5C,MAAA,uBAAuBC,IAAgC,SAAA,EAAE;AAMzD,MAAA,iCAAiC,SAAS,SAA4B;AACjF,uBAAqB,KAAK,OAAO;AACZ,uBAAA,KAAK,CAAC,GAAE,MAAI,EAAE,OAAK,EAAE,OAAO,IAAE,EAAE;AACvD;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../src/components/basic/doc-editor/core/utils.ts"],"sourcesContent":["import type { LexicalEditor, NodeKey } from 'lexical'\r\n\r\nimport {\r\n $createNodeSelection,\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $setSelection,\r\n} from 'lexical'\r\nimport { unref } from 'vue'\r\n\r\n// isNodeSelected
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/components/basic/doc-editor/core/utils.ts"],"sourcesContent":["import type { LexicalEditor, NodeKey } from 'lexical'\r\n\r\nimport {\r\n $createNodeSelection,\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $setSelection,\r\n} from 'lexical'\r\nimport { unref } from 'vue'\r\n\r\n// isNodeSelected \r\nexport const isNodeSelected = function (editor: LexicalEditor, key: NodeKey): boolean {\r\n return editor.getEditorState().read(() => {\r\n const node = $getNodeByKey(key)\r\n if (node === null)\r\n return false\r\n return node.isSelected()\r\n })\r\n}\r\n\r\n// 取消选中\r\nexport const clearSelection = (editor: LexicalEditor) => {\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if ($isNodeSelection(selection))\r\n (selection).clear()\r\n })\r\n}\r\n\r\n// 设置选中\r\nexport const setSelected = (editor: LexicalEditor,selected: boolean,key:string) => {\r\n editor.update(() => {\r\n let selection = $getSelection()\r\n\r\n if (!$isNodeSelection(selection)) {\r\n selection = $createNodeSelection()\r\n $setSelection(selection)\r\n }\r\n if ($isNodeSelection(selection)) {\r\n if (selected)\r\n selection.add(unref(key))\r\n else\r\n selection.delete(unref(key))\r\n }\r\n })\r\n}\r\n\r\n"],"names":["$getNodeByKey","$getSelection","$isNodeSelection","$createNodeSelection","$setSelection","unref"],"mappings":";;;;AAYa,MAAA,iBAAiB,SAAU,QAAuB,KAAuB;AACpF,SAAO,OAAO,iBAAiB,KAAK,MAAM;AAClC,UAAA,OAAOA,sBAAc,GAAG;AAC9B,QAAI,SAAS;AACJ,aAAA;AACT,WAAO,KAAK;EAAW,CACxB;AACH;AAGa,MAAA,iBAAiB,CAAC,WAA0B;AACvD,SAAO,OAAO,MAAM;AAClB,UAAM,YAAYC,QAAAA;AAClB,QAAIC,QAAAA,iBAAiB,SAAS;AAC3B,gBAAW,MAAM;AAAA,EAAA,CACrB;AACH;AAGO,MAAM,cAAc,CAAC,QAAsB,UAAkB,QAAe;AACjF,SAAO,OAAO,MAAM;AAClB,QAAI,YAAYD,QAAAA;AAEZ,QAAA,CAACC,QAAAA,iBAAiB,SAAS,GAAG;AAChC,kBAAYC,QAAqB,qBAAA;AACjCC,cAAA,cAAc,SAAS;AAAA,IACzB;AACI,QAAAF,QAAAA,iBAAiB,SAAS,GAAG;AAEnB,gBAAA,IAAIG,UAAM,GAAG,CAAC;AAAA,IAG5B;AAAA,EAAA,CACD;AACH;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const vue = require("vue");
|
|
3
3
|
const lexicalVue = require("lexical-vue");
|
|
4
|
-
const index_vue_vue_type_script_setup_true_lang$
|
|
4
|
+
const index_vue_vue_type_script_setup_true_lang$3 = require("./plugins/AutoLinkPlugin/index.vue.js");
|
|
5
5
|
const index_vue_vue_type_script_setup_true_lang$2 = require("./plugins/ImagePlugin/index.vue.js");
|
|
6
|
-
const index_vue_vue_type_script_setup_true_lang$3 = require("./plugins/ImageTextPlugin/index.vue.js");
|
|
7
6
|
const index_vue_vue_type_script_setup_true_lang = require("./plugins/ToolbarPlugin/index.vue.js");
|
|
8
7
|
const index_vue_vue_type_script_setup_true_lang$1 = require("./plugins/RichTextPlugin/index.vue.js");
|
|
9
|
-
const index_vue_vue_type_script_setup_true_lang$6 = require("./plugins/
|
|
10
|
-
const index_vue_vue_type_script_setup_true_lang$
|
|
8
|
+
const index_vue_vue_type_script_setup_true_lang$6 = require("./plugins/ElementBlockSelectionPlugin/index.vue.js");
|
|
9
|
+
const index_vue_vue_type_script_setup_true_lang$4 = require("./plugins/ModulePlugin/index.vue.js");
|
|
10
|
+
const index_vue_vue_type_script_setup_true_lang$5 = require("./plugins/GridPlugin/index.vue.js");
|
|
11
11
|
const nodes = require("./plugins/nodes.js");
|
|
12
12
|
const composables = require("./plugins/ModulePlugin/composables.js");
|
|
13
13
|
const index = require("./core/index.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <
|
|
1
|
+
{"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n <GridPlugin />\r\n </Teleport>\r\n <ElementBlockSelectionPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <LexicalAutoFocusPlugin />\r\n <LexicalCheckListPlugin />\r\n <LexicalHashtagPlugin />\r\n <LexicalListPlugin />\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport {\r\n LexicalComposer,\r\n LexicalAutoFocusPlugin,\r\n LexicalCheckListPlugin,\r\n LexicalHashtagPlugin,\r\n LexicalHistoryPlugin,\r\n LexicalListPlugin,\r\n} from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ElementBlockSelectionPlugin,\r\n GridPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport { useModules } from \"./plugins/ModulePlugin/composables\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\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 }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\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,DocEditorEditCss].join(\"\\r\\n\");\r\n\r\n //模块渲染样式\r\n style.innerHTML += useModules().filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\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 watch(DEVICE_VIEW_MODE,(payload: string) => {\r\n doc.body.style.fontSize = payload == \"pc\" ? \"14px\" : \"18px\";\r\n updateStage();\r\n return false\r\n },{ immediate :true})\r\n\r\n // 初始化计算舞台\r\n setTimeout(()=> updateStage(),500)\r\n});\r\n\r\n</script>\r\n"],"names":["DocNodes","ref","computed","onMounted","DocEditorCss","DocThemeCss","DocEditorEditCss","useModules","watch","DEVICE_VIEW_MODE"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,UAAM,OAAO;AAGb,UAAM,QAAQ;AASd,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,QACL,GAAGA;AAAAA,MACL;AAAA,MACA,QAAQ,OAAa;AAInB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IAAA;AAII,UAAA,mBAAmBC,QAAI,IAAW;AACxC,UAAM,aAAaC,IAAS,SAAA;;AAAI,gDAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC,aAAvC,mBAAiD;AAAA,KAAI;AAGrF,UAAM,cAAc,MAAI;AACtB,iBAAW,MAAM;;AACf,cAAG,gBAAW,UAAX,mBAAkB,kBAAe,gBAAW,UAAX,mBAAkB,eAAa;AACjE,2BAAiB,MAAM,MAAM,WAAU,gBAAW,UAAX,mBAAkB,gBAAe,KAAI;AAAA,QAC9E;AAAA,SACC,EAAE;AAAA,IAAA;AAED,UAAA,sBAAsB,CAAC,YAAc;AACzC,WAAK,UAAS,OAAO;AACT;IAAA;AAGdC,QAAAA,UAAU,MAAI;;AAEN,YAAA,OAAM,4BAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC;AAG7C,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AAGpC,YAAM,YAAY,CAACC,WAAaC,UAAYC,aAAgB,EAAE,KAAK,MAAM;AAGzE,YAAM,aAAaC,YAAA,WAAA,EAAa,OAAO,UAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAE9F,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;AACK,YAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,cAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,OAAO;AACP,aAAA,aAAa,OAAM,YAAY;AAC/B,aAAA,aAAa,eAAc,MAAM;AAClC,YAAA,KAAK,OAAO,IAAI;AAAA,MAAA,CACrB;AAGKC,gBAAAC,MAAAA,kBAAiB,CAAC,YAAoB;AAC1C,YAAI,KAAK,MAAM,WAAW,WAAW,OAAO,SAAS;AACzC;AACL,eAAA;AAAA,MAAA,GACP,EAAE,WAAW,KAAA,CAAK;AAGT,iBAAA,MAAK,eAAc,GAAG;AAAA,IAAA,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ const lexical = require("lexical");
|
|
|
4
4
|
const utils = require("@lexical/utils");
|
|
5
5
|
const lexicalVue = require("lexical-vue");
|
|
6
6
|
const index = require("../../core/index.js");
|
|
7
|
-
const
|
|
7
|
+
const elementBlock = require("../../core/element-block.js");
|
|
8
8
|
const lowPriority = 1;
|
|
9
9
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
10
10
|
__name: "index",
|
|
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
14
14
|
const selectPayload = vue.shallowRef(null);
|
|
15
15
|
const toolsPos = vue.reactive({ left: "px", top: "0px" });
|
|
16
16
|
vue.watch(index.DEVICE_VIEW_MODE, () => {
|
|
17
|
-
editor.dispatchCommand(
|
|
17
|
+
editor.dispatchCommand(elementBlock.UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, null);
|
|
18
18
|
});
|
|
19
19
|
const updateToolsPos = () => {
|
|
20
20
|
vue.nextTick(() => {
|
|
@@ -34,10 +34,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
34
34
|
};
|
|
35
35
|
lexicalVue.useMounted(() => {
|
|
36
36
|
return utils.mergeRegister(
|
|
37
|
-
editor.registerCommand(
|
|
38
|
-
editor.registerUpdateListener((
|
|
37
|
+
editor.registerCommand(elementBlock.UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),
|
|
38
|
+
editor.registerUpdateListener(() => setTimeout(() => updateToolsPos(), 50)),
|
|
39
39
|
// 选中模块
|
|
40
|
-
editor.registerCommand(
|
|
40
|
+
editor.registerCommand(elementBlock.SELECTED_ELEMENTBLOCK_COMMAND, (payload) => {
|
|
41
41
|
if (payload != null) {
|
|
42
42
|
let toolsbarList = [];
|
|
43
43
|
if (typeof payload.toolsbars == "function") {
|
|
@@ -60,11 +60,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
60
60
|
return updateToolsPos();
|
|
61
61
|
}, lowPriority),
|
|
62
62
|
// 删除模块
|
|
63
|
-
editor.registerCommand(
|
|
63
|
+
editor.registerCommand(elementBlock.REMOVE_ELEMENTBLOCK_COMMAND, () => {
|
|
64
64
|
const selection = lexical.$getSelection();
|
|
65
65
|
if (lexical.$isNodeSelection(selection)) {
|
|
66
66
|
selection.getNodes().forEach((node) => node.remove());
|
|
67
|
-
editor.dispatchCommand(
|
|
67
|
+
editor.dispatchCommand(elementBlock.SELECTED_ELEMENTBLOCK_COMMAND, null);
|
|
68
68
|
}
|
|
69
69
|
return false;
|
|
70
70
|
}, lowPriority)
|
|
@@ -123,7 +123,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
123
123
|
vue.createVNode(_component_el_button, {
|
|
124
124
|
text: "",
|
|
125
125
|
type: "danger",
|
|
126
|
-
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(editor).dispatchCommand(vue.unref(
|
|
126
|
+
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(editor).dispatchCommand(vue.unref(elementBlock.REMOVE_ELEMENTBLOCK_COMMAND), null))
|
|
127
127
|
}, {
|
|
128
128
|
default: vue.withCtx(() => [
|
|
129
129
|
vue.createVNode(_component_MKSvgIcon, { iconClass: `Delete` })
|
package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { type CommandListenerPriority, $isNodeSelection, $getSelection } from 'lexical'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer, useMounted } from 'lexical-vue'\r\nimport { ref, reactive, shallowRef, nextTick, watch } from 'vue'\r\nimport {\r\n UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, REMOVE_ELEMENTBLOCK_COMMAND,\r\n type SelectElementBlocktEventType, DEVICE_VIEW_MODE,\r\n SelectElementBlockToolsbarFunction\r\n} from \"../../core\"\r\n\r\n// 点击工具条按钮\r\nconst lowPriority: CommandListenerPriority = 1\r\nconst editor = useLexicalComposer()\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst selectPayload = shallowRef<SelectElementBlocktEventType | null>(null);\r\nconst toolsPos = reactive({ left: \"px\", top: \"0px\" });\r\n\r\nwatch(DEVICE_VIEW_MODE, () => {\r\n editor.dispatchCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, null);\r\n})\r\n\r\n\r\n// 更新工具条坐标\r\nconst updateToolsPos = () => {\r\n\r\n nextTick(() => {\r\n \r\n if (selectPayload.value != null && toolbarRef.value != null) {\r\n const editIframeRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_iframe\").getBoundingClientRect();\r\n const editBodyRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_body\").getBoundingClientRect();\r\n const baseY = editIframeRect.y - editBodyRect.y;\r\n const selectRect = selectPayload.value.element.getBoundingClientRect();\r\n const toolsRect = toolbarRef.value.getBoundingClientRect();\r\n if (toolsRect) {\r\n // 中心点\r\n toolsPos.top = Math.max(selectRect.y - toolsRect.height - 5 + baseY, 5 + baseY) + \"px\"\r\n toolsPos.left = toolsRect.width / -2 + selectRect.x + selectRect.width / 2 + \"px\";\r\n }\r\n }\r\n })\r\n return false;\r\n}\r\n\r\nuseMounted(() => {\r\n return mergeRegister(\r\n editor.registerCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),\r\n editor.registerUpdateListener(() => setTimeout(()=> updateToolsPos(),50)),\r\n // 选中模块\r\n editor.registerCommand(SELECTED_ELEMENTBLOCK_COMMAND, (payload: SelectElementBlocktEventType) => {\r\n\r\n if (payload != null) {\r\n\r\n let toolsbarList = [];\r\n\r\n // 如果是函数的话\r\n if (typeof payload.toolsbars == \"function\") {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n toolsbarList = payload.toolsbars(selection) ?? [];\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars(null) ?? [];\r\n }\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars;\r\n }\r\n\r\n selectPayload.value = {\r\n element: payload.element,\r\n toolsbars: toolsbarList\r\n };\r\n }\r\n else {\r\n selectPayload.value = null;\r\n }\r\n\r\n return updateToolsPos();\r\n }, lowPriority),\r\n // 删除模块\r\n editor.registerCommand(REMOVE_ELEMENTBLOCK_COMMAND, () => {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n\r\n selection.getNodes().forEach(node => node.remove());\r\n\r\n // 没选中\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);\r\n }\r\n return false;\r\n }, lowPriority)\r\n // editor.registerCommand(SELECTION_CHANGE_COMMAND, (payload, newEditor) => {\r\n\r\n // const selection = $getSelection();\r\n\r\n // if($isNodeSelection(selection)){\r\n\r\n // const node = selection.getNodes()[0]\r\n\r\n // console.log(node,node.getTopLevelElement());\r\n // }\r\n\r\n // return updateToolsPos();\r\n // },lowPriority)\r\n )\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div v-if=\"selectPayload != null\" ref=\"toolbarRef\" class=\"mk-doc-editor-decorator-module-toolbar\" :style=\"toolsPos\">\r\n <el-button-group>\r\n\r\n <template v-for=\"item in selectPayload.toolsbars as any[]\">\r\n <el-tooltip effect=\"dark\" :content=\"item.title\" placement=\"top\">\r\n <el-button text @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" />\r\n </el-button>\r\n </el-tooltip>\r\n </template>\r\n <el-tooltip effect=\"dark\" content=\"删除\" placement=\"top\">\r\n <el-button text type=\"danger\" @click=\"editor.dispatchCommand(REMOVE_ELEMENTBLOCK_COMMAND, null)\">\r\n <MKSvgIcon :iconClass=\"`Delete`\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","shallowRef","reactive","watch","DEVICE_VIEW_MODE","UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND","nextTick","useMounted","mergeRegister","SELECTED_ELEMENTBLOCK_COMMAND","$getSelection","$isNodeSelection","REMOVE_ELEMENTBLOCK_COMMAND"],"mappings":";;;;;;;AAYA,MAAM,cAAuC;;;;AAC7C,UAAM,SAASA,WAAAA;AACT,UAAA,aAAaC,QAA2B,IAAI;AAC5C,UAAA,gBAAgBC,eAAgD,IAAI;AAC1E,UAAM,WAAWC,IAAAA,SAAS,EAAE,MAAM,MAAM,KAAK,OAAO;AAEpDC,QAAA,MAAMC,wBAAkB,MAAM;AACrB,aAAA,gBAAgBC,sDAAyC,IAAI;AAAA,IAAA,CACrE;AAID,UAAM,iBAAiB,MAAM;AAE3BC,UAAAA,SAAS,MAAM;AAEb,YAAI,cAAc,SAAS,QAAQ,WAAW,SAAS,MAAM;AACrD,gBAAA,iBAAkB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,8BAA8B,EAAE;AAC5G,gBAAA,eAAgB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,4BAA4B,EAAE;AACxG,gBAAA,QAAQ,eAAe,IAAI,aAAa;AAC9C,gBAAM,aAAa,cAAc,MAAM,QAAQ,sBAAsB;AAC/D,gBAAA,YAAY,WAAW,MAAM,sBAAsB;AACzD,cAAI,WAAW;AAEJ,qBAAA,MAAM,KAAK,IAAI,WAAW,IAAI,UAAU,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI;AACzE,qBAAA,OAAO,UAAU,QAAQ,KAAK,WAAW,IAAI,WAAW,QAAQ,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MAAA,CACD;AACM,aAAA;AAAA,IAAA;AAGTC,eAAAA,WAAW,MAAM;AACR,aAAAC,MAAA;AAAA,QACL,OAAO,gBAAgBH,aAAAA,yCAAyC,MAAM,eAAA,GAAkB,WAAW;AAAA,QACnG,OAAO,uBAAuB,MAAO,WAAW,MAAK,eAAe,GAAE,EAAE,CAAC;AAAA;AAAA,QAEzE,OAAO,gBAAgBI,4CAA+B,CAAC,YAA0C;AAE/F,cAAI,WAAW,MAAM;AAEnB,gBAAI,eAAe,CAAA;AAGf,gBAAA,OAAO,QAAQ,aAAa,YAAY;AAE1C,oBAAM,YAAYC,QAAAA;AAEd,kBAAAC,QAAAA,iBAAiB,SAAS,GAAG;AAC/B,+BAAe,QAAQ,UAAU,SAAS,KAAK,CAAA;AAAA,cAAC,OAE7C;AACH,+BAAe,QAAQ,UAAU,IAAI,KAAK,CAAA;AAAA,cAC5C;AAAA,YAAA,OAEG;AACH,6BAAe,QAAQ;AAAA,YACzB;AAEA,0BAAc,QAAQ;AAAA,cACpB,SAAS,QAAQ;AAAA,cACjB,WAAW;AAAA,YAAA;AAAA,UACb,OAEG;AACH,0BAAc,QAAQ;AAAA,UACxB;AAEA,iBAAO,eAAe;AAAA,WACrB,WAAW;AAAA;AAAA,QAEd,OAAO,gBAAgBC,aAAAA,6BAA6B,MAAM;AAExD,gBAAM,YAAYF,QAAAA;AAEd,cAAAC,QAAAA,iBAAiB,SAAS,GAAG;AAE/B,sBAAU,WAAW,QAAQ,CAAQ,SAAA,KAAK,QAAQ;AAG3C,mBAAA,gBAAgBF,4CAA+B,IAAI;AAAA,UAC5D;AACO,iBAAA;AAAA,WACN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAchB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6
|
+
const lexical = require("lexical");
|
|
7
|
+
class GridNode extends lexical.ElementNode {
|
|
8
|
+
constructor(attrs, key) {
|
|
9
|
+
super(key);
|
|
10
|
+
__publicField(this, "__attrs");
|
|
11
|
+
this.__attrs = attrs;
|
|
12
|
+
}
|
|
13
|
+
static getType() {
|
|
14
|
+
return "grid";
|
|
15
|
+
}
|
|
16
|
+
static hasGridNodeByElement(el) {
|
|
17
|
+
return el.classList.contains(GridNode.getMarkClassName()) ? el : null;
|
|
18
|
+
}
|
|
19
|
+
static getMarkClassName() {
|
|
20
|
+
return `mk-doc__${GridNode.getType()}`;
|
|
21
|
+
}
|
|
22
|
+
static getExtraClassName(el) {
|
|
23
|
+
return el.className.replace(GridNode.getMarkClassName(), "").trim();
|
|
24
|
+
}
|
|
25
|
+
static clone(node) {
|
|
26
|
+
return new GridNode(node.__attrs, node.__key);
|
|
27
|
+
}
|
|
28
|
+
static importJSON(serializedNode) {
|
|
29
|
+
return new GridNode(serializedNode.attrs);
|
|
30
|
+
}
|
|
31
|
+
static importDOM() {
|
|
32
|
+
return {
|
|
33
|
+
div: (domNode) => {
|
|
34
|
+
return GridNode.hasGridNodeByElement(domNode) ? {
|
|
35
|
+
conversion: () => {
|
|
36
|
+
return {
|
|
37
|
+
node: new GridNode({
|
|
38
|
+
class: GridNode.getExtraClassName(domNode),
|
|
39
|
+
width: domNode.style.width || "100%",
|
|
40
|
+
height: domNode.style.height,
|
|
41
|
+
flex: domNode.style.flex,
|
|
42
|
+
maxWidth: domNode.style.maxWidth,
|
|
43
|
+
maxHeight: domNode.style.maxHeight
|
|
44
|
+
})
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
priority: 1
|
|
48
|
+
} : null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 设置属性
|
|
54
|
+
* @param pos
|
|
55
|
+
*/
|
|
56
|
+
setAttrs(data) {
|
|
57
|
+
const writable = this.getWritable();
|
|
58
|
+
Object.assign(writable.__attrs, data);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 获取属性
|
|
62
|
+
* @param pos
|
|
63
|
+
*/
|
|
64
|
+
getAttrs() {
|
|
65
|
+
return this.__attrs;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 导出JSON
|
|
69
|
+
* @returns
|
|
70
|
+
*/
|
|
71
|
+
exportJSON() {
|
|
72
|
+
return {
|
|
73
|
+
...super.exportJSON(),
|
|
74
|
+
type: this.getType(),
|
|
75
|
+
attrs: this.__attrs,
|
|
76
|
+
version: 1
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 更新元素属性
|
|
81
|
+
* @param el
|
|
82
|
+
*/
|
|
83
|
+
updateElementAttr(el) {
|
|
84
|
+
Object.keys(this.__attrs).forEach((key) => {
|
|
85
|
+
if (["class", "overflowX"].indexOf(key) < 0) {
|
|
86
|
+
el.style[key] = this.__attrs[key];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 获取标识类
|
|
92
|
+
* @returns
|
|
93
|
+
*/
|
|
94
|
+
getMarkClassName() {
|
|
95
|
+
return `mk-doc__${this.getType()}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 导出DOM
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
exportDOM() {
|
|
102
|
+
const element = document.createElement("div");
|
|
103
|
+
this.updateElementAttr(element);
|
|
104
|
+
let extraClassName = GridNode.getExtraClassName(element);
|
|
105
|
+
if (extraClassName != this.__attrs.class) {
|
|
106
|
+
if (extraClassName) {
|
|
107
|
+
element.classList.remove(extraClassName);
|
|
108
|
+
}
|
|
109
|
+
if (this.__attrs.class) {
|
|
110
|
+
element.classList.add(this.__attrs.class);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (!element.classList.contains(GridNode.getMarkClassName())) {
|
|
114
|
+
element.classList.add(GridNode.getMarkClassName());
|
|
115
|
+
}
|
|
116
|
+
if (!element.classList.contains(this.getMarkClassName())) {
|
|
117
|
+
element.classList.add(this.getMarkClassName());
|
|
118
|
+
}
|
|
119
|
+
return { element };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 创建渲染DOM
|
|
123
|
+
* @param config
|
|
124
|
+
* @returns
|
|
125
|
+
*/
|
|
126
|
+
createDOM(config) {
|
|
127
|
+
const el = this.exportDOM().element;
|
|
128
|
+
el.setAttribute("node-key", this.__key);
|
|
129
|
+
return el;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 更新DOM
|
|
133
|
+
* @param prevNode
|
|
134
|
+
* @param dom
|
|
135
|
+
* @param config
|
|
136
|
+
* @returns
|
|
137
|
+
*/
|
|
138
|
+
updateDOM(prevNode, el, config) {
|
|
139
|
+
this.updateElementAttr(el);
|
|
140
|
+
let extraClassName = GridNode.getExtraClassName(el).replace(this.getMarkClassName(), "").trim();
|
|
141
|
+
if (extraClassName != this.__attrs.class) {
|
|
142
|
+
if (extraClassName) {
|
|
143
|
+
el.classList.remove(extraClassName);
|
|
144
|
+
}
|
|
145
|
+
if (this.__attrs.class) {
|
|
146
|
+
el.classList.add(this.__attrs.class);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 非内联
|
|
153
|
+
* @returns
|
|
154
|
+
*/
|
|
155
|
+
isInline() {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function $isGridNode(node) {
|
|
160
|
+
return node instanceof GridNode;
|
|
161
|
+
}
|
|
162
|
+
exports.$isGridNode = $isGridNode;
|
|
163
|
+
exports.GridNode = GridNode;
|
|
164
|
+
//# sourceMappingURL=GridNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/GridNode.ts"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\nimport type { DOMConversionMap, SerializedElementNode, LexicalNode, NodeKey, Spread,EditorConfig, DOMExportOutput } from 'lexical'\r\nimport { ElementNode } from 'lexical'\r\n\r\n/**\r\n * 容器属性\r\n */\r\nexport type GridNodeAttrType = {\r\n class:string,\r\n width:string,\r\n height:string,\r\n maxWidth:string,\r\n maxHeight:string,\r\n flex:string\r\n};\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedGridNode = Spread<{ attrs:GridNodeAttrType },SerializedElementNode>\r\n\r\n/**\r\n * 格子\r\n */\r\nexport class GridNode extends ElementNode{\r\n\r\n __attrs:GridNodeAttrType\r\n\r\n static getType(): string { return \"grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(GridNode.getMarkClassName()) ? el : null;\r\n }\r\n\r\n static getMarkClassName(): string {\r\n return `mk-doc__${GridNode.getType()}`\r\n }\r\n\r\n static getExtraClassName(el:HTMLElement){\r\n return el.className.replace(GridNode.getMarkClassName(),\"\").trim();\r\n }\r\n\r\n static clone(node: GridNode): GridNode {\r\n return new GridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedGridNode): GridNode {\r\n return new GridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return GridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n\r\n node:new GridNode({\r\n class:GridNode.getExtraClassName(domNode),\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n flex:domNode.style.flex,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight\r\n } as GridNodeAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:GridNodeAttrType,key?: NodeKey) {\r\n super(key)\r\n this.__attrs = attrs;\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:GridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():GridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 更新元素属性\r\n * @param el \r\n */\r\n updateElementAttr(el:HTMLElement){\r\n // 更新属性\r\n Object.keys(this.__attrs).forEach((key:any)=>{\r\n if([\"class\",\"overflowX\"].indexOf(key) < 0){\r\n el.style[key] = (this.__attrs as any)[key];\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * 获取标识类\r\n * @returns \r\n */\r\n getMarkClassName(): string {\r\n return `mk-doc__${this.getType()}`\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const element = document.createElement('div')\r\n\r\n this.updateElementAttr(element);\r\n\r\n // 移除老标识\r\n let extraClassName = GridNode.getExtraClassName(element);\r\n\r\n if(extraClassName != this.__attrs.class){\r\n\r\n if(extraClassName){\r\n element.classList.remove(extraClassName);\r\n }\r\n\r\n // 添加样式\r\n if (this.__attrs.class) {\r\n element.classList.add(this.__attrs.class);\r\n }\r\n }\r\n\r\n // 标识格子\r\n if (!element.classList.contains(GridNode.getMarkClassName())) {\r\n element.classList.add(GridNode.getMarkClassName());\r\n }\r\n\r\n // 标识指定\r\n if (!element.classList.contains(this.getMarkClassName())) {\r\n element.classList.add(this.getMarkClassName());\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const el = this.exportDOM().element as HTMLElement;\r\n\r\n el.setAttribute(\"node-key\",this.__key)\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: GridNode, el: HTMLElement, config: EditorConfig): boolean {\r\n // 更新属性\r\n \r\n this.updateElementAttr(el);\r\n\r\n // 移除老标识\r\n let extraClassName = GridNode.getExtraClassName(el).replace(this.getMarkClassName(),\"\").trim();\r\n\r\n if(extraClassName != this.__attrs.class){\r\n\r\n if(extraClassName){\r\n el.classList.remove(extraClassName);\r\n }\r\n\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 是否是格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isGridNode(\r\n node: GridNode | LexicalNode | null | undefined,\r\n): node is GridNode {\r\n return node instanceof GridNode\r\n}\r\n\r\n"],"names":["ElementNode"],"mappings":";;;;;;AA4BO,MAAM,iBAAiBA,QAAAA,YAAW;AAAA,EAoDvC,YAAY,OAAuB,KAAe;AAChD,UAAM,GAAG;AAnDX;AAoDE,SAAK,UAAU;AAAA,EACjB;AAAA,EAnDA,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAQ;AAAA,EAE1C,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,SAAS,kBAAkB,IAAI,KAAK;AAAA,EACnE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,SAAS,QAAA,CAAS;AAAA,EACtC;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAA,GAAG,UAAU,QAAQ,SAAS,oBAAmB,EAAE,EAAE;EAC9D;AAAA,EAEA,OAAO,MAAM,MAA0B;AACrC,WAAO,IAAI,SAAS,KAAK,SAAQ,KAAK,KAAK;AAAA,EAC7C;AAAA,EAEA,OAAO,WAAW,gBAA8C;AACvD,WAAA,IAAI,SAAS,eAAe,KAAK;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEvB,eAAA,SAAS,qBAAqB,OAAO,IAAI;AAAA,UAE9C,YAAY,MAAI;AAEN,mBAAA;AAAA,cAEP,MAAK,IAAI,SAAS;AAAA,gBACf,OAAM,SAAS,kBAAkB,OAAO;AAAA,gBACxC,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACL;AAAA,YAAA;AAAA,UAEzB;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,MAAuB;AACxB,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAA2B;AACzB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB,IAAe;AAE/B,WAAO,KAAK,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAU;AAC3C,UAAG,CAAC,SAAQ,WAAW,EAAE,QAAQ,GAAG,IAAI,GAAE;AACxC,WAAG,MAAM,GAAG,IAAK,KAAK,QAAgB,GAAG;AAAA,MAC3C;AAAA,IAAA,CACD;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAA2B;AAClB,WAAA,WAAW,KAAK,QAAA,CAAS;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,UAAU,SAAS,cAAc,KAAK;AAE5C,SAAK,kBAAkB,OAAO;AAG1B,QAAA,iBAAiB,SAAS,kBAAkB,OAAO;AAEpD,QAAA,kBAAkB,KAAK,QAAQ,OAAM;AAEtC,UAAG,gBAAe;AACR,gBAAA,UAAU,OAAO,cAAc;AAAA,MACzC;AAGI,UAAA,KAAK,QAAQ,OAAO;AACtB,gBAAQ,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,MAC1C;AAAA,IACF;AAGA,QAAI,CAAC,QAAQ,UAAU,SAAS,SAAS,iBAAA,CAAkB,GAAG;AAC5D,cAAQ,UAAU,IAAI,SAAS,iBAAkB,CAAA;AAAA,IACnD;AAGA,QAAI,CAAC,QAAQ,UAAU,SAAS,KAAK,iBAAA,CAAkB,GAAG;AACxD,cAAQ,UAAU,IAAI,KAAK,iBAAkB,CAAA;AAAA,IAC/C;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AAErC,UAAA,KAAK,KAAK,UAAA,EAAY;AAEzB,OAAA,aAAa,YAAW,KAAK,KAAK;AAE9B,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAAoB,IAAiB,QAA+B;AAG5E,SAAK,kBAAkB,EAAE;AAGrB,QAAA,iBAAiB,SAAS,kBAAkB,EAAE,EAAE,QAAQ,KAAK,iBAAiB,GAAE,EAAE,EAAE,KAAK;AAE1F,QAAA,kBAAkB,KAAK,QAAQ,OAAM;AAEtC,UAAG,gBAAe;AACb,WAAA,UAAU,OAAO,cAAc;AAAA,MACpC;AAEI,UAAA,KAAK,QAAQ,OAAO;AACtB,WAAG,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,MACrC;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoB;AACX,WAAA;AAAA,EACT;AACF;AAOO,SAAS,YACd,MACkB;AAClB,SAAO,gBAAgB;AACzB;;;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const lexical = require("lexical");
|
|
4
|
+
const GridNode = require("./GridNode.js");
|
|
5
|
+
const INSERT_IMAGETEXTGRID_COMMAND = lexical.createCommand("INSERT_IMAGETEXTGRID_COMMAND");
|
|
6
|
+
class ImageTextGridNode extends GridNode.GridNode {
|
|
7
|
+
static getType() {
|
|
8
|
+
return "image-text";
|
|
9
|
+
}
|
|
10
|
+
static hasGridNodeByElement(el) {
|
|
11
|
+
return el.classList.contains(ImageTextGridNode.getMarkClassName()) ? el : null;
|
|
12
|
+
}
|
|
13
|
+
static getMarkClassName() {
|
|
14
|
+
return `mk-doc__${ImageTextGridNode.getType()}`;
|
|
15
|
+
}
|
|
16
|
+
static getExtraClassName(el) {
|
|
17
|
+
return GridNode.GridNode.getExtraClassName(el).replace(ImageTextGridNode.getMarkClassName(), "").trim();
|
|
18
|
+
}
|
|
19
|
+
static clone(node) {
|
|
20
|
+
return new ImageTextGridNode(node.__attrs, node.__key);
|
|
21
|
+
}
|
|
22
|
+
static importJSON(serializedNode) {
|
|
23
|
+
return new ImageTextGridNode(serializedNode.attrs);
|
|
24
|
+
}
|
|
25
|
+
static importDOM() {
|
|
26
|
+
return {
|
|
27
|
+
div: (domNode) => {
|
|
28
|
+
return ImageTextGridNode.hasGridNodeByElement(domNode) ? {
|
|
29
|
+
conversion: () => {
|
|
30
|
+
return {
|
|
31
|
+
node: new ImageTextGridNode({
|
|
32
|
+
class: ImageTextGridNode.getExtraClassName(domNode),
|
|
33
|
+
width: domNode.style.width || "100%",
|
|
34
|
+
height: domNode.style.height,
|
|
35
|
+
flex: domNode.style.flex,
|
|
36
|
+
maxWidth: domNode.style.maxWidth,
|
|
37
|
+
maxHeight: domNode.style.maxHeight
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
priority: 4
|
|
42
|
+
} : null;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
constructor(attrs, key) {
|
|
47
|
+
super(attrs, key);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 设置属性
|
|
51
|
+
* @param pos
|
|
52
|
+
*/
|
|
53
|
+
setAttrs(data) {
|
|
54
|
+
const writable = this.getWritable();
|
|
55
|
+
Object.assign(writable.__attrs, data);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 获取属性
|
|
59
|
+
* @param pos
|
|
60
|
+
*/
|
|
61
|
+
getAttrs() {
|
|
62
|
+
return this.__attrs;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 导出JSON
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
exportJSON() {
|
|
69
|
+
return {
|
|
70
|
+
...super.exportJSON(),
|
|
71
|
+
type: this.getType(),
|
|
72
|
+
attrs: this.__attrs,
|
|
73
|
+
version: 1
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/* 不允许空
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
canBeEmpty() {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function $isImageTextGridNode(node) {
|
|
84
|
+
return node instanceof ImageTextGridNode;
|
|
85
|
+
}
|
|
86
|
+
exports.$isImageTextGridNode = $isImageTextGridNode;
|
|
87
|
+
exports.INSERT_IMAGETEXTGRID_COMMAND = INSERT_IMAGETEXTGRID_COMMAND;
|
|
88
|
+
exports.ImageTextGridNode = ImageTextGridNode;
|
|
89
|
+
//# sourceMappingURL=ImageTextGridNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageTextGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.ts"],"sourcesContent":["import type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey, Spread, DOMExportOutput } from 'lexical'\r\nimport { createCommand,} from 'lexical'\r\nimport { type GridNodeAttrType , GridNode,SerializedGridNode } from \"./GridNode\"\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type ImageTextGridNodeAttrType = GridNodeAttrType & {};\r\n\r\n/**\r\n * 插入图文\r\n */\r\nexport const INSERT_IMAGETEXTGRID_COMMAND: LexicalCommand<undefined|null> = createCommand('INSERT_IMAGETEXTGRID_COMMAND')\r\n\r\n/**\r\n * 图文节点序列化\r\n */\r\nexport type SerializedImageTextGridNode = Spread<{},SerializedGridNode>\r\n\r\n/**\r\n * 图文格子\r\n */\r\nexport class ImageTextGridNode extends GridNode{\r\n\r\n declare __attrs:ImageTextGridNodeAttrType\r\n\r\n static getType(): string {\r\n return \"image-text\";\r\n }\r\n\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(ImageTextGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${ImageTextGridNode.getType()}`\r\n }\r\n\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(ImageTextGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n\r\n static clone(node: ImageTextGridNode): ImageTextGridNode {\r\n return new ImageTextGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageTextGridNode): ImageTextGridNode {\r\n return new ImageTextGridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return ImageTextGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new ImageTextGridNode({\r\n class:ImageTextGridNode.getExtraClassName(domNode),\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n flex:domNode.style.flex,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight,\r\n } as ImageTextGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:ImageTextGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:ImageTextGridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():ImageTextGridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n \r\n\r\n /* 不允许空\r\n * @returns \r\n */\r\n canBeEmpty(): boolean {\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否是图文节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageTextGridNode(\r\n node: ImageTextGridNode | LexicalNode | null | undefined,\r\n): node is ImageTextGridNode {\r\n return node instanceof ImageTextGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAYa,MAAA,+BAA+DA,sBAAc,8BAA8B;AAUjH,MAAM,0BAA0BC,SAAAA,SAAQ;AAAA,EAI7C,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA,EAGA,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,kBAAkB,kBAAkB,IAAI,KAAK;AAAA,EAC5E;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,kBAAkB,QAAA,CAAS;AAAA,EAC/C;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,kBAAkB,oBAAmB,EAAE,EAAE;EACzF;AAAA,EAEA,OAAO,MAAM,MAA4C;AACvD,WAAO,IAAI,kBAAkB,KAAK,SAAQ,KAAK,KAAK;AAAA,EACtD;AAAA,EAEA,OAAO,WAAW,gBAAgE;AACzE,WAAA,IAAI,kBAAkB,eAAe,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,kBAAkB,qBAAqB,OAAO,IAAI;AAAA,UAExD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,kBAAkB;AAAA,gBACzB,OAAM,kBAAkB,kBAAkB,OAAO;AAAA,gBACjD,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACI;AAAA,YAAA;AAAA,UAElC;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAAgC,KAAe;AACzD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAAgC;AACjC,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoC;AAClC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAMA,aAAsB;AACb,WAAA;AAAA,EACT;AACF;AAOO,SAAS,qBACd,MAC2B;AAC3B,SAAO,gBAAgB;AACzB;;;;"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const lexical = require("lexical");
|
|
4
|
+
const GridNode = require("./GridNode.js");
|
|
5
|
+
const INSERT_LAYOUTGRID_COMMAND = lexical.createCommand("INSERT_LAYOUTGRID_COMMAND");
|
|
6
|
+
class LayoutGridNode extends GridNode.GridNode {
|
|
7
|
+
static getType() {
|
|
8
|
+
return "layout-grid";
|
|
9
|
+
}
|
|
10
|
+
static hasGridNodeByElement(el) {
|
|
11
|
+
return el.classList.contains(LayoutGridNode.getMarkClassName()) ? el : null;
|
|
12
|
+
}
|
|
13
|
+
static getMarkClassName() {
|
|
14
|
+
return `mk-doc__${LayoutGridNode.getType()}`;
|
|
15
|
+
}
|
|
16
|
+
static getExtraClassName(el) {
|
|
17
|
+
return GridNode.GridNode.getExtraClassName(el).replace(LayoutGridNode.getMarkClassName(), "").trim();
|
|
18
|
+
}
|
|
19
|
+
static clone(node) {
|
|
20
|
+
return new LayoutGridNode(node.__attrs, node.__key);
|
|
21
|
+
}
|
|
22
|
+
static importJSON(serializedNode) {
|
|
23
|
+
return new LayoutGridNode(serializedNode.attrs);
|
|
24
|
+
}
|
|
25
|
+
static importDOM() {
|
|
26
|
+
return {
|
|
27
|
+
div: (domNode) => {
|
|
28
|
+
return LayoutGridNode.hasGridNodeByElement(domNode) ? {
|
|
29
|
+
conversion: () => {
|
|
30
|
+
return {
|
|
31
|
+
node: new LayoutGridNode({
|
|
32
|
+
class: LayoutGridNode.getExtraClassName(domNode),
|
|
33
|
+
display: domNode.style.display || "flex",
|
|
34
|
+
width: domNode.style.width || "100%",
|
|
35
|
+
height: domNode.style.height,
|
|
36
|
+
maxWidth: domNode.style.maxWidth,
|
|
37
|
+
maxHeight: domNode.style.maxHeight,
|
|
38
|
+
flex: domNode.style.flex,
|
|
39
|
+
flexDirection: domNode.style.flexDirection,
|
|
40
|
+
flexWrap: domNode.style.flexWrap,
|
|
41
|
+
alignContent: domNode.style.alignContent,
|
|
42
|
+
justifyContent: domNode.style.justifyContent,
|
|
43
|
+
alignItems: domNode.style.alignItems
|
|
44
|
+
})
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
priority: 4
|
|
48
|
+
} : null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
constructor(attrs, key) {
|
|
53
|
+
super(attrs, key);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 设置属性
|
|
57
|
+
* @param pos
|
|
58
|
+
*/
|
|
59
|
+
setAttrs(data) {
|
|
60
|
+
const writable = this.getWritable();
|
|
61
|
+
Object.assign(writable.__attrs, data);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 获取属性
|
|
65
|
+
* @param pos
|
|
66
|
+
*/
|
|
67
|
+
getAttrs() {
|
|
68
|
+
return this.__attrs;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 导出JSON
|
|
72
|
+
* @returns
|
|
73
|
+
*/
|
|
74
|
+
exportJSON() {
|
|
75
|
+
return {
|
|
76
|
+
...super.exportJSON(),
|
|
77
|
+
type: this.getType(),
|
|
78
|
+
attrs: this.__attrs,
|
|
79
|
+
version: 1
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function $isLayoutGridNode(node) {
|
|
84
|
+
return node instanceof LayoutGridNode;
|
|
85
|
+
}
|
|
86
|
+
exports.$isLayoutGridNode = $isLayoutGridNode;
|
|
87
|
+
exports.INSERT_LAYOUTGRID_COMMAND = INSERT_LAYOUTGRID_COMMAND;
|
|
88
|
+
exports.LayoutGridNode = LayoutGridNode;
|
|
89
|
+
//# sourceMappingURL=LayoutGridNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.ts"],"sourcesContent":["import { type DOMConversionMap,type NodeKey, type Spread, type DOMExportOutput, type LexicalCommand, createCommand, LexicalNode } from 'lexical'\r\nimport { type GridNodeAttrType , GridNode,SerializedGridNode } from \"./GridNode\"\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type LayoutGridNodeAttrType = GridNodeAttrType & {\r\n display:'flex'|'inline-flex'\r\n flexDirection:'column'|'row'|'row-reverse'|'column-reverse',\r\n flexWrap:'nowrap'|'warp',\r\n alignContent:'center'|'flex-start',\r\n justifyContent:'center'|'flex-start',\r\n alignItems:'center'|'flex-start'\r\n};\r\n\r\n\r\n/**\r\n * 插入布局格子\r\n */\r\nexport const INSERT_LAYOUTGRID_COMMAND: LexicalCommand<LayoutGridNodeAttrType> = createCommand('INSERT_LAYOUTGRID_COMMAND')\r\n\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedLayoutGridNode = Spread<{ attrs:LayoutGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 布局格子\r\n */\r\nexport class LayoutGridNode extends GridNode{\r\n\r\n declare __attrs:LayoutGridNodeAttrType\r\n\r\n static getType(): string { return \"layout-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(LayoutGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${LayoutGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(LayoutGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: LayoutGridNode): LayoutGridNode {\r\n return new LayoutGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedLayoutGridNode): LayoutGridNode {\r\n return new LayoutGridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return LayoutGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new LayoutGridNode({\r\n class:LayoutGridNode.getExtraClassName(domNode),\r\n display:domNode.style.display || \"flex\",\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight,\r\n flex:domNode.style.flex,\r\n flexDirection:domNode.style.flexDirection,\r\n flexWrap:domNode.style.flexWrap,\r\n alignContent:domNode.style.alignContent,\r\n justifyContent:domNode.style.justifyContent,\r\n alignItems:domNode.style.alignItems\r\n } as LayoutGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:LayoutGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:LayoutGridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():LayoutGridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 是否是模块格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isLayoutGridNode(\r\n node: LayoutGridNode | LexicalNode | null | undefined,\r\n): node is LayoutGridNode {\r\n return node instanceof LayoutGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAmBa,MAAA,4BAAoEA,sBAAc,2BAA2B;AAWnH,MAAM,uBAAuBC,SAAAA,SAAQ;AAAA,EAI1C,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAe;AAAA,EAEjD,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,eAAe,kBAAkB,IAAI,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,eAAe,QAAA,CAAS;AAAA,EAC5C;AAAA,EACA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,eAAe,oBAAmB,EAAE,EAAE;EACtF;AAAA,EACA,OAAO,MAAM,MAAsC;AACjD,WAAO,IAAI,eAAe,KAAK,SAAQ,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,WAAW,gBAA0D;AACnE,WAAA,IAAI,eAAe,eAAe,KAAK;AAAA,EAChD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,eAAe,qBAAqB,OAAO,IAAI;AAAA,UAErD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,eAAe;AAAA,gBACtB,OAAM,eAAe,kBAAkB,OAAO;AAAA,gBAC9C,SAAQ,QAAQ,MAAM,WAAW;AAAA,gBACjC,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,gBACxB,MAAK,QAAQ,MAAM;AAAA,gBACnB,eAAc,QAAQ,MAAM;AAAA,gBAC5B,UAAS,QAAQ,MAAM;AAAA,gBACvB,cAAa,QAAQ,MAAM;AAAA,gBAC3B,gBAAe,QAAQ,MAAM;AAAA,gBAC7B,YAAW,QAAQ,MAAM;AAAA,cAAA,CACA;AAAA,YAAA;AAAA,UAE/B;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAA6B,KAAe;AACtD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAA6B;AAC9B,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAiC;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AACF;AAOO,SAAS,kBACd,MACwB;AACxB,SAAO,gBAAgB;AACzB;;;;"}
|