@maketribe/ms-app 3.2.25 → 3.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/cjs/assets/iconfonts/iconfont.js +1 -1
  2. package/dist/cjs/assets/iconfonts/iconfont.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/core/element-block.js +92 -0
  4. package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -0
  5. package/dist/cjs/components/basic/doc-editor/core/index.js +5 -6
  6. package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
  7. package/dist/cjs/components/basic/doc-editor/core/utils.js +20 -13
  8. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
  9. package/dist/cjs/components/basic/doc-editor/editor.vue.js +4 -4
  10. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  11. package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  12. package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  13. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  14. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  15. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  16. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  17. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
  18. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  19. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
  20. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  21. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
  22. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  23. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +217 -0
  24. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  25. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
  26. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  27. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +54 -43
  28. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  29. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +19 -16
  30. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  31. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +32 -54
  32. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  33. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  34. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  35. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  36. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  37. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +80 -105
  38. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  39. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  40. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  41. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  42. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  43. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  44. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +34 -7
  45. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  46. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  47. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  48. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +41 -5
  49. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  50. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js +10 -4
  51. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  52. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  53. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  54. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  55. package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  56. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  57. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  58. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
  59. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  60. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  61. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  62. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  63. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
  64. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  65. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
  66. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  67. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
  68. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  69. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
  70. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  71. package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
  72. package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
  73. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
  74. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  75. package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
  76. package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
  77. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
  78. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  79. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
  80. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  81. package/dist/cjs/modules/cms/cms-settings.js +4 -0
  82. package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
  83. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  84. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  85. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  86. package/dist/cjs/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  87. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +8 -6
  88. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  89. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  90. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  91. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
  92. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  93. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
  94. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  95. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
  96. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  97. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  98. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  99. package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
  100. package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
  101. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js +7 -1
  102. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  103. package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
  104. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
  105. package/dist/esm/assets/iconfonts/iconfont.js +1 -1
  106. package/dist/esm/assets/iconfonts/iconfont.js.map +1 -1
  107. package/dist/esm/components/basic/doc-editor/core/element-block.js +92 -0
  108. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -0
  109. package/dist/esm/components/basic/doc-editor/core/index.js +6 -7
  110. package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
  111. package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
  112. package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
  113. package/dist/esm/components/basic/doc-editor/editor.vue.js +4 -4
  114. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  115. package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.js +8 -8
  116. package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -0
  117. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +164 -0
  118. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -0
  119. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +89 -0
  120. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -0
  121. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +120 -0
  122. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -0
  123. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +128 -0
  124. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -0
  125. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +94 -0
  126. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -0
  127. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +218 -0
  128. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -0
  129. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +140 -0
  130. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -0
  131. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +55 -44
  132. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  133. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +20 -17
  134. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  135. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +33 -55
  136. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  137. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +25 -13
  138. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
  139. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  140. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  141. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +84 -109
  142. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  143. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +0 -12
  144. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
  145. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  146. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  147. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  148. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +37 -10
  149. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  150. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +0 -1
  151. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
  152. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +43 -7
  153. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
  154. package/dist/esm/components/basic/doc-editor/plugins/nodes.js +10 -4
  155. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  156. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  157. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  158. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +3 -5
  159. package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
  160. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  161. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  162. package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
  163. package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  164. package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  165. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +0 -2
  166. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  167. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
  168. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  169. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
  170. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  171. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
  172. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  173. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
  174. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  175. package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
  176. package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
  177. package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
  178. package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  179. package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
  180. package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
  181. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
  182. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  183. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
  184. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  185. package/dist/esm/modules/cms/cms-settings.js +4 -0
  186. package/dist/esm/modules/cms/cms-settings.js.map +1 -1
  187. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +4 -0
  188. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  189. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js +2 -0
  190. package/dist/esm/modules/cms/dataviews/cms-ad-defines/CmsAdDefinesForm.js.map +1 -1
  191. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +9 -7
  192. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  193. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  194. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  195. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +58 -6
  196. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  197. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
  198. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  199. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
  200. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  201. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  202. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  203. package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
  204. package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
  205. package/dist/esm/modules/ms/components/image-select/image-select-panel.js +9 -3
  206. package/dist/esm/modules/ms/components/image-select/image-select-panel.js.map +1 -1
  207. package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
  208. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
  209. package/dist/style/components/basic/doc-editor/index.css +1 -1
  210. package/dist/style/components/basic/visual-page-editor/index.css +1 -1
  211. package/dist/style/components/index.css +1 -1
  212. package/dist/style/index.css +2 -2
  213. package/dist/style/src/components/basic/doc-editor/index.scss +2 -0
  214. package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
  215. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +45 -0
  216. package/dist/types/components/basic/doc-editor/core/index.d.ts +8 -4
  217. package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
  218. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +88 -0
  219. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +50 -0
  220. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +72 -0
  221. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +64 -0
  222. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +51 -0
  223. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/index.d.ts +5 -0
  224. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/utils.d.ts +3 -0
  225. package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +24 -20
  226. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +18 -10
  227. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
  228. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/index.d.ts +0 -1
  229. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +0 -6
  230. package/dist/types/components/basic/doc-editor/plugins/index.d.ts +3 -3
  231. package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
  232. package/dist/types/components/basic/dynamic-form-panel/type.d.ts +3 -2
  233. package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
  234. package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
  235. package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
  236. package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
  237. package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
  238. package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
  239. package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
  240. package/dist/types/modules/cms/cms-settings.d.ts +4 -28
  241. package/dist/types/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.d.ts +1 -0
  242. package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
  243. package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
  244. package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
  245. package/package.json +9 -8
  246. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js +0 -13
  247. package/dist/cjs/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  248. package/dist/cjs/components/basic/doc-editor/core/element-module.js +0 -68
  249. package/dist/cjs/components/basic/doc-editor/core/element-module.js.map +0 -1
  250. package/dist/cjs/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  251. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  252. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  253. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -45
  254. package/dist/cjs/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  255. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  256. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  257. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  258. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  259. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  260. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  261. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
  262. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  263. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  264. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  265. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
  266. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  267. package/dist/esm/components/basic/doc-editor/core/decorator-module.js +0 -13
  268. package/dist/esm/components/basic/doc-editor/core/decorator-module.js.map +0 -1
  269. package/dist/esm/components/basic/doc-editor/core/element-module.js +0 -68
  270. package/dist/esm/components/basic/doc-editor/core/element-module.js.map +0 -1
  271. package/dist/esm/components/basic/doc-editor/plugins/DecoratorModuleToolbarPlugin/index.vue.js.map +0 -1
  272. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js +0 -106
  273. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.js.map +0 -1
  274. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js +0 -46
  275. package/dist/esm/components/basic/doc-editor/plugins/ImageTextPlugin/index.vue.js.map +0 -1
  276. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js +0 -143
  277. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.js.map +0 -1
  278. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js +0 -123
  279. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.js.map +0 -1
  280. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js +0 -84
  281. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.js.map +0 -1
  282. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
  283. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  284. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  285. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  286. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
  287. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  288. package/dist/types/components/basic/doc-editor/core/decorator-module.d.ts +0 -60
  289. package/dist/types/components/basic/doc-editor/core/element-module.d.ts +0 -15
  290. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/ImageTextNode.d.ts +0 -63
  291. package/dist/types/components/basic/doc-editor/plugins/ImageTextPlugin/index.d.ts +0 -1
  292. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleContainerNode.d.ts +0 -86
  293. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleRenderComponent.d.ts +0 -23
  294. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockCantainerNode.d.ts +0 -63
  295. package/dist/types/components/basic/doc-editor/plugins/RichTextPlugin/nodes/BaseBlockNode.d.ts +0 -58
  296. package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
  297. package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
  298. package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
  299. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  300. /package/dist/cjs/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  301. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  302. /package/dist/cjs/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  303. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js +0 -0
  304. /package/dist/esm/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue2.js.map +0 -0
  305. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js +0 -0
  306. /package/dist/esm/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue2.js.map +0 -0
  307. /package/dist/types/components/basic/doc-editor/plugins/{DecoratorModuleToolbarPlugin → ElementBlockSelectionPlugin}/index.vue.d.ts +0 -0
  308. /package/dist/types/components/basic/doc-editor/plugins/{ImageTextPlugin → GridPlugin}/index.vue.d.ts +0 -0
  309. /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
  310. /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/GridPlugin/utils.ts"],"sourcesContent":["import { LexicalNode } from \"lexical\"\r\n\r\nimport { createDefaultFormData } from \"../../../dynamic-form-panel/utils\"\r\nimport { showDynamicFormDialoger } from \"../../../dynamic-form-panel\"\r\n\r\nimport { GridNode,$isGridNode } from \"./GridNode\"\r\nimport { $isLayoutGridNode } from \"./LayoutGridNode\"\r\nimport { type TextGridNodeAttrType,TextGridNode,INSERT_TEXTGRID_COMMAND } from \"./TextGridNode\"\r\nimport { type ImageTextGridNodeAttrType,ImageTextGridNode,INSERT_IMAGETEXTGRID_COMMAND } from \"./ImageTextGridNode\"\r\nimport { type ModuleGridNodeAttrType,ModuleGridNode,INSERT_MODULEGRID_COMMAND,$isModuleGridNode } from \"./ModuleGridNode\"\r\n\r\nexport const showGridEditDialoger = async (node:GridNode,parent:LexicalNode,data:any)=>{\r\n\r\n // 表单面板\r\n const options:any = [\r\n { name:\"class\", title:\"标识类名 : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" },\r\n { name:\"width\", title:\"宽度(支持%) : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" },\r\n { name:\"height\", title:\"高度度(支持%) : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" },\r\n { name:\"maxWidth\", title:\"最大宽度(支持%) : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" },\r\n { name:\"maxHeight\", title:\"最大高度(支持%) : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" }\r\n ];\r\n\r\n let title = \"容器\";\r\n\r\n if($isLayoutGridNode(parent)){\r\n options.push({ name:\"flex\", title:\"弹性比例(Flex) : \", component:\"el-input\", props:{ clearable:true }, defaultValue:\"\" })\r\n\r\n if($isLayoutGridNode(node)){\r\n options.push({ \r\n name:\"display\", title:\"容器类型 : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"block\" ,label:\"普通快(block)\"}, { value:\"flex\" ,label:\"弹性格子(Flex)\"}\r\n ]\r\n }, defaultValue:\"\" \r\n });\r\n }\r\n }\r\n\r\n // 布局格子\r\n if($isLayoutGridNode(node)){\r\n options.push(...[\r\n { \r\n name:\"flexDirection\", title:\"flex-direction : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"column\" ,label:\"column\"}, { value:\"row\" ,label:\"row\"},\r\n { value:\"row-reverse\" ,label:\"row-reverse\"}, { value:\"column-reverse\" ,label:\"column-reverse\"}\r\n ]\r\n }, defaultValue:\"\" ,condition:(data:any)=>data[\"display\"] == \"flex\"\r\n },\r\n { \r\n name:\"flexWrap\", title:\"是否换行 : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"warp\" ,label:\"换行\"}, { value:\"nowrap\" ,label:\"不换行\"}\r\n ]\r\n }, defaultValue:\"\" ,condition:(data:any)=>data[\"display\"] == \"flex\"\r\n },\r\n { \r\n name:\"alignContent\", title:\"align-content : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"flex-start\" ,label:\"左\"}, { value:\"center\" ,label:\"居中\"}, { value:\"flex-end\" ,label:\"右\"}, { value:\"space-between\" ,label:\"两边\"},\r\n { value:\"space-around\" ,label:\"space-around\"}, { value:\"stretch\" ,label:\"stretch\"}\r\n ]\r\n }, defaultValue:\"\" ,condition:(data:any)=>data[\"display\"] == \"flex\"\r\n },\r\n { \r\n name:\"justifyContent\", title:\"justify-content : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"flex-start\" ,label:\"顶部\"}, { value:\"center\" ,label:\"居中\"}, { value:\"flex-end\" ,label:\"底部\"}, { value:\"space-between\" ,label:\"两边\"},\r\n { value:\"space-around\" ,label:\"space-around\"}, { value:\"space-evenly\" ,label:\"space-evenly\"}\r\n ]\r\n }, defaultValue:\"\" ,condition:(data:any)=>data[\"display\"] == \"flex\"\r\n },\r\n { \r\n name:\"alignItems\", title:\"align-items : \", component:\"el-radio-group\", props:{ \r\n data:[\r\n { value:\"flex-start\" ,label:\"左\"}, { value:\"center\" ,label:\"居中\"}, { value:\"flex-end\" ,label:\"右\"},\r\n { value:\"stretch\" ,label:\"stretch\"}, { value:\"baseline\" ,label:\"baseline\"}\r\n ]\r\n }, defaultValue:\"\" ,condition:(data:any)=>data[\"display\"] == \"flex\"\r\n }\r\n ]);\r\n }\r\n\r\n if($isModuleGridNode(node)){\r\n options.push( { name:\"overflowX\", title:\"横向滚动 : \", component:\"el-switch\", props:{ } as any, defaultValue:false as any });\r\n }\r\n\r\n return await showDynamicFormDialoger(title,options,data)\r\n}\r\n"],"names":["$isLayoutGridNode","data","$isModuleGridNode","showDynamicFormDialoger"],"mappings":"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"}
