@maketribe/ms-app 3.2.25 → 3.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) 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-block.js +92 -0
  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 +20 -13
  8. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
  9. package/dist/cjs/components/basic/doc-editor/editor.vue.js +4 -4
  10. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  11. package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  12. package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  13. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  14. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  15. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  16. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  17. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
  18. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  19. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
  20. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  21. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
  22. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  23. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +217 -0
  24. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  25. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
  26. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  27. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +54 -43
  28. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  29. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +19 -16
  30. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  31. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +32 -54
  32. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  33. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  34. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  35. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  36. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  37. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +80 -105
  38. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  39. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  40. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  41. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  42. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  43. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  44. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +34 -7
  45. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  46. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  47. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  48. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +41 -5
  49. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  50. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js +10 -4
  51. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  52. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  53. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  54. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  55. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  56. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  57. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  58. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
  59. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  60. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  61. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  62. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  63. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
  64. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  65. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
  66. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  67. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
  68. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  69. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
  70. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  71. package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
  72. package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
  73. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
  74. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  75. package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
  76. package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
  77. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
  78. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  79. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
  80. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  81. package/dist/cjs/modules/cms/cms-settings.js +4 -0
  82. package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
  83. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  84. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  85. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  86. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  87. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +8 -6
  88. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  89. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  90. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  91. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
  92. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  93. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
  94. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  95. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
  96. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  97. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  98. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  99. package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
  100. package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
  101. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js +7 -1
  102. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  103. package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
  104. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
  105. package/dist/esm/assets/iconfonts/iconfont.js +1 -1
  106. package/dist/esm/assets/iconfonts/iconfont.js.map +1 -1
  107. package/dist/esm/components/basic/doc-editor/core/element-block.js +92 -0
  108. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -0
  109. package/dist/esm/components/basic/doc-editor/core/index.js +6 -7
  110. package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
  111. package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
  112. package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
  113. package/dist/esm/components/basic/doc-editor/editor.vue.js +4 -4
  114. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  115. package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  116. package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  117. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  118. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  119. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  120. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  121. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
  122. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  123. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
  124. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  125. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
  126. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  127. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +218 -0
  128. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  129. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
  130. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  131. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +55 -44
  132. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  133. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +20 -17
  134. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  135. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +33 -55
  136. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  137. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  138. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  139. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  140. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  141. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +84 -109
  142. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  143. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  144. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  145. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  146. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  147. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  148. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +37 -10
  149. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  150. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  151. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  152. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +43 -7
  153. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  154. package/dist/esm/components/basic/doc-editor/plugins/nodes.js +10 -4
  155. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  156. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  157. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  158. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  159. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  160. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  161. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  162. package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
  163. package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  164. package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  165. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  166. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  167. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
  168. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  169. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
  170. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  171. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
  172. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  173. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
  174. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  175. package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
  176. package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
  177. package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
  178. package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  179. package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
  180. package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
  181. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
  182. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  183. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
  184. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  185. package/dist/esm/modules/cms/cms-settings.js +4 -0
  186. package/dist/esm/modules/cms/cms-settings.js.map +1 -1
  187. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  188. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  189. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  190. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  191. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +9 -7
  192. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  193. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  194. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  195. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
  196. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  197. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
  198. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  199. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
  200. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  201. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  202. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  203. package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
  204. package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
  205. package/dist/esm/modules/ms/components/image-select/image-select-panel.js +9 -3
  206. package/dist/esm/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  207. package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
  208. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
  209. package/dist/style/components/basic/doc-editor/index.css +1 -1
  210. package/dist/style/components/basic/visual-page-editor/index.css +1 -1
  211. package/dist/style/components/index.css +1 -1
  212. package/dist/style/index.css +2 -2
  213. package/dist/style/src/components/basic/doc-editor/index.scss +2 -0
  214. package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
  215. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +45 -0
  216. package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -4
  217. package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
  218. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +88 -0
  219. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +50 -0
  220. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +72 -0
  221. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +64 -0
  222. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +51 -0
  223. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/index.d.ts +5 -0
  224. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/utils.d.ts +3 -0
  225. package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +24 -20
  226. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +18 -10
  227. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
  228. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/index.d.ts +0 -1
  229. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +0 -6
  230. package/dist/types/components/basic/doc-editor/plugins/index.d.ts +3 -3
  231. package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
  232. package/dist/types/components/basic/dynamic-form-panel/type.d.ts +3 -2
  233. package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
  234. package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
  235. package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
  236. package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
  237. package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
  238. package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
  239. package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
  240. package/dist/types/modules/cms/cms-settings.d.ts +4 -28
  241. package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +1 -0
  242. package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
  243. package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
  244. package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
  245. package/package.json +9 -8
  246. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js +0 -13
  247. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  248. package/dist/cjs/components/basic/doc-editor/core/element-module.js +0 -68
  249. package/dist/cjs/components/basic/doc-editor/core/element-module.js.map +0 -1
  250. package/dist/cjs/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  251. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  252. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  253. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -45
  254. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  255. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  256. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  257. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  258. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  259. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  260. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  261. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
  262. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  263. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  264. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  265. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
  266. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  267. package/dist/esm/components/basic/doc-editor/core/decorator-module.js +0 -13
  268. package/dist/esm/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  269. package/dist/esm/components/basic/doc-editor/core/element-module.js +0 -68
  270. package/dist/esm/components/basic/doc-editor/core/element-module.js.map +0 -1
  271. package/dist/esm/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  272. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  273. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  274. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -46
  275. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  276. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  277. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  278. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  279. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  280. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  281. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  282. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
  283. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  284. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  285. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  286. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
  287. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  288. package/dist/types/components/basic/doc-editor/core/decorator-module.d.ts +0 -60
  289. package/dist/types/components/basic/doc-editor/core/element-module.d.ts +0 -15
  290. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.d.ts +0 -63
  291. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/index.d.ts +0 -1
  292. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.d.ts +0 -86
  293. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleRenderComponent.d.ts +0 -23
  294. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.d.ts +0 -63
  295. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.d.ts +0 -58
  296. package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
  297. package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
  298. package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
  299. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  300. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  301. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  302. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  303. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  304. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  305. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  306. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  307. /package/dist/types/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.d.ts +0 -0
  308. /package/dist/types/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue.d.ts +0 -0
  309. /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
  310. /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
@@ -1,8 +1,6 @@
1
1
  import { ref, reactive } from "vue";
2
- import { REMOVE_DECORATORMODULE_COMMAND, SELECTED_DECORATORMODULE_COMMAND, UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND } from "./decorator-module.js";
3
- import "@lexical/utils";
2
+ import { REMOVE_ELEMENTBLOCK_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, useElementBlockSelection } from "./element-block.js";
4
3
  import "lexical";
5
- import "lexical-vue";
6
4
  const DEVICE_VIEW_MODE = ref("pc");
7
5
  const ToolbarExtendPlugins = reactive([]);
