@maketribe/ms-app 3.2.25 → 3.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/cjs/assets/iconfonts/iconfont.js +1 -1
  2. package/dist/cjs/assets/iconfonts/iconfont.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/core/{element-module.js → element-block.js} +31 -12
  4. package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -0
  5. package/dist/cjs/components/basic/doc-editor/core/index.js +5 -6
  6. package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
  7. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
  8. package/dist/cjs/components/basic/doc-editor/editor.vue.js +4 -4
  9. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  10. package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  11. package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  12. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  13. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  14. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  15. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  16. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +89 -0
  17. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  18. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +115 -0
  19. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  20. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +83 -0
  21. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  22. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +143 -0
  23. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  24. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +33 -0
  25. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  26. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +18 -21
  27. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  28. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +16 -11
  29. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  30. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +6 -6
  31. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  32. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  33. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  34. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +46 -108
  35. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  36. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  37. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  38. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +26 -0
  39. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  40. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  41. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  42. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +41 -5
  43. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  44. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js +10 -4
  45. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  46. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  47. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  48. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  49. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  50. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  51. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  52. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  53. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  54. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  55. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  56. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +8 -5
  57. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  58. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +35 -6
  59. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  60. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js +7 -1
  61. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  62. package/dist/esm/assets/iconfonts/iconfont.js +1 -1
  63. package/dist/esm/assets/iconfonts/iconfont.js.map +1 -1
  64. package/dist/esm/components/basic/doc-editor/core/{element-module.js → element-block.js} +32 -13
  65. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -0
  66. package/dist/esm/components/basic/doc-editor/core/index.js +6 -7
  67. package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
  68. package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
  69. package/dist/esm/components/basic/doc-editor/editor.vue.js +4 -4
  70. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  71. package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  72. package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  73. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  74. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  75. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  76. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  77. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +89 -0
  78. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  79. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +115 -0
  80. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  81. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +83 -0
  82. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  83. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +144 -0
  84. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  85. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +33 -0
  86. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  87. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +18 -21
  88. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  89. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +17 -12
  90. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  91. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +6 -6
  92. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  93. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  94. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  95. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +50 -112
  96. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  97. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  98. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  99. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +26 -0
  100. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  101. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  102. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  103. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +43 -7
  104. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  105. package/dist/esm/components/basic/doc-editor/plugins/nodes.js +10 -4
  106. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  107. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  108. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  109. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  110. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  111. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  112. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  113. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  114. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  115. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  116. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  117. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +9 -6
  118. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  119. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +35 -6
  120. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  121. package/dist/esm/modules/ms/components/image-select/image-select-panel.js +9 -3
  122. package/dist/esm/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  123. package/dist/style/components/basic/doc-editor/index.css +1 -1
  124. package/dist/style/components/index.css +1 -1
  125. package/dist/style/index.css +2 -2
  126. package/dist/style/src/components/basic/doc-editor/index.scss +2 -0
  127. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +44 -0
  128. package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -4
  129. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +88 -0
  130. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +50 -0
  131. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +58 -0
  132. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +58 -0
  133. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +51 -0
  134. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/index.d.ts +5 -0
  135. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/utils.d.ts +3 -0
  136. package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +4 -13
  137. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +18 -10
  138. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/index.d.ts +0 -1
  139. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +0 -6
  140. package/dist/types/components/basic/doc-editor/plugins/index.d.ts +3 -3
  141. package/dist/types/components/basic/dynamic-form-panel/type.d.ts +2 -2
  142. package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +1 -0
  143. package/package.json +5 -5
  144. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js +0 -13
  145. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  146. package/dist/cjs/components/basic/doc-editor/core/element-module.js.map +0 -1
  147. package/dist/cjs/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  148. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  149. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  150. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -45
  151. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  152. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  153. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  154. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  155. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  156. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  157. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  158. package/dist/esm/components/basic/doc-editor/core/decorator-module.js +0 -13
  159. package/dist/esm/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  160. package/dist/esm/components/basic/doc-editor/core/element-module.js.map +0 -1
  161. package/dist/esm/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  162. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  163. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  164. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -46
  165. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  166. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  167. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  168. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  169. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  170. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  171. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  172. package/dist/types/components/basic/doc-editor/core/decorator-module.d.ts +0 -60
  173. package/dist/types/components/basic/doc-editor/core/element-module.d.ts +0 -15
  174. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.d.ts +0 -63
  175. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/index.d.ts +0 -1
  176. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.d.ts +0 -86
  177. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleRenderComponent.d.ts +0 -23
  178. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.d.ts +0 -63
  179. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.d.ts +0 -58
  180. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  181. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  182. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  183. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  184. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  185. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  186. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  187. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  188. /package/dist/types/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.d.ts +0 -0
  189. /package/dist/types/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue.d.ts +0 -0
