@tmagic/editor 1.8.0-manmanyu.8 → 1.8.0

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 (281) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +22 -13
  2. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +10 -5
  3. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +7 -6
  4. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +21 -119
  5. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +21 -5
  6. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +62 -16
  7. package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
  8. package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +3 -2
  9. package/dist/es/components/ScrollBar.js +0 -1
  10. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +5 -4
  11. package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +1 -1
  14. package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +1 -1
  15. package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +1 -1
  16. package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/es/components/ViewForm.js +5 -0
  18. package/dist/es/components/ViewForm.vue_vue_type_script_setup_true_lang.js +56 -0
  19. package/dist/es/editorProps.js +7 -1
  20. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +1 -1
  21. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +1 -1
  22. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +30 -113
  23. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +2 -2
  24. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +7 -19
  25. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +7 -6
  26. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +4 -2
  27. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +12 -4
  28. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +9 -20
  29. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +2 -2
  30. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +5 -3
  31. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +9 -4
  32. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +2 -2
  33. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +10 -110
  34. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +52 -363
  35. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +3 -6
  38. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +1 -1
  39. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +4 -35
  40. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +3 -3
  41. package/dist/es/fields/StyleSetter/configs.js +663 -0
  42. package/dist/es/fields/StyleSetter/icons/align-items/Center.js +1 -1
  43. package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +1 -1
  44. package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +1 -1
  45. package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +1 -1
  46. package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +1 -1
  47. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +1 -1
  48. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +1 -1
  49. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +1 -1
  50. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +1 -1
  51. package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
  52. package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
  53. package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
  54. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
  55. package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
  56. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +1 -1
  57. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +1 -1
  58. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +1 -1
  59. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +1 -1
  60. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +1 -1
  61. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +1 -1
  62. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +1 -1
  63. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +1 -1
  64. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +1 -1
  65. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
  66. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
  67. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
  68. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +29 -106
  69. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +8 -11
  70. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +30 -89
  71. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +29 -297
  72. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +29 -82
  73. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +8 -24
  74. package/dist/es/fields/UISelect.js +0 -1
  75. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +1 -1
  76. package/dist/es/fields/configs/codeSelect.js +98 -0
  77. package/dist/es/fields/configs/displayConds.js +158 -0
  78. package/dist/es/fields/configs/eventSelect.js +225 -0
  79. package/dist/es/fields/configs/stickyAddButton.js +21 -0
  80. package/dist/es/fields/headless-validation.js +139 -0
  81. package/dist/es/headless.js +2 -0
  82. package/dist/es/hooks/use-code-block-edit.js +4 -2
  83. package/dist/es/hooks/use-compare-form.js +101 -0
  84. package/dist/es/hooks/use-form-context.js +29 -0
  85. package/dist/es/hooks/use-stage.js +1 -0
  86. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  87. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  88. package/dist/es/icons/DatasourceIcon.js +1 -1
  89. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  90. package/dist/es/index.js +17 -9
  91. package/dist/es/initService.js +52 -16
  92. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
  93. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +26 -10
  94. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +11 -8
  95. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  96. package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
  97. package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +1 -1
  98. package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +8 -5
  99. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +1 -1
  100. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +26 -10
  101. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +36 -28
  102. package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +1 -1
  103. package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +1 -1
  104. package/dist/es/layouts/history-list/composables.js +1 -1
  105. package/dist/es/layouts/history-list/useHistoryList.js +4 -4
  106. package/dist/es/layouts/history-list/useHistoryRevert.js +38 -33
  107. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  108. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +1 -1
  109. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  110. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
  111. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
  112. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +50 -20
  113. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +53 -35
  114. package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
  115. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +3 -3
  116. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +21 -36
  117. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +1 -1
  118. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  119. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +19 -4
  120. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  121. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +9 -4
  122. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
  123. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  124. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +19 -4
  125. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  126. package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
  127. package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
  128. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +1 -1
  129. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +6 -4
  130. package/dist/es/layouts/sidebar/layer/use-click.js +3 -3
  131. package/dist/es/layouts/sidebar/layer/use-drag.js +11 -10
  132. package/dist/es/layouts/sidebar/layer/use-node-status.js +2 -2
  133. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
  134. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
  135. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +9 -3
  136. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +55 -9
  137. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  138. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
  139. package/dist/es/plugin.js +35 -23
  140. package/dist/es/services/codeBlock.js +40 -31
  141. package/dist/es/services/dataSource.js +46 -34
  142. package/dist/es/services/dep.js +162 -41
  143. package/dist/es/services/editor.js +373 -137
  144. package/dist/es/services/events.js +4 -4
  145. package/dist/es/services/history.js +275 -392
  146. package/dist/es/services/keybinding.js +3 -3
  147. package/dist/es/services/props.js +2 -1
  148. package/dist/es/services/storage.js +2 -2
  149. package/dist/es/services/ui.js +7 -2
  150. package/dist/es/style.css +277 -114
  151. package/dist/es/utils/code-block.js +14 -7
  152. package/dist/es/utils/config.js +4 -1
  153. package/dist/es/utils/const.js +2 -2
  154. package/dist/es/utils/content-menu.js +2 -2
  155. package/dist/es/utils/data-source/index.js +34 -12
  156. package/dist/es/utils/dep/collect-worker-client.js +154 -0
  157. package/dist/es/utils/dep/idle-task.js +70 -22
  158. package/dist/es/utils/dep/worker.js +1 -1
  159. package/dist/es/utils/editor.js +4 -2
  160. package/dist/es/utils/event.js +135 -0
  161. package/dist/es/utils/history.js +35 -47
  162. package/dist/es/utils/monaco-editor.js +22 -6
  163. package/dist/es/utils/operator.js +2 -2
  164. package/dist/es/utils/props.js +50 -106
  165. package/dist/es/utils/type-match-rules.js +356 -0
  166. package/dist/style.css +277 -114
  167. package/dist/themes/magic-admin.css +978 -175
  168. package/dist/tmagic-editor-headless.umd.cjs +10880 -0
  169. package/dist/tmagic-editor.umd.cjs +13047 -11363
  170. package/package.json +18 -13
  171. package/src/Editor.vue +23 -6
  172. package/src/components/CodeBlockEditor.vue +3 -0
  173. package/src/components/CodeParams.vue +10 -4
  174. package/src/components/CompareForm.vue +20 -190
  175. package/src/components/ContentMenu.vue +34 -6
  176. package/src/components/FloatingBox.vue +71 -7
  177. package/src/components/ScrollBar.vue +0 -67
  178. package/src/components/ViewForm.vue +54 -0
  179. package/src/editorProps.ts +23 -10
  180. package/src/fields/Code.vue +1 -1
  181. package/src/fields/CodeSelect.vue +20 -113
  182. package/src/fields/CodeSelectCol.vue +1 -1
  183. package/src/fields/CondOpSelect.vue +5 -26
  184. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +2 -2
  185. package/src/fields/DataSourceFieldSelect/Index.vue +4 -1
  186. package/src/fields/DataSourceFields.vue +5 -1
  187. package/src/fields/DataSourceInput.vue +10 -28
  188. package/src/fields/DataSourceMethodSelect.vue +1 -1
  189. package/src/fields/DataSourceMethods.vue +6 -2
  190. package/src/fields/DataSourceMocks.vue +3 -0
  191. package/src/fields/DataSourceSelect.vue +1 -1
  192. package/src/fields/DisplayConds.vue +17 -139
  193. package/src/fields/EventSelect.vue +29 -416
  194. package/src/fields/KeyValue.vue +1 -1
  195. package/src/fields/StyleSetter/Index.vue +2 -8
  196. package/src/fields/StyleSetter/components/Border.vue +4 -38
  197. package/src/fields/StyleSetter/components/Box.vue +1 -1
  198. package/src/fields/StyleSetter/components/Position.vue +1 -1
  199. package/src/fields/StyleSetter/configs.ts +690 -0
  200. package/src/fields/StyleSetter/pro/Background.vue +9 -64
  201. package/src/fields/StyleSetter/pro/Border.vue +5 -16
  202. package/src/fields/StyleSetter/pro/Font.vue +11 -71
  203. package/src/fields/StyleSetter/pro/Layout.vue +10 -230
  204. package/src/fields/StyleSetter/pro/Position.vue +11 -82
  205. package/src/fields/StyleSetter/pro/Transform.vue +6 -34
  206. package/src/fields/UISelect.vue +0 -12
  207. package/src/fields/configs/codeSelect.ts +127 -0
  208. package/src/fields/configs/displayConds.ts +184 -0
  209. package/src/fields/configs/eventSelect.ts +309 -0
  210. package/src/fields/configs/stickyAddButton.ts +32 -0
  211. package/src/fields/headless-validation.ts +177 -0
  212. package/src/headless.ts +33 -0
  213. package/src/hooks/index.ts +1 -0
  214. package/src/hooks/use-compare-form.ts +166 -0
  215. package/src/hooks/use-form-context.ts +56 -0
  216. package/src/hooks/use-stage.ts +1 -0
  217. package/src/index.ts +9 -0
  218. package/src/initService.ts +73 -18
  219. package/src/layouts/CodeEditor.vue +32 -6
  220. package/src/layouts/Framework.vue +7 -6
  221. package/src/layouts/history-list/BucketTab.vue +2 -2
  222. package/src/layouts/history-list/HistoryDiffDialog.vue +33 -15
  223. package/src/layouts/history-list/HistoryListPanel.vue +16 -18
  224. package/src/layouts/history-list/useHistoryRevert.ts +57 -41
  225. package/src/layouts/props-panel/FormPanel.vue +75 -20
  226. package/src/layouts/props-panel/PropsPanel.vue +81 -30
  227. package/src/layouts/props-panel/use-style-panel.ts +4 -3
  228. package/src/layouts/sidebar/ComponentListPanel.vue +6 -2
  229. package/src/layouts/sidebar/Sidebar.vue +5 -3
  230. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +5 -2
  231. package/src/layouts/sidebar/code-block/useContentMenu.ts +14 -2
  232. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +3 -0
  233. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +3 -3
  234. package/src/layouts/sidebar/data-source/useContentMenu.ts +14 -2
  235. package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
  236. package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
  237. package/src/layouts/sidebar/layer/LayerPanel.vue +5 -2
  238. package/src/layouts/sidebar/layer/use-click.ts +3 -3
  239. package/src/layouts/sidebar/layer/use-node-status.ts +2 -2
  240. package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
  241. package/src/layouts/workspace/viewer/Stage.vue +80 -10
  242. package/src/layouts/workspace/viewer/ViewerMenu.vue +7 -7
  243. package/src/plugin.ts +35 -25
  244. package/src/services/codeBlock.ts +4 -0
  245. package/src/services/dataSource.ts +3 -0
  246. package/src/services/dep.ts +292 -47
  247. package/src/services/editor.ts +383 -120
  248. package/src/services/events.ts +8 -7
  249. package/src/services/history.ts +22 -1
  250. package/src/services/keybinding.ts +3 -3
  251. package/src/services/ui.ts +26 -5
  252. package/src/theme/code-block.scss +0 -37
  253. package/src/theme/display-conds.scss +4 -0
  254. package/src/theme/event.scss +25 -33
  255. package/src/theme/floating-box.scss +9 -1
  256. package/src/theme/framework.scss +4 -1
  257. package/src/theme/layer-node-content.scss +14 -0
  258. package/src/theme/nav-menu.scss +5 -1
  259. package/src/theme/props-panel.scss +17 -3
  260. package/src/theme/scroll-bar.scss +64 -0
  261. package/src/theme/theme.scss +3 -0
  262. package/src/theme/themes/magic-admin/index.scss +109 -9
  263. package/src/theme/ui-select.scss +9 -0
  264. package/src/type.ts +216 -6
  265. package/src/utils/code-block.ts +1 -0
  266. package/src/utils/config.ts +9 -1
  267. package/src/utils/const.ts +3 -3
  268. package/src/utils/content-menu.ts +2 -2
  269. package/src/utils/data-source/index.ts +31 -12
  270. package/src/utils/dep/collect-worker-client.ts +215 -0
  271. package/src/utils/dep/idle-task.ts +104 -35
  272. package/src/utils/dep/worker.ts +113 -9
  273. package/src/utils/event.ts +237 -0
  274. package/src/utils/index.ts +2 -0
  275. package/src/utils/monaco-editor.ts +27 -0
  276. package/src/utils/operator.ts +2 -2
  277. package/src/utils/props.ts +61 -122
  278. package/src/utils/type-match-rules.ts +697 -0
  279. package/types/headless.d.ts +17 -0
  280. package/types/index.d.ts +1494 -978
  281. package/src/fields/StyleSetter/icons/align-items/index copy.ts +0 -5
