@tmagic/editor 1.8.0-manmanyu.9 → 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 (279) 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 -122
  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 +16 -8
  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 +1 -1
  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 +11 -13
  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/useHistoryRevert.js +38 -33
  106. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  107. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +1 -1
  108. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  109. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
  110. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
  111. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +50 -20
  112. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +53 -35
  113. package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
  114. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +3 -3
  115. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +21 -36
  116. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  118. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +19 -4
  119. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  120. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +9 -4
  121. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
  122. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  123. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +19 -4
  124. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +3 -3
  125. package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
  126. package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
  127. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +1 -1
  128. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +6 -4
  129. package/dist/es/layouts/sidebar/layer/use-click.js +3 -3
  130. package/dist/es/layouts/sidebar/layer/use-drag.js +11 -10
  131. package/dist/es/layouts/sidebar/layer/use-node-status.js +2 -2
  132. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
  133. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
  134. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +9 -3
  135. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +55 -9
  136. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  137. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
  138. package/dist/es/plugin.js +35 -23
  139. package/dist/es/services/codeBlock.js +8 -3
  140. package/dist/es/services/dataSource.js +3 -0
  141. package/dist/es/services/dep.js +162 -41
  142. package/dist/es/services/editor.js +344 -113
  143. package/dist/es/services/events.js +4 -4
  144. package/dist/es/services/history.js +17 -1
  145. package/dist/es/services/keybinding.js +3 -3
  146. package/dist/es/services/props.js +2 -1
  147. package/dist/es/services/storage.js +2 -2
  148. package/dist/es/services/ui.js +7 -2
  149. package/dist/es/style.css +277 -114
  150. package/dist/es/utils/code-block.js +14 -7
  151. package/dist/es/utils/config.js +4 -1
  152. package/dist/es/utils/const.js +2 -2
  153. package/dist/es/utils/content-menu.js +2 -2
  154. package/dist/es/utils/data-source/index.js +34 -12
  155. package/dist/es/utils/dep/collect-worker-client.js +154 -0
  156. package/dist/es/utils/dep/idle-task.js +70 -22
  157. package/dist/es/utils/dep/worker.js +1 -1
  158. package/dist/es/utils/editor.js +4 -2
  159. package/dist/es/utils/event.js +135 -0
  160. package/dist/es/utils/monaco-editor.js +22 -6
  161. package/dist/es/utils/operator.js +2 -2
  162. package/dist/es/utils/props.js +50 -106
  163. package/dist/es/utils/type-match-rules.js +356 -0
  164. package/dist/style.css +277 -114
  165. package/dist/themes/magic-admin.css +978 -175
  166. package/dist/tmagic-editor-headless.umd.cjs +10880 -0
  167. package/dist/tmagic-editor.umd.cjs +12695 -10896
  168. package/package.json +18 -13
  169. package/src/Editor.vue +23 -6
  170. package/src/components/CodeBlockEditor.vue +3 -0
  171. package/src/components/CodeParams.vue +10 -4
  172. package/src/components/CompareForm.vue +20 -190
  173. package/src/components/ContentMenu.vue +34 -6
  174. package/src/components/FloatingBox.vue +71 -7
  175. package/src/components/ScrollBar.vue +0 -67
  176. package/src/components/ViewForm.vue +54 -0
  177. package/src/editorProps.ts +23 -10
  178. package/src/fields/Code.vue +1 -1
  179. package/src/fields/CodeSelect.vue +20 -113
  180. package/src/fields/CodeSelectCol.vue +1 -1
  181. package/src/fields/CondOpSelect.vue +5 -26
  182. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +2 -2
  183. package/src/fields/DataSourceFieldSelect/Index.vue +4 -1
  184. package/src/fields/DataSourceFields.vue +5 -1
  185. package/src/fields/DataSourceInput.vue +10 -28
  186. package/src/fields/DataSourceMethodSelect.vue +1 -1
  187. package/src/fields/DataSourceMethods.vue +6 -2
  188. package/src/fields/DataSourceMocks.vue +3 -0
  189. package/src/fields/DataSourceSelect.vue +1 -1
  190. package/src/fields/DisplayConds.vue +17 -139
  191. package/src/fields/EventSelect.vue +29 -416
  192. package/src/fields/KeyValue.vue +1 -1
  193. package/src/fields/StyleSetter/Index.vue +2 -8
  194. package/src/fields/StyleSetter/components/Border.vue +4 -38
  195. package/src/fields/StyleSetter/components/Box.vue +1 -1
  196. package/src/fields/StyleSetter/components/Position.vue +1 -1
  197. package/src/fields/StyleSetter/configs.ts +690 -0
  198. package/src/fields/StyleSetter/pro/Background.vue +9 -64
  199. package/src/fields/StyleSetter/pro/Border.vue +5 -16
  200. package/src/fields/StyleSetter/pro/Font.vue +11 -71
  201. package/src/fields/StyleSetter/pro/Layout.vue +10 -230
  202. package/src/fields/StyleSetter/pro/Position.vue +11 -82
  203. package/src/fields/StyleSetter/pro/Transform.vue +6 -34
  204. package/src/fields/UISelect.vue +0 -12
  205. package/src/fields/configs/codeSelect.ts +127 -0
  206. package/src/fields/configs/displayConds.ts +184 -0
  207. package/src/fields/configs/eventSelect.ts +309 -0
  208. package/src/fields/configs/stickyAddButton.ts +32 -0
  209. package/src/fields/headless-validation.ts +177 -0
  210. package/src/headless.ts +33 -0
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/use-compare-form.ts +166 -0
  213. package/src/hooks/use-form-context.ts +56 -0
  214. package/src/hooks/use-stage.ts +1 -0
  215. package/src/index.ts +9 -0
  216. package/src/initService.ts +73 -18
  217. package/src/layouts/CodeEditor.vue +32 -6
  218. package/src/layouts/Framework.vue +7 -6
  219. package/src/layouts/history-list/BucketTab.vue +2 -2
  220. package/src/layouts/history-list/HistoryDiffDialog.vue +33 -15
  221. package/src/layouts/history-list/HistoryListPanel.vue +16 -18
  222. package/src/layouts/history-list/useHistoryRevert.ts +57 -41
  223. package/src/layouts/props-panel/FormPanel.vue +75 -20
  224. package/src/layouts/props-panel/PropsPanel.vue +81 -30
  225. package/src/layouts/props-panel/use-style-panel.ts +4 -3
  226. package/src/layouts/sidebar/ComponentListPanel.vue +6 -2
  227. package/src/layouts/sidebar/Sidebar.vue +5 -3
  228. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +5 -2
  229. package/src/layouts/sidebar/code-block/useContentMenu.ts +14 -2
  230. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +3 -0
  231. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +3 -3
  232. package/src/layouts/sidebar/data-source/useContentMenu.ts +14 -2
  233. package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
  234. package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
  235. package/src/layouts/sidebar/layer/LayerPanel.vue +5 -2
  236. package/src/layouts/sidebar/layer/use-click.ts +3 -3
  237. package/src/layouts/sidebar/layer/use-node-status.ts +2 -2
  238. package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
  239. package/src/layouts/workspace/viewer/Stage.vue +80 -10
  240. package/src/layouts/workspace/viewer/ViewerMenu.vue +7 -7
  241. package/src/plugin.ts +35 -25
  242. package/src/services/codeBlock.ts +4 -0
  243. package/src/services/dataSource.ts +3 -0
  244. package/src/services/dep.ts +292 -47
  245. package/src/services/editor.ts +383 -120
  246. package/src/services/events.ts +8 -7
  247. package/src/services/history.ts +22 -1
  248. package/src/services/keybinding.ts +3 -3
  249. package/src/services/ui.ts +26 -5
  250. package/src/theme/code-block.scss +0 -37
  251. package/src/theme/display-conds.scss +4 -0
  252. package/src/theme/event.scss +25 -33
  253. package/src/theme/floating-box.scss +9 -1
  254. package/src/theme/framework.scss +4 -1
  255. package/src/theme/layer-node-content.scss +14 -0
  256. package/src/theme/nav-menu.scss +5 -1
  257. package/src/theme/props-panel.scss +17 -3
  258. package/src/theme/scroll-bar.scss +64 -0
  259. package/src/theme/theme.scss +3 -0
  260. package/src/theme/themes/magic-admin/index.scss +109 -9
  261. package/src/theme/ui-select.scss +9 -0
  262. package/src/type.ts +216 -6
  263. package/src/utils/code-block.ts +1 -0
  264. package/src/utils/config.ts +9 -1
  265. package/src/utils/const.ts +3 -3
  266. package/src/utils/content-menu.ts +2 -2
  267. package/src/utils/data-source/index.ts +31 -12
  268. package/src/utils/dep/collect-worker-client.ts +215 -0
  269. package/src/utils/dep/idle-task.ts +104 -35
  270. package/src/utils/dep/worker.ts +113 -9
  271. package/src/utils/event.ts +237 -0
  272. package/src/utils/index.ts +2 -0
  273. package/src/utils/monaco-editor.ts +27 -0
  274. package/src/utils/operator.ts +2 -2
  275. package/src/utils/props.ts +61 -122
  276. package/src/utils/type-match-rules.ts +697 -0
  277. package/types/headless.d.ts +17 -0
  278. package/types/index.d.ts +1199 -724
  279. package/src/fields/StyleSetter/icons/align-items/index copy.ts +0 -5