8
6
  const registerDocEditorToolbarExtend = function(options) {
@@ -11,10 +9,11 @@ const registerDocEditorToolbarExtend = function(options) {
11
9
  };
12
10
  export {
13
11
  DEVICE_VIEW_MODE,
14
- REMOVE_DECORATORMODULE_COMMAND,
15
- SELECTED_DECORATORMODULE_COMMAND,
12
+ REMOVE_ELEMENTBLOCK_COMMAND,
13
+ SELECTED_ELEMENTBLOCK_COMMAND,
16
14
  ToolbarExtendPlugins,
17
- UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND,
18
- registerDocEditorToolbarExtend
15
+ UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND,
16
+ registerDocEditorToolbarExtend,
17
+ useElementBlockSelection
19
18
  };
20
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\nimport {\r\n useLexicalComposer\r\n} from \"lexical-vue\";\r\nexport * from \"./decorator-module\"\r\nexport * from \"./element-module\"\r\nexport * from \"./utils\"\r\n\r\nexport type DeviceVieeMode = 'pc' | 'mobile';\r\n\r\nexport const DEVICE_VIEW_MODE = ref<DeviceVieeMode>(\"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\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":";;;;;AAWa,MAAA,mBAAmB,IAAoB,IAAI;AAa3C,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
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/doc-editor/core/index.ts"],"sourcesContent":["\r\nimport { ref,reactive } from \"vue\"\r\nexport * from \"./element-block\"\r\nexport * from \"./utils\"\r\n\r\n/**\r\n * 设备显示模式\r\n */\r\nexport const DEVICE_VIEW_MODE = ref<'pc' | 'mobile'>(\"pc\")\r\n\r\n/**\r\n * 工具条扩展\r\n */\r\nexport type ToolbarExtendPlugin = {\r\n icon: string;\r\n text:string,\r\n action:Function,\r\n sort:number\r\n};\r\n\r\n/**\r\n * 插入的插件列表\r\n */\r\nexport const ToolbarExtendPlugins = reactive<ToolbarExtendPlugin[]>([]);\r\n\r\n/**\r\n * 注册工具条的扩展\r\n * @param options \r\n */\r\nexport const registerDocEditorToolbarExtend = function(options:ToolbarExtendPlugin){\r\n ToolbarExtendPlugins.push(options);\r\n ToolbarExtendPlugins.sort((a,b)=>a.sort<b.sort ? 1:-1);\r\n}\r\n\r\n\r\n"],"names":[],"mappings":";;;AAQa,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;"}
@@ -9,22 +9,29 @@ const isNodeSelected = function(editor, key) {
9
9
  });
10
10
  };
