@tmagic/editor 1.7.6 → 1.7.8-beta.1

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 (238) hide show
  1. package/LICENSE +235 -164
  2. package/dist/es/Editor.js +5 -0
  3. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +214 -0
  4. package/dist/es/_virtual/_plugin-vue_export-helper.js +8 -0
  5. package/dist/es/components/CodeBlockEditor.js +5 -0
  6. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +337 -0
  7. package/dist/es/components/CodeParams.js +5 -0
  8. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +63 -0
  9. package/dist/es/components/ContentMenu.js +5 -0
  10. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +160 -0
  11. package/dist/es/components/FloatingBox.js +5 -0
  12. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +161 -0
  13. package/dist/es/components/Icon.js +5 -0
  14. package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +39 -0
  15. package/dist/es/components/Resizer.js +5 -0
  16. package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +20 -0
  17. package/dist/es/components/ScrollBar.js +6 -0
  18. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +72 -0
  19. package/dist/es/components/ScrollViewer.js +5 -0
  20. package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +104 -0
  21. package/dist/es/components/SearchInput.js +5 -0
  22. package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +40 -0
  23. package/dist/es/components/SplitView.js +5 -0
  24. package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +135 -0
  25. package/dist/es/components/ToolButton.js +5 -0
  26. package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +131 -0
  27. package/dist/es/components/Tree.js +5 -0
  28. package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +60 -0
  29. package/dist/es/components/TreeNode.js +5 -0
  30. package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +126 -0
  31. package/dist/es/editorProps.js +34 -0
  32. package/dist/es/fields/Code.js +5 -0
  33. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +54 -0
  34. package/dist/es/fields/CodeLink.js +5 -0
  35. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +69 -0
  36. package/dist/es/fields/CodeSelect.js +5 -0
  37. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +116 -0
  38. package/dist/es/fields/CodeSelectCol.js +5 -0
  39. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +145 -0
  40. package/dist/es/fields/CondOpSelect.js +5 -0
  41. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +81 -0
  42. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.js +5 -0
  43. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +158 -0
  44. package/dist/es/fields/DataSourceFieldSelect/Index.js +5 -0
  45. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +155 -0
  46. package/dist/es/fields/DataSourceFields.js +5 -0
  47. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +390 -0
  48. package/dist/es/fields/DataSourceInput.js +5 -0
  49. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +268 -0
  50. package/dist/es/fields/DataSourceMethodSelect.js +5 -0
  51. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +144 -0
  52. package/dist/es/fields/DataSourceMethods.js +5 -0
  53. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +148 -0
  54. package/dist/es/fields/DataSourceMocks.js +5 -0
  55. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +259 -0
  56. package/dist/es/fields/DataSourceSelect.js +5 -0
  57. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +101 -0
  58. package/dist/es/fields/DisplayConds.js +5 -0
  59. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +156 -0
  60. package/dist/es/fields/EventSelect.js +5 -0
  61. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +338 -0
  62. package/dist/es/fields/KeyValue.js +5 -0
  63. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +158 -0
  64. package/dist/es/fields/PageFragmentSelect.js +5 -0
  65. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +81 -0
  66. package/dist/es/fields/StyleSetter/Index.js +5 -0
  67. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +92 -0
  68. package/dist/es/fields/StyleSetter/components/BackgroundPosition.js +5 -0
  69. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +96 -0
  70. package/dist/es/fields/StyleSetter/components/Border.js +5 -0
  71. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +100 -0
  72. package/dist/es/fields/StyleSetter/components/Box.js +5 -0
  73. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +81 -0
  74. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +17 -0
  75. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +14 -0
  76. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +17 -0
  77. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +17 -0
  78. package/dist/es/fields/StyleSetter/icons/display/Block.js +14 -0
  79. package/dist/es/fields/StyleSetter/icons/display/Flex.js +14 -0
  80. package/dist/es/fields/StyleSetter/icons/display/Inline.js +14 -0
  81. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +14 -0
  82. package/dist/es/fields/StyleSetter/icons/display/None.js +14 -0
  83. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +14 -0
  84. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +14 -0
  85. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +14 -0
  86. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +14 -0
  87. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +14 -0
  88. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +14 -0
  89. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +14 -0
  90. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +14 -0
  91. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +14 -0
  92. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +14 -0
  93. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +14 -0
  94. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +14 -0
  95. package/dist/es/fields/StyleSetter/pro/Background.js +5 -0
  96. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +114 -0
  97. package/dist/es/fields/StyleSetter/pro/Border.js +5 -0
  98. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +50 -0
  99. package/dist/es/fields/StyleSetter/pro/Font.js +5 -0
  100. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +98 -0
  101. package/dist/es/fields/StyleSetter/pro/Layout.js +5 -0
  102. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +287 -0
  103. package/dist/es/fields/StyleSetter/pro/Position.js +5 -0
  104. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +95 -0
  105. package/dist/es/fields/UISelect.js +6 -0
  106. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +161 -0
  107. package/dist/es/hooks/use-code-block-edit.js +54 -0
  108. package/dist/es/hooks/use-data-source-edit.js +29 -0
  109. package/dist/es/hooks/use-editor-content-height.js +17 -0
  110. package/dist/es/hooks/use-filter.js +35 -0
  111. package/dist/es/hooks/use-float-box.js +76 -0
  112. package/dist/es/hooks/use-getso.js +28 -0
  113. package/dist/es/hooks/use-next-float-box-position.js +27 -0
  114. package/dist/es/hooks/use-node-status.js +28 -0
  115. package/dist/es/hooks/use-services.js +9 -0
  116. package/dist/es/hooks/use-stage.js +107 -0
  117. package/dist/es/hooks/use-window-rect.js +19 -0
  118. package/dist/es/icons/CenterIcon.js +5 -0
  119. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +40 -0
  120. package/dist/es/icons/CodeIcon.js +5 -0
  121. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +19 -0
  122. package/dist/es/icons/FolderMinusIcon.js +5 -0
  123. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +27 -0
  124. package/dist/es/index.js +79 -0
  125. package/dist/es/initService.js +392 -0
  126. package/dist/es/layouts/AddPageBox.js +5 -0
  127. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +38 -0
  128. package/dist/es/layouts/CodeEditor.js +5 -0
  129. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +270 -0
  130. package/dist/es/layouts/Framework.js +5 -0
  131. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +134 -0
  132. package/dist/es/layouts/NavMenu.js +5 -0
  133. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +181 -0
  134. package/dist/es/layouts/page-bar/AddButton.js +5 -0
  135. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +57 -0
  136. package/dist/es/layouts/page-bar/PageBar.js +5 -0
  137. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +135 -0
  138. package/dist/es/layouts/page-bar/PageBarScrollContainer.js +5 -0
  139. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +119 -0
  140. package/dist/es/layouts/page-bar/PageList.js +5 -0
  141. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +54 -0
  142. package/dist/es/layouts/page-bar/Search.js +5 -0
  143. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +60 -0
  144. package/dist/es/layouts/props-panel/FormPanel.js +5 -0
  145. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +129 -0
  146. package/dist/es/layouts/props-panel/PropsPanel.js +5 -0
  147. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +179 -0
  148. package/dist/es/layouts/props-panel/use-style-panel.js +40 -0
  149. package/dist/es/layouts/sidebar/ComponentListPanel.js +5 -0
  150. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +121 -0
  151. package/dist/es/layouts/sidebar/Sidebar.js +5 -0
  152. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +314 -0
  153. package/dist/es/layouts/sidebar/code-block/CodeBlockList.js +5 -0
  154. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +161 -0
  155. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.js +5 -0
  156. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +113 -0
  157. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +60 -0
  158. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.js +5 -0
  159. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +44 -0
  160. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.js +5 -0
  161. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +103 -0
  162. package/dist/es/layouts/sidebar/data-source/DataSourceList.js +5 -0
  163. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +162 -0
  164. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.js +5 -0
  165. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +133 -0
  166. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +59 -0
  167. package/dist/es/layouts/sidebar/layer/LayerMenu.js +5 -0
  168. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +90 -0
  169. package/dist/es/layouts/sidebar/layer/LayerNodeTool.js +5 -0
  170. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +35 -0
  171. package/dist/es/layouts/sidebar/layer/LayerPanel.js +5 -0
  172. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +99 -0
  173. package/dist/es/layouts/sidebar/layer/use-click.js +68 -0
  174. package/dist/es/layouts/sidebar/layer/use-drag.js +118 -0
  175. package/dist/es/layouts/sidebar/layer/use-keybinding.js +36 -0
  176. package/dist/es/layouts/sidebar/layer/use-node-status.js +75 -0
  177. package/dist/es/layouts/workspace/Breadcrumb.js +5 -0
  178. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +39 -0
  179. package/dist/es/layouts/workspace/Workspace.js +5 -0
  180. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +43 -0
  181. package/dist/es/layouts/workspace/viewer/NodeListMenu.js +5 -0
  182. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +88 -0
  183. package/dist/es/layouts/workspace/viewer/Stage.js +5 -0
  184. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +206 -0
  185. package/dist/es/layouts/workspace/viewer/StageOverlay.js +5 -0
  186. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +89 -0
  187. package/dist/es/layouts/workspace/viewer/ViewerMenu.js +5 -0
  188. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +132 -0
  189. package/dist/es/plugin.js +61 -0
  190. package/dist/es/services/BaseService.js +148 -0
  191. package/dist/es/services/codeBlock.js +251 -0
  192. package/dist/es/services/componentList.js +29 -0
  193. package/dist/es/services/dataSource.js +157 -0
  194. package/dist/es/services/dep.js +173 -0
  195. package/dist/es/services/editor.js +752 -0
  196. package/dist/es/services/events.js +64 -0
  197. package/dist/es/services/history.js +84 -0
  198. package/dist/es/services/keybinding.js +182 -0
  199. package/dist/es/services/props.js +215 -0
  200. package/dist/es/services/stageOverlay.js +161 -0
  201. package/dist/es/services/storage.js +127 -0
  202. package/dist/es/services/ui.js +112 -0
  203. package/dist/es/style.css +1937 -0
  204. package/dist/es/type.js +90 -0
  205. package/dist/es/utils/compose.js +44 -0
  206. package/dist/es/utils/config.js +8 -0
  207. package/dist/es/utils/const.js +15 -0
  208. package/dist/es/utils/content-menu.js +76 -0
  209. package/dist/es/utils/data-source/formConfigs/base.js +28 -0
  210. package/dist/es/utils/data-source/formConfigs/http.js +74 -0
  211. package/dist/es/utils/data-source/index.js +201 -0
  212. package/dist/es/utils/dep/idle-task.js +76 -0
  213. package/dist/es/utils/dep/worker.js +19 -0
  214. package/dist/es/utils/editor.js +261 -0
  215. package/dist/es/utils/keybinding-config.js +106 -0
  216. package/dist/es/utils/logger.js +18 -0
  217. package/dist/es/utils/monaco-editor.js +13 -0
  218. package/dist/es/utils/operator.js +73 -0
  219. package/dist/es/utils/props.js +232 -0
  220. package/dist/es/utils/scroll-viewer.js +115 -0
  221. package/dist/es/utils/tree.js +11 -0
  222. package/dist/es/utils/undo-redo.js +43 -0
  223. package/dist/style.css +10 -10
  224. package/dist/tmagic-editor.umd.cjs +18427 -21980
  225. package/package.json +17 -13
  226. package/src/fields/CodeLink.vue +2 -2
  227. package/src/fields/DataSourceFieldSelect/Index.vue +10 -2
  228. package/src/fields/EventSelect.vue +6 -5
  229. package/src/index.ts +1 -73
  230. package/src/layouts/CodeEditor.vue +15 -8
  231. package/src/layouts/Framework.vue +1 -1
  232. package/src/plugin.ts +92 -0
  233. package/src/type.ts +6 -7
  234. package/src/utils/index.ts +1 -0
  235. package/src/utils/monaco-editor.ts +13 -6
  236. package/src/utils/props.ts +2 -0
  237. package/types/index.d.ts +3388 -3342
  238. package/dist/tmagic-editor.js +0 -17037