@@ -5,21 +5,20 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
5
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
6
  const lexical = require("lexical");
7
7
  const ImageDefaultSrc = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAADkBJREFUeJzt3W/wHVdZwPHvL01S05AmbUhDm2L/0EJDaqVNbUmR2uIwBQtMbRxRJICow9BKFUZHxQr6ovIGZrDgqCNFgbajI6C2RR1NrRUKmYBpRQrTlmL8g9UpNKRtIk2bxhcnV5qQ5HfvPc/us3v3+5l5XiW/c59z555nd8/u2QOSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJGk+cy19xiXA5cCLgTOB44BFLXy21BdPAjuA+4EtwG3APwL7MpOqcRTwc8CDlE4YhjFZPAC8GVhAQ5o6AzgLuBFY31D70pB8Hng95ewgVBMF4DLg48CzGmhbGqrHgCuBzZGNRheAl1OuXRYHtysJ9gA/Atwe1WBkATgD2AYsC2xT0oF2AucBX4toLGpyYY5yze/gl5q1HPgYQQfvqAKwCbgwqC1JR3YR8JMRDUVdAnwZWBvUlqT53QucXdtIxBnARTj4pbatAy6obSSiALw6oA1Jk6seexEFYENAG5Imd1FtAxEF4PkBbUia3AtqG4iYBHwCH/yRMnwbWFLTQEQB2BfQhqTpVI3hxlYZSRqGyOWPmykLHk6gnXcVSG2YA04EXgt8htgxky6iE08CP9N24lKSa4C9WAD+P97SetZSrl/GAsA+ymuPpKGZA75IcgHowiTg9dkJSAn2ATdkJxGhtoId137KUidciGcA7MhOQEqyMzuBLhQASUksANKAWQCkPOm38SwA0oBZAKQBswBIebwEkJTHAiANmAVAypN+CbAwOwEpwMnApZTXZK8DTgVWAcfs//fdwMPAdsr79LcCfw98veU8Z1LvlzOql1YC7wD+iel/e1/Y38bKlnMfOXOMHDs/fnrfAfXKGuB3KUf12t/eKHYDH9zfdpssAAn5qp8WA79B7MA/OHYB1wKLWurTGQE5p+t9B9R564B/prmBf3DcQzvb3VkAEvJVv2wEHqe9wT+KxykvqG2SBSAhX/XH1cDTtD/4R7EXuKrB/j0vIMd0ve+AOulq8gb+wdFUEbAAJOSr7ttI7pH/4NhLM5cDFoCEfNVt68i55p8vHiN+YvD0gLzS9b4D6ozFtDvbP2ncTewtwvQC4FoAdcmvAOdkJ3EEL6Js6KFn8AxAEdbQ7EM+UfE4ZZ+/CKcF5FPFMwB1xTup3Ou+JUspuWo/zwBUayX9OPqPYjcxC4g8A5CAN9KPo//IEmBTdhIRLADqgp/KTmAKETmnnwFbAJTtZOC87CSmcD5wUnYStSwAynZpdgIV+pw7YAFQvguyE6hwYeXfewmgwVuXnUCFPucOWACU79TsBCqckp1ALQuAsq3KTqBCbe5eAmjwjpn/v3TW0uwEalkApAGzACjb7uwEKuyq/HsvATR4D2cnUKHPuQMWAOXbnp1Ahe3ZCdSyACjbvdkJVOhz7oAFQPm2ZidQoTZ35wA0eHdkJzClfZQdhnvNAqBs/0nZ4bdvvgA8lJ1ELQuAuuDm7ASmcFNAG+mXABF8JZhq9e2VYLuA4wP6vSYglyqeAagLvgl8ODuJCdwAPJKdRFd4BqAIayhH1uyj+3wR+VrwkwLyqeIZgLri68B7spMYw3XMwORfJM8AFGURcA/5R/nDxTZitwZLPwOI0PsOqFPW0t3NQc8K7uuJAXml630HOmop5QgRsQFF31xJ2ZI7e9CPYi9wRQP9tAAk5NtlLwP+CPg3vvvocztwDbAiLbt2XUX+wB/FWxvqowUgId8uWg9sYbzv61HKLrpHpWTarqvIPRPYS3ODHywA3ehAsmuAJ5n8e7uTmIdRuu5KyhlQ24P/MZo57X+m5wTkma73HUj0a9R9d3cDy1vPun1rKX1ta/DfTfyE36FYABLy7YrXEvNjvZN+baw5rUWUbbmbvEPwOKUoR97qOxILQEK+XbCe2GffbwEWttqDPCcCHyD2+9sFXE/cE37jWh2Qe7red6BlJ1KWwEYfvT4KzLXYj2wrgV8EPs/039lW4BfIu9WaXgAifjC1SQzpR/s9lFP2pvbD+x3KoBiakygbdV5I2a7rFMqmHaP39u+ivMBzO+U1XlspL/PIfqR3NfDflW2kjx/PAMZ3M/FH/oPj2tZ6o1onMAPjp/cdaMmv0/zgH0WT964VxwKQkG+GK4Cnaa8A7AV+opWeqYYFICHftn0/OYtb9gCXtdA/TW8VMzB+et+BBp3Adz/X32bsAjY03ktNywKQkG9bFgN3kTf4R/EIcHbDfdV0LAAJ+bblj8kf/KP4L+C0RnuraVgAEvJtwy+RP+gPjq9S7jurO57NDIyf3ncg2OV062UWz4x7GMbiob6wACTk26R1lPX62QP9SPFphrF4qA8sAAn5NmUl8CD5A3ycuI3hLB7qspXMwPjpfQcCLKJscpk9sCeJG+nAc+QDZwFIyLcJf0D+gJ4mrm/iy9DYLAAJ+UZ7G/kDuSbeHf+VaEzHMwPjp/cdqPBy4CnyB3Ft/Hz0F6OxWAAS8o3yfGAH+YM3Ip4GXhf79VRbTXmM+SWU9f6zyAKQkG+EFcB95A/cyNgDvDLyS5rCAmATh34B6Jcpl1uL07KLdxwzMH5634EJLQT+lvwB20TsphxxM5wBfG6MHL9EeUvwLLAAJORb6wPkD9QmYwdwTti3NZ5XATsnyPERyjLrvrMAJORb4y3kD9A24iHg9KDvbD7vYLpHpx+inDX0mQUgId9pXUK5Ts4enG3FgzT7muyFwO9X5viv9HuCcAUzMH5634ExnA58g/xB2XZ8kWY2I10B/F1Qjl+iv1ukWQAS8p3UsZRXSWcPxqy4Czim+lv8jucBXwnOcQvwrMAc22IBSMh3EguAT5E/CLPjr4jZLuulNHcmtRk4OiDHNi1nBsZP7ztwBO8lf/B1JW6mFMRpvQF4ouEcP0m/tk23ACTkO643kT/ouhY3Mfky4jnguhZz/DD9WeVoAUjIdxwvofmjVV/jLylbnI1jBfDxhBzfO2Z+2Y5lBsZP7ztwkFOA/yF/oHU5tgHnzvM9bqSZTVDHjXfOk18XpBcANwc90FLgs7T/JFwf7aPcyvsLyu3CHZQHW36Acr0/X4Fow1spzxp01bGUJyBrpI+f1AoWaA74c/KPrkZcdH2LtGXU9zFd7zuwX5sTVUZ70YVVjodjAUjI91BeR/4P1WgudgM/SPekFwDnAOAC4E7Gn9lWP+2krOe4JzmPZ1pGeY18jarxU/NgxyxYQ5nEcvDPvuXA39CtFYTVR/BaQy4ASyj3tJtc8aZuWU25c7EmO5GuGGoBmKNs3rk+OQ+171TKG51WJufRCUMtAO8Cfjw7CaV5IfDX5K8gTL8EiJA6izmFH6O8BTd7ZtrIj9vJXUG49DB5TRJVhnYGcC7wEfLvPKgbXgb8Cf1aQRhqSAXgOZRJv8iXW6j/rgA+RM5BofoIXmsoBeBoymO+z81ORJ30JuB92UlkGEoB+BDw4uwk1GlvB67NTqKPUicxxvCrATkaw4mraM+SgHzTdbkDr2G6d84bw40290lMLwCzvBbg+yhr+7Pv9ap/nqJMDn6q4c9ZQlmoVMO1AIewCrgFB7+msxD4M8pbjGfaLBaAxcAnKI98StNaAtxKs282qj6FrzWLBeD3GEDlVitGKwjPzE6kKbNWAN4OvDk7Cc2UEygrCE/OTqQJszQJ+ArgNgb8WKca9RXgYsrORlGOBr5d2YaTgMBa4E9x8Ks5aykrCJdlJxJpFgrA8ZQZ/2OzE9HMO5/yW5uZN0j1vQCMbtd06TVPmm2XUM42J90i7VC8C1DpesqSTqlNrwFuwGXlQN6jjFcHfLZh1MT7qbM4IId0GR34YeDJgM82jNp4F9NbFPD5Vfp4G/AMYCtlHzqpC94GfHCKv1tE2bmoRtUY7lsBWA5sAc6q/Ewp0j5gE3DThH+XXgD6NAl4FGX21cGvrhm9Zv5VyXlMrE8F4H3AZdlJSIcxuiX9QxP8TfU1fK2+XAL8LPCHlZ8jteFR4FJg2xj/dyFlMrvGzM8BXAxsplwvSX3wMGVF6n3z/D8LwDw5nEaZ8X925WdIbft3ypbk/3GE/3MU5e1DNWZ2EnAZ5blrB7/66Hspy4hXZSdyJF0tAAsot1TOzk5EqvACygtFOrtQrasF4D3Aq7OTkAKcx+FXEHoX4BA5bAI+Wtmm1DW3Aldy4DX/Aspr62vM1CTgBuAOcndslZpyI/AGvjNm0gtAly4BnkvZv8/Br1n1eg5cQZh+CdCVArCUcp20OjsRqWHXAL+ZncRIFwrAHPAR4EXZiUgteTelEKSLeK1Rrd8CNmYnIbXs/cC3spPowiSgNFRPUX8Q7v1dAEnTm5m7AJJaZgGQBswCIA2YBUAaMAuANGAWAGnALADSgFkApAGzAEgDZgGQBswCIA2YBUAaMAuANGAWAGnALADSgFkApAGzAEgDZgGQBswCIA2YBUAaMAuANGAWAGnALADSgFkApAGLKAB7AtqQNLn/rW0gogB8I6ANSZP7Zm0DEQXg/oA2JE3uvtoGIgrAZwPakDS5u2obiCgAtwS0IWlyt9Y2ELE7MMC9wAuD2pI0v38BzqltJOo24G8HtSNpPNdFNBJ1BjAHfAa4KKg9SYf3aeDiiIaiCgDA6cA2YHlgm5IO9C3gXGB7RGORTwJ+DdiIDwZJTXkC+FGCBj/EPwp8O3A58Ghwu9LQ7QReCfxDZKNNrAXYDJwPbG2gbWmItgDrgTuiG25qMdADwAbgp4GvNvQZ0qy7H3gjZXL9wSY+IHIS8Eif8VLKpcEG4EzgeGBxC58t9cUeyrP9DwCfA26jPOm3LzMpSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIE/wdtJeQPxMSAJQAAAABJRU5ErkJggg==";
