@maketribe/ms-app 3.2.32 → 3.2.34

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 (375) hide show
  1. package/dist/cjs/components/basic/doc-editor/core/LexicalComposer.vue.js +74 -0
  2. package/dist/cjs/components/basic/doc-editor/core/LexicalComposer.vue.js.map +1 -0
  3. package/dist/cjs/components/basic/doc-editor/core/LexicalComposer.vue2.js +4 -0
  4. package/dist/cjs/components/basic/doc-editor/core/LexicalComposer.vue2.js.map +1 -0
  5. package/dist/cjs/components/basic/doc-editor/core/composables/inject.js +5 -0
  6. package/dist/cjs/components/basic/doc-editor/core/composables/inject.js.map +1 -0
  7. package/dist/cjs/components/basic/doc-editor/core/composables/listenerManager.js +18 -0
  8. package/dist/cjs/components/basic/doc-editor/core/composables/listenerManager.js.map +1 -0
  9. package/dist/cjs/components/basic/doc-editor/core/composables/useCanShowPlaceholder.js +31 -0
  10. package/dist/cjs/components/basic/doc-editor/core/composables/useCanShowPlaceholder.js.map +1 -0
  11. package/dist/cjs/components/basic/doc-editor/core/composables/useDecorators.js +31 -0
  12. package/dist/cjs/components/basic/doc-editor/core/composables/useDecorators.js.map +1 -0
  13. package/dist/cjs/components/basic/doc-editor/core/composables/useHistory.js +15 -0
  14. package/dist/cjs/components/basic/doc-editor/core/composables/useHistory.js.map +1 -0
  15. package/dist/cjs/components/basic/doc-editor/core/composables/useLexicalComposer.js +17 -0
  16. package/dist/cjs/components/basic/doc-editor/core/composables/useLexicalComposer.js.map +1 -0
  17. package/dist/cjs/components/basic/doc-editor/core/composables/useLexicalTextEntity.js +16 -0
  18. package/dist/cjs/components/basic/doc-editor/core/composables/useLexicalTextEntity.js.map +1 -0
  19. package/dist/cjs/components/basic/doc-editor/core/composables/useList.js +48 -0
  20. package/dist/cjs/components/basic/doc-editor/core/composables/useList.js.map +1 -0
  21. package/dist/cjs/components/basic/doc-editor/core/composables/useMounted.js +14 -0
  22. package/dist/cjs/components/basic/doc-editor/core/composables/useMounted.js.map +1 -0
  23. package/dist/cjs/components/basic/doc-editor/core/composables/useRichTextSetup.js +16 -0
  24. package/dist/cjs/components/basic/doc-editor/core/composables/useRichTextSetup.js.map +1 -0
  25. package/dist/cjs/components/basic/doc-editor/core/element-block.js +60 -66
  26. package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
  27. package/dist/cjs/components/basic/doc-editor/core/index.js +14 -0
  28. package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
  29. package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin/nodes/RichTextNode.js → core/nodes/RichElementNode.js} +81 -35
  30. package/dist/cjs/components/basic/doc-editor/core/nodes/RichElementNode.js.map +1 -0
  31. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue.js +42 -0
  32. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue.js.map +1 -0
  33. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue2.js +4 -0
  34. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue2.js.map +1 -0
  35. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js +4 -0
  36. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js.map +1 -0
  37. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js +37 -0
  38. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js.map +1 -0
  39. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js +176 -0
  40. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js.map +1 -0
  41. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue.js +215 -0
  42. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue.js.map +1 -0
  43. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue2.js +4 -0
  44. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue2.js.map +1 -0
  45. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue.js +75 -0
  46. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue.js.map +1 -0
  47. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue2.js +4 -0
  48. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue2.js.map +1 -0
  49. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue.js +29 -0
  50. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue.js.map +1 -0
  51. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue2.js +4 -0
  52. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue2.js.map +1 -0
  53. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue.js +4 -0
  54. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue.js.map +1 -0
  55. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue2.js +77 -0
  56. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue2.js.map +1 -0
  57. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue.js +25 -0
  58. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue.js.map +1 -0
  59. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue2.js +4 -0
  60. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue2.js.map +1 -0
  61. package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue.js +14 -3
  62. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/ContentEditable.vue.js.map +1 -0
  63. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/DecoratedTeleports.js +24 -0
  64. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/DecoratedTeleports.js.map +1 -0
  65. package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue.js +20 -9
  66. package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/index.vue.js.map +1 -0
  67. package/dist/cjs/components/basic/doc-editor/editor.vue.js +22 -12
  68. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  69. package/dist/cjs/components/basic/doc-editor/index.js +2 -0
  70. package/dist/cjs/components/basic/doc-editor/index.js.map +1 -1
  71. package/dist/cjs/components/basic/doc-editor/{plugins/nodes.js → nodes.js} +13 -11
  72. package/dist/cjs/components/basic/doc-editor/nodes.js.map +1 -0
  73. package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js +5 -3
  74. package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js.map +1 -1
  75. package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +215 -68
  76. package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
  77. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +39 -39
  78. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  79. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
  80. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  81. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
  82. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  83. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +33 -18
  84. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  85. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
  86. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  87. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +14 -54
  88. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  89. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
  90. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  91. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +38 -33
  92. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  93. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +2 -2
  94. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  95. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +16 -9
  96. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  97. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +11 -10
  98. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  99. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +15 -28
  100. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  101. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +3 -1
  102. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  103. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
  104. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
  105. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +127 -0
  106. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
  107. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +36 -0
  108. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
  109. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +4 -0
  110. package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
  111. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +9 -4
  112. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
  113. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +10 -2
  114. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  115. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +17 -4
  116. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  117. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +10 -2
  118. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  119. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  120. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  121. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +1 -2
  122. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  123. package/dist/cjs/index.js +2 -0
  124. package/dist/cjs/index.js.map +1 -1
  125. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
  126. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  127. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js +180 -48
  128. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  129. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +44 -22
  130. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  131. package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -11
  132. package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
  133. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +11 -6
  134. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  135. package/dist/cjs/modules/ms/components/rich-text-editor/index.js.map +1 -1
  136. package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js +3 -5
  137. package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
  138. package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js +5 -4
  139. package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
  140. package/dist/esm/components/basic/doc-editor/core/LexicalComposer.vue.js +75 -0
  141. package/dist/esm/components/basic/doc-editor/core/LexicalComposer.vue.js.map +1 -0
  142. package/dist/esm/components/basic/doc-editor/core/LexicalComposer.vue2.js +5 -0
  143. package/dist/esm/components/basic/doc-editor/core/LexicalComposer.vue2.js.map +1 -0
  144. package/dist/esm/components/basic/doc-editor/core/composables/inject.js +5 -0
  145. package/dist/esm/components/basic/doc-editor/core/composables/inject.js.map +1 -0
  146. package/dist/esm/components/basic/doc-editor/core/composables/listenerManager.js +18 -0
  147. package/dist/esm/components/basic/doc-editor/core/composables/listenerManager.js.map +1 -0
  148. package/dist/esm/components/basic/doc-editor/core/composables/useCanShowPlaceholder.js +31 -0
  149. package/dist/esm/components/basic/doc-editor/core/composables/useCanShowPlaceholder.js.map +1 -0
  150. package/dist/esm/components/basic/doc-editor/core/composables/useDecorators.js +31 -0
  151. package/dist/esm/components/basic/doc-editor/core/composables/useDecorators.js.map +1 -0
  152. package/dist/esm/components/basic/doc-editor/core/composables/useHistory.js +15 -0
  153. package/dist/esm/components/basic/doc-editor/core/composables/useHistory.js.map +1 -0
  154. package/dist/esm/components/basic/doc-editor/core/composables/useLexicalComposer.js +17 -0
  155. package/dist/esm/components/basic/doc-editor/core/composables/useLexicalComposer.js.map +1 -0
  156. package/dist/esm/components/basic/doc-editor/core/composables/useLexicalTextEntity.js +16 -0
  157. package/dist/esm/components/basic/doc-editor/core/composables/useLexicalTextEntity.js.map +1 -0
  158. package/dist/esm/components/basic/doc-editor/core/composables/useList.js +48 -0
  159. package/dist/esm/components/basic/doc-editor/core/composables/useList.js.map +1 -0
  160. package/dist/esm/components/basic/doc-editor/core/composables/useMounted.js +14 -0
  161. package/dist/esm/components/basic/doc-editor/core/composables/useMounted.js.map +1 -0
  162. package/dist/esm/components/basic/doc-editor/core/composables/useRichTextSetup.js +16 -0
  163. package/dist/esm/components/basic/doc-editor/core/composables/useRichTextSetup.js.map +1 -0
  164. package/dist/esm/components/basic/doc-editor/core/element-block.js +60 -66
  165. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
  166. package/dist/esm/components/basic/doc-editor/core/index.js +15 -1
  167. package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
  168. package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin/nodes/RichTextNode.js → core/nodes/RichElementNode.js} +82 -36
  169. package/dist/esm/components/basic/doc-editor/core/nodes/RichElementNode.js.map +1 -0
  170. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue.js +43 -0
  171. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue.js.map +1 -0
  172. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue2.js +5 -0
  173. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue2.js.map +1 -0
  174. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js +5 -0
  175. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js.map +1 -0
  176. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js +38 -0
  177. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js.map +1 -0
  178. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js +176 -0
  179. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js.map +1 -0
  180. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue.js +216 -0
  181. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue.js.map +1 -0
  182. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue2.js +5 -0
  183. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue2.js.map +1 -0
  184. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue.js +76 -0
  185. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue.js.map +1 -0
  186. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue2.js +5 -0
  187. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue2.js.map +1 -0
  188. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue.js +30 -0
  189. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue.js.map +1 -0
  190. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue2.js +5 -0
  191. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue2.js.map +1 -0
  192. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue.js +5 -0
  193. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue.js.map +1 -0
  194. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue2.js +78 -0
  195. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue2.js.map +1 -0
  196. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue.js +26 -0
  197. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue.js.map +1 -0
  198. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue2.js +5 -0
  199. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue2.js.map +1 -0
  200. package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue.js +12 -1
  201. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/ContentEditable.vue.js.map +1 -0
  202. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/DecoratedTeleports.js +25 -0
  203. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/DecoratedTeleports.js.map +1 -0
  204. package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue.js +19 -8
  205. package/dist/esm/components/basic/doc-editor/core/plugins/LexicalRichTextPlugin/index.vue.js.map +1 -0
  206. package/dist/esm/components/basic/doc-editor/editor.vue.js +33 -23
  207. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  208. package/dist/esm/components/basic/doc-editor/index.js +3 -1
  209. package/dist/esm/components/basic/doc-editor/index.js.map +1 -1
  210. package/dist/esm/components/basic/doc-editor/{plugins/nodes.js → nodes.js} +13 -11
  211. package/dist/esm/components/basic/doc-editor/nodes.js.map +1 -0
  212. package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js +5 -3
  213. package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js.map +1 -1
  214. package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +216 -69
  215. package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
  216. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +39 -39
  217. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  218. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
  219. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  220. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
  221. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  222. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +33 -18
  223. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  224. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
  225. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  226. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +16 -56
  227. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  228. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
  229. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  230. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +31 -26
  231. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  232. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +2 -2
  233. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  234. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +16 -9
  235. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  236. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +12 -11
  237. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  238. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +16 -29
  239. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  240. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +4 -2
  241. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  242. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
  243. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
  244. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +127 -0
  245. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
  246. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +37 -0
  247. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
  248. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +5 -0
  249. package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
  250. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +8 -3
  251. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
  252. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +9 -1
  253. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  254. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +16 -3
  255. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  256. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +9 -1
  257. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  258. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  259. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  260. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +1 -2
  261. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  262. package/dist/esm/index.js +2 -0
  263. package/dist/esm/index.js.map +1 -1
  264. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
  265. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  266. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js +181 -49
  267. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  268. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +45 -23
  269. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  270. package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -11
  271. package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
  272. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +11 -6
  273. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  274. package/dist/esm/modules/ms/components/rich-text-editor/index.js.map +1 -1
  275. package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js +3 -5
  276. package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
  277. package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js +5 -4
  278. package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
  279. package/dist/style/components/basic/doc-editor/index.css +1 -1
  280. package/dist/style/components/index.css +1 -1
  281. package/dist/style/index.css +2 -2
  282. package/dist/style/modules/cms/index.css +1 -1
  283. package/dist/style/modules/cms/pages/cms-contents/components/article-list.css +1 -1
  284. package/dist/style/modules/cms/pages/cms-contents/index.css +1 -1
  285. package/dist/style/modules/ms/components/rich-text-editor/index.css +1 -1
  286. package/dist/style/modules/ms/index.css +1 -1
  287. package/dist/style/src/components/basic/doc-editor/index.scss +19 -2
  288. package/dist/style/src/modules/cms/pages/cms-contents/components/article-list.scss +32 -3
  289. package/dist/style/src/modules/ms/components/rich-text-editor/index.scss +1 -1
  290. package/dist/types/components/basic/doc-editor/core/LexicalComposer.vue.d.ts +29 -0
  291. package/dist/types/components/basic/doc-editor/core/composables/index.d.ts +15 -0
  292. package/dist/types/components/basic/doc-editor/core/composables/inject.d.ts +1 -0
  293. package/dist/types/components/basic/doc-editor/core/composables/listenerManager.d.ts +1 -0
  294. package/dist/types/components/basic/doc-editor/core/composables/useCanShowPlaceholder.d.ts +2 -0
  295. package/dist/types/components/basic/doc-editor/core/composables/useCharacterLimit.d.ts +9 -0
  296. package/dist/types/components/basic/doc-editor/core/composables/useDecorators.d.ts +4 -0
  297. package/dist/types/components/basic/doc-editor/core/composables/useEffect.d.ts +5 -0
  298. package/dist/types/components/basic/doc-editor/core/composables/useHistory.d.ts +4 -0
  299. package/dist/types/components/basic/doc-editor/core/composables/useLexicalCommandsLog.d.ts +5 -0
  300. package/dist/types/components/basic/doc-editor/core/composables/useLexicalComposer.d.ts +6 -0
  301. package/dist/types/components/basic/doc-editor/core/composables/useLexicalIsTextContentEmpty.d.ts +2 -0
  302. package/dist/types/components/basic/doc-editor/core/composables/useLexicalNodeSelection.d.ts +7 -0
  303. package/dist/types/components/basic/doc-editor/core/composables/useLexicalTextEntity.d.ts +3 -0
  304. package/dist/types/components/basic/doc-editor/core/composables/useList.d.ts +2 -0
  305. package/dist/types/components/basic/doc-editor/core/composables/useMounted.d.ts +4 -0
  306. package/dist/types/components/basic/doc-editor/core/composables/usePlainTextSetup.d.ts +2 -0
  307. package/dist/types/components/basic/doc-editor/core/composables/useReactiveEditor.d.ts +2 -0
  308. package/dist/types/components/basic/doc-editor/core/composables/useRichTextSetup.d.ts +2 -0
  309. package/dist/types/components/basic/doc-editor/core/composables/useTableOfContents.d.ts +8 -0
  310. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +5 -13
  311. package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -1
  312. package/dist/types/components/basic/doc-editor/core/nodes/RichElementNode.d.ts +46 -0
  313. package/dist/types/components/basic/doc-editor/core/nodes/index.d.ts +1 -0
  314. package/dist/types/components/basic/doc-editor/core/plugins/LexicalAutoFocusPlugin.vue.d.ts +15 -0
  315. package/dist/types/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.d.ts +26 -0
  316. package/dist/types/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.d.ts +14 -0
  317. package/dist/types/components/basic/doc-editor/core/plugins/LexicalCheckListPlugin.vue.d.ts +2 -0
  318. package/dist/types/components/basic/doc-editor/core/plugins/LexicalHashtagPlugin.vue.d.ts +2 -0
  319. package/dist/types/components/basic/doc-editor/core/plugins/LexicalHistoryPlugin.vue.d.ts +16 -0
  320. package/dist/types/components/basic/doc-editor/core/plugins/LexicalLinkPlugin.vue.d.ts +15 -0
  321. package/dist/types/components/basic/doc-editor/core/plugins/LexicalListPlugin.vue.d.ts +2 -0
  322. package/dist/types/components/basic/doc-editor/core/types.d.ts +2 -0
  323. package/dist/types/components/basic/doc-editor/index.d.ts +2 -1
  324. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +10 -5
  325. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +5 -0
  326. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +5 -0
  327. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +5 -0
  328. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +5 -0
  329. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +5 -1
  330. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +4 -9
  331. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +1 -1
  332. package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/commands.d.ts +5 -0
  333. package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/composables.d.ts +35 -0
  334. package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.d.ts +2 -0
  335. package/dist/types/components/basic/doc-editor/plugins/index.d.ts +2 -3
  336. package/dist/types/components/data-model/data-table/views/table/index.d.ts +1 -1
  337. package/dist/types/components/data-model/data-table/views/table/table.d.ts +1 -1
  338. package/dist/types/components/data-model/data-table/views/tree/index.d.ts +1 -1
  339. package/dist/types/components/data-model/data-table/views/tree/tree.d.ts +1 -1
  340. package/dist/types/modules/ms/components/material-list/material-item.vue.d.ts +1 -1
  341. package/dist/types/modules/ms/components/rich-text-editor/index.d.ts +4 -4
  342. package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor-options.d.ts +2 -2
  343. package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor.d.ts +4 -4
  344. package/package.json +22 -23
  345. package/dist/cjs/components/basic/doc-editor/core/utils.js +0 -42
  346. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +0 -1
  347. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/ContentEditable.vue.js.map +0 -1
  348. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/DecoratedTeleports.js +0 -13
  349. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/DecoratedTeleports.js.map +0 -1
  350. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +0 -1
  351. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +0 -1
  352. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +0 -1
  353. package/dist/esm/components/basic/doc-editor/core/utils.js +0 -42
  354. package/dist/esm/components/basic/doc-editor/core/utils.js.map +0 -1
  355. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/ContentEditable.vue.js.map +0 -1
  356. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/DecoratedTeleports.js +0 -14
  357. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/DecoratedTeleports.js.map +0 -1
  358. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +0 -1
  359. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +0 -1
  360. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +0 -1
  361. package/dist/types/components/basic/doc-editor/core/utils.d.ts +0 -4
  362. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.d.ts +0 -13
  363. package/dist/types/components/basic/doc-editor/plugins/VideoPlugin/VideoNode.d.ts +0 -23
  364. /package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue2.js +0 -0
  365. /package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue2.js.map +0 -0
  366. /package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue2.js +0 -0
  367. /package/dist/cjs/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue2.js.map +0 -0
  368. /package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue2.js +0 -0
  369. /package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue2.js.map +0 -0
  370. /package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue2.js +0 -0
  371. /package/dist/esm/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue2.js.map +0 -0
  372. /package/dist/types/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/ContentEditable.vue.d.ts +0 -0
  373. /package/dist/types/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/DecoratedTeleports.d.ts +0 -0
  374. /package/dist/types/components/basic/doc-editor/{plugins/RichTextPlugin → core/plugins/LexicalRichTextPlugin}/index.vue.d.ts +0 -0
  375. /package/dist/types/components/basic/doc-editor/{plugins/nodes.d.ts → nodes.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { type CommandListenerPriority, $isNodeSelection, $getSelection } from 'lexical'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer, useMounted } from 'lexical-vue'\r\nimport { ref, reactive, shallowRef, nextTick, watch } from 'vue'\r\nimport {\r\n UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, REMOVE_ELEMENTBLOCK_COMMAND,\r\n type SelectElementBlocktEventType, DEVICE_VIEW_MODE,\r\n SelectElementBlockToolsbarFunction\r\n} from \"../../core\"\r\n\r\n// 点击工具条按钮\r\nconst lowPriority: CommandListenerPriority = 1\r\nconst editor = useLexicalComposer()\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst selectPayload = shallowRef<SelectElementBlocktEventType | null>(null);\r\nconst toolsPos = reactive({ left: \"px\", top: \"0px\" });\r\n\r\nwatch(DEVICE_VIEW_MODE, () => {\r\n editor.dispatchCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, null);\r\n})\r\n\r\n\r\n// 更新工具条坐标\r\nconst updateToolsPos = () => {\r\n\r\n nextTick(() => {\r\n \r\n if (selectPayload.value != null && toolbarRef.value != null) {\r\n const editIframeRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_iframe\").getBoundingClientRect();\r\n const editBodyRect = (toolbarRef.value.getRootNode() as any).body.querySelector(\".mk-doc-editor__stage_body\").getBoundingClientRect();\r\n const baseY = editIframeRect.y - editBodyRect.y;\r\n const selectRect = selectPayload.value.element.getBoundingClientRect();\r\n const toolsRect = toolbarRef.value.getBoundingClientRect();\r\n if (toolsRect) {\r\n // 中心点\r\n toolsPos.top = Math.max(selectRect.y - toolsRect.height - 5 + baseY, 5 + baseY) + \"px\"\r\n toolsPos.left = toolsRect.width / -2 + selectRect.x + selectRect.width / 2 + \"px\";\r\n }\r\n }\r\n })\r\n return false;\r\n}\r\n\r\nuseMounted(() => {\r\n return mergeRegister(\r\n editor.registerCommand(UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, () => updateToolsPos(), lowPriority),\r\n editor.registerUpdateListener(() => setTimeout(()=> updateToolsPos(),50)),\r\n // 选中模块\r\n editor.registerCommand(SELECTED_ELEMENTBLOCK_COMMAND, (payload: SelectElementBlocktEventType) => {\r\n\r\n if (payload != null) {\r\n\r\n let toolsbarList = [];\r\n\r\n // 如果是函数的话\r\n if (typeof payload.toolsbars == \"function\") {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n toolsbarList = payload.toolsbars(selection) ?? [];\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars(null) ?? [];\r\n }\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars;\r\n }\r\n\r\n selectPayload.value = {\r\n element: payload.element,\r\n toolsbars: toolsbarList\r\n };\r\n }\r\n else {\r\n selectPayload.value = null;\r\n }\r\n\r\n return updateToolsPos();\r\n }, lowPriority),\r\n // 删除模块\r\n editor.registerCommand(REMOVE_ELEMENTBLOCK_COMMAND, () => {\r\n\r\n const selection = $getSelection();\r\n\r\n if ($isNodeSelection(selection)) {\r\n\r\n selection.getNodes().forEach(node => node.remove());\r\n\r\n // 没选中\r\n editor.dispatchCommand(SELECTED_ELEMENTBLOCK_COMMAND, null);\r\n }\r\n return false;\r\n }, lowPriority)\r\n // editor.registerCommand(SELECTION_CHANGE_COMMAND, (payload, newEditor) => {\r\n\r\n // const selection = $getSelection();\r\n\r\n // if($isNodeSelection(selection)){\r\n\r\n // const node = selection.getNodes()[0]\r\n\r\n // console.log(node,node.getTopLevelElement());\r\n // }\r\n\r\n // return updateToolsPos();\r\n // },lowPriority)\r\n )\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div v-if=\"selectPayload != null\" ref=\"toolbarRef\" class=\"mk-doc-editor-decorator-module-toolbar\" :style=\"toolsPos\">\r\n <el-button-group>\r\n\r\n <template v-for=\"item in selectPayload.toolsbars as any[]\">\r\n <el-tooltip effect=\"dark\" :content=\"item.title\" placement=\"top\">\r\n <el-button text @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" />\r\n </el-button>\r\n </el-tooltip>\r\n </template>\r\n <el-tooltip effect=\"dark\" content=\"删除\" placement=\"top\">\r\n <el-button text type=\"danger\" @click=\"editor.dispatchCommand(REMOVE_ELEMENTBLOCK_COMMAND, null)\">\r\n <MKSvgIcon :iconClass=\"`Delete`\" />\r\n </el-button>\r\n </el-tooltip>\r\n\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","shallowRef","reactive","watch","DEVICE_VIEW_MODE","UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND","nextTick","useMounted","mergeRegister","SELECTED_ELEMENTBLOCK_COMMAND","$getSelection","$isNodeSelection","REMOVE_ELEMENTBLOCK_COMMAND"],"mappings":";;;;;;;AAYA,MAAM,cAAuC;;;;AAC7C,UAAM,SAASA,WAAAA;AACT,UAAA,aAAaC,QAA2B,IAAI;AAC5C,UAAA,gBAAgBC,eAAgD,IAAI;AAC1E,UAAM,WAAWC,IAAAA,SAAS,EAAE,MAAM,MAAM,KAAK,OAAO;AAEpDC,QAAA,MAAMC,wBAAkB,MAAM;AACrB,aAAA,gBAAgBC,sDAAyC,IAAI;AAAA,IAAA,CACrE;AAID,UAAM,iBAAiB,MAAM;AAE3BC,UAAAA,SAAS,MAAM;AAEb,YAAI,cAAc,SAAS,QAAQ,WAAW,SAAS,MAAM;AACrD,gBAAA,iBAAkB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,8BAA8B,EAAE;AAC5G,gBAAA,eAAgB,WAAW,MAAM,YAAA,EAAsB,KAAK,cAAc,4BAA4B,EAAE;AACxG,gBAAA,QAAQ,eAAe,IAAI,aAAa;AAC9C,gBAAM,aAAa,cAAc,MAAM,QAAQ,sBAAsB;AAC/D,gBAAA,YAAY,WAAW,MAAM,sBAAsB;AACzD,cAAI,WAAW;AAEJ,qBAAA,MAAM,KAAK,IAAI,WAAW,IAAI,UAAU,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI;AACzE,qBAAA,OAAO,UAAU,QAAQ,KAAK,WAAW,IAAI,WAAW,QAAQ,IAAI;AAAA,UAC/E;AAAA,QACF;AAAA,MAAA,CACD;AACM,aAAA;AAAA,IAAA;AAGTC,eAAAA,WAAW,MAAM;AACR,aAAAC,MAAA;AAAA,QACL,OAAO,gBAAgBH,aAAAA,yCAAyC,MAAM,eAAA,GAAkB,WAAW;AAAA,QACnG,OAAO,uBAAuB,MAAO,WAAW,MAAK,eAAe,GAAE,EAAE,CAAC;AAAA;AAAA,QAEzE,OAAO,gBAAgBI,4CAA+B,CAAC,YAA0C;AAE/F,cAAI,WAAW,MAAM;AAEnB,gBAAI,eAAe,CAAA;AAGf,gBAAA,OAAO,QAAQ,aAAa,YAAY;AAE1C,oBAAM,YAAYC,QAAAA;AAEd,kBAAAC,QAAAA,iBAAiB,SAAS,GAAG;AAC/B,+BAAe,QAAQ,UAAU,SAAS,KAAK,CAAA;AAAA,cAAC,OAE7C;AACH,+BAAe,QAAQ,UAAU,IAAI,KAAK,CAAA;AAAA,cAC5C;AAAA,YAAA,OAEG;AACH,6BAAe,QAAQ;AAAA,YACzB;AAEA,0BAAc,QAAQ;AAAA,cACpB,SAAS,QAAQ;AAAA,cACjB,WAAW;AAAA,YAAA;AAAA,UACb,OAEG;AACH,0BAAc,QAAQ;AAAA,UACxB;AAEA,iBAAO,eAAe;AAAA,WACrB,WAAW;AAAA;AAAA,QAEd,OAAO,gBAAgBC,aAAAA,6BAA6B,MAAM;AAExD,gBAAM,YAAYF,QAAAA;AAEd,cAAAC,QAAAA,iBAAiB,SAAS,GAAG;AAE/B,sBAAU,WAAW,QAAQ,CAAQ,SAAA,KAAK,QAAQ;AAG3C,mBAAA,gBAAgBF,4CAA+B,IAAI;AAAA,UAC5D;AACO,iBAAA;AAAA,WACN,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,IAchB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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, $getNodeByKey, SELECTION_CHANGE_COMMAND } from 'lexical'\r\nimport { mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer, useMounted } from '../../core/composables'\r\nimport { ref, reactive, shallowRef, nextTick, watch,computed } from 'vue'\r\nimport { $isGridNode } from '../GridPlugin'\r\nimport { $isImageNode } from '../ImagePlugin'\r\nimport { $isModuleBlockNode } from '../ModulePlugin'\r\nimport {\r\n UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND, SELECTED_ELEMENTBLOCK_COMMAND, REMOVE_ELEMENTBLOCK_COMMAND,\r\n type SelectElementBlocktEventType, DEVICE_VIEW_MODE, setElementBlockSelection\r\n} from \"../../core\"\r\n\r\n// 点击工具条按钮\r\nconst lowPriority: CommandListenerPriority = 1\r\nconst editor = useLexicalComposer()\r\nconst isSelectGrid = ref(false)\r\nconst selectionMarkPos = ref({ left: \"px\", top: \"0px\",width:\"0\",height:\"0\" });\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst selectPayload = shallowRef<any>(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\nconst updateToolsPos = () => {\r\n\r\n nextTick(() => {\r\n \r\n if (selectPayload.value != null && toolbarRef.value != null) {\r\n\r\n const element = editor.getElementByKey(selectPayload.value.nodeKey) as HTMLElement\r\n\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\r\n const baseY = editIframeRect.y - editBodyRect.y;\r\n const selectRect = element.getBoundingClientRect();\r\n const toolsRect = toolbarRef.value.getBoundingClientRect();\r\n\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 = Math.max(toolsRect.width / -2 + selectRect.x + selectRect.width / 2,0) + \"px\";\r\n }\r\n\r\n // 选中框\r\n selectionMarkPos.value = {\r\n top:`${selectRect.y + baseY }px`,left:`${selectRect.x}px`,\r\n width:`${selectRect.width}px`,height:`${selectRect.height}px`\r\n };\r\n\r\n }\r\n })\r\n return false;\r\n}\r\n\r\n// 节点描述\r\nconst nodeDesc = computed(()=>{\r\n if(selectPayload.value){\r\n const node = editor.getEditorState().read(() => {\r\n return $getNodeByKey(selectPayload.value.nodeKey)\r\n }) as any;\r\n return node.getTitle ? node.getTitle() : \"\";\r\n }\r\n else{\r\n return \"\";\r\n }\r\n})\r\n\r\n// 选中上层节点\r\nconst canSelectedParentNode = ref(false);\r\nconst selectedParentNode = ()=>{\r\n const node = editor.getEditorState().read(() => {\r\n return $getNodeByKey(selectPayload.value.nodeKey)\r\n }) as any;\r\n \r\n if(node && node.__parent){\r\n setElementBlockSelection(editor,node.__parent);\r\n }\r\n \r\n}\r\n// 选中兄弟节点\r\nconst canSelectedNextNode = ref(false);\r\nconst selectedNextNode = ()=>{\r\n const node = editor.getEditorState().read(() => {\r\n return $getNodeByKey(selectPayload.value.nodeKey)\r\n }) as any;\r\n \r\n if(node && node.__next){\r\n setElementBlockSelection(editor,node.__next);\r\n }\r\n}\r\nconst canSelectedPrevNode = ref(false);\r\nconst selectedPrevNode = ()=>{\r\n const node = editor.getEditorState().read(() => {\r\n return $getNodeByKey(selectPayload.value.nodeKey)\r\n }) as any;\r\n \r\n if(node && node.__prev){\r\n setElementBlockSelection(editor,node.__prev);\r\n }\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 toolsbarList = payload.toolsbars(payload.nodeKey) ?? [];\r\n }\r\n else {\r\n toolsbarList = payload.toolsbars;\r\n }\r\n // 选中的元数据\r\n selectPayload.value = { nodeKey: payload.nodeKey, toolsbars: toolsbarList };\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, () => {\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 // 显示父亲节点选中\r\n canSelectedParentNode.value = $isGridNode(node?.getParent());\r\n\r\n if(node?.__next){\r\n const nextNode = $getNodeByKey(node.__next);\r\n canSelectedNextNode.value = node?.__next ? $isGridNode(nextNode) || $isModuleBlockNode(nextNode) || $isImageNode(nextNode) : false;\r\n }\r\n else{\r\n canSelectedNextNode.value = false;\r\n }\r\n\r\n if(node?.__prev){\r\n const prevNode = $getNodeByKey(node.__prev);\r\n canSelectedPrevNode.value = node?.__prev ? $isGridNode(prevNode) || $isModuleBlockNode(prevNode) || $isImageNode(prevNode) : false;\r\n }\r\n else{\r\n canSelectedPrevNode.value = false;\r\n }\r\n }\r\n else{\r\n canSelectedParentNode.value = false;\r\n canSelectedNextNode.value = false;\r\n canSelectedPrevNode.value = false;\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 <el-button v-if=\"nodeDesc\" text bg style=\"font-size: 14px;\">{{nodeDesc}}</el-button>\r\n <template v-for=\"item in selectPayload.toolsbars\">\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=\"上层容器\" v-if=\"canSelectedParentNode\" placement=\"top\">\r\n <el-button text @click=\"selectedParentNode()\">\r\n <MKSvgIcon :iconClass=\"`ArrowUpBold`\" />\r\n </el-button>\r\n </el-tooltip>\r\n <el-tooltip effect=\"dark\" content=\"上一个\" v-if=\"canSelectedPrevNode\" placement=\"top\">\r\n <el-button text @click=\"selectedPrevNode()\">\r\n <MKSvgIcon :iconClass=\"`ArrowLeftBold`\" />\r\n </el-button>\r\n </el-tooltip>\r\n <el-tooltip effect=\"dark\" content=\"下一个\" v-if=\"canSelectedNextNode\" placement=\"top\">\r\n <el-button text @click=\"selectedNextNode()\">\r\n <MKSvgIcon :iconClass=\"`ArrowRightBold`\" />\r\n </el-button>\r\n </el-tooltip>\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 <div class=\"mk-doc-selection-element-block-mark box\" v-if=\"selectPayload != null\" :class=\"{box:isSelectGrid}\" :style=\"selectionMarkPos\"></div>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","shallowRef","reactive","watch","DEVICE_VIEW_MODE","UPDATE_ELEMENTBLOCK_TOOLBAR_POS_COMMAND","nextTick","computed","$getNodeByKey","setElementBlockSelection","useMounted","mergeRegister","SELECTED_ELEMENTBLOCK_COMMAND","REMOVE_ELEMENTBLOCK_COMMAND","$getSelection","$isNodeSelection","SELECTION_CHANGE_COMMAND","$isGridNode","$isModuleBlockNode","$isImageNode"],"mappings":"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"}