@@ -1,7 +1,7 @@
1
1
  import { computed, createElementBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, useTemplateRef } from "vue";
2
2
  import Gesto from "gesto";
3
3
  //#region packages/editor/src/components/ScrollBar.vue?vue&type=script&setup=true&lang.ts
4
- var ScrollBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var ScrollBar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  name: "MEditorScrollBar",
6
6
  __name: "ScrollBar",
7
7
  props: {
@@ -48,9 +48,10 @@ var ScrollBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
48
48
  return props.scrollSize * ratio;
49
49
  };
50
50
  const scrollBy = (delta) => {
51
- if (delta < 0) if (props.pos <= 0) emit("scroll", 0);
52
- else emit("scroll", -Math.min(-delta, props.pos));
53
- else {
51
+ if (delta < 0) {
52
+ if (props.pos <= 0) emit("scroll", 0);
53
+ else emit("scroll", -Math.min(-delta, props.pos));
54
+ } else {
54
55
  const leftPos = props.size - (thumbSize.value + thumbPos.value);
55
56
  if (leftPos <= 0) emit("scroll", 0);
56
57
  else emit("scroll", Math.min(delta, leftPos));
@@ -7,7 +7,7 @@ var _hoisted_1 = {
7
7
  class: "m-editor-scroll-viewer-container",
8
8
  ref: "container"
9
9
  };
10
- var ScrollViewer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var ScrollViewer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "MEditorScrollViewer",
12
12
  __name: "ScrollViewer",
13
13
  props: {
@@ -2,7 +2,7 @@ import { TMagicIcon, TMagicInput } from "@tmagic/design";
2
2
  import { createBlock, createVNode, defineComponent, openBlock, ref, unref, withCtx } from "vue";
3
3
  import { Search } from "@element-plus/icons-vue";
4
4
  //#region packages/editor/src/components/SearchInput.vue?vue&type=script&setup=true&lang.ts
5
- var SearchInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var SearchInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  name: "MEditorSearchInput",
7
7
  __name: "SearchInput",
8
8
  emits: ["search"],
@@ -1,7 +1,7 @@
1
1
  import Resizer_default from "./Resizer.js";
2
2
  import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, useTemplateRef, watchEffect } from "vue";
3
3
  //#region packages/editor/src/components/SplitView.vue?vue&type=script&setup=true&lang.ts
4
- var SplitView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var SplitView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  name: "MEditorSplitView",
6
6
  __name: "SplitView",
7
7
  props: {
@@ -9,7 +9,7 @@ var _hoisted_1 = {
9
9
  class: "menu-item-text"
10
10
  };
11
11
  var _hoisted_2 = { class: "el-dropdown-link menubar-menu-button" };
12
- var ToolButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var ToolButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  name: "MEditorToolButton",
14
14
  __name: "ToolButton",
15
15
  props: {
@@ -5,7 +5,7 @@ var _hoisted_1 = {
5
5
  key: 1,
6
6
  class: "m-editor-tree-empty"
7
7
  };
8
- var Tree_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var Tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
9
  name: "MEditorTree",
10
10
  __name: "Tree",
11
11
  props: {
@@ -16,7 +16,7 @@ var _hoisted_4 = {
16
16
  key: 0,
17
17
  class: "m-editor-tree-node-children"
18
18
  };
19
- var TreeNode_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
19
+ var TreeNode_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
20
20
  name: "MEditorTreeNode",
21
21
  __name: "TreeNode",
22
22
  props: {
@@ -0,0 +1,5 @@
1
+ import ViewForm_vue_vue_type_script_setup_true_lang_default from "./ViewForm.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/components/ViewForm.vue
3
+ var ViewForm_default = ViewForm_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ViewForm_default as default };
@@ -0,0 +1,56 @@
1
+ import { useCompareForm } from "../hooks/use-compare-form.js";
2
+ import { MForm } from "@tmagic/form";
3
+ import { createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeStyle, openBlock, unref } from "vue";
4
+ //#region packages/editor/src/components/ViewForm.vue?vue&type=script&setup=true&lang.ts
5
+ var ViewForm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
+ name: "MEditorViewForm",
7
+ __name: "ViewForm",
8
+ props: {
9
+ value: {},
10
+ type: {},
11
+ category: { default: "node" },
12
+ dataSourceType: {},
13
+ labelWidth: { default: "120px" },
14
+ height: {},
15
+ size: {},
16
+ loadConfig: {},
17
+ services: {},
18
+ disabled: {
19
+ type: Boolean,
20
+ default: true
21
+ }
22
+ },
23
+ setup(__props, { expose: __expose }) {
24
+ const { config, currentValues, wrapperStyle, formContext, loadConfig, formRef } = useCompareForm(__props);
25
+ __expose({
26
+ form: formRef,
27
+ config,
28
+ reload: loadConfig
29
+ });
30
+ return (_ctx, _cache) => {
31
+ return openBlock(), createElementBlock("div", {
32
+ class: "m-editor-view-form-wrapper",
33
+ style: normalizeStyle(unref(wrapperStyle))
34
+ }, [unref(config).length ? (openBlock(), createBlock(unref(MForm), {
35
+ key: 0,
36
+ ref: "form",
37
+ class: "m-editor-view-form",
38
+ config: unref(config),
39
+ "init-values": unref(currentValues),
40
+ disabled: __props.disabled,
41
+ "label-width": __props.labelWidth,
42
+ context: unref(formContext),
43
+ size: __props.size
44
+ }, null, 8, [
45
+ "config",
46
+ "init-values",
47
+ "disabled",
48
+ "label-width",
49
+ "context",
50
+ "size"
51
+ ])) : createCommentVNode("v-if", true)], 4);
52
+ };
53
+ }
54
+ });
55
+ //#endregion
56
+ export { ViewForm_vue_vue_type_script_setup_true_lang_default as default };
@@ -1,6 +1,11 @@
1
1
  import { CONTAINER_HIGHLIGHT_CLASS_NAME, ContainerHighlightType, RenderType } from "@tmagic/stage";
2
2
  import { getIdFromEl } from "@tmagic/utils";
3
3
  //#region packages/editor/src/editorProps.ts
4
+ /**
5
+ * 「属性配置表单校验」联动能力的 provide/inject 注入键。
6
+ * 使用 Symbol 避免与其它字符串键冲突,供 PropsPanel / FormPanel 注入判断校验失败时是否仍更新节点并记录错误。
7
+ */
8
+ var ENABLE_PROPS_FORM_VALIDATE = Symbol("enablePropsFormValidate");
4
9
  var defaultEditorProps = {
5
10
  renderType: RenderType.IFRAME,
6
11
  disabledMultiSelect: false,
@@ -11,6 +16,7 @@ var defaultEditorProps = {
11
16
  containerHighlightClassName: CONTAINER_HIGHLIGHT_CLASS_NAME,
12
17
  containerHighlightDuration: 800,
13
18
  containerHighlightType: ContainerHighlightType.DEFAULT,
19
+ containerHighlightAddOnly: false,
14
20
  disabledShowSrc: false,
15
21
  disabledDataSource: false,
16
22
  disabledCodeBlock: false,
@@ -34,4 +40,4 @@ var defaultEditorProps = {
34
40
  customContentMenu: (menus) => menus
35
41
  };
36
42
  //#endregion
37
- export { defaultEditorProps };
43
+ export { ENABLE_PROPS_FORM_VALIDATE, defaultEditorProps };
@@ -1,7 +1,7 @@
1
1
  import CodeEditor_default from "../layouts/CodeEditor.js";
2
2
  import { computed, createBlock, defineComponent, openBlock } from "vue";
3
3
  //#region packages/editor/src/fields/Code.vue?vue&type=script&setup=true&lang.ts
4
- var Code_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var Code_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  name: "MFieldsVsCode",
6
6
  __name: "Code",
7
7
  props: {
@@ -2,7 +2,7 @@ import { getEditorConfig } from "../utils/config.js";
2
2
  import { serializeConfig } from "../utils/editor.js";
3
3
  import { computed, createBlock, defineComponent, openBlock, reactive, resolveComponent, watch } from "vue";
4
4
  //#region packages/editor/src/fields/CodeLink.vue?vue&type=script&setup=true&lang.ts
5
- var CodeLink_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var CodeLink_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  name: "MFieldsCodeLink",
7
7
  __name: "CodeLink",
8
8
  props: {
@@ -1,12 +1,8 @@
1
- import { useServices } from "../hooks/use-services.js";
1
+ import { createCodeSelectConfig, normalizeCodeSelectValue } from "./configs/codeSelect.js";
2
2
  import { MContainer } from "@tmagic/form";
3
- import { TMagicButton, TMagicCard } from "@tmagic/design";
4
- import { HookCodeType, HookType } from "@tmagic/core";
5
- import { computed, createElementBlock, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, watch, withCtx } from "vue";
6
- import { isEmpty } from "lodash-es";
7
- import { Plus } from "@element-plus/icons-vue";
3
+ import { computed, createElementBlock, createVNode, defineComponent, normalizeClass, openBlock, unref, watch } from "vue";
8
4
  //#region packages/editor/src/fields/CodeSelect.vue?vue&type=script&setup=true&lang.ts
9
- var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
6
  name: "MFieldsCodeSelect",
11
7
  __name: "CodeSelect",
12
8
  props: {
@@ -27,7 +23,6 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
27
23
  emits: ["change"],
28
24
  setup(__props, { emit: __emit }) {
29
25
  const emit = __emit;
30
- const { dataSourceService, codeBlockService } = useServices();
31
26
  const props = __props;
32
27
  /**
33
28
  * 对比模式判定:
@@ -43,113 +38,35 @@ var CodeSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
43
38
  * 仅当存在历史值时才启用对比,避免 lastValues 缺失时退化为「全部新增」的空对比。
44
39
  */
45
40
  const isCompareMode = computed(() => Boolean(props.isCompare && props.lastValues));
46
- const newHandler = () => {
47
- const defaultCode = {
48
- codeType: HookCodeType.CODE,
49
- codeId: ""
50
- };
51
- const name = props.config.name || "";
52
- emit("change", defaultCode, { modifyKey: `hookData.${(props.model[name]?.hookData || []).length}` });
53
- };
54
- const codeConfig = computed(() => ({
55
- type: "group-list",
56
- name: "hookData",
57
- enableToggleMode: false,
58
- expandAll: true,
59
- flat: true,
60
- addable: () => false,
61
- title: (mForm, { model, index }) => {
62
- if (model.codeType === HookCodeType.DATA_SOURCE_METHOD) {
63
- if (Array.isArray(model.codeId)) {
64
- if (model.codeId.length < 2) return index;
65
- return `${dataSourceService.getDataSourceById(model.codeId[0])?.title} / ${model.codeId[1]}`;
66
- }
67
- return Array.isArray(model.codeId) ? model.codeId.join("/") : index;
68
- }
69
- const codeContent = codeBlockService.getCodeContentById(model.codeId);
70
- if (codeContent) return codeContent.name;
71
- return model.codeId || index;
72
- },
73
- titlePrefix: props.config.name === void 0 ? void 0 : String(props.config.name),
74
- items: [
75
- {
76
- text: "代码类型",
77
- type: "select",
78
- name: "codeType",
79
- labelPosition: "right",
80
- options: [{
81
- value: HookCodeType.CODE,
82
- text: "代码块"
83
- }, {
84
- value: HookCodeType.DATA_SOURCE_METHOD,
85
- text: "数据源方法"
86
- }],
87
- defaultValue: "code",
88
- onChange: (_mForm, v, { setModel }) => {
89
- if (v === HookCodeType.DATA_SOURCE_METHOD) setModel("codeId", []);
90
- else setModel("codeId", "");
91
- return v;
92
- }
93
- },
94
- {
95
- type: "code-select-col",
96
- name: "codeId",
97
- text: "代码块",
98
- display: (_mForm, { model }) => model.codeType !== HookCodeType.DATA_SOURCE_METHOD,
99
- notEditable: () => !codeBlockService.getEditStatus()
100
- },
101
- {
102
- type: "data-source-method-select",
103
- name: "codeId",
104
- text: "数据源字段",
105
- display: (_mForm, { model }) => model.codeType === HookCodeType.DATA_SOURCE_METHOD,
106
- notEditable: () => !dataSourceService.get("editable")
107
- }
108
- ]
109
- }));
110
- watch(() => props.model[props.name], (value) => {
111
- if (isEmpty(value)) props.model[props.name] = {
112
- hookType: HookType.CODE,
113
- hookData: []
114
- };
115
- }, { immediate: true });
41
+ const codeConfig = computed(() => createCodeSelectConfig(props.config));
42
+ watch(() => props.model[props.name], () => {
43
+ normalizeCodeSelectValue(props.model, props.name);
44
+ });
116
45
  const changeHandler = (v, eventData) => emit("change", v, eventData);
117
46
  return (_ctx, _cache) => {
118
- return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-code-select", __props.config.className]) }, [createVNode(unref(TMagicCard), { flat: __props.config.flat }, {
119
- default: withCtx(() => [createVNode(unref(MContainer), {
120
- config: codeConfig.value,
121
- size: __props.size,
122
- class: "code-select-content",
123
- prop: __props.prop,
124
- disabled: __props.disabled,
125
- "is-compare": isCompareMode.value,
126
- "last-values": __props.lastValues?.[__props.name],
127
- model: __props.model[__props.name],
128
- onChange: changeHandler
129
- }, null, 8, [
130
- "config",
131
- "size",
132
- "prop",
133
- "disabled",
134
- "is-compare",
135
- "last-values",
136
- "model"
137
- ]), createVNode(unref(TMagicButton), {
138
- class: "create-button fullWidth",
139
- icon: unref(Plus),
140
- size: __props.size,
141
- disabled: __props.disabled,
142
- onClick: _cache[0] || (_cache[0] = ($event) => newHandler())
143
- }, {
144
- default: withCtx(() => [createTextVNode("添加" + toDisplayString(__props.config.text), 1)]),
145
- _: 1
146
- }, 8, [
147
- "icon",
148
- "size",
149
- "disabled"
150
- ])]),
151
- _: 1
152
- }, 8, ["flat"])], 2);
47
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-code-select", __props.config.className]) }, [createVNode(unref(MContainer), {
48
+ config: codeConfig.value,
49
+ size: __props.size,
50
+ class: "code-select-content",
51
+ prop: __props.prop,
52
+ disabled: __props.disabled,
53
+ "is-compare": isCompareMode.value,
54
+ "last-values": __props.lastValues?.[__props.name],
55
+ model: __props.model[__props.name],
56
+ "label-position": __props.config.labelPosition,
57
+ "label-width": __props.config.labelWidth,
58
+ onChange: changeHandler
59
+ }, null, 8, [
60
+ "config",
61
+ "size",
62
+ "prop",
63
+ "disabled",
64
+ "is-compare",
65
+ "last-values",
66
+ "model",
67
+ "label-position",
68
+ "label-width"
69
+ ])], 2);
153
70
  };
154
71
  }
155
72
  });