8
- class ImageNode extends lexical.TextNode {
8
+ class ImageNode extends lexical.DecoratorNode {
9
9
  constructor(attrs, key) {
10
- super("", key);
10
+ super(key);
11
11
  __publicField(this, "__attrs");
12
12
  this.__attrs = attrs;
13
13
  }
14
14
  static getType() {
15
- return "Image";
15
+ return "image";
16
16
  }
17
17
  static clone(node) {
18
18
  return new ImageNode(node.__attrs, node.__key);
19
19
  }
20
20
  static importJSON(serializedNode) {
21
21
  const node = $createImageNode(serializedNode.attrs);
22
- node.setFormat(serializedNode.format);
23
22
  return node;
24
23
  }
25
24
  static importDOM() {
@@ -27,7 +26,7 @@ class ImageNode extends lexical.TextNode {
27
26
  img: (el) => {
28
27
  const src = el.getAttribute("src");
29
28
  const alt = el.getAttribute("alt");
30
- return el.tagName.toLowerCase() == "img" && !el.style.float ? {
29
+ return el.tagName.toLowerCase() == "img" ? {
31
30
  conversion: (domNode) => {
32
31
  return {
33
32
  node: $createImageNode({
@@ -42,14 +41,13 @@ class ImageNode extends lexical.TextNode {
42
41
  })
43
42
  };
44
43
  },
45
- priority: 1
44
+ priority: 0
46
45
  } : null;
47
46
  }
48
47
  };
49
48
  }
50
49
  exportJSON() {
51
50
  return {
52
- ...super.exportJSON(),
53
51
  type: this.getType(),
54
52
  version: 1,
55
53
  attrs: this.__attrs
@@ -79,55 +77,66 @@ class ImageNode extends lexical.TextNode {
79
77
  }
80
78
  exportDOM() {
81
79
  const element = document.createElement("img");
80
+ this.updateElementAttr(element);
81
+ return { element };
82
+ }
83
+ /**
84
+ * 更新元素属性
85
+ * @param el
86
+ */
87
+ updateElementAttr(element) {
82
88
  element.setAttribute("src", this.__attrs.src);
83
89
  if (this.__attrs.alt != null) {
84
90
  element.setAttribute("alt", this.__attrs.alt ?? "");
85
91
  }
86
92
  element.setAttribute("style", this.getStyles().join(";"));
87
- return { element };
88
93
  }
89
94
  /**
90
- * 设置属性
91
- * @param pos
92
- */
93
- setAttrs(data) {
94
- const writable = this.getWritable();
95
- Object.assign(writable.__attrs, data);
95
+ * 更新DOM
96
+ * @param prevNode
97
+ * @param dom
98
+ * @param config
99
+ * @returns
100
+ */
101
+ updateDOM(prevNode, el, config) {
102
+ this.updateElementAttr(el);
103
+ if (!this.__attrs.src) {
104
+ el.setAttribute("src", ImageDefaultSrc);
105
+ }
106
+ return false;
96
107
  }
97
- /**
98
- * 创建DOM
99
- * @param config
100
- * @returns
101
- */
102
108
  createDOM(config) {
103
109
  const element = document.createElement("img");
104
- element.setAttribute("src", this.__attrs.src || ImageDefaultSrc);
105
- if (this.__attrs.alt != null) {
106
- element.setAttribute("alt", this.__attrs.alt ?? "");
110
+ this.updateElementAttr(element);
111
+ if (!this.__attrs.src) {
112
+ element.setAttribute("src", ImageDefaultSrc);
107
113
  }
108
- element.setAttribute("style", this.getStyles().join(";"));
109
114
  element.setAttribute("node-key", this.__key);
110
- element.setAttribute("class", config.theme.image ?? "");
111
115
  return element;
112
116
  }
113
- updateDOM(prevNode, dom, config) {
114
- const inner = dom.firstChild;
115
- if (inner === null) {
116
- return true;
117
- }
118
- super.updateDOM(prevNode, inner, config);
119
- return false;
120
- }
121
- getTextContent(_includeInert, _includeDirectionless) {
122
- return "";
117
+ decorate(editor, config) {
118
+ return null;
123
119
  }
124
120
  /**
125
- * 内联
126
- * @returns
121
+ * 设置属性
122
+ * @param pos
127
123
  */
124
+ setAttrs(data) {
125
+ const writable = this.getWritable();
126
+ Object.assign(writable.__attrs, data);
127
+ }
128
+ isEmpty() {
129
+ return false;
130
+ }
131
+ isIsolated() {
132
+ return false;
133
+ }
128
134
  isInline() {
129
135
  return true;
130
136
  }
137
+ isKeyboardSelectable() {
138
+ return true;
139
+ }
131
140
  }
132
141
  class InlineImageNode extends ImageNode {
133
142
  static getType() {
@@ -138,7 +147,6 @@ class InlineImageNode extends ImageNode {
138
147
  }
139
148
  static importJSON(serializedNode) {
140
149
  const node = $createImageNode(serializedNode.attrs);
141
- node.setFormat(serializedNode.format);
142
150
  return node;
143
151
  }
144
152
  static importDOM() {
@@ -169,12 +177,15 @@ class InlineImageNode extends ImageNode {
169
177
  constructor(attrs, key) {
170
178
  super(attrs, key);
171
179
  }
172
- /**
173
- * 非内联元素
174
- * @returns
175
- */
176
- isInline() {
177
- return false;
180
+ exportJSON() {
181
+ return {
182
+ type: this.getType(),
183
+ version: 1,
184
+ attrs: this.__attrs
185
+ };
186
+ }
187
+ decorate(editor, config) {
188
+ return null;
178
189
  }
179
190
  }
180
191
  function $createImageNode(attrs) {
@@ -1 +1 @@
1
- {"version":3,"file":"ImageNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.ts"],"sourcesContent":["\r\nimport type {\r\n DOMConversionMap,\r\n DOMExportOutput,\r\n EditorConfig,\r\n LexicalNode,\r\n NodeKey,\r\n Spread,\r\n SerializedElementNode,\r\n SerializedTextNode\r\n} from 'lexical'\r\nimport { ElementNode,TextNode } from 'lexical'\r\n\r\n\r\n// 默认图片\r\nconst ImageDefaultSrc = \"data:image/png;base64,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\";\r\n\r\n\r\n/**\r\n * 图片属性类型\r\n */\r\nexport type ImageAttrType = {\r\n src:string,\r\n alt?:string,\r\n width?:string,\r\n height?:string,\r\n float?:string,\r\n maxWidth?:string,\r\n maxHeight?:string,\r\n margin?:string\r\n};\r\n\r\n/**\r\n * 图片节点序列化\r\n */\r\nexport type SerializedImageNode = Spread<\r\n {\r\n attrs: ImageAttrType\r\n },\r\n SerializedTextNode\r\n>\r\n\r\n/**\r\n * 定义图片节点\r\n */\r\nexport class ImageNode extends TextNode {\r\n __attrs: ImageAttrType\r\n\r\n static getType(): string {\r\n return 'Image'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new ImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && !el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n\r\n return { \r\n \r\n node:$createImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:\"\"\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(\"\",key)\r\n this.__attrs = attrs\r\n }\r\n\r\n exportJSON(): SerializedImageNode {\r\n\r\n return {\r\n ...super.exportJSON(),\r\n type: this.getType(),\r\n version: 1,\r\n attrs: this.__attrs,\r\n }\r\n }\r\n\r\n getStyles():string[]{\r\n\r\n const style : string[] = [];\r\n\r\n if(this.__attrs.width){\r\n style.push(\"width:\"+this.__attrs.width)\r\n }\r\n if(this.__attrs.height){\r\n style.push(\"height:\"+this.__attrs.height)\r\n }\r\n if(this.__attrs.maxWidth){\r\n style.push(\"max-width:\"+this.__attrs.maxWidth)\r\n }\r\n if(this.__attrs.maxHeight){\r\n style.push(\"max-height:\"+this.__attrs.maxHeight)\r\n }\r\n if(this.__attrs.float){\r\n style.push(\"float:\"+this.__attrs.float)\r\n }\r\n if(this.__attrs.margin){\r\n style.push(\"margin:\"+this.__attrs.margin)\r\n }\r\n\r\n return style\r\n }\r\n\r\n exportDOM(): DOMExportOutput {\r\n\r\n \r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n\r\n \r\n return { element }\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:any){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n /**\r\n * 创建DOM\r\n * @param config \r\n * @returns \r\n */\r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const element = document.createElement('img') \r\n\r\n element.setAttribute('src', this.__attrs.src || ImageDefaultSrc) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\r\n element.setAttribute(\"node-key\",this.__key)\r\n element.setAttribute(\"class\",config.theme.image ?? \"\")\r\n\r\n\r\n return element\r\n }\r\n\r\n updateDOM(\r\n prevNode: ImageNode,\r\n dom: HTMLElement,\r\n config: EditorConfig,\r\n ): boolean {\r\n // console.log(prevNode,dom,dom.firstChild,config);\r\n const inner = dom.firstChild\r\n if (inner === null){ return true }\r\n super.updateDOM(prevNode, inner as HTMLElement, config)\r\n return false\r\n }\r\n\r\n getTextContent(\r\n _includeInert?: boolean | undefined,\r\n _includeDirectionless?: false | undefined,\r\n ): string { return \"\"; }\r\n\r\n /**\r\n * 内联\r\n * @returns \r\n */\r\n isInline(): boolean {\r\n return true;\r\n }\r\n}\r\n/**\r\n * 定义内联图片节点\r\n */\r\nexport class InlineImageNode extends ImageNode{\r\n \r\n static getType(): string {\r\n return 'InlineImage'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new InlineImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n node.setFormat(serializedNode.format)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n \r\n // 内联图\r\n return { \r\n node:new InlineImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:domNode.style.float\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(attrs,key)\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/**\r\n * 创建图片节点\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createImageNode(attrs: ImageAttrType): ImageNode {\r\n return new ImageNode(attrs)\r\n}\r\n\r\n/**\r\n * 判断是否是图片节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageNode(\r\n node: ImageNode | LexicalNode | null | undefined,\r\n): node is ImageNode {\r\n return node instanceof ImageNode\r\n}\r\n"],"names":["TextNode"],"mappings":"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"}
1
+ {"version":3,"file":"ImageNode.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.ts"],"sourcesContent":["\r\nimport type {\r\n DOMConversionMap,\r\n DOMExportOutput,\r\n EditorConfig,\r\n LexicalNode,\r\n NodeKey,\r\n Spread,\r\n SerializedLexicalNode,\r\n LexicalEditor\r\n} from 'lexical'\r\nimport { DecoratorNode } from 'lexical'\r\nimport { Component } from 'vue';\r\n\r\n\r\n// 默认图片\r\nconst ImageDefaultSrc = \"data:image/png;base64,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\";\r\n\r\n/**\r\n * 图片属性类型\r\n */\r\nexport type ImageAttrType = {\r\n src:string,\r\n alt?:string,\r\n width?:string,\r\n height?:string,\r\n float?:string,\r\n maxWidth?:string,\r\n maxHeight?:string,\r\n margin?:string\r\n};\r\n\r\n/**\r\n * 图片节点序列化\r\n */\r\nexport type SerializedImageNode = Spread<{ attrs: ImageAttrType }, SerializedLexicalNode>\r\n\r\n/** \r\n * 定义图片节点\r\n */\r\nexport class ImageNode extends DecoratorNode<Component|null> {\r\n __attrs: ImageAttrType\r\n\r\n static getType(): string {\r\n return 'image'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new ImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n return node\r\n }\r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" ? {\r\n conversion: (domNode: HTMLElement) => {\r\n \r\n return { \r\n \r\n node:$createImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:\"\"\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 0\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(key)\r\n this.__attrs = attrs\r\n }\r\n\r\n exportJSON(): SerializedImageNode {\r\n\r\n return {\r\n type: this.getType(),\r\n version: 1,\r\n attrs: this.__attrs,\r\n }\r\n }\r\n\r\n getStyles():string[]{\r\n\r\n const style : string[] = [];\r\n\r\n if(this.__attrs.width){\r\n style.push(\"width:\"+this.__attrs.width)\r\n }\r\n if(this.__attrs.height){\r\n style.push(\"height:\"+this.__attrs.height)\r\n }\r\n if(this.__attrs.maxWidth){\r\n style.push(\"max-width:\"+this.__attrs.maxWidth)\r\n }\r\n if(this.__attrs.maxHeight){\r\n style.push(\"max-height:\"+this.__attrs.maxHeight)\r\n }\r\n if(this.__attrs.float){\r\n style.push(\"float:\"+this.__attrs.float)\r\n }\r\n if(this.__attrs.margin){\r\n style.push(\"margin:\"+this.__attrs.margin)\r\n }\r\n\r\n return style\r\n }\r\n\r\n exportDOM(): DOMExportOutput {\r\n\r\n \r\n const element = document.createElement('img') \r\n\r\n this.updateElementAttr(element);\r\n\r\n \r\n return { element }\r\n }\r\n\r\n /**\r\n * 更新元素属性\r\n * @param el \r\n */\r\n updateElementAttr(element:HTMLElement){\r\n // 更新属性\r\n element.setAttribute('src', this.__attrs.src) \r\n\r\n if(this.__attrs.alt != null){\r\n element.setAttribute('alt', this.__attrs.alt ?? \"\")\r\n }\r\n\r\n element.setAttribute(\"style\",this.getStyles().join(\";\"))\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: ImageNode, el: HTMLElement, config: EditorConfig): boolean {\r\n // 更新属性\r\n this.updateElementAttr(el);\r\n\r\n if(!this.__attrs.src){\r\n el.setAttribute('src', ImageDefaultSrc) \r\n }\r\n return false\r\n }\r\n \r\n createDOM(config: EditorConfig): HTMLElement {\r\n\r\n const element = document.createElement('img') \r\n // 更新属性\r\n this.updateElementAttr(element);\r\n\r\n if(!this.__attrs.src){\r\n element.setAttribute('src', ImageDefaultSrc) \r\n }\r\n\r\n element.setAttribute(\"node-key\",this.__key)\r\n\r\n return element\r\n }\r\n \r\n decorate(editor: LexicalEditor, config: EditorConfig): Component | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * 设置属性\r\n * @param pos \r\n */\r\n setAttrs(data?:any){\r\n const writable = this.getWritable();\r\n Object.assign(writable.__attrs,data)\r\n }\r\n\r\n isEmpty(){\r\n return false;\r\n }\r\n\r\n isIsolated() {\r\n return false;\r\n }\r\n isInline() {\r\n return true;\r\n }\r\n isKeyboardSelectable() {\r\n return true;\r\n }\r\n}\r\n/**\r\n * 定义内联图片节点\r\n */\r\nexport class InlineImageNode extends ImageNode{\r\n \r\n static getType(): string {\r\n return 'InlineImage'\r\n }\r\n\r\n static clone(node: ImageNode): ImageNode {\r\n return new InlineImageNode(node.__attrs, node.__key)\r\n }\r\n\r\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\r\n const node = $createImageNode(serializedNode.attrs)\r\n return node\r\n }\r\n \r\n\r\n static importDOM(): DOMConversionMap | null {\r\n return {\r\n img: (el: HTMLElement) => {\r\n\r\n const src = el.getAttribute('src');\r\n const alt = el.getAttribute('alt');\r\n\r\n return el.tagName.toLowerCase() == \"img\" && el.style.float ? {\r\n conversion: (domNode: HTMLElement) => {\r\n \r\n // 内联图\r\n return { \r\n node:new InlineImageNode({\r\n src:src,\r\n alt:alt,\r\n width:domNode.style.width,\r\n height:domNode.style.height,\r\n maxWidth:domNode.style.maxWidth || \"100%\",\r\n maxHeight:domNode.style.maxHeight,\r\n margin:domNode.style.margin,\r\n float:domNode.style.float\r\n } as ImageAttrType) \r\n };\r\n },\r\n priority: 1\r\n } : null\r\n },\r\n }\r\n }\r\n\r\n constructor(attrs: ImageAttrType, key?: NodeKey) {\r\n super(attrs,key)\r\n }\r\n\r\n exportJSON(): SerializedImageNode {\r\n\r\n return {\r\n type: this.getType(),\r\n version: 1,\r\n attrs: this.__attrs,\r\n }\r\n }\r\n decorate(editor: LexicalEditor, config: EditorConfig): Component | null {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * 创建图片节点\r\n * @param src \r\n * @returns \r\n */\r\nexport function $createImageNode(attrs: ImageAttrType): ImageNode {\r\n return new ImageNode(attrs)\r\n}\r\n\r\n/**\r\n * 判断是否是图片节点\r\n * @param node \r\n * @returns \r\n */\r\nexport function $isImageNode(\r\n node: ImageNode | LexicalNode | null | undefined,\r\n): node is ImageNode {\r\n return node instanceof ImageNode\r\n}\r\n"],"names":["DecoratorNode"],"mappings":"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"}
@@ -6,11 +6,14 @@ const richText = require("@lexical/rich-text");
6
6
  const lexicalVue = require("lexical-vue");
7
7
  const commands = require("./commands.js");
8
8
  const ImageNode = require("./ImageNode.js");
9
- const ImageTextNode = require("../ImageTextPlugin/ImageTextNode.js");
9
+ require("../GridPlugin/TextGridNode.js");
10
+ require("../GridPlugin/LayoutGridNode.js");
11
+ const ImageTextGridNode = require("../GridPlugin/ImageTextGridNode.js");
12
+ require("../GridPlugin/ModuleGridNode.js");
10
13
  const index = require("../../core/index.js");
11
14
  const utils$1 = require("./utils.js");
12
15
  const elementPlus = require("element-plus");
13
- const elementModule = require("../../core/element-module.js");
16
+ const elementBlock = require("../../core/element-block.js");
14
17
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
15
18
  __name: "index",
16
19
  setup(__props) {
@@ -39,7 +42,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
39
42
  editor.dispatchCommand(commands.INSERT_IMAGE_COMMAND, data);
40
43
  });
41
44
  },
42
- sort: 11
45
+ sort: 90
43
46
  });
44
47
  const editor = lexicalVue.useLexicalComposer();
45
48
  const uploadhandle = async (pathList) => {
@@ -53,13 +56,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
53
56
  }
54
57
  return [];
55
58
  };
56
- const { isSelected, curSelectKey, curSelectPos, updateActiveViewState } = elementModule.useElementModule((el) => {
59
+ const { isSelected, curSelectKey, curSelectPos } = elementBlock.useElementBlockSelection((el) => {
57
60
  return el.tagName.toLowerCase() == "img" ? el : null;
58
61
  }, (selection) => {
59
62
  const node = lexical.$getNodeByKey(curSelectKey.value);
60
63
  if (node != null) {
61
64
  const parent = node.getParent();
62
- const isImageText = ImageTextNode.$isImageTextNode(parent);
65
+ const isImageText = ImageTextGridNode.$isImageTextGridNode(parent);
63
66
  const toolbarList = [];
64
67
  if (lexical.$isParagraphNode(parent) || isImageText) {
65
68
  toolbarList.push({
@@ -72,7 +75,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
72
75
  } else {
73
76
  parent.setFormat("left");
74
77
  }
75
- updateActiveViewState(null);
76
78
  });
77
79
  }
78
80
  });
@@ -84,7 +86,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
84
86
  action() {
85
87
  editor.update(() => {
86
88
  parent.setFormat("center");
87
- updateActiveViewState(null);
88
89
  });
89
90
  }
90
91
  });
@@ -100,7 +101,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
100
101
  } else {
101
102
  parent.setFormat("right");
102
103
  }
103
- updateActiveViewState(null);
104
104
  });
105
105
  }
106
106
  });
@@ -112,10 +112,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
112
112
  const data = await utils$1.showImageEditDialog(node.__attrs);
113
113
  const result = await uploadhandle([data.src]);
114
114
  data.src = result[0];
115
- editor.update(() => {
116
- node.setAttrs(data);
117
- updateActiveViewState(null);
118
- });
115
+ editor.update(() => node.setAttrs(data));
119
116
  }
120
117
  });
