@tmagic/editor 1.8.0-beta.2 → 1.8.0-beta.21

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 (308) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +43 -9
  2. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +8 -4
  3. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +3 -2
  4. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +22 -98
  5. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +32 -9
  6. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +68 -17
  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 +1 -1
  9. package/dist/es/components/ScrollBar.js +0 -1
  10. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +1 -1
  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 +7 -7
  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 +58 -0
  19. package/dist/es/editorProps.js +9 -1
  20. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +16 -5
  21. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +7 -7
  22. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +81 -44
  23. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +10 -3
  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 +13 -6
  26. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +11 -8
  27. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +39 -12
  28. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +11 -20
  29. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +11 -6
  30. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +30 -14
  31. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +11 -4
  32. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +5 -2
  33. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +38 -6
  34. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +156 -155
  35. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +5 -2
  36. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +5 -2
  37. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +8 -10
  38. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +5 -2
  39. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +28 -6
  40. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/es/fields/StyleSetter/icons/align-items/Center.js +31 -0
  42. package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +31 -0
  43. package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +31 -0
  44. package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +50 -0
  45. package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +50 -0
  46. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +7 -7
  47. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +6 -3
  48. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +29 -6
  49. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +32 -6
  50. package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
  51. package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
  52. package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
  53. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
  54. package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
  55. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +11 -3
  56. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +11 -3
  57. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +11 -3
  58. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +11 -3
  59. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +17 -3
  60. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +19 -3
  61. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +19 -3
  62. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +37 -3
  63. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +33 -3
  64. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
  65. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
  66. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
  67. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +56 -30
  68. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +7 -4
  69. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +35 -26
  70. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +76 -48
  71. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +29 -23
  72. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +7 -4
  73. package/dist/es/fields/UISelect.js +0 -1
  74. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +5 -2
  75. package/dist/es/hooks/use-code-block-edit.js +6 -3
  76. package/dist/es/hooks/use-compare-form.js +119 -0
  77. package/dist/es/hooks/use-data-source-edit.js +5 -2
  78. package/dist/es/hooks/use-stage.js +9 -4
  79. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  80. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  81. package/dist/es/icons/DatasourceIcon.js +17 -0
  82. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/es/index.js +24 -10
  84. package/dist/es/initService.js +19 -13
  85. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
  86. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +24 -12
  87. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +25 -18
  88. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +4 -4
  89. package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
  90. package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +25 -38
  91. package/dist/es/layouts/history-list/BucketTab.js +5 -0
  92. package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +62 -0
  93. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +177 -88
  94. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +139 -37
  95. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +164 -107
  96. package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +44 -9
  97. package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +49 -53
  98. package/dist/es/layouts/history-list/composables.js +138 -108
  99. package/dist/es/layouts/history-list/useHistoryList.js +56 -0
  100. package/dist/es/layouts/history-list/useHistoryRevert.js +317 -0
  101. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  102. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +5 -3
  103. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  104. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
  105. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
  106. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +50 -7
  107. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +33 -13
  108. package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
  109. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +3 -3
  110. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +26 -38
  111. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +4 -4
  112. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  113. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +19 -4
  114. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  115. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +23 -6
  116. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +27 -5
  118. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +19 -4
  119. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
  120. package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
  121. package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
  122. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +2 -2
  123. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +3 -2
  124. package/dist/es/layouts/sidebar/layer/use-click.js +3 -3
  125. package/dist/es/layouts/sidebar/layer/use-node-status.js +2 -2
  126. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
  128. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +9 -3
  129. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +2 -2
  130. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  131. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +16 -16
  132. package/dist/es/plugin.js +5 -2
  133. package/dist/es/services/codeBlock.js +137 -56
  134. package/dist/es/services/dataSource.js +122 -52
  135. package/dist/es/services/dep.js +162 -41
  136. package/dist/es/services/editor.js +613 -179
  137. package/dist/es/services/events.js +2 -2
  138. package/dist/es/services/history.js +350 -386
  139. package/dist/es/services/keybinding.js +6 -6
  140. package/dist/es/services/props.js +3 -2
  141. package/dist/es/services/storage.js +2 -2
  142. package/dist/es/services/ui.js +10 -2
  143. package/dist/es/style.css +549 -113
  144. package/dist/es/utils/config.js +4 -1
  145. package/dist/es/utils/const.js +2 -2
  146. package/dist/es/utils/content-menu.js +19 -11
  147. package/dist/es/utils/data-source/index.js +34 -11
  148. package/dist/es/utils/dep/collect-worker-client.js +114 -0
  149. package/dist/es/utils/dep/idle-task.js +70 -22
  150. package/dist/es/utils/dep/worker.js +1 -1
  151. package/dist/es/utils/editor.js +103 -49
  152. package/dist/es/utils/event.js +135 -0
  153. package/dist/es/utils/history.js +220 -0
  154. package/dist/es/utils/indexed-db.js +86 -0
  155. package/dist/es/utils/monaco-editor.js +22 -6
  156. package/dist/es/utils/operator.js +2 -2
  157. package/dist/es/utils/props.js +114 -33
  158. package/dist/es/utils/type-match-rules.js +367 -0
  159. package/dist/es/utils/undo-redo.js +60 -1
  160. package/dist/style.css +549 -113
  161. package/dist/themes/magic-admin.css +3028 -0
  162. package/dist/tmagic-editor.umd.cjs +14403 -10121
  163. package/package.json +8 -8
  164. package/src/Editor.vue +43 -2
  165. package/src/components/CodeBlockEditor.vue +3 -0
  166. package/src/components/CompareForm.vue +18 -146
  167. package/src/components/ContentMenu.vue +44 -8
  168. package/src/components/FloatingBox.vue +84 -9
  169. package/src/components/ScrollBar.vue +0 -67
  170. package/src/components/ToolButton.vue +2 -2
  171. package/src/components/ViewForm.vue +55 -0
  172. package/src/editorProps.ts +30 -0
  173. package/src/fields/Code.vue +10 -2
  174. package/src/fields/CodeLink.vue +2 -5
  175. package/src/fields/CodeSelect.vue +54 -40
  176. package/src/fields/CodeSelectCol.vue +8 -1
  177. package/src/fields/CondOpSelect.vue +2 -24
  178. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +16 -2
  179. package/src/fields/DataSourceFieldSelect/Index.vue +14 -5
  180. package/src/fields/DataSourceFields.vue +42 -8
  181. package/src/fields/DataSourceInput.vue +10 -28
  182. package/src/fields/DataSourceMethodSelect.vue +9 -4
  183. package/src/fields/DataSourceMethods.vue +42 -21
  184. package/src/fields/DataSourceMocks.vue +3 -0
  185. package/src/fields/DisplayConds.vue +18 -1
  186. package/src/fields/EventSelect.vue +152 -166
  187. package/src/fields/StyleSetter/Index.vue +3 -12
  188. package/src/fields/StyleSetter/components/Border.vue +15 -6
  189. package/src/fields/StyleSetter/icons/align-items/Center.vue +19 -0
  190. package/src/fields/StyleSetter/icons/align-items/FlexEnd.vue +19 -0
  191. package/src/fields/StyleSetter/icons/align-items/FlexStart.vue +19 -0
  192. package/src/fields/StyleSetter/icons/align-items/SpaceAround.vue +34 -0
  193. package/src/fields/StyleSetter/icons/align-items/SpaceBetween.vue +34 -0
  194. package/src/fields/StyleSetter/icons/align-items/index.ts +5 -0
  195. package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +20 -4
  196. package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +10 -28
  197. package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +4 -5
  198. package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +4 -5
  199. package/src/fields/StyleSetter/icons/flex-direction/Column.vue +4 -3
  200. package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +4 -3
  201. package/src/fields/StyleSetter/icons/flex-direction/Row.vue +4 -3
  202. package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +4 -3
  203. package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -2
  204. package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +15 -2
  205. package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +15 -2
  206. package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +28 -3
  207. package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +28 -2
  208. package/src/fields/StyleSetter/pro/Background.vue +99 -55
  209. package/src/fields/StyleSetter/pro/Border.vue +9 -11
  210. package/src/fields/StyleSetter/pro/Font.vue +66 -64
  211. package/src/fields/StyleSetter/pro/Layout.vue +211 -139
  212. package/src/fields/StyleSetter/pro/Position.vue +69 -67
  213. package/src/fields/StyleSetter/pro/Transform.vue +23 -25
  214. package/src/fields/UISelect.vue +0 -12
  215. package/src/hooks/index.ts +1 -0
  216. package/src/hooks/use-code-block-edit.ts +4 -3
  217. package/src/hooks/use-compare-form.ts +187 -0
  218. package/src/hooks/use-data-source-edit.ts +2 -2
  219. package/src/hooks/use-stage.ts +5 -3
  220. package/src/icons/DatasourceIcon.vue +7 -0
  221. package/src/index.ts +12 -0
  222. package/src/initService.ts +26 -16
  223. package/src/layouts/CodeEditor.vue +34 -11
  224. package/src/layouts/Framework.vue +15 -8
  225. package/src/layouts/NavMenu.vue +3 -3
  226. package/src/layouts/history-list/Bucket.vue +33 -41
  227. package/src/layouts/history-list/BucketTab.vue +72 -0
  228. package/src/layouts/history-list/GroupRow.vue +190 -93
  229. package/src/layouts/history-list/HistoryDiffDialog.vue +169 -90
  230. package/src/layouts/history-list/HistoryListPanel.vue +191 -95
  231. package/src/layouts/history-list/InitialRow.vue +38 -8
  232. package/src/layouts/history-list/PageTab.vue +67 -43
  233. package/src/layouts/history-list/composables.ts +239 -125
  234. package/src/layouts/history-list/useHistoryList.ts +60 -0
  235. package/src/layouts/history-list/useHistoryRevert.ts +425 -0
  236. package/src/layouts/page-bar/PageBar.vue +4 -2
  237. package/src/layouts/props-panel/FormPanel.vue +72 -6
  238. package/src/layouts/props-panel/PropsPanel.vue +62 -18
  239. package/src/layouts/props-panel/use-style-panel.ts +4 -3
  240. package/src/layouts/sidebar/ComponentListPanel.vue +10 -6
  241. package/src/layouts/sidebar/Sidebar.vue +13 -6
  242. package/src/layouts/sidebar/code-block/CodeBlockList.vue +5 -5
  243. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +5 -2
  244. package/src/layouts/sidebar/code-block/useContentMenu.ts +14 -2
  245. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +34 -2
  246. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +29 -4
  247. package/src/layouts/sidebar/data-source/useContentMenu.ts +14 -2
  248. package/src/layouts/sidebar/layer/LayerMenu.vue +21 -13
  249. package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
  250. package/src/layouts/sidebar/layer/LayerNodeTool.vue +7 -4
  251. package/src/layouts/sidebar/layer/LayerPanel.vue +4 -1
  252. package/src/layouts/sidebar/layer/use-click.ts +3 -3
  253. package/src/layouts/sidebar/layer/use-node-status.ts +2 -2
  254. package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
  255. package/src/layouts/workspace/viewer/Stage.vue +1 -1
  256. package/src/layouts/workspace/viewer/ViewerMenu.vue +15 -15
  257. package/src/plugin.ts +6 -3
  258. package/src/services/codeBlock.ts +152 -47
  259. package/src/services/dataSource.ts +120 -41
  260. package/src/services/dep.ts +292 -47
  261. package/src/services/editor.ts +820 -224
  262. package/src/services/events.ts +3 -3
  263. package/src/services/history.ts +449 -412
  264. package/src/services/keybinding.ts +6 -6
  265. package/src/services/ui.ts +33 -5
  266. package/src/theme/code-block.scss +37 -0
  267. package/src/theme/common/var.scss +1 -1
  268. package/src/theme/component-list-panel.scss +2 -2
  269. package/src/theme/data-source-field.scss +4 -0
  270. package/src/theme/display-conds.scss +11 -0
  271. package/src/theme/event.scss +70 -1
  272. package/src/theme/floating-box.scss +9 -1
  273. package/src/theme/framework.scss +4 -1
  274. package/src/theme/history-list-panel.scss +157 -23
  275. package/src/theme/layer-node-content.scss +14 -0
  276. package/src/theme/nav-menu.scss +5 -1
  277. package/src/theme/page-bar.scss +0 -4
  278. package/src/theme/props-panel.scss +5 -4
  279. package/src/theme/scroll-bar.scss +64 -0
  280. package/src/theme/style-setter/border.scss +17 -5
  281. package/src/theme/theme.scss +4 -0
  282. package/src/theme/themes/magic-admin/index.scss +214 -0
  283. package/src/theme/ui-select.scss +9 -0
  284. package/src/type.ts +668 -124
  285. package/src/utils/config.ts +9 -1
  286. package/src/utils/const.ts +3 -2
  287. package/src/utils/content-menu.ts +20 -11
  288. package/src/utils/data-source/index.ts +32 -12
  289. package/src/utils/dep/collect-worker-client.ts +149 -0
  290. package/src/utils/dep/idle-task.ts +104 -35
  291. package/src/utils/dep/worker.ts +113 -9
  292. package/src/utils/editor.ts +166 -60
  293. package/src/utils/event.ts +237 -0
  294. package/src/utils/history.ts +286 -0
  295. package/src/utils/index.ts +4 -0
  296. package/src/utils/indexed-db.ts +122 -0
  297. package/src/utils/monaco-editor.ts +27 -0
  298. package/src/utils/operator.ts +2 -2
  299. package/src/utils/props.ts +114 -11
  300. package/src/utils/type-match-rules.ts +684 -0
  301. package/src/utils/undo-redo.ts +88 -0
  302. package/types/index.d.ts +1990 -517
  303. package/dist/es/layouts/history-list/CodeBlockTab.js +0 -5
  304. package/dist/es/layouts/history-list/CodeBlockTab.vue_vue_type_script_setup_true_lang.js +0 -62
  305. package/dist/es/layouts/history-list/DataSourceTab.js +0 -5
  306. package/dist/es/layouts/history-list/DataSourceTab.vue_vue_type_script_setup_true_lang.js +0 -62
  307. package/src/layouts/history-list/CodeBlockTab.vue +0 -61
  308. package/src/layouts/history-list/DataSourceTab.vue +0 -61