@@ -1,14 +1,17 @@
1
+ import { useEditorFormContext } from "../../hooks/use-form-context.js";
1
2
  import { useServices } from "../../hooks/use-services.js";
2
3
  import { useEditorContentHeight } from "../../hooks/use-editor-content-height.js";
3
4
  import Icon_default from "../../components/Icon.js";
4
5
  import CodeEditor_default from "../CodeEditor.js";
5
- import { MForm } from "@tmagic/form";
6
- import { TMagicButton, TMagicScrollbar } from "@tmagic/design";
7
- import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, inject, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderSlot, unref, useTemplateRef, watchEffect, withCtx } from "vue";
6
+ import { ENABLE_PROPS_FORM_VALIDATE } from "../../editorProps.js";
7
+ import { MForm, validateForm } from "@tmagic/form";
8
+ import { TMagicButton, TMagicScrollbar, tMagicMessage } from "@tmagic/design";
9
+ import { filterXSS } from "@tmagic/utils";
10
+ import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, inject, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderSlot, unref, useTemplateRef, withCtx } from "vue";
8
11
  import { Document } from "@element-plus/icons-vue";
9
12
  //#region packages/editor/src/layouts/props-panel/FormPanel.vue?vue&type=script&setup=true&lang.ts
10
13
  var _hoisted_1 = { class: "m-editor-props-form-panel" };