@@ -10,7 +10,7 @@ import { Edit, View } from "@element-plus/icons-vue";
10
10
  //#region packages/editor/src/fields/CodeSelectCol.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = { class: "m-fields-code-select-col" };
12
12
  var _hoisted_2 = { class: "code-select-container" };
13
- var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
14
  name: "MFieldsCodeSelectCol",
15
15
  __name: "CodeSelectCol",
16
16
  props: {
@@ -35,7 +35,7 @@ var CodeSelectCol_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
35
35
  setup(__props, { emit: __emit }) {
36
36
  const mForm = inject("mForm");
37
37
  const { codeBlockService, uiService } = useServices();
38
- const eventBus = inject("eventBus");
38
+ const eventBus = inject("eventBus", null);
39
39
  const emit = __emit;
40
40
  const props = __props;
41
41
  /**
@@ -1,10 +1,11 @@
1
- import { arrayOptions, eqOptions, numberOptions } from "../utils/props.js";
1
+ import { getCondOpOptionsByFieldType } from "../utils/props.js";
2
2
  import { useServices } from "../hooks/use-services.js";
3
3
  import { getFieldType } from "../utils/data-source/index.js";
4
4
  import { TMagicSelect, getDesignConfig } from "@tmagic/design";
5
+ import { removeDataSourceFieldPrefix } from "@tmagic/utils";
5
6
  import { Fragment, computed, createBlock, createElementBlock, defineComponent, mergeProps, openBlock, renderList, resolveDynamicComponent, unref, withCtx } from "vue";
6
7
  //#region packages/editor/src/fields/CondOpSelect.vue?vue&type=script&setup=true&lang.ts
7
- var CondOpSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ var CondOpSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
9
  name: "MFieldsCondOpSelect",
9
10
  __name: "CondOpSelect",
10
11
  props: {
@@ -29,23 +30,10 @@ var CondOpSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
29
30
  const props = __props;
30
31
  const optionComponent = getDesignConfig("components")?.option;
31
32
  const options = computed(() => {
32
- const [id, ...fieldNames] = [...props.config.parentFields || [], ...props.model.field];
33
- const type = getFieldType(dataSourceService.getDataSourceById(id), fieldNames);
34
- if (type === "array") return arrayOptions;
35
- if (type === "boolean" || type === "null") return [{
36
- text: "是",
37
- value: "is"
38
- }, {
39
- text: "不是",
40
- value: "not"
41
- }];
42
- if (type === "number") return [...eqOptions, ...numberOptions];
43
- if (type === "string") return [...arrayOptions, ...eqOptions];
44
- return [
45
- ...arrayOptions,
46
- ...eqOptions,
47
- ...numberOptions
48
- ];
33
+ const [id, ...fieldNames] = [...props.config.parentFields || [], ...props.model.field || []];
34
+ const ds = id ? dataSourceService.getDataSourceById(removeDataSourceFieldPrefix(id)) : void 0;
35
+ const type = getFieldType(ds, fieldNames);
36
+ return getCondOpOptionsByFieldType(type);
49
37
  });
50
38
  const fieldChangeHandler = (v) => {
51
39
  emit("change", v);
@@ -9,9 +9,9 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
9
9
  import { Edit, View } from "@element-plus/icons-vue";
10
10
  //#region packages/editor/src/fields/DataSourceFieldSelect/FieldSelect.vue?vue&type=script&setup=true&lang.ts
11
11
  var _hoisted_1 = { class: "m-editor-data-source-field-select" };
12
- var FieldSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var FieldSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  __name: "FieldSelect",
14
- props: /* @__PURE__ */ mergeModels({
14
+ props: /*@__PURE__*/ mergeModels({
15
15
  value: {},
16
16
  disabled: { type: Boolean },
17
17
  checkStrictly: { type: Boolean },
@@ -20,10 +20,10 @@ var FieldSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
20
20
  notEditable: { type: [Boolean, Function] },
21
21
  dataSourceId: {}
22
22
  }, {
23
- "modelValue": { default: [] },
23
+ "modelValue": { default: () => [] },
24
24
  "modelModifiers": {}
25
25
  }),
26
- emits: /* @__PURE__ */ mergeModels(["change"], ["update:modelValue"]),
26
+ emits: /*@__PURE__*/ mergeModels(["change"], ["update:modelValue"]),
27
27
  setup(__props, { emit: __emit }) {
28
28
  const props = __props;
29
29
  const emit = __emit;
@@ -31,7 +31,7 @@ var FieldSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
31
31
  const optionComponent = getDesignConfig("components")?.option;
32
32
  const { dataSourceService, uiService } = useServices();
33
33
  const mForm = inject("mForm");
34
- const eventBus = inject("eventBus");
34
+ const eventBus = inject("eventBus", null);
35
35
  const allDataSources = computed(() => dataSourceService.get("dataSources") || []);
36
36
  const dataSources = computed(() => {
37
37
  if (!props.dataSourceId) return allDataSources.value;
@@ -49,7 +49,8 @@ var FieldSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
49
49
  const selectFieldsId = ref([]);
50
50
  watch(modelValue, (value) => {
51
51
  if (props.dataSourceId) {
52
- selectDataSourceId.value = valueIsKey.value ? props.dataSourceId : `${DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX}${props.dataSourceId}`;
52
+ const dsIdValue = valueIsKey.value ? props.dataSourceId : `${DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX}${props.dataSourceId}`;
53
+ selectDataSourceId.value = dsIdValue;
53
54
  selectFieldsId.value = Array.isArray(value) ? value : [];
54
55
  } else if (Array.isArray(value) && value.length) {
55
56
  const [dsId, ...fields] = value;
@@ -7,7 +7,7 @@ import { TMagicButton, TMagicTooltip, tMagicMessage } from "@tmagic/design";
7
7
  import { DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, removeDataSourceFieldPrefix } from "@tmagic/utils";
8
8
  import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, resolveComponent, resolveDynamicComponent, unref, watch, withCtx } from "vue";
9
9
  //#region packages/editor/src/fields/DataSourceFieldSelect/Index.vue?vue&type=script&setup=true&lang.ts
10
- var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var Index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "MFieldsDataSourceFieldSelect",
12
12
  __name: "Index",
13
13
  props: {
@@ -59,7 +59,9 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
59
59
  let value;
60
60
  if (typeof props.config.checkStrictly !== "function") value = props.config.checkStrictly;
61
61
  else {
62
- const dsId = removeDataSourceFieldPrefix(props.model[0]);
62
+ const fieldValue = props.model[props.name];
63
+ const rawDsId = props.config.dataSourceId ?? (Array.isArray(fieldValue) ? fieldValue[0] : fieldValue);
64
+ const dsId = removeDataSourceFieldPrefix(`${rawDsId}`);
63
65
  const dataSource = dataSources.value.find((ds) => ds.id === dsId);
64
66
  value = props.config.checkStrictly(mForm, {
65
67
  values: mForm?.initValues || {},
@@ -14,10 +14,10 @@ var _hoisted_2 = {
14
14
  key: 0,
15
15
  class: "m-editor-data-source-fields-footer"
16
16
  };
17
- var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
18
18
  name: "MFieldsDataSourceFields",
19
19
  __name: "DataSourceFields",
20
- props: /* @__PURE__ */ mergeModels({
20
+ props: /*@__PURE__*/ mergeModels({
21
21
  config: {},
22
22
  model: {},
23
23
  initValues: {},
@@ -48,7 +48,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
48
48
  },
49
49
  "visible1Modifiers": {}
50
50
  }),
51
- emits: /* @__PURE__ */ mergeModels(["change"], [
51
+ emits: /*@__PURE__*/ mergeModels(["change"], [
52
52
  "update:width",
53
53
  "update:visible",
54
54
  "update:visible1"
@@ -315,7 +315,9 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
315
315
  const addDialogVisible = useModel(__props, "visible");
316
316
  const addFromJsonDialogVisible = useModel(__props, "visible1");
317
317
  const { height: editorHeight } = useEditorContentHeight();
318
- const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
318
+ const parentFloating = inject("parentFloating", ref(null));
319
+ const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, parentFloating);
320
+ const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
319
321
  /**
320
322
  * 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的字段路径(字段名数组)。
321
323
  * 当前层消费 path[0],并把剩余路径下发给嵌套字段,实现逐层打开。
@@ -356,6 +358,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
356
358
  _: 1
357
359
  }, 8, ["disabled"])])) : createCommentVNode("v-if", true),
358
360
  createVNode(FloatingBox_default, {
361
+ "body-style": { padding: "0 16px" },
359
362
  visible: addDialogVisible.value,
360
363
  "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => addDialogVisible.value = $event),
361
364
  width: width.value,
@@ -363,6 +366,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
363
366
  height: unref(editorHeight),
364
367
  "onUpdate:height": _cache[4] || (_cache[4] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
365
368
  title: fieldTitle.value,
369
+ "framework-width": frameworkWidth.value,
366
370
  position: unref(boxPosition)
367
371
  }, {
368
372
  body: withCtx(() => [createVNode(unref(MFormBox), {
@@ -385,9 +389,11 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
385
389
  "width",
386
390
  "height",
387
391
  "title",
392
+ "framework-width",
388
393
  "position"
389
394
  ]),
390
395
  createVNode(FloatingBox_default, {
396
+ "body-style": { padding: "0 16px" },
391
397
  visible: addFromJsonDialogVisible.value,
392
398
  "onUpdate:visible": _cache[5] || (_cache[5] = ($event) => addFromJsonDialogVisible.value = $event),
393
399
  width: width.value,
@@ -395,6 +401,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
395
401
  height: unref(editorHeight),
396
402
  "onUpdate:height": _cache[7] || (_cache[7] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
397
403
  title: "快速添加数据定义",
404
+ "framework-width": frameworkWidth.value,
398
405
  position: unref(boxPosition)
399
406
  }, {
400
407
  body: withCtx(() => [createVNode(unref(MFormBox), {
@@ -408,6 +415,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
408
415
  "visible",
409
416
  "width",
410
417
  "height",
418
+ "framework-width",
411
419
  "position"
412
420
  ])
413
421
  ]);
@@ -1,8 +1,8 @@
1
1
  import { useServices } from "../hooks/use-services.js";
2
- import { getDisplayField } from "../utils/data-source/index.js";
2
+ import { getDisplayField, resolveFieldByPath } from "../utils/data-source/index.js";
3
3
  import Icon_default from "../components/Icon.js";
4
4
  import { TMagicInput, TMagicTag, getDesignConfig } from "@tmagic/design";
5
- import { getKeysArray, isNumber } from "@tmagic/utils";
5
+ import { getKeysArray } from "@tmagic/utils";
6
6
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, useTemplateRef, watch, withCtx } from "vue";
7
7
  import { Coin } from "@element-plus/icons-vue";
8
8
  //#region packages/editor/src/fields/DataSourceInput.vue?vue&type=script&setup=true&lang.ts
@@ -15,7 +15,7 @@ var _hoisted_2 = { style: {
15
15
  "font-size": "10px",
16
16
  "color": "rgba(0, 0, 0, 0.6)"
17
17
  } };
18
- var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
18
+ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
19
19
  name: "MFieldsDataSourceInput",
20
20
  __name: "DataSourceInput",
21
21
  props: {
@@ -128,30 +128,19 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
128
128
  */
129
129
  const fieldQuerySearch = (queryString, leftAngleIndex, dotIndex, cb) => {
130
130
  let result = [];
131
- const keys = getKeysArray(queryString.substring(leftAngleIndex + 1, dotIndex));
131
+ const dsKey = queryString.substring(leftAngleIndex + 1, dotIndex);
132
+ const keys = getKeysArray(dsKey);
132
133
  const dsId = keys.shift();
133
134
  const ds = dataSources.value.find((ds) => ds.id === dsId);
134
135
  if (!ds) {
135
136
  cb([]);
136
137
  return;
137
138
  }
138
- let fields = ds.fields || [];
139
- let key = keys.shift();
140
- while (key) {
141
- if (isNumber(key)) {
142
- key = keys.shift();
143
- continue;
144
- }
145
- for (const field of fields) if (field.name === key) {
146
- fields = field.fields || [];
147
- key = keys.shift();
148
- break;
149
- }
150
- }
151
- if (curCharIsDot(dotIndex)) result = fields || [];
139
+ const { fields } = resolveFieldByPath(ds.fields, keys, { skipNumberIndices: true });
140
+ if (curCharIsDot(dotIndex)) result = fields;
152
141
  else if (dotIndex > -1) {
153
142
  const queryName = queryString.substring(dotIndex + 1).toLowerCase();
154
- result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName)) || [];
143
+ result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName));
155
144
  }
156
145
  cb(result.map((field) => ({
157
146
  value: field.name,
@@ -230,7 +219,7 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
230
219
  onSelect: selectHandler
231
220
  }), {
232
221
  suffix: withCtx(() => [createVNode(Icon_default, { icon: unref(Coin) }, null, 8, ["icon"])]),
233
- default: withCtx(({ item }) => [createElementVNode("div", _hoisted_1, [createElementVNode("div", null, toDisplayString(item.text), 1), createElementVNode("span", _hoisted_2, toDisplayString(item.value), 1)])]),
222
+ default: withCtx((slotProps) => [createElementVNode("div", _hoisted_1, [createElementVNode("div", null, toDisplayString(slotProps?.item?.text || ""), 1), createElementVNode("span", _hoisted_2, toDisplayString(slotProps?.item?.value || ""), 1)])]),
234
223
  _: 1
235
224
  }, 16, ["modelValue"])) : (openBlock(), createElementBlock("div", {
236
225
  key: 2,
@@ -11,7 +11,7 @@ import { Edit, View } from "@element-plus/icons-vue";
11
11
  //#region packages/editor/src/fields/DataSourceMethodSelect.vue?vue&type=script&setup=true&name=true&lang.ts
12
12
  var _hoisted_1 = { class: "m-fields-data-source-method-select" };
13
13
  var _hoisted_2 = { class: "data-source-method-select-container" };
14
- var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default = /* @__PURE__ */ defineComponent({
14
+ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default = /*@__PURE__*/ defineComponent({
15
15
  name: "MFieldsDataSourceMethodSelect",
16
16
  __name: "DataSourceMethodSelect",
17
17
  props: {
@@ -36,7 +36,7 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
36
36
  setup(__props, { emit: __emit }) {
37
37
  const { dataSourceService, uiService } = useServices();
38
38
  const mForm = inject("mForm");
39
- const eventBus = inject("eventBus");
39
+ const eventBus = inject("eventBus", null);
40
40
  const emit = __emit;
41
41
  const props = __props;
42
42
  const dataSourceSidePanel = computed(() => (uiService.get("sideBarItems") || []).find((item) => item.$key === SideItemKey.DATA_SOURCE));