@@ -1,14 +1,13 @@
1
1
  import { useServices } from "../../hooks/use-services.js";
2
2
  import Icon_default from "../../components/Icon.js";
3
+ import DatasourceIcon_default from "../../icons/DatasourceIcon.js";
3
4
  import FieldSelect_default from "./FieldSelect.js";
4
5
  import { getFormField } from "@tmagic/form";
5
6
  import { TMagicButton, TMagicTooltip, tMagicMessage } from "@tmagic/design";
6
7
  import { DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, removeDataSourceFieldPrefix } from "@tmagic/utils";
7
- import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, ref, resolveComponent, resolveDynamicComponent, unref, watch, withCtx } from "vue";
8
- import { Coin } from "@element-plus/icons-vue";
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 _hoisted_1 = { class: "m-fields-data-source-field-select" };
11
- 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({
12
11
  name: "MFieldsDataSourceFieldSelect",
13
12
  __name: "Index",
14
13
  props: {
@@ -24,13 +23,17 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
24
23
  },
25
24
  size: {},
26
25
  lastValues: {},
27
- isCompare: { type: Boolean }
26
+ isCompare: { type: Boolean },
27
+ text: {},
28
+ labelWidth: {},
29
+ labelPosition: {}
28
30
  },
29
31
  emits: ["change"],
30
32
  setup(__props, { emit: __emit }) {
31
33
  const emit = __emit;
32
34
  const props = __props;
33
35
  const showDataSourceFieldSelect = ref(false);
36
+ const isSelectValid = computed(() => !disabledDataSource.value && (showDataSourceFieldSelect.value || !props.config.fieldConfig));
34
37
  watch(() => props.model[props.name], (value) => {
35
38
  if (Array.isArray(value) && typeof value[0] === "string" && value[0].startsWith(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX)) showDataSourceFieldSelect.value = true;
36
39
  else showDataSourceFieldSelect.value = false;
@@ -100,7 +103,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
100
103
  showDataSourceFieldSelect.value = !showDataSourceFieldSelect.value;
101
104
  };
102
105
  return (_ctx, _cache) => {
103
- return openBlock(), createElementBlock("div", _hoisted_1, [!disabledDataSource.value && (showDataSourceFieldSelect.value || !__props.config.fieldConfig) ? (openBlock(), createBlock(FieldSelect_default, {
106
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["m-fields-data-source-field-select", { [`data-source-field-${type.value}`]: !isSelectValid.value }]) }, [isSelectValid.value ? (openBlock(), createBlock(FieldSelect_default, {
104
107
  key: 0,
105
108
  "model-value": __props.model[__props.name],
106
109
  disabled: __props.disabled,
@@ -151,7 +154,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
151
154
  disabled: __props.disabled,
152
155
  onClick: onToggleDataSourceFieldSelectHandler
153
156
  }, {
154
- default: withCtx(() => [createVNode(Icon_default, { icon: unref(Coin) }, null, 8, ["icon"])]),
157
+ default: withCtx(() => [createVNode(Icon_default, { icon: DatasourceIcon_default })]),
155
158
  _: 1
156
159
  }, 8, [
157
160
  "type",
@@ -159,7 +162,7 @@ var Index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
159
162
  "disabled"
160
163
  ])]),
161
164
  _: 1
162
- }, 8, ["disabled"])) : createCommentVNode("v-if", true)]);
165
+ }, 8, ["disabled"])) : createCommentVNode("v-if", true)], 2);
163
166
  };