@@ -1,106 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const lexical = require("lexical");
4
- require("../ImagePlugin/commands.js");
5
- const ImageNode = require("../ImagePlugin/ImageNode.js");
6
- const INSERT_IMAGETEXT_COMMAND = lexical.createCommand("INSERT_IMAGETEXT_COMMAND");
7
- const MarkClassName = "mk-doc__image-text";
8
- class ImageTextNode extends lexical.ElementNode {
9
- static getType() {
10
- return "image-text";
11
- }
12
- static clone(node) {
13
- return new ImageTextNode(node.__key);
14
- }
15
- static importJSON(serializedNode) {
16
- return $createImageTextNode();
17
- }
18
- static importDOM() {
19
- return {
20
- div: (domNode) => {
21
- return domNode.classList.contains(MarkClassName) ? {
22
- conversion: () => {
23
- return { node: $createImageTextNode() };
24
- },
25
- priority: 4
26
- } : null;
27
- }
28
- };
29
- }
30
- constructor(key) {
31
- super(key);
32
- }
33
- /**
34
- * 导出JSON
35
- * @returns
36
- */
37
- exportJSON() {
38
- return {
39
- ...super.exportJSON(),
40
- type: this.getType(),
41
- version: 1
42
- };
43
- }
44
- /**
45
- * 导出DOM
46
- * @returns
47
- */
48
- exportDOM() {
49
- const element = document.createElement("div");
50
- if (!element.classList.contains(MarkClassName)) {
51
- element.classList.add(MarkClassName);
52
- }
53
- return { element };
54
- }
55
- /**
56
- * 创建渲染DOM
57
- * @param config
58
- * @returns
59
- */
60
- createDOM(config) {
61
- const el = this.exportDOM().element;
62
- el.setAttribute("node-key", this.__key);
63
- el.setAttribute("contenteditable", "true");
64
- el.setAttribute("data-lexical-decorator", "true");
65
- return el;
66
- }
67
- /**
68
- * 更新DOM
69
- * @param prevNode
70
- * @param dom
71
- * @param config
72
- * @returns
73
- */
74
- updateDOM(prevNode, dom, config) {
75
- return false;
76
- }
77
- /* 不允许空
78
- * @returns
79
- */
80
- canBeEmpty() {
81
- return false;
82
- }
83
- /**
84
- * 非内联
85
- * @returns
86
- */
87
- isInline() {
88
- return false;
89
- }
90
- }
91
- function $createImageTextNode(attrs) {
92
- const imageText = new ImageTextNode();
93
- if (attrs != null) {
94
- imageText.append(new ImageNode.InlineImageNode(attrs));
95
- imageText.append(lexical.$createParagraphNode());
96
- }
97
- return imageText;
98
- }
99
- function $isImageTextNode(node) {
100
- return node instanceof ImageTextNode;
101
- }
102
- exports.$createImageTextNode = $createImageTextNode;
103
- exports.$isImageTextNode = $isImageTextNode;
104
- exports.INSERT_IMAGETEXT_COMMAND = INSERT_IMAGETEXT_COMMAND;
105
- exports.ImageTextNode = ImageTextNode;
106
- //# sourceMappingURL=ImageTextNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageTextNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.ts"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\nimport type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey,EditorConfig, Spread,SerializedElementNode, DOMExportOutput } from 'lexical'\r\nimport { createCommand,$createParagraphNode,ElementNode } from 'lexical'\r\nimport { ImageAttrType,InlineImageNode } from '../ImagePlugin'\r\n\r\n/**\r\n * 插入图文\r\n */\r\nexport const INSERT_IMAGETEXT_COMMAND: LexicalCommand<ImageAttrType> = createCommand('INSERT_IMAGETEXT_COMMAND')\r\n\r\n/**\r\n * 图文节点序列化\r\n */\r\nexport type SerializedImageTextNode = Spread<{},SerializedElementNode>\r\n\r\n\r\n// 类标识\r\nconst MarkClassName = \"mk-doc__image-text\";\r\n\r\n/**\r\n * 图文节点\r\n */\r\nexport class ImageTextNode extends ElementNode{\r\n\r\n static getType(): string {\r\n return \"image-text\";\r\n }\r\n\r\n static clone(node: ImageTextNode): ImageTextNode {\r\n return new ImageTextNode(node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageTextNode): ImageTextNode {\r\n return $createImageTextNode()\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n return domNode.classList.contains(MarkClassName) ? {\r\n conversion: ()=>{ \r\n return { node:$createImageTextNode() };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(key?: NodeKey) {\r\n super(key)\r\n }\r\n\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedImageTextNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const element = document.createElement('div')\r\n\r\n if (!element.classList.contains(MarkClassName)) {\r\n element.classList.add(MarkClassName);\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n const el = this.exportDOM().element as HTMLElement;\r\n el.setAttribute(\"node-key\",this.__key)\r\n el.setAttribute(\"contenteditable\",\"true\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: ImageTextNode, dom: HTMLElement, config: EditorConfig): boolean {\r\n return false\r\n }\r\n\r\n /* 不允许空\r\n * @returns \r\n */\r\n canBeEmpty(): boolean {\r\n return false\r\n }\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 创建图文节点\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createImageTextNode(attrs?: ImageAttrType): ImageTextNode {\r\n\r\n const imageText = new ImageTextNode()\r\n\r\n if(attrs != null){\r\n imageText.append(new InlineImageNode(attrs))\r\n imageText.append($createParagraphNode())\r\n }\r\n\r\n return imageText;\r\n}\r\n\r\n/**\r\n * 判断是否是图文节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageTextNode(\r\n node: ImageTextNode | LexicalNode | null | undefined,\r\n): node is ImageTextNode {\r\n return node instanceof ImageTextNode\r\n}\r\n"],"names":["createCommand","ElementNode","InlineImageNode","$createParagraphNode"],"mappings":";;;;;AAYa,MAAA,2BAA0DA,sBAAc,0BAA0B;AAS/G,MAAM,gBAAgB;AAKf,MAAM,sBAAsBC,QAAAA,YAAW;AAAA,EAE5C,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,MAAoC;AACxC,WAAA,IAAI,cAAc,KAAK,KAAK;AAAA,EACrC;AAAA,EAEA,OAAO,WAAW,gBAAwD;AACxE,WAAO,qBAAqB;AAAA,EAC9B;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAC9B,eAAO,QAAQ,UAAU,SAAS,aAAa,IAAI;AAAA,UACjD,YAAY,MAAI;AACN,mBAAA,EAAE,MAAK,qBAAA;UACjB;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,KAAe;AACzB,UAAM,GAAG;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAsC;AAC7B,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,UAAU,SAAS,cAAc,KAAK;AAE5C,QAAI,CAAC,QAAQ,UAAU,SAAS,aAAa,GAAG;AACtC,cAAA,UAAU,IAAI,aAAa;AAAA,IACrC;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AACrC,UAAA,KAAK,KAAK,UAAA,EAAY;AACzB,OAAA,aAAa,YAAW,KAAK,KAAK;AAClC,OAAA,aAAa,mBAAkB,MAAM;AACrC,OAAA,aAAa,0BAAyB,MAAM;AACxC,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAAyB,KAAkB,QAA+B;AAC3E,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAsB;AACb,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoB;AACX,WAAA;AAAA,EACT;AACF;AAOO,SAAS,qBAAqB,OAAsC;AAEnE,QAAA,YAAY,IAAI;AAEtB,MAAG,SAAS,MAAK;AACf,cAAU,OAAO,IAAIC,0BAAgB,KAAK,CAAC;AACjC,cAAA,OAAOC,8BAAsB;AAAA,EACzC;AAEO,SAAA;AACT;AAOO,SAAS,iBACd,MACuB;AACvB,SAAO,gBAAgB;AACzB;;;;;"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- const vue = require("vue");
3
- const utils = require("@lexical/utils");
4
- const lexical = require("lexical");
5
- const lexicalVue = require("lexical-vue");
6
- const index = require("../../core/index.js");
7
- const ImageTextNode = require("./ImageTextNode.js");
8
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
9
- __name: "index",
10
- setup(__props) {
11
- index.registerDocEditorToolbarExtend({
12
- icon: "richtext-outline",
13
- text: "图文",
14
- action: async () => {
15
- editor.dispatchCommand(ImageTextNode.INSERT_IMAGETEXT_COMMAND, {
16
- src: "",
17
- float: "left",
18
- width: "200px",
19
- margin: "0 10px 10px 0"
20
- });
21
- },
22
- sort: 10
23
- });
24
- const editor = lexicalVue.useLexicalComposer();
25
- lexicalVue.useMounted(() => {
26
- return utils.mergeRegister(
27
- // 插入图文
28
- editor.registerCommand(ImageTextNode.INSERT_IMAGETEXT_COMMAND, (payload) => {
29
- utils.$insertNodeToNearestRoot(ImageTextNode.$createImageTextNode(payload));
30
- return true;
31
- }, lexical.COMMAND_PRIORITY_EDITOR)
32
- );
33
- });
34
- vue.onMounted(() => {
35
- if (!editor.hasNodes([ImageTextNode.ImageTextNode])) {
36
- throw new Error("ImageTextPlugin: 图文节点未注册!");
37
- }
38
- });
39
- return (_ctx, _cache) => {
40
- return null;
41
- };
42
- }
43
- });
44
- module.exports = _sfc_main;
45
- //# sourceMappingURL=index.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,$getSelection,CLICK_COMMAND } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, onUnmounted } from 'vue'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { useElementModule } from '../../core'\r\nimport { ImageAttrType } from '../ImagePlugin'\r\nimport { INSERT_IMAGETEXT_COMMAND,ImageTextNode,$createImageTextNode } from './index'\r\n\r\n\r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"richtext-outline\",\r\n text:\"图文\",\r\n action:async ()=>{ \r\n editor.dispatchCommand(INSERT_IMAGETEXT_COMMAND,{\r\n src:\"\",\r\n float:\"left\",\r\n width:\"200px\",\r\n margin:\"0 10px 10px 0\"\r\n })\r\n },\r\n sort:10\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\n// const { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n \r\n// var imageTextEl:any = el\r\n\r\n// while (imageTextEl != null && !imageTextEl.classList.contains(\"mk-doc-block-image-text\")) {\r\n// imageTextEl = imageTextEl.parentElement;\r\n// }\r\n\r\n// return imageTextEl\r\n\r\n// },[\r\n// {\r\n// title:\"编辑\",icon:\"Edit\",action:()=>{\r\n// // 编辑的节点\r\n// editor.getEditorState().read(async () => {\r\n \r\n \r\n// })\r\n// } \r\n// }\r\n// ])\r\n\r\n\r\nuseMounted(()=>{\r\n return mergeRegister(\r\n // 插入图文\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGETEXT_COMMAND,(payload) => {\r\n $insertNodeToNearestRoot($createImageTextNode(payload))\r\n return true\r\n },COMMAND_PRIORITY_EDITOR)\r\n )\r\n})\r\n\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageTextNode])){\r\n throw new Error('ImageTextPlugin: 图文节点未注册!')\r\n }\r\n})\r\n</script>\r\n\r\n\r\n<template>\r\n <!-- <div class=\"mk-doc-active-mark mk-doc-active-box-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n \r\n </div> -->\r\n</template>\r\n\r\n"],"names":["registerDocEditorToolbarExtend","INSERT_IMAGETEXT_COMMAND","useLexicalComposer","useMounted","mergeRegister","$insertNodeToNearestRoot","$createImageTextNode","COMMAND_PRIORITY_EDITOR","onMounted","ImageTextNode"],"mappings":";;;;;;;;;;AAY+BA,yCAAA;AAAA,MAC7B,MAAK;AAAA,MACL,MAAK;AAAA,MACL,QAAO,YAAU;AACf,eAAO,gBAAgBC,wCAAyB;AAAA,UAC9C,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,OAAM;AAAA,UACN,QAAO;AAAA,QAAA,CACR;AAAA,MACH;AAAA,MACA,MAAK;AAAA,IAAA,CACiB;AAExB,UAAM,SAASC,WAAAA;AA0BfC,eAAAA,WAAW,MAAI;AACN,aAAAC,MAAA;AAAA;AAAA,QAEL,OAAO,gBAA+BH,wCAAyB,CAAC,YAAY;AACjDI,yCAAAC,cAAAA,qBAAqB,OAAO,CAAC;AAC/C,iBAAA;AAAA,WACPC,+BAAuB;AAAA,MAAA;AAAA,IAC3B,CACD;AAEDC,QAAAA,UAAU,MAAM;AAEd,UAAI,CAAC,OAAO,SAAS,CAACC,cAAAA,aAAa,CAAC,GAAE;AAC9B,cAAA,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AAAA,IAAA,CACD;;;;;;;"}
@@ -1,143 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
- const lexical = require("lexical");
7
- const BaseBlockCantainerNode = require("../RichTextPlugin/nodes/BaseBlockCantainerNode.js");
8
- const INSERT_MODULECONTAINER_COMMAND = lexical.createCommand("INSERT_MODULECONTAINER_COMMAND");
9
- class ModuleContainerNode extends BaseBlockCantainerNode.BaseBlockCantainerNode {
10
- constructor(attrs, key) {
11
- super(ModuleContainerNode.getType(), key);
12
- __publicField(this, "__attrs");
13
- this.__attrs = attrs;
14
- }
15
- static getType() {
16
- return "module-container";
17
- }
18
- /**
19
- * 获取模块类标识
20
- * @returns
21
- */
22
- static getMarkClassName() {
23
- return BaseBlockCantainerNode.BaseBlockCantainerNode.getMarkClassName(ModuleContainerNode.getType());
24
- }
25
- static clone(node) {
26
- return new ModuleContainerNode(node.__attrs, node.__key);
27
- }
28
- static importJSON(serializedNode) {
29
- return new ModuleContainerNode(serializedNode.attrs);
30
- }
31
- static importDOM() {
32
- return {
33
- div: (domNode) => {
34
- const data = {};
35
- return BaseBlockCantainerNode.BaseBlockCantainerNode.hasBlockByType(domNode, ModuleContainerNode.getType()) ? {
36
- conversion: () => {
37
- const className = domNode.className.replace(ModuleContainerNode.getMarkClassName(), "").trim();
38
- return {
39
- node: $createModuleContainerNode(Object.assign({
40
- isFlex: false,
41
- direction: "",
42
- wrap: false,
43
- alignContent: "",
44
- justifyContent: "",
45
- alignItems: "",
46
- class: className
47
- }, data))
48
- };
49
- },
50
- priority: 4
51
- } : null;
52
- }
53
- };
54
- }
55
- /**
56
- * 设置属性
57
- * @param pos
58
- */
59
- setAttrs(data) {
60
- const writable = this.getWritable();
61
- Object.assign(writable.__attrs, data);
62
- }
63
- /**
64
- * 获取属性
65
- * @param pos
66
- */
67
- getAttrs() {
68
- return this.__attrs;
69
- }
70
- /**
71
- * 导出JSON
72
- * @returns
73
- */
74
- exportJSON() {
75
- return {
76
- ...super.exportJSON(),
77
- type: this.getType(),
78
- attrs: this.__attrs,
79
- version: 1
80
- };
81
- }
82
- /**
83
- * 导出DOM
84
- * @returns
85
- */
86
- exportDOM() {
87
- const out = super.exportDOM();
88
- const el = out.element;
89
- if (this.__attrs.class && !el.classList.contains(this.__attrs.class)) {
90
- el.classList.add(this.__attrs.class);
91
- }
92
- return out;
93
- }
94
- /**
95
- * 创建渲染DOM
96
- * @param config
97
- * @returns
98
- */
99
- createDOM(config) {
100
- const el = super.createDOM(config);
101
- if (this.__attrs.class && !el.classList.contains(this.__attrs.class)) {
102
- el.classList.add(this.__attrs.class);
103
- }
104
- if (this.getChildrenSize() <= 0) {
105
- el.classList.add("empty");
106
- }
107
- return el;
108
- }
109
- /**
110
- * 更新DOM
111
- * @param prevNode
112
- * @param el
113
- * @param config
114
- * @returns
115
- */
116
- updateDOM(node, el, config) {
117
- if (node.__attrs.class) {
118
- el.className = `${ModuleContainerNode.getMarkClassName()} ${node.__attrs.class}`;
119
- } else {
120
- el.className = `${ModuleContainerNode.getMarkClassName()}`;
121
- }
122
- return false;
123
- }
124
- }
125
- function $isModuleContainerNode(node) {
126
- return node instanceof ModuleContainerNode;
127
- }
128
- function $createModuleContainerNode(data) {
129
- return new ModuleContainerNode(Object.assign({
130
- isFlex: false,
131
- direction: "",
132
- wrap: false,
133
- alignContent: "",
134
- justifyContent: "",
135
- alignItems: "",
136
- class: ""
137
- }, data));
138
- }
139
- exports.$createModuleContainerNode = $createModuleContainerNode;
140
- exports.$isModuleContainerNode = $isModuleContainerNode;
141
- exports.INSERT_MODULECONTAINER_COMMAND = INSERT_MODULECONTAINER_COMMAND;
142
- exports.ModuleContainerNode = ModuleContainerNode;
143
- //# sourceMappingURL=ModuleContainerNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModuleContainerNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.ts"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\nimport type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey, Spread,EditorConfig, DOMExportOutput } from 'lexical'\r\nimport { createCommand } from 'lexical'\r\nimport { BaseBlockCantainerNode,SerializedBlockCantainerNode } from '../RichTextPlugin/nodes/BaseBlockCantainerNode'\r\n\r\n/**\r\n * 容器属性\r\n */\r\nexport type ModuleContainerAttrType = {\r\n isFlex:boolean,\r\n direction:'column'|'row'|'row-reverse'|'column-reverse',\r\n wrap:boolean,\r\n alignContent:'center'|'flex-start',\r\n justifyContent:'center'|'flex-start',\r\n alignItems:'center'|'flex-start',\r\n class:string\r\n};\r\n\r\n/**\r\n * 插入模块容器\r\n */\r\nexport const INSERT_MODULECONTAINER_COMMAND: LexicalCommand<ModuleContainerAttrType> = createCommand('INSERT_MODULECONTAINER_COMMAND')\r\n\r\n/**\r\n * 图文节点序列化\r\n */\r\nexport type SerializedModuleContainerNode = Spread<{\r\n attrs:ModuleContainerAttrType\r\n},SerializedBlockCantainerNode>\r\n\r\n/**\r\n * 模块容器\r\n */\r\nexport class ModuleContainerNode extends BaseBlockCantainerNode{\r\n __attrs:ModuleContainerAttrType\r\n\r\n static getType(): string {\r\n return \"module-container\";\r\n }\r\n /**\r\n * 获取模块类标识\r\n * @returns \r\n */\r\n static getMarkClassName(): string {\r\n return BaseBlockCantainerNode.getMarkClassName(ModuleContainerNode.getType())\r\n }\r\n\r\n static clone(node: ModuleContainerNode): ModuleContainerNode {\r\n return new ModuleContainerNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedModuleContainerNode): ModuleContainerNode {\r\n return new ModuleContainerNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n const data = {};\r\n\r\n return BaseBlockCantainerNode.hasBlockByType(domNode,ModuleContainerNode.getType()) ? {\r\n conversion: ()=>{ \r\n\r\n // 标识类名\r\n const className = domNode.className.replace(ModuleContainerNode.getMarkClassName(),\"\").trim();\r\n\r\n return { \r\n node:$createModuleContainerNode(Object.assign({\r\n isFlex:false,\r\n direction:\"\",\r\n wrap:false,\r\n alignContent:\"\",\r\n justifyContent:'',\r\n alignItems:'',\r\n class:className\r\n },data) as ModuleContainerAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:ModuleContainerAttrType,key?: NodeKey) {\r\n super(ModuleContainerNode.getType(),key)\r\n this.__attrs = attrs;\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:any){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs(){\r\n return this.__attrs;\r\n }\r\n\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedModuleContainerNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const out = super.exportDOM();\r\n const el = out.element as HTMLElement\r\n\r\n if (this.__attrs.class && !el.classList.contains(this.__attrs.class)) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n\r\n return out\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n \r\n const el = super.createDOM(config);\r\n\r\n if (this.__attrs.class && !el.classList.contains(this.__attrs.class)) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n\r\n if(this.getChildrenSize() <= 0){\r\n el.classList.add(\"empty\")\r\n }\r\n \r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param el \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(node: ModuleContainerNode, el: HTMLElement, config: EditorConfig): boolean {\r\n if (node.__attrs.class) {\r\n // 标识类名\r\n el.className = `${ModuleContainerNode.getMarkClassName()} ${node.__attrs.class}`;\r\n }\r\n else{\r\n el.className = `${ModuleContainerNode.getMarkClassName()}`;\r\n }\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否是模块容器节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isModuleContainerNode(\r\n node: ModuleContainerNode | LexicalNode | null | undefined,\r\n): node is ModuleContainerNode {\r\n return node instanceof ModuleContainerNode\r\n}\r\n\r\n\r\n/**\r\n * 创建模块容器\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createModuleContainerNode(data: ModuleContainerAttrType): ModuleContainerNode {\r\n return new ModuleContainerNode(Object.assign({\r\n isFlex:false,\r\n direction:\"\",\r\n wrap:false,\r\n alignContent:\"\",\r\n justifyContent:'',\r\n alignItems:'',\r\n class:\"\"\r\n },data))\r\n}\r\n"],"names":["createCommand","BaseBlockCantainerNode"],"mappings":";;;;;;;AAyBa,MAAA,iCAA0EA,sBAAc,gCAAgC;AAY9H,MAAM,4BAA4BC,uBAAAA,uBAAsB;AAAA,EAoD7D,YAAY,OAA8B,KAAe;AACjD,UAAA,oBAAoB,QAAQ,GAAE,GAAG;AApDzC;AAqDE,SAAK,UAAU;AAAA,EACjB;AAAA,EApDA,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,mBAA2B;AAChC,WAAOA,uBAAuB,uBAAA,iBAAiB,oBAAoB,QAAS,CAAA;AAAA,EAC9E;AAAA,EAEA,OAAO,MAAM,MAAgD;AAC3D,WAAO,IAAI,oBAAoB,KAAK,SAAQ,KAAK,KAAK;AAAA,EACxD;AAAA,EAEA,OAAO,WAAW,gBAAoE;AAC7E,WAAA,IAAI,oBAAoB,eAAe,KAAK;AAAA,EACrD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAE9B,cAAM,OAAO,CAAA;AAEb,eAAQA,uBAAAA,uBAAuB,eAAe,SAAQ,oBAAoB,QAAS,CAAA,IAAI;AAAA,UACrF,YAAY,MAAI;AAGR,kBAAA,YAAY,QAAQ,UAAU,QAAQ,oBAAoB,oBAAmB,EAAE,EAAE;AAE/E,mBAAA;AAAA,cACN,MAAK,2BAA2B,OAAO,OAAO;AAAA,gBAC5C,QAAO;AAAA,gBACP,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,cAAa;AAAA,gBACb,gBAAe;AAAA,gBACf,YAAW;AAAA,gBACX,OAAM;AAAA,cACR,GAAE,IAAI,CAA4B;AAAA,YAAA;AAAA,UAEtC;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,MAAU;AACX,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAU;AACR,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAA4C;AACnC,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,MAAM,MAAM;AAClB,UAAM,KAAK,IAAI;AAEX,QAAA,KAAK,QAAQ,SAAS,CAAC,GAAG,UAAU,SAAS,KAAK,QAAQ,KAAK,GAAG;AACpE,SAAG,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,IACrC;AAEO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AAErC,UAAA,KAAK,MAAM,UAAU,MAAM;AAE7B,QAAA,KAAK,QAAQ,SAAS,CAAC,GAAG,UAAU,SAAS,KAAK,QAAQ,KAAK,GAAG;AACpE,SAAG,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,IACrC;AAEG,QAAA,KAAK,gBAAgB,KAAK,GAAE;AAC1B,SAAA,UAAU,IAAI,OAAO;AAAA,IAC1B;AAEO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,UAAU,MAA2B,IAAiB,QAA+B;AAC/E,QAAA,KAAK,QAAQ,OAAO;AAEnB,SAAA,YAAY,GAAG,oBAAoB,iBAAA,CAAkB,IAAI,KAAK,QAAQ,KAAK;AAAA,IAAA,OAE5E;AACF,SAAG,YAAY,GAAG,oBAAoB,iBAAA,CAAkB;AAAA,IAC1D;AACO,WAAA;AAAA,EACT;AACJ;AAOO,SAAS,uBACd,MAC6B;AAC7B,SAAO,gBAAgB;AACzB;AAQO,SAAS,2BAA2B,MAAoD;AACtF,SAAA,IAAI,oBAAoB,OAAO,OAAO;AAAA,IAC3C,QAAO;AAAA,IACP,WAAU;AAAA,IACV,MAAK;AAAA,IACL,cAAa;AAAA,IACb,gBAAe;AAAA,IACf,YAAW;AAAA,IACX,OAAM;AAAA,EAAA,GACN,IAAI,CAAC;AACT;;;;;"}
@@ -1,123 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const lexical = require("lexical");
4
- const BaseMarkClassName = "mk-doc-block-container";
5
- class BaseBlockCantainerNode extends lexical.ElementNode {
6
- constructor(type, key) {
7
- super(key);
8
- this.__type = type;
9
- }
10
- /**
11
- * 获取指定类型模块类标识
12
- * @param type
13
- * @returns
14
- */
15
- static getMarkClassName(type) {
16
- return `${BaseMarkClassName}__${type}`;
17
- }
18
- /**
19
- * 是否是指定类型模块
20
- * @param dom
21
- * @param type
22
- * @returns
23
- */
24
- static hasBlockByType(dom, type) {
25
- return dom.classList.contains(BaseBlockCantainerNode.getMarkClassName(type));
26
- }
27
- /**
28
- * 导出json
29
- * @returns
30
- */
31
- exportJSON() {
32
- return {
33
- ...super.exportJSON(),
34
- type: this.__type,
35
- version: 1
36
- };
37
- }
38
- /**
39
- * 获取标识类名
40
- */
41
- getMarkClassName() {
42
- return BaseBlockCantainerNode.getMarkClassName(this.__type);
43
- }
44
- /**
45
- * 导出DOM
46
- * @returns
47
- */
48
- exportDOM() {
49
- const element = document.createElement("div");
50
- if (!element.classList.contains(this.getMarkClassName())) {
51
- element.classList.add(this.getMarkClassName());
52
- }
53
- return { element };
54
- }
55
- /**
56
- * 创建渲染DOM
57
- * @param config
58
- * @returns
59
- */
60
- createDOM(config) {
61
- const el = this.exportDOM().element;
62
- el.setAttribute("node-key", this.__key);
63
- el.setAttribute("contenteditable", "false");
64
- el.setAttribute("data-lexical-decorator", "true");
65
- return el;
66
- }
67
- /**
68
- * 更新DOM
69
- * @param prevNode
70
- * @param dom
71
- * @param config
72
- * @returns
73
- */
74
- updateDOM(prevNode, dom, config) {
75
- return false;
76
- }
77
- /**
78
- * 非内联
79
- * @returns
80
- */
81
- isInline() {
82
- return false;
83
- }
84
- /**
85
- * 定义为影子根
86
- * @returns
87
- */
88
- isShadowRoot() {
89
- return true;
90
- }
91
- // // Mutation
92
- // insertNewAfter(rangeSelection:RangeSelection, restoreSelection:boolean) {
93
- // // const newElement = $createParagraphNode();
94
- // // newElement.setTextFormat(rangeSelection.format);
95
- // // const direction = this.getDirection();
96
- // // newElement.setDirection(direction);
97
- // // newElement.setFormat(this.getFormatType());
98
- // // this.insertAfter(newElement, restoreSelection);
99
- // console.log(rangeSelection,restoreSelection)
100
- // return null;
101
- // }
102
- // collapseAtStart() {
103
- // const children = this.getChildren();
104
- // console.log("asdasdas")
105
- // if (children.length === 0 || $isTextNode(children[0]) && children[0].getTextContent().trim() === "") {
106
- // const nextSibling = this.getNextSibling();
107
- // if (nextSibling !== null) {
108
- // this.selectNext();
109
- // this.remove();
110
- // return true;
111
- // }
112
- // const prevSibling = this.getPreviousSibling();
113
- // if (prevSibling !== null) {
114
- // this.selectPrevious();
115
- // this.remove();
116
- // return true;
117
- // }
118
- // }
119
- // return false;
120
- // }
121
- }
122
- exports.BaseBlockCantainerNode = BaseBlockCantainerNode;
123
- //# sourceMappingURL=BaseBlockCantainerNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseBlockCantainerNode.js","sources":["../../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.ts"],"sourcesContent":["import type {\r\n DOMExportOutput,\r\n EditorConfig,\r\n NodeKey,\r\n Spread,\r\n SerializedElementNode,\r\n} from 'lexical'\r\nimport { ElementNode} from 'lexical'\r\n\r\n/**\r\n * 可编辑组件块容器节点\r\n */\r\nexport type SerializedBlockCantainerNode = Spread<{},SerializedElementNode>\r\n\r\n// 基础类标识\r\nconst BaseMarkClassName = \"mk-doc-block-container\";\r\n\r\n/**\r\n * 定义组件块容器点\r\n */\r\nexport class BaseBlockCantainerNode extends ElementNode {\r\n\r\n constructor(type: string, key?: NodeKey) {\r\n super(key)\r\n this.__type = type\r\n }\r\n\r\n /**\r\n * 获取指定类型模块类标识\r\n * @param type \r\n * @returns \r\n */\r\n static getMarkClassName(type:string): string {\r\n return `${BaseMarkClassName}__${type}`\r\n }\r\n\r\n /**\r\n * 是否是指定类型模块\r\n * @param dom \r\n * @param type \r\n * @returns \r\n */\r\n static hasBlockByType(dom: HTMLElement,type:string): boolean {\r\n return dom.classList.contains(BaseBlockCantainerNode.getMarkClassName(type))\r\n }\r\n\r\n /**\r\n * 导出json\r\n * @returns \r\n */\r\n exportJSON(): SerializedBlockCantainerNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.__type,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 获取标识类名\r\n */\r\n getMarkClassName(){\r\n return BaseBlockCantainerNode.getMarkClassName(this.__type)\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const element = document.createElement('div')\r\n\r\n if (!element.classList.contains(this.getMarkClassName())) {\r\n element.classList.add(this.getMarkClassName());\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n const el = this.exportDOM().element as HTMLElement;\r\n el.setAttribute(\"node-key\",this.__key)\r\n el.setAttribute(\"contenteditable\",\"false\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: BaseBlockCantainerNode, dom: HTMLElement, config: EditorConfig): boolean {\r\n // console.log(\"Image Text updateDOM\",prevNode,dom);\r\n // const position = this.__pos\r\n // if (position !== prevNode.__pos) {\r\n // const className = `${config.theme.image} position-${position}`\r\n // if (className !== undefined) {\r\n // dom.className = className\r\n // }\r\n // }\r\n // const inner = dom.firstChild\r\n // if (inner === null){ return true }\r\n // super.updateDOM(prevNode, inner as HTMLElement, config)\r\n return false\r\n }\r\n\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * 定义为影子根\r\n * @returns \r\n */\r\n isShadowRoot(): boolean {\r\n return true;\r\n }\r\n\r\n \r\n // // Mutation\r\n // insertNewAfter(rangeSelection:RangeSelection, restoreSelection:boolean) {\r\n // // const newElement = $createParagraphNode();\r\n // // newElement.setTextFormat(rangeSelection.format);\r\n // // const direction = this.getDirection();\r\n // // newElement.setDirection(direction);\r\n // // newElement.setFormat(this.getFormatType());\r\n // // this.insertAfter(newElement, restoreSelection);\r\n // console.log(rangeSelection,restoreSelection)\r\n // return null;\r\n // }\r\n\r\n\r\n // collapseAtStart() {\r\n // const children = this.getChildren();\r\n // console.log(\"asdasdas\")\r\n // if (children.length === 0 || $isTextNode(children[0]) && children[0].getTextContent().trim() === \"\") {\r\n // const nextSibling = this.getNextSibling();\r\n // if (nextSibling !== null) {\r\n // this.selectNext();\r\n // this.remove();\r\n // return true;\r\n // }\r\n // const prevSibling = this.getPreviousSibling();\r\n // if (prevSibling !== null) {\r\n // this.selectPrevious();\r\n // this.remove();\r\n // return true;\r\n // }\r\n // }\r\n // return false;\r\n // }\r\n}\r\n"],"names":["ElementNode"],"mappings":";;;AAeA,MAAM,oBAAoB;AAKnB,MAAM,+BAA+BA,QAAAA,YAAY;AAAA,EAEtD,YAAY,MAAe,KAAe;AACxC,UAAM,GAAG;AACT,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,iBAAiB,MAAqB;AACpC,WAAA,GAAG,iBAAiB,KAAK,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,KAAiB,MAAsB;AAC3D,WAAO,IAAI,UAAU,SAAS,uBAAuB,iBAAiB,IAAI,CAAC;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAA2C;AAClC,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAkB;AACT,WAAA,uBAAuB,iBAAiB,KAAK,MAAM;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,UAAU,SAAS,cAAc,KAAK;AAE5C,QAAI,CAAC,QAAQ,UAAU,SAAS,KAAK,iBAAA,CAAkB,GAAG;AACxD,cAAQ,UAAU,IAAI,KAAK,iBAAkB,CAAA;AAAA,IAC/C;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AACrC,UAAA,KAAK,KAAK,UAAA,EAAY;AACzB,OAAA,aAAa,YAAW,KAAK,KAAK;AAClC,OAAA,aAAa,mBAAkB,OAAO;AACtC,OAAA,aAAa,0BAAyB,MAAM;AACxC,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAAkC,KAAkB,QAA+B;AAYpF,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAoB;AACX,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAwB;AACf,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCF;;"}
@@ -1,84 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const lexical = require("lexical");
4
- const BaseMarkClassName = "mk-doc-block";
5
- class BaseBlockNode extends lexical.ElementNode {
6
- constructor(type, key) {
7
- super(key);
8
- this.__type = type;
9
- }
10
- /**
11
- * 获取指定类型模块类标识
12
- * @param type
13
- * @returns
14
- */
15
- static getMarkClassName(type) {
16
- return `${BaseMarkClassName}__${type}`;
17
- }
18
- /**
19
- * 是否是指定类型模块
20
- * @param dom
21
- * @param type
22
- * @returns
23
- */
24
- static hasBlockByType(dom, type) {
25
- return dom.classList.contains(BaseBlockNode.getMarkClassName(type));
26
- }
27
- /**
28
- * 导出json
29
- * @returns
30
- */
31
- exportJSON() {
32
- return {
33
- ...super.exportJSON(),
34
- type: this.__type,
35
- version: 1
36
- };
37
- }
38
- /**
39
- * 获取标识类名
40
- */
41
- getMarkClassName() {
42
- return BaseBlockNode.getMarkClassName(this.__type);
43
- }
44
- /**
45
- * 导出DOM
46
- * @returns
47
- */
48
- exportDOM() {
49
- const element = document.createElement("div");
50
- if (!element.classList.contains(this.getMarkClassName())) {
51
- element.classList.add(this.getMarkClassName());
52
- }
53
- return { element };
54
- }
55
- /**
56
- * 创建渲染DOM
57
- * @param config
58
- * @returns
59
- */
60
- createDOM(config) {
61
- const el = this.exportDOM().element;
62
- el.setAttribute("node-key", this.__key);
63
- return el;
64
- }
65
- /**
66
- * 更新DOM
67
- * @param prevNode
68
- * @param dom
69
- * @param config
70
- * @returns
71
- */
72
- updateDOM(prevNode, dom, config) {
73
- return false;
74
- }
75
- /**
76
- * 非内联
77
- * @returns
78
- */
79
- isInline() {
80
- return false;
81
- }
82
- }
83
- exports.BaseBlockNode = BaseBlockNode;
84
- //# sourceMappingURL=BaseBlockNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseBlockNode.js","sources":["../../../../../../../../src/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.ts"],"sourcesContent":["import type {\r\n DOMExportOutput,\r\n EditorConfig,\r\n NodeKey,\r\n Spread,\r\n SerializedElementNode,\r\n\r\n} from 'lexical'\r\nimport { isBlockDomNode, $isBlockElementNode,ElementNode } from 'lexical'\r\nimport { type Component} from \"vue\"\r\n \r\n/**\r\n * 可编辑组件块节点\r\n */\r\nexport type SerializedBlockNode = Spread<{},SerializedElementNode>\r\n\r\n// 基础类标识\r\nconst BaseMarkClassName = \"mk-doc-block\";\r\n\r\n/**\r\n * 定义组件块节点\r\n */\r\nexport class BaseBlockNode extends ElementNode {\r\n\r\n constructor(type: string, key?: NodeKey) {\r\n super(key)\r\n this.__type = type\r\n }\r\n\r\n /**\r\n * 获取指定类型模块类标识\r\n * @param type \r\n * @returns \r\n */\r\n static getMarkClassName(type:string): string {\r\n return `${BaseMarkClassName}__${type}`\r\n }\r\n\r\n /**\r\n * 是否是指定类型模块\r\n * @param dom \r\n * @param type \r\n * @returns \r\n */\r\n static hasBlockByType(dom: HTMLElement,type:string): boolean {\r\n return dom.classList.contains(BaseBlockNode.getMarkClassName(type))\r\n }\r\n\r\n /**\r\n * 导出json\r\n * @returns \r\n */\r\n exportJSON(): SerializedBlockNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.__type,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 获取标识类名\r\n */\r\n getMarkClassName(){\r\n return BaseBlockNode.getMarkClassName(this.__type)\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const element = document.createElement('div')\r\n\r\n if (!element.classList.contains(this.getMarkClassName())) {\r\n element.classList.add(this.getMarkClassName());\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n const el = this.exportDOM().element as HTMLElement;\r\n el.setAttribute(\"node-key\",this.__key)\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: BaseBlockNode, dom: HTMLElement, config: EditorConfig): boolean {\r\n // console.log(\"Image Text updateDOM\",prevNode,dom);\r\n // const position = this.__pos\r\n // if (position !== prevNode.__pos) {\r\n // const className = `${config.theme.image} position-${position}`\r\n // if (className !== undefined) {\r\n // dom.className = className\r\n // }\r\n // }\r\n // const inner = dom.firstChild\r\n // if (inner === null){ return true }\r\n // super.updateDOM(prevNode, inner as HTMLElement, config)\r\n return false\r\n }\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n\r\n}\r\n"],"names":["ElementNode"],"mappings":";;;AAiBA,MAAM,oBAAoB;AAKnB,MAAM,sBAAsBA,QAAAA,YAAY;AAAA,EAE7C,YAAY,MAAe,KAAe;AACxC,UAAM,GAAG;AACT,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOC,OAAO,iBAAiB,MAAqB;AACrC,WAAA,GAAG,iBAAiB,KAAK,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,KAAiB,MAAsB;AAC3D,WAAO,IAAI,UAAU,SAAS,cAAc,iBAAiB,IAAI,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAkC;AACzB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAkB;AACT,WAAA,cAAc,iBAAiB,KAAK,MAAM;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,UAAU,SAAS,cAAc,KAAK;AAE5C,QAAI,CAAC,QAAQ,UAAU,SAAS,KAAK,iBAAA,CAAkB,GAAG;AACxD,cAAQ,UAAU,IAAI,KAAK,iBAAkB,CAAA;AAAA,IAC/C;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AACrC,UAAA,KAAK,KAAK,UAAA,EAAY;AACzB,OAAA,aAAa,YAAW,KAAK,KAAK;AAC9B,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAAyB,KAAkB,QAA+B;AAY3E,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoB;AACX,WAAA;AAAA,EACT;AAEF;;"}
@@ -1,13 +0,0 @@
1
- import { createCommand } from "lexical";
2
- import "@lexical/utils";
3
- import "vue";
4
- import "lexical-vue";
5
- const SELECTED_DECORATORMODULE_COMMAND = createCommand("SELECTED_DECORATORMODULE_COMMAND");
6
- const REMOVE_DECORATORMODULE_COMMAND = createCommand("REMOVE_DECORATORMODULE_COMMAND");
7
- const UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND = createCommand("UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND");
8
- export {
9
- REMOVE_DECORATORMODULE_COMMAND,
10
- SELECTED_DECORATORMODULE_COMMAND,
11
- UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND
12
- };
13
- //# sourceMappingURL=decorator-module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorator-module.js","sources":["../../../../../../src/components/basic/doc-editor/core/decorator-module.ts"],"sourcesContent":["\r\nimport type { BaseSelection, LexicalCommand,NodeKey } from 'lexical'\r\nimport {\r\n createCommand,DecoratorNode,\r\n $getSelection, $isNodeSelection,\r\n CLICK_COMMAND, COMMAND_PRIORITY_LOW,\r\n TextNode,\r\n EditorConfig\r\n} from \"lexical\";\r\nimport { mergeRegister } from \"@lexical/utils\";\r\nimport { type Component,watch,ref } from \"vue\"\r\nimport {\r\n useLexicalComposer,\r\n useLexicalNodeSelection,\r\n useMounted,\r\n} from \"lexical-vue\";\r\n\r\n/**\r\n * toolsbar的函数\r\n */\r\nexport type ToolsbarFunction = (selection:BaseSelection|null)=>Array<any>|null;\r\n\r\n/**\r\n * 组件选中\r\n */\r\nexport type DecoratorModuleSelectEventType = {\r\n element:HTMLElement,\r\n toolsbars:Array<any>|ToolsbarFunction\r\n}\r\n\r\n/**\r\n * 选中装饰模块\r\n */\r\nexport const SELECTED_DECORATORMODULE_COMMAND: LexicalCommand<DecoratorModuleSelectEventType|null> = createCommand('SELECTED_DECORATORMODULE_COMMAND')\r\n\r\n/**\r\n * 移除装饰器模块\r\n */\r\nexport const REMOVE_DECORATORMODULE_COMMAND: LexicalCommand<undefined|null> = createCommand('REMOVE_DECORATORMODULE_COMMAND')\r\n\r\n/**\r\n * 更新模块工具条位置信息\r\n */\r\nexport const UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND: LexicalCommand<undefined|null> = createCommand('UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND')\r\n\r\n/**\r\n * 装饰模块\r\n */\r\nexport class DecoratorModuleBlockNode extends DecoratorNode<Component> {\r\n\r\n constructor( key?: NodeKey) {\r\n super(key)\r\n }\r\n\r\n createDOM() {\r\n return document.createElement('div')\r\n }\r\n\r\n updateDOM(\r\n prevNode: TextNode,\r\n dom: HTMLElement,\r\n config: EditorConfig,\r\n ): boolean {\r\n return false\r\n }\r\n \r\n /**\r\n * 标识非行内组件\r\n * @returns \r\n */\r\n isInline() { return false; }\r\n\r\n /**\r\n * 是否隔离\r\n * @returns \r\n */\r\n isIsolated(){ return true; }\r\n \r\n /**\r\n * 允许键盘选中\r\n * @returns \r\n */\r\n isKeyboardSelectable(){ return true; }\r\n \r\n}\r\n\r\n\r\n/**\r\n * 使用装饰模块\r\n */\r\nexport const useDecoratorModule = (nodeKey:any,toolsbars:Array<any>|ToolsbarFunction)=>{\r\n\r\n // 编辑器\r\n\r\n const curSelectEl = ref<any>(null)\r\n const editor = useLexicalComposer();\r\n const { isSelected, setSelected, clearSelection } = useLexicalNodeSelection(nodeKey);\r\n\r\n // 是否选中\r\n watch(isSelected,(v)=>{\r\n if(v && curSelectEl.value != null){\r\n // 选中后显示工具条\r\n editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND,{ \r\n element:curSelectEl.value,\r\n toolsbars:toolsbars\r\n });\r\n }\r\n else{\r\n // 没选中\r\n curSelectEl.value = null;\r\n editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND,null);\r\n }\r\n })\r\n\r\n // 编辑器挂载的时候\r\n useMounted(() => {\r\n\r\n return mergeRegister(\r\n // \r\n // 选中\r\n editor.registerCommand<MouseEvent>(CLICK_COMMAND,(event) => {\r\n \r\n // 选中当前对象\r\n if (event.target === curSelectEl.value) {\r\n\r\n event.preventDefault();\r\n\r\n if (!event.shiftKey) { clearSelection(); }\r\n\r\n setSelected(true);\r\n\r\n return true;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n );\r\n });\r\n\r\n return { isSelected,curSelectEl }\r\n}\r\n\r\n/**\r\n * 使用装饰模块工具条\r\n */\r\nexport const useDecoratorModuleTools = (selectFunc:Function)=>{\r\n\r\n // 编辑器\r\n const editor = useLexicalComposer();\r\n\r\n // 编辑器挂载的时候\r\n useMounted(() => {\r\n\r\n return mergeRegister(\r\n editor.registerCommand(SELECTED_DECORATORMODULE_COMMAND, () => {\r\n \r\n const selection = $getSelection();\r\n \r\n if($isNodeSelection(selection)){\r\n selectFunc(selection);\r\n }\r\n\r\n return false;\r\n },1)\r\n );\r\n });\r\n\r\n}\r\n\r\n\r\n"],"names":[],"mappings":";;;;AAiCa,MAAA,mCAAwF,cAAc,kCAAkC;AAKxI,MAAA,iCAAiE,cAAc,gCAAgC;AAK/G,MAAA,6CAA6E,cAAc,4CAA4C;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"element-module.js","sources":["../../../../../../src/components/basic/doc-editor/core/element-module.ts"],"sourcesContent":["\r\n\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { COMMAND_PRIORITY_LOW,CLICK_COMMAND } from 'lexical'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { ref,computed,watch } from 'vue'\r\nimport { \r\n SELECTED_DECORATORMODULE_COMMAND,\r\n ToolsbarFunction\r\n} from './decorator-module'\r\nimport { \r\n isNodeSelected,setSelected,clearSelection,\r\n} from './utils'\r\n\r\n/**\r\n * 判断选中的方法\r\n */\r\nexport type SelectExistFunc = (el:HTMLElement)=>HTMLElement|null\r\n\r\n/**\r\n * 使用元素模块\r\n * @param toolsbars \r\n */\r\nexport const useElementModule = (func:SelectExistFunc,toolsbars:Array<any>|ToolsbarFunction)=>{\r\n\r\n const editor = useLexicalComposer()\r\n const isSelected = ref(false)\r\n const curSelectKey = ref<any>(null)\r\n const curSelectPos = ref<any>(null)\r\n const curSelectEl = ref<any>(null)\r\n \r\n // 更新选中\r\n const updateActiveViewState = (el:Element|null)=>{\r\n \r\n if(el){\r\n \r\n const selectRect = el.getBoundingClientRect();\r\n \r\n curSelectPos.value = {\r\n top:`${selectRect.y}px`,left:`${selectRect.x}px`,\r\n width:`${selectRect.width}px`,height:`${selectRect.height}px`\r\n };\r\n \r\n editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND,{ \r\n element:curSelectEl.value,\r\n toolsbars:toolsbars\r\n });\r\n }\r\n else{\r\n curSelectEl.value = null;\r\n curSelectKey.value = null;\r\n curSelectPos.value = null;\r\n editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND,null);\r\n }\r\n }\r\n \r\n // 是否选中\r\n watch(isSelected,(state)=>{\r\n return updateActiveViewState(state ? curSelectEl.value : null);\r\n })\r\n \r\n // 编辑器挂载\r\n useMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 更新选中状态\r\n editor.registerUpdateListener(() => {\r\n isSelected.value = isNodeSelected(editor, curSelectKey.value);\r\n }),\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 if (!event.shiftKey) { clearSelection(editor); }\r\n\r\n setSelected(editor,true,nodeKey);\r\n \r\n setTimeout(() => {\r\n curSelectEl.value = el;\r\n curSelectKey.value = nodeKey;\r\n isSelected.value = isNodeSelected(editor, nodeKey);\r\n }, 1);\r\n return true;\r\n }\r\n \r\n return false;\r\n }, COMMAND_PRIORITY_LOW)\r\n )\r\n })\r\n\r\n\r\n return { isSelected, curSelectKey,curSelectPos,updateActiveViewState };\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;;AAuBa,MAAA,mBAAmB,CAAC,MAAqB,cAAwC;AAE5F,QAAM,SAAS;AACT,QAAA,aAAa,IAAI,KAAK;AACtB,QAAA,eAAe,IAAS,IAAI;AAC5B,QAAA,eAAe,IAAS,IAAI;AAC5B,QAAA,cAAc,IAAS,IAAI;AAG3B,QAAA,wBAAwB,CAAC,OAAkB;AAE/C,QAAG,IAAG;AAEE,YAAA,aAAa,GAAG;AAEtB,mBAAa,QAAQ;AAAA,QACnB,KAAI,GAAG,WAAW,CAAC;AAAA,QAAK,MAAK,GAAG,WAAW,CAAC;AAAA,QAC5C,OAAM,GAAG,WAAW,KAAK;AAAA,QAAK,QAAO,GAAG,WAAW,MAAM;AAAA,MAAA;AAG3D,aAAO,gBAAgB,kCAAiC;AAAA,QACtD,SAAQ,YAAY;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,IAAA,OAEC;AACF,kBAAY,QAAQ;AACpB,mBAAa,QAAQ;AACrB,mBAAa,QAAQ;AACd,aAAA,gBAAgB,kCAAiC,IAAI;AAAA,IAC9D;AAAA,EAAA;AAII,QAAA,YAAW,CAAC,UAAQ;AACxB,WAAO,sBAAsB,QAAQ,YAAY,QAAQ,IAAI;AAAA,EAAA,CAC9D;AAGD,aAAW,MAAI;AAEN,WAAA;AAAA;AAAA,MAEL,OAAO,uBAAuB,MAAM;AAClC,mBAAW,QAAQ,eAAe,QAAQ,aAAa,KAAK;AAAA,MAAA,CAC7D;AAAA;AAAA,MAED,OAAO,gBAA4B,eAAc,CAAC,UAAU;AAEpD,cAAA,KAAK,KAAK,MAAM,MAAqB;AACrC,cAAA,UAAU,yBAAI,aAAa;AAGjC,YAAG,WAAW,MAAK;AAEjB,gBAAM,eAAe;AAEjB,cAAA,CAAC,MAAM,UAAU;AAAE,2BAAe,MAAM;AAAA,UAAI;AAEpC,sBAAA,QAAO,MAAK,OAAO;AAE/B,qBAAW,MAAM;AACf,wBAAY,QAAQ;AACpB,yBAAa,QAAQ;AACV,uBAAA,QAAQ,eAAe,QAAQ,OAAO;AAAA,aAChD,CAAC;AACG,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,SACN,oBAAoB;AAAA,IAAA;AAAA,EACzB,CACD;AAGD,SAAO,EAAE,YAAY,cAAa,cAAa,sBAAsB;AAEvE;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { type CommandListenerPriority, $isNodeSelection, $getSelection } from 'lexical'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer, useMounted } from 'lexical-vue'\r\nimport { ref, reactive, shallowRef, nextTick, watch } from 'vue'\r\nimport {\r\n UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, SELECTED_DECORATORMODULE_COMMAND, REMOVE_DECORATORMODULE_COMMAND,\r\n type DecoratorModuleSelectEventType, DEVICE_VIEW_MODE,\r\n ToolsbarFunction\r\n} from \"../../core\"\r\n\r\n// 点击工具条按钮\r\nconst lowPriority: CommandListenerPriority = 1\r\nconst editor = useLexicalComposer()\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst selectPayload = shallowRef<DecoratorModuleSelectEventType | null>(null);\r\nconst toolsPos = reactive({ left: \"px\", top: \"0px\" });\r\n\r\nwatch(DEVICE_VIEW_MODE, () => {\r\n editor.dispatchCommand(UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, null);\r\n})\r\n\r\n\r\n// 更新工具条坐标\r\nconst updateToolsPos = () => {\r\n\r\n nextTick(() => {\r\n if (selectPayload.value != null && toolbarRef.value != null) {\r\n const editIframeRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_iframe\").getBoundingClientRect();\r\n const editBodyRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_body\").getBoundingClientRect();\r\n const baseY = editIframeRect.y - editBodyRect.y;\r\n const selectRect = selectPayload.value.element.getBoundingClientRect();\r\n const toolsRect = toolbarRef.value.getBoundingClientRect();\r\n if (toolsRect) {\r\n // 中心点\r\n toolsPos.top = Math.max(selectRect.y - toolsRect.height - 5 + baseY, 5 + baseY) + \"px\"\r\n toolsPos.left = toolsRect.width / -2 + selectRect.x + selectRect.width / 2 + \"px\";\r\n }\r\n }\r\n })\r\n return false;\r\n}\r\n\r\nuseMounted(() => {\r\n return mergeRegister(\r\n editor.registerCommand(UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),\r\n editor.registerUpdateListener(({ editorState }) => editorState.read(() => updateToolsPos())),\r\n // 选中模块\r\n editor.registerCommand(SELECTED_DECORATORMODULE_COMMAND, (payload: DecoratorModuleSelectEventType) => {\r\n\r\n\r\n if (payload != null) {\r\n let toolsbarList = [];\r\n\r\n // 如果是函数的话\r\n if (typeof payload.toolsbars == \"function\") {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n toolsbarList = payload.toolsbars(selection) ?? [];\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars(null) ?? [];\r\n }\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars;\r\n }\r\n\r\n selectPayload.value = {\r\n element: payload.element,\r\n toolsbars: toolsbarList\r\n };\r\n }\r\n else {\r\n selectPayload.value = null;\r\n }\r\n\r\n return updateToolsPos();\r\n }, lowPriority),\r\n // 删除模块\r\n editor.registerCommand(REMOVE_DECORATORMODULE_COMMAND, () => {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n\r\n selection.getNodes().forEach(node => node.remove());\r\n\r\n // 没选中\r\n editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND, null);\r\n }\r\n return false;\r\n }, lowPriority)\r\n // editor.registerCommand(SELECTION_CHANGE_COMMAND, (payload, newEditor) => {\r\n\r\n // const selection = $getSelection();\r\n\r\n // if($isNodeSelection(selection)){\r\n\r\n // const node = selection.getNodes()[0]\r\n\r\n // console.log(node,node.getTopLevelElement());\r\n // }\r\n\r\n // return updateToolsPos();\r\n // },lowPriority)\r\n )\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div v-if=\"selectPayload != null\" ref=\"toolbarRef\" class=\"mk-doc-editor-decorator-module-toolbar\" :style=\"toolsPos\">\r\n <el-button-group>\r\n\r\n <template v-for=\"item in selectPayload.toolsbars as any[]\">\r\n <el-tooltip effect=\"dark\" :content=\"item.title\" placement=\"top\">\r\n <el-button text @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" />\r\n </el-button>\r\n </el-tooltip>\r\n </template>\r\n <el-tooltip effect=\"dark\" content=\"删除\" placement=\"top\">\r\n <el-button text type=\"danger\" @click=\"editor.dispatchCommand(REMOVE_DECORATORMODULE_COMMAND, null)\">\r\n <MKSvgIcon :iconClass=\"`Delete`\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,cAAuC;;;;AAC7C,UAAM,SAAS;AACT,UAAA,aAAa,IAA2B,IAAI;AAC5C,UAAA,gBAAgB,WAAkD,IAAI;AAC5E,UAAM,WAAW,SAAS,EAAE,MAAM,MAAM,KAAK,OAAO;AAEpD,UAAM,kBAAkB,MAAM;AACrB,aAAA,gBAAgB,4CAA4C,IAAI;AAAA,IAAA,CACxE;AAID,UAAM,iBAAiB,MAAM;AAE3B,eAAS,MAAM;AACb,YAAI,cAAc,SAAS,QAAQ,WAAW,SAAS,MAAM;AACrD,gBAAA,iBAAkB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,8BAA8B,EAAE;AAC5G,gBAAA,eAAgB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,4BAA4B,EAAE;AACxG,gBAAA,QAAQ,eAAe,IAAI,aAAa;AAC9C,gBAAM,aAAa,cAAc,MAAM,QAAQ,sBAAsB;AAC/D,gBAAA,YAAY,WAAW,MAAM,sBAAsB;AACzD,cAAI,WAAW;AAEJ,qBAAA,MAAM,KAAK,IAAI,WAAW,IAAI,UAAU,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI;AACzE,qBAAA,OAAO,UAAU,QAAQ,KAAK,WAAW,IAAI,WAAW,QAAQ,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MAAA,CACD;AACM,aAAA;AAAA,IAAA;AAGT,eAAW,MAAM;AACR,aAAA;AAAA,QACL,OAAO,gBAAgB,4CAA4C,MAAM,eAAA,GAAkB,WAAW;AAAA,QACtG,OAAO,uBAAuB,CAAC,EAAE,YAAA,MAAkB,YAAY,KAAK,MAAM,eAAe,CAAC,CAAC;AAAA;AAAA,QAE3F,OAAO,gBAAgB,kCAAkC,CAAC,YAA4C;AAGpG,cAAI,WAAW,MAAM;AACnB,gBAAI,eAAe,CAAA;AAGf,gBAAA,OAAO,QAAQ,aAAa,YAAY;AAE1C,oBAAM,YAAY;AAEd,kBAAA,iBAAiB,SAAS,GAAG;AAC/B,+BAAe,QAAQ,UAAU,SAAS,KAAK,CAAA;AAAA,cAAC,OAE7C;AACH,+BAAe,QAAQ,UAAU,IAAI,KAAK,CAAA;AAAA,cAC5C;AAAA,YAAA,OAEG;AACH,6BAAe,QAAQ;AAAA,YACzB;AAEA,0BAAc,QAAQ;AAAA,cACpB,SAAS,QAAQ;AAAA,cACjB,WAAW;AAAA,YAAA;AAAA,UACb,OAEG;AACH,0BAAc,QAAQ;AAAA,UACxB;AAEA,iBAAO,eAAe;AAAA,WACrB,WAAW;AAAA;AAAA,QAEd,OAAO,gBAAgB,gCAAgC,MAAM;AAE3D,gBAAM,YAAY;AAEd,cAAA,iBAAiB,SAAS,GAAG;AAE/B,sBAAU,WAAW,QAAQ,CAAQ,SAAA,KAAK,QAAQ;AAG3C,mBAAA,gBAAgB,kCAAkC,IAAI;AAAA,UAC/D;AACO,iBAAA;AAAA,WACN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAchB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}