11
- var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
14
+ var FormPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
12
15
  name: "MEditorFormPanel",
13
16
  __name: "FormPanel",
14
17
  props: {
@@ -17,8 +20,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
17
20
  disabledShowSrc: { type: Boolean },
18
21
  labelWidth: {},
19
22
  codeValueKey: {},
20
- labelPosition: {},
21
- extendState: { type: Function }
23
+ labelPosition: {}
22
24
  },
23
25
  emits: [
24
26
  "submit",
@@ -30,20 +32,15 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
30
32
  setup(__props, { expose: __expose, emit: __emit }) {
31
33
  const props = __props;
32
34
  const emit = __emit;
35
+ const enablePropsFormValidate = inject(ENABLE_PROPS_FORM_VALIDATE, false);
33
36
  const services = useServices();
34
- const { editorService, uiService } = services;
37
+ const { uiService } = services;
35
38
  const codeOptions = inject("codeOptions", {});
36
39
  const showSrc = ref(false);
37
40
  const propsPanelSize = computed(() => uiService.get("propsPanelSize") || "small");
38
41
  const { height: editorContentHeight } = useEditorContentHeight();
39
- const stage = computed(() => editorService.get("stage"));
42
+ const formContext = useEditorFormContext(() => services);
40
43
  const configFormRef = useTemplateRef("configForm");
41
- watchEffect(() => {
42
- if (configFormRef.value) {
43
- configFormRef.value.formState.stage = stage.value;
44
- configFormRef.value.formState.services = services;
45
- }
46
- });
47
44
  const internalInstance = getCurrentInstance();
48
45
  onMounted(() => {
49
46
  emit("mounted", internalInstance?.proxy);
@@ -53,16 +50,47 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
53
50
  });
54
51
  const submit = async (v, eventData) => {
55
52
  try {
56
- emit("submit", await configFormRef.value?.submitForm(), eventData);
53
+ const values = await configFormRef.value?.submitForm();
54
+ emit("submit", values, eventData);
57
55
  } catch (e) {
58
- emit("submit-error", e);
56
+ if (enablePropsFormValidate) emit("submit", v, eventData, e);
57
+ else emit("submit-error", e);
59
58
  }
60
59
  };
61
60
  const errorHandler = (e) => {
62
61
  emit("form-error", e);
63
62
  };
64
- const saveCode = (values) => {
65
- emit("submit", props.codeValueKey ? { [props.codeValueKey]: values } : values);
63
+ /**
64
+ * 将校验错误文案安全地转为用于弹窗展示的 HTML。
65
+ *
66
+ * 文案形如 `字段 -> 主文案\n\n建议`,多条以结构性 `<br>` 拼接。为在保留换行排版的同时
67
+ * 避免 `${value}`/字段名中可能夹带的 HTML 造成 XSS:先按结构性 `<br>` 拆分,对每段做 HTML
68
+ * 转义后再把段内换行 `\n` 替换为 `<br>`,最后用 `<br>` 拼回。
69
+ */
70
+ const formatValidateErrorHtml = (error) => error.split(/<br\s*\/?>/i).map((segment) => filterXSS(segment).replaceAll("\n", "<br>")).join("<br>");
71
+ const saveCode = async (values) => {
72
+ const newValues = props.codeValueKey ? { [props.codeValueKey]: values } : values;
73
+ if (!enablePropsFormValidate) {
74
+ emit("submit", newValues);
75
+ return;
76
+ }
77
+ try {
78
+ const error = await validateForm({
79
+ config: props.config,
80
+ typeMatchValid: true,
81
+ initValues: newValues,
82
+ context: formContext.value
83
+ });
84
+ if (error) tMagicMessage({
85
+ type: "error",
86
+ message: formatValidateErrorHtml(error),
87
+ dangerouslyUseHTMLString: true
88
+ });
89
+ emit("submit", newValues, void 0, error ? new Error(error) : void 0);
90
+ } catch (e) {
91
+ console.error("validateForm error", e);
92
+ emit("submit", newValues, void 0, e instanceof Error ? e : new Error(String(e)));
93
+ }
66
94
  };
67
95
  __expose({
68
96
  configForm: configFormRef,
@@ -81,7 +109,9 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
81
109
  size: propsPanelSize.value,
82
110
  "init-values": __props.values,
83
111
  config: __props.config,
84
- "extend-state": __props.extendState,
112
+ "type-match-valid": true,
113
+ context: unref(formContext),
114
+ "validate-on-init": true,
85
115
  onChange: submit,
86
116
  onError: errorHandler
87
117
  }, null, 8, [
@@ -92,7 +122,7 @@ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
92
122
  "size",
93
123
  "init-values",
94
124
  "config",
95
- "extend-state"
125
+ "context"
96
126
  ])]),
97
127
  _: 1
98
128
  }),