@@ -0,0 +1,144 @@
1
+ import { SideItemKey } from "../type.js";
2
+ import { useServices } from "../hooks/use-services.js";
3
+ import Icon_default from "../components/Icon.js";
4
+ import CodeParams_default from "../components/CodeParams.js";
5
+ import { MCascader, createValues, filterFunction } from "@tmagic/form";
6
+ import { TMagicButton, TMagicTooltip } from "@tmagic/design";
7
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, unref, withCtx } from "vue";
8
+ import { Edit, View } from "@element-plus/icons-vue";
9
+ //#region packages/editor/src/fields/DataSourceMethodSelect.vue?vue&type=script&setup=true&name=true&lang.ts
10
+ var _hoisted_1 = { class: "m-fields-data-source-method-select" };
11
+ var _hoisted_2 = { class: "data-source-method-select-container" };
12
+ var DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ name: "MFieldsDataSourceMethodSelect",
14
+ __name: "DataSourceMethodSelect",
15
+ props: {
16
+ config: {},
17
+ model: {},
18
+ initValues: {},
19
+ values: {},
20
+ name: {},
21
+ prop: {},
22
+ disabled: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ size: {},
27
+ lastValues: {},
28
+ isCompare: { type: Boolean }
29
+ },
30
+ emits: ["change"],
31
+ setup(__props, { emit: __emit }) {
32
+ const { dataSourceService, uiService } = useServices();
33
+ const mForm = inject("mForm");
34
+ const eventBus = inject("eventBus");
35
+ const emit = __emit;
36
+ const props = __props;
37
+ const hasDataSourceSidePanel = computed(() => (uiService.get("sideBarItems") || []).find((item) => item.$key === SideItemKey.DATA_SOURCE));
38
+ const notEditable = computed(() => filterFunction(mForm, props.config.notEditable, props));
39
+ const dataSources = computed(() => dataSourceService.get("dataSources"));
40
+ const isCustomMethod = computed(() => {
41
+ const [id, name] = props.model[props.name];
42
+ const dataSource = dataSourceService.getDataSourceById(id);
43
+ return Boolean(dataSource?.methods.find((method) => method.name === name));
44
+ });
45
+ const getParamItemsConfig = ([dataSourceId, methodName] = ["", ""]) => {
46
+ if (!dataSourceId) return [];
47
+ const paramStatements = dataSources.value?.find((item) => item.id === dataSourceId)?.methods?.find((item) => item.name === methodName)?.params;
48
+ if (!paramStatements) return [];
49
+ return paramStatements.map((paramState) => ({
50
+ text: paramState.name,
51
+ ...paramState
52
+ }));
53
+ };
54
+ const paramsConfig = ref(getParamItemsConfig(props.model[props.name || "dataSourceMethod"]));
55
+ const methodsOptions = computed(() => dataSources.value?.filter((ds) => ds.methods?.length || dataSourceService.getFormMethod(ds.type).length)?.map((ds) => ({
56
+ label: ds.title || ds.id,
57
+ value: ds.id,
58
+ children: [...dataSourceService?.getFormMethod(ds.type) || [], ...(ds.methods || []).map((method) => ({
59
+ label: method.name,
60
+ value: method.name
61
+ }))]
62
+ })) || []);
63
+ const cascaderConfig = computed(() => ({
64
+ type: "cascader",
65
+ options: methodsOptions.value
66
+ }));
67
+ /**
68
+ * 参数值修改更新
69
+ */
70
+ const onChangeHandler = (value) => {
71
+ paramsConfig.value = getParamItemsConfig(value);
72
+ const changeRecords = [{
73
+ propPath: props.prop,
74
+ value
75
+ }];
76
+ changeRecords.push({
77
+ propPath: props.prop.replace(`${props.name}`, "params"),
78
+ value: paramsConfig.value.length ? createValues(mForm, paramsConfig.value, {}, props.model.params) : {}
79
+ });
80
+ emit("change", value, { changeRecords });
81
+ };
82
+ /**
83
+ * 参数值修改更新
84
+ */
85
+ const onParamsChangeHandler = (value, eventData) => {
86
+ eventData.changeRecords?.forEach((record) => {
87
+ record.propPath = `${props.prop.replace(`${props.name}`, "")}${record.propPath}`;
88
+ });
89
+ emit("change", props.model[props.name], eventData);
90
+ };
91
+ const editCodeHandler = () => {
92
+ const [id] = props.model[props.name];
93
+ if (!dataSourceService.getDataSourceById(id)) return;
94
+ eventBus?.emit("edit-data-source", id);
95
+ };
96
+ return (_ctx, _cache) => {
97
+ return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [createVNode(unref(MCascader), {
98
+ class: "select",
99
+ config: cascaderConfig.value,
100
+ model: __props.model,
101
+ name: __props.name,
102
+ size: __props.size,
103
+ disabled: __props.disabled,
104
+ prop: __props.prop,
105
+ onChange: onChangeHandler
106
+ }, null, 8, [
107
+ "config",
108
+ "model",
109
+ "name",
110
+ "size",
111
+ "disabled",
112
+ "prop"
113
+ ]), __props.model[__props.name] && isCustomMethod.value && hasDataSourceSidePanel.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
114
+ key: 0,
115
+ content: notEditable.value ? "查看" : "编辑"
116
+ }, {
117
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
118
+ class: "m-fields-select-action-button",
119
+ size: __props.size,
120
+ onClick: editCodeHandler
121
+ }, {
122
+ default: withCtx(() => [createVNode(Icon_default, { icon: !notEditable.value ? unref(Edit) : unref(View) }, null, 8, ["icon"])]),
123
+ _: 1
124
+ }, 8, ["size"])]),
125
+ _: 1
126
+ }, 8, ["content"])) : createCommentVNode("v-if", true)]), paramsConfig.value.length ? (openBlock(), createBlock(CodeParams_default, {
127
+ name: "params",
128
+ key: __props.model[__props.name],
129
+ model: __props.model,
130
+ size: __props.size,
131
+ disabled: __props.disabled,
132
+ "params-config": paramsConfig.value,
133
+ onChange: onParamsChangeHandler
134
+ }, null, 8, [
135
+ "model",
136
+ "size",
137
+ "disabled",
138
+ "params-config"
139
+ ])) : createCommentVNode("v-if", true)]);
140
+ };
141
+ }
142
+ });
143
+ //#endregion
144
+ export { DataSourceMethodSelect_vue_vue_type_script_setup_true_name_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DataSourceMethods_vue_vue_type_script_setup_true_lang_default from "./DataSourceMethods.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/DataSourceMethods.vue
3
+ var DataSourceMethods_default = DataSourceMethods_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DataSourceMethods_default as default };
@@ -0,0 +1,148 @@
1
+ import CodeBlockEditor_default from "../components/CodeBlockEditor.js";
2
+ import { MagicTable } from "@tmagic/table";
3
+ import { TMagicButton, tMagicMessageBox } from "@tmagic/design";
4
+ import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, useTemplateRef, withCtx } from "vue";
5
+ import { cloneDeep } from "lodash-es";
6
+ //#region packages/editor/src/fields/DataSourceMethods.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = { class: "m-editor-data-source-methods" };
8
+ var _hoisted_2 = { class: "m-editor-data-source-methods-footer" };
9
+ var DataSourceMethods_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ name: "MFieldsDataSourceMethods",
11
+ __name: "DataSourceMethods",
12
+ props: {
13
+ config: {},
14
+ model: {},
15
+ initValues: {},
16
+ values: {},
17
+ name: {},
18
+ prop: {},
19
+ disabled: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ size: {},
24
+ lastValues: {},
25
+ isCompare: { type: Boolean }
26
+ },
27
+ emits: ["change"],
28
+ setup(__props, { emit: __emit }) {
29
+ const props = __props;
30
+ const emit = __emit;
31
+ const codeConfig = ref();
32
+ const codeBlockEditorRef = useTemplateRef("codeBlockEditor");
33
+ let editIndex = -1;
34
+ const methodColumns = [
35
+ {
36
+ label: "名称",
37
+ prop: "name"
38
+ },
39
+ {
40
+ label: "描述",
41
+ prop: "desc"
42
+ },
43
+ {
44
+ label: "执行时机",
45
+ prop: "timing"
46
+ },
47
+ {
48
+ label: "参数",
49
+ prop: "params",
50
+ formatter: (params = []) => params.map((item) => item.name).join(", ")
51
+ },
52
+ {
53
+ label: "操作",
54
+ fixed: "right",
55
+ actions: [{
56
+ text: "编辑",
57
+ handler: (method, index) => {
58
+ let codeContent = method.content || "({ params, dataSource, app }) => {\n // place your code here\n}";
59
+ if (typeof codeContent !== "string") codeContent = codeContent.toString();
60
+ codeConfig.value = {
61
+ ...cloneDeep(method),
62
+ content: codeContent
63
+ };
64
+ editIndex = index;
65
+ nextTick(() => {
66
+ codeBlockEditorRef.value?.show();
67
+ });
68
+ }
69
+ }, {
70
+ text: "删除",
71
+ buttonType: "danger",
72
+ handler: async (row, index) => {
73
+ await tMagicMessageBox.confirm(`确定删除${row.name}?`, "提示");
74
+ props.model[props.name].splice(index, 1);
75
+ emit("change", props.model[props.name]);
76
+ }
77
+ }]
78
+ }
79
+ ];
80
+ const createCodeHandler = () => {
81
+ codeConfig.value = {
82
+ name: "",
83
+ content: "({ params, dataSource, app, flowState }) => {\n // place your code here\n}",
84
+ params: []
85
+ };
86
+ editIndex = -1;
87
+ nextTick(() => {
88
+ codeBlockEditorRef.value?.show();
89
+ });
90
+ };
91
+ const submitCodeHandler = (value, data) => {
92
+ if (editIndex > -1) emit("change", value, {
93
+ modifyKey: editIndex,
94
+ changeRecords: (data.changeRecords || []).map((item) => ({
95
+ propPath: `${props.prop}.${editIndex}.${item.propPath}`,
96
+ value: item.value
97
+ }))
98
+ });
99
+ else {
100
+ const modifyKey = props.model[props.name].length;
101
+ emit("change", value, {
102
+ modifyKey,
103
+ changeRecords: [{
104
+ propPath: `${props.prop}.${modifyKey}`,
105
+ value
106
+ }]
107
+ });
108
+ }
109
+ editIndex = -1;
110
+ codeConfig.value = void 0;
111
+ codeBlockEditorRef.value?.hide();
112
+ };
113
+ return (_ctx, _cache) => {
114
+ return openBlock(), createElementBlock("div", _hoisted_1, [
115
+ createVNode(unref(MagicTable), {
116
+ data: __props.model[__props.name],
117
+ columns: methodColumns,
118
+ border: true
119
+ }, null, 8, ["data"]),
120
+ createElementVNode("div", _hoisted_2, [createVNode(unref(TMagicButton), {
121
+ size: "small",
122
+ type: "primary",
123
+ disabled: __props.disabled,
124
+ plain: "",
125
+ onClick: createCodeHandler
126
+ }, {
127
+ default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("添加", -1)])]),
128
+ _: 1
129
+ }, 8, ["disabled"])]),
130
+ codeConfig.value ? (openBlock(), createBlock(CodeBlockEditor_default, {
131
+ key: 0,
132
+ ref: "codeBlockEditor",
133
+ disabled: __props.disabled,
134
+ content: codeConfig.value,
135
+ "is-data-source": true,
136
+ "data-source-type": __props.model.type,
137
+ onSubmit: submitCodeHandler
138
+ }, null, 8, [
139
+ "disabled",
140
+ "content",
141
+ "data-source-type"
142
+ ])) : createCommentVNode("v-if", true)
143
+ ]);
144
+ };
145
+ }
146
+ });
147
+ //#endregion
148
+ export { DataSourceMethods_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DataSourceMocks_vue_vue_type_script_setup_true_lang_default from "./DataSourceMocks.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/DataSourceMocks.vue
3
+ var DataSourceMocks_default = DataSourceMocks_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DataSourceMocks_default as default };
@@ -0,0 +1,259 @@
1
+ import { useServices } from "../hooks/use-services.js";
2
+ import { useEditorContentHeight } from "../hooks/use-editor-content-height.js";
3
+ import { useNextFloatBoxPosition } from "../hooks/use-next-float-box-position.js";
4
+ import CodeEditor_default from "../layouts/CodeEditor.js";
5
+ import FloatingBox_default from "../components/FloatingBox.js";
6
+ import { MFormBox } from "@tmagic/form";
7
+ import { MagicTable } from "@tmagic/table";
8
+ import { TMagicButton, TMagicSwitch, tMagicMessageBox } from "@tmagic/design";
9
+ import { getDefaultValueFromFields } from "@tmagic/utils";
10
+ import { createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, isRef, mergeModels, openBlock, ref, unref, useModel, withCtx } from "vue";
11
+ //#region packages/editor/src/fields/DataSourceMocks.vue?vue&type=script&setup=true&lang.ts
12
+ var _hoisted_1 = { class: "m-editor-data-source-fields" };
13
+ var _hoisted_2 = { class: "m-editor-data-source-fields-footer" };
14
+ var DataSourceMocks_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ name: "MFieldsDataSourceMocks",
16
+ __name: "DataSourceMocks",
17
+ props: /* @__PURE__ */ mergeModels({
18
+ config: {},
19
+ model: {},
20
+ initValues: {},
21
+ values: {},
22
+ name: {},
23
+ prop: {},
24
+ disabled: {
25
+ type: Boolean,
26
+ default: false
27
+ },
28
+ size: {},
29
+ lastValues: {},
30
+ isCompare: { type: Boolean }
31
+ }, {
32
+ "width": { default: 670 },
33
+ "widthModifiers": {},
34
+ "visible": {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ "visibleModifiers": {}
39
+ }),
40
+ emits: /* @__PURE__ */ mergeModels(["change"], ["update:width", "update:visible"]),
41
+ setup(__props, { emit: __emit }) {
42
+ const props = __props;
43
+ const emit = __emit;
44
+ const { uiService } = useServices();
45
+ const width = useModel(__props, "width");
46
+ const drawerTitle = ref("");
47
+ const formValues = ref({});
48
+ const formConfig = [
49
+ {
50
+ name: "index",
51
+ type: "hidden",
52
+ filter: "number",
53
+ defaultValue: -1
54
+ },
55
+ {
56
+ name: "title",
57
+ text: "名称",
58
+ rules: [{
59
+ required: true,
60
+ message: "请输入字段名称"
61
+ }, {
62
+ required: true,
63
+ message: "请输入名称"
64
+ }]
65
+ },
66
+ {
67
+ name: "description",
68
+ text: "描述"
69
+ },
70
+ {
71
+ name: "enable",
72
+ text: "启用",
73
+ type: "switch"
74
+ },
75
+ {
76
+ name: "useInEditor",
77
+ text: "编辑器中使用",
78
+ type: "switch"
79
+ },
80
+ {
81
+ name: "data",
82
+ text: "mock数据",
83
+ type: "vs-code",
84
+ language: "json",
85
+ options: inject("codeOptions", {}),
86
+ defaultValue: "{}",
87
+ autosize: {
88
+ minRows: 30,
89
+ maxRows: 50
90
+ },
91
+ onChange: (formState, v) => {
92
+ if (typeof v !== "string") return v;
93
+ return JSON.parse(v);
94
+ },
95
+ rules: [{ validator: ({ value, callback }) => {
96
+ if (typeof value !== "string") return callback();
97
+ try {
98
+ JSON.parse(value);
99
+ callback();
100
+ } catch (error) {
101
+ callback(error);
102
+ }
103
+ } }]
104
+ }
105
+ ];
106
+ const columns = [
107
+ {
108
+ type: "expand",
109
+ component: CodeEditor_default,
110
+ props: (row) => ({
111
+ initValues: row.data,
112
+ language: "json",
113
+ height: "150px",
114
+ options: { readOnly: true }
115
+ })
116
+ },
117
+ {
118
+ label: "名称",
119
+ prop: "title"
120
+ },
121
+ {
122
+ label: "描述",
123
+ prop: "description"
124
+ },
125
+ {
126
+ label: "是否启用",
127
+ prop: "enable",
128
+ type: "component",
129
+ component: TMagicSwitch,
130
+ props: (row) => ({
131
+ modelValue: row.enable,
132
+ activeValue: true,
133
+ inactiveValue: false
134
+ }),
135
+ listeners: (row, index) => ({ "update:modelValue": (v) => {
136
+ toggleValue(row, "enable", v, index);
137
+ } })
138
+ },
139
+ {
140
+ label: "编辑器中使用",
141
+ prop: "useInEditor",
142
+ type: "component",
143
+ component: TMagicSwitch,
144
+ props: (row) => ({
145
+ modelValue: row.useInEditor,
146
+ activeValue: true,
147
+ inactiveValue: false
148
+ }),
149
+ listeners: (row, index) => ({ "update:modelValue": (v) => {
150
+ toggleValue(row, "useInEditor", v, index);
151
+ } })
152
+ },
153
+ {
154
+ label: "操作",
155
+ fixed: "right",
156
+ actions: [{
157
+ text: "编辑",
158
+ handler: (row, index) => {
159
+ formValues.value = {
160
+ ...row,
161
+ index
162
+ };
163
+ drawerTitle.value = `编辑${row.title}`;
164
+ calcBoxPosition();
165
+ addDialogVisible.value = true;
166
+ }
167
+ }, {
168
+ text: "删除",
169
+ buttonType: "danger",
170
+ handler: async (row, index) => {
171
+ await tMagicMessageBox.confirm(`确定删除${row.title}?`, "提示");
172
+ props.model[props.name].splice(index, 1);
173
+ emit("change", props.model[props.name]);
174
+ }
175
+ }]
176
+ }
177
+ ];
178
+ const newHandler = () => {
179
+ const isFirstRow = props.model[props.name].length === 0;
180
+ formValues.value = {
181
+ data: getDefaultValueFromFields(props.model.fields || []),
182
+ useInEditor: isFirstRow,
183
+ enable: isFirstRow
184
+ };
185
+ drawerTitle.value = "新增Mock";
186
+ calcBoxPosition();
187
+ addDialogVisible.value = true;
188
+ };
189
+ const formChangeHandler = ({ index, ...value }) => {
190
+ if (index > -1) props.model[props.name][index] = value;
191
+ else props.model[props.name].push(value);
192
+ addDialogVisible.value = false;
193
+ emit("change", props.model[props.name]);
194
+ };
195
+ const toggleValue = (row, key, value, index) => {
196
+ if (value) props.model[props.name].forEach((item) => {
197
+ item[key] = false;
198
+ });
199
+ formChangeHandler({
200
+ ...row,
201
+ [key]: value,
202
+ index
203
+ });
204
+ };
205
+ const addDialogVisible = useModel(__props, "visible");
206
+ const { height: editorHeight } = useEditorContentHeight();
207
+ const { boxPosition, calcBoxPosition } = useNextFloatBoxPosition(uiService, inject("parentFloating", ref(null)));
208
+ return (_ctx, _cache) => {
209
+ return openBlock(), createElementBlock("div", _hoisted_1, [
210
+ createVNode(unref(MagicTable), {
211
+ data: __props.model[__props.name],
212
+ columns
213
+ }, null, 8, ["data"]),
214
+ createElementVNode("div", _hoisted_2, [createVNode(unref(TMagicButton), {
215
+ size: "small",
216
+ type: "primary",
217
+ disabled: __props.disabled,
218
+ plain: "",
219
+ onClick: _cache[0] || (_cache[0] = ($event) => newHandler())
220
+ }, {
221
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("添加", -1)])]),
222
+ _: 1
223
+ }, 8, ["disabled"])]),
224
+ createVNode(FloatingBox_default, {
225
+ visible: addDialogVisible.value,
226
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => addDialogVisible.value = $event),
227
+ width: width.value,
228
+ "onUpdate:width": _cache[2] || (_cache[2] = ($event) => width.value = $event),
229
+ height: unref(editorHeight),
230
+ "onUpdate:height": _cache[3] || (_cache[3] = ($event) => isRef(editorHeight) ? editorHeight.value = $event : null),
231
+ title: drawerTitle.value,
232
+ position: unref(boxPosition)
233
+ }, {
234
+ body: withCtx(() => [createVNode(unref(MFormBox), {
235
+ "label-width": "120px",
236
+ config: formConfig,
237
+ values: formValues.value,
238
+ parentValues: __props.model[__props.name],
239
+ disabled: __props.disabled,
240
+ onSubmit: formChangeHandler
241
+ }, null, 8, [
242
+ "values",
243
+ "parentValues",
244
+ "disabled"
245
+ ])]),
246
+ _: 1
247
+ }, 8, [
248
+ "visible",
249
+ "width",
250
+ "height",
251
+ "title",
252
+ "position"
253
+ ])
254
+ ]);
255
+ };
256
+ }
257
+ });
258
+ //#endregion
259
+ export { DataSourceMocks_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DataSourceSelect_vue_vue_type_script_setup_true_lang_default from "./DataSourceSelect.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/DataSourceSelect.vue
3
+ var DataSourceSelect_default = DataSourceSelect_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DataSourceSelect_default as default };
@@ -0,0 +1,101 @@
1
+ import { SideItemKey } from "../type.js";
2
+ import { useServices } from "../hooks/use-services.js";
3
+ import Icon_default from "../components/Icon.js";
4
+ import { MSelect, filterFunction } from "@tmagic/form";
5
+ import { TMagicButton, TMagicTooltip } from "@tmagic/design";
6
+ import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, unref, withCtx } from "vue";
7
+ import { Edit, View } from "@element-plus/icons-vue";
8
+ //#region packages/editor/src/fields/DataSourceSelect.vue?vue&type=script&setup=true&lang.ts
9
+ var _hoisted_1 = { class: "m-fields-data-source-select" };
10
+ var DataSourceSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ name: "MFieldsDataSourceSelect",
12
+ __name: "DataSourceSelect",
13
+ props: {
14
+ config: {},
15
+ model: {},
16
+ initValues: {},
17
+ values: {},
18
+ name: {},
19
+ prop: {},
20
+ disabled: {
21
+ type: Boolean,
22
+ default: false
23
+ },
24
+ size: {},
25
+ lastValues: {},
26
+ isCompare: { type: Boolean }
27
+ },
28
+ emits: ["change"],
29
+ setup(__props, { emit: __emit }) {
30
+ const emit = __emit;
31
+ const props = __props;
32
+ const mForm = inject("mForm");
33
+ const { dataSourceService, uiService } = useServices();
34
+ const eventBus = inject("eventBus");
35
+ const dataSources = computed(() => dataSourceService.get("dataSources"));
36
+ const notEditable = computed(() => filterFunction(mForm, props.config.notEditable, props));
37
+ const hasDataSourceSidePanel = computed(() => uiService.get("sideBarItems").find((item) => item.$key === SideItemKey.DATA_SOURCE));
38
+ const selectConfig = computed(() => {
39
+ const { type, dataSourceType, value, ...config } = props.config;
40
+ const valueIsId = props.config.value === "id";
41
+ return {
42
+ ...config,
43
+ type: "select",
44
+ valueKey: "dataSourceId",
45
+ options: dataSources.value.filter((ds) => !props.config.dataSourceType || ds.type === props.config.dataSourceType).map((ds) => ({
46
+ value: valueIsId ? ds.id : {
47
+ isBindDataSource: true,
48
+ dataSourceType: ds.type,
49
+ dataSourceId: ds.id
50
+ },
51
+ text: ds.title || ds.id
52
+ }))
53
+ };
54
+ });
55
+ const changeHandler = (value) => {
56
+ emit("change", value);
57
+ };
58
+ const editHandler = () => {
59
+ const value = props.model[props.name];
60
+ if (!value) return;
61
+ const id = typeof value === "string" ? value : value.dataSourceId;
62
+ if (!dataSourceService.getDataSourceById(id)) return;
63
+ eventBus?.emit("edit-data-source", id);
64
+ };
65
+ return (_ctx, _cache) => {
66
+ return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(MSelect), {
67
+ model: __props.model,
68
+ name: __props.name,
69
+ size: __props.size,
70
+ prop: __props.prop,
71
+ disabled: __props.disabled,
72
+ config: selectConfig.value,
73
+ "last-values": __props.lastValues,
74
+ onChange: changeHandler
75
+ }, null, 8, [
76
+ "model",
77
+ "name",
78
+ "size",
79
+ "prop",
80
+ "disabled",
81
+ "config",
82
+ "last-values"
83
+ ]), __props.model[__props.name] && hasDataSourceSidePanel.value ? (openBlock(), createBlock(unref(TMagicTooltip), {
84
+ key: 0,
85
+ content: notEditable.value ? "查看" : "编辑"
86
+ }, {
87
+ default: withCtx(() => [createVNode(unref(TMagicButton), {
88
+ class: "m-fields-select-action-button",
89
+ size: __props.size,
90
+ onClick: editHandler
91
+ }, {
92
+ default: withCtx(() => [createVNode(Icon_default, { icon: !notEditable.value ? unref(Edit) : unref(View) }, null, 8, ["icon"])]),
93
+ _: 1
94
+ }, 8, ["size"])]),
95
+ _: 1
96
+ }, 8, ["content"])) : createCommentVNode("v-if", true)]);
97
+ };
98
+ }
99
+ });
100
+ //#endregion
101
+ export { DataSourceSelect_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import DisplayConds_vue_vue_type_script_setup_true_lang_default from "./DisplayConds.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/DisplayConds.vue
3
+ var DisplayConds_default = DisplayConds_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DisplayConds_default as default };