@@ -30,25 +30,17 @@ class GridNode extends lexical.ElementNode {
30
30
  }
31
31
  static importDOM() {
32
32
  return {
33
- div: (domNode) => {
34
- return GridNode.hasGridNodeByElement(domNode) ? {
35
- conversion: () => {
36
- return {
37
- node: new GridNode({
38
- class: GridNode.getExtraClassName(domNode),
39
- width: domNode.style.width || "100%",
40
- height: domNode.style.height,
41
- flex: domNode.style.flex,
42
- maxWidth: domNode.style.maxWidth,
43
- maxHeight: domNode.style.maxHeight
44
- })
45
- };
46
- },
47
- priority: 1
48
- } : null;
49
- }
33
+ div: $covertGridDOM,
34
+ section: $covertGridDOM
50
35
  };
51
36
  }
37
+ /**
38
+ * 选中标题
39
+ * @returns
40
+ */
41
+ getTitle() {
42
+ return "容器";
43
+ }
52
44
  /**
53
45
  * 设置属性
54
46
  * @param pos
@@ -76,6 +68,13 @@ class GridNode extends lexical.ElementNode {
76
68
  version: 1
77
69
  };
78
70
  }
71
+ /**
72
+ * 获取标识类
73
+ * @returns
74
+ */
75
+ getMarkClassName() {
76
+ return `mk-doc__${this.getType()}`;
77
+ }
79
78
  /**
80
79
  * 更新元素属性
81
80
  * @param el
@@ -93,13 +92,12 @@ class GridNode extends lexical.ElementNode {
93
92
  el.classList.add(this.__attrs.class);
94
93
  }
95
94
  }
96
- }
97
- /**
98
- * 获取标识类
99
- * @returns
100
- */
101
- getMarkClassName() {
102
- return `mk-doc__${this.getType()}`;
95
+ if (!el.classList.contains(GridNode.getMarkClassName())) {
96
+ el.classList.add(GridNode.getMarkClassName());
97
+ }
98
+ if (!el.classList.contains(this.getMarkClassName())) {
99
+ el.classList.add(this.getMarkClassName());
100
+ }
103
101
  }