@@ -4,11 +4,12 @@ import { PROPS_PANEL_WIDTH_STORAGE_KEY } from "../../utils/const.js";
4
4
  import { useServices } from "../../hooks/use-services.js";
5
5
  import Resizer_default from "../../components/Resizer.js";
6
6
  import Icon_default from "../../components/Icon.js";
7
+ import { ENABLE_PROPS_FORM_VALIDATE } from "../../editorProps.js";
7
8
  import FormPanel_default from "./FormPanel.js";
8
9
  import { useStylePanel } from "./use-style-panel.js";
9
10
  import { TMagicButton } from "@tmagic/design";
10
11
  import { setValueByKeyPath } from "@tmagic/utils";
11
- import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, unref, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives } from "vue";
12
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, unref, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives } from "vue";
12
13
  import { Close, Sugar } from "@element-plus/icons-vue";
13
14
  //#region packages/editor/src/layouts/props-panel/PropsPanel.vue?vue&type=script&setup=true&lang.ts
14
15
  var _hoisted_1 = {
@@ -16,13 +17,10 @@ var _hoisted_1 = {
16
17
  class: "m-editor-props-panel"
17
18
  };
18
19
  var _hoisted_2 = { class: "m-editor-props-style-panel-title" };
19
- var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20
+ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
21
  name: "MEditorPropsPanel",
21
22
  __name: "PropsPanel",
22
- props: {
23
- disabledShowSrc: { type: Boolean },
24
- extendState: { type: Function }
25
- },
23
+ props: { disabledShowSrc: { type: Boolean } },
26
24
  emits: [
27
25
  "submit-error",
28
26
  "form-error",
@@ -32,6 +30,7 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
32
30
  setup(__props, { expose: __expose, emit: __emit }) {
33
31
  const emit = __emit;
34
32
  const { editorService, uiService, propsService, storageService } = useServices();
33
+ const enablePropsFormValidate = inject(ENABLE_PROPS_FORM_VALIDATE, false);
35
34
  const values = ref({});
36
35
  const curFormConfig = ref([]);
37
36
  const node = computed(() => editorService.get("node"));
@@ -40,39 +39,65 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
40
39
  tabPosition: "right",
41
40
  items: styleTabConfig.items
42
41
  }];
42
+ let initSeq = 0;
43
+ let mounted = true;
43
44
  const init = async () => {
45
+ initSeq += 1;
46
+ const seq = initSeq;
44
47
  if (!node.value) {
48
+ if (seq !== initSeq || !mounted) return;
45
49
  curFormConfig.value = [];
46
50
  return;
47
51
  }
48
52
  const type = node.value.type || (node.value.items ? "container" : "text");
49
- curFormConfig.value = await propsService.getPropsConfig(type, { node: node.value });
53
+ const config = await propsService.getPropsConfig(type, { node: node.value });
54
+ if (seq !== initSeq || !mounted) return;
55
+ if (!node.value) return;
56
+ curFormConfig.value = config;
50
57
  values.value = node.value;
51
58
  };
52
59
  watchEffect(init);
53
60
  propsService.on("props-configs-change", init);
54
61
  onBeforeUnmount(() => {
62
+ mounted = false;
55
63
  propsService.off("props-configs-change", init);
56
64
  });
57
- const submit = async (v, eventData) => {
65
+ const submit = async (v, eventData, error, source = "props") => {
58
66
  try {
59
67
  if (!v.id) v.id = values.value.id;
60
- const newValue = {
61
- ...v,
62
- style: {}
63
- };
64
- if (v.style) {
65
- Object.entries(v.style).forEach(([key, value]) => {
66
- if (value !== "" && newValue.style) newValue.style[key] = value;
67
- });
68
- eventData?.changeRecords?.forEach((record) => {
69
- if (record.propPath?.startsWith("style") && record.value === "") setValueByKeyPath(record.propPath, record.value, newValue);
70
- });
71
- }
72
68
  const historySource = eventData ? "props" : "code";
69
+ const replace = historySource === "code";
70
+ let newValue;
71
+ if (replace) {
72
+ if (source === "style") newValue = {
73
+ ...values.value,
74
+ id: v.id || values.value.id,
75
+ style: { ...v.style || {} }
76
+ };
77
+ else newValue = { ...v };
78
+ } else {
79
+ newValue = {
80
+ ...v,
81
+ style: {}
82
+ };
83
+ if (v.style) {
84
+ Object.entries(v.style).forEach(([key, value]) => {
85
+ if (value !== "" && newValue.style) newValue.style[key] = value;
86
+ });
87
+ eventData?.changeRecords?.forEach((record) => {
88
+ if (record.propPath?.startsWith("style") && record.value === "") setValueByKeyPath(record.propPath, record.value, newValue);
89
+ });
90
+ }
91
+ }
73
92
  editorService.update(newValue, {
74
93
  changeRecords: eventData?.changeRecords,
75
- historySource
94
+ historySource,
95
+ replace,
96
+ ...enablePropsFormValidate && error ? { invalidInfo: {
97
+ id: newValue.id,
98
+ source,
99
+ error: error?.message
100
+ } } : {}
76
101
  });
77
102
  } catch (e) {
78
103
  emit("submit-error", e);
@@ -122,8 +147,7 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
122
147
  config: curFormConfig.value,
123
148
  values: values.value,
124
149
  disabledShowSrc: __props.disabledShowSrc,
125
- extendState: __props.extendState,
126
- onSubmit: submit,
150
+ onSubmit: _cache[0] || (_cache[0] = (v, eventData, error) => submit(v, eventData, error, "props")),
127
151
  onSubmitError: errorHandler,
128
152
  onFormError: errorHandler,
129
153
  onMounted: mountedHandler,
@@ -132,8 +156,7 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
132
156
  "class",
133
157
  "config",
134
158
  "values",
135
- "disabledShowSrc",
136
- "extendState"
159
+ "disabledShowSrc"
137
160
  ]),
138
161
  unref(showStylePanel) ? (openBlock(), createBlock(Resizer_default, {
139
162
  key: 0,
@@ -147,30 +170,25 @@ var PropsPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
147
170
  config: styleFormConfig,
148
171
  values: values.value,
149
172
  disabledShowSrc: __props.disabledShowSrc,
150
- extendState: __props.extendState,
151
- onSubmit: submit,
173
+ onSubmit: _cache[2] || (_cache[2] = (v, eventData, error) => submit(v, eventData, error, "style")),
152
174
  onSubmitError: errorHandler,
153
175
  onFormError: errorHandler
154
176
  }, {
155
- "props-form-panel-header": withCtx(() => [createElementVNode("div", _hoisted_2, [_cache[2] || (_cache[2] = createElementVNode("span", null, "样式", -1)), createElementVNode("div", null, [createVNode(unref(TMagicButton), {
177
+ "props-form-panel-header": withCtx(() => [createElementVNode("div", _hoisted_2, [_cache[4] || (_cache[4] = createElementVNode("span", null, "样式", -1)), createElementVNode("div", null, [createVNode(unref(TMagicButton), {
156
178
  link: "",
157
179
  size: "small",
158
- onClick: _cache[0] || (_cache[0] = ($event) => unref(toggleStylePanel)(false))
180
+ onClick: _cache[1] || (_cache[1] = ($event) => unref(toggleStylePanel)(false))
159
181
  }, {
160
182
  default: withCtx(() => [createVNode(Icon_default, { icon: unref(Close) }, null, 8, ["icon"])]),
161
183
  _: 1
162
184
  })])])]),
163
185
  _: 1
164
- }, 8, [
165
- "values",
166
- "disabledShowSrc",
167
- "extendState"
168
- ])) : createCommentVNode("v-if", true),
186
+ }, 8, ["values", "disabledShowSrc"])) : createCommentVNode("v-if", true),
169
187
  unref(showStylePanelToggleButton) && !unref(showStylePanel) ? (openBlock(), createBlock(unref(TMagicButton), {
170
188
  key: 2,
171
189
  class: "m-editor-props-panel-style-icon",
172
190
  circle: "",
173
- onClick: _cache[1] || (_cache[1] = ($event) => unref(toggleStylePanel)(true))
191
+ onClick: _cache[3] || (_cache[3] = ($event) => unref(toggleStylePanel)(true))
174
192
  }, {
175
193
  default: withCtx(() => [createVNode(Icon_default, { icon: unref(Sugar) }, null, 8, ["icon"])]),
176
194
  _: 1
@@ -23,8 +23,9 @@ var useStylePanel = ({ uiService, storageService }, propsPanelWidth) => {
23
23
  columnWidth.center += propsPanelWidth.value;
24
24
  }
25
25
  if (columnWidth.center < 0) {
26
- columnWidth.right = columnWidth.right + columnWidth.center - 400;
27
- columnWidth.center = 400;
26
+ const minCenterColumnWidth = uiService.get("minCenterColumnWidth");
27
+ columnWidth.right = columnWidth.right + columnWidth.center - minCenterColumnWidth;
28
+ columnWidth.center = minCenterColumnWidth;
28
29
  propsPanelWidth.value = columnWidth.right / 2;
29
30
  }
30
31
  storageService.setItem(RIGHT_COLUMN_WIDTH_STORAGE_KEY, columnWidth.right, { protocol: Protocol.NUMBER });
@@ -10,7 +10,7 @@ import { Grid } from "@element-plus/icons-vue";
10
10
  //#region packages/editor/src/layouts/sidebar/ComponentListPanel.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = ["onClick", "onDragstart"];
12
12
  var _hoisted_2 = ["title"];
13
- var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
14
  name: "MEditorComponentListPanel",
15
15
  __name: "ComponentListPanel",
16
16
  setup(__props) {
@@ -23,7 +23,7 @@ var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
23
23
  const stage = computed(() => editorService.get("stage"));
24
24
  const list = computed(() => componentListService.getList().map((group) => ({
25
25
  ...group,
26
- items: group.items.filter((item) => item.text.includes(searchText.value))
26
+ items: group.items.filter((item) => `${item.text || ""}${item.desc || ""}${item.type}`.toLocaleLowerCase().includes(searchText.value.toLocaleLowerCase()))
27
27
  })));
28
28
  const collapseValue = ref();
29
29
  watch(list, () => {
@@ -70,7 +70,7 @@ var ComponentListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
70
70
  return;
71
71
  }
72
72
  if (timeout || !stage.value) return;
73
- timeout = stage.value.delayedMarkContainer(e);
73
+ timeout = stage.value.delayedMarkContainer(e, [], true);
74
74
  };
75
75
  return (_ctx, _cache) => {
76
76
  return openBlock(), createBlock(unref(TMagicScrollbar), null, {
@@ -9,7 +9,7 @@ import DataSourceListPanel_default from "./data-source/DataSourceListPanel.js";
9
9
  import LayerPanel_default from "./layer/LayerPanel.js";
10
10
  import ComponentListPanel_default from "./ComponentListPanel.js";
11
11
  import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, toHandlers, unref, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
12
- import { Close, Coin, EditPen, Goods, List } from "@element-plus/icons-vue";
12
+ import { Box, Close, Coin, EditPen, Finished } from "@element-plus/icons-vue";
13
13
  //#region packages/editor/src/layouts/sidebar/Sidebar.vue?vue&type=script&setup=true&lang.ts
14
14
  var _hoisted_1 = {
15
15
  key: 0,
@@ -30,7 +30,7 @@ var _hoisted_5 = {
30
30
  class: "m-editor-sidebar-tips"
31
31
  };
32
32
  var _hoisted_6 = { class: "m-editor-slide-list-box" };
33
- var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
33
+ var Sidebar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
34
34
  name: "MEditorSidebar",
35
35
  __name: "Sidebar",
36
36
  props: {
@@ -61,6 +61,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
61
61
  const taskLength = computed(() => depService.get("taskLength"));
62
62
  const tipsBarVisible = ref(true);
63
63
  const columnLeftWidth = computed(() => uiService.get("columnWidth")[ColumnLayout.LEFT]);
64
+ const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
64
65
  const { height: editorContentHeight } = useEditorContentHeight();
65
66
  const columnLeftHeight = ref(0);
66
67
  const unWatchEditorContentHeight = watch(editorContentHeight, (height) => {
@@ -81,7 +82,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
81
82
  [SideItemKey.COMPONENT_LIST]: {
82
83
  $key: SideItemKey.COMPONENT_LIST,
83
84
  type: "component",
84
- icon: Goods,
85
+ icon: Box,
85
86
  text: "组件",
86
87
  component: ComponentListPanel_default,
87
88
  slots: {}
@@ -89,7 +90,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
89
90
  layer: {
90
91
  $key: SideItemKey.LAYER,
91
92
  type: "component",
92
- icon: List,
93
+ icon: Finished,
93
94
  text: "已选组件",
94
95
  props: {
95
96
  layerContentMenu: props.layerContentMenu,
@@ -144,7 +145,8 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
144
145
  watch(() => props.data.status, (status) => {
145
146
  activeTabName.value = status || "0";
146
147
  });
147
- const { dragstartHandler, dragendHandler, floatBoxStates, showingBoxKeys } = useFloatBox(computed(() => sideBarItems.value.map((sideBarItem) => sideBarItem.$key)));
148
+ const slideKeys = computed(() => sideBarItems.value.map((sideBarItem) => sideBarItem.$key));
149
+ const { dragstartHandler, dragendHandler, floatBoxStates, showingBoxKeys } = useFloatBox(slideKeys);
148
150
  watch(() => showingBoxKeys.value.length, () => {
149
151
  if (!showingBoxKeys.value.some((key) => activeTabName.value === sideBarItems.value.find((v) => v.$key === key)?.text) && activeTabName.value) return;
150
152
  const nextSlideBarItem = sideBarItems.value.find((sideBarItem) => !showingBoxKeys.value.includes(sideBarItem.$key));
@@ -189,23 +191,17 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
189
191
  }, config.props || {}, toHandlers(config?.listeners || {})), createSlots({ _: 2 }, [
190
192
  config.$key === "component-list" || config.slots?.componentList ? {
191
193
  name: "component-list",
192
- fn: withCtx(({ componentGroupList }) => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list", {
193
- key: 0,
194
- componentGroupList
195
- }) : config.slots?.componentList ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentList), { key: 1 })) : createCommentVNode("v-if", true)]),
194
+ fn: withCtx(({ componentGroupList }) => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list", { componentGroupList }, void 0, void 0, 0) : config.slots?.componentList ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentList), { key: 1 })) : createCommentVNode("v-if", true)]),
196
195
  key: "0"
197
196
  } : void 0,
198
197
  config.$key === "component-list" || config.slots?.componentListPanelHeader ? {
199
198
  name: "component-list-panel-header",
200
- fn: withCtx(() => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list-panel-header", { key: 0 }) : config.slots?.componentListPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentListPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
199
+ fn: withCtx(() => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list-panel-header", {}, void 0, void 0, 0) : config.slots?.componentListPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentListPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
201
200
  key: "1"
202
201
  } : void 0,
203
202
  config.$key === "component-list" || config.slots?.componentListItem ? {
204
203
  name: "component-list-item",
205
- fn: withCtx(({ component }) => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list-item", {
206
- key: 0,
207
- component
208
- }) : config.slots?.componentListItem ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentListItem), {
204
+ fn: withCtx(({ component }) => [config.$key === "component-list" ? renderSlot(_ctx.$slots, "component-list-item", { component }, void 0, void 0, 0) : config.slots?.componentListItem ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.componentListItem), {
209
205
  key: 1,
210
206
  component
211
207
  }, null, 8, ["component"])) : createCommentVNode("v-if", true)]),
@@ -213,34 +209,30 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
213
209
  } : void 0,
214
210
  config.$key === "layer" || config.slots?.layerPanelHeader ? {
215
211
  name: "layer-panel-header",
216
- fn: withCtx(() => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-panel-header", { key: 0 }) : config.slots?.layerPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
212
+ fn: withCtx(() => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-panel-header", {}, void 0, void 0, 0) : config.slots?.layerPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
217
213
  key: "3"
218
214
  } : void 0,
219
215
  config.$key === "code-block" || config.slots?.codeBlockPanelHeader ? {
220
216
  name: "code-block-panel-header",
221
- fn: withCtx(() => [config.$key === "code-block" ? renderSlot(_ctx.$slots, "code-block-panel-header", { key: 0 }) : config.slots?.codeBlockPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
217
+ fn: withCtx(() => [config.$key === "code-block" ? renderSlot(_ctx.$slots, "code-block-panel-header", {}, void 0, void 0, 0) : config.slots?.codeBlockPanelHeader ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelHeader), { key: 1 })) : createCommentVNode("v-if", true)]),
222
218
  key: "4"
223
219
  } : void 0,
224
220
  config.$key === "code-block" || config.slots?.codeBlockPanelTool ? {
225
221
  name: "code-block-panel-tool",
226
222
  fn: withCtx(({ id, data }) => [config.$key === "code-block" ? renderSlot(_ctx.$slots, "code-block-panel-tool", {
227
- key: 0,
228
223
  id,
229
224
  data
230
- }) : config.slots?.codeBlockPanelTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelTool), { key: 1 })) : createCommentVNode("v-if", true)]),
225
+ }, void 0, void 0, 0) : config.slots?.codeBlockPanelTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelTool), { key: 1 })) : createCommentVNode("v-if", true)]),
231
226
  key: "5"
232
227
  } : void 0,
233
228
  config.$key === "code-block" || config.slots?.codeBlockPanelSearch ? {
234
229
  name: "code-block-panel-search",
235
- fn: withCtx(() => [config.$key === "code-block" ? renderSlot(_ctx.$slots, "code-block-panel-search", { key: 0 }) : config.slots?.codeBlockPanelSearch ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelSearch), { key: 1 })) : createCommentVNode("v-if", true)]),
230
+ fn: withCtx(() => [config.$key === "code-block" ? renderSlot(_ctx.$slots, "code-block-panel-search", {}, void 0, void 0, 0) : config.slots?.codeBlockPanelSearch ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.codeBlockPanelSearch), { key: 1 })) : createCommentVNode("v-if", true)]),
236
231
  key: "6"
237
232
  } : void 0,
238
233
  config.$key === "layer" || config.slots?.layerNodeContent ? {
239
234
  name: "layer-node-content",
240
- fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-content", {
241
- key: 0,
242
- data: nodeData
243
- }) : config.slots?.layerNodeContent ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeContent), {
235
+ fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-content", { data: nodeData }, void 0, void 0, 0) : config.slots?.layerNodeContent ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeContent), {
244
236
  key: 1,
245
237
  data: nodeData
246
238
  }, null, 8, ["data"])) : createCommentVNode("v-if", true)]),
