@tmagic/editor 1.7.7 → 1.7.8-beta.2

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 (242) 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 +288 -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 +216 -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 +202 -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 +18430 -21979
  225. package/package.json +16 -12
  226. package/src/components/CodeBlockEditor.vue +2 -8
  227. package/src/fields/CodeLink.vue +2 -2
  228. package/src/fields/CodeSelectCol.vue +1 -1
  229. package/src/fields/DataSourceFieldSelect/Index.vue +16 -3
  230. package/src/fields/DataSourceFields.vue +4 -1
  231. package/src/fields/EventSelect.vue +11 -11
  232. package/src/fields/StyleSetter/components/BackgroundPosition.vue +2 -2
  233. package/src/fields/StyleSetter/pro/Layout.vue +8 -8
  234. package/src/index.ts +1 -73
  235. package/src/plugin.ts +92 -0
  236. package/src/services/props.ts +3 -1
  237. package/src/type.ts +1 -1
  238. package/src/utils/data-source/index.ts +71 -73
  239. package/src/utils/index.ts +1 -0
  240. package/src/utils/props.ts +9 -7
  241. package/types/index.d.ts +3369 -3319
  242. package/dist/tmagic-editor.js +0 -17053
@@ -0,0 +1,156 @@
1
+ import { useServices } from "../hooks/use-services.js";
2
+ import { getCascaderOptionsFromFields, getFieldType } from "../utils/data-source/index.js";
3
+ import { MGroupList, filterFunction } from "@tmagic/form";
4
+ import { computed, createBlock, defineComponent, inject, openBlock, unref } from "vue";
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({
7
+ name: "m-fields-display-conds",
8
+ __name: "DisplayConds",
9
+ props: {
10
+ config: {},
11
+ model: {},
12
+ initValues: {},
13
+ values: {},
14
+ name: {},
15
+ prop: {},
16
+ disabled: {
17
+ type: Boolean,
18
+ default: false
19
+ },
20
+ size: {},
21
+ lastValues: {},
22
+ isCompare: { type: Boolean }
23
+ },
24
+ emits: ["change"],
25
+ setup(__props, { emit: __emit }) {
26
+ const emit = __emit;
27
+ const props = __props;
28
+ const { dataSourceService } = useServices();
29
+ const mForm = inject("mForm");
30
+ const parentFields = computed(() => filterFunction(mForm, props.config.parentFields, props) || []);
31
+ const fieldOnChange = (_formState, v, { model }) => {
32
+ const [id, ...fieldNames] = [...parentFields.value, ...v];
33
+ const type = getFieldType(dataSourceService.getDataSourceById(id), fieldNames);
34
+ if (type === "number") model.value = Number(model.value);
35
+ else if (type === "boolean") model.value = Boolean(model.value);
36
+ else if (type === "null") model.value = null;
37
+ else model.value = `${model.value}`;
38
+ return v;
39
+ };
40
+ const config = computed(() => ({
41
+ type: "groupList",
42
+ name: props.name,
43
+ titlePrefix: props.config.titlePrefix,
44
+ expandAll: true,
45
+ items: [{
46
+ type: "table",
47
+ name: "cond",
48
+ operateColWidth: 80,
49
+ enableToggleMode: false,
50
+ items: [
51
+ parentFields.value.length ? {
52
+ type: "cascader",
53
+ options: () => {
54
+ const [dsId, ...keys] = parentFields.value;
55
+ const ds = dataSourceService.getDataSourceById(dsId);
56
+ if (!ds) return [];
57
+ let fields = ds.fields || [];
58
+ keys.forEach((key) => {
59
+ fields = fields.find((f) => f.name === key)?.fields || [];
60
+ });
61
+ return getCascaderOptionsFromFields(fields, [
62
+ "string",
63
+ "number",
64
+ "boolean",
65
+ "any"
66
+ ]);
67
+ },
68
+ name: "field",
69
+ value: "key",
70
+ label: "字段",
71
+ checkStrictly: false,
72
+ onChange: fieldOnChange
73
+ } : {
74
+ type: "data-source-field-select",
75
+ name: "field",
76
+ value: "key",
77
+ label: "字段",
78
+ checkStrictly: false,
79
+ dataSourceFieldType: [
80
+ "string",
81
+ "number",
82
+ "boolean",
83
+ "any"
84
+ ],
85
+ onChange: fieldOnChange
86
+ },
87
+ {
88
+ type: "cond-op-select",
89
+ parentFields: parentFields.value,
90
+ label: "条件",
91
+ width: 140,
92
+ name: "op"
93
+ },
94
+ {
95
+ label: "值",
96
+ width: 160,
97
+ items: [{
98
+ name: "value",
99
+ type: (_mForm, { model }) => {
100
+ const [id, ...fieldNames] = [...parentFields.value, ...model.field];
101
+ const type = getFieldType(dataSourceService.getDataSourceById(id), fieldNames);
102
+ if (type === "number") return "number";
103
+ if (type === "boolean") return "select";
104
+ if (type === "null") return "display";
105
+ return "text";
106
+ },
107
+ options: [{
108
+ text: "true",
109
+ value: true
110
+ }, {
111
+ text: "false",
112
+ value: false
113
+ }],
114
+ display: (_mForm, { model }) => !["between", "not_between"].includes(model.op),
115
+ displayText: (_mForm, { model }) => {
116
+ if (model.value === null) return "null";
117
+ return model.value;
118
+ }
119
+ }, {
120
+ name: "range",
121
+ type: "number-range",
122
+ display: (vm, { model }) => ["between", "not_between"].includes(model.op)
123
+ }]
124
+ }
125
+ ]
126
+ }]
127
+ }));
128
+ const changeHandler = (v, eventData) => {
129
+ if (!Array.isArray(props.model[props.name])) props.model[props.name] = [];
130
+ emit("change", v, eventData);
131
+ };
132
+ return (_ctx, _cache) => {
133
+ return openBlock(), createBlock(unref(MGroupList), {
134
+ style: { "width": "100%" },
135
+ config: config.value,
136
+ name: __props.name,
137
+ disabled: __props.disabled,
138
+ model: __props.model,
139
+ "last-values": __props.lastValues,
140
+ prop: __props.prop,
141
+ size: __props.size,
142
+ onChange: changeHandler
143
+ }, null, 8, [
144
+ "config",
145
+ "name",
146
+ "disabled",
147
+ "model",
148
+ "last-values",
149
+ "prop",
150
+ "size"
151
+ ]);
152
+ };
153
+ }
154
+ });
155
+ //#endregion
156
+ export { DisplayConds_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import EventSelect_vue_vue_type_script_setup_true_lang_default from "./EventSelect.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/EventSelect.vue
3
+ var EventSelect_default = EventSelect_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { EventSelect_default as default };
@@ -0,0 +1,338 @@
1
+ import { useServices } from "../hooks/use-services.js";
2
+ import { getCascaderOptionsFromFields } from "../utils/data-source/index.js";
3
+ import { MContainer, MPanel, MTable } from "@tmagic/form";
4
+ import { TMagicButton } from "@tmagic/design";
5
+ import { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, traverseNode } from "@tmagic/utils";
6
+ import { ActionType } from "@tmagic/core";
7
+ import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
8
+ import { has } from "lodash-es";
9
+ import { Delete } from "@element-plus/icons-vue";
10
+ //#region packages/editor/src/fields/EventSelect.vue?vue&type=script&setup=true&lang.ts
11
+ var _hoisted_1 = { class: "m-fields-event-select" };
12
+ var _hoisted_2 = {
13
+ key: 1,
14
+ class: "fullWidth"
15
+ };
16
+ var EventSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ name: "MFieldsEventSelect",
18
+ __name: "EventSelect",
19
+ props: {
20
+ config: {},
21
+ model: {},
22
+ initValues: {},
23
+ values: {},
24
+ name: {},
25
+ prop: {},
26
+ disabled: { type: Boolean },
27
+ size: {},
28
+ lastValues: {},
29
+ isCompare: { type: Boolean }
30
+ },
31
+ emits: ["change"],
32
+ setup(__props, { emit: __emit }) {
33
+ const props = __props;
34
+ const emit = __emit;
35
+ const { editorService, dataSourceService, eventsService, codeBlockService, propsService } = useServices();
36
+ const eventNameConfig = computed(() => {
37
+ return {
38
+ name: "name",
39
+ text: "事件",
40
+ type: (mForm, { formValue }) => {
41
+ if (props.config.src !== "component" || formValue.type === "page-fragment-container" && formValue.pageFragmentId) return "cascader";
42
+ return "select";
43
+ },
44
+ labelWidth: "40px",
45
+ checkStrictly: () => props.config.src !== "component",
46
+ valueSeparator: ".",
47
+ options: (mForm, { formValue }) => {
48
+ let events = [];
49
+ if (props.config.src === "component") {
50
+ events = eventsService.getEvent(formValue.type);
51
+ if (formValue.type === "page-fragment-container" && formValue.pageFragmentId) {
52
+ const pageFragment = editorService.get("root")?.items?.find((page) => page.id === formValue.pageFragmentId);
53
+ if (pageFragment) {
54
+ events = [{
55
+ label: pageFragment.name || "页面片容器",
56
+ value: pageFragment.id,
57
+ children: events
58
+ }];
59
+ pageFragment.items.forEach((node) => {
60
+ traverseNode(node, (node) => {
61
+ const nodeEvents = node.type && eventsService.getEvent(node.type) || [];
62
+ events.push({
63
+ label: `${node.name}_${node.id}`,
64
+ value: `${node.id}`,
65
+ children: nodeEvents
66
+ });
67
+ });
68
+ });
69
+ return events;
70
+ }
71
+ }
72
+ return events.map((option) => ({
73
+ text: option.label,
74
+ value: option.value
75
+ }));
76
+ }
77
+ if (props.config.src === "datasource") {
78
+ events = dataSourceService.getFormEvent(formValue.type);
79
+ const fields = dataSourceService.getDataSourceById(formValue.id)?.fields || [];
80
+ if (fields.length > 0) return [...events, {
81
+ label: "数据变化",
82
+ value: DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX,
83
+ children: getCascaderOptionsFromFields(fields)
84
+ }];
85
+ return events;
86
+ }
87
+ },
88
+ ...props.config.eventNameConfig
89
+ };
90
+ });
91
+ const actionTypeConfig = computed(() => {
92
+ return {
93
+ name: "actionType",
94
+ text: "联动类型",
95
+ type: "select",
96
+ defaultValue: ActionType.COMP,
97
+ options: () => {
98
+ const o = [{
99
+ text: "组件",
100
+ label: "组件",
101
+ value: ActionType.COMP
102
+ }];
103
+ if (!propsService.getDisabledCodeBlock()) o.push({
104
+ text: "代码",
105
+ label: "代码",
106
+ disabled: !Object.keys(codeBlockService.getCodeDsl() || {}).length,
107
+ value: ActionType.CODE
108
+ });
109
+ if (!propsService.getDisabledDataSource()) o.push({
110
+ text: "数据源",
111
+ label: "数据源",
112
+ value: ActionType.DATA_SOURCE
113
+ });
114
+ return o;
115
+ },
116
+ ...props.config.actionTypeConfig
117
+ };
118
+ });
119
+ const targetCompConfig = computed(() => {
120
+ return {
121
+ name: "to",
122
+ text: "联动组件",
123
+ type: "ui-select",
124
+ display: (mForm, { model }) => model.actionType === ActionType.COMP,
125
+ onChange: (MForm, v, { setModel }) => {
126
+ setModel("method", "");
127
+ },
128
+ ...props.config.targetCompConfig
129
+ };
130
+ });
131
+ const compActionConfig = computed(() => {
132
+ return {
133
+ name: "method",
134
+ text: "动作",
135
+ type: (mForm, { model }) => {
136
+ const to = editorService.getNodeById(model.to);
137
+ if (to && to.type === "page-fragment-container" && to.pageFragmentId) return "cascader";
138
+ return "select";
139
+ },
140
+ checkStrictly: () => props.config.src !== "component",
141
+ display: (mForm, { model }) => model.actionType === ActionType.COMP,
142
+ options: (mForm, { model }) => {
143
+ const node = editorService.getNodeById(model.to);
144
+ if (!node?.type) return [];
145
+ let methods = [];
146
+ methods = eventsService.getMethod(node.type, model.to);
147
+ if (node.type === "page-fragment-container" && node.pageFragmentId) {
148
+ const pageFragment = editorService.get("root")?.items?.find((page) => page.id === node.pageFragmentId);
149
+ if (pageFragment) {
150
+ methods = [];
151
+ pageFragment.items.forEach((node) => {
152
+ traverseNode(node, (node) => {
153
+ const nodeMethods = node.type && eventsService.getMethod(node.type, node.id) || [];
154
+ if (nodeMethods.length) methods.push({
155
+ label: `${node.name}_${node.id}`,
156
+ value: `${node.id}`,
157
+ children: nodeMethods
158
+ });
159
+ });
160
+ });
161
+ return methods;
162
+ }
163
+ }
164
+ return methods.map((method) => ({
165
+ text: method.label,
166
+ value: method.value
167
+ }));
168
+ },
169
+ ...props.config.compActionConfig
170
+ };
171
+ });
172
+ const codeActionConfig = computed(() => {
173
+ return {
174
+ type: "code-select-col",
175
+ text: "代码块",
176
+ name: "codeId",
177
+ notEditable: () => !codeBlockService.getEditStatus(),
178
+ display: (mForm, { model }) => model.actionType === ActionType.CODE,
179
+ ...props.config.codeActionConfig
180
+ };
181
+ });
182
+ const dataSourceActionConfig = computed(() => {
183
+ return {
184
+ type: "data-source-method-select",
185
+ text: "数据源方法",
186
+ name: "dataSourceMethod",
187
+ notEditable: () => !dataSourceService.get("editable"),
188
+ display: (mForm, { model }) => model.actionType === ActionType.DATA_SOURCE,
189
+ ...props.config.dataSourceActionConfig
190
+ };
191
+ });
192
+ const tableConfig = computed(() => ({
193
+ type: "table",
194
+ name: "events",
195
+ items: [
196
+ {
197
+ name: "name",
198
+ label: "事件名",
199
+ type: eventNameConfig.value.type,
200
+ options: (mForm, { formValue }) => eventsService.getEvent(formValue.type).map((option) => ({
201
+ text: option.label,
202
+ value: option.value
203
+ }))
204
+ },
205
+ {
206
+ name: "to",
207
+ label: "联动组件",
208
+ type: "ui-select"
209
+ },
210
+ {
211
+ name: "method",
212
+ label: "动作",
213
+ type: compActionConfig.value.type,
214
+ options: (mForm, { model }) => {
215
+ const node = editorService.getNodeById(model.to);
216
+ if (!node?.type) return [];
217
+ return eventsService.getMethod(node.type, model.to).map((option) => ({
218
+ text: option.label,
219
+ value: option.value
220
+ }));
221
+ }
222
+ }
223
+ ]
224
+ }));
225
+ const actionsConfig = computed(() => ({
226
+ type: "panel",
227
+ items: [{
228
+ type: "group-list",
229
+ name: "actions",
230
+ expandAll: true,
231
+ enableToggleMode: false,
232
+ titlePrefix: "动作",
233
+ items: [
234
+ actionTypeConfig.value,
235
+ targetCompConfig.value,
236
+ compActionConfig.value,
237
+ codeActionConfig.value,
238
+ dataSourceActionConfig.value
239
+ ]
240
+ }]
241
+ }));
242
+ const isOldVersion = computed(() => {
243
+ if (props.model[props.name].length === 0) return false;
244
+ return !has(props.model[props.name][0], "actions");
245
+ });
246
+ const addEvent = () => {
247
+ const defaultEvent = {
248
+ name: "",
249
+ actions: []
250
+ };
251
+ if (!props.model[props.name]) props.model[props.name] = [];
252
+ emit("change", defaultEvent, { modifyKey: props.model[props.name].length });
253
+ };
254
+ const removeEvent = (index) => {
255
+ if (!props.name) return;
256
+ props.model[props.name].splice(index, 1);
257
+ emit("change", props.model[props.name]);
258
+ };
259
+ const eventNameChangeHandler = (v, eventData) => {
260
+ emit("change", props.model[props.name], eventData);
261
+ };
262
+ const onChangeHandler = (v, eventData) => emit("change", props.model[props.name], eventData);
263
+ return (_ctx, _cache) => {
264
+ return openBlock(), createElementBlock("div", _hoisted_1, [isOldVersion.value ? (openBlock(), createBlock(unref(MTable), {
265
+ key: 0,
266
+ name: "events",
267
+ size: __props.size,
268
+ disabled: __props.disabled,
269
+ model: __props.model,
270
+ config: tableConfig.value,
271
+ onChange: onChangeHandler
272
+ }, null, 8, [
273
+ "size",
274
+ "disabled",
275
+ "model",
276
+ "config"
277
+ ])) : (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(TMagicButton), {
278
+ class: "create-button",
279
+ type: "primary",
280
+ size: __props.size,
281
+ disabled: __props.disabled,
282
+ onClick: _cache[0] || (_cache[0] = ($event) => addEvent())
283
+ }, {
284
+ default: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode("添加事件", -1)])]),
285
+ _: 1
286
+ }, 8, ["size", "disabled"]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.model[__props.name], (cardItem, index) => {
287
+ return openBlock(), createBlock(unref(MPanel), {
288
+ key: index,
289
+ disabled: __props.disabled,
290
+ size: __props.size,
291
+ prop: `${__props.prop}.${index}`,
292
+ config: actionsConfig.value,
293
+ model: cardItem,
294
+ "label-width": __props.config.labelWidth || "100px",
295
+ onChange: onChangeHandler
296
+ }, {
297
+ header: withCtx(() => [createVNode(unref(MContainer), {
298
+ class: "fullWidth",
299
+ config: eventNameConfig.value,
300
+ model: cardItem,
301
+ disabled: __props.disabled,
302
+ size: __props.size,
303
+ prop: `${__props.prop}.${index}`,
304
+ onChange: eventNameChangeHandler
305
+ }, null, 8, [
306
+ "config",
307
+ "model",
308
+ "disabled",
309
+ "size",
310
+ "prop"
311
+ ]), createVNode(unref(TMagicButton), {
312
+ style: { "color": "#f56c6c" },
313
+ link: "",
314
+ icon: unref(Delete),
315
+ disabled: __props.disabled,
316
+ size: __props.size,
317
+ onClick: ($event) => removeEvent(Number(index))
318
+ }, null, 8, [
319
+ "icon",
320
+ "disabled",
321
+ "size",
322
+ "onClick"
323
+ ])]),
324
+ _: 2
325
+ }, 1032, [
326
+ "disabled",
327
+ "size",
328
+ "prop",
329
+ "config",
330
+ "model",
331
+ "label-width"
332
+ ]);
333
+ }), 128))]))]);
334
+ };
335
+ }
336
+ });
337
+ //#endregion
338
+ export { EventSelect_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import KeyValue_vue_vue_type_script_setup_true_lang_default from "./KeyValue.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/KeyValue.vue
3
+ var KeyValue_default = KeyValue_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { KeyValue_default as default };
@@ -0,0 +1,158 @@
1
+ import CodeEditor_default from "../layouts/CodeEditor.js";
2
+ import CodeIcon_default from "../icons/CodeIcon.js";
3
+ import { TMagicButton, TMagicInput } from "@tmagic/design";
4
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, renderList, unref, watchEffect, withCtx } from "vue";
5
+ import { Delete, Plus } from "@element-plus/icons-vue";
6
+ //#region packages/editor/src/fields/KeyValue.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = { class: "m-fields-key-value" };
8
+ var _hoisted_2 = { key: 0 };
9
+ var KeyValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ name: "MFieldsKeyValue",
11
+ __name: "KeyValue",
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 records = ref([]);
32
+ const showCode = ref(false);
33
+ watchEffect(() => {
34
+ if (typeof props.model[props.name] === "function") showCode.value = true;
35
+ else {
36
+ const initValues = Object.entries(props.model[props.name] || {});
37
+ for (const [, value] of initValues) if (typeof value !== "string") {
38
+ showCode.value = true;
39
+ break;
40
+ }
41
+ records.value = initValues;
42
+ }
43
+ });
44
+ const getValue = () => {
45
+ const record = {};
46
+ records.value.forEach(([key, value]) => {
47
+ if (key) record[key] = value;
48
+ });
49
+ return record;
50
+ };
51
+ const keyChangeHandler = () => {
52
+ emit("change", getValue());
53
+ };
54
+ const valueChangeHandler = () => {
55
+ emit("change", getValue());
56
+ };
57
+ const addHandler = () => {
58
+ records.value.push(["", ""]);
59
+ };
60
+ const deleteHandler = (index) => {
61
+ records.value.splice(index, 1);
62
+ emit("change", getValue());
63
+ };
64
+ const save = (v) => {
65
+ emit("change", v);
66
+ };
67
+ return (_ctx, _cache) => {
68
+ return openBlock(), createElementBlock("div", _hoisted_1, [
69
+ !showCode.value ? (openBlock(), createElementBlock("div", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList(records.value, (item, index) => {
70
+ return openBlock(), createElementBlock("div", {
71
+ class: "m-fields-key-value-item",
72
+ key: index
73
+ }, [
74
+ createVNode(unref(TMagicInput), {
75
+ placeholder: "key",
76
+ modelValue: records.value[index][0],
77
+ "onUpdate:modelValue": ($event) => records.value[index][0] = $event,
78
+ disabled: __props.disabled,
79
+ size: __props.size,
80
+ onChange: keyChangeHandler
81
+ }, null, 8, [
82
+ "modelValue",
83
+ "onUpdate:modelValue",
84
+ "disabled",
85
+ "size"
86
+ ]),
87
+ _cache[1] || (_cache[1] = createElementVNode("span", { class: "m-fields-key-value-delimiter" }, ":", -1)),
88
+ createVNode(unref(TMagicInput), {
89
+ placeholder: "value",
90
+ modelValue: records.value[index][1],
91
+ "onUpdate:modelValue": ($event) => records.value[index][1] = $event,
92
+ disabled: __props.disabled,
93
+ size: __props.size,
94
+ onChange: valueChangeHandler
95
+ }, null, 8, [
96
+ "modelValue",
97
+ "onUpdate:modelValue",
98
+ "disabled",
99
+ "size"
100
+ ]),
101
+ createVNode(unref(TMagicButton), {
102
+ class: "m-fields-key-value-delete",
103
+ type: "danger",
104
+ size: __props.size,
105
+ disabled: __props.disabled,
106
+ circle: "",
107
+ plain: "",
108
+ icon: unref(Delete),
109
+ onClick: ($event) => deleteHandler(index)
110
+ }, null, 8, [
111
+ "size",
112
+ "disabled",
113
+ "icon",
114
+ "onClick"
115
+ ])
116
+ ]);
117
+ }), 128)), createVNode(unref(TMagicButton), {
118
+ type: "primary",
119
+ size: __props.size,
120
+ disabled: __props.disabled,
121
+ plain: "",
122
+ icon: unref(Plus),
123
+ onClick: addHandler
124
+ }, {
125
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode("添加", -1)])]),
126
+ _: 1
127
+ }, 8, [
128
+ "size",
129
+ "disabled",
130
+ "icon"
131
+ ])])) : createCommentVNode("v-if", true),
132
+ __props.config.advanced && showCode.value ? (openBlock(), createBlock(CodeEditor_default, {
133
+ key: 1,
134
+ "editor-custom-type": "m-fields-key-value",
135
+ language: "javascript",
136
+ "init-values": __props.model[__props.name],
137
+ options: { readOnly: __props.disabled },
138
+ autosize: {
139
+ minRows: 1,
140
+ maxRows: 20
141
+ },
142
+ parse: true,
143
+ onSave: save
144
+ }, null, 8, ["init-values", "options"])) : createCommentVNode("v-if", true),
145
+ __props.config.advanced ? (openBlock(), createBlock(unref(TMagicButton), {
146
+ key: 2,
147
+ size: "default",
148
+ disabled: __props.disabled,
149
+ link: "",
150
+ icon: CodeIcon_default,
151
+ onClick: _cache[0] || (_cache[0] = ($event) => showCode.value = !showCode.value)
152
+ }, null, 8, ["disabled"])) : createCommentVNode("v-if", true)
153
+ ]);
154
+ };
155
+ }
156
+ });
157
+ //#endregion
158
+ export { KeyValue_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import PageFragmentSelect_vue_vue_type_script_setup_true_lang_default from "./PageFragmentSelect.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/fields/PageFragmentSelect.vue
3
+ var PageFragmentSelect_default = PageFragmentSelect_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { PageFragmentSelect_default as default };