@gct-paas/design 0.1.5-dev.6 → 0.1.5-dev.8

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 (192) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/loader.esm.min.js +1 -1
  3. package/es/components/design/design-content/design-content.css +76 -0
  4. package/es/components/design/design-content/design-content.d.ts +190 -0
  5. package/es/components/design/design-content/design-content.mjs +274 -0
  6. package/es/components/design/design-drag-item/design-drag-item.css +179 -0
  7. package/es/components/design/design-drag-item/design-drag-item.d.ts +56 -0
  8. package/es/components/design/design-drag-item/design-drag-item.mjs +237 -0
  9. package/es/components/design/design-drop-container/design-drop-container.css +103 -0
  10. package/es/components/design/design-drop-container/design-drop-container.d.ts +92 -0
  11. package/es/components/design/design-drop-container/design-drop-container.mjs +182 -0
  12. package/es/components/design/design-drop-line/design-drop-line.css +165 -0
  13. package/es/components/design/design-drop-line/design-drop-line.d.ts +73 -0
  14. package/es/components/design/design-drop-line/design-drop-line.mjs +136 -0
  15. package/es/components/design/design-item-actions/design-item-actions.css +97 -0
  16. package/es/components/design/design-item-actions/design-item-actions.d.ts +42 -0
  17. package/es/components/design/design-item-actions/design-item-actions.mjs +147 -0
  18. package/es/components/design/design-item-highlighter/design-item-highlighter.css +70 -0
  19. package/es/components/design/design-item-highlighter/design-item-highlighter.d.ts +168 -0
  20. package/es/components/design/design-item-highlighter/design-item-highlighter.mjs +155 -0
  21. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.css +85 -0
  22. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.d.ts +53 -0
  23. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.mjs +169 -0
  24. package/es/components/design/design-item-hover-title/design-item-hover-title.css +12 -0
  25. package/es/components/design/design-item-hover-title/design-item-hover-title.d.ts +60 -0
  26. package/es/components/design/design-item-hover-title/design-item-hover-title.mjs +60 -0
  27. package/es/components/design/design-item-preview/design-item-preview.css +91 -0
  28. package/es/components/design/design-item-preview/design-item-preview.d.ts +1 -0
  29. package/es/components/design/design-item-preview/design-item-preview.mjs +32 -0
  30. package/es/components/design/design-not-drag-item/design-not-drag-item.css +67 -0
  31. package/es/components/design/design-not-drag-item/design-not-drag-item.d.ts +50 -0
  32. package/es/components/design/design-not-drag-item/design-not-drag-item.mjs +68 -0
  33. package/es/components/design/design-not-found/design-not-found.css +68 -0
  34. package/es/components/design/design-not-found/design-not-found.d.ts +14 -0
  35. package/es/components/design/design-not-found/design-not-found.mjs +19 -0
  36. package/es/components/design/index.d.ts +2 -0
  37. package/es/components/design/index.mjs +2 -0
  38. package/es/components/design-save-tip/design-save-tip.mjs +1 -1
  39. package/es/components/editor/index.mjs +2 -0
  40. package/es/components/editor/length-unit-editor/length-unit-editor.vue.d.ts +13 -0
  41. package/es/components/editor/length-unit-editor/length-unit-editor.vue.mjs +5 -0
  42. package/es/components/editor/length-unit-editor/length-unit-editor.vue_vue_type_script_setup_true_name_length-unit-editor_lang.mjs +47 -0
  43. package/es/components/field-transfer/components/field-transfer-modal.vue.d.ts +5 -1
  44. package/es/components/field-transfer/components/field-transfer-modal.vue.mjs +2 -2
  45. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_script_setup_true_name_field-transfer-modal_lang.mjs +2 -1
  46. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_711e6992_lang.css +8 -0
  47. package/es/components/field-transfer/index.d.ts +2 -0
  48. package/es/components/field-transfer/index.mjs +1 -0
  49. package/es/components/index.d.ts +5 -2
  50. package/es/components/index.mjs +10 -2
  51. package/es/components/material/index.d.ts +1 -0
  52. package/es/components/material/index.mjs +1 -0
  53. package/es/components/material/material-content/material-content.css +86 -0
  54. package/es/components/material/material-content/material-content.d.ts +1 -0
  55. package/es/components/material/material-content/material-content.mjs +49 -0
  56. package/es/components/material/material-module/material-module.css +104 -0
  57. package/es/components/material/material-module/material-module.d.ts +60 -0
  58. package/es/components/material/material-module/material-module.mjs +67 -0
  59. package/es/components/material/material-module-drag-container/material-module-drag-container.css +69 -0
  60. package/es/components/material/material-module-drag-container/material-module-drag-container.d.ts +56 -0
  61. package/es/components/material/material-module-drag-container/material-module-drag-container.mjs +21 -0
  62. package/es/components/material/material-module-drag-item/material-module-drag-item.css +83 -0
  63. package/es/components/material/material-module-drag-item/material-module-drag-item.d.ts +13 -0
  64. package/es/components/material/material-module-drag-item/material-module-drag-item.mjs +66 -0
  65. package/es/components/material/material-outline-tree/material-outline-tree.css +81 -0
  66. package/es/components/material/material-outline-tree/material-outline-tree.d.ts +13 -0
  67. package/es/components/material/material-outline-tree/material-outline-tree.mjs +67 -0
  68. package/es/components/material/material-tab-pane/material-tab-pane.css +68 -0
  69. package/es/components/material/material-tab-pane/material-tab-pane.d.ts +13 -0
  70. package/es/components/material/material-tab-pane/material-tab-pane.mjs +19 -0
  71. package/es/components/material/material-tabs/material-tabs.css +105 -0
  72. package/es/components/material/material-tabs/material-tabs.d.ts +103 -0
  73. package/es/components/material/material-tabs/material-tabs.mjs +44 -0
  74. package/es/components/modal-name-editor/modal-name-editor.d.ts +1 -11
  75. package/es/components/modal-name-editor/modal-name-editor.mjs +27 -38
  76. package/es/components/multi-field/index.d.ts +2 -0
  77. package/es/components/multi-field/index.mjs +1 -0
  78. package/es/components/multi-field/multi-field-display.vue.d.ts +8 -0
  79. package/es/components/multi-field/multi-field-display.vue.mjs +7 -0
  80. package/es/components/multi-field/multi-field-display.vue_vue_type_script_setup_true_lang.mjs +32 -0
  81. package/es/components/multi-field/multi-field-display.vue_vue_type_style_index_0_scoped_802ade7b_lang.css +4 -0
  82. package/es/components/multi-field/multi-field-item.vue.d.ts +6 -0
  83. package/es/components/multi-field/multi-field-item.vue.mjs +7 -0
  84. package/es/components/multi-field/multi-field-item.vue_vue_type_script_setup_true_lang.mjs +47 -0
  85. package/es/components/multi-field/multi-field-item.vue_vue_type_style_index_0_scoped_881cb08e_lang.css +31 -0
  86. package/es/components/panel/index.d.ts +1 -0
  87. package/es/components/panel/index.mjs +1 -0
  88. package/es/components/panel/panel-content/panel-content.css +189 -0
  89. package/es/components/panel/panel-content/panel-content.d.ts +19 -0
  90. package/es/components/panel/panel-content/panel-content.mjs +48 -0
  91. package/es/components/panel/panel-form/panel-form.css +67 -0
  92. package/es/components/panel/panel-form/panel-form.d.ts +62 -0
  93. package/es/components/panel/panel-form/panel-form.mjs +59 -0
  94. package/es/components/panel/panel-path/panel-path.css +89 -0
  95. package/es/components/panel/panel-path/panel-path.d.ts +35 -0
  96. package/es/components/panel/panel-path/panel-path.mjs +52 -0
  97. package/es/components/user-occupy/user-occupy.vue.mjs +2 -2
  98. package/es/components/user-occupy/user-occupy.vue_vue_type_script_setup_true_lang.mjs +2 -2
  99. package/es/components/user-occupy/{user-occupy.vue_vue_type_style_index_0_scoped_24cb9749_lang.css → user-occupy.vue_vue_type_style_index_0_scoped_9b136922_lang.css} +6 -6
  100. package/es/controller/index.d.ts +1 -0
  101. package/es/controller/index.mjs +1 -0
  102. package/es/controller/view/design-view.controller.d.ts +48 -0
  103. package/es/controller/view/design-view.controller.mjs +150 -0
  104. package/es/create-app-vue.mjs +2 -0
  105. package/es/editor/content-tag-style/content-tag-style.css +164 -0
  106. package/es/editor/content-tag-style/content-tag-style.d.ts +112 -0
  107. package/es/editor/content-tag-style/content-tag-style.mjs +80 -0
  108. package/es/editor/content-tag-style/index.d.ts +8 -0
  109. package/es/editor/content-tag-style/index.mjs +11 -0
  110. package/es/editor/field-info-editor/field-info-editor.css +125 -0
  111. package/es/editor/field-info-editor/field-info-editor.d.ts +111 -0
  112. package/es/editor/field-info-editor/field-info-editor.mjs +38 -0
  113. package/es/editor/field-info-editor/index.d.ts +8 -0
  114. package/es/editor/field-info-editor/index.mjs +9 -0
  115. package/es/editor/index.d.ts +5 -0
  116. package/es/editor/index.mjs +19 -0
  117. package/es/editor/model-field-select/index.d.ts +8 -0
  118. package/es/editor/model-field-select/index.mjs +9 -0
  119. package/es/editor/model-field-select/model-field-select.css +148 -0
  120. package/es/editor/model-field-select/model-field-select.d.ts +42 -0
  121. package/es/editor/model-field-select/model-field-select.mjs +217 -0
  122. package/es/editor/style-border/index.d.ts +4 -0
  123. package/es/editor/style-border/index.mjs +11 -0
  124. package/es/editor/style-border/style-border.d.ts +35 -0
  125. package/es/editor/style-border/style-border.mjs +38 -0
  126. package/es/editor/style-font/index.d.ts +4 -0
  127. package/es/editor/style-font/index.mjs +11 -0
  128. package/es/editor/style-font/style-font.css +86 -0
  129. package/es/editor/style-font/style-font.d.ts +35 -0
  130. package/es/editor/style-font/style-font.mjs +36 -0
  131. package/es/editor/style-position/index.d.ts +4 -0
  132. package/es/editor/style-position/index.mjs +11 -0
  133. package/es/editor/style-position/style-position.d.ts +35 -0
  134. package/es/editor/style-position/style-position.mjs +35 -0
  135. package/es/editor/style-spacing/index.d.ts +4 -0
  136. package/es/editor/style-spacing/index.mjs +11 -0
  137. package/es/editor/style-spacing/style-spacing.d.ts +34 -0
  138. package/es/editor/style-spacing/style-spacing.mjs +60 -0
  139. package/es/hooks/design-view/designer/useDesignSave.mjs +3 -1
  140. package/es/hooks/index.d.ts +2 -1
  141. package/es/hooks/index.mjs +3 -2
  142. package/es/hooks/use-design-view-controller/use-design-view-controller.d.ts +11 -0
  143. package/es/hooks/use-design-view-controller/use-design-view-controller.mjs +31 -0
  144. package/es/index.d.ts +5 -2
  145. package/es/index.mjs +23 -8
  146. package/es/interface/controller/i-design-view.controller.d.ts +3 -5
  147. package/es/interface/form-editor/child-list-editor/child-list-editor.d.ts +114 -0
  148. package/es/interface/form-editor/index.d.ts +9 -0
  149. package/es/interface/form-editor/style-border/i-style-border.controller.d.ts +11 -0
  150. package/es/interface/form-editor/style-border/i-style-border.d.ts +22 -0
  151. package/es/interface/form-editor/style-font/i-style-font.controller.d.ts +11 -0
  152. package/es/interface/form-editor/style-font/i-style-font.d.ts +13 -0
  153. package/es/interface/form-editor/style-position/i-style-position.controller.d.ts +11 -0
  154. package/es/interface/form-editor/style-position/i-style-position.d.ts +13 -0
  155. package/es/interface/form-editor/style-spacing/i-style-spacing.controller.d.ts +11 -0
  156. package/es/interface/form-editor/style-spacing/i-style-spacing.d.ts +22 -0
  157. package/es/interface/index.d.ts +2 -0
  158. package/es/interface/provider/i-node-provider.d.ts +140 -0
  159. package/es/provider/design-editor-node/design-editor-node.provider.d.ts +41 -0
  160. package/es/provider/design-editor-node/design-editor-node.provider.mjs +57 -0
  161. package/es/provider/index.d.ts +2 -0
  162. package/es/provider/index.mjs +2 -0
  163. package/es/provider/node-base/node-base.provider.d.ts +25 -0
  164. package/es/provider/node-base/node-base.provider.mjs +34 -0
  165. package/es/register/index.d.ts +1 -0
  166. package/es/register/index.mjs +1 -0
  167. package/es/register/node/node.register.d.ts +113 -0
  168. package/es/register/node/node.register.mjs +141 -0
  169. package/es/store/index.d.ts +1 -0
  170. package/es/store/index.mjs +1 -0
  171. package/es/store/view/design-view.store.d.ts +12 -0
  172. package/es/store/view/design-view.store.mjs +327 -0
  173. package/es/utils/can-drop/can-drop.d.ts +12 -0
  174. package/es/utils/can-drop/can-drop.mjs +48 -0
  175. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.d.ts +1 -1
  176. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.mjs +29 -1
  177. package/es/utils/index.d.ts +1 -0
  178. package/es/utils/index.mjs +1 -0
  179. package/package.json +12 -11
  180. package/es/components/field-cascader/index.d.ts +0 -2
  181. package/es/components/field-cascader/index.mjs +0 -1
  182. package/es/components/field-cascader/src/FieldCascader.vue.d.ts +0 -87
  183. package/es/components/field-cascader/src/FieldCascader.vue.mjs +0 -6
  184. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_script_setup_true_lang.mjs +0 -115
  185. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_style_index_0_lang.css +0 -69
  186. package/es/components/field-cascader/src/SearchInput.vue.d.ts +0 -11
  187. package/es/components/field-cascader/src/SearchInput.vue.mjs +0 -7
  188. package/es/components/field-cascader/src/SearchInput.vue_vue_type_script_setup_true_lang.mjs +0 -38
  189. package/es/components/field-cascader/src/SearchInput.vue_vue_type_style_index_0_scoped_512c4b38_lang.css +0 -9
  190. package/es/components/field-cascader/src/hooks.d.ts +0 -129
  191. package/es/components/field-cascader/src/hooks.mjs +0 -163
  192. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_0c9dd8a1_lang.css +0 -5