@@ -248,10 +240,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
248
240
  } : void 0,
249
241
  config.$key === "layer" || config.slots?.layerNodeLabel ? {
250
242
  name: "layer-node-label",
251
- fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-label", {
252
- key: 0,
253
- data: nodeData
254
- }) : config.slots?.layerNodeLabel ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeTool), {
243
+ fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-label", { data: nodeData }, void 0, void 0, 0) : config.slots?.layerNodeLabel ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeTool), {
255
244
  key: 1,
256
245
  data: nodeData
257
246
  }, null, 8, ["data"])) : createCommentVNode("v-if", true)]),
@@ -259,10 +248,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
259
248
  } : void 0,
260
249
  config.$key === "layer" || config.slots?.layerNodeTool ? {
261
250
  name: "layer-node-tool",
262
- fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-tool", {
263
- key: 0,
264
- data: nodeData
265
- }) : config.slots?.layerNodeTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeTool), {
251
+ fn: withCtx(({ data: nodeData }) => [config.$key === "layer" ? renderSlot(_ctx.$slots, "layer-node-tool", { data: nodeData }, void 0, void 0, 0) : config.slots?.layerNodeTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.layerNodeTool), {
266
252
  key: 1,
267
253
  data: nodeData
268
254
  }, null, 8, ["data"])) : createCommentVNode("v-if", true)]),