121
118
  return toolbarList;
@@ -126,9 +123,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
126
123
  return utils.mergeRegister(
127
124
  // 插入图片
128
125
  editor.registerCommand(commands.INSERT_IMAGE_COMMAND, (payload) => {
129
- const p = lexical.$createParagraphNode();
130
- p.append(ImageNode.$createImageNode(payload));
131
- utils.$insertNodeToNearestRoot(p);
126
+ const selection = lexical.$getSelection();
127
+ const elementNode = lexical.$isNodeSelection(selection) ? selection == null ? void 0 : selection.getNodes()[0] : null;
128
+ if (elementNode) {
129
+ elementNode.append(ImageNode.$createImageNode(payload));
130
+ } else {
131
+ const p = lexical.$createParagraphNode();
132
+ p.append(ImageNode.$createImageNode(payload));
133
+ utils.$insertNodeToNearestRoot(p);
134
+ }
132
135
  return true;
133
136
  }, lexical.COMMAND_PRIORITY_EDITOR),
134
137
  // 剪切板图片
@@ -156,7 +159,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
156
159
  return (_ctx, _cache) => {
157
160
  return vue.unref(isSelected) ? (vue.openBlock(), vue.createElementBlock("div", {
158
161
  key: 0,
159
- class: "mk-doc-active-mark",
162
+ class: "mk-doc-active-element-block-mark",
160
163
  style: vue.normalizeStyle(vue.unref(curSelectPos))
161
164
  }, null, 4)) : vue.createCommentVNode("", true);
162
165
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister,mediaFileReader,isMimeType } from '@lexical/utils'\r\nimport { \r\n COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,CLICK_COMMAND,$isParagraphNode,\r\n $getSelection,$createParagraphNode,$isNodeSelection, $getNodeByKey\r\n} from 'lexical'\r\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, } from 'vue'\r\nimport { INSERT_IMAGE_COMMAND,$createImageNode,ImageNode,type ImageAttrType } from './index'\r\nimport { $isImageTextNode } from '../ImageTextPlugin'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { showImageEditDialog,imageUpload } from \"./utils\"\r\nimport { useElementModule } from '../../core'\r\nimport { ElLoading } from 'element-plus'\r\n\r\n// 图片类型\r\nconst ACCEPTABLE_IMAGE_TYPES = [\r\n 'image/',\r\n 'image/heic',\r\n 'image/heif',\r\n 'image/gif',\r\n 'image/webp',\r\n]\r\n \r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"Picture\",\r\n text:\"图片\",\r\n action:async ()=>{\r\n // 显示图片编辑面板\r\n showImageEditDialog({\r\n src:\"\", alt:\"\", width:\"\", height:\"\", maxWidth:\"100%\", maxHeight:\"\", margin:\"\"\r\n }).then(async (data:any)=>{\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0]\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND,data)\r\n });\r\n },\r\n sort:11\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 上传处理函数\r\nconst uploadhandle = async (pathList:Array<string>)=>{\r\n\r\n if(pathList.length){\r\n\r\n const loadingInstance = ElLoading.service({ fullscreen: true,text:\"图片上传中...\" })\r\n\r\n const reesult = await Promise.all(pathList.map(path=>{\r\n return imageUpload(path)\r\n }))\r\n\r\n loadingInstance.close();\r\n\r\n return reesult;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\nconst { isSelected, curSelectKey, curSelectPos,updateActiveViewState } = useElementModule(el=>{\r\n return el.tagName.toLowerCase() == \"img\" ? el : null\r\n},(selection)=>{\r\n \r\n const node = $getNodeByKey(curSelectKey.value) as ImageNode;\r\n\r\n if(node != null){\r\n \r\n const parent = node.getParent();\r\n const isImageText = $isImageTextNode(parent)\r\n\r\n // 工具条\r\n const toolbarList = [];\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居左\" : \"左对齐\",icon:`doc-align-left`,action(){\r\n editor.update(()=>{\r\n if(isImageText){\r\n node.setAttrs({float:\"left\"})\r\n }\r\n else{\r\n parent.setFormat(\"left\")\r\n }\r\n\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent)){\r\n toolbarList.push({ title: \"居中对齐\",icon:`doc-align-center`,action(){\r\n editor.update(()=>{ \r\n parent.setFormat(\"center\") \r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居右\" : \"右对齐\",icon:`doc-align-right`,action(){\r\n editor.update(()=>{\r\n\r\n if(isImageText){\r\n node.setAttrs({float:\"right\"})\r\n }\r\n else{\r\n parent.setFormat(\"right\")\r\n }\r\n updateActiveViewState(null);\r\n })\r\n } \r\n });\r\n }\r\n\r\n // 编辑\r\n toolbarList.push({ \r\n title:\"编辑\",icon:\"Edit\",action:async ()=>{\r\n\r\n // 显示图片编辑面板\r\n const data:any = await showImageEditDialog(node.__attrs);\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0];\r\n editor.update(()=>{\r\n node.setAttrs(data)\r\n updateActiveViewState(null);\r\n })\r\n }\r\n });\r\n\r\n return toolbarList;\r\n }\r\n\r\n return null;\r\n})\r\n\r\n\r\n// 编辑器挂载\r\nuseMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 插入图片\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGE_COMMAND,(payload) => {\r\n const p = $createParagraphNode()\r\n p.append($createImageNode(payload))\r\n $insertNodeToNearestRoot(p)\r\n return true\r\n },COMMAND_PRIORITY_EDITOR),\r\n\r\n // 剪切板图片\r\n editor.registerCommand(DRAG_DROP_PASTE,(files) => {\r\n\r\n (async () => {\r\n\r\n const filesResult = await mediaFileReader(files, [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x))\r\n \r\n const result = await uploadhandle(filesResult.filter(f=>isMimeType(f.file, ACCEPTABLE_IMAGE_TYPES)).map(f=>f.result))\r\n\r\n result.forEach(path=>{\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\r\n src:path, alt:\"\", maxWidth:\":100%\"\r\n } as ImageAttrType)\r\n })\r\n\r\n })()\r\n\r\n return true\r\n },COMMAND_PRIORITY_LOW)\r\n )\r\n})\r\n\r\n// 当前插件挂载\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageNode])){\r\n throw new Error('ImagePlugin: 图片节点未注册!')\r\n }\r\n\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-doc-active-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n </div>\r\n</template>\r\n"],"names":["registerDocEditorToolbarExtend","showImageEditDialog","INSERT_IMAGE_COMMAND","useLexicalComposer","ElLoading","imageUpload","useElementModule","$getNodeByKey","$isImageTextNode","$isParagraphNode","useMounted","mergeRegister","$createParagraphNode","$createImageNode","$insertNodeToNearestRoot","COMMAND_PRIORITY_EDITOR","DRAG_DROP_PASTE","mediaFileReader","isMimeType","COMMAND_PRIORITY_LOW","onMounted","ImageNode"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ImagePlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { $insertNodeToNearestRoot,mergeRegister,mediaFileReader,isMimeType } from '@lexical/utils'\r\nimport { \r\n COMMAND_PRIORITY_EDITOR,COMMAND_PRIORITY_LOW,$isParagraphNode,\r\n $getSelection,$createParagraphNode,$isNodeSelection, $getNodeByKey,\r\nElementNode\r\n} from 'lexical'\r\nimport { DRAG_DROP_PASTE } from '@lexical/rich-text'\r\nimport { useLexicalComposer,useMounted } from 'lexical-vue'\r\nimport { onMounted, } from 'vue'\r\nimport { INSERT_IMAGE_COMMAND,$createImageNode,ImageNode,type ImageAttrType } from './index'\r\nimport { $isImageTextGridNode } from '../GridPlugin'\r\nimport { registerDocEditorToolbarExtend,type ToolbarExtendPlugin } from \"../../core\"\r\nimport { showImageEditDialog,imageUpload } from \"./utils\"\r\nimport { useElementBlockSelection } from '../../core'\r\nimport { ElLoading } from 'element-plus'\r\n\r\n// 图片类型\r\nconst ACCEPTABLE_IMAGE_TYPES = [\r\n 'image/',\r\n 'image/heic',\r\n 'image/heif',\r\n 'image/gif',\r\n 'image/webp',\r\n]\r\n \r\n// 注册到工具条\r\nregisterDocEditorToolbarExtend({\r\n icon:\"Picture\",\r\n text:\"图片\",\r\n action:async ()=>{\r\n // 显示图片编辑面板\r\n showImageEditDialog({\r\n src:\"\", alt:\"\", width:\"\", height:\"\", maxWidth:\"100%\", maxHeight:\"\", margin:\"\"\r\n }).then(async (data:any)=>{\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0];\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND,data)\r\n });\r\n },\r\n sort:90\r\n} as ToolbarExtendPlugin)\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 上传处理函数\r\nconst uploadhandle = async (pathList:Array<string>)=>{\r\n\r\n if(pathList.length){\r\n\r\n const loadingInstance = ElLoading.service({ fullscreen: true,text:\"图片上传中...\" })\r\n\r\n const reesult = await Promise.all(pathList.map(path=>{\r\n return imageUpload(path)\r\n }))\r\n\r\n loadingInstance.close();\r\n\r\n return reesult;\r\n }\r\n\r\n return [];\r\n}\r\n\r\n// 使用元素模块 集成了模块选中删除以及工具条\r\nconst { isSelected, curSelectKey, curSelectPos } = useElementBlockSelection(el=>{\r\n return el.tagName.toLowerCase() == \"img\" ? el : null\r\n},(selection)=>{\r\n \r\n const node = $getNodeByKey(curSelectKey.value) as ImageNode;\r\n\r\n if(node != null){\r\n \r\n const parent = node.getParent();\r\n const isImageText = $isImageTextGridNode(parent)\r\n\r\n // 工具条\r\n const toolbarList = [];\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居左\" : \"左对齐\",icon:`doc-align-left`,action(){\r\n editor.update(()=>{\r\n if(isImageText){\r\n node.setAttrs({float:\"left\"})\r\n }\r\n else{\r\n parent.setFormat(\"left\")\r\n }\r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent)){\r\n toolbarList.push({ title: \"居中对齐\",icon:`doc-align-center`,action(){\r\n editor.update(()=>{ \r\n parent.setFormat(\"center\") \r\n })\r\n } \r\n });\r\n }\r\n\r\n if($isParagraphNode(parent) || isImageText){\r\n toolbarList.push({ title: isImageText ? \"居右\" : \"右对齐\",icon:`doc-align-right`,action(){\r\n editor.update(()=>{\r\n\r\n if(isImageText){\r\n node.setAttrs({float:\"right\"})\r\n }\r\n else{\r\n parent.setFormat(\"right\")\r\n }\r\n })\r\n } \r\n });\r\n }\r\n\r\n // 编辑\r\n toolbarList.push({ \r\n title:\"编辑\",icon:\"Edit\",action:async ()=>{\r\n // 显示图片编辑面板\r\n const data:any = await showImageEditDialog(node.__attrs);\r\n const result = await uploadhandle([data.src])\r\n data.src = result[0];\r\n editor.update(()=>node.setAttrs(data))\r\n }\r\n });\r\n\r\n return toolbarList;\r\n }\r\n\r\n return null;\r\n})\r\n\r\n// 编辑器挂载\r\nuseMounted(()=>{\r\n // 注册事件\r\n return mergeRegister(\r\n // 插入图片\r\n editor.registerCommand<ImageAttrType>(INSERT_IMAGE_COMMAND,(payload) => {\r\n\r\n const selection = $getSelection()\r\n const elementNode = $isNodeSelection(selection) ? selection?.getNodes()[0] as ElementNode : null;\r\n\r\n if (elementNode) {\r\n elementNode.append($createImageNode(payload));\r\n }\r\n else{\r\n const p = $createParagraphNode()\r\n p.append($createImageNode(payload))\r\n $insertNodeToNearestRoot(p)\r\n }\r\n return true\r\n },COMMAND_PRIORITY_EDITOR),\r\n\r\n // 剪切板图片\r\n editor.registerCommand(DRAG_DROP_PASTE,(files) => {\r\n\r\n (async () => {\r\n\r\n const filesResult = await mediaFileReader(files, [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x))\r\n \r\n const result = await uploadhandle(filesResult.filter(f=>isMimeType(f.file, ACCEPTABLE_IMAGE_TYPES)).map(f=>f.result))\r\n\r\n result.forEach(path=>{\r\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\r\n src:path, alt:\"\", maxWidth:\":100%\"\r\n } as ImageAttrType)\r\n })\r\n\r\n })()\r\n\r\n return true\r\n },COMMAND_PRIORITY_LOW)\r\n )\r\n})\r\n\r\n// 当前插件挂载\r\nonMounted(() => {\r\n\r\n if (!editor.hasNodes([ImageNode])){\r\n throw new Error('ImagePlugin: 图片节点未注册!')\r\n }\r\n\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <div class=\"mk-doc-active-element-block-mark\" v-if=\"isSelected\" :style=\"curSelectPos\">\r\n </div>\r\n</template>\r\n"],"names":["registerDocEditorToolbarExtend","showImageEditDialog","INSERT_IMAGE_COMMAND","useLexicalComposer","ElLoading","imageUpload","useElementBlockSelection","$getNodeByKey","$isImageTextGridNode","$isParagraphNode","useMounted","mergeRegister","$getSelection","$isNodeSelection","$createImageNode","$createParagraphNode","$insertNodeToNearestRoot","COMMAND_PRIORITY_EDITOR","DRAG_DROP_PASTE","mediaFileReader","isMimeType","COMMAND_PRIORITY_LOW","onMounted","ImageNode"],"mappings":"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"}
@@ -44,70 +44,48 @@ const ImageEditPanelComponent = /* @__PURE__ */ vue.defineComponent({
44
44
  }) {
45
45
  const attrs = vue.reactive(props.attrs);
46
46
  const materialTable = vue.reactive(new MsMaterialTable.MsMaterialTable());
47
- const margin = vue.computed(() => {
48
- var vals = attrs.margin.split(/[\s]+/g);
49
- if (vals.length == 1) {
50
- return {
47
+ const margin = vue.ref({
48
+ t: 0,
49
+ r: 0,
50
+ b: 0,
51
+ l: 0
52
+ });
53
+ vue.watch(() => `${margin.value.t} ${margin.value.r} ${margin.value.b} ${margin.value.l}`, (v) => {
54
+ attrs.margin = v;
55
+ });
56
+ vue.watch(() => props.attrs, () => {
57
+ var vals = props.attrs.margin.split(/[\s]+/g);
58
+ if (vals.length == 1 && vals[0]) {
59
+ margin.value = {
51
60
  t: vals[0],
52
61
  r: vals[0],
53
62
  b: vals[0],
54
63
  l: vals[0]
55
64
  };
56
65
  } else if (vals.length == 2) {
57
- return {
66
+ margin.value = {
58
67
  t: vals[0],
59
68
  r: vals[1],
60
69
  b: vals[0],
61
70
  l: vals[1]
62
71
  };
63
72
  } else if (vals.length == 3) {
64
- return {
73
+ margin.value = {
65
74
  t: vals[0],
66
75
  r: vals[1],
67
76
  b: vals[2],
68
77
  l: vals[1]
69
78
  };
70
- } else if (vals.length <= 0) {
71
- vals = ["", "", "", ""];
72
- }
73
- return {
74
- t: vals[0],
75
- r: vals[1],
76
- b: vals[2],
77
- l: vals[3]
78
- };
79
- });
80
- const marginT = vue.computed({
81
- set(v) {
82
- attrs.margin = `${v} ${margin.value.r} ${margin.value.b} ${margin.value.l}`;
83
- },
84
- get() {
85
- return margin.value.t;
86
- }
87
- });
88
- const marginR = vue.computed({
89
- set(v) {
90
- attrs.margin = `${margin.value.t} ${v} ${margin.value.b} ${margin.value.l}`;
91
- },
92
- get() {
93
- return margin.value.r;
94
- }
95
- });
96
- const marginB = vue.computed({
97
- set(v) {
98
- attrs.margin = `${margin.value.t} ${margin.value.r} ${v} ${margin.value.l}`;
99
- },
100
- get() {
101
- return margin.value.b;
102
- }
103
- });
104
- const marginL = vue.computed({
105
- set(v) {
106
- attrs.margin = `${margin.value.t} ${margin.value.r} ${margin.value.b} ${v}`;
107
- },
108
- get() {
109
- return margin.value.l;
79
+ } else if (vals.length == 4) {
80
+ margin.value = {
81
+ t: vals[0],
82
+ r: vals[1],
83
+ b: vals[2],
84
+ l: vals[3]
85
+ };
110
86
  }
87
+ }, {
88
+ immediate: true
111
89
  });
112
90
  materialTable.selectionChangeEvent.on(() => {
113
91
  var _a;
@@ -259,20 +237,20 @@ const ImageEditPanelComponent = /* @__PURE__ */ vue.defineComponent({
259
237
  default: () => [vue.createVNode("div", {
260
238
  "style": "display: flex;flex-wrap: nowrap;gap: 10px;justify-content: space-around;"
261
239
  }, [vue.createVNode("div", null, [vue.createTextVNode("上:"), vue.createVNode(elementPlus.ElInput, {
262
- "modelValue": marginT.value,
263
- "onUpdate:modelValue": ($event) => marginT.value = $event,
240
+ "modelValue": margin.value.t,
241
+ "onUpdate:modelValue": ($event) => margin.value.t = $event,
264
242
  "placeholder": ""
265
243
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("右:"), vue.createVNode(elementPlus.ElInput, {
266
- "modelValue": marginR.value,
267
- "onUpdate:modelValue": ($event) => marginR.value = $event,
244
+ "modelValue": margin.value.r,
245
+ "onUpdate:modelValue": ($event) => margin.value.r = $event,
268
246
  "placeholder": ""
269
247
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("下:"), vue.createVNode(elementPlus.ElInput, {
270
- "modelValue": marginB.value,
271
- "onUpdate:modelValue": ($event) => marginB.value = $event,
248
+ "modelValue": margin.value.b,
249
+ "onUpdate:modelValue": ($event) => margin.value.b = $event,
272
250
  "placeholder": ""
273
251
  }, null)]), vue.createVNode("div", null, [vue.createTextVNode("左:"), vue.createVNode(elementPlus.ElInput, {
274
- "modelValue": marginL.value,
275
- "onUpdate:modelValue": ($event) => marginL.value = $event,
252
+ "modelValue": margin.value.l,
253
+ "onUpdate:modelValue": ($event) => margin.value.l = $event,
276
254
  "placeholder": ""
277
255
  }, null)])])]
278
256
  })]