@@ -0,0 +1,327 @@
1
+ import { DesignNodeType, DesignViewPrefix, InsertNodeMode } from "../../constant/index.mjs";
2
+ import { NodeRegister } from "../../register/node/node.register.mjs";
3
+ import "../../register/index.mjs";
4
+ import { cloneDeep, merge } from "lodash-es";
5
+ import { LinkedList } from "@gct-paas/core";
6
+ import { reactive } from "vue";
7
+ import { defineStore } from "pinia";
8
+ import { uuid } from "@jsplumb/browser-ui";
9
+ //#region src/store/view/design-view.store.ts
10
+ /**
11
+ * 设计视图状态
12
+ */
13
+ var useDesignViewStore = () => {
14
+ const key = "design-view___" + uuid();
15
+ return defineStore(key, {
16
+ state() {
17
+ return {
18
+ uuid: key,
19
+ rootExpLabel: "页面",
20
+ prefix: DesignViewPrefix.CUSTOM_HOME,
21
+ isTriggerCache: true,
22
+ map: /* @__PURE__ */ new Map(),
23
+ pageNode: null,
24
+ selected: null,
25
+ hoverId: null,
26
+ isDragging: false,
27
+ isChange: false,
28
+ history: new LinkedList(),
29
+ count: 0,
30
+ tree: [],
31
+ expansions: /* @__PURE__ */ new Set(),
32
+ dropContainer: null
33
+ };
34
+ },
35
+ actions: {
36
+ getParentKey(id, parent = null, items = []) {
37
+ if (!id) return null;
38
+ if (items.length === 0) items = this.tree;
39
+ for (const _ of items) {
40
+ if (_.id === id) return parent ? parent.id : null;
41
+ if (_.children && _.children.length > 0) {
42
+ const result = this.getParentKey(id, _, _.children);
43
+ if (result) return result;
44
+ }
45
+ }
46
+ return null;
47
+ },
48
+ getTreeItem(tag, items = []) {
49
+ if (!tag) return null;
50
+ if (items.length === 0) items = this.tree;
51
+ for (const _ of items) {
52
+ if (_.id === tag) return _;
53
+ if (_.children && _.children.length > 0) {
54
+ const item = this.getTreeItem(tag, _.children);
55
+ if (item) return item;
56
+ }
57
+ }
58
+ return null;
59
+ },
60
+ getTreeItems(tag) {
61
+ let items = this.tree;
62
+ const treeItem = this.getTreeItem(tag);
63
+ if (treeItem) {
64
+ if (!treeItem.children) treeItem.children = [];
65
+ items = treeItem.children;
66
+ }
67
+ return items;
68
+ },
69
+ getChildren(node) {
70
+ if (node) {
71
+ const tag = typeof node === "string" ? node : node.id;
72
+ const item = this.getTreeItem(tag);
73
+ if (item && item.children) return item.children.map((_) => this.map.get(_.id));
74
+ } else return this.tree.map((_) => {
75
+ return this.map.get(_.id);
76
+ });
77
+ return [];
78
+ },
79
+ setDragging(bol) {
80
+ this.isDragging = bol;
81
+ },
82
+ activePage() {
83
+ this.selected = this.pageNode;
84
+ },
85
+ setActive(node) {
86
+ if (node == null) this.selected = null;
87
+ else if (typeof node === "string") if (this.map.has(node)) this.selected = this.map.get(node);
88
+ else console.warn(`节点[${node}]不存在`);
89
+ else this.selected = node;
90
+ },
91
+ getNode(tag) {
92
+ if (this.map.has(tag)) return this.map.get(tag);
93
+ return null;
94
+ },
95
+ updateNode(node) {
96
+ if (node && (node.type === DesignNodeType.PAGE || node.type === DesignNodeType.PAGE_LOWER)) {
97
+ this.pageNode = merge(this.pageNode, node);
98
+ this.pageNode.updateDate = Date.now();
99
+ this.isChange = true;
100
+ this.countAdd();
101
+ return;
102
+ }
103
+ if (!this.map.has(node.id)) {
104
+ node.updateDate = Date.now();
105
+ this.map.set(node.id, cloneDeep(node));
106
+ } else {
107
+ const data = this.map.get(node.id);
108
+ node.updateDate = Date.now();
109
+ this.map.set(node.id, merge(data, node));
110
+ }
111
+ this.isChange = true;
112
+ },
113
+ setNode(pKey, node, index) {
114
+ if (node && (node.type === DesignNodeType.PAGE || node.type === DesignNodeType.PAGE_LOWER)) {
115
+ this.pageNode = merge(this.pageNode, node);
116
+ this.pageNode.updateDate = Date.now();
117
+ this.isChange = true;
118
+ this.countAdd();
119
+ return node;
120
+ }
121
+ if (!pKey) pKey = this.getParentKey(node.id);
122
+ const nodes = this.getChildren(pKey);
123
+ let isNew = false;
124
+ if (!this.map.has(node.id)) {
125
+ node.updateDate = Date.now();
126
+ isNew = true;
127
+ } else {
128
+ const data = this.map.get(node.id);
129
+ node.updateDate = Date.now();
130
+ Object.assign(data, node);
131
+ node = data;
132
+ }
133
+ this.map.set(node.id, node);
134
+ if (nodes.length > 0 && index != null && index >= 0) this.insertNode(InsertNodeMode.BEFORE, nodes[index], node);
135
+ else if (isNew) {
136
+ this.setTreeItem(pKey, node.id, index);
137
+ this.cacheHistory();
138
+ }
139
+ this.isChange = true;
140
+ this.countAdd();
141
+ return node;
142
+ },
143
+ setTreeItem(pKey, id, i) {
144
+ const items = this.getTreeItems(pKey);
145
+ if (i != null) items.splice(i, 0, { id });
146
+ else items.push({ id });
147
+ },
148
+ moveTreeItem(oldPid, newPid, id, i) {
149
+ if (oldPid === newPid) {
150
+ const items = this.getTreeItems(newPid);
151
+ const oldIndex = items.findIndex((_) => _.id === id);
152
+ if (oldIndex !== -1) {
153
+ if (oldIndex === i) return;
154
+ const item = items[oldIndex];
155
+ if (i != null) if (i < oldIndex) {
156
+ items.splice(oldIndex, 1);
157
+ items.splice(i, 0, item);
158
+ } else {
159
+ items.splice(i, 0, item);
160
+ items.splice(oldIndex, 1);
161
+ }
162
+ else {
163
+ items.splice(oldIndex, 1);
164
+ items.push(item);
165
+ }
166
+ } else if (i != null) items.splice(i, 0, { id });
167
+ else items.push({ id });
168
+ return;
169
+ }
170
+ const oldItems = this.getTreeItems(oldPid);
171
+ const newItems = this.getTreeItems(newPid);
172
+ const oldIndex = oldItems.findIndex((_) => _.id === id);
173
+ if (oldIndex === -1) this.setTreeItem(newPid, id, i);
174
+ else {
175
+ const item = oldItems[oldIndex];
176
+ oldItems.splice(oldIndex, 1);
177
+ if (i != null) newItems.splice(i, 0, item);
178
+ else newItems.push(item);
179
+ }
180
+ },
181
+ deleteNode(arg) {
182
+ const tag = typeof arg === "string" ? arg : arg.id;
183
+ const data = this.getNode(tag);
184
+ if (data) {
185
+ const pKey = this.getParentKey(data.id);
186
+ const items = this.getTreeItems(pKey);
187
+ const i = items.findIndex((_) => _.id === data.id);
188
+ if (i !== -1) items.splice(i, 1);
189
+ this.map.delete(data.id);
190
+ }
191
+ this.isChange = true;
192
+ this.countAdd();
193
+ this.cacheHistory();
194
+ return data;
195
+ },
196
+ setNodes(nodes) {
197
+ nodes.forEach((node) => {
198
+ const p = NodeRegister.get(node.type, this.prefix);
199
+ if (p) {
200
+ const data = p.create(node);
201
+ if (data) this.map.set(data.id, data);
202
+ } else console.warn(`节点类型[${node.type}],未注册适配器`);
203
+ });
204
+ },
205
+ insertNode(mode, node, data) {
206
+ const oldPKey = this.getParentKey(data.id);
207
+ const newPKey = this.getParentKey(node.id);
208
+ const id = data.id;
209
+ const index = this.getTreeItems(newPKey).findIndex((_) => _.id === node.id);
210
+ switch (mode) {
211
+ case InsertNodeMode.BEFORE:
212
+ this.moveTreeItem(oldPKey, newPKey, id, index);
213
+ break;
214
+ case InsertNodeMode.AFTER:
215
+ this.moveTreeItem(oldPKey, newPKey, id, index + 1);
216
+ break;
217
+ default:
218
+ }
219
+ this.map.set(data.id, data);
220
+ this.isChange = true;
221
+ this.countAdd();
222
+ this.cacheHistory();
223
+ return true;
224
+ },
225
+ setData: async function(data) {
226
+ if (data) {
227
+ if (!data.pageNode) {
228
+ const p = NodeRegister.get(DesignNodeType.PAGE, this.prefix) || NodeRegister.get(DesignNodeType.PAGE_LOWER, this.prefix);
229
+ if (p) {
230
+ this.pageNode = reactive(p.create());
231
+ this.pageNode.data = reactive(this.pageNode.data || {});
232
+ } else console.warn(`节点类型[${DesignNodeType.PAGE}],未注册适配器`);
233
+ } else {
234
+ this.pageNode = reactive(data.pageNode);
235
+ this.pageNode.data = reactive(this.pageNode.data || {});
236
+ }
237
+ this.setNodes(data.nodes);
238
+ this.selected = this.pageNode;
239
+ if (data.nodes && data.nodes.length > 0 && (!data.tree || data.tree.length === 0)) {
240
+ const structureTree = (items) => {
241
+ const arr = [];
242
+ items.forEach((item) => {
243
+ const children = data.nodes.filter((_) => _.parentId === item.id).sort((a, b) => a.order - b.order);
244
+ if (children.length > 0) arr.push({
245
+ id: item.id,
246
+ children: structureTree(children)
247
+ });
248
+ else arr.push({ id: item.id });
249
+ });
250
+ return arr;
251
+ };
252
+ this.tree = structureTree(data.nodes.filter((_) => !_.parentId).sort((a, b) => a.order - b.order));
253
+ } else this.tree = data.tree || [];
254
+ this.cacheHistory();
255
+ }
256
+ },
257
+ getData() {
258
+ const deep = (items) => {
259
+ const arr = [];
260
+ if (items && items.length > 0) items.forEach((item) => {
261
+ arr.push(item.id);
262
+ if (item.children && item.children.length > 0) {
263
+ const childArr = deep(item.children);
264
+ arr.push(...childArr);
265
+ }
266
+ });
267
+ return arr;
268
+ };
269
+ const keys = deep(this.tree);
270
+ const nodes = cloneDeep(Array.from(this.map.values())).filter((_) => {
271
+ return keys.includes(_.id);
272
+ });
273
+ return {
274
+ type: this.prefix,
275
+ pageNode: cloneDeep(this.pageNode),
276
+ nodes,
277
+ tree: cloneDeep(this.tree)
278
+ };
279
+ },
280
+ getPaths(id) {
281
+ const arr = [];
282
+ let node = this.getNode(id);
283
+ if (node) {
284
+ arr.push(node);
285
+ let pKey = this.getParentKey(node.id);
286
+ while (pKey) {
287
+ node = this.getNode(pKey);
288
+ if (!node) break;
289
+ arr.unshift(node);
290
+ pKey = this.getParentKey(node.id);
291
+ }
292
+ }
293
+ return arr;
294
+ },
295
+ undo() {
296
+ this.history.prev();
297
+ if (this.history.active) {
298
+ this.tree = cloneDeep(this.history.active.data);
299
+ this.selected = this.pageNode;
300
+ this.isChange = true;
301
+ }
302
+ },
303
+ redo() {
304
+ this.history.next();
305
+ if (this.history.active) {
306
+ this.tree = cloneDeep(this.history.active.data);
307
+ this.selected = this.pageNode;
308
+ this.isChange = true;
309
+ }
310
+ },
311
+ cacheHistory() {
312
+ if (this.isTriggerCache) this.history.add(cloneDeep(this.tree));
313
+ },
314
+ countAdd() {
315
+ this.count += 1;
316
+ },
317
+ enableCache() {
318
+ this.isTriggerCache = true;
319
+ },
320
+ disableCache() {
321
+ this.isTriggerCache = false;
322
+ }
323
+ }
324
+ })();
325
+ };
326
+ //#endregion
327
+ export { useDesignViewStore };
@@ -0,0 +1,12 @@
1
+ import { IDesignNode, IDragDataItem } from '@gct-paas/schema';
2
+ import { IDesignViewStore } from '../../store';
3
+ /**
4
+ * 是否可以放置
5
+ *
6
+ * @export
7
+ * @param {IDesignNode} node 当前节点
8
+ * @param {IDesignViewStore} store 设计视图 store
9
+ * @param {IDragDataItem} item 拖拽数据
10
+ * @returns {*} {boolean}
11
+ */
12
+ export declare function isCanCrop(node: IDesignNode, store: IDesignViewStore, item: IDragDataItem): boolean;
@@ -0,0 +1,48 @@
1
+ import { NodeRegister } from "../../register/node/node.register.mjs";
2
+ import "../../register/index.mjs";
3
+ import { intersection, union } from "lodash-es";
4
+ //#region src/utils/can-drop/can-drop.ts
5
+ /**
6
+ * 是否可以放置
7
+ *
8
+ * @export
9
+ * @param {IDesignNode} node 当前节点
10
+ * @param {IDesignViewStore} store 设计视图 store
11
+ * @param {IDragDataItem} item 拖拽数据
12
+ * @returns {*} {boolean}
13
+ */
14
+ function isCanCrop(node, store, item) {
15
+ let isDrop = true;
16
+ if (node) {
17
+ const nodes = store.getPaths(node.id);
18
+ if (nodes.findIndex((_) => _.id === item.id) !== -1) return false;
19
+ const providers = nodes.map((node) => {
20
+ return NodeRegister.get(node.type, store.prefix);
21
+ });
22
+ const whiteList = intersection(...providers.map((_) => _.whiteList).filter((_) => !!_));
23
+ const blackList = union(...providers.map((_) => _.blackList).filter((_) => !!_));
24
+ const strWhiteList = whiteList.filter((val) => typeof val === "string");
25
+ const regWhiteList = whiteList.filter((val) => val instanceof RegExp);
26
+ if (whiteList.length > 0) {
27
+ if (item.types.filter((_) => {
28
+ return regWhiteList.some((reg) => !reg.test(_)) && !strWhiteList.includes(_);
29
+ }).length > 0) isDrop = false;
30
+ }
31
+ if (isDrop === true && blackList.length > 0) {
32
+ let items = [];
33
+ if (whiteList.length > 0) items = item.types.filter((_) => {
34
+ return regWhiteList.some((reg) => reg.test(_)) || strWhiteList.includes(_);
35
+ });
36
+ else items = item.types;
37
+ const strBlackList = blackList.filter((val) => typeof val === "string");
38
+ const regBlackList = blackList.filter((val) => val instanceof RegExp);
39
+ const blacks = items.filter((_) => {
40
+ return regBlackList.some((reg) => reg.test(_));
41
+ });
42
+ if (intersection(strBlackList, items).length > 0 || blacks.length > 0) isDrop = false;
43
+ }
44
+ }
45
+ return isDrop;
46
+ }
47
+ //#endregion
48
+ export { isCanCrop };
@@ -15,7 +15,7 @@ export declare class DesignPluginPgkUtil extends PluginPgkUtil {
15
15
  * @param {Platform} platform
16
16
  * @returns {*} {Promise<LoadPluginResult>}
17
17
  */
18
- static loadDesignPlugin(_app: App, _platform: Platform, _kit?: string[]): Promise<LoadPluginResult>;
18
+ static loadDesignPlugin(_app: App, platform: Platform, kit?: string[]): Promise<LoadPluginResult>;
19
19
  /**
20
20
  * 加载设计态中,已经被从配置中移除的插件
21
21
  *
@@ -15,7 +15,35 @@ var DesignPluginPgkUtil = class extends PluginPgkUtil {
15
15
  * @param {Platform} platform
16
16
  * @returns {*} {Promise<LoadPluginResult>}
17
17
  */
18
- static async loadDesignPlugin(_app, _platform, _kit = []) {
18
+ static async loadDesignPlugin(_app, platform, kit = []) {
19
+ try {
20
+ const result = await this.loadPlugin(PluginModeEnum.DESIGN, platform, kit);
21
+ const [configs, moduleMap] = result;
22
+ configs.forEach((config) => {
23
+ config.plugins.forEach((plugin) => {
24
+ const module = moduleMap[plugin.key];
25
+ if (!module) {
26
+ console.error(`${plugin.key} 插件加载失败,请检查插件配置是否正确`);
27
+ return;
28
+ }
29
+ switch (platform) {
30
+ case Platform.MOBILE:
31
+ if (module.mobile) _gct.register.designer.mobile.register(plugin.key, () => new module.mobile());
32
+ break;
33
+ case Platform.PAD:
34
+ if (module.mobile) _gct.register.designer.pad.register(plugin.key, () => new module.mobile());
35
+ break;
36
+ case Platform.WEB:
37
+ if (module.web) _gct.register.designer.web.register(plugin.key, () => new module.web());
38
+ break;
39
+ default: console.warn(`未知平台 ${platform},无法注册插件 ${plugin.key}`);
40
+ }
41
+ });
42
+ });
43
+ return result;
44
+ } catch (error) {
45
+ console.error(error);
46
+ }
19
47
  return [[], {}];
20
48
  }
21
49
  /**
@@ -1,3 +1,4 @@
1
+ export { isCanCrop } from './can-drop/can-drop';
1
2
  export { designInterceptors } from './design-interceptors/design-interceptors';
2
3
  export { platform, designRegister } from './design-view';
3
4
  export { asyncIdentify } from './expression';
@@ -1,3 +1,4 @@
1
+ import "./can-drop/can-drop.mjs";
1
2
  import "./design-interceptors/design-interceptors.mjs";
2
3
  import "./design-view/index.mjs";
3
4
  import "./expression/index.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gct-paas/design",
3
- "version": "0.1.5-dev.6",
3
+ "version": "0.1.5-dev.8",
4
4
  "type": "module",
5
5
  "description": "paas 平台设计界面底包",
6
6
  "loader": "dist/loader.esm.min.js",
@@ -34,12 +34,13 @@
34
34
  "@ant-design/icons-vue": "^7.0.1",
35
35
  "@babel/core": "^7.29.0",
36
36
  "@babel/standalone": "^7.29.2",
37
- "@gct-paas/api": "0.1.4-dev.0",
37
+ "@gct-paas/api": "0.1.4-dev.3",
38
38
  "@jsplumb/browser-ui": "^6.2.10",
39
39
  "@vueuse/core": "^14.1.0",
40
40
  "ant-design-vue": "~3.2.20",
41
41
  "async-validator": "^4.2.5",
42
42
  "axios": "^1.13.2",
43
+ "colord": "^2.9.3",
43
44
  "dayjs": "^1.11.19",
44
45
  "escodegen": "^2.1.0",
45
46
  "esprima-next": "5.8.4",
@@ -50,10 +51,10 @@
50
51
  "react-dnd-html5-backend": "^16.0.1",
51
52
  "vue": "^3.5.30",
52
53
  "vue3-dnd": "^2.1.0",
53
- "@gct-paas/scss": "0.1.5-dev.6",
54
- "@gct-paas/core": "0.1.5-dev.6",
55
- "@gct-paas/schema": "0.1.5-dev.6",
56
- "@gct-paas/core-web": "0.1.5-dev.6"
54
+ "@gct-paas/core": "0.1.5-dev.8",
55
+ "@gct-paas/core-web": "0.1.5-dev.8",
56
+ "@gct-paas/scss": "0.1.5-dev.8",
57
+ "@gct-paas/schema": "0.1.5-dev.8"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@types/babel__core": "^7.20.5",
@@ -61,12 +62,12 @@
61
62
  "@types/estraverse": "^5.1.7"
62
63
  },
63
64
  "peerDependencies": {
64
- "@gct-paas/api": "0.1.4-dev.0",
65
+ "@gct-paas/api": "0.1.4-dev.3",
65
66
  "vue": ">=3",
66
- "@gct-paas/core-web": "0.1.5-dev.6",
67
- "@gct-paas/schema": "0.1.5-dev.6",
68
- "@gct-paas/core": "0.1.5-dev.6",
69
- "@gct-paas/scss": "0.1.5-dev.6"
67
+ "@gct-paas/core-web": "0.1.5-dev.8",
68
+ "@gct-paas/core": "0.1.5-dev.8",
69
+ "@gct-paas/schema": "0.1.5-dev.8",
70
+ "@gct-paas/scss": "0.1.5-dev.8"
70
71
  },
71
72
  "scripts": {
72
73
  "dev": "cross-env NODE_ENV=development vite build --watch --config vite.dev.config.ts",
@@ -1,2 +0,0 @@
1
- import { default as FieldCascader } from './src/FieldCascader.vue';
2
- export { FieldCascader };
@@ -1 +0,0 @@
1
- import "./src/FieldCascader.vue.mjs";
@@ -1,87 +0,0 @@
1
- import { PropType } from 'vue';
2
- import { comPropsType } from './hooks';
3
- declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
- fieldMetaList: {
5
- type: PropType<comPropsType["fieldMetaList"]>;
6
- default: () => comPropsType["fieldMetaList"];
7
- };
8
- filterFieldByFunction: {
9
- type: FunctionConstructor;
10
- default: () => boolean;
11
- };
12
- maxLevel: {
13
- type: NumberConstructor;
14
- default: number;
15
- };
16
- value: {
17
- type: StringConstructor;
18
- default: string;
19
- };
20
- allowClear: {
21
- type: BooleanConstructor;
22
- default: boolean;
23
- };
24
- valueSeparator: {
25
- type: StringConstructor;
26
- default: string;
27
- };
28
- searchable: {
29
- type: BooleanConstructor;
30
- default: boolean;
31
- };
32
- expandToLeft: {
33
- type: BooleanConstructor;
34
- default: boolean;
35
- };
36
- }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
37
- FieldClick: (...args: any[]) => void;
38
- labelChange: (...args: any[]) => void;
39
- }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
40
- fieldMetaList: {
41
- type: PropType<comPropsType["fieldMetaList"]>;
42
- default: () => comPropsType["fieldMetaList"];
43
- };
44
- filterFieldByFunction: {
45
- type: FunctionConstructor;
46
- default: () => boolean;
47
- };
48
- maxLevel: {
49
- type: NumberConstructor;
50
- default: number;
51
- };
52
- value: {
53
- type: StringConstructor;
54
- default: string;
55
- };
56
- allowClear: {
57
- type: BooleanConstructor;
58
- default: boolean;
59
- };
60
- valueSeparator: {
61
- type: StringConstructor;
62
- default: string;
63
- };
64
- searchable: {
65
- type: BooleanConstructor;
66
- default: boolean;
67
- };
68
- expandToLeft: {
69
- type: BooleanConstructor;
70
- default: boolean;
71
- };
72
- }>> & Readonly<{
73
- onFieldClick?: ((...args: any[]) => any) | undefined;
74
- onLabelChange?: ((...args: any[]) => any) | undefined;
75
- }>, {
76
- fieldMetaList: (import('@gct-paas/api/apaas').FieldMetaDTO & {
77
- __bindFields: string[];
78
- })[];
79
- filterFieldByFunction: Function;
80
- maxLevel: number;
81
- value: string;
82
- allowClear: boolean;
83
- valueSeparator: string;
84
- searchable: boolean;
85
- expandToLeft: boolean;
86
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
87
- export default _default;
@@ -1,6 +0,0 @@
1
- import FieldCascader_vue_vue_type_script_setup_true_lang_default from "./FieldCascader.vue_vue_type_script_setup_true_lang.mjs";
2
- import './FieldCascader.vue_vue_type_style_index_0_lang.css';/* empty css */
3
- //#region src/components/field-cascader/src/FieldCascader.vue
4
- var FieldCascader_default = FieldCascader_vue_vue_type_script_setup_true_lang_default;
5
- //#endregion
6
- export { FieldCascader_default as default };