@@ -270,15 +256,12 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
270
256
  } : void 0,
271
257
  config.$key === "data-source" || config.slots?.dataSourcePanelTool ? {
272
258
  name: "data-source-panel-tool",
273
- fn: withCtx(({ data }) => [config.$key === "data-source" ? renderSlot(_ctx.$slots, "data-source-panel-tool", {
274
- key: 0,
275
- data
276
- }) : config.slots?.DataSourcePanelTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.DataSourcePanelTool), { key: 1 })) : createCommentVNode("v-if", true)]),
259
+ fn: withCtx(({ data }) => [config.$key === "data-source" ? renderSlot(_ctx.$slots, "data-source-panel-tool", { data }, void 0, void 0, 0) : config.slots?.DataSourcePanelTool ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.DataSourcePanelTool), { key: 1 })) : createCommentVNode("v-if", true)]),
277
260
  key: "10"
278
261
  } : void 0,
279
262
  config.$key === "data-source" || config.slots?.dataSourcePanelSearch ? {
280
263
  name: "data-source-panel-search",
281
- fn: withCtx(() => [config.$key === "data-source" ? renderSlot(_ctx.$slots, "data-source-panel-search", { key: 0 }) : config.slots?.dataSourcePanelSearch ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.dataSourcePanelSearch), { key: 1 })) : createCommentVNode("v-if", true)]),
264
+ fn: withCtx(() => [config.$key === "data-source" ? renderSlot(_ctx.$slots, "data-source-panel-search", {}, void 0, void 0, 0) : config.slots?.dataSourcePanelSearch ? (openBlock(), createBlock(resolveDynamicComponent(config.slots.dataSourcePanelSearch), { key: 1 })) : createCommentVNode("v-if", true)]),
282
265
  key: "11"
