@maketribe/ms-app 3.2.31 → 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/data-tree-select/data-tree-select-options.js +1 -1
- package/dist/cjs/components/basic/data-tree-select/data-tree-select-options.js.map +1 -1
- 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 +10 -3
- 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 +41 -43
- 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 +44 -22
- 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/composables/part-extensions.js +0 -1
- package/dist/cjs/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +0 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.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 +6 -6
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/index.js +2 -6
- package/dist/cjs/modules/ms/components/rich-text-editor/index.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js +17 -0
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js +12 -8
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js.map +1 -1
- package/dist/cjs/modules/ms/index.js +1 -0
- package/dist/cjs/modules/ms/index.js.map +1 -1
- package/dist/esm/components/basic/data-tree-select/data-tree-select-options.js +1 -1
- package/dist/esm/components/basic/data-tree-select/data-tree-select-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 +12 -5
- 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 +41 -43
- 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 +44 -22
- 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/composables/part-extensions.js +0 -1
- package/dist/esm/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +0 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.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 +6 -6
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/index.js +2 -5
- package/dist/esm/modules/ms/components/rich-text-editor/index.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js +17 -0
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js +12 -8
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js.map +1 -1
- package/dist/esm/modules/ms/index.js +1 -0
- package/dist/esm/modules/ms/index.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 +4 -0
- 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/editor.vue.d.ts +9 -0
- package/dist/types/components/basic/doc-editor/index.d.ts +21 -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 +39 -0
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor-options.d.ts +18 -0
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor.d.ts +41 -0
- package/package.json +4 -4
- 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
|
@@ -1,94 +1,79 @@
|
|
|
1
1
|
import { mergeRegister } from "@lexical/utils";
|
|
2
|
-
import { createCommand, CLICK_COMMAND, COMMAND_PRIORITY_LOW } from "lexical";
|
|
2
|
+
import { createCommand, CLICK_COMMAND, COMMAND_PRIORITY_LOW, SELECTION_CHANGE_COMMAND, $getSelection, $isNodeSelection, $createNodeSelection, $setSelection } from "lexical";
|
|
3
3
|
import { useLexicalComposer, useMounted } from "lexical-vue";
|
|
4
|
-
import {
|
|
5
|
-
import { isNodeSelected, clearSelection, setSelected } from "./utils.js";
|
|
4
|
+
import { unref } from "vue";
|
|
6
5
|
const SELECTED_ELEMENTBLOCK_COMMAND = createCommand("SELECTED_ELEMENTBLOCK_COMMAND");
|
|
7
6
|
const REMOVE_ELEMENTBLOCK_COMMAND = createCommand("REMOVE_ELEMENTBLOCK_COMMAND");
|
|
8
7
|
const UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND = createCommand("UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND");
|
|
8
|
+
const clearSelection = (editor) => {
|
|
9
|
+
return new Promise((resolove) => {
|
|
10
|
+
editor.update(() => {
|
|
11
|
+
const selection = $getSelection();
|
|
12
|
+
if ($isNodeSelection(selection) && selection) {
|
|
13
|
+
selection.clear();
|
|
14
|
+
}
|
|
15
|
+
resolove(void 0);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
const setSelected = (editor, selected, key) => {
|
|
20
|
+
return new Promise((resolove) => {
|
|
21
|
+
editor.update(() => {
|
|
22
|
+
let selection = $getSelection();
|
|
23
|
+
if (!$isNodeSelection(selection)) {
|
|
24
|
+
selection = $createNodeSelection();
|
|
25
|
+
$setSelection(selection);
|
|
26
|
+
}
|
|
27
|
+
if ($isNodeSelection(selection)) {
|
|
28
|
+
selection.add(unref(key));
|
|
29
|
+
}
|
|
30
|
+
resolove(void 0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const setElementBlockSelection = async (editor, nodeKey) => {
|
|
35
|
+
await clearSelection(editor);
|
|
36
|
+
await setSelected(editor, true, nodeKey);
|
|
37
|
+
};
|
|
9
38
|
const useElementBlockSelection = (func, toolsbars) => {
|
|
10
39
|
const editor = useLexicalComposer();
|
|
11
|
-
const isSelected = ref(false);
|
|
12
|
-
const curSelectKey = ref(null);
|
|
13
|
-
const curSelectEl = ref(null);
|
|
14
|
-
const curSelectPos = ref(null);
|
|
15
|
-
const updateActiveBox = (el) => {
|
|
16
|
-
if (el) {
|
|
17
|
-
const selectRect = el.getBoundingClientRect();
|
|
18
|
-
curSelectPos.value = {
|
|
19
|
-
top: `${selectRect.y}px`,
|
|
20
|
-
left: `${selectRect.x}px`,
|
|
21
|
-
width: `${selectRect.width}px`,
|
|
22
|
-
height: `${selectRect.height}px`
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const updateActiveViewState = (el) => {
|
|
27
|
-
if (el) {
|
|
28
|
-
updateActiveBox(el);
|
|
29
|
-
editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, {
|
|
30
|
-
element: curSelectEl.value,
|
|
31
|
-
toolsbars
|
|
32
|
-
});
|
|
33
|
-
} else {
|
|
34
|
-
curSelectEl.value = null;
|
|
35
|
-
curSelectKey.value = null;
|
|
36
|
-
curSelectPos.value = null;
|
|
37
|
-
editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const setSelection = async (nodeKey, el) => {
|
|
41
|
-
if (isSelected.value) {
|
|
42
|
-
isSelected.value = false;
|
|
43
|
-
await clearSelection(editor);
|
|
44
|
-
}
|
|
45
|
-
await new Promise((reslove) => setTimeout(reslove, 10));
|
|
46
|
-
await setSelected(editor, true, nodeKey);
|
|
47
|
-
curSelectEl.value = el == null ? editor.getElementByKey(nodeKey) : el;
|
|
48
|
-
curSelectKey.value = nodeKey;
|
|
49
|
-
isSelected.value = isNodeSelected(editor, nodeKey);
|
|
50
|
-
setTimeout(() => updateActiveBox(curSelectEl.value), 500);
|
|
51
|
-
setTimeout(() => updateActiveBox(curSelectEl.value), 1e3);
|
|
52
|
-
};
|
|
53
|
-
watch(isSelected, (state) => {
|
|
54
|
-
if (state) {
|
|
55
|
-
updateActiveViewState(state ? curSelectEl.value : null);
|
|
56
|
-
} else {
|
|
57
|
-
updateActiveViewState(null);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
40
|
useMounted(() => {
|
|
61
41
|
return mergeRegister(
|
|
62
|
-
// 更新选中状态
|
|
63
|
-
editor.registerUpdateListener(() => {
|
|
64
|
-
isSelected.value = isNodeSelected(editor, curSelectKey.value);
|
|
65
|
-
setTimeout(() => updateActiveBox(curSelectEl.value), 10);
|
|
66
|
-
}),
|
|
67
42
|
// 点击选中
|
|
68
43
|
editor.registerCommand(CLICK_COMMAND, (event) => {
|
|
69
44
|
const el = func(event.target);
|
|
70
45
|
const nodeKey = el == null ? void 0 : el.getAttribute("node-key");
|
|
71
46
|
if (nodeKey != null) {
|
|
72
47
|
event.preventDefault();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
48
|
+
setElementBlockSelection(editor, nodeKey);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}, COMMAND_PRIORITY_LOW),
|
|
53
|
+
// 选中的话
|
|
54
|
+
editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {
|
|
55
|
+
const selection = $getSelection();
|
|
56
|
+
const node = $isNodeSelection(selection) ? selection == null ? void 0 : selection.getNodes()[0] : null;
|
|
57
|
+
const nodeKey = node == null ? void 0 : node.__key;
|
|
58
|
+
const el = nodeKey ? editor.getElementByKey(nodeKey) : null;
|
|
59
|
+
if (nodeKey && el && func(el)) {
|
|
60
|
+
editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, {
|
|
61
|
+
nodeKey,
|
|
62
|
+
toolsbars
|
|
63
|
+
});
|
|
80
64
|
return true;
|
|
81
65
|
}
|
|
66
|
+
editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);
|
|
82
67
|
return false;
|
|
83
68
|
}, COMMAND_PRIORITY_LOW)
|
|
84
69
|
);
|
|
85
70
|
});
|
|
86
|
-
return { isSelected, setSelection, curSelectKey, curSelectPos };
|
|
87
71
|
};
|
|
88
72
|
export {
|
|
89
73
|
REMOVE_ELEMENTBLOCK_COMMAND,
|
|
90
74
|
SELECTED_ELEMENTBLOCK_COMMAND,
|
|
91
75
|
UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND,
|
|
76
|
+
setElementBlockSelection,
|
|
92
77
|
useElementBlockSelection
|
|
93
78
|
};
|
|
94
79
|
//# sourceMappingURL=element-block.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-block.js","sources":["../../../../../../src/components/basic/doc-editor/core/element-block.ts"],"sourcesContent":["\r\n\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_LOW,CLICK_COMMAND, LexicalCommand, createCommand,
|
|
1
|
+
{"version":3,"file":"element-block.js","sources":["../../../../../../src/components/basic/doc-editor/core/element-block.ts"],"sourcesContent":["\r\n\r\nimport { mergeRegister } from '@lexical/utils'\r\n\r\nimport {\r\n $createNodeSelection,\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $setSelection,\r\n COMMAND_PRIORITY_LOW,CLICK_COMMAND, LexicalCommand, createCommand, NodeKey, LexicalEditor,\r\n SELECTION_CHANGE_COMMAND\r\n} from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { ref,watch,unref } from 'vue'\r\n\r\n/**\r\n * toolsbar的函数\r\n */\r\nexport type SelectElementBlockToolsbarFunction = (nodeKey?:NodeKey | string)=>Array<any>|null;\r\n\r\n/**\r\n * 元素抗选中类型\r\n */\r\nexport type SelectElementBlocktEventType = {\r\n nodeKey:NodeKey|string,\r\n toolsbars:Array<any>|SelectElementBlockToolsbarFunction\r\n}\r\n\r\n/**\r\n * 选中元素快\r\n */\r\nexport const SELECTED_ELEMENTBLOCK_COMMAND: LexicalCommand<SelectElementBlocktEventType|null> = createCommand('SELECTED_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 移除元素快\r\n */\r\nexport const REMOVE_ELEMENTBLOCK_COMMAND: LexicalCommand<undefined|null> = createCommand('REMOVE_ELEMENTBLOCK_COMMAND')\r\n\r\n/**\r\n * 更新模块工具条位置信息\r\n */\r\nexport const UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND: LexicalCommand<undefined|null> = createCommand('UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND')\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type SelectExistFunc = (el:HTMLElement)=>HTMLElement|null\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type ElementSelectionHandle = (el:HTMLElement)=>undefined\r\n\r\n\r\n\r\n// isNodeSelected \r\nconst isNodeSelected = function (editor: LexicalEditor, key: NodeKey): boolean {\r\n return editor.getEditorState().read(() => {\r\n const node = $getNodeByKey(key)\r\n if (node === null)\r\n return false\r\n return node.isSelected()\r\n })\r\n}\r\n\r\n// 取消选中\r\nconst clearSelection = (editor: LexicalEditor):Promise<undefined> => {\r\n return new Promise(resolove=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if ($isNodeSelection(selection) && selection){\r\n selection.clear();\r\n }\r\n resolove(undefined)\r\n })\r\n })\r\n}\r\n\r\n// 设置选中\r\nconst setSelected = (editor: LexicalEditor,selected: boolean,key:string):Promise<undefined> => {\r\n\r\n return new Promise(resolove=>{\r\n editor.update(() => {\r\n let selection = $getSelection()\r\n \r\n if (!$isNodeSelection(selection)) {\r\n selection = $createNodeSelection()\r\n $setSelection(selection)\r\n }\r\n if ($isNodeSelection(selection)) {\r\n if (selected)\r\n selection.add(unref(key))\r\n else\r\n selection.delete(unref(key))\r\n }\r\n resolove(undefined)\r\n })\r\n })\r\n \r\n}\r\n\r\n// 设置选中\r\nexport const setElementBlockSelection = async (editor:LexicalEditor,nodeKey:string)=>{\r\n await clearSelection(editor);\r\n await setSelected(editor,true,nodeKey);\r\n}\r\n\r\n/**\r\n * 使用元素块选中\r\n */\r\nexport const useElementBlockSelection = (func:SelectExistFunc,toolsbars:Array<any>|SelectElementBlockToolsbarFunction)=>{\r\n\r\n const editor = useLexicalComposer()\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 点击选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n const el = func(event.target as HTMLElement);\r\n const nodeKey = el?.getAttribute(\"node-key\");\r\n\r\n // 不为null的话则视为点击选中\r\n if(nodeKey != null){\r\n \r\n event.preventDefault();\r\n\r\n // 暂时不支持使用 shift 建 多选\r\n // if (!event.shiftKey) { \r\n // // 先取消\r\n // clearSelection(editor)\r\n // }\r\n setElementBlockSelection(editor,nodeKey);\r\n return true;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW),\r\n // 选中的话\r\n editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {\r\n const selection = $getSelection();\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n const nodeKey = node?.__key;\r\n const el = nodeKey ? editor.getElementByKey(nodeKey) : null;\r\n\r\n if(nodeKey && el && func(el)){\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,{ \r\n nodeKey:nodeKey, toolsbars:toolsbars\r\n });\r\n return true;\r\n }\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND,null);\r\n return false;\r\n },COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n}\r\n"],"names":[],"mappings":";;;;AAgCa,MAAA,gCAAmF,cAAc,+BAA+B;AAKhI,MAAA,8BAA8D,cAAc,6BAA6B;AAKzG,MAAA,0CAA0E,cAAc,yCAAyC;AAyB9I,MAAM,iBAAiB,CAAC,WAA6C;AAC5D,SAAA,IAAI,QAAQ,CAAU,aAAA;AAC3B,WAAO,OAAO,MAAM;AAClB,YAAM,YAAY;AACd,UAAA,iBAAiB,SAAS,KAAK,WAAU;AAC3C,kBAAU,MAAM;AAAA,MAClB;AACA,eAAS,MAAS;AAAA,IAAA,CACnB;AAAA,EAAA,CACF;AACH;AAGA,MAAM,cAAc,CAAC,QAAsB,UAAkB,QAAkC;AAEtF,SAAA,IAAI,QAAQ,CAAU,aAAA;AAC3B,WAAO,OAAO,MAAM;AAClB,UAAI,YAAY;AAEZ,UAAA,CAAC,iBAAiB,SAAS,GAAG;AAChC,oBAAY,qBAAqB;AACjC,sBAAc,SAAS;AAAA,MACzB;AACI,UAAA,iBAAiB,SAAS,GAAG;AAEnB,kBAAA,IAAI,MAAM,GAAG,CAAC;AAAA,MAG5B;AACA,eAAS,MAAS;AAAA,IAAA,CACnB;AAAA,EAAA,CACF;AAEH;AAGa,MAAA,2BAA2B,OAAO,QAAqB,YAAiB;AACnF,QAAM,eAAe,MAAM;AACrB,QAAA,YAAY,QAAO,MAAK,OAAO;AACvC;AAKa,MAAA,2BAA2B,CAAC,MAAqB,cAA0D;AAEtH,QAAM,SAAS;AAGf,aAAW,MAAI;AAEN,WAAA;AAAA;AAAA,MAEL,OAAO,gBAA4B,eAAc,CAAC,UAAU;AAEpD,cAAA,KAAK,KAAK,MAAM,MAAqB;AACrC,cAAA,UAAU,yBAAI,aAAa;AAGjC,YAAG,WAAW,MAAK;AAEjB,gBAAM,eAAe;AAOrB,mCAAyB,QAAO,OAAO;AAChC,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,SACN,oBAAoB;AAAA;AAAA,MAEvB,OAAO,gBAAgB,0BAA0B,MAAM;AACrD,cAAM,YAAY;AACZ,cAAA,OAAO,iBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AACtE,cAAM,UAAU,6BAAM;AACtB,cAAM,KAAK,UAAU,OAAO,gBAAgB,OAAO,IAAI;AAEvD,YAAG,WAAW,MAAM,KAAK,EAAE,GAAE;AAC3B,iBAAO,gBAAgB,+BAA8B;AAAA,YACnD;AAAA,YAAiB;AAAA,UAAA,CAClB;AACM,iBAAA;AAAA,QACT;AACO,eAAA,gBAAgB,+BAA8B,IAAI;AAClD,eAAA;AAAA,SACP,oBAAoB;AAAA,IAAA;AAAA,EACxB,CACD;AAEH;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ref, reactive } from "vue";
|
|
2
|
-
import { REMOVE_ELEMENTBLOCK_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, useElementBlockSelection } from "./element-block.js";
|
|
3
|
-
import "lexical";
|
|
2
|
+
import { REMOVE_ELEMENTBLOCK_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, setElementBlockSelection, useElementBlockSelection } from "./element-block.js";
|
|
4
3
|
const DEVICE_VIEW_MODE = ref("pc");
|
|
5
4
|
const ToolbarExtendPlugins = reactive([]);
|
|
6
5
|
const registerDocEditorToolbarExtend = function(options) {
|
|
@@ -14,6 +13,7 @@ export {
|
|
|
14
13
|
ToolbarExtendPlugins,
|
|
15
14
|
UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND,
|
|
16
15
|
registerDocEditorToolbarExtend,
|
|
16
|
+
setElementBlockSelection,
|
|
17
17
|
useElementBlockSelection
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\nexport * from \"./element-block\"\r\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\nexport * from \"./element-block\"\r\n\r\n/**\r\n * 设备显示模式\r\n */\r\nexport const DEVICE_VIEW_MODE = ref<'pc' | 'mobile'>(\"pc\")\r\n\r\n/**\r\n * 工具条扩展\r\n */\r\nexport type ToolbarExtendPlugin = {\r\n icon: string;\r\n text:string,\r\n action:Function,\r\n sort:number\r\n};\r\n\r\n/**\r\n * 插入的插件列表\r\n */\r\nexport const ToolbarExtendPlugins = reactive<ToolbarExtendPlugin[]>([]);\r\n\r\n/**\r\n * 注册工具条的扩展\r\n * @param options \r\n */\r\nexport const registerDocEditorToolbarExtend = function(options:ToolbarExtendPlugin){\r\n ToolbarExtendPlugins.push(options);\r\n ToolbarExtendPlugins.sort((a,b)=>a.sort<b.sort ? 1:-1);\r\n}\r\n\r\n\r\n"],"names":[],"mappings":";;AAOa,MAAA,mBAAmB,IAAqB,IAAI;AAe5C,MAAA,uBAAuB,SAAgC,EAAE;AAMzD,MAAA,iCAAiC,SAAS,SAA4B;AACjF,uBAAqB,KAAK,OAAO;AACZ,uBAAA,KAAK,CAAC,GAAE,MAAI,EAAE,OAAK,EAAE,OAAO,IAAE,EAAE;AACvD;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, onMounted, watch, openBlock, createBlock, unref, withCtx,
|
|
1
|
+
import { defineComponent, ref, computed, onMounted, watch, resolveDirective, openBlock, createBlock, unref, withCtx, withDirectives, createElementBlock, normalizeClass, createVNode, createElementVNode, renderSlot, Teleport, createCommentVNode } from "vue";
|
|
2
2
|
import { LexicalComposer, LexicalAutoFocusPlugin, LexicalCheckListPlugin, LexicalHashtagPlugin, LexicalListPlugin, LexicalHistoryPlugin } from "lexical-vue";
|
|
3
3
|
import _sfc_main$4 from "./plugins/AutoLinkPlugin/index.vue.js";
|
|
4
4
|
import _sfc_main$3 from "./plugins/ImagePlugin/index.vue.js";
|
|
@@ -7,8 +7,9 @@ import _sfc_main$2 from "./plugins/RichTextPlugin/index.vue.js";
|
|
|
7
7
|
import _sfc_main$7 from "./plugins/ElementBlockSelectionPlugin/index.vue.js";
|
|
8
8
|
import _sfc_main$5 from "./plugins/ModulePlugin/index.vue.js";
|
|
9
9
|
import _sfc_main$6 from "./plugins/GridPlugin/index.vue.js";
|
|
10
|
+
import _sfc_main$8 from "./plugins/TemplatePlugin/index.vue.js";
|
|
10
11
|
import Nodes from "./plugins/nodes.js";
|
|
11
|
-
import {
|
|
12
|
+
import { useModule } from "./plugins/ModulePlugin/composables.js";
|
|
12
13
|
import { DEVICE_VIEW_MODE } from "./core/index.js";
|
|
13
14
|
import theme from "./themes/DocTheme.js";
|
|
14
15
|
import DocEditorCss from "./themes/doc-editor.css.js";
|
|
@@ -22,6 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
22
23
|
props: {
|
|
23
24
|
placeholder: { type: String, default: "这里输入正文..." },
|
|
24
25
|
content: { type: String, default: `` },
|
|
26
|
+
loading: { type: Boolean, defualt: false },
|
|
25
27
|
js: { type: String, default: `` },
|
|
26
28
|
css: { type: String, default: `` }
|
|
27
29
|
},
|
|
@@ -59,10 +61,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
61
|
onMounted(() => {
|
|
60
62
|
var _a, _b;
|
|
61
63
|
const doc = (_b = (_a = iframeContentRef.value) == null ? void 0 : _a.contentWindow) == null ? void 0 : _b.document;
|
|
64
|
+
const { Modules } = useModule();
|
|
62
65
|
const style = document.createElement("style");
|
|
63
66
|
style.setAttribute("type", "text/css");
|
|
64
67
|
style.innerHTML = [DocEditorCss, DocThemeCss, DocEditorEditCss].join("\r\n");
|
|
65
|
-
style.innerHTML +=
|
|
68
|
+
style.innerHTML += Modules.filter((item) => item.editorCss).map((item) => item.editorCss).join("\r\n");
|
|
66
69
|
doc.head.append(style);
|
|
67
70
|
props.js.split(",").filter((item) => !!item).forEach((path) => {
|
|
68
71
|
const script = document.createElement("script");
|
|
@@ -85,9 +88,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
85
88
|
setTimeout(() => updateStage(), 500);
|
|
86
89
|
});
|
|
87
90
|
return (_ctx, _cache) => {
|
|
91
|
+
const _directive_loading = resolveDirective("loading");
|
|
88
92
|
return openBlock(), createBlock(unref(LexicalComposer), { "initial-config": config }, {
|
|
89
93
|
default: withCtx(() => [
|
|
90
|
-
|
|
94
|
+
withDirectives((openBlock(), createElementBlock("div", {
|
|
91
95
|
class: normalizeClass(["mk-doc-editor", unref(DEVICE_VIEW_MODE)])
|
|
92
96
|
}, [
|
|
93
97
|
createVNode(unref(_sfc_main$1), {
|
|
@@ -123,7 +127,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
123
127
|
]),
|
|
124
128
|
renderSlot(_ctx.$slots, "after-extentions")
|
|
125
129
|
])
|
|
126
|
-
], 2),
|
|
130
|
+
], 2)), [
|
|
131
|
+
[_directive_loading, __props.loading]
|
|
132
|
+
]),
|
|
133
|
+
createVNode(unref(_sfc_main$8)),
|
|
127
134
|
createVNode(unref(LexicalAutoFocusPlugin)),
|
|
128
135
|
createVNode(unref(LexicalCheckListPlugin)),
|
|
129
136
|
createVNode(unref(LexicalHashtagPlugin)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n <GridPlugin />\r\n </Teleport>\r\n <ElementBlockSelectionPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <LexicalAutoFocusPlugin />\r\n <LexicalCheckListPlugin />\r\n <LexicalHashtagPlugin />\r\n <LexicalListPlugin />\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport {\r\n LexicalComposer,\r\n LexicalAutoFocusPlugin,\r\n LexicalCheckListPlugin,\r\n LexicalHashtagPlugin,\r\n LexicalHistoryPlugin,\r\n LexicalListPlugin,\r\n} from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ElementBlockSelectionPlugin,\r\n GridPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport {
|
|
1
|
+
{"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" v-loading=\"loading\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n <GridPlugin />\r\n </Teleport>\r\n <ElementBlockSelectionPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <TemplatePlguin />\r\n <LexicalAutoFocusPlugin />\r\n <LexicalCheckListPlugin />\r\n <LexicalHashtagPlugin />\r\n <LexicalListPlugin />\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport {\r\n LexicalComposer,\r\n LexicalAutoFocusPlugin,\r\n LexicalCheckListPlugin,\r\n LexicalHashtagPlugin,\r\n LexicalHistoryPlugin,\r\n LexicalListPlugin,\r\n} from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ElementBlockSelectionPlugin,\r\n GridPlugin,\r\n ModulePlugin,\r\n TemplatePlguin\r\n} from \"./plugins\"\r\nimport { useModule } from \"./plugins/ModulePlugin/composables\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n loading:{ type:Boolean,defualt:false},\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\r\n setTimeout(() => {\r\n if(iframeBody.value?.scrollHeight > iframeBody.value?.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n const { Modules } = useModule();\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n\r\n // 默认样式\r\n style.innerHTML = [DocEditorCss,DocThemeCss,DocEditorEditCss].join(\"\\r\\n\");\r\n\r\n //模块渲染样式\r\n style.innerHTML += Modules.filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\r\n\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n\r\n props.css.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const link = document.createElement(\"link\");\r\n link.href = path;\r\n link.setAttribute(\"rel\",\"stylesheet\")\r\n link.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(link);\r\n })\r\n\r\n // 设备显示模式改变\r\n watch(DEVICE_VIEW_MODE,(payload: string) => {\r\n doc.body.style.fontSize = payload == \"pc\" ? \"14px\" : \"18px\";\r\n updateStage();\r\n return false\r\n },{ immediate :true})\r\n\r\n // 初始化计算舞台\r\n setTimeout(()=> updateStage(),500)\r\n});\r\n\r\n</script>\r\n"],"names":["DocNodes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,UAAM,OAAO;AAGb,UAAM,QAAQ;AAUd,UAAM,SAAS;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,GAAGA;AAAAA,MACL;AAAA,MACA,QAAQ,OAAa;AAInB,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAAA,IAAA;AAII,UAAA,mBAAmB,IAAI,IAAW;AACxC,UAAM,aAAa,SAAS;;AAAI,gDAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC,aAAvC,mBAAiD;AAAA,KAAI;AAGrF,UAAM,cAAc,MAAI;AACtB,iBAAW,MAAM;;AACf,cAAG,gBAAW,UAAX,mBAAkB,kBAAe,gBAAW,UAAX,mBAAkB,eAAa;AACjE,2BAAiB,MAAM,MAAM,WAAU,gBAAW,UAAX,mBAAkB,gBAAe,KAAI;AAAA,QAC9E;AAAA,SACC,EAAE;AAAA,IAAA;AAED,UAAA,sBAAsB,CAAC,YAAc;AACzC,WAAK,UAAS,OAAO;AACT;IAAA;AAGd,cAAU,MAAI;;AAEN,YAAA,OAAM,4BAAiB,UAAjB,mBAAwB,kBAAxB,mBAAuC;AAC7C,YAAA,EAAE,YAAY;AAGd,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AAGpC,YAAM,YAAY,CAAC,cAAa,aAAY,gBAAgB,EAAE,KAAK,MAAM;AAGzE,YAAM,aAAa,QAAQ,OAAO,CAAA,SAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAEzF,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;AAEK,YAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,cAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,OAAO;AACP,aAAA,aAAa,OAAM,YAAY;AAC/B,aAAA,aAAa,eAAc,MAAM;AAClC,YAAA,KAAK,OAAO,IAAI;AAAA,MAAA,CACrB;AAGK,YAAA,kBAAiB,CAAC,YAAoB;AAC1C,YAAI,KAAK,MAAM,WAAW,WAAW,OAAO,SAAS;AACzC;AACL,eAAA;AAAA,MAAA,GACP,EAAE,WAAW,KAAA,CAAK;AAGT,iBAAA,MAAK,eAAc,GAAG;AAAA,IAAA,CAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { withInstall } from "@maketribe/utils";
|
|
2
2
|
import _sfc_main from "./editor.vue.js";
|
|
3
|
+
import { registerDocTemplate } from "./plugins/TemplatePlugin/composables.js";
|
|
3
4
|
const MKDocEditor = withInstall(_sfc_main);
|
|
4
5
|
export {
|
|
5
6
|
MKDocEditor,
|
|
6
|
-
MKDocEditor as default
|
|
7
|
+
MKDocEditor as default,
|
|
8
|
+
registerDocTemplate
|
|
7
9
|
};
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/basic/doc-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport Editor from \"./editor.vue\";\r\nimport { registerDocModule } from \"./plugins/ModulePlugin/composables\";\r\n\r\nexport const MKDocEditor = withInstall(Editor);\r\n\r\nexport { registerDocModule }\r\n\r\nexport default MKDocEditor;\r\n\r\n"],"names":["Editor"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/basic/doc-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport Editor from \"./editor.vue\";\r\nimport { registerDocModule } from \"./plugins/ModulePlugin/composables\";\r\nimport { registerDocTemplate } from \"./plugins/TemplatePlugin/composables\";\r\n\r\nexport const MKDocEditor = withInstall(Editor);\r\n\r\nexport { registerDocModule,registerDocTemplate }\r\n\r\nexport default MKDocEditor;\r\n\r\n"],"names":["Editor"],"mappings":";;;AAKa,MAAA,cAAc,YAAYA,SAAM;"}
|