104
102
  /**
105
103
  * 导出DOM
@@ -108,12 +106,6 @@ class GridNode extends lexical.ElementNode {
108
106
  exportDOM() {
109
107
  const element = document.createElement("div");
110
108
  this.updateElementAttr(element);
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
109
  return { element };
118
110
  }
119
111
  /**
@@ -135,15 +127,6 @@ class GridNode extends lexical.ElementNode {
135
127
  */
136
128
  updateDOM(prevNode, el, config) {
137
129
  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
130
  return false;
148
131
  }
149
132
  /**
@@ -154,6 +137,23 @@ class GridNode extends lexical.ElementNode {
154
137
  return false;
155
138
  }
156
139
  }
140
+ const $covertGridDOM = (domNode) => {
141
+ return GridNode.hasGridNodeByElement(domNode) ? {
142
+ conversion: () => {
143
+ return {
144
+ node: new GridNode({
145
+ class: GridNode.getExtraClassName(domNode),
146
+ width: domNode.style.width,
147
+ height: domNode.style.height,
148
+ flex: domNode.style.flex,
149
+ maxWidth: domNode.style.maxWidth,
150
+ maxHeight: domNode.style.maxHeight
151
+ })
152
+ };
153
+ },
154
+ priority: 1
155
+ } : null;
156
+ };
157
157
  function $isGridNode(node) {
158
158
  return node instanceof GridNode;
159
159
  }
@@ -1 +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 // 更新属性\r\n Object.keys(this.__attrs).filter(key=>key != \"class\").forEach((key:any)=>{\r\n el.style[key] = (this.__attrs as any)[key]\r\n })\r\n\r\n // 移除格子基础标识\r\n let extraClassName = GridNode.getExtraClassName(el);\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 // 添加样式\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\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 if (!element.classList.contains(GridNode.getMarkClassName())) {\r\n element.classList.add(GridNode.getMarkClassName());\r\n }\r\n\r\n // 标识指定\r\n if (!element.classList.contains(this.getMarkClassName())) {\r\n element.classList.add(this.getMarkClassName());\r\n }\r\n\r\n return { element }\r\n }\r\n\r\n /**\r\n * 创建渲染DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const el = this.exportDOM().element as HTMLElement;\r\n\r\n el.setAttribute(\"node-key\",this.__key)\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * 更新DOM\r\n * @param prevNode \r\n * @param dom \r\n * @param config \r\n * @returns \r\n */\r\n updateDOM(prevNode: GridNode, el: HTMLElement, config: EditorConfig): boolean {\r\n // 更新属性\r\n \r\n this.updateElementAttr(el);\r\n\r\n // 移除老标识\r\n let extraClassName = GridNode.getExtraClassName(el).replace(this.getMarkClassName(),\"\").trim();\r\n\r\n if(extraClassName != this.__attrs.class){\r\n\r\n if(extraClassName){\r\n el.classList.remove(extraClassName);\r\n }\r\n\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * 非内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 是否是格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isGridNode(\r\n node: GridNode | LexicalNode | null | undefined,\r\n): node is GridNode {\r\n return node instanceof GridNode\r\n}\r\n\r\n"],"names":["ElementNode"],"mappings":"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"}
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, DOMConversion } 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// console.log(ElementNode);\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 : $covertGridDOM,\r\n section : $covertGridDOM\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 * @returns \r\n */\r\n getTitle(){\r\n return \"容器\";\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 * @returns \r\n */\r\n getMarkClassName(): string {\r\n return `mk-doc__${this.getType()}`\r\n }\r\n\r\n /**\r\n * 更新元素属性\r\n * @param el \r\n */\r\n updateElementAttr(el:HTMLElement){\r\n\r\n // 更新属性\r\n Object.keys(this.__attrs).filter(key=>key != \"class\").forEach((key:any)=>{\r\n el.style[key] = (this.__attrs as any)[key]\r\n })\r\n\r\n // 移除格子基础标识\r\n let extraClassName = GridNode.getExtraClassName(el);\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 // 添加样式\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n\r\n // 标识基础格子\r\n if (!el.classList.contains(GridNode.getMarkClassName())) {\r\n el.classList.add(GridNode.getMarkClassName());\r\n }\r\n\r\n // 标识指定格子\r\n if (!el.classList.contains(this.getMarkClassName())) {\r\n el.classList.add(this.getMarkClassName());\r\n }\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 this.updateElementAttr(element);\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 this.updateElementAttr(el);\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 * 转换DOM\r\n * @param node \r\n * @returns \r\n */\r\nconst $covertGridDOM = (domNode: HTMLElement):DOMConversion<HTMLElement> | null => {\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,\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 * 是否是格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isGridNode(\r\n node: GridNode | LexicalNode | null | undefined,\r\n): node is GridNode {\r\n return node instanceof GridNode\r\n}\r\n\r\n"],"names":["ElementNode"],"mappings":"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"}
@@ -30,7 +30,7 @@ class ImageTextGridNode extends GridNode.GridNode {
30
30
  return {
31
31
  node: new ImageTextGridNode({
32
32
  class: ImageTextGridNode.getExtraClassName(domNode),
33
- width: domNode.style.width || "100%",
33
+ width: domNode.style.width,
34
34
  height: domNode.style.height,
35
35
  flex: domNode.style.flex,
36
36
  maxWidth: domNode.style.maxWidth,
@@ -46,6 +46,13 @@ class ImageTextGridNode extends GridNode.GridNode {
46
46
  constructor(attrs, key) {
47
47
  super(attrs, key);
48
48
  }
49
+ /**
50
+ * 选中标题
51
+ * @returns
52
+ */
53
+ getTitle() {
54
+ return "图文环绕";
55
+ }
49
56
  /**
50
57
  * 设置属性
51
58
  * @param pos
@@ -1 +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":["createCommand","GridNode"],"mappings":";;;;AAYa,MAAA,+BAA0EA,sBAAc,8BAA8B;AAU5H,MAAM,0BAA0BC,SAAAA,SAAQ;AAAA,EAI7C,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA,EAGA,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,kBAAkB,kBAAkB,IAAI,KAAK;AAAA,EAC5E;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,kBAAkB,QAAA,CAAS;AAAA,EAC/C;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,kBAAkB,oBAAmB,EAAE,EAAE;EACzF;AAAA,EAEA,OAAO,MAAM,MAA4C;AACvD,WAAO,IAAI,kBAAkB,KAAK,SAAQ,KAAK,KAAK;AAAA,EACtD;AAAA,EAEA,OAAO,WAAW,gBAAgE;AACzE,WAAA,IAAI,kBAAkB,eAAe,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,kBAAkB,qBAAqB,OAAO,IAAI;AAAA,UAExD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,kBAAkB;AAAA,gBACzB,OAAM,kBAAkB,kBAAkB,OAAO;AAAA,gBACjD,OAAM,QAAQ,MAAM,SAAS;AAAA,gBAC7B,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACI;AAAA,YAAA;AAAA,UAElC;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAAgC,KAAe;AACzD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAAgC;AACjC,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAoC;AAClC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAiC;AACxB,WAAA;AAAA,MACL,GAAG,MAAM,WAAW;AAAA,MACpB,MAAM,KAAK,QAAQ;AAAA,MACnB,OAAM,KAAK;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAMA,aAAsB;AACb,WAAA;AAAA,EACT;AACF;AAOO,SAAS,qBACd,MAC2B;AAC3B,SAAO,gBAAgB;AACzB;;;;"}
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,\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 * @returns \r\n */\r\n getTitle(){\r\n return \"图文环绕\";\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:ImageTextGridNodeAttrType){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 获取属性\r\n * @param pos \r\n */\r\n getAttrs():ImageTextGridNodeAttrType{\r\n return this.__attrs;\r\n }\r\n /**\r\n * 导出JSON\r\n * @returns \r\n */\r\n exportJSON(): SerializedGridNode {\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n attrs:this.__attrs,\r\n version: 1\r\n }\r\n }\r\n \r\n\r\n /* 不允许空\r\n * @returns \r\n */\r\n canBeEmpty(): boolean {\r\n return false\r\n }\r\n}\r\n\r\n/**\r\n * 判断是否是图文节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageTextGridNode(\r\n node: ImageTextGridNode | LexicalNode | null | undefined,\r\n): node is ImageTextGridNode {\r\n return node instanceof ImageTextGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAYa,MAAA,+BAA0EA,sBAAc,8BAA8B;AAU5H,MAAM,0BAA0BC,SAAAA,SAAQ;AAAA,EAI7C,OAAO,UAAkB;AAChB,WAAA;AAAA,EACT;AAAA,EAGA,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,kBAAkB,kBAAkB,IAAI,KAAK;AAAA,EAC5E;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,kBAAkB,QAAA,CAAS;AAAA,EAC/C;AAAA,EAEA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,kBAAkB,oBAAmB,EAAE,EAAE;EACzF;AAAA,EAEA,OAAO,MAAM,MAA4C;AACvD,WAAO,IAAI,kBAAkB,KAAK,SAAQ,KAAK,KAAK;AAAA,EACtD;AAAA,EAEA,OAAO,WAAW,gBAAgE;AACzE,WAAA,IAAI,kBAAkB,eAAe,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,kBAAkB,qBAAqB,OAAO,IAAI;AAAA,UAExD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,kBAAkB;AAAA,gBACzB,OAAM,kBAAkB,kBAAkB,OAAO;AAAA,gBACjD,OAAM,QAAQ,MAAM;AAAA,gBACpB,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,WAAU;AACD,WAAA;AAAA,EACT;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;;;;"}
@@ -24,34 +24,20 @@ class LayoutGridNode extends GridNode.GridNode {
24
24
  }
25
25
  static importDOM() {
26
26
  return {
27
- div: (domNode) => {
28
- return LayoutGridNode.hasGridNodeByElement(domNode) ? {
29
- conversion: () => {
30
- return {
31
- node: new LayoutGridNode({
32
- class: LayoutGridNode.getExtraClassName(domNode),
33
- display: domNode.style.display || "block",
34
- width: domNode.style.width || "100%",
35
- height: domNode.style.height,
36
- maxWidth: domNode.style.maxWidth,
37
- maxHeight: domNode.style.maxHeight,
38
- flex: domNode.style.flex,
39
- flexDirection: domNode.style.flexDirection,
40
- flexWrap: domNode.style.flexWrap,
41
- alignContent: domNode.style.alignContent,
42
- justifyContent: domNode.style.justifyContent,
43
- alignItems: domNode.style.alignItems
44
- })
45
- };
46
- },
47
- priority: 4
48
- } : null;
49
- }
27
+ div: $covertGridDOM,
28
+ section: $covertGridDOM
50
29
  };
51
30
  }
52
31
  constructor(attrs, key) {
53
32
  super(attrs, key);
54
33
  }
34
+ /**
35
+ * 选中标题
36
+ * @returns
37
+ */
38
+ getTitle() {
39
+ return "布局容器";
40
+ }
55
41
  /**
56
42
  * 设置属性
57
43
  * @param pos
@@ -111,6 +97,29 @@ class LayoutGridNode extends GridNode.GridNode {
111
97
  return false;
112
98
  }
113
99
  }
100
+ const $covertGridDOM = (domNode) => {
101
+ return LayoutGridNode.hasGridNodeByElement(domNode) ? {
102
+ conversion: () => {
103
+ return {
104
+ node: new LayoutGridNode({
105
+ class: LayoutGridNode.getExtraClassName(domNode),
106
+ display: domNode.style.display,
107
+ width: domNode.style.width,
108
+ height: domNode.style.height,
109
+ maxWidth: domNode.style.maxWidth,
110
+ maxHeight: domNode.style.maxHeight,
111
+ flex: domNode.style.flex,
112
+ flexDirection: domNode.style.flexDirection,
113
+ flexWrap: domNode.style.flexWrap,
114
+ alignContent: domNode.style.alignContent,
115
+ justifyContent: domNode.style.justifyContent,
116
+ alignItems: domNode.style.alignItems
117
+ })
118
+ };
119
+ },
120
+ priority: 4
121
+ } : null;
122
+ };
114
123
  function $isLayoutGridNode(node) {
115
124
  return node instanceof LayoutGridNode;
116
125
  }
@@ -1 +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":["createCommand","GridNode"],"mappings":"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"}
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, DOMConversion } 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 : $covertGridDOM,\r\n section : $covertGridDOM\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 * @returns \r\n */\r\n getTitle(){\r\n return \"布局容器\";\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 * 转换DOM\r\n * @param node \r\n * @returns \r\n */\r\nconst $covertGridDOM = (domNode: HTMLElement):DOMConversion<HTMLElement> | null => {\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,\r\n width:domNode.style.width,\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 * @param node \r\n * @returns \r\n */\r\nexport function $isLayoutGridNode(\r\n node: LayoutGridNode | LexicalNode | null | undefined,\r\n): node is LayoutGridNode {\r\n return node instanceof LayoutGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":"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"}
@@ -24,29 +24,20 @@ class ModuleGridNode extends GridNode.GridNode {
24
24
  }
25
25
  static importDOM() {
26
26
  return {
27
- div: (domNode) => {
28
- return ModuleGridNode.hasGridNodeByElement(domNode) ? {
29
- conversion: () => {
30
- return {
31
- node: new ModuleGridNode({
32
- class: ModuleGridNode.getExtraClassName(domNode),
33
- width: domNode.style.width || "100%",
34
- height: domNode.style.height,
35
- flex: domNode.style.flex,
36
- maxWidth: domNode.style.maxWidth,
37
- maxHeight: domNode.style.maxHeight,
38
- overflowX: domNode.style.overflowX == "auto"
39
- })
40
- };
41
- },
42
- priority: 4
43
- } : null;
44
- }
27
+ div: $covertGridDOM,
28
+ section: $covertGridDOM
45
29
  };
46
30
  }
47
31
  constructor(attrs, key) {
48
32
  super(attrs, key);
49
33
  }
34
+ /**
35
+ * 选中标题
36
+ * @returns
37
+ */
38
+ getTitle() {
39
+ return "模块容器";
40
+ }
50
41
  /**
51
42
  * 设置属性
52
43
  * @param pos
@@ -91,6 +82,12 @@ class ModuleGridNode extends GridNode.GridNode {
91
82
  el.classList.add(this.__attrs.class);
92
83
  }
93
84
  }
85
+ if (!el.classList.contains(GridNode.GridNode.getMarkClassName())) {
86
+ el.classList.add(GridNode.GridNode.getMarkClassName());
87
+ }
88
+ if (!el.classList.contains(this.getMarkClassName())) {
89
+ el.classList.add(this.getMarkClassName());
90
+ }
94
91
  if (this.__attrs.overflowX) {
95
92
  el.style.overflowX = "auto";
96
93
  el.style.whiteSpace = "nowrap";
@@ -125,6 +122,24 @@ class ModuleGridNode extends GridNode.GridNode {
125
122
  // return true;
126
123
  // }
127
124
  }
125
+ const $covertGridDOM = (domNode) => {
126
+ return ModuleGridNode.hasGridNodeByElement(domNode) ? {
127
+ conversion: () => {
128
+ return {
129
+ node: new ModuleGridNode({
130
+ class: ModuleGridNode.getExtraClassName(domNode),
131
+ width: domNode.style.width,
132
+ height: domNode.style.height,
133
+ flex: domNode.style.flex,
134
+ maxWidth: domNode.style.maxWidth,
135
+ maxHeight: domNode.style.maxHeight,
136
+ overflowX: domNode.style.overflowX == "auto"
137
+ })
138
+ };
139
+ },
140
+ priority: 4
141
+ } : null;
142
+ };
128
143
  function $isModuleGridNode(node) {
129
144
  return node instanceof ModuleGridNode;
130
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.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 ModuleGridNodeAttrType = GridNodeAttrType & {\r\n overflowX:boolean\r\n};\r\n\r\n\r\n/**\r\n * 插入模块格子\r\n */\r\nexport const INSERT_MODULEGRID_COMMAND: LexicalCommand<ModuleGridNodeAttrType> = createCommand('INSERT_MODULEGRID_COMMAND')\r\n\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedModuleGridNode = Spread<{ attrs:ModuleGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 模块格子\r\n */\r\nexport class ModuleGridNode extends GridNode{\r\n\r\n declare __attrs:ModuleGridNodeAttrType\r\n\r\n static getType(): string { return \"module-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(ModuleGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${ModuleGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(ModuleGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: ModuleGridNode): ModuleGridNode {\r\n return new ModuleGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedModuleGridNode): ModuleGridNode {\r\n return new ModuleGridNode(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 ModuleGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new ModuleGridNode({\r\n class:ModuleGridNode.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 overflowX:domNode.style.overflowX == \"auto\"\r\n } as ModuleGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:ModuleGridNodeAttrType,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?:ModuleGridNodeAttrType){\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():ModuleGridNodeAttrType{\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 * @param el \r\n */\r\n updateElementAttr(el:HTMLElement){\r\n\r\n // 更新属性\r\n Object.keys(this.__attrs).filter(key=>key != \"class\" && key != \"overflowX\").forEach((key:any)=>{\r\n el.style[key] = (this.__attrs as any)[key]\r\n })\r\n\r\n // 移除格子基础标识\r\n let extraClassName = GridNode.getExtraClassName(el);\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 // 添加样式\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n \r\n if(this.__attrs.overflowX){\r\n el.style.overflowX = \"auto\";\r\n el.style.whiteSpace = \"nowrap\";\r\n }\r\n else{\r\n el.style.overflowX = \"\";\r\n el.style.whiteSpace = \"\";\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 el.setAttribute(\"contenteditable\",\"false\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n\r\n return el;\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/**\r\n * 是否是模块格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isModuleGridNode(\r\n node: ModuleGridNode | LexicalNode | null | undefined,\r\n): node is ModuleGridNode {\r\n return node instanceof ModuleGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":"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"}
1
+ {"version":3,"file":"ModuleGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.ts"],"sourcesContent":["import { type DOMConversionMap,type NodeKey, type Spread, type DOMExportOutput, type LexicalCommand, createCommand, LexicalNode, EditorConfig, DOMConversion } from 'lexical'\r\nimport { type GridNodeAttrType , GridNode,SerializedGridNode } from \"./GridNode\"\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type ModuleGridNodeAttrType = GridNodeAttrType & {\r\n overflowX:boolean\r\n};\r\n\r\n\r\n/**\r\n * 插入模块格子\r\n */\r\nexport const INSERT_MODULEGRID_COMMAND: LexicalCommand<ModuleGridNodeAttrType> = createCommand('INSERT_MODULEGRID_COMMAND')\r\n\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedModuleGridNode = Spread<{ attrs:ModuleGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 模块格子\r\n */\r\nexport class ModuleGridNode extends GridNode{\r\n\r\n declare __attrs:ModuleGridNodeAttrType\r\n\r\n static getType(): string { return \"module-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(ModuleGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${ModuleGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(ModuleGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: ModuleGridNode): ModuleGridNode {\r\n return new ModuleGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedModuleGridNode): ModuleGridNode {\r\n return new ModuleGridNode(serializedNode.attrs)\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n div : $covertGridDOM,\r\n section : $covertGridDOM\r\n }\r\n }\r\n\r\n constructor(attrs:ModuleGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 选中标题\r\n * @returns \r\n */\r\n getTitle(){\r\n return \"模块容器\";\r\n }\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:ModuleGridNodeAttrType){\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():ModuleGridNodeAttrType{\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 * @param el \r\n */\r\n updateElementAttr(el:HTMLElement){\r\n\r\n // 更新属性\r\n Object.keys(this.__attrs).filter(key=>key != \"class\" && key != \"overflowX\").forEach((key:any)=>{\r\n el.style[key] = (this.__attrs as any)[key]\r\n })\r\n\r\n // 移除格子基础标识\r\n let extraClassName = GridNode.getExtraClassName(el);\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 // 添加样式\r\n if (this.__attrs.class) {\r\n el.classList.add(this.__attrs.class);\r\n }\r\n }\r\n\r\n // 标识基础格子\r\n if (!el.classList.contains(GridNode.getMarkClassName())) {\r\n el.classList.add(GridNode.getMarkClassName());\r\n }\r\n\r\n // 标识指定格子\r\n if (!el.classList.contains(this.getMarkClassName())) {\r\n el.classList.add(this.getMarkClassName());\r\n }\r\n\r\n \r\n if(this.__attrs.overflowX){\r\n el.style.overflowX = \"auto\";\r\n el.style.whiteSpace = \"nowrap\";\r\n }\r\n else{\r\n el.style.overflowX = \"\";\r\n el.style.whiteSpace = \"\";\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 el.setAttribute(\"contenteditable\",\"false\")\r\n el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n\r\n return el;\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/**\r\n * 转换DOM\r\n * @param node \r\n * @returns \r\n */\r\nconst $covertGridDOM = (domNode: HTMLElement):DOMConversion<HTMLElement> | null => {\r\n\r\n return ModuleGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new ModuleGridNode({\r\n class:ModuleGridNode.getExtraClassName(domNode),\r\n width:domNode.style.width,\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 overflowX:domNode.style.overflowX == \"auto\"\r\n } as ModuleGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n}\r\n\r\n/**\r\n * 是否是模块格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isModuleGridNode(\r\n node: ModuleGridNode | LexicalNode | null | undefined,\r\n): node is ModuleGridNode {\r\n return node instanceof ModuleGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAca,MAAA,4BAAoEA,sBAAc,2BAA2B;AAWnH,MAAM,uBAAuBC,SAAAA,SAAQ;AAAA,EAI1C,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAe;AAAA,EAEjD,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,eAAe,kBAAkB,IAAI,KAAK;AAAA,EACzE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,eAAe,QAAA,CAAS;AAAA,EAC5C;AAAA,EACA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,eAAe,oBAAmB,EAAE,EAAE;EACtF;AAAA,EACA,OAAO,MAAM,MAAsC;AACjD,WAAO,IAAI,eAAe,KAAK,SAAQ,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,OAAO,WAAW,gBAA0D;AACnE,WAAA,IAAI,eAAe,eAAe,KAAK;AAAA,EAChD;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM;AAAA,MACN,SAAU;AAAA,IAAA;AAAA,EAEd;AAAA,EAEA,YAAY,OAA6B,KAAe;AACtD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAU;AACD,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,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,EAMA,kBAAkB,IAAe;AAG/B,WAAO,KAAK,KAAK,OAAO,EAAE,OAAO,CAAA,QAAK,OAAO,WAAW,OAAO,WAAW,EAAE,QAAQ,CAAC,QAAU;AAC7F,SAAG,MAAM,GAAG,IAAK,KAAK,QAAgB,GAAG;AAAA,IAAA,CAC1C;AAGG,QAAA,iBAAiBA,SAAAA,SAAS,kBAAkB,EAAE;AAE/C,QAAA,kBAAkB,KAAK,QAAQ,OAAM;AAEtC,UAAG,gBAAe;AACb,WAAA,UAAU,OAAO,cAAc;AAAA,MACpC;AAGI,UAAA,KAAK,QAAQ,OAAO;AACtB,WAAG,UAAU,IAAI,KAAK,QAAQ,KAAK;AAAA,MACrC;AAAA,IACF;AAGA,QAAI,CAAC,GAAG,UAAU,SAASA,SAAS,SAAA,iBAAA,CAAkB,GAAG;AACvD,SAAG,UAAU,IAAIA,SAAAA,SAAS,iBAAkB,CAAA;AAAA,IAC9C;AAGA,QAAI,CAAC,GAAG,UAAU,SAAS,KAAK,iBAAA,CAAkB,GAAG;AACnD,SAAG,UAAU,IAAI,KAAK,iBAAkB,CAAA;AAAA,IAC1C;AAGG,QAAA,KAAK,QAAQ,WAAU;AACxB,SAAG,MAAM,YAAY;AACrB,SAAG,MAAM,aAAa;AAAA,IAAA,OAEpB;AACF,SAAG,MAAM,YAAY;AACrB,SAAG,MAAM,aAAa;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOC,UAAU,QAAmC;AAEtC,UAAA,KAAK,MAAM,UAAU,MAAM;AAE9B,OAAA,aAAa,mBAAkB,OAAO;AACtC,OAAA,aAAa,0BAAyB,MAAM;AAExC,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBF;AAOA,MAAM,iBAAiB,CAAC,YAA2D;AAEzE,SAAA,eAAe,qBAAqB,OAAO,IAAI;AAAA,IAErD,YAAY,MAAI;AAEN,aAAA;AAAA,QACN,MAAK,IAAI,eAAe;AAAA,UACtB,OAAM,eAAe,kBAAkB,OAAO;AAAA,UAC9C,OAAM,QAAQ,MAAM;AAAA,UACpB,QAAO,QAAQ,MAAM;AAAA,UACrB,MAAK,QAAQ,MAAM;AAAA,UACnB,UAAS,QAAQ,MAAM;AAAA,UACvB,WAAU,QAAQ,MAAM;AAAA,UACxB,WAAU,QAAQ,MAAM,aAAa;AAAA,QAAA,CACZ;AAAA,MAAA;AAAA,IAE/B;AAAA,IACA,UAAU;AAAA,EACR,IAAA;AACN;AAOO,SAAS,kBACd,MACwB;AACxB,SAAO,gBAAgB;AACzB;;;;"}
@@ -30,7 +30,7 @@ class TextGridNode extends GridNode.GridNode {
30
30
  return {
31
31
  node: new TextGridNode({
32
32
  class: TextGridNode.getExtraClassName(domNode),
33
- width: domNode.style.width || "100%",
33
+ width: domNode.style.width,
34
34
  height: domNode.style.height,
35
35
  flex: domNode.style.flex,
36
36
  maxWidth: domNode.style.maxWidth,
@@ -46,6 +46,13 @@ class TextGridNode extends GridNode.GridNode {
46
46
  constructor(attrs, key) {
47
47
  super(attrs, key);
48
48
  }
49
+ /**
50
+ * 选中标题
51
+ * @returns
52
+ */
53
+ getTitle() {
54
+ return "文本框";
55
+ }
49
56
  /**
50
57
  * 设置属性
51
58
  * @param pos
@@ -1 +1 @@
1
- {"version":3,"file":"TextGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.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\n */\r\nexport const INSERT_TEXTGRID_COMMAND: LexicalCommand<GridNodeAttrType> = createCommand('INSERT_TEXTGRID_COMMAND')\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type TextGridNodeAttrType = GridNodeAttrType & {};\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedTextGridNode= Spread<{ attrs:TextGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 布局格子\r\n */\r\nexport class TextGridNode extends GridNode{\r\n\r\n declare __attrs:TextGridNodeAttrType\r\n\r\n static getType(): string { return \"text-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(TextGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${TextGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(TextGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: TextGridNode): TextGridNode{\r\n return new TextGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedTextGridNode): TextGridNode{\r\n return new TextGridNode(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 TextGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new TextGridNode({\r\n class:TextGridNode.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 TextGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:TextGridNodeAttrType,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?:TextGridNodeAttrType){\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():TextGridNodeAttrType{\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 // el.setAttribute(\"contenteditable\",\"true\")\r\n // el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n\r\n // return el;\r\n // }\r\n}\r\n\r\n/**\r\n * 是否是文本格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isTextGridNode(\r\n node: TextGridNode | LexicalNode | null | undefined,\r\n): node is TextGridNode {\r\n return node instanceof TextGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAOa,MAAA,0BAA4DA,sBAAc,yBAAyB;AAezG,MAAM,qBAAqBC,SAAAA,SAAQ;AAAA,EAIxC,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAa;AAAA,EAE/C,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,aAAa,kBAAkB,IAAI,KAAK;AAAA,EACvE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,aAAa,QAAA,CAAS;AAAA,EAC1C;AAAA,EACA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,aAAa,oBAAmB,EAAE,EAAE;EACpF;AAAA,EACA,OAAO,MAAM,MAAiC;AAC5C,WAAO,IAAI,aAAa,KAAK,SAAQ,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,OAAO,WAAW,gBAAqD;AAC9D,WAAA,IAAI,aAAa,eAAe,KAAK;AAAA,EAC9C;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,aAAa,qBAAqB,OAAO,IAAI;AAAA,UAEnD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,aAAa;AAAA,gBACpB,OAAM,aAAa,kBAAkB,OAAO;AAAA,gBAC5C,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,CACD;AAAA,YAAA;AAAA,UAE7B;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAA2B,KAAe;AACpD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,MAA2B;AAC5B,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAA+B;AAC7B,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBF;AAOO,SAAS,gBACd,MACsB;AACtB,SAAO,gBAAgB;AACzB;;;;"}
1
+ {"version":3,"file":"TextGridNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.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\n */\r\nexport const INSERT_TEXTGRID_COMMAND: LexicalCommand<GridNodeAttrType> = createCommand('INSERT_TEXTGRID_COMMAND')\r\n\r\n/**\r\n * 属性\r\n */\r\nexport type TextGridNodeAttrType = GridNodeAttrType & {};\r\n\r\n/**\r\n * 节点序列化 \r\n */\r\nexport type SerializedTextGridNode= Spread<{ attrs:TextGridNodeAttrType },SerializedGridNode>\r\n\r\n/**\r\n * 布局格子\r\n */\r\nexport class TextGridNode extends GridNode{\r\n\r\n declare __attrs:TextGridNodeAttrType\r\n\r\n static getType(): string { return \"text-grid\"; }\r\n\r\n static hasGridNodeByElement(el:HTMLElement):HTMLElement|null{\r\n return el.classList.contains(TextGridNode.getMarkClassName()) ? el : null;\r\n }\r\n \r\n static getMarkClassName(): string {\r\n return `mk-doc__${TextGridNode.getType()}`\r\n }\r\n static getExtraClassName(el:HTMLElement){\r\n return GridNode.getExtraClassName(el).replace(TextGridNode.getMarkClassName(),\"\").trim();\r\n }\r\n static clone(node: TextGridNode): TextGridNode{\r\n return new TextGridNode(node.__attrs,node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedTextGridNode): TextGridNode{\r\n return new TextGridNode(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 TextGridNode.hasGridNodeByElement(domNode) ? {\r\n\r\n conversion: ()=>{ \r\n\r\n return { \r\n node:new TextGridNode({\r\n class:TextGridNode.getExtraClassName(domNode),\r\n width:domNode.style.width,\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 TextGridNodeAttrType) \r\n };\r\n },\r\n priority: 4\r\n } : null;\r\n }\r\n }\r\n }\r\n\r\n constructor(attrs:TextGridNodeAttrType,key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n /**\r\n * 选中标题\r\n * @returns \r\n */\r\n getTitle(){\r\n return \"文本框\";\r\n }\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:TextGridNodeAttrType){\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():TextGridNodeAttrType{\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 // el.setAttribute(\"contenteditable\",\"true\")\r\n // el.setAttribute(\"data-lexical-decorator\",\"true\")\r\n\r\n // return el;\r\n // }\r\n}\r\n\r\n/**\r\n * 是否是文本格子\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isTextGridNode(\r\n node: TextGridNode | LexicalNode | null | undefined,\r\n): node is TextGridNode {\r\n return node instanceof TextGridNode\r\n}\r\n"],"names":["createCommand","GridNode"],"mappings":";;;;AAOa,MAAA,0BAA4DA,sBAAc,yBAAyB;AAezG,MAAM,qBAAqBC,SAAAA,SAAQ;AAAA,EAIxC,OAAO,UAAkB;AAAS,WAAA;AAAA,EAAa;AAAA,EAE/C,OAAO,qBAAqB,IAAgC;AAC1D,WAAO,GAAG,UAAU,SAAS,aAAa,kBAAkB,IAAI,KAAK;AAAA,EACvE;AAAA,EAEA,OAAO,mBAA2B;AACzB,WAAA,WAAW,aAAa,QAAA,CAAS;AAAA,EAC1C;AAAA,EACA,OAAO,kBAAkB,IAAe;AAC/B,WAAAA,kBAAS,kBAAkB,EAAE,EAAE,QAAQ,aAAa,oBAAmB,EAAE,EAAE;EACpF;AAAA,EACA,OAAO,MAAM,MAAiC;AAC5C,WAAO,IAAI,aAAa,KAAK,SAAQ,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,OAAO,WAAW,gBAAqD;AAC9D,WAAA,IAAI,aAAa,eAAe,KAAK;AAAA,EAC9C;AAAA,EAEA,OAAO,YAAqC;AACnC,WAAA;AAAA,MACL,KAAM,CAAC,YAAyB;AAEtB,eAAA,aAAa,qBAAqB,OAAO,IAAI;AAAA,UAEnD,YAAY,MAAI;AAEN,mBAAA;AAAA,cACN,MAAK,IAAI,aAAa;AAAA,gBACpB,OAAM,aAAa,kBAAkB,OAAO;AAAA,gBAC5C,OAAM,QAAQ,MAAM;AAAA,gBACpB,QAAO,QAAQ,MAAM;AAAA,gBACrB,MAAK,QAAQ,MAAM;AAAA,gBACnB,UAAS,QAAQ,MAAM;AAAA,gBACvB,WAAU,QAAQ,MAAM;AAAA,cAAA,CACD;AAAA,YAAA;AAAA,UAE7B;AAAA,UACA,UAAU;AAAA,QACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,YAAY,OAA2B,KAAe;AACpD,UAAM,OAAM,GAAG;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAU;AACD,WAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,MAA2B;AAC5B,UAAA,WAAW,KAAK;AACf,WAAA,OAAO,SAAS,SAAQ,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAA+B;AAC7B,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBF;AAOO,SAAS,gBACd,MACsB;AACtB,SAAO,gBAAgB;AACzB;;;;"}