283
266
  } : void 0
284
267
  ]), 1040)) : createCommentVNode("v-if", true)], 2)), [[vShow, [
@@ -301,6 +284,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
301
284
  "onUpdate:height": _cache[2] || (_cache[2] = ($event) => columnLeftHeight.value = $event),
302
285
  width: columnLeftWidth.value,
303
286
  title: config.text,
287
+ "framework-width": frameworkWidth.value,
304
288
  position: {
305
289
  left: unref(floatBoxStates)[config.$key].left,
306
290
  top: unref(floatBoxStates)[config.$key].top
@@ -317,6 +301,7 @@ var Sidebar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
317
301
  "height",
318
302
  "width",
319
303
  "title",
304
+ "framework-width",
320
305
  "position"
321
306
  ])) : createCommentVNode("v-if", true)], 64);
322
307
  }), 256))]))], 64);
@@ -9,7 +9,7 @@ import { DepTargetType } from "@tmagic/core";
9
9
  import { computed, createBlock, createCommentVNode, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
10
10
  import { Close, Edit, View } from "@element-plus/icons-vue";
11
11
  //#region packages/editor/src/layouts/sidebar/code-block/CodeBlockList.vue?vue&type=script&setup=true&lang.ts
12
- var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var CodeBlockList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  name: "MEditorCodeBlockList",
14
14
  __name: "CodeBlockList",
15
15
  props: {
@@ -9,7 +9,7 @@ import { TMagicButton, TMagicScrollbar } from "@tmagic/design";
9
9
  import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, renderSlot, unref, useTemplateRef, watch, withCtx } from "vue";
10
10
  //#region packages/editor/src/layouts/sidebar/code-block/CodeBlockListPanel.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = { class: "search-wrapper" };
12
- var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  name: "MEditorCodeBlockListPanel",
14
14
  __name: "CodeBlockListPanel",
15
15
  props: {
@@ -20,7 +20,7 @@ var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
20
20
  },
21
21
  setup(__props) {
22
22
  const props = __props;
23
- const eventBus = inject("eventBus");
23
+ const eventBus = inject("eventBus", null);
24
24
  const { codeBlockService } = useServices();
25
25
  const editable = computed(() => codeBlockService.getEditStatus());
26
26
  const { codeId, codeBlockEditor, codeConfig, editCode, deleteCode, createCodeBlock, submitCodeBlockHandler } = useCodeBlockEdit(codeBlockService);
@@ -37,10 +37,10 @@ var CodeBlockListPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE_
37
37
  const editDialogCloseHandler = () => {
38
38
  if (codeBlockListRef.value) for (const [, status] of codeBlockListRef.value.nodeStatusMap.entries()) status.selected = false;
39
39
  };
40
- const { nodeContentMenuHandler, menuData: contentMenuData, contentMenuHideHandler } = useContentMenu((id) => {
40
+ const { nodeContentMenuHandler, menuData: contentMenuData, contentMenuHideHandler, getTarget } = useContentMenu((id) => {
41
41
  codeBlockListRef.value?.deleteCode(id, { historySource: "tree-contextmenu" });
42
42
  });
43
- const menuData = computed(() => props.customContentMenu(contentMenuData, "code-block"));
43
+ const menuData = computed(() => props.customContentMenu(contentMenuData, "code-block", getTarget));
44
44
  return (_ctx, _cache) => {
45
45
  return openBlock(), createElementBlock(Fragment, null, [
46
46
  createVNode(unref(TMagicScrollbar), { class: "m-editor-code-block-list m-editor-layer-panel" }, {
@@ -3,9 +3,17 @@ import { cloneDeep } from "lodash-es";
3
3
  import { CopyDocument, Delete, Edit } from "@element-plus/icons-vue";
4
4
  //#region packages/editor/src/layouts/sidebar/code-block/useContentMenu.ts
5
5
  var useContentMenu = (deleteCode) => {
6
- const eventBus = inject("eventBus");
6
+ const eventBus = inject("eventBus", null);
7
7
  const menuRef = useTemplateRef("menu");
8
8
  let selectId = "";
9
+ let selectData = null;
10
+ const getTarget = () => {
11
+ if (!selectId) return null;
12
+ return {
13
+ id: selectId,
14
+ data: selectData ?? void 0
15
+ };
16
+ };
9
17
  const menuData = [
10
18
  {
11
19
  type: "button",
@@ -43,17 +51,24 @@ var useContentMenu = (deleteCode) => {
43
51
  event.preventDefault();
44
52
  if (data.type === "code") {
45
53
  menuRef.value?.show(event);
46
- if (data.id) selectId = `${data.id}`;
47
- else selectId = "";
54
+ if (data.id) {
55
+ selectId = `${data.id}`;
56
+ selectData = data;
57
+ } else {
58
+ selectId = "";
59
+ selectData = null;
60
+ }
48
61
  }
49
62
  };
50
63
  const contentMenuHideHandler = () => {
51
64
  selectId = "";
65
+ selectData = null;
52
66
  };
53
67
  return {
54
68
  menuData,
55
69
  nodeContentMenuHandler,
56
- contentMenuHideHandler
70
+ contentMenuHideHandler,
71
+ getTarget
57
72
  };
58
73
  };
59
74
  //#endregion
@@ -2,7 +2,7 @@ import ToolButton_default from "../../../components/ToolButton.js";
2
2
  import { TMagicButton, TMagicPopover } from "@tmagic/design";
3
3
  import { Fragment, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, guardReactiveProps, normalizeProps, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
4
4
  //#region packages/editor/src/layouts/sidebar/data-source/DataSourceAddButton.vue?vue&type=script&setup=true&lang.ts
5
- var DataSourceAddButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var DataSourceAddButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  name: "MEditorDataSourceAddButton",
7
7
  __name: "DataSourceAddButton",
8
8
  props: {