@maketribe/ms-app 3.2.32 → 3.2.33
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/components/basic/doc-editor/core/element-block.js +48 -63
- package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/index.js +1 -1
- package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/editor.vue.js +4 -1
- package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/index.js +2 -0
- package/dist/cjs/components/basic/doc-editor/index.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +203 -65
- package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +39 -39
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +33 -18
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +4 -52
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
- 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 -22
- 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 +2 -2
- 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 +16 -9
- 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 +11 -10
- 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 +5 -26
- 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 +3 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +118 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +26 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +4 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +1 -2
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +2 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.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 +1 -2
- package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
- 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/article-list.vue.js +176 -46
- package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +44 -22
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -8
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +2 -1
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/element-block.js +50 -65
- package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/index.js +2 -2
- package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/editor.vue.js +5 -2
- package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/index.js +3 -1
- package/dist/esm/components/basic/doc-editor/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +206 -68
- package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +39 -39
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +33 -18
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +7 -55
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
- 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 -23
- 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 +2 -2
- 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 +16 -9
- 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 +12 -11
- 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 +7 -28
- 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 +4 -2
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +118 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +27 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +5 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +1 -2
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +3 -2
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.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 +1 -2
- package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
- 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/article-list.vue.js +177 -47
- package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +45 -23
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -8
- package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +2 -1
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.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/modules/cms/index.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/components/article-list.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/index.css +1 -1
- package/dist/style/modules/ms/components/rich-text-editor/index.css +1 -1
- package/dist/style/modules/ms/index.css +1 -1
- package/dist/style/src/components/basic/doc-editor/index.scss +16 -0
- package/dist/style/src/modules/cms/pages/cms-contents/components/article-list.scss +31 -3
- package/dist/style/src/modules/ms/components/rich-text-editor/index.scss +1 -1
- package/dist/types/components/basic/doc-editor/core/element-block.d.ts +5 -13
- package/dist/types/components/basic/doc-editor/core/index.d.ts +0 -1
- package/dist/types/components/basic/doc-editor/index.d.ts +2 -1
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +10 -5
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +5 -1
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +3 -8
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +1 -1
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/commands.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/composables.d.ts +34 -0
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.d.ts +2 -0
- package/dist/types/components/basic/doc-editor/plugins/index.d.ts +2 -1
- package/dist/types/modules/ms/components/rich-text-editor/index.d.ts +2 -2
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor-options.d.ts +1 -1
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor.d.ts +2 -2
- package/package.json +3 -3
- package/dist/cjs/components/basic/doc-editor/core/utils.js +0 -42
- package/dist/cjs/components/basic/doc-editor/core/utils.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/utils.js +0 -42
- package/dist/esm/components/basic/doc-editor/core/utils.js.map +0 -1
- package/dist/types/components/basic/doc-editor/core/utils.d.ts +0 -4
|
@@ -35,10 +35,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
35
35
|
__name: "index",
|
|
36
36
|
setup(__props) {
|
|
37
37
|
const editor = lexicalVue.useLexicalComposer();
|
|
38
|
-
const {
|
|
39
|
-
|
|
38
|
+
const { findModuleByName } = composables.useModule();
|
|
39
|
+
elementBlock.useElementBlockSelection(utils$1.findModuleNodeEl, (nodeKey) => {
|
|
40
|
+
const node = lexical.$getNodeByKey(nodeKey);
|
|
40
41
|
if (ModuleBlockNode.$isModuleBlockNode(node)) {
|
|
41
|
-
const
|
|
42
|
+
const module2 = findModuleByName(node.__name);
|
|
42
43
|
const toobarList = [
|
|
43
44
|
{
|
|
44
45
|
title: `编辑【${module2.title}】`,
|
|
@@ -75,24 +76,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
];
|
|
78
|
-
if (node.__prev) {
|
|
79
|
-
toobarList.push(
|
|
80
|
-
{
|
|
81
|
-
title: "选中上一个兄弟",
|
|
82
|
-
icon: "ArrowLeftBold",
|
|
83
|
-
action: async () => setSelection(node.__prev, null)
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
if (node.__next) {
|
|
88
|
-
toobarList.push(
|
|
89
|
-
{
|
|
90
|
-
title: "选中上下个兄弟",
|
|
91
|
-
icon: "ArrowRightBold",
|
|
92
|
-
action: async () => setSelection(node.__next, null)
|
|
93
|
-
}
|
|
94
|
-
);
|
|
95
|
-
}
|
|
96
79
|
return toobarList;
|
|
97
80
|
}
|
|
98
81
|
return null;
|
|
@@ -115,11 +98,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
115
98
|
vue.onUnmounted(() => unregister());
|
|
116
99
|
});
|
|
117
100
|
return (_ctx, _cache) => {
|
|
118
|
-
return
|
|
119
|
-
key: 0,
|
|
120
|
-
class: "mk-doc-active-element-block-mark",
|
|
121
|
-
style: vue.normalizeStyle(vue.unref(curSelectPos))
|
|
122
|
-
}, null, 4)) : vue.createCommentVNode("", true);
|
|
101
|
+
return null;
|
|
123
102
|
};
|
|
124
103
|
}
|
|
125
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ModulePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport {
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ModulePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_EDITOR,$getNodeByKey,$getSelection,$isNodeSelection, NodeKey } from 'lexical'\r\nimport { onMounted, onUnmounted } from 'vue'\r\nimport { ModuleType,useModule } from \"./composables\"\r\nimport { ModuleBlockNode,$createModuleBlockNode,$isModuleBlockNode } from \"./ModuleBlockNode\"\r\nimport { $isModuleGridNode } from \"../GridPlugin/ModuleGridNode\"\r\nimport { INSERT_MODULE_COMMAND,type ModulePropType } from \"./commands\"\r\nimport { showModuleSelectDialog,findModuleNodeEl } from \"./utils\"\r\nimport { createDefaultFormData } from \"../../../dynamic-form-panel/utils\"\r\nimport { useElementBlockSelection } from '../../core'\r\nimport { showDynamicFormDialoger } from \"../../../dynamic-form-panel\"\r\n\r\n// 编辑器\r\nconst editor = useLexicalComposer()\r\nconst { findModuleByName } = useModule();\r\n\r\n// 使用元素模块\r\nuseElementBlockSelection(findModuleNodeEl,(nodeKey)=>{\r\n \r\n const node = $getNodeByKey(nodeKey as NodeKey)\r\n\r\n if($isModuleBlockNode(node)){\r\n\r\n const module = findModuleByName(node.__name);\r\n\r\n const toobarList = [\r\n {\r\n title:`编辑【${module.title}】`,icon:\"Edit\",action:async ()=>{\r\n\r\n var result = await showDynamicFormDialoger(module.title,module.options,node.__data)\r\n\r\n editor.update(() => {\r\n node.setContent(result)\r\n })\r\n\r\n } \r\n },\r\n {\r\n title:`插入【${module.title}】之前`,icon:\"BottomLeft\",action:async ()=>{\r\n\r\n // 打开模块面板\r\n const result = (await showModuleSelectDialog()) as ModuleType;\r\n const defaultData = createDefaultFormData(result.options);\r\n // 插入模块\r\n editor.dispatchCommand(INSERT_MODULE_COMMAND,{ name:result.name,data:defaultData})\r\n\r\n editor.update(() => {\r\n node.insertBefore($createModuleBlockNode(result.name,defaultData))\r\n })\r\n\r\n } \r\n },\r\n {\r\n title:`插入【${module.title}】之后`,icon:\"BottomRight\",action:async ()=>{\r\n\r\n // 打开模块面板\r\n const result = (await showModuleSelectDialog()) as ModuleType;\r\n const defaultData = createDefaultFormData(result.options);\r\n // 插入模块\r\n editor.dispatchCommand(INSERT_MODULE_COMMAND,{ name:result.name,data:defaultData})\r\n\r\n editor.update(() => {\r\n node.insertAfter($createModuleBlockNode(result.name,defaultData))\r\n })\r\n\r\n } \r\n }\r\n ];\r\n\r\n return toobarList;\r\n }\r\n\r\n return null;\r\n})\r\n\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ModuleBlockNode])){\r\n throw new Error('ModuleBlockPlugin: 未注册模块模版节点!')\r\n }\r\n\r\n // 注册指令\r\n const unregister = mergeRegister(\r\n\r\n // 插入模块\r\n editor.registerCommand<ModulePropType>(INSERT_MODULE_COMMAND,(payload) => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if($isModuleGridNode(node)){\r\n node.append($createModuleBlockNode(payload.name,payload.data))\r\n }\r\n \r\n return true\r\n },COMMAND_PRIORITY_EDITOR)\r\n\r\n );\r\n\r\n onUnmounted(() => unregister())\r\n})\r\n</script>\r\n\r\n<template></template>\r\n"],"names":["useLexicalComposer","useModule","useElementBlockSelection","findModuleNodeEl","$getNodeByKey","$isModuleBlockNode","module","showDynamicFormDialoger","showModuleSelectDialog","createDefaultFormData","INSERT_MODULE_COMMAND","$createModuleBlockNode","onMounted","ModuleBlockNode","mergeRegister","$getSelection","$isNodeSelection","$isModuleGridNode","COMMAND_PRIORITY_EDITOR","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAM,SAASA,WAAAA;AACT,UAAA,EAAE,qBAAqBC,YAAAA;AAGJC,0CAAAC,QAAAA,kBAAiB,CAAC,YAAU;AAE7C,YAAA,OAAOC,sBAAc,OAAkB;AAE1C,UAAAC,gBAAAA,mBAAmB,IAAI,GAAE;AAEpB,cAAAC,UAAS,iBAAiB,KAAK,MAAM;AAE3C,cAAM,aAAa;AAAA,UACjB;AAAA,YACE,OAAM,MAAMA,QAAO,KAAK;AAAA,YAAI,MAAK;AAAA,YAAO,QAAO,YAAU;AAEnD,kBAAA,SAAS,MAAMC,OAAwB,wBAAAD,QAAO,OAAMA,QAAO,SAAQ,KAAK,MAAM;AAElF,qBAAO,OAAO,MAAM;AAClB,qBAAK,WAAW,MAAM;AAAA,cAAA,CACvB;AAAA,YAEH;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAM,MAAMA,QAAO,KAAK;AAAA,YAAM,MAAK;AAAA,YAAa,QAAO,YAAU;AAGzD,oBAAA,SAAU,MAAME,QAAAA;AAChB,oBAAA,cAAcC,QAAAA,sBAAsB,OAAO,OAAO;AAEjD,qBAAA,gBAAgBC,gCAAsB,EAAE,MAAK,OAAO,MAAK,MAAK,aAAY;AAEjF,qBAAO,OAAO,MAAM;AAClB,qBAAK,aAAaC,gBAAA,uBAAuB,OAAO,MAAK,WAAW,CAAC;AAAA,cAAA,CAClE;AAAA,YAEH;AAAA,UACF;AAAA,UACA;AAAA,YACE,OAAM,MAAML,QAAO,KAAK;AAAA,YAAM,MAAK;AAAA,YAAc,QAAO,YAAU;AAG1D,oBAAA,SAAU,MAAME,QAAAA;AAChB,oBAAA,cAAcC,QAAAA,sBAAsB,OAAO,OAAO;AAEjD,qBAAA,gBAAgBC,gCAAsB,EAAE,MAAK,OAAO,MAAK,MAAK,aAAY;AAEjF,qBAAO,OAAO,MAAM;AAClB,qBAAK,YAAYC,gBAAA,uBAAuB,OAAO,MAAK,WAAW,CAAC;AAAA,cAAA,CACjE;AAAA,YAEH;AAAA,UACF;AAAA,QAAA;AAGK,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAEDC,QAAAA,UAAU,MAAM;AAEd,UAAI,CAAC,OAAO,SAAS,CAACC,gBAAAA,eAAe,CAAC,GAAE;AAChC,cAAA,IAAI,MAAM,+BAA+B;AAAA,MACjD;AAGA,YAAM,aAAaC,MAAA;AAAA;AAAA,QAGjB,OAAO,gBAAgCJ,gCAAsB,CAAC,YAAY;AAExE,gBAAM,YAAYK,QAAAA;AACZ,gBAAA,OAAOC,yBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AAEnE,cAAAC,eAAAA,kBAAkB,IAAI,GAAE;AACzB,iBAAK,OAAON,uCAAuB,QAAQ,MAAK,QAAQ,IAAI,CAAC;AAAA,UAC/D;AAEO,iBAAA;AAAA,WACPO,+BAAuB;AAAA,MAAA;AAIfC,sBAAA,MAAM,YAAY;AAAA,IAAA,CAC/B;;;;;;;"}
|
|
@@ -6,9 +6,11 @@ const elementPlus = require("element-plus");
|
|
|
6
6
|
const elIcons = require("@element-plus/icons-vue");
|
|
7
7
|
const composables = require("./composables.js");
|
|
8
8
|
const ModuleBlockNode = require("./ModuleBlockNode.js");
|
|
9
|
+
const {
|
|
10
|
+
Modules
|
|
11
|
+
} = composables.useModule();
|
|
9
12
|
const showModuleSelectDialog = async () => {
|
|
10
13
|
return new Promise((resolve) => {
|
|
11
|
-
const Modules = composables.useModules();
|
|
12
14
|
const selectOption = vue.ref(null);
|
|
13
15
|
const searchInputValue = vue.ref("");
|
|
14
16
|
const handleCancelClick = () => {
|
|
@@ -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 } 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
|
+
{"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 { useModule,type ModuleType } from \"./composables\"\r\nimport { DynamicFormItemType } from \"../../../dynamic-form-panel\"\r\nimport { ModuleBlockNode } from \"./ModuleBlockNode\"\r\n\r\nconst { Modules } = useModule();\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 \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":["Modules","useModule","showModuleSelectDialog","Promise","resolve","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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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const lexical = require("lexical");
|
|
4
|
+
const INSERT_TEMPLATE_COMMAND = lexical.createCommand("INSERT_TEMPLATE_COMMAND");
|
|
5
|
+
exports.INSERT_TEMPLATE_COMMAND = INSERT_TEMPLATE_COMMAND;
|
|
6
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/TemplatePlugin/commands.ts"],"sourcesContent":["\r\n\r\nimport { type LexicalCommand, createCommand} from 'lexical'\r\n\r\n/**\r\n * 插入模版块指令\r\n */\r\nexport const INSERT_TEMPLATE_COMMAND: LexicalCommand<string> = createCommand('INSERT_TEMPLATE_COMMAND')\r\n"],"names":["createCommand"],"mappings":";;;AAOa,MAAA,0BAAkDA,sBAAc,yBAAyB;;"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const vue = require("vue");
|
|
4
|
+
const lexical = require("lexical");
|
|
5
|
+
const html = require("@lexical/html");
|
|
6
|
+
const dm = require("@maketribe/dm");
|
|
7
|
+
const elementPlus = require("element-plus");
|
|
8
|
+
const elIcons = require("@element-plus/icons-vue");
|
|
9
|
+
const commands = require("./commands.js");
|
|
10
|
+
const lexicalVue = require("lexical-vue");
|
|
11
|
+
const utils = require("@lexical/utils");
|
|
12
|
+
const Templates = [];
|
|
13
|
+
const registerDocTemplate = (options) => {
|
|
14
|
+
if (Templates.findIndex((item) => item.name == options.name) >= 0) {
|
|
15
|
+
console.warn(`模版【${options.title}】重复注册!`);
|
|
16
|
+
} else {
|
|
17
|
+
Templates.push(options);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const parser = new DOMParser();
|
|
21
|
+
const useTemplate = () => {
|
|
22
|
+
const editor = lexicalVue.useLexicalComposer();
|
|
23
|
+
const findTemplateNodesByName = (name) => {
|
|
24
|
+
const template = Templates.find((item) => item.name == name);
|
|
25
|
+
if (template != null) {
|
|
26
|
+
return html.$generateNodesFromDOM(editor, parser.parseFromString(template.template.trim(), "text/html"));
|
|
27
|
+
}
|
|
28
|
+
throw new Error("未知的模版:【" + name + "】");
|
|
29
|
+
};
|
|
30
|
+
lexicalVue.useMounted(() => {
|
|
31
|
+
return utils.mergeRegister(
|
|
32
|
+
// 插入模版
|
|
33
|
+
editor.registerCommand(commands.INSERT_TEMPLATE_COMMAND, (name) => {
|
|
34
|
+
const selection = lexical.$getSelection();
|
|
35
|
+
const elementNode = lexical.$isNodeSelection(selection) ? selection == null ? void 0 : selection.getNodes()[0] : null;
|
|
36
|
+
const templateNodes = findTemplateNodesByName(name);
|
|
37
|
+
if (elementNode) {
|
|
38
|
+
templateNodes.forEach((node) => elementNode.append(node));
|
|
39
|
+
} else {
|
|
40
|
+
templateNodes.forEach((node) => utils.$insertNodeToNearestRoot(node));
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}, lexical.COMMAND_PRIORITY_EDITOR)
|
|
44
|
+
);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const showTemplateSelectDialog = function() {
|
|
48
|
+
return new Promise((resolve) => {
|
|
49
|
+
const selectOption = vue.ref(null);
|
|
50
|
+
const searchInputValue = vue.ref("");
|
|
51
|
+
const handleCancelClick = () => {
|
|
52
|
+
dialogInstance.destroy();
|
|
53
|
+
};
|
|
54
|
+
const handleConfirmClick = () => {
|
|
55
|
+
var _a;
|
|
56
|
+
dialogInstance.destroy();
|
|
57
|
+
resolve((_a = selectOption.value) == null ? void 0 : _a.name);
|
|
58
|
+
};
|
|
59
|
+
const clickHandle = (item) => {
|
|
60
|
+
selectOption.value = item;
|
|
61
|
+
};
|
|
62
|
+
const dialogInstance = dm.Dialoger.customRender({
|
|
63
|
+
title: "模版选择",
|
|
64
|
+
class: "mk-doc-editor__module-template_dialog",
|
|
65
|
+
width: "700px",
|
|
66
|
+
onClose: () => {
|
|
67
|
+
dialogInstance.destroy();
|
|
68
|
+
},
|
|
69
|
+
body: () => {
|
|
70
|
+
const templateListComponent = Templates.filter((item) => {
|
|
71
|
+
if (searchInputValue.value) {
|
|
72
|
+
return item.name.indexOf(searchInputValue.value) >= 0 || item.title.indexOf(searchInputValue.value) >= 0;
|
|
73
|
+
} else {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}).map((item) => {
|
|
77
|
+
var _a;
|
|
78
|
+
return vue.createVNode("div", {
|
|
79
|
+
"class": `mk-doc-editor__module-template_dialog_list-item ${item.cover ? "cover" : ""} ${((_a = selectOption.value) == null ? void 0 : _a.name) == item.name ? "active" : ""}`,
|
|
80
|
+
"onClick": () => clickHandle(item)
|
|
81
|
+
}, [item.cover ? vue.createVNode("img", {
|
|
82
|
+
"src": item.cover
|
|
83
|
+
}, null) : null, vue.createVNode("div", {
|
|
84
|
+
"class": "mk-doc-editor__module-template_dialog_list-item_title"
|
|
85
|
+
}, [item.title])]);
|
|
86
|
+
});
|
|
87
|
+
return vue.createVNode("div", {
|
|
88
|
+
"class": "mk-doc-editor__module-template_dialog_warp"
|
|
89
|
+
}, [vue.createVNode(elementPlus.ElInput, {
|
|
90
|
+
"modelValue": searchInputValue.value,
|
|
91
|
+
"onUpdate:modelValue": ($event) => searchInputValue.value = $event,
|
|
92
|
+
"prefix-icon": elIcons.Search,
|
|
93
|
+
"clearable": true
|
|
94
|
+
}, null), vue.createVNode("div", {
|
|
95
|
+
"class": "mk-doc-editor__module-template_dialog_list-body"
|
|
96
|
+
}, [templateListComponent])]);
|
|
97
|
+
},
|
|
98
|
+
footer: () => {
|
|
99
|
+
return vue.createVNode(vue.Fragment, null, [vue.createVNode(elementPlus.ElButton, {
|
|
100
|
+
"onClick": handleCancelClick
|
|
101
|
+
}, {
|
|
102
|
+
default: () => [vue.createTextVNode("取消")]
|
|
103
|
+
}), vue.createVNode(elementPlus.ElButton, {
|
|
104
|
+
"type": "primary",
|
|
105
|
+
"onClick": handleConfirmClick,
|
|
106
|
+
"disabled": !selectOption.value
|
|
107
|
+
}, {
|
|
108
|
+
default: () => [vue.createTextVNode("确定")]
|
|
109
|
+
})]);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
exports.Templates = Templates;
|
|
115
|
+
exports.registerDocTemplate = registerDocTemplate;
|
|
116
|
+
exports.showTemplateSelectDialog = showTemplateSelectDialog;
|
|
117
|
+
exports.useTemplate = useTemplate;
|
|
118
|
+
//# sourceMappingURL=composables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composables.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/TemplatePlugin/composables.tsx"],"sourcesContent":["import { $getSelection, $isNodeSelection, COMMAND_PRIORITY_EDITOR, ElementNode, LexicalEditor, LexicalNode } from \"lexical\";\r\nimport { $generateNodesFromDOM } from \"@lexical/html\";\r\nimport { ref,Fragment } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { ElButton,ElInput } from \"element-plus\";\r\nimport { Search } from \"@element-plus/icons-vue\";\r\nimport { INSERT_TEMPLATE_COMMAND } from \"./commands\"\r\nimport { useMounted,useLexicalComposer } from \"lexical-vue\";\r\nimport { $insertNodeToNearestRoot, mergeRegister } from \"@lexical/utils\";\r\n\r\n/**\r\n * 模版类型\r\n */\r\nexport type TemplateType = {\r\n name:string,\r\n title:string,\r\n cover:string,\r\n template:string\r\n}\r\n\r\n/**\r\n * 模版定义\r\n */\r\nexport const Templates:TemplateType[] = [];\r\n\r\n/**\r\n * 注册模版\r\n * @param options \r\n */\r\nexport const registerDocTemplate = (options:TemplateType) => {\r\n\r\n if(Templates.findIndex(item=>item.name == options.name) >= 0){\r\n console.warn(`模版【${options.title}】重复注册!`);\r\n }\r\n else{\r\n Templates.push(options);\r\n }\r\n}\r\n\r\n/**\r\n * 卸载模块\r\n * @param name \r\n */\r\nexport const unRegisterDocTemplate = (name:string) => {\r\n\r\n for(let i = 0;i < Templates.length; i++){\r\n if(Templates[i].name == name){\r\n Templates.splice(i,1);\r\n break;\r\n }\r\n }\r\n}\r\n\r\n// dom 解析器\r\nconst parser = new DOMParser();\r\n\r\n/**\r\n * \r\n * @param name \r\n * @returns \r\n */\r\nexport const useTemplate = () => {\r\n\r\n // 编辑器\r\n const editor = useLexicalComposer()\r\n\r\n const findTemplateNodesByName = (name:string):LexicalNode[] => {\r\n\r\n const template = Templates.find(item=>item.name == name);\r\n\r\n if(template != null){\r\n return $generateNodesFromDOM(editor,parser.parseFromString(template.template.trim(),\"text/html\"));\r\n }\r\n\r\n throw new Error(\"未知的模版:【\" + name + \"】\");\r\n }\r\n\r\n // 编辑器挂载\r\n useMounted(()=>{\r\n\r\n return mergeRegister(\r\n // 插入模版\r\n editor.registerCommand<string>(INSERT_TEMPLATE_COMMAND,(name) => {\r\n\r\n const selection = $getSelection()\r\n const elementNode = $isNodeSelection(selection) ? selection?.getNodes()[0] as ElementNode : null;\r\n const templateNodes = findTemplateNodesByName(name)\r\n\r\n if (elementNode) {\r\n templateNodes.forEach(node=> elementNode.append(node))\r\n }\r\n else{\r\n templateNodes.forEach(node=> $insertNodeToNearestRoot(node))\r\n }\r\n return true\r\n },COMMAND_PRIORITY_EDITOR)\r\n )\r\n })\r\n\r\n\r\n}\r\n\r\n\r\n/**\r\n * 显示模块模版选择\r\n * @returns \r\n */\r\nexport const showTemplateSelectDialog = function():Promise<string> {\r\n\r\n return new Promise<string>((resolve:any)=> {\r\n\r\n const selectOption = ref<TemplateType|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?.name);\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 = Templates.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"],"names":["Templates","registerDocTemplate","options","findIndex","item","name","console","warn","title","push","parser","DOMParser","useTemplate","editor","useLexicalComposer","findTemplateNodesByName","template","find","$generateNodesFromDOM","parseFromString","trim","Error","useMounted","mergeRegister","registerCommand","INSERT_TEMPLATE_COMMAND","selection","$getSelection","elementNode","$isNodeSelection","getNodes","templateNodes","forEach","node","append","$insertNodeToNearestRoot","COMMAND_PRIORITY_EDITOR","showTemplateSelectDialog","Promise","resolve","selectOption","ref","searchInputValue","handleCancelClick","dialogInstance","destroy","handleConfirmClick","value","clickHandle","Dialoger","customRender","class","width","onClose","body","templateListComponent","filter","indexOf","map","_createVNode","cover","onClick","ElInput","$event","Search","footer","_Fragment","ElButton","default","_createTextVNode"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const vue = require("vue");
|
|
3
|
+
const lexicalVue = require("lexical-vue");
|
|
4
|
+
const composables = require("./composables.js");
|
|
5
|
+
const commands = require("./commands.js");
|
|
6
|
+
const index = require("../../core/index.js");
|
|
7
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
8
|
+
__name: "index",
|
|
9
|
+
setup(__props) {
|
|
10
|
+
const editor = lexicalVue.useLexicalComposer();
|
|
11
|
+
index.registerDocEditorToolbarExtend({
|
|
12
|
+
icon: "richtext",
|
|
13
|
+
text: "模版",
|
|
14
|
+
action: async () => {
|
|
15
|
+
editor.dispatchCommand(commands.INSERT_TEMPLATE_COMMAND, await composables.showTemplateSelectDialog());
|
|
16
|
+
},
|
|
17
|
+
sort: 90
|
|
18
|
+
});
|
|
19
|
+
composables.useTemplate();
|
|
20
|
+
return (_ctx, _cache) => {
|
|
21
|
+
return null;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
module.exports = _sfc_main;
|
|
26
|
+
//# sourceMappingURL=index.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/TemplatePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister,mediaFileReader,isMimeType } from '@lexical/utils'\r\nimport { \r\n COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,$isParagraphNode,\r\n $getSelection,$createParagraphNode,$isNodeSelection, $getNodeByKey,\r\nElementNode\r\n} from 'lexical'\r\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, } from 'vue'\r\nimport { showTemplateSelectDialog,useTemplate } from \"./composables\"\r\nimport { INSERT_TEMPLATE_COMMAND } from \"./commands\"\r\nimport { $isImageTextGridNode } from '../GridPlugin'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { useElementBlockSelection } from '../../core'\r\nimport { ElLoading } from 'element-plus'\r\n\r\n\r\n // 编辑器\r\n const editor = useLexicalComposer()\r\n\r\n // 注册到工具条\r\n registerDocEditorToolbarExtend({\r\n icon:\"richtext\",\r\n text:\"模版\",\r\n action:async ()=>{\r\n editor.dispatchCommand(INSERT_TEMPLATE_COMMAND,await showTemplateSelectDialog())\r\n },\r\n sort:90\r\n } as ToolbarExtendPlugin)\r\n\r\n useTemplate();\r\n\r\n</script>\r\n\r\n<template></template>\r\n"],"names":["useLexicalComposer","registerDocEditorToolbarExtend","INSERT_TEMPLATE_COMMAND","showTemplateSelectDialog","useTemplate"],"mappings":";;;;;;;;;AAmBE,UAAM,SAASA,WAAAA;AAGgBC,yCAAA;AAAA,MAC7B,MAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAO,YAAU;AACf,eAAO,gBAAgBC,SAAAA,yBAAwB,MAAMC,YAAAA,yBAA0B,CAAA;AAAA,MACjF;AAAA,MACA,MAAK;AAAA,IAAA,CACiB;AAEZC,gBAAAA;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -92,7 +92,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
92
92
|
(vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(CONTENT_TYPE_DEFINES, (item) => {
|
|
93
93
|
return vue.createVNode(_component_el_dropdown_item, {
|
|
94
94
|
class: vue.normalizeClass({ active: contentType.value.label == item.label }),
|
|
95
|
-
disabled: disabled.value,
|
|
96
95
|
value: item.value,
|
|
97
96
|
onClick: ($event) => setContentType(item)
|
|
98
97
|
}, {
|
|
@@ -104,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
104
103
|
}, null, 8, _hoisted_2))
|
|
105
104
|
]),
|
|
106
105
|
_: 2
|
|
107
|
-
}, 1032, ["class", "
|
|
106
|
+
}, 1032, ["class", "value", "onClick"]);
|
|
108
107
|
}), 64))
|
|
109
108
|
]),
|
|
110
109
|
_: 1
|
package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $createParagraphNode,\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot\r\n} from 'lexical'\r\nimport { $patchStyleText,$setBlocksType } from '@lexical/selection'\r\nimport type { HeadingTagType } from '@lexical/rich-text'\r\nimport { $createHeadingNode,$isHeadingNode } from '@lexical/rich-text'\r\nimport { \r\n INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, \r\n} from '@lexical/list'\r\nimport { $findMatchingParent } from '@lexical/utils'\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 内容类型\r\nconst CONTENT_TYPE_DEFINES = [\r\n {value:\"paragraph\",label:\"正文\"},\r\n {value:\"bullet\",label:\"无序列表\"},\r\n {value:\"number\",label:\"有序列表\"},\r\n {value:\"h1\",label:\"标题 1\"},\r\n {value:\"h2\",label:\"标题 2\"},\r\n {value:\"h3\",label:\"标题 3\"}\r\n];\r\n\r\nconst disabled = ref(false)\r\n\r\nconst contentType = ref<any>(CONTENT_TYPE_DEFINES[0]);\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\r\n = 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 if (element === null){ element = anchorNode.getTopLevelElementOrThrow() }\r\n \r\n const elementKey = element.getKey()\r\n const elementDOM = editor.getElementByKey(elementKey)\r\n\r\n if (elementDOM !== null) {\r\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\r\n contentType.value = CONTENT_TYPE_DEFINES.find(item=>item.value == type) || CONTENT_TYPE_DEFINES[0]\r\n }\r\n disabled.value = false;\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 设置内容类型\r\nconst setContentType = (type:any)=>{\r\n\r\n contentType.value = type;\r\n \r\n editor.update(() => {\r\n\r\n const selection = $getSelection()\r\n \r\n if ($isRangeSelection(selection)){\r\n\r\n // 清空字体大小\r\n $patchStyleText(selection, { [\"font-size\"]:\"\" })\r\n \r\n if(type.value == \"paragraph\"){\r\n $setBlocksType(selection, () => $createParagraphNode())\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"check-list\"){\r\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\r\n }\r\n else{\r\n $setBlocksType(selection, () => {\r\n return $createHeadingNode(type.value as HeadingTagType)\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\nconst unregisterMergeListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n})\r\n\r\n\r\nonUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{contentType.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:contentType.label == item.label}\"
|
|
1
|
+
{"version":3,"file":"ContentStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $createParagraphNode,\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot\r\n} from 'lexical'\r\nimport { $patchStyleText,$setBlocksType } from '@lexical/selection'\r\nimport type { HeadingTagType } from '@lexical/rich-text'\r\nimport { $createHeadingNode,$isHeadingNode } from '@lexical/rich-text'\r\nimport { \r\n INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, \r\n} from '@lexical/list'\r\nimport { $findMatchingParent } from '@lexical/utils'\r\nimport { useLexicalComposer } from 'lexical-vue'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 内容类型\r\nconst CONTENT_TYPE_DEFINES = [\r\n {value:\"paragraph\",label:\"正文\"},\r\n {value:\"bullet\",label:\"无序列表\"},\r\n {value:\"number\",label:\"有序列表\"},\r\n {value:\"h1\",label:\"标题 1\"},\r\n {value:\"h2\",label:\"标题 2\"},\r\n {value:\"h3\",label:\"标题 3\"}\r\n];\r\n\r\nconst disabled = ref(false)\r\n\r\nconst contentType = ref<any>(CONTENT_TYPE_DEFINES[0]);\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\r\n = 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 if (element === null){ element = anchorNode.getTopLevelElementOrThrow() }\r\n \r\n const elementKey = element.getKey()\r\n const elementDOM = editor.getElementByKey(elementKey)\r\n\r\n if (elementDOM !== null) {\r\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\r\n contentType.value = CONTENT_TYPE_DEFINES.find(item=>item.value == type) || CONTENT_TYPE_DEFINES[0]\r\n }\r\n disabled.value = false;\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 设置内容类型\r\nconst setContentType = (type:any)=>{\r\n\r\n contentType.value = type;\r\n \r\n editor.update(() => {\r\n\r\n const selection = $getSelection()\r\n \r\n if ($isRangeSelection(selection)){\r\n\r\n // 清空字体大小\r\n $patchStyleText(selection, { [\"font-size\"]:\"\" })\r\n \r\n if(type.value == \"paragraph\"){\r\n $setBlocksType(selection, () => $createParagraphNode())\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"check-list\"){\r\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\r\n }\r\n else{\r\n $setBlocksType(selection, () => {\r\n return $createHeadingNode(type.value as HeadingTagType)\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\nconst unregisterMergeListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n})\r\n\r\n\r\nonUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{contentType.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:contentType.label == item.label}\" v-for=\"item in CONTENT_TYPE_DEFINES\" :value=\"item.value\" @click=\"setContentType(item)\">\r\n <template v-if=\"item.value.indexOf('h')!=0 \">\r\n <div class=\"mk-doc-editor-toolbar-content-style-item text\">{{item.label}}</div>\r\n </template>\r\n <template v-else>\r\n <div class=\"mk-doc-editor-toolbar-content-style-item\" v-html=\"`<${item.value}>${item.label}</${item.value}>`\"></div>\r\n </template>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","selection","$getSelection","$isRangeSelection","$findMatchingParent","$isRootOrShadowRoot","$isHeadingNode","$patchStyleText","$setBlocksType","$createParagraphNode","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","INSERT_CHECK_LIST_COMMAND","$createHeadingNode","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;AAiBA,UAAM,SAASA,WAAAA;AAGf,UAAM,uBAAuB;AAAA,MAC3B,EAAC,OAAM,aAAY,OAAM,KAAI;AAAA,MAC7B,EAAC,OAAM,UAAS,OAAM,OAAM;AAAA,MAC5B,EAAC,OAAM,UAAS,OAAM,OAAM;AAAA,MAC5B,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,MACxB,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,MACxB,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,IAAA;AAGpB,UAAA,WAAWC,QAAI,KAAK;AAE1B,UAAM,cAAcA,IAAA,IAAS,qBAAqB,CAAC,CAAC;AAKpD,aAAS,gBAAgB;AAEvB,YAAMC,aAAYC,QAAAA;AAEd,UAAAC,QAAAA,kBAAkBF,UAAS,GAAG;AAE1B,cAAA,aAAaA,WAAU,OAAO,QAAQ;AAExC,YAAA,UACE,WAAW,aAAa,SACtB,aACAG,MAAA,oBAAoB,YAAY,CAAC,MAAM;AACjC,gBAAA,SAAS,EAAE;AACV,iBAAA,WAAW,QAAQC,QAAA,oBAAoB,MAAM;AAAA,QAAA,CACrD;AAEP,YAAI,YAAY,MAAK;AAAE,oBAAU,WAAW;QAA4B;AAElE,cAAA,aAAa,QAAQ;AACrB,cAAA,aAAa,OAAO,gBAAgB,UAAU;AAEpD,YAAI,eAAe,MAAM;AACjB,gBAAA,OAAOC,wBAAe,OAAO,IAAI,QAAQ,OAAO,IAAI,QAAQ;AACtD,sBAAA,QAAQ,qBAAqB,KAAK,CAAA,SAAM,KAAK,SAAS,IAAI,KAAK,qBAAqB,CAAC;AAAA,QACnG;AACA,iBAAS,QAAQ;AAAA,MAAA,OAEf;AAEF,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF;AAGM,UAAA,iBAAiB,CAAC,SAAW;AAEjC,kBAAY,QAAQ;AAEpB,aAAO,OAAO,MAAM;AAEhB,cAAML,cAAYC,QAAAA;AAEd,YAAAC,QAAAA,kBAAkBF,WAAS,GAAE;AAG/BM,oBAAAA,gBAAgBN,aAAW,EAAE,CAAC,WAAW,GAAE,GAAI,CAAA;AAE5C,cAAA,KAAK,SAAS,aAAY;AACZO,sBAAAA,eAAAP,aAAW,MAAMQ,QAAA,qBAAA,CAAsB;AAAA,UAAA,WAEhD,KAAK,SAAS,UAAS;AACtB,mBAAA,gBAAgBC,oCAA+B,MAAS;AAAA,UAAA,WAEzD,KAAK,SAAS,UAAS;AACtB,mBAAA,gBAAgBC,kCAA6B,MAAS;AAAA,UAAA,WAEvD,KAAK,SAAS,cAAa;AAC1B,mBAAA,gBAAgBC,gCAA2B,MAAS;AAAA,UAAA,OAEzD;AACFJ,sBAAA,eAAeP,aAAW,MAAM;AACvB,qBAAAY,SAAA,mBAAmB,KAAK,KAAwB;AAAA,YAAA,CACxD;AAAA,UACH;AAAA,QACF;AAAA,MAAA,CACH;AAAA,IAAA;AAIHC,QAAAA,UAAU,MAAM;AAEhB,YAAM,0BAA0B,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACrE,oBAAA,KAAK,MAAM,cAAA,CAAe;AAAA,MAAA,CACvC;AAGWC,sBAAA,MAAM,yBAAyB;AAAA,IAAA,CAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -15,6 +15,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
15
15
|
},
|
|
16
16
|
setup(__props) {
|
|
17
17
|
const editor = lexicalVue.useLexicalComposer();
|
|
18
|
+
const { Modules } = composables.useModule();
|
|
18
19
|
const props = __props;
|
|
19
20
|
const iframeContentRef = vue.ref(null);
|
|
20
21
|
const iframeBody = vue.computed(() => {
|
|
@@ -35,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
35
36
|
const style = document.createElement("style");
|
|
36
37
|
style.setAttribute("type", "text/css");
|
|
37
38
|
style.innerHTML = [docEditor, docTheme].join("\r\n");
|
|
38
|
-
style.innerHTML +=
|
|
39
|
+
style.innerHTML += Modules.filter((item) => item.editorCss).map((item) => item.editorCss).join("\r\n");
|
|
39
40
|
doc.head.append(style);
|
|
40
41
|
props.js.split(",").filter((item) => !!item).forEach((path) => {
|
|
41
42
|
const script = document.createElement("script");
|
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 {
|
|
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 { useModule } from \"../ModulePlugin/composables\"\r\n\r\nconst editor = useLexicalComposer()\r\nconst { Modules } = useModule();\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 += Modules.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","useModule","ref","computed","nextTick","DocEditorCss","DocThemeCss","DEVICE_VIEW_MODE","$generateHtmlFromNodes","_a"],"mappings":";;;;;;;;;;;;;;;;AAUA,UAAM,SAASA,WAAAA;AACT,UAAA,EAAE,YAAYC,YAAAA;AAEpB,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,aAAa,QAAQ,OAAO,CAAA,SAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AACzF,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const DocEditorEditCss =
|
|
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\r\n/* 文本框可编辑文字 */\r\n.mk-doc__grid.mk-doc__text-grid :not(.mk-doc__grid){\r\n cursor: text;\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 img{\r\n position: relative;\r\n z-index: 1;\r\n}\r\n\r\n\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.mk-doc-active-grid-mark{\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/* 块选中 */\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";
|
|
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.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
|
|
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\\r\\n/* 文本框可编辑文字 */\\r\\n.mk-doc__grid.mk-doc__text-grid :not(.mk-doc__grid){\\r\\n cursor: text;\\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 img{\\r\\n position: relative;\\r\\n z-index: 1;\\r\\n}\\r\\n\\r\\n\\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.mk-doc-active-grid-mark{\\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/* 块选中 */\\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\""],"names":[],"mappings":";AAAA,MAAe,mBAAA;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-theme.css.js","sources":["../../../../../../src/components/basic/doc-editor/themes/doc-theme.css?raw"],"sourcesContent":["export default \"\\r\\n .mk-doc__ltr {\\r\\n text-align: left;\\r\\n}\\r\\n.mk-doc__rtl {\\r\\n text-align: right;\\r\\n}\\r\\n.mk-doc__paragraph {\\r\\n margin: 0;\\r\\n}\\r\\n.mk-doc__quote {\\r\\n margin: 0;\\r\\n margin-left: 20px;\\r\\n margin-bottom: 10px;\\r\\n font-size: 15px;\\r\\n color: rgb(101, 103, 107);\\r\\n border-left-color: rgb(206, 208, 212);\\r\\n border-left-width: 4px;\\r\\n border-left-style: solid;\\r\\n padding-left: 16px;\\r\\n}\\r\\n.mk-doc__quote .mk-doc__paragraph {\\r\\n text-indent: 0;\\r\\n\\r\\n}\\r\\n.mk-doc__h1 {\\r\\n font-size: 2rem;\\r\\n color: rgb(5, 5, 5);\\r\\n font-weight: 400;\\r\\n margin: 0;\\r\\n}\\r\\n.mk-doc__h2 {\\r\\n font-size: 1.5rem;\\r\\n color: rgb(101, 103, 107);\\r\\n font-weight: 700;\\r\\n margin: 0;\\r\\n text-transform: uppercase;\\r\\n}\\r\\n.mk-doc__h3 {\\r\\n font-size: 1.17rem;\\r\\n margin: 0;\\r\\n text-transform: uppercase;\\r\\n}\\r\\n.mk-doc__indent {\\r\\n --lexical-indent-base-value: 40px;\\r\\n}\\r\\n.mk-doc__textBold {\\r\\n font-weight: bold;\\r\\n}\\r\\n.mk-doc__textItalic {\\r\\n font-style: italic;\\r\\n}\\r\\n.mk-doc__textUnderline {\\r\\n text-decoration: underline;\\r\\n}\\r\\n.mk-doc__textStrikethrough {\\r\\n text-decoration: line-through;\\r\\n}\\r\\n.mk-doc__textUnderlineStrikethrough {\\r\\n text-decoration: underline line-through;\\r\\n}\\r\\n.mk-doc__textSubscript {\\r\\n font-size: 0.8em;\\r\\n vertical-align: sub !important;\\r\\n}\\r\\n.mk-doc__textSuperscript {\\r\\n font-size: 0.8em;\\r\\n vertical-align: super;\\r\\n}\\r\\n.mk-doc__textCode {\\r\\n background-color: rgb(240, 242, 245);\\r\\n padding: 1px 0.25rem;\\r\\n font-family: Menlo, Consolas, Monaco, monospace;\\r\\n font-size: 94%;\\r\\n}\\r\\n.mk-doc__hashtag {\\r\\n background-color: rgba(88, 144, 255, 0.15);\\r\\n border-bottom: 1px solid rgba(88, 144, 255, 0.3);\\r\\n}\\r\\n.mk-doc__link {\\r\\n color: rgb(33, 111, 219);\\r\\n text-decoration: none;\\r\\n}\\r\\n.mk-doc__link:hover {\\r\\n text-decoration: underline;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__code {\\r\\n background-color: rgb(240, 242, 245);\\r\\n font-family: Menlo, Consolas, Monaco, monospace;\\r\\n display: block;\\r\\n padding: 8px 8px 8px 52px;\\r\\n line-height: 1.53;\\r\\n font-size: 13px;\\r\\n margin: 0;\\r\\n margin-top: 8px;\\r\\n margin-bottom: 8px;\\r\\n overflow-x: auto;\\r\\n position: relative;\\r\\n tab-size: 2;\\r\\n}\\r\\n.mk-doc__code:before {\\r\\n content: attr(data-gutter);\\r\\n position: absolute;\\r\\n background-color: #eee;\\r\\n left: 0;\\r\\n top: 0;\\r\\n border-right: 1px solid #ccc;\\r\\n padding: 8px;\\r\\n color: #777;\\r\\n white-space: pre-wrap;\\r\\n text-align: right;\\r\\n min-width: 25px;\\r\\n}\\r\\n.mk-doc__table {\\r\\n border-collapse: collapse;\\r\\n border-spacing: 0;\\r\\n overflow-y: scroll;\\r\\n overflow-x: scroll;\\r\\n table-layout: fixed;\\r\\n width: max-content;\\r\\n margin: 30px 0;\\r\\n}\\r\\n.mk-doc__tableSelection *::selection {\\r\\n background-color: transparent;\\r\\n}\\r\\n.mk-doc__tableSelected {\\r\\n outline: 2px solid rgb(60, 132, 244);\\r\\n}\\r\\n.mk-doc__tableCell {\\r\\n border: 1px solid #bbb;\\r\\n width: 75px;\\r\\n min-width: 75px;\\r\\n vertical-align: top;\\r\\n text-align: start;\\r\\n padding: 6px 8px;\\r\\n position: relative;\\r\\n outline: none;\\r\\n}\\r\\n.mk-doc__tableCellSortedIndicator {\\r\\n display: block;\\r\\n opacity: 0.5;\\r\\n position: absolute;\\r\\n bottom: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 4px;\\r\\n background-color: #999;\\r\\n}\\r\\n.mk-doc__tableCellResizer {\\r\\n position: absolute;\\r\\n right: -4px;\\r\\n height: 100%;\\r\\n width: 8px;\\r\\n cursor: ew-resize;\\r\\n z-index: 10;\\r\\n top: 0;\\r\\n}\\r\\n.mk-doc__tableCellHeader {\\r\\n background-color: #f2f3f5;\\r\\n text-align: start;\\r\\n}\\r\\n.mk-doc__tableCellSelected {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n.mk-doc__tableCellPrimarySelected {\\r\\n border: 2px solid rgb(60, 132, 244);\\r\\n display: block;\\r\\n height: calc(100% - 2px);\\r\\n position: absolute;\\r\\n width: calc(100% - 2px);\\r\\n left: -1px;\\r\\n top: -1px;\\r\\n z-index: 2;\\r\\n}\\r\\n.mk-doc__tableCellEditing {\\r\\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.4);\\r\\n border-radius: 3px;\\r\\n}\\r\\n.mk-doc__tableAddColumns {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n width: 20px;\\r\\n background-color: #eee;\\r\\n height: 100%;\\r\\n right: -25px;\\r\\n animation: table-controls 0.2s ease;\\r\\n border: 0;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableAddColumns:after {\\r\\n background-image: url(../images/icons/plus.svg);\\r\\n background-size: contain;\\r\\n background-position: center;\\r\\n background-repeat: no-repeat;\\r\\n display: block;\\r\\n content: ' ';\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n opacity: 0.4;\\r\\n}\\r\\n.mk-doc__tableAddColumns:hover {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n.mk-doc__tableAddRows {\\r\\n position: absolute;\\r\\n bottom: -25px;\\r\\n width: calc(100% - 25px);\\r\\n background-color: #eee;\\r\\n height: 20px;\\r\\n left: 0;\\r\\n animation: table-controls 0.2s ease;\\r\\n border: 0;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableAddRows:after {\\r\\n background-image: url(../images/icons/plus.svg);\\r\\n background-size: contain;\\r\\n background-position: center;\\r\\n background-repeat: no-repeat;\\r\\n display: block;\\r\\n content: ' ';\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n opacity: 0.4;\\r\\n}\\r\\n.mk-doc__tableAddRows:hover {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n@keyframes table-controls {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n.mk-doc__tableCellResizeRuler {\\r\\n display: block;\\r\\n position: absolute;\\r\\n width: 1px;\\r\\n background-color: rgb(60, 132, 244);\\r\\n height: 100%;\\r\\n top: 0;\\r\\n}\\r\\n.mk-doc__tableCellActionButtonContainer {\\r\\n display: block;\\r\\n right: 5px;\\r\\n top: 6px;\\r\\n position: absolute;\\r\\n z-index: 4;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n}\\r\\n.mk-doc__tableCellActionButton {\\r\\n background-color: #eee;\\r\\n display: block;\\r\\n border: 0;\\r\\n border-radius: 20px;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n color: #222;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableCellActionButton:hover {\\r\\n background-color: #ddd;\\r\\n}\\r\\n.mk-doc__characterLimit {\\r\\n display: inline;\\r\\n background-color: #ffbbbb !important;\\r\\n}\\r\\n.mk-doc__ol1 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol2 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: upper-alpha;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol3 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: lower-alpha;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol4 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: upper-roman;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol5 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: lower-roman;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ul {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__listItem {\\r\\n margin: 0 32px;\\r\\n}\\r\\n.mk-doc__listItemChecked,\\r\\n.mk-doc__listItemUnchecked {\\r\\n position: relative;\\r\\n margin-left: 8px;\\r\\n margin-right: 8px;\\r\\n padding-left: 24px;\\r\\n padding-right: 24px;\\r\\n list-style-type: none;\\r\\n outline: none;\\r\\n}\\r\\n.mk-doc__listItemChecked {\\r\\n text-decoration: line-through;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:before,\\r\\n.mk-doc__listItemChecked:before {\\r\\n content: '';\\r\\n width: 16px;\\r\\n height: 16px;\\r\\n top: 2px;\\r\\n left: 0;\\r\\n cursor: pointer;\\r\\n display: block;\\r\\n background-size: cover;\\r\\n position: absolute;\\r\\n}\\r\\n.mk-doc__listItemUnchecked[dir='rtl']:before,\\r\\n.mk-doc__listItemChecked[dir='rtl']:before {\\r\\n left: auto;\\r\\n right: 0;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:focus:before,\\r\\n.mk-doc__listItemChecked:focus:before {\\r\\n box-shadow: 0 0 0 2px #a6cdfe;\\r\\n border-radius: 2px;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:before {\\r\\n border: 1px solid #999;\\r\\n border-radius: 2px;\\r\\n}\\r\\n.mk-doc__listItemChecked:before {\\r\\n border: 1px solid rgb(61, 135, 245);\\r\\n border-radius: 2px;\\r\\n background-color: #3d87f5;\\r\\n background-repeat: no-repeat;\\r\\n}\\r\\n.mk-doc__listItemChecked:after {\\r\\n content: '';\\r\\n cursor: pointer;\\r\\n border-color: #fff;\\r\\n border-style: solid;\\r\\n position: absolute;\\r\\n display: block;\\r\\n top: 6px;\\r\\n width: 3px;\\r\\n left: 7px;\\r\\n right: 7px;\\r\\n height: 6px;\\r\\n transform: rotate(45deg);\\r\\n border-width: 0 2px 2px 0;\\r\\n}\\r\\n.mk-doc__nestedListItem {\\r\\n list-style-type: none;\\r\\n}\\r\\n.mk-doc__nestedListItem:before,\\r\\n.mk-doc__nestedListItem:after {\\r\\n display: none;\\r\\n}\\r\\n.mk-doc__tokenComment {\\r\\n color: slategray;\\r\\n}\\r\\n.mk-doc__tokenPunctuation {\\r\\n color: #999;\\r\\n}\\r\\n.mk-doc__tokenProperty {\\r\\n color: #905;\\r\\n}\\r\\n.mk-doc__tokenSelector {\\r\\n color: #690;\\r\\n}\\r\\n.mk-doc__tokenOperator {\\r\\n color: #9a6e3a;\\r\\n}\\r\\n.mk-doc__tokenAttr {\\r\\n color: #07a;\\r\\n}\\r\\n.mk-doc__tokenVariable {\\r\\n color: #e90;\\r\\n}\\r\\n.mk-doc__tokenFunction {\\r\\n color: #dd4a68;\\r\\n}\\r\\n.mk-doc__mark {\\r\\n background: rgba(255, 212, 0, 0.14);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.3);\\r\\n padding-bottom: 2px;\\r\\n}\\r\\n.mk-doc__markOverlap {\\r\\n background: rgba(255, 212, 0, 0.3);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\\r\\n}\\r\\n.mk-doc__mark.selected {\\r\\n background: rgba(255, 212, 0, 0.5);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 1);\\r\\n}\\r\\n.mk-doc__markOverlap.selected {\\r\\n background: rgba(255, 212, 0, 0.7);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\\r\\n}\\r\\n.mk-doc__layoutContainer {\\r\\n display: grid;\\r\\n gap: 10px;\\r\\n margin: 10px 0;\\r\\n}\\r\\n.mk-doc__layoutItem {\\r\\n border: 1px dashed #ddd;\\r\\n padding: 8px 16px;\\r\\n}\\r\\n\\r\\n.mk-doc__image-text::after,\\r\\n.mk-doc__module-grid::after{\\r\\n content: \\\".\\\";\\r\\n font-size: 0;\\r\\n clear: both;\\r\\n display: block;\\r\\n}\\r\\n\\r\\n\""],"names":[],"mappings":";AAAA,MAAe,cAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
|
|
1
|
+
{"version":3,"file":"doc-theme.css.js","sources":["../../../../../../src/components/basic/doc-editor/themes/doc-theme.css?raw"],"sourcesContent":["export default \"\\r\\n .mk-doc__ltr {\\r\\n text-align: left;\\r\\n}\\r\\n.mk-doc__rtl {\\r\\n text-align: right;\\r\\n}\\r\\n.mk-doc__paragraph {\\r\\n margin: 0;\\r\\n}\\r\\n.mk-doc__quote {\\r\\n margin: 0;\\r\\n margin-left: 20px;\\r\\n margin-bottom: 10px;\\r\\n font-size: 15px;\\r\\n color: rgb(101, 103, 107);\\r\\n border-left-color: rgb(206, 208, 212);\\r\\n border-left-width: 4px;\\r\\n border-left-style: solid;\\r\\n padding-left: 16px;\\r\\n}\\r\\n.mk-doc__quote .mk-doc__paragraph {\\r\\n text-indent: 0;\\r\\n\\r\\n}\\r\\n.mk-doc__h1 {\\r\\n font-size: 2rem;\\r\\n color: rgb(5, 5, 5);\\r\\n font-weight: 400;\\r\\n margin: 0;\\r\\n}\\r\\n.mk-doc__h2 {\\r\\n font-size: 1.5rem;\\r\\n color: rgb(101, 103, 107);\\r\\n font-weight: 700;\\r\\n margin: 0;\\r\\n text-transform: uppercase;\\r\\n}\\r\\n.mk-doc__h3 {\\r\\n font-size: 1.17rem;\\r\\n margin: 0;\\r\\n text-transform: uppercase;\\r\\n}\\r\\n.mk-doc__indent {\\r\\n --lexical-indent-base-value: 40px;\\r\\n}\\r\\n.mk-doc__textBold {\\r\\n font-weight: bold;\\r\\n}\\r\\n.mk-doc__textItalic {\\r\\n font-style: italic;\\r\\n}\\r\\n.mk-doc__textUnderline {\\r\\n text-decoration: underline;\\r\\n}\\r\\n.mk-doc__textStrikethrough {\\r\\n text-decoration: line-through;\\r\\n}\\r\\n.mk-doc__textUnderlineStrikethrough {\\r\\n text-decoration: underline line-through;\\r\\n}\\r\\n.mk-doc__textSubscript {\\r\\n font-size: 0.8em;\\r\\n vertical-align: sub !important;\\r\\n}\\r\\n.mk-doc__textSuperscript {\\r\\n font-size: 0.8em;\\r\\n vertical-align: super;\\r\\n}\\r\\n.mk-doc__textCode {\\r\\n background-color: rgb(240, 242, 245);\\r\\n padding: 1px 0.25rem;\\r\\n font-family: Menlo, Consolas, Monaco, monospace;\\r\\n font-size: 94%;\\r\\n}\\r\\n.mk-doc__hashtag {\\r\\n background-color: rgba(88, 144, 255, 0.15);\\r\\n border-bottom: 1px solid rgba(88, 144, 255, 0.3);\\r\\n}\\r\\n.mk-doc__link {\\r\\n color: rgb(33, 111, 219);\\r\\n text-decoration: none;\\r\\n}\\r\\n.mk-doc__link:hover {\\r\\n text-decoration: underline;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__code {\\r\\n background-color: rgb(240, 242, 245);\\r\\n font-family: Menlo, Consolas, Monaco, monospace;\\r\\n display: block;\\r\\n padding: 8px 8px 8px 52px;\\r\\n line-height: 1.53;\\r\\n font-size: 13px;\\r\\n margin: 0;\\r\\n margin-top: 8px;\\r\\n margin-bottom: 8px;\\r\\n overflow-x: auto;\\r\\n position: relative;\\r\\n tab-size: 2;\\r\\n}\\r\\n.mk-doc__code:before {\\r\\n content: attr(data-gutter);\\r\\n position: absolute;\\r\\n background-color: #eee;\\r\\n left: 0;\\r\\n top: 0;\\r\\n border-right: 1px solid #ccc;\\r\\n padding: 8px;\\r\\n color: #777;\\r\\n white-space: pre-wrap;\\r\\n text-align: right;\\r\\n min-width: 25px;\\r\\n}\\r\\n.mk-doc__table {\\r\\n border-collapse: collapse;\\r\\n border-spacing: 0;\\r\\n overflow-y: scroll;\\r\\n overflow-x: scroll;\\r\\n table-layout: fixed;\\r\\n width: max-content;\\r\\n margin: 30px 0;\\r\\n}\\r\\n.mk-doc__tableSelection *::selection {\\r\\n background-color: transparent;\\r\\n}\\r\\n.mk-doc__tableSelected {\\r\\n outline: 2px solid rgb(60, 132, 244);\\r\\n}\\r\\n.mk-doc__tableCell {\\r\\n border: 1px solid #bbb;\\r\\n width: 75px;\\r\\n min-width: 75px;\\r\\n vertical-align: top;\\r\\n text-align: start;\\r\\n padding: 6px 8px;\\r\\n position: relative;\\r\\n outline: none;\\r\\n}\\r\\n.mk-doc__tableCellSortedIndicator {\\r\\n display: block;\\r\\n opacity: 0.5;\\r\\n position: absolute;\\r\\n bottom: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 4px;\\r\\n background-color: #999;\\r\\n}\\r\\n.mk-doc__tableCellResizer {\\r\\n position: absolute;\\r\\n right: -4px;\\r\\n height: 100%;\\r\\n width: 8px;\\r\\n cursor: ew-resize;\\r\\n z-index: 10;\\r\\n top: 0;\\r\\n}\\r\\n.mk-doc__tableCellHeader {\\r\\n background-color: #f2f3f5;\\r\\n text-align: start;\\r\\n}\\r\\n.mk-doc__tableCellSelected {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n.mk-doc__tableCellPrimarySelected {\\r\\n border: 2px solid rgb(60, 132, 244);\\r\\n display: block;\\r\\n height: calc(100% - 2px);\\r\\n position: absolute;\\r\\n width: calc(100% - 2px);\\r\\n left: -1px;\\r\\n top: -1px;\\r\\n z-index: 2;\\r\\n}\\r\\n.mk-doc__tableCellEditing {\\r\\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.4);\\r\\n border-radius: 3px;\\r\\n}\\r\\n.mk-doc__tableAddColumns {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n width: 20px;\\r\\n background-color: #eee;\\r\\n height: 100%;\\r\\n right: -25px;\\r\\n animation: table-controls 0.2s ease;\\r\\n border: 0;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableAddColumns:after {\\r\\n background-image: url(../images/icons/plus.svg);\\r\\n background-size: contain;\\r\\n background-position: center;\\r\\n background-repeat: no-repeat;\\r\\n display: block;\\r\\n content: ' ';\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n opacity: 0.4;\\r\\n}\\r\\n.mk-doc__tableAddColumns:hover {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n.mk-doc__tableAddRows {\\r\\n position: absolute;\\r\\n bottom: -25px;\\r\\n width: calc(100% - 25px);\\r\\n background-color: #eee;\\r\\n height: 20px;\\r\\n left: 0;\\r\\n animation: table-controls 0.2s ease;\\r\\n border: 0;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableAddRows:after {\\r\\n background-image: url(../images/icons/plus.svg);\\r\\n background-size: contain;\\r\\n background-position: center;\\r\\n background-repeat: no-repeat;\\r\\n display: block;\\r\\n content: ' ';\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n opacity: 0.4;\\r\\n}\\r\\n.mk-doc__tableAddRows:hover {\\r\\n background-color: #c9dbf0;\\r\\n}\\r\\n@keyframes table-controls {\\r\\n 0% {\\r\\n opacity: 0;\\r\\n }\\r\\n 100% {\\r\\n opacity: 1;\\r\\n }\\r\\n}\\r\\n.mk-doc__tableCellResizeRuler {\\r\\n display: block;\\r\\n position: absolute;\\r\\n width: 1px;\\r\\n background-color: rgb(60, 132, 244);\\r\\n height: 100%;\\r\\n top: 0;\\r\\n}\\r\\n.mk-doc__tableCellActionButtonContainer {\\r\\n display: block;\\r\\n right: 5px;\\r\\n top: 6px;\\r\\n position: absolute;\\r\\n z-index: 4;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n}\\r\\n.mk-doc__tableCellActionButton {\\r\\n background-color: #eee;\\r\\n display: block;\\r\\n border: 0;\\r\\n border-radius: 20px;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n color: #222;\\r\\n cursor: pointer;\\r\\n}\\r\\n.mk-doc__tableCellActionButton:hover {\\r\\n background-color: #ddd;\\r\\n}\\r\\n.mk-doc__characterLimit {\\r\\n display: inline;\\r\\n background-color: #ffbbbb !important;\\r\\n}\\r\\n.mk-doc__ol1 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol2 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: upper-alpha;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol3 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: lower-alpha;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol4 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: upper-roman;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ol5 {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n list-style-type: lower-roman;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__ul {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n /* list-style-position: inside; */\\r\\n}\\r\\n.mk-doc__listItem {\\r\\n margin: 0 32px;\\r\\n}\\r\\n.mk-doc__listItemChecked,\\r\\n.mk-doc__listItemUnchecked {\\r\\n position: relative;\\r\\n margin-left: 8px;\\r\\n margin-right: 8px;\\r\\n padding-left: 24px;\\r\\n padding-right: 24px;\\r\\n list-style-type: none;\\r\\n outline: none;\\r\\n}\\r\\n.mk-doc__listItemChecked {\\r\\n text-decoration: line-through;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:before,\\r\\n.mk-doc__listItemChecked:before {\\r\\n content: '';\\r\\n width: 16px;\\r\\n height: 16px;\\r\\n top: 2px;\\r\\n left: 0;\\r\\n cursor: pointer;\\r\\n display: block;\\r\\n background-size: cover;\\r\\n position: absolute;\\r\\n}\\r\\n.mk-doc__listItemUnchecked[dir='rtl']:before,\\r\\n.mk-doc__listItemChecked[dir='rtl']:before {\\r\\n left: auto;\\r\\n right: 0;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:focus:before,\\r\\n.mk-doc__listItemChecked:focus:before {\\r\\n box-shadow: 0 0 0 2px #a6cdfe;\\r\\n border-radius: 2px;\\r\\n}\\r\\n.mk-doc__listItemUnchecked:before {\\r\\n border: 1px solid #999;\\r\\n border-radius: 2px;\\r\\n}\\r\\n.mk-doc__listItemChecked:before {\\r\\n border: 1px solid rgb(61, 135, 245);\\r\\n border-radius: 2px;\\r\\n background-color: #3d87f5;\\r\\n background-repeat: no-repeat;\\r\\n}\\r\\n.mk-doc__listItemChecked:after {\\r\\n content: '';\\r\\n cursor: pointer;\\r\\n border-color: #fff;\\r\\n border-style: solid;\\r\\n position: absolute;\\r\\n display: block;\\r\\n top: 6px;\\r\\n width: 3px;\\r\\n left: 7px;\\r\\n right: 7px;\\r\\n height: 6px;\\r\\n transform: rotate(45deg);\\r\\n border-width: 0 2px 2px 0;\\r\\n}\\r\\n.mk-doc__nestedListItem {\\r\\n list-style-type: none;\\r\\n}\\r\\n.mk-doc__nestedListItem:before,\\r\\n.mk-doc__nestedListItem:after {\\r\\n display: none;\\r\\n}\\r\\n.mk-doc__tokenComment {\\r\\n color: slategray;\\r\\n}\\r\\n.mk-doc__tokenPunctuation {\\r\\n color: #999;\\r\\n}\\r\\n.mk-doc__tokenProperty {\\r\\n color: #905;\\r\\n}\\r\\n.mk-doc__tokenSelector {\\r\\n color: #690;\\r\\n}\\r\\n.mk-doc__tokenOperator {\\r\\n color: #9a6e3a;\\r\\n}\\r\\n.mk-doc__tokenAttr {\\r\\n color: #07a;\\r\\n}\\r\\n.mk-doc__tokenVariable {\\r\\n color: #e90;\\r\\n}\\r\\n.mk-doc__tokenFunction {\\r\\n color: #dd4a68;\\r\\n}\\r\\n.mk-doc__mark {\\r\\n background: rgba(255, 212, 0, 0.14);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.3);\\r\\n padding-bottom: 2px;\\r\\n}\\r\\n.mk-doc__markOverlap {\\r\\n background: rgba(255, 212, 0, 0.3);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\\r\\n}\\r\\n.mk-doc__mark.selected {\\r\\n background: rgba(255, 212, 0, 0.5);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 1);\\r\\n}\\r\\n.mk-doc__markOverlap.selected {\\r\\n background: rgba(255, 212, 0, 0.7);\\r\\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\\r\\n}\\r\\n.mk-doc__layoutContainer {\\r\\n display: grid;\\r\\n gap: 10px;\\r\\n margin: 10px 0;\\r\\n}\\r\\n.mk-doc__layoutItem {\\r\\n border: 1px dashed #ddd;\\r\\n padding: 8px 16px;\\r\\n}\\r\\n\\r\\n.mk-doc__image-text::after{\\r\\n content: \\\".\\\";\\r\\n font-size: 0;\\r\\n clear: both;\\r\\n display: block;\\r\\n}\\r\\n\\r\\n\""],"names":[],"mappings":";AAAA,MAAe,cAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -148,6 +148,7 @@ const uploadImageOptions = require("./components/basic/upload-file/ui/upload-ima
|
|
|
148
148
|
const uploadFileOptions = require("./components/basic/upload-file/ui/upload-file/upload-file-options.js");
|
|
149
149
|
const uploadVideoOptions = require("./components/basic/upload-file/ui/upload-video/upload-video-options.js");
|
|
150
150
|
const composables = require("./components/basic/doc-editor/plugins/ModulePlugin/composables.js");
|
|
151
|
+
const composables$1 = require("./components/basic/doc-editor/plugins/TemplatePlugin/composables.js");
|
|
151
152
|
const imageCropperApi = require("./components/basic/image-cropper/image-cropper-api.js");
|
|
152
153
|
const imageCropperContentOptions = require("./components/basic/image-cropper/image-cropper-content-options.js");
|
|
153
154
|
const dataFormOptions = require("./components/data-model/data-form/data-form-options.js");
|
|
@@ -341,6 +342,7 @@ exports.uploadFileUiProps = uploadFileOptions.uploadFileUiProps;
|
|
|
341
342
|
exports.uploadVideoEmits = uploadVideoOptions.uploadVideoEmits;
|
|
342
343
|
exports.uploadVideoProps = uploadVideoOptions.uploadVideoProps;
|
|
343
344
|
exports.registerDocModule = composables.registerDocModule;
|
|
345
|
+
exports.registerDocTemplate = composables$1.registerDocTemplate;
|
|
344
346
|
exports.ImageCropper = imageCropperApi.ImageCropper;
|
|
345
347
|
exports.imageCropperContentEmits = imageCropperContentOptions.imageCropperContentEmits;
|
|
346
348
|
exports.imageCropperContentProps = imageCropperContentOptions.imageCropperContentProps;
|