164
167
  }
165
168
  });
@@ -7,17 +7,17 @@ import { MFormBox } from "@tmagic/form";
7
7
  import { MagicTable } from "@tmagic/table";
8
8
  import { TMagicButton, tMagicMessage, tMagicMessageBox } from "@tmagic/design";
9
9
  import { getDefaultValueFromFields } from "@tmagic/utils";
10
- import { computed, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
10
+ import { computed, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, onMounted, openBlock, provide, ref, unref, useModel, withCtx } from "vue";
11
11
  //#region packages/editor/src/fields/DataSourceFields.vue?vue&type=script&setup=true&lang.ts
12
12
  var _hoisted_1 = { class: "m-editor-data-source-fields" };
13
13
  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: {},
@@ -30,7 +30,10 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
30
30
  },
31
31
  size: {},
32
32
  lastValues: {},
33
- isCompare: { type: Boolean }
33
+ isCompare: { type: Boolean },
34
+ text: {},
35
+ labelWidth: {},
36
+ labelPosition: {}
34
37
  }, {
35
38
  "width": { default: 670 },
36
39
  "widthModifiers": {},
@@ -45,7 +48,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
45
48
  },
46
49
  "visible1Modifiers": {}
47
50
  }),
48
- emits: /* @__PURE__ */ mergeModels(["change"], [
51
+ emits: /*@__PURE__*/ mergeModels(["change"], [
49
52
  "update:width",
50
53
  "update:visible",
51
54
  "update:visible1"
@@ -66,6 +69,15 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
66
69
  calcBoxPosition();
67
70
  addDialogVisible.value = true;
68
71
  };
72
+ const editField = (row, index) => {
73
+ fieldValues.value = {
74
+ ...row,
75
+ index
76
+ };
77
+ fieldTitle.value = `编辑${row.title}`;
78
+ calcBoxPosition();
79
+ addDialogVisible.value = true;
80
+ };
69
81
  const fieldChange = ({ index, ...value }, data) => {
70
82
  addDialogVisible.value = false;
71
83
  if (index > -1) emit("change", value, {
@@ -117,13 +129,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
117
129
  actions: [{
118
130
  text: "编辑",
119
131
  handler: (row, index) => {
120
- fieldValues.value = {
121
- ...row,
122
- index
123
- };
124
- fieldTitle.value = `编辑${row.title}`;
125
- calcBoxPosition();
126
- addDialogVisible.value = true;
132
+ editField(row, index);
127
133
  }
128
134
  }, {
129
135
  text: "删除",
@@ -310,6 +316,21 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
310
316
  const addFromJsonDialogVisible = useModel(__props, "visible1");
311
317
  const { height: editorHeight } = useEditorContentHeight();
312
318
  const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
319
+ const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
320
+ /**
321
+ * 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的字段路径(字段名数组)。
322
+ * 当前层消费 path[0],并把剩余路径下发给嵌套字段,实现逐层打开。
323
+ */
324
+ const editingFieldPath = inject("editingDataSourceFieldPath", computed(() => []));
325
+ provide("editingDataSourceFieldPath", computed(() => editingFieldPath.value.slice(1)));
326
+ onMounted(() => {
327
+ const path = editingFieldPath.value;
328
+ if (!path.length) return;
329
+ const fields = props.model[props.name] || [];
330
+ const index = fields.findIndex((field) => field.name === path[0]);
331
+ if (index === -1) return;
332
+ editField(fields[index], index);
333
+ });
313
334
  return (_ctx, _cache) => {
314
335
  return openBlock(), createElementBlock("div", _hoisted_1, [
315
336
  createVNode(unref(MagicTable), {
@@ -336,6 +357,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
336
357
  _: 1
337
358
  }, 8, ["disabled"])])) : createCommentVNode("v-if", true),
338
359
  createVNode(FloatingBox_default, {
360
+ "body-style": { padding: "0 16px" },
339
361
  visible: addDialogVisible.value,
340
362
  "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => addDialogVisible.value = $event),
341
363
  width: width.value,
@@ -343,6 +365,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
343
365
  height: unref(editorHeight),
344
366
  "onUpdate:height": _cache[4] || (_cache[4] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
345
367
  title: fieldTitle.value,
368
+ "framework-width": frameworkWidth.value,
346
369
  position: unref(boxPosition)
347
370
  }, {
348
371
  body: withCtx(() => [createVNode(unref(MFormBox), {
@@ -365,9 +388,11 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
365
388
  "width",
366
389
  "height",
367
390
  "title",
391
+ "framework-width",
368
392
  "position"
369
393
  ]),
370
394
  createVNode(FloatingBox_default, {
395
+ "body-style": { padding: "0 16px" },
371
396
  visible: addFromJsonDialogVisible.value,
372
397
  "onUpdate:visible": _cache[5] || (_cache[5] = ($event) => addFromJsonDialogVisible.value = $event),
373
398
  width: width.value,
@@ -375,6 +400,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
375
400
  height: unref(editorHeight),
376
401
  "onUpdate:height": _cache[7] || (_cache[7] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
377
402
  title: "快速添加数据定义",
403
+ "framework-width": frameworkWidth.value,
378
404
  position: unref(boxPosition)
379
405
  }, {
380
406
  body: withCtx(() => [createVNode(unref(MFormBox), {
@@ -388,6 +414,7 @@ var DataSourceFields_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
388
414
  "visible",
389
415
  "width",
390
416
  "height",
417
+ "framework-width",
391
418
  "position"
392
419
  ])
393
420
  ]);
@@ -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: {
@@ -31,7 +31,10 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
31
31
  },
32
32
  size: {},
33
33
  lastValues: {},
34
- isCompare: { type: Boolean }
34
+ isCompare: { type: Boolean },
35
+ text: {},
36
+ labelWidth: {},
37
+ labelPosition: {}
35
38
  },
36
39
  emits: ["change"],
37
40
  setup(__props, { emit: __emit }) {
@@ -132,23 +135,11 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
132
135
  cb([]);
133
136
  return;
134
137
  }
135
- let fields = ds.fields || [];
136
- let key = keys.shift();
137
- while (key) {
138
- if (isNumber(key)) {
139
- key = keys.shift();
140
- continue;
141
- }
142
- for (const field of fields) if (field.name === key) {
143
- fields = field.fields || [];
144
- key = keys.shift();
145
- break;
146
- }
147
- }
148
- if (curCharIsDot(dotIndex)) result = fields || [];
138
+ const { fields } = resolveFieldByPath(ds.fields, keys, { skipNumberIndices: true });
139
+ if (curCharIsDot(dotIndex)) result = fields;
149
140
  else if (dotIndex > -1) {
150
141
  const queryName = queryString.substring(dotIndex + 1).toLowerCase();
151
- result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName)) || [];
142
+ result = fields.filter((field) => field.name?.toLowerCase().includes(queryName) || field.title?.toLowerCase().includes(queryName));
152
143
  }
153
144
  cb(result.map((field) => ({
154
145
  value: field.name,
@@ -227,7 +218,7 @@ var DataSourceInput_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
227
218
  onSelect: selectHandler
228
219
  }), {
229
220
  suffix: withCtx(() => [createVNode(Icon_default, { icon: unref(Coin) }, null, 8, ["icon"])]),
230
- default: withCtx(({ item }) => [createElementVNode("div", _hoisted_1, [createElementVNode("div", null, toDisplayString(item.text), 1), createElementVNode("span", _hoisted_2, toDisplayString(item.value), 1)])]),
221
+ default: withCtx((slotProps) => [createElementVNode("div", _hoisted_1, [createElementVNode("div", null, toDisplayString(slotProps?.item?.text || ""), 1), createElementVNode("span", _hoisted_2, toDisplayString(slotProps?.item?.value || ""), 1)])]),
231
222
  _: 1
232
223
  }, 16, ["modelValue"])) : (openBlock(), createElementBlock("div", {
233
224
  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: {
@@ -27,7 +27,10 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
27
27
  },
28
28
  size: {},
29
29
  lastValues: {},
30
- isCompare: { type: Boolean }
30
+ isCompare: { type: Boolean },
31
+ text: {},
32
+ labelWidth: {},
33
+ labelPosition: {}
31
34
  },
32
35
  emits: ["change"],
33
36
  setup(__props, { emit: __emit }) {
@@ -36,7 +39,7 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
36
39
  const eventBus = inject("eventBus");
37
40
  const emit = __emit;
38
41
  const props = __props;
39
- const hasDataSourceSidePanel = computed(() => (uiService.get("sideBarItems") || []).find((item) => item.$key === SideItemKey.DATA_SOURCE));
42
+ const dataSourceSidePanel = computed(() => (uiService.get("sideBarItems") || []).find((item) => item.$key === SideItemKey.DATA_SOURCE));
40
43
  const notEditable = computed(() => filterFunction(mForm, props.config.notEditable, props));
41
44
  /** 对比模式下隐藏查看/编辑操作按钮,仅保留只读展示。 */
42
45
  const isCompare = computed(() => Boolean(mForm?.isCompare));
@@ -124,9 +127,11 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
124
127
  emit("change", props.model[props.name], eventData);
125
128
  };
126
129
  const editCodeHandler = () => {
127
- const [id] = props.model[props.name];
130
+ const [id, methodName] = props.model[props.name];
128
131
  if (!dataSourceService.getDataSourceById(id)) return;
129
- eventBus?.emit("edit-data-source", id);
132
+ const sideBarItem = dataSourceSidePanel.value;
133
+ if (sideBarItem) uiService.set("sideBarActiveTabName", sideBarItem.text || sideBarItem.$key || SideItemKey.DATA_SOURCE);
134
+ eventBus?.emit("edit-data-source-method", id, methodName);
130
135
  };
131
136
  return (_ctx, _cache) => {
132
137
  return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [createVNode(unref(MCascader), {
@@ -145,7 +150,7 @@ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default
145
150
  "size",
146
151
  "disabled",
147
152
  "prop"
148
- ]), __props.model[__props.name] && isCustomMethod.value && hasDataSourceSidePanel.value && !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
153
+ ]), __props.model[__props.name] && isCustomMethod.value && dataSourceSidePanel.value && !isCompare.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
149
154
  key: 0,
150
155
  content: notEditable.value ? "查看" : "编辑"
151
156
  }, {
@@ -1,7 +1,7 @@
1
1
  import CodeBlockEditor_default from "../components/CodeBlockEditor.js";
2
2
  import { MagicTable } from "@tmagic/table";
3
3
  import { TMagicButton, tMagicMessageBox } from "@tmagic/design";
4
- import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, nextTick, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
4
+ import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, nextTick, onMounted, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
5
5
  import { cloneDeep } from "lodash-es";
6
6
  //#region packages/editor/src/fields/DataSourceMethods.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = { class: "m-editor-data-source-methods" };
@@ -9,7 +9,7 @@ var _hoisted_2 = {
9
9
  key: 0,
10
10
  class: "m-editor-data-source-methods-footer"
11
11
  };
12
- var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
13
  name: "MFieldsDataSourceMethods",
14
14
  __name: "DataSourceMethods",
15
15
  props: {
@@ -25,7 +25,10 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
25
25
  },
26
26
  size: {},
27
27
  lastValues: {},
28
- isCompare: { type: Boolean }
28
+ isCompare: { type: Boolean },
29
+ text: {},
30
+ labelWidth: {},
31
+ labelPosition: {}
29
32
  },
30
33
  emits: ["change"],
31
34
  setup(__props, { emit: __emit }) {
@@ -37,6 +40,19 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
37
40
  const codeConfig = ref();
38
41
  const codeBlockEditorRef = useTemplateRef("codeBlockEditor");
39
42
  let editIndex = -1;
43
+ const editMethod = (method, index) => {
44
+ let codeContent = "({ params, dataSource, app }) => {\n // place your code here\n}";
45
+ if (method.content) if (typeof method.content !== "string") codeContent = method.content.toString();
46
+ else codeContent = method.content;
47
+ codeConfig.value = {
48
+ ...cloneDeep(method),
49
+ content: codeContent
50
+ };
51
+ editIndex = index;
52
+ nextTick(() => {
53
+ codeBlockEditorRef.value?.show();
54
+ });
55
+ };
40
56
  const methodColumns = [
41
57
  {
42
58
  label: "名称",
@@ -61,17 +77,7 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
61
77
  actions: [{
62
78
  text: "编辑",
63
79
  handler: (method, index) => {
64
- let codeContent = "({ params, dataSource, app }) => {\n // place your code here\n}";
65
- if (method.content) if (typeof method.content !== "string") codeContent = method.content.toString();
66
- else codeContent = method.content;
67
- codeConfig.value = {
68
- ...cloneDeep(method),
69
- content: codeContent
70
- };
71
- editIndex = index;
72
- nextTick(() => {
73
- codeBlockEditorRef.value?.show();
74
- });
80
+ editMethod(method, index);
75
81
  }
76
82
  }, {
77
83
  text: "删除",
@@ -119,6 +125,16 @@ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
119
125
  codeConfig.value = void 0;
120
126
  codeBlockEditorRef.value?.hide();
121
127
  };
128
+ /** 由 DataSourceConfigPanel 注入:打开数据源详情后需要直接打开的方法名 */
129
+ const editingMethodName = inject("editingDataSourceMethodName", computed(() => ""));
130
+ onMounted(() => {
131
+ const methodName = editingMethodName.value;
132
+ if (!methodName) return;
133
+ const methods = props.model[props.name] || [];
134
+ const index = methods.findIndex((method) => method.name === methodName);
135
+ if (index === -1) return;
136
+ editMethod(methods[index], index);
137
+ });
122
138
  return (_ctx, _cache) => {
123
139
  return openBlock(), createElementBlock("div", _hoisted_1, [
124
140
  createVNode(unref(MagicTable), {
@@ -14,10 +14,10 @@ var _hoisted_2 = {
14
14
  key: 0,
15
15
  class: "m-editor-data-source-fields-footer"
16
16
  };
17
- var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
18
18
  name: "MFieldsDataSourceMocks",
19
19
  __name: "DataSourceMocks",
20
- props: /* @__PURE__ */ mergeModels({
20
+ props: /*@__PURE__*/ mergeModels({
21
21
  config: {},
22
22
  model: {},
23
23
  initValues: {},
@@ -30,7 +30,10 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
30
30
  },
31
31
  size: {},
32
32
  lastValues: {},
33
- isCompare: { type: Boolean }
33
+ isCompare: { type: Boolean },
34
+ text: {},
35
+ labelWidth: {},
36
+ labelPosition: {}
34
37
  }, {
35
38
  "width": { default: 670 },
36
39
  "widthModifiers": {},
@@ -40,7 +43,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
40
43
  },
41
44
  "visibleModifiers": {}
42
45
  }),
43
- emits: /* @__PURE__ */ mergeModels(["change"], ["update:width", "update:visible"]),
46
+ emits: /*@__PURE__*/ mergeModels(["change"], ["update:width", "update:visible"]),
44
47
  setup(__props, { emit: __emit }) {
45
48
  const props = __props;
46
49
  const emit = __emit;
@@ -213,6 +216,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
213
216
  const addDialogVisible = useModel(__props, "visible");
214
217
  const { height: editorHeight } = useEditorContentHeight();
215
218
  const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
219
+ const frameworkWidth = computed(() => uiService.get("frameworkRect")?.width || 0);
216
220
  return (_ctx, _cache) => {
217
221
  return openBlock(), createElementBlock("div", _hoisted_1, [
218
222
  createVNode(unref(MagicTable), {
@@ -230,6 +234,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
230
234
  _: 1
231
235
  }, 8, ["disabled"])])) : createCommentVNode("v-if", true),
232
236
  createVNode(FloatingBox_default, {
237
+ "body-style": { padding: "0 16px" },
233
238
  visible: addDialogVisible.value,
234
239
  "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => addDialogVisible.value = $event),
235
240
  width: width.value,
@@ -237,6 +242,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
237
242
  height: unref(editorHeight),
238
243
  "onUpdate:height": _cache[3] || (_cache[3] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
239
244
  title: drawerTitle.value,
245
+ "framework-width": frameworkWidth.value,
240
246
  position: unref(boxPosition)
241
247
  }, {
242
248
  body: withCtx(() => [createVNode(unref(MFormBox), {
@@ -257,6 +263,7 @@ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
257
263
  "width",
258
264
  "height",
259
265
  "title",
266
+ "framework-width",
260
267
  "position"
261
268
  ])
262
269
  ]);
@@ -7,7 +7,7 @@ import { computed, createBlock, createCommentVNode, createElementBlock, createVN
7
7
  import { Edit, View } from "@element-plus/icons-vue";
8
8
  //#region packages/editor/src/fields/DataSourceSelect.vue?vue&type=script&setup=true&lang.ts
9
9
  var _hoisted_1 = { class: "m-fields-data-source-select" };
10
- var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
11
11
  name: "MFieldsDataSourceSelect",
12
12
  __name: "DataSourceSelect",
13
13
  props: {
@@ -23,7 +23,10 @@ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
23
23
  },
24
24
  size: {},
25
25
  lastValues: {},
26
- isCompare: { type: Boolean }
26
+ isCompare: { type: Boolean },
27
+ text: {},
28
+ labelWidth: {},
29
+ labelPosition: {}
27
30
  },
28
31
  emits: ["change"],
29
32
  setup(__props, { emit: __emit }) {
@@ -3,7 +3,7 @@ import { getCascaderOptionsFromFields, getFieldType } from "../utils/data-source
3
3
  import { MGroupList, filterFunction } from "@tmagic/form";
4
4
  import { computed, createBlock, defineComponent, inject, openBlock, unref } from "vue";
5
5
  //#region packages/editor/src/fields/DisplayConds.vue?vue&type=script&setup=true&lang.ts
6
- var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
7
  name: "m-fields-display-conds",
8
8
  __name: "DisplayConds",
9
9
  props: {
@@ -19,7 +19,10 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
19
19
  },
20
20
  size: {},
21
21
  lastValues: {},
22
- isCompare: { type: Boolean }
22
+ isCompare: { type: Boolean },
23
+ text: {},
24
+ labelWidth: {},
25
+ labelPosition: {}
23
26
  },
24
27
  emits: ["change"],
25
28
  setup(__props, { emit: __emit }) {
@@ -43,11 +46,14 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
43
46
  titlePrefix: props.config.titlePrefix,
44
47
  expandAll: true,
45
48
  enableToggleMode: false,
49
+ flat: props.config.flat,
46
50
  items: [{
47
51
  type: "table",
48
52
  name: "cond",
49
- operateColWidth: 80,
53
+ operateColWidth: props.config.operateColWidth,
50
54
  enableToggleMode: false,
55
+ fixed: props.config.fixed,
56
+ flat: props.config.flat,
51
57
  items: [
52
58
  parentFields.value.length ? {
53
59
  type: "cascader",
@@ -70,7 +76,16 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
70
76
  value: "key",
71
77
  label: "字段",
72
78
  checkStrictly: false,
73
- onChange: fieldOnChange
79
+ onChange: fieldOnChange,
80
+ defaultValue: () => [],
81
+ rules: [{
82
+ required: true,
83
+ trigger: "blur",
84
+ message: "请选择字段"
85
+ }, {
86
+ typeMatch: true,
87
+ trigger: "change"
88
+ }]
74
89
  } : {
75
90
  type: "data-source-field-select",
76
91
  name: "field",
@@ -83,14 +98,31 @@ var DisplayConds_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
83
98
  "boolean",
84
99
  "any"
85
100
  ],
86
- onChange: fieldOnChange
101
+ onChange: fieldOnChange,
102
+ defaultValue: () => [],
103
+ rules: [{
104
+ required: true,
105
+ trigger: "blur",
106
+ message: "请选择字段"
107
+ }, {
108
+ typeMatch: true,
109
+ trigger: "change"
110
+ }]
87
111
  },
88
112
  {
89
113
  type: "cond-op-select",
90
114
  parentFields: parentFields.value,
91
115
  label: "条件",
92
116
  width: 140,
93
- name: "op"
117
+ name: "op",
118
+ rules: [{
119
+ required: true,
120
+ trigger: "blur",
121
+ message: "请选择条件"
122
+ }, {
123
+ typeMatch: true,
124
+ trigger: "change"
125
+ }]
94
126
  },
95
127
  {
96
128
  label: "值",