11
11
  const clearSelection = (editor) => {
12
- editor.update(() => {
13
- const selection = $getSelection();
14
- if ($isNodeSelection(selection))
15
- selection.clear();
12
+ return new Promise((resolove) => {
13
+ editor.update(() => {
14
+ const selection = $getSelection();
15
+ if ($isNodeSelection(selection) && selection) {
16
+ selection.clear();
17
+ }
18
+ resolove(void 0);
19
+ });
16
20
  });
17
21
  };
18
22
  const setSelected = (editor, selected, key) => {
19
- editor.update(() => {
20
- let selection = $getSelection();
21
- if (!$isNodeSelection(selection)) {
22
- selection = $createNodeSelection();
23
- $setSelection(selection);
24
- }
25
- if ($isNodeSelection(selection)) {
26
- selection.add(unref(key));
27
- }
23
+ return new Promise((resolove) => {
24
+ editor.update(() => {
25
+ let selection = $getSelection();
26
+ if (!$isNodeSelection(selection)) {
27
+ selection = $createNodeSelection();
28
+ $setSelection(selection);
29
+ }
30
+ if ($isNodeSelection(selection)) {
31
+ selection.add(unref(key));
32
+ }
33
+ resolove(void 0);
34
+ });
28
35
  });
29
36
  };
30
37
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/components/basic/doc-editor/core/utils.ts"],"sourcesContent":["import type { LexicalEditor, NodeKey } from 'lexical'\r\n\r\nimport {\r\n $createNodeSelection,\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $setSelection,\r\n} from 'lexical'\r\nimport { unref } from 'vue'\r\n\r\n// isNodeSelected \r\nexport const isNodeSelected = function (editor: LexicalEditor, key: NodeKey): boolean {\r\n return editor.getEditorState().read(() => {\r\n const node = $getNodeByKey(key)\r\n if (node === null)\r\n return false\r\n return node.isSelected()\r\n })\r\n}\r\n\r\n// 取消选中\r\nexport const clearSelection = (editor: LexicalEditor) => {\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if ($isNodeSelection(selection))\r\n (selection).clear()\r\n })\r\n}\r\n\r\n// 设置选中\r\nexport const setSelected = (editor: LexicalEditor,selected: boolean,key:string) => {\r\n editor.update(() => {\r\n let selection = $getSelection()\r\n\r\n if (!$isNodeSelection(selection)) {\r\n selection = $createNodeSelection()\r\n $setSelection(selection)\r\n }\r\n if ($isNodeSelection(selection)) {\r\n if (selected)\r\n selection.add(unref(key))\r\n else\r\n selection.delete(unref(key))\r\n }\r\n })\r\n}\r\n\r\n"],"names":[],"mappings":";;AAYa,MAAA,iBAAiB,SAAU,QAAuB,KAAuB;AACpF,SAAO,OAAO,iBAAiB,KAAK,MAAM;AAClC,UAAA,OAAO,cAAc,GAAG;AAC9B,QAAI,SAAS;AACJ,aAAA;AACT,WAAO,KAAK;EAAW,CACxB;AACH;AAGa,MAAA,iBAAiB,CAAC,WAA0B;AACvD,SAAO,OAAO,MAAM;AAClB,UAAM,YAAY;AAClB,QAAI,iBAAiB,SAAS;AAC3B,gBAAW,MAAM;AAAA,EAAA,CACrB;AACH;AAGO,MAAM,cAAc,CAAC,QAAsB,UAAkB,QAAe;AACjF,SAAO,OAAO,MAAM;AAClB,QAAI,YAAY;AAEZ,QAAA,CAAC,iBAAiB,SAAS,GAAG;AAChC,kBAAY,qBAAqB;AACjC,oBAAc,SAAS;AAAA,IACzB;AACI,QAAA,iBAAiB,SAAS,GAAG;AAEnB,gBAAA,IAAI,MAAM,GAAG,CAAC;AAAA,IAG5B;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/components/basic/doc-editor/core/utils.ts"],"sourcesContent":["import type { LexicalEditor, NodeKey } from 'lexical'\r\n\r\nimport {\r\n $createNodeSelection,\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $setSelection,\r\n} from 'lexical'\r\nimport { unref } from 'vue'\r\n\r\n// isNodeSelected \r\nexport const isNodeSelected = function (editor: LexicalEditor, key: NodeKey): boolean {\r\n return editor.getEditorState().read(() => {\r\n const node = $getNodeByKey(key)\r\n if (node === null)\r\n return false\r\n return node.isSelected()\r\n })\r\n}\r\n\r\n// 取消选中\r\nexport const clearSelection = (editor: LexicalEditor):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\nexport const 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"],"names":[],"mappings":";;AAYa,MAAA,iBAAiB,SAAU,QAAuB,KAAuB;AACpF,SAAO,OAAO,iBAAiB,KAAK,MAAM;AAClC,UAAA,OAAO,cAAc,GAAG;AAC9B,QAAI,SAAS;AACJ,aAAA;AACT,WAAO,KAAK;EAAW,CACxB;AACH;AAGa,MAAA,iBAAiB,CAAC,WAA6C;AACnE,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;AAGO,MAAM,cAAc,CAAC,QAAsB,UAAkB,QAAkC;AAE7F,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;"}
@@ -1,12 +1,12 @@
1
1
  import { defineComponent, ref, computed, onMounted, watch, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, createVNode, renderSlot, Teleport, createCommentVNode } from "vue";
2
2
  import { LexicalComposer, LexicalAutoFocusPlugin, LexicalCheckListPlugin, LexicalHashtagPlugin, LexicalListPlugin, LexicalHistoryPlugin } from "lexical-vue";
3
- import _sfc_main$5 from "./plugins/AutoLinkPlugin/index.vue.js";
3
+ import _sfc_main$4 from "./plugins/AutoLinkPlugin/index.vue.js";
4
4
  import _sfc_main$3 from "./plugins/ImagePlugin/index.vue.js";
5
- import _sfc_main$4 from "./plugins/ImageTextPlugin/index.vue.js";
6
5
  import _sfc_main$1 from "./plugins/ToolbarPlugin/index.vue.js";
7
6
  import _sfc_main$2 from "./plugins/RichTextPlugin/index.vue.js";
8
- import _sfc_main$7 from "./plugins/DecoratorModuleToolbarPlugin/index.vue.js";
9
- import _sfc_main$6 from "./plugins/ModulePlugin/index.vue.js";
7
+ import _sfc_main$7 from "./plugins/ElementBlockSelectionPlugin/index.vue.js";
8
+ import _sfc_main$5 from "./plugins/ModulePlugin/index.vue.js";
9
+ import _sfc_main$6 from "./plugins/GridPlugin/index.vue.js";
10
10
  import Nodes from "./plugins/nodes.js";
11
11
  import { useModules } from "./plugins/ModulePlugin/composables.js";
12
12
  import { DEVICE_VIEW_MODE } from "./core/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <ImageTextPlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n </Teleport>\r\n <DecoratorModuleToolbarPlugin />\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 ImageTextPlugin,\r\n DecoratorModuleToolbarPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport { useModules } from \"./plugins/ModulePlugin/composables\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\r\n setTimeout(() => {\r\n if(iframeBody.value?.scrollHeight > iframeBody.value?.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n\r\n // 默认样式\r\n style.innerHTML = [DocEditorCss,DocThemeCss,DocEditorEditCss].join(\"\\r\\n\");\r\n\r\n //模块渲染样式\r\n style.innerHTML += useModules().filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\r\n\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n props.css.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const link = document.createElement(\"link\");\r\n link.href = path;\r\n link.setAttribute(\"rel\",\"stylesheet\")\r\n link.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(link);\r\n })\r\n\r\n // 设备显示模式改变\r\n watch(DEVICE_VIEW_MODE,(payload: string) => {\r\n doc.body.style.fontSize = payload == \"pc\" ? \"14px\" : \"18px\";\r\n updateStage();\r\n return false\r\n },{ immediate :true})\r\n\r\n // 初始化计算舞台\r\n setTimeout(()=> updateStage(),500)\r\n});\r\n\r\n</script>\r\n"],"names":["DocNodes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,UAAM,OAAO;AAGb,UAAM,QAAQ;AASd,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;AAG7C,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AAGpC,YAAM,YAAY,CAAC,cAAa,aAAY,gBAAgB,EAAE,KAAK,MAAM;AAGzE,YAAM,aAAa,WAAA,EAAa,OAAO,UAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAE9F,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;AACK,YAAA,IAAI,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAChD,cAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,aAAK,OAAO;AACP,aAAA,aAAa,OAAM,YAAY;AAC/B,aAAA,aAAa,eAAc,MAAM;AAClC,YAAA,KAAK,OAAO,IAAI;AAAA,MAAA,CACrB;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
+ {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/doc-editor/editor.vue"],"sourcesContent":["<template>\r\n <LexicalComposer :initial-config=\"config\">\r\n <div class=\"mk-doc-editor\" :class=\"DEVICE_VIEW_MODE\">\r\n <ToolbarPlugin :js=\"js\" :css=\"css\" />\r\n <div class=\"mk-doc-editor__stage_warp\">\r\n <slot name=\"before-extentions\"></slot>\r\n <div class=\"mk-doc-editor__stage_body\">\r\n <slot name=\"header\"></slot>\r\n <iframe title=\"iframe\" class=\"mk-doc-editor__stage_iframe\" ref=\"iframeContentRef\"></iframe>\r\n <Teleport v-if=\"iframeBody\" :to=\"iframeBody\">\r\n <RichTextPlugin :content=\"props.content\" @change=\"contentChangeHandle\" :placeholder=\"placeholder\">\r\n </RichTextPlugin>\r\n <ImagePlugin />\r\n <AutoLinkPlugin />\r\n <ModulePlugin />\r\n <GridPlugin />\r\n </Teleport>\r\n <ElementBlockSelectionPlugin />\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n <slot name=\"after-extentions\"></slot>\r\n </div>\r\n \r\n </div>\r\n <LexicalAutoFocusPlugin />\r\n <LexicalCheckListPlugin />\r\n <LexicalHashtagPlugin />\r\n <LexicalListPlugin />\r\n <LexicalHistoryPlugin />\r\n </LexicalComposer>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport {\r\n LexicalComposer,\r\n LexicalAutoFocusPlugin,\r\n LexicalCheckListPlugin,\r\n LexicalHashtagPlugin,\r\n LexicalHistoryPlugin,\r\n LexicalListPlugin,\r\n} from 'lexical-vue'\r\nimport { \r\n ToolbarPlugin,\r\n RichTextPlugin,\r\n AutoLinkPlugin,\r\n ImagePlugin,\r\n ElementBlockSelectionPlugin,\r\n GridPlugin,\r\n ModulePlugin\r\n} from \"./plugins\"\r\nimport { useModules } from \"./plugins/ModulePlugin/composables\"\r\nimport { DEVICE_VIEW_MODE } from \"./core\"\r\n\r\nimport DocTheme from \"./themes/DocTheme\";\r\nimport DocNodes from \"./plugins/nodes\"\r\nimport DocEditorCss from \"./themes/doc-editor.css?raw\";\r\nimport DocEditorEditCss from \"./themes/doc-editor-edit.css?raw\";\r\nimport DocThemeCss from \"./themes/doc-theme.css?raw\";\r\n\r\n// 定义组件\r\ndefineOptions({ name: \"MKDocEditor\" })\r\n\r\n// 事件\r\nconst emit = defineEmits(['change']);\r\n\r\n// 参数\r\nconst props = defineProps({\r\n placeholder:{type:String,default:\"这里输入正文...\"},\r\n content:{ type:String,default:`` },\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n \r\n\r\n// 配置\r\nconst config = {\r\n namespace: 'MyEditor',\r\n theme: DocTheme,\r\n nodes: [\r\n ...DocNodes,\r\n ],\r\n onError(error:Error) {\r\n // Catch any errors that occur during Lexical updates and log them\r\n // or throw them as needed. If you don't throw them, Lexical will\r\n // try to recover gracefully without losing user data.\r\n console.error(error)\r\n },\r\n}\r\n\r\n// iframe 编辑器\r\nconst iframeContentRef = ref(null as any);\r\nconst iframeBody = computed(()=>iframeContentRef.value?.contentWindow?.document?.body)\r\n\r\n//内容改变时\r\nconst updateStage = ()=>{\r\n setTimeout(() => {\r\n if(iframeBody.value?.scrollHeight > iframeBody.value?.offsetHeight){\r\n iframeContentRef.value.style.height = (iframeBody.value?.scrollHeight + 10)+\"px\";\r\n }\r\n }, 10);\r\n}\r\nconst contentChangeHandle = (content:any)=>{\r\n emit('change',content);\r\n updateStage();\r\n}\r\n\r\nonMounted(()=>{\r\n\r\n const doc = iframeContentRef.value?.contentWindow?.document;\r\n\r\n // 样式\r\n const style = document.createElement(\"style\");\r\n style.setAttribute(\"type\",\"text/css\")\r\n\r\n // 默认样式\r\n style.innerHTML = [DocEditorCss,DocThemeCss,DocEditorEditCss].join(\"\\r\\n\");\r\n\r\n //模块渲染样式\r\n style.innerHTML += useModules().filter(item=>item.editorCss).map(item=>item.editorCss).join(\"\\r\\n\");\r\n\r\n doc.head.append(style);\r\n\r\n // 扩展的js和css\r\n props.js.split(\",\").filter(item=>!!item).forEach(path=>{\r\n const script = document.createElement(\"script\");\r\n script.src = path;\r\n script.setAttribute(\"crossorigin\",\"true\")\r\n doc.head.append(script);\r\n })\r\n\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,UAAM,OAAO;AAGb,UAAM,QAAQ;AASd,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;AAG7C,YAAA,QAAQ,SAAS,cAAc,OAAO;AACtC,YAAA,aAAa,QAAO,UAAU;AAGpC,YAAM,YAAY,CAAC,cAAa,aAAY,gBAAgB,EAAE,KAAK,MAAM;AAGzE,YAAM,aAAa,WAAA,EAAa,OAAO,UAAM,KAAK,SAAS,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS,EAAE,KAAK,MAAM;AAE9F,UAAA,KAAK,OAAO,KAAK;AAGf,YAAA,GAAG,MAAM,GAAG,EAAE,OAAO,CAAM,SAAA,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAM,SAAA;AAC/C,cAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,eAAO,MAAM;AACN,eAAA,aAAa,eAAc,MAAM;AACpC,YAAA,KAAK,OAAO,MAAM;AAAA,MAAA,CACvB;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,7 +3,7 @@ import { $getSelection, $isNodeSelection } from "lexical";
3
3
  import { mergeRegister } from "@lexical/utils";
4
4
  import { useLexicalComposer, useMounted } from "lexical-vue";
5
5
  import { DEVICE_VIEW_MODE } from "../../core/index.js";
6
- import { UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, SELECTED_DECORATORMODULE_COMMAND, REMOVE_DECORATORMODULE_COMMAND } from "../../core/decorator-module.js";
6
+ import { UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, REMOVE_ELEMENTBLOCK_COMMAND } from "../../core/element-block.js";
7
7
  const lowPriority = 1;
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  __name: "index",
@@ -13,7 +13,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  const selectPayload = shallowRef(null);
14
14
  const toolsPos = reactive({ left: "px", top: "0px" });
15
15
  watch(DEVICE_VIEW_MODE, () => {
16
- editor.dispatchCommand(UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, null);
16
+ editor.dispatchCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, null);
17
17
  });
18
18
  const updateToolsPos = () => {
19
19
  nextTick(() => {
@@ -33,10 +33,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
33
33
  };
34
34
  useMounted(() => {
35
35
  return mergeRegister(
36
- editor.registerCommand(UPDATE_DECORATORMODULE_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),
37
- editor.registerUpdateListener(({ editorState }) => editorState.read(() => updateToolsPos())),
36
+ editor.registerCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),
37
+ editor.registerUpdateListener(() => setTimeout(() => updateToolsPos(), 50)),
38
38
  // 选中模块
39
- editor.registerCommand(SELECTED_DECORATORMODULE_COMMAND, (payload) => {
39
+ editor.registerCommand(SELECTED_ELEMENTBLOCK_COMMAND, (payload) => {
40
40
  if (payload != null) {
41
41
  let toolsbarList = [];
42
42
  if (typeof payload.toolsbars == "function") {
@@ -59,11 +59,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
59
59
  return updateToolsPos();
60
60
  }, lowPriority),
61
61
  // 删除模块
62
- editor.registerCommand(REMOVE_DECORATORMODULE_COMMAND, () => {
62
+ editor.registerCommand(REMOVE_ELEMENTBLOCK_COMMAND, () => {
63
63
  const selection = $getSelection();
64
64
  if ($isNodeSelection(selection)) {
65
65
  selection.getNodes().forEach((node) => node.remove());
66
- editor.dispatchCommand(SELECTED_DECORATORMODULE_COMMAND, null);
66
+ editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);
67
67
  }
68
68
  return false;
69
69
  }, lowPriority)
@@ -122,7 +122,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
122
122
  createVNode(_component_el_button, {
123
123
  text: "",
124
124
  type: "danger",
125
- onClick: _cache[0] || (_cache[0] = ($event) => unref(editor).dispatchCommand(unref(REMOVE_DECORATORMODULE_COMMAND), null))
125
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(editor).dispatchCommand(unref(REMOVE_ELEMENTBLOCK_COMMAND), null))
126
126
  }, {
127
127
  default: withCtx(() => [
128
128
  createVNode(_component_MKSvgIcon, { iconClass: `Delete` })
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { type CommandListenerPriority, $isNodeSelection, $getSelection } from 'lexical'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer, useMounted } from 'lexical-vue'\r\nimport { ref, reactive, shallowRef, nextTick, watch } from 'vue'\r\nimport {\r\n UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, REMOVE_ELEMENTBLOCK_COMMAND,\r\n type SelectElementBlocktEventType, DEVICE_VIEW_MODE,\r\n SelectElementBlockToolsbarFunction\r\n} from \"../../core\"\r\n\r\n// 点击工具条按钮\r\nconst lowPriority: CommandListenerPriority = 1\r\nconst editor = useLexicalComposer()\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst selectPayload = shallowRef<SelectElementBlocktEventType | null>(null);\r\nconst toolsPos = reactive({ left: \"px\", top: \"0px\" });\r\n\r\nwatch(DEVICE_VIEW_MODE, () => {\r\n editor.dispatchCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, null);\r\n})\r\n\r\n\r\n// 更新工具条坐标\r\nconst updateToolsPos = () => {\r\n\r\n nextTick(() => {\r\n \r\n if (selectPayload.value != null && toolbarRef.value != null) {\r\n const editIframeRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_iframe\").getBoundingClientRect();\r\n const editBodyRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_body\").getBoundingClientRect();\r\n const baseY = editIframeRect.y - editBodyRect.y;\r\n const selectRect = selectPayload.value.element.getBoundingClientRect();\r\n const toolsRect = toolbarRef.value.getBoundingClientRect();\r\n if (toolsRect) {\r\n // 中心点\r\n toolsPos.top = Math.max(selectRect.y - toolsRect.height - 5 + baseY, 5 + baseY) + \"px\"\r\n toolsPos.left = toolsRect.width / -2 + selectRect.x + selectRect.width / 2 + \"px\";\r\n }\r\n }\r\n })\r\n return false;\r\n}\r\n\r\nuseMounted(() => {\r\n return mergeRegister(\r\n editor.registerCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),\r\n editor.registerUpdateListener(() => setTimeout(()=> updateToolsPos(),50)),\r\n // 选中模块\r\n editor.registerCommand(SELECTED_ELEMENTBLOCK_COMMAND, (payload: SelectElementBlocktEventType) => {\r\n\r\n if (payload != null) {\r\n\r\n let toolsbarList = [];\r\n\r\n // 如果是函数的话\r\n if (typeof payload.toolsbars == \"function\") {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n toolsbarList = payload.toolsbars(selection) ?? [];\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars(null) ?? [];\r\n }\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars;\r\n }\r\n\r\n selectPayload.value = {\r\n element: payload.element,\r\n toolsbars: toolsbarList\r\n };\r\n }\r\n else {\r\n selectPayload.value = null;\r\n }\r\n\r\n return updateToolsPos();\r\n }, lowPriority),\r\n // 删除模块\r\n editor.registerCommand(REMOVE_ELEMENTBLOCK_COMMAND, () => {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n\r\n selection.getNodes().forEach(node => node.remove());\r\n\r\n // 没选中\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);\r\n }\r\n return false;\r\n }, lowPriority)\r\n // editor.registerCommand(SELECTION_CHANGE_COMMAND, (payload, newEditor) => {\r\n\r\n // const selection = $getSelection();\r\n\r\n // if($isNodeSelection(selection)){\r\n\r\n // const node = selection.getNodes()[0]\r\n\r\n // console.log(node,node.getTopLevelElement());\r\n // }\r\n\r\n // return updateToolsPos();\r\n // },lowPriority)\r\n )\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div v-if=\"selectPayload != null\" ref=\"toolbarRef\" class=\"mk-doc-editor-decorator-module-toolbar\" :style=\"toolsPos\">\r\n <el-button-group>\r\n\r\n <template v-for=\"item in selectPayload.toolsbars as any[]\">\r\n <el-tooltip effect=\"dark\" :content=\"item.title\" placement=\"top\">\r\n <el-button text @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" />\r\n </el-button>\r\n </el-tooltip>\r\n </template>\r\n <el-tooltip effect=\"dark\" content=\"删除\" placement=\"top\">\r\n <el-button text type=\"danger\" @click=\"editor.dispatchCommand(REMOVE_ELEMENTBLOCK_COMMAND, null)\">\r\n <MKSvgIcon :iconClass=\"`Delete`\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,cAAuC;;;;AAC7C,UAAM,SAAS;AACT,UAAA,aAAa,IAA2B,IAAI;AAC5C,UAAA,gBAAgB,WAAgD,IAAI;AAC1E,UAAM,WAAW,SAAS,EAAE,MAAM,MAAM,KAAK,OAAO;AAEpD,UAAM,kBAAkB,MAAM;AACrB,aAAA,gBAAgB,yCAAyC,IAAI;AAAA,IAAA,CACrE;AAID,UAAM,iBAAiB,MAAM;AAE3B,eAAS,MAAM;AAEb,YAAI,cAAc,SAAS,QAAQ,WAAW,SAAS,MAAM;AACrD,gBAAA,iBAAkB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,8BAA8B,EAAE;AAC5G,gBAAA,eAAgB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,4BAA4B,EAAE;AACxG,gBAAA,QAAQ,eAAe,IAAI,aAAa;AAC9C,gBAAM,aAAa,cAAc,MAAM,QAAQ,sBAAsB;AAC/D,gBAAA,YAAY,WAAW,MAAM,sBAAsB;AACzD,cAAI,WAAW;AAEJ,qBAAA,MAAM,KAAK,IAAI,WAAW,IAAI,UAAU,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI;AACzE,qBAAA,OAAO,UAAU,QAAQ,KAAK,WAAW,IAAI,WAAW,QAAQ,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MAAA,CACD;AACM,aAAA;AAAA,IAAA;AAGT,eAAW,MAAM;AACR,aAAA;AAAA,QACL,OAAO,gBAAgB,yCAAyC,MAAM,eAAA,GAAkB,WAAW;AAAA,QACnG,OAAO,uBAAuB,MAAO,WAAW,MAAK,eAAe,GAAE,EAAE,CAAC;AAAA;AAAA,QAEzE,OAAO,gBAAgB,+BAA+B,CAAC,YAA0C;AAE/F,cAAI,WAAW,MAAM;AAEnB,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,6BAA6B,MAAM;AAExD,gBAAM,YAAY;AAEd,cAAA,iBAAiB,SAAS,GAAG;AAE/B,sBAAU,WAAW,QAAQ,CAAQ,SAAA,KAAK,QAAQ;AAG3C,mBAAA,gBAAgB,+BAA+B,IAAI;AAAA,UAC5D;AACO,iBAAA;AAAA,WACN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAchB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,164 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { ElementNode } from "lexical";
5
+ class GridNode extends ElementNode {
6
+ constructor(attrs, key) {
7
+ super(key);
8
+ __publicField(this, "__attrs");
9
+ this.__attrs = attrs;
10
+ }
11
+ static getType() {
12
+ return "grid";
13
+ }
14
+ static hasGridNodeByElement(el) {
15
+ return el.classList.contains(GridNode.getMarkClassName()) ? el : null;
16
+ }
17
+ static getMarkClassName() {
18
+ return `mk-doc__${GridNode.getType()}`;
19
+ }
20
+ static getExtraClassName(el) {
21
+ return el.className.replace(GridNode.getMarkClassName(), "").trim();
22
+ }
23
+ static clone(node) {
24
+ return new GridNode(node.__attrs, node.__key);
25
+ }
26
+ static importJSON(serializedNode) {
27
+ return new GridNode(serializedNode.attrs);
28
+ }
29
+ static importDOM() {
30
+ return {
31
+ div: (domNode) => {
32
+ return GridNode.hasGridNodeByElement(domNode) ? {
33
+ conversion: () => {
34
+ return {
35
+ node: new GridNode({
36
+ class: GridNode.getExtraClassName(domNode),
37
+ width: domNode.style.width || "100%",
38
+ height: domNode.style.height,
39
+ flex: domNode.style.flex,
40
+ maxWidth: domNode.style.maxWidth,
41
+ maxHeight: domNode.style.maxHeight
42
+ })
43
+ };
44
+ },
45
+ priority: 1
46
+ } : null;
47
+ }
48
+ };
49
+ }
50
+ /**
51
+ * 设置属性
52
+ * @param pos
53
+ */
54
+ setAttrs(data) {
55
+ const writable = this.getWritable();
56
+ Object.assign(writable.__attrs, data);
57
+ }
58
+ /**
59
+ * 获取属性
60
+ * @param pos
61
+ */
62
+ getAttrs() {
63
+ return this.__attrs;
64
+ }
65
+ /**
66
+ * 导出JSON
67
+ * @returns
68
+ */
69
+ exportJSON() {
70
+ return {
71
+ ...super.exportJSON(),
72
+ type: this.getType(),
73
+ attrs: this.__attrs,
74
+ version: 1
75
+ };
76
+ }
77
+ /**
78
+ * 更新元素属性
79
+ * @param el
80
+ */
81
+ updateElementAttr(el) {
82
+ Object.keys(this.__attrs).forEach((key) => {
83
+ if (["class", "overflowX"].indexOf(key) < 0) {
84
+ el.style[key] = this.__attrs[key];
85
+ }
86
+ });
87
+ }
88
+ /**
89
+ * 获取标识类
90
+ * @returns
91
+ */
92
+ getMarkClassName() {
93
+ return `mk-doc__${this.getType()}`;
94
+ }
95
+ /**
96
+ * 导出DOM
97
+ * @returns
98
+ */
99
+ exportDOM() {
100
+ const element = document.createElement("div");
101
+ this.updateElementAttr(element);
102
+ let extraClassName = GridNode.getExtraClassName(element);
103
+ if (extraClassName != this.__attrs.class) {
104
+ if (extraClassName) {
105
+ element.classList.remove(extraClassName);
106
+ }
107
+ if (this.__attrs.class) {
108
+ element.classList.add(this.__attrs.class);
109
+ }
110
+ }
111
+ if (!element.classList.contains(GridNode.getMarkClassName())) {
112
+ element.classList.add(GridNode.getMarkClassName());
113
+ }
114
+ if (!element.classList.contains(this.getMarkClassName())) {
115
+ element.classList.add(this.getMarkClassName());
116
+ }
117
+ return { element };
118
+ }
119
+ /**
120
+ * 创建渲染DOM
121
+ * @param config
122
+ * @returns
123
+ */
124
+ createDOM(config) {
125
+ const el = this.exportDOM().element;
126
+ el.setAttribute("node-key", this.__key);
127
+ return el;
128
+ }
129
+ /**
130
+ * 更新DOM
131
+ * @param prevNode
132
+ * @param dom
133
+ * @param config
134
+ * @returns
135
+ */
136
+ updateDOM(prevNode, el, config) {
137
+ this.updateElementAttr(el);
138
+ let extraClassName = GridNode.getExtraClassName(el).replace(this.getMarkClassName(), "").trim();
139
+ if (extraClassName != this.__attrs.class) {
140
+ if (extraClassName) {
141
+ el.classList.remove(extraClassName);
142
+ }
143
+ if (this.__attrs.class) {
144
+ el.classList.add(this.__attrs.class);
145
+ }
146
+ }
147
+ return false;
148
+ }
149
+ /**
150
+ * 非内联
151
+ * @returns
152
+ */
153
+ isInline() {
154
+ return false;
155
+ }
156
+ }
157
+ function $isGridNode(node) {
158
+ return node instanceof GridNode;
159
+ }
160
+ export {
161
+ $isGridNode,
162
+ GridNode
163
+ };
164
+ //# sourceMappingURL=GridNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/GridNode.ts"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\nimport type { DOMConversionMap, SerializedElementNode, LexicalNode, NodeKey, Spread,EditorConfig, DOMExportOutput } from 'lexical'\r\nimport { ElementNode } from 'lexical'\r\n\r\n/**\r\n * 容器属性\r\n */\r\nexport type GridNodeAttrType = {\r\n class:string,\r\n width:string,\r\n height:string,\r\n maxWidth:string,\r\n maxHeight:string,\r\n flex:string\r\n};\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedGridNode = Spread<{ attrs:GridNodeAttrType },SerializedElementNode>\r\n\r\n/**\r\n * 格子\r\n */\r\nexport class GridNode extends ElementNode{\r\n\r\n __attrs:GridNodeAttrType\r\n\r\n static getType(): string { return \"grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(GridNode.getMarkClassName()) ? el : null;\r\n }\r\n\r\n static getMarkClassName(): string {\r\n return `mk-doc__${GridNode.getType()}`\r\n }\r\n\r\n static getExtraClassName(el:HTMLElement){\r\n return el.className.replace(GridNode.getMarkClassName(),\"\").trim();\r\n }\r\n\r\n static clone(node: GridNode): GridNode {\r\n \r\n return new GridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedGridNode): GridNode {\r\n return new GridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return GridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n\r\n node:new GridNode({\r\n class:GridNode.getExtraClassName(domNode),\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n flex:domNode.style.flex,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight\r\n } as GridNodeAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:GridNodeAttrType,key?: NodeKey) {\r\n super(key)\r\n this.__attrs = attrs;\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:GridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():GridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(), \r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 更新元素属性\r\n * @param el \r\n */\r\n updateElementAttr(el:HTMLElement){\r\n // 更新属性\r\n Object.keys(this.__attrs).forEach((key:any)=>{\r\n if([\"class\",\"overflowX\"].indexOf(key) < 0){\r\n el.style[key] = (this.__attrs as any)[key];\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * 获取标识类\r\n * @returns \r\n */\r\n getMarkClassName(): string {\r\n return `mk-doc__${this.getType()}`\r\n }\r\n\r\n /**\r\n * 导出DOM\r\n * @returns \r\n */\r\n exportDOM(): DOMExportOutput {\r\n \r\n const element = document.createElement('div')\r\n\r\n this.updateElementAttr(element);\r\n\r\n // 移除老标识\r\n let extraClassName = GridNode.getExtraClassName(element);\r\n\r\n if(extraClassName != this.__attrs.class){\r\n\r\n if(extraClassName){\r\n element.classList.remove(extraClassName);\r\n }\r\n\r\n // 添加样式\r\n if (this.__attrs.class) {\r\n element.classList.add(this.__attrs.class);\r\n }\r\n }\r\n\r\n // 标识格子\r\n if (!element.classList.contains(GridNode.getMarkClassName())) {\r\n element.classList.add(GridNode.getMarkClassName());\r\n }\r\n\r\n // 标识指定\r\n if (!element.classList.contains(this.getMarkClassName())) {\r\n element.classList.add(this.getMarkClassName());\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const el = this.exportDOM().element as HTMLElement;\r\n\r\n el.setAttribute(\"node-key\",this.__key)\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: GridNode, el: HTMLElement, config: EditorConfig): boolean {\r\n // 更新属性\r\n \r\n this.updateElementAttr(el);\r\n\r\n // 移除老标识\r\n let extraClassName = GridNode.getExtraClassName(el).replace(this.getMarkClassName(),\"\").trim();\r\n\r\n if(extraClassName != this.__attrs.class){\r\n\r\n if(extraClassName){\r\n el.classList.remove(extraClassName);\r\n }\r\n\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 是否是格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isGridNode(\r\n node: GridNode | LexicalNode | null | undefined,\r\n): node is GridNode {\r\n return node instanceof GridNode\r\n}\r\n\r\n"],"names":[],"mappings":";;;;AA4BO,MAAM,iBAAiB,YAAW;AAAA,EAqDvC,YAAY,OAAuB,KAAe;AAChD,UAAM,GAAG;AApDX;AAqDE,SAAK,UAAU;AAAA,EACjB;AAAA,EApDA,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAQ;AAAA,EAE1C,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,SAAS,kBAAkB,IAAI,KAAK;AAAA,EACnE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,SAAS,QAAA,CAAS;AAAA,EACtC;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAA,GAAG,UAAU,QAAQ,SAAS,oBAAmB,EAAE,EAAE;EAC9D;AAAA,EAEA,OAAO,MAAM,MAA0B;AAErC,WAAO,IAAI,SAAS,KAAK,SAAQ,KAAK,KAAK;AAAA,EAC7C;AAAA,EAEA,OAAO,WAAW,gBAA8C;AACvD,WAAA,IAAI,SAAS,eAAe,KAAK;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEvB,eAAA,SAAS,qBAAqB,OAAO,IAAI;AAAA,UAE9C,YAAY,MAAI;AAEN,mBAAA;AAAA,cAEP,MAAK,IAAI,SAAS;AAAA,gBACf,OAAM,SAAS,kBAAkB,OAAO;AAAA,gBACxC,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACL;AAAA,YAAA;AAAA,UAEzB;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,MAAuB;AACxB,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAA2B;AACzB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB,IAAe;AAE/B,WAAO,KAAK,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAU;AAC3C,UAAG,CAAC,SAAQ,WAAW,EAAE,QAAQ,GAAG,IAAI,GAAE;AACxC,WAAG,MAAM,GAAG,IAAK,KAAK,QAAgB,GAAG;AAAA,MAC3C;AAAA,IAAA,CACD;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAA2B;AAClB,WAAA,WAAW,KAAK,QAAA,CAAS;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAA6B;AAErB,UAAA,UAAU,SAAS,cAAc,KAAK;AAE5C,SAAK,kBAAkB,OAAO;AAG1B,QAAA,iBAAiB,SAAS,kBAAkB,OAAO;AAEpD,QAAA,kBAAkB,KAAK,QAAQ,OAAM;AAEtC,UAAG,gBAAe;AACR,gBAAA,UAAU,OAAO,cAAc;AAAA,MACzC;AAGI,UAAA,KAAK,QAAQ,OAAO;AACtB,gBAAQ,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,MAC1C;AAAA,IACF;AAGA,QAAI,CAAC,QAAQ,UAAU,SAAS,SAAS,iBAAA,CAAkB,GAAG;AAC5D,cAAQ,UAAU,IAAI,SAAS,iBAAkB,CAAA;AAAA,IACnD;AAGA,QAAI,CAAC,QAAQ,UAAU,SAAS,KAAK,iBAAA,CAAkB,GAAG;AACxD,cAAQ,UAAU,IAAI,KAAK,iBAAkB,CAAA;AAAA,IAC/C;AAEA,WAAO,EAAE,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAmC;AAErC,UAAA,KAAK,KAAK,UAAA,EAAY;AAEzB,OAAA,aAAa,YAAW,KAAK,KAAK;AAE9B,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAAoB,IAAiB,QAA+B;AAG5E,SAAK,kBAAkB,EAAE;AAGrB,QAAA,iBAAiB,SAAS,kBAAkB,EAAE,EAAE,QAAQ,KAAK,iBAAiB,GAAE,EAAE,EAAE,KAAK;AAE1F,QAAA,kBAAkB,KAAK,QAAQ,OAAM;AAEtC,UAAG,gBAAe;AACb,WAAA,UAAU,OAAO,cAAc;AAAA,MACpC;AAEI,UAAA,KAAK,QAAQ,OAAO;AACtB,WAAG,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,MACrC;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoB;AACX,WAAA;AAAA,EACT;AACF;AAOO,SAAS,YACd,MACkB;AAClB,SAAO,gBAAgB;AACzB;"}
@@ -0,0 +1,89 @@
1
+ import { createCommand } from "lexical";
2
+ import { GridNode } from "./GridNode.js";
3
+ const INSERT_IMAGETEXTGRID_COMMAND = createCommand("INSERT_IMAGETEXTGRID_COMMAND");
4
+ class ImageTextGridNode extends GridNode {
5
+ static getType() {
6
+ return "image-text";
7
+ }
8
+ static hasGridNodeByElement(el) {
9
+ return el.classList.contains(ImageTextGridNode.getMarkClassName()) ? el : null;
10
+ }
11
+ static getMarkClassName() {
12
+ return `mk-doc__${ImageTextGridNode.getType()}`;
13
+ }
14
+ static getExtraClassName(el) {
15
+ return GridNode.getExtraClassName(el).replace(ImageTextGridNode.getMarkClassName(), "").trim();
16
+ }
17
+ static clone(node) {
18
+ return new ImageTextGridNode(node.__attrs, node.__key);
19
+ }
20
+ static importJSON(serializedNode) {
21
+ return new ImageTextGridNode(serializedNode.attrs);
22
+ }
23
+ static importDOM() {
24
+ return {
25
+ div: (domNode) => {
26
+ return ImageTextGridNode.hasGridNodeByElement(domNode) ? {
27
+ conversion: () => {
28
+ return {
29
+ node: new ImageTextGridNode({
30
+ class: ImageTextGridNode.getExtraClassName(domNode),
31
+ width: domNode.style.width || "100%",
32
+ height: domNode.style.height,
33
+ flex: domNode.style.flex,
34
+ maxWidth: domNode.style.maxWidth,
35
+ maxHeight: domNode.style.maxHeight
36
+ })
37
+ };
38
+ },
39
+ priority: 4
40
+ } : null;
41
+ }
42
+ };
43
+ }
44
+ constructor(attrs, key) {
45
+ super(attrs, key);
46
+ }
47
+ /**
48
+ * 设置属性
49
+ * @param pos
50
+ */
51
+ setAttrs(data) {
52
+ const writable = this.getWritable();
53
+ Object.assign(writable.__attrs, data);
54
+ }
55
+ /**
56
+ * 获取属性
57
+ * @param pos
58
+ */
59
+ getAttrs() {
60
+ return this.__attrs;
61
+ }
62
+ /**
63
+ * 导出JSON
64
+ * @returns
65
+ */
66
+ exportJSON() {
67
+ return {
68
+ ...super.exportJSON(),
69
+ type: this.getType(),
70
+ attrs: this.__attrs,
71
+ version: 1
72
+ };
73
+ }
74
+ /* 不允许空
75
+ * @returns
76
+ */
77
+ canBeEmpty() {
78
+ return false;
79
+ }
80
+ }
81
+ function $isImageTextGridNode(node) {
82
+ return node instanceof ImageTextGridNode;
83
+ }
84
+ export {
85
+ $isImageTextGridNode,
86
+ INSERT_IMAGETEXTGRID_COMMAND,
87
+ ImageTextGridNode
88
+ };
89
+ //# sourceMappingURL=ImageTextGridNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageTextGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.ts"],"sourcesContent":["import type { DOMConversionMap, LexicalCommand, LexicalNode, NodeKey, Spread, DOMExportOutput } from 'lexical'\r\nimport { createCommand,} from 'lexical'\r\nimport { type GridNodeAttrType , GridNode,SerializedGridNode } from \"./GridNode\"\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type ImageTextGridNodeAttrType = GridNodeAttrType & {};\r\n\r\n/**\r\n * 插入图文\r\n */\r\nexport const INSERT_IMAGETEXTGRID_COMMAND: LexicalCommand<ImageTextGridNodeAttrType> = createCommand('INSERT_IMAGETEXTGRID_COMMAND')\r\n\r\n/**\r\n * 图文节点序列化\r\n */\r\nexport type SerializedImageTextGridNode = Spread<{},SerializedGridNode>\r\n\r\n/**\r\n * 图文格子\r\n */\r\nexport class ImageTextGridNode extends GridNode{\r\n\r\n declare __attrs:ImageTextGridNodeAttrType\r\n\r\n static getType(): string {\r\n return \"image-text\";\r\n }\r\n\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(ImageTextGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${ImageTextGridNode.getType()}`\r\n }\r\n\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(ImageTextGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n\r\n static clone(node: ImageTextGridNode): ImageTextGridNode {\r\n return new ImageTextGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageTextGridNode): ImageTextGridNode {\r\n return new ImageTextGridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return ImageTextGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new ImageTextGridNode({\r\n class:ImageTextGridNode.getExtraClassName(domNode),\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n flex:domNode.style.flex,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight,\r\n } as ImageTextGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:ImageTextGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:ImageTextGridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():ImageTextGridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n \r\n\r\n /* 不允许空\r\n * @returns \r\n */\r\n canBeEmpty(): boolean {\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否是图文节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageTextGridNode(\r\n node: ImageTextGridNode | LexicalNode | null | undefined,\r\n): node is ImageTextGridNode {\r\n return node instanceof ImageTextGridNode\r\n}\r\n"],"names":[],"mappings":";;AAYa,MAAA,+BAA0E,cAAc,8BAA8B;AAU5H,MAAM,0BAA0B,SAAQ;AAAA,EAI7C,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA,EAGA,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,kBAAkB,kBAAkB,IAAI,KAAK;AAAA,EAC5E;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,kBAAkB,QAAA,CAAS;AAAA,EAC/C;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAA,SAAS,kBAAkB,EAAE,EAAE,QAAQ,kBAAkB,oBAAmB,EAAE,EAAE;EACzF;AAAA,EAEA,OAAO,MAAM,MAA4C;AACvD,WAAO,IAAI,kBAAkB,KAAK,SAAQ,KAAK,KAAK;AAAA,EACtD;AAAA,EAEA,OAAO,WAAW,gBAAgE;AACzE,WAAA,IAAI,kBAAkB,eAAe,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,kBAAkB,qBAAqB,OAAO,IAAI;AAAA,UAExD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,kBAAkB;AAAA,gBACzB,OAAM,kBAAkB,kBAAkB,OAAO;AAAA,gBACjD,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACI;AAAA,YAAA;AAAA,UAElC;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAAgC,KAAe;AACzD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAAgC;AACjC,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoC;AAClC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAMA,aAAsB;AACb,WAAA;AAAA,EACT;AACF;AAOO,SAAS,qBACd,MAC2B;AAC3B,SAAO,gBAAgB;AACzB;"}
@@ -0,0 +1,120 @@
1
+ import { createCommand } from "lexical";
2
+ import { GridNode } from "./GridNode.js";
3
+ const INSERT_LAYOUTGRID_COMMAND = createCommand("INSERT_LAYOUTGRID_COMMAND");
4
+ class LayoutGridNode extends GridNode {
5
+ static getType() {
6
+ return "layout-grid";
7
+ }
8
+ static hasGridNodeByElement(el) {
9
+ return el.classList.contains(LayoutGridNode.getMarkClassName()) ? el : null;
10
+ }
11
+ static getMarkClassName() {
12
+ return `mk-doc__${LayoutGridNode.getType()}`;
13
+ }
14
+ static getExtraClassName(el) {
15
+ return GridNode.getExtraClassName(el).replace(LayoutGridNode.getMarkClassName(), "").trim();
16
+ }
17
+ static clone(node) {
18
+ return new LayoutGridNode(node.__attrs, node.__key);
19
+ }
20
+ static importJSON(serializedNode) {
21
+ return new LayoutGridNode(serializedNode.attrs);
22
+ }
23
+ static importDOM() {
24
+ return {
25
+ div: (domNode) => {
26
+ return LayoutGridNode.hasGridNodeByElement(domNode) ? {
27
+ conversion: () => {
28
+ return {
29
+ node: new LayoutGridNode({
30
+ class: LayoutGridNode.getExtraClassName(domNode),
31
+ display: domNode.style.display || "block",
32
+ width: domNode.style.width || "100%",
33
+ height: domNode.style.height,
34
+ maxWidth: domNode.style.maxWidth,
35
+ maxHeight: domNode.style.maxHeight,
36
+ flex: domNode.style.flex,
37
+ flexDirection: domNode.style.flexDirection,
38
+ flexWrap: domNode.style.flexWrap,
39
+ alignContent: domNode.style.alignContent,
40
+ justifyContent: domNode.style.justifyContent,
41
+ alignItems: domNode.style.alignItems
42
+ })
43
+ };
44
+ },
45
+ priority: 4
46
+ } : null;
47
+ }
48
+ };
49
+ }
50
+ constructor(attrs, key) {
51
+ super(attrs, key);
52
+ }
53
+ /**
54
+ * 设置属性
55
+ * @param pos
56
+ */
57
+ setAttrs(data) {
58
+ const writable = this.getWritable();
59
+ Object.assign(writable.__attrs, data);
60
+ }
61
+ /**
62
+ * 获取属性
63
+ * @param pos
64
+ */
65
+ getAttrs() {
66
+ return this.__attrs;
67
+ }
68
+ /**
69
+ * 导出JSON
70
+ * @returns
71
+ */
72
+ exportJSON() {
73
+ return {
74
+ ...super.exportJSON(),
75
+ type: this.getType(),
76
+ attrs: this.__attrs,
77
+ version: 1
78
+ };
79
+ }
80
+ /**
81
+ * 创建渲染DOM
82
+ * @param config
83
+ * @returns
84
+ */
85
+ createDOM(config) {
86
+ const el = super.createDOM(config);
87
+ if (this.getChildrenSize() <= 0) {
88
+ el.setAttribute("contenteditable", "false");
89
+ el.setAttribute("data-lexical-decorator", "true");
90
+ }
91
+ return el;
92
+ }
93
+ /**
94
+ * 更新DOM
95
+ * @param prevNode
96
+ * @param dom
97
+ * @param config
98
+ * @returns
99
+ */
100
+ updateDOM(prevNode, el, config) {
101
+ super.updateDOM(prevNode, el, config);
102
+ if (this.getChildrenSize() <= 0) {
103
+ el.setAttribute("contenteditable", "false");
104
+ el.setAttribute("data-lexical-decorator", "true");
105
+ } else {
106
+ el.removeAttribute("contenteditable");
107
+ el.removeAttribute("data-lexical-decorator");
108
+ }
109
+ return false;
110
+ }
111
+ }
112
+ function $isLayoutGridNode(node) {
113
+ return node instanceof LayoutGridNode;
114
+ }
115
+ export {
116
+ $isLayoutGridNode,
117
+ INSERT_LAYOUTGRID_COMMAND,
118
+ LayoutGridNode
119
+ };
120
+ //# sourceMappingURL=LayoutGridNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayoutGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.ts"],"sourcesContent":["import { type DOMConversionMap,type NodeKey, type Spread, type DOMExportOutput, type LexicalCommand, createCommand, LexicalNode, EditorConfig } from 'lexical'\r\nimport { type GridNodeAttrType , GridNode,SerializedGridNode } from \"./GridNode\"\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type LayoutGridNodeAttrType = GridNodeAttrType & {\r\n display:'flex'|'block'\r\n flexDirection:'column'|'row'|'row-reverse'|'column-reverse',\r\n flexWrap:'nowrap'|'warp',\r\n alignContent:'center'|'flex-start',\r\n justifyContent:'center'|'flex-start',\r\n alignItems:'center'|'flex-start'\r\n};\r\n\r\n\r\n/**\r\n * 插入布局格子\r\n */\r\nexport const INSERT_LAYOUTGRID_COMMAND: LexicalCommand<LayoutGridNodeAttrType> = createCommand('INSERT_LAYOUTGRID_COMMAND')\r\n\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedLayoutGridNode = Spread<{ attrs:LayoutGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 布局格子\r\n */\r\nexport class LayoutGridNode extends GridNode{\r\n\r\n declare __attrs:LayoutGridNodeAttrType\r\n\r\n static getType(): string { return \"layout-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(LayoutGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${LayoutGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(LayoutGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: LayoutGridNode): LayoutGridNode {\r\n return new LayoutGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedLayoutGridNode): LayoutGridNode {\r\n return new LayoutGridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : (domNode: HTMLElement) => {\r\n\r\n return LayoutGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new LayoutGridNode({\r\n class:LayoutGridNode.getExtraClassName(domNode),\r\n display:domNode.style.display || \"block\",\r\n width:domNode.style.width || \"100%\",\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth,\r\n maxHeight:domNode.style.maxHeight,\r\n flex:domNode.style.flex,\r\n flexDirection:domNode.style.flexDirection,\r\n flexWrap:domNode.style.flexWrap,\r\n alignContent:domNode.style.alignContent,\r\n justifyContent:domNode.style.justifyContent,\r\n alignItems:domNode.style.alignItems\r\n } as LayoutGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:LayoutGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:LayoutGridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():LayoutGridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n\r\n /**\r\n * 创建渲染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.getChildrenSize() <= 0 ){\r\n el.setAttribute(\"contenteditable\",\"false\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n }\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: GridNode, el: HTMLElement, config: EditorConfig): boolean {\r\n // 更新属性\r\n super.updateDOM(prevNode,el,config);\r\n if(this.getChildrenSize() <= 0 ){\r\n el.setAttribute(\"contenteditable\",\"false\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n }\r\n else{\r\n el.removeAttribute(\"contenteditable\")\r\n el.removeAttribute(\"data-lexical-decorator\")\r\n }\r\n return false\r\n }\r\n \r\n}\r\n\r\n/**\r\n * 是否是模块格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isLayoutGridNode(\r\n node: LayoutGridNode | LexicalNode | null | undefined,\r\n): node is LayoutGridNode {\r\n return node instanceof LayoutGridNode\r\n}\r\n"],"names":[],"mappings":";;AAmBa,MAAA,4BAAoE,cAAc,2BAA2B;AAWnH,MAAM,uBAAuB,SAAQ;AAAA,EAI1C,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAe;AAAA,EAEjD,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,eAAe,kBAAkB,IAAI,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,eAAe,QAAA,CAAS;AAAA,EAC5C;AAAA,EACA,OAAO,kBAAkB,IAAe;AAC/B,WAAA,SAAS,kBAAkB,EAAE,EAAE,QAAQ,eAAe,oBAAmB,EAAE,EAAE;EACtF;AAAA,EACA,OAAO,MAAM,MAAsC;AACjD,WAAO,IAAI,eAAe,KAAK,SAAQ,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,WAAW,gBAA0D;AACnE,WAAA,IAAI,eAAe,eAAe,KAAK;AAAA,EAChD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,eAAe,qBAAqB,OAAO,IAAI;AAAA,UAErD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,eAAe;AAAA,gBACtB,OAAM,eAAe,kBAAkB,OAAO;AAAA,gBAC9C,SAAQ,QAAQ,MAAM,WAAW;AAAA,gBACjC,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,gBACxB,MAAK,QAAQ,MAAM;AAAA,gBACnB,eAAc,QAAQ,MAAM;AAAA,gBAC5B,UAAS,QAAQ,MAAM;AAAA,gBACvB,cAAa,QAAQ,MAAM;AAAA,gBAC3B,gBAAe,QAAQ,MAAM;AAAA,gBAC7B,YAAW,QAAQ,MAAM;AAAA,cAAA,CACA;AAAA,YAAA;AAAA,UAE/B;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAA6B,KAAe;AACtD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAA6B;AAC9B,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAiC;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOC,UAAU,QAAmC;AAEtC,UAAA,KAAK,MAAM,UAAU,MAAM;AAE9B,QAAA,KAAK,gBAAgB,KAAK,GAAG;AAC3B,SAAA,aAAa,mBAAkB,OAAO;AACtC,SAAA,aAAa,0BAAyB,MAAM;AAAA,IACjD;AAEO,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASE,UAAU,UAAoB,IAAiB,QAA+B;AAEtE,UAAA,UAAU,UAAS,IAAG,MAAM;AAC/B,QAAA,KAAK,gBAAgB,KAAK,GAAG;AAC3B,SAAA,aAAa,mBAAkB,OAAO;AACtC,SAAA,aAAa,0BAAyB,MAAM;AAAA,IAAA,OAE7C;AACF,SAAG,gBAAgB,iBAAiB;AACpC,SAAG,gBAAgB,wBAAwB;AAAA,IAC7C;AACO,WAAA;AAAA,EACT;AAEJ;AAOO,SAAS,kBACd,MACwB;AACxB,SAAO,gBAAgB;AACzB;"}