@gct-paas/design 0.1.5-test.2 → 0.1.6-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) 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/design-view/layout/useToolkit.mjs +3 -3
  141. package/es/hooks/index.d.ts +2 -1
  142. package/es/hooks/index.mjs +3 -2
  143. package/es/hooks/use-design-view-controller/use-design-view-controller.d.ts +11 -0
  144. package/es/hooks/use-design-view-controller/use-design-view-controller.mjs +31 -0
  145. package/es/index.d.ts +5 -2
  146. package/es/index.mjs +24 -8
  147. package/es/interface/controller/i-design-view.controller.d.ts +3 -5
  148. package/es/interface/form-editor/child-list-editor/child-list-editor.d.ts +114 -0
  149. package/es/interface/form-editor/index.d.ts +9 -0
  150. package/es/interface/form-editor/style-border/i-style-border.controller.d.ts +11 -0
  151. package/es/interface/form-editor/style-border/i-style-border.d.ts +22 -0
  152. package/es/interface/form-editor/style-font/i-style-font.controller.d.ts +11 -0
  153. package/es/interface/form-editor/style-font/i-style-font.d.ts +13 -0
  154. package/es/interface/form-editor/style-position/i-style-position.controller.d.ts +11 -0
  155. package/es/interface/form-editor/style-position/i-style-position.d.ts +13 -0
  156. package/es/interface/form-editor/style-spacing/i-style-spacing.controller.d.ts +11 -0
  157. package/es/interface/form-editor/style-spacing/i-style-spacing.d.ts +22 -0
  158. package/es/interface/index.d.ts +2 -0
  159. package/es/interface/provider/i-node-provider.d.ts +140 -0
  160. package/es/locale/sys/app.d.ts +4 -0
  161. package/es/locale/sys/appDesigner.d.ts +5 -0
  162. package/es/locale/sys/cardDesign.d.ts +13 -0
  163. package/es/locale/sys/component.d.ts +19 -0
  164. package/es/locale/sys/model.d.ts +6 -0
  165. package/es/locale/sys/pageDesigner.d.ts +28 -0
  166. package/es/locale/sys/platform.d.ts +7 -0
  167. package/es/locale/sys.d.ts +22 -0
  168. package/es/provider/design-editor-node/design-editor-node.provider.d.ts +41 -0
  169. package/es/provider/design-editor-node/design-editor-node.provider.mjs +57 -0
  170. package/es/provider/index.d.ts +2 -0
  171. package/es/provider/index.mjs +2 -0
  172. package/es/provider/node-base/node-base.provider.d.ts +25 -0
  173. package/es/provider/node-base/node-base.provider.mjs +34 -0
  174. package/es/register/index.d.ts +1 -0
  175. package/es/register/index.mjs +1 -0
  176. package/es/register/node/node.register.d.ts +113 -0
  177. package/es/register/node/node.register.mjs +141 -0
  178. package/es/store/index.d.ts +1 -0
  179. package/es/store/index.mjs +1 -0
  180. package/es/store/view/design-view.store.d.ts +12 -0
  181. package/es/store/view/design-view.store.mjs +327 -0
  182. package/es/utils/can-drop/can-drop.d.ts +12 -0
  183. package/es/utils/can-drop/can-drop.mjs +48 -0
  184. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.d.ts +1 -1
  185. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.mjs +29 -1
  186. package/es/utils/expression/index.d.ts +1 -0
  187. package/es/utils/expression/index.mjs +43 -0
  188. package/es/utils/index.d.ts +2 -0
  189. package/es/utils/index.mjs +2 -0
  190. package/package.json +12 -11
  191. package/es/components/field-cascader/index.d.ts +0 -2
  192. package/es/components/field-cascader/index.mjs +0 -1
  193. package/es/components/field-cascader/src/FieldCascader.vue.d.ts +0 -87
  194. package/es/components/field-cascader/src/FieldCascader.vue.mjs +0 -6
  195. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_script_setup_true_lang.mjs +0 -115
  196. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_style_index_0_lang.css +0 -69
  197. package/es/components/field-cascader/src/SearchInput.vue.d.ts +0 -11
  198. package/es/components/field-cascader/src/SearchInput.vue.mjs +0 -7
  199. package/es/components/field-cascader/src/SearchInput.vue_vue_type_script_setup_true_lang.mjs +0 -38
  200. package/es/components/field-cascader/src/SearchInput.vue_vue_type_style_index_0_scoped_512c4b38_lang.css +0 -9
  201. package/es/components/field-cascader/src/hooks.d.ts +0 -129
  202. package/es/components/field-cascader/src/hooks.mjs +0 -163
  203. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_0c9dd8a1_lang.css +0 -5
@@ -0,0 +1,147 @@
1
+ import { DesignItemActionTag, DesignItemAttribute, DesignViewPrefix } from "../../../constant/index.mjs";
2
+ import { NodeRegister } from "../../../register/node/node.register.mjs";
3
+ import "../../../register/index.mjs";
4
+ import { useDesignViewController } from "../../../hooks/use-design-view-controller/use-design-view-controller.mjs";
5
+ import "../../../hooks/index.mjs";
6
+ import './design-item-actions.css';/* empty css */
7
+ import { clone } from "lodash-es";
8
+ import { useNamespace } from "@gct-paas/core";
9
+ import { computed, createVNode, defineComponent, ref, resolveComponent, toRefs, vShow, watch, withDirectives } from "vue";
10
+ import { useElementBounding } from "@vueuse/core";
11
+ import { useDrag } from "vue3-dnd";
12
+ //#region src/components/design/design-item-actions/design-item-actions.tsx
13
+ var DesignItemActions = /* @__PURE__ */ defineComponent({
14
+ name: "DesignItemActions",
15
+ props: {
16
+ top: {
17
+ type: Number,
18
+ default: 0
19
+ },
20
+ left: {
21
+ type: Number,
22
+ default: 0
23
+ },
24
+ selectEl: { type: HTMLDivElement },
25
+ halfRect: {
26
+ type: Object,
27
+ required: true
28
+ }
29
+ },
30
+ setup(props) {
31
+ const ns = useNamespace("design-item-actions");
32
+ const c = useDesignViewController();
33
+ const elRef = ref(null);
34
+ const dragRef = ref(null);
35
+ const { width, height } = useElementBounding(elRef);
36
+ const { selectEl } = toRefs(props);
37
+ const selectRef = computed(() => {
38
+ return props.selectEl;
39
+ });
40
+ const isShow = computed(() => {
41
+ if (!selectEl.value) return true;
42
+ const { top, right, bottom, left } = props.halfRect;
43
+ return !(top > 0 || right > 0 || bottom - selectEl.value.clientHeight > 0 || left - selectEl.value.clientWidth > 0);
44
+ });
45
+ const style = computed(() => {
46
+ return {
47
+ opacity: c.store.isDragging || isShow.value !== true ? 0 : 1,
48
+ top: `${props.top - height.value}px`,
49
+ left: `${props.left - width.value}px`
50
+ };
51
+ });
52
+ const provider = ref(null);
53
+ watch(() => c.store.selected, () => {
54
+ if (c.store.selected) provider.value = NodeRegister.get(c.store.selected.type, c.store.prefix);
55
+ else provider.value = null;
56
+ });
57
+ const actions = computed(() => {
58
+ if (provider.value) return provider.value.actions || [];
59
+ return [];
60
+ });
61
+ const onAction = (e, action) => {
62
+ if (c.store.selected) {
63
+ e.stopPropagation();
64
+ if (provider.value && provider.value.onClick) {
65
+ if (provider.value.onClick(c, c.store.selected, action)) return;
66
+ }
67
+ const pKey = c.store.getParentKey(c.store.selected.id);
68
+ switch (action.tag) {
69
+ case DesignItemActionTag.DELETE:
70
+ c.store.deleteNode(c.store.selected);
71
+ if (pKey) c.store.setActive(c.store.getNode(pKey));
72
+ else c.store.setActive(c.store.pageNode);
73
+ break;
74
+ case DesignItemActionTag.SELECT_PARENT:
75
+ if (pKey) c.store.setActive(c.store.getNode(pKey));
76
+ else c.store.setActive(c.store.pageNode);
77
+ break;
78
+ default: break;
79
+ }
80
+ }
81
+ };
82
+ const [_, drag] = useDrag({
83
+ type: DesignViewPrefix.CUSTOM_HOME,
84
+ item: () => {
85
+ c.store.setDragging(true);
86
+ const el = document.getElementById(c.store.selected.id);
87
+ return {
88
+ data: clone(c.store.selected),
89
+ group: el.getAttribute(DesignItemAttribute.GROUP_TAG),
90
+ id: c.store.selected.id,
91
+ index: Number(el.getAttribute(DesignItemAttribute.INDEX_TAG)),
92
+ mode: "move",
93
+ types: c.types(c.store.selected)
94
+ };
95
+ },
96
+ collect: (monitor) => {
97
+ const isDragging = monitor.isDragging();
98
+ if (selectRef.value) {
99
+ if (isDragging) selectRef.value.setAttribute("is-action-dragging", "true");
100
+ }
101
+ return {
102
+ canDrag: monitor.canDrag(),
103
+ isDragging
104
+ };
105
+ },
106
+ end: async (_, monitor) => {
107
+ c.store.setDragging(false);
108
+ const r = monitor.getDropResult();
109
+ if (r && r.asyncDrop) {
110
+ const result = await r.asyncDrop;
111
+ if (result && result.success) {}
112
+ }
113
+ selectRef.value.removeAttribute("is-action-dragging");
114
+ c.dropEnd();
115
+ },
116
+ options: { dropEffect: "move" }
117
+ });
118
+ drag(dragRef);
119
+ return () => {
120
+ return createVNode("div", {
121
+ "ref": elRef,
122
+ "class": ns.b(),
123
+ "style": style.value,
124
+ "onClick": (e) => e.stopPropagation()
125
+ }, [
126
+ createVNode("div", { "class": ns.e("mask") }, null),
127
+ withDirectives(createVNode("span", {
128
+ "ref": dragRef,
129
+ "class": [ns.e("item"), ns.em("item", "drag")]
130
+ }, [createVNode("i", { "class": "iconfont icon-yidong" }, null)]), [[vShow, provider.value?.isDrag === true]]),
131
+ actions.value.map((action) => {
132
+ const content = createVNode("i", {
133
+ "title": action.tooltip,
134
+ "class": `iconfont ${action.icon}`,
135
+ "onClick": (e) => onAction(e, action)
136
+ }, null);
137
+ return createVNode("span", { "class": ns.e("item") }, [action.tooltip ? createVNode(resolveComponent("a-tooltip"), { "placement": "top" }, {
138
+ title: () => action.tooltip,
139
+ default: () => content
140
+ }) : content]);
141
+ })
142
+ ]);
143
+ };
144
+ }
145
+ });
146
+ //#endregion
147
+ export { DesignItemActions };
@@ -0,0 +1,70 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-design-item-highlighter {
66
+ position: absolute;
67
+ top: 0;
68
+ left: 0;
69
+ z-index: 9999;
70
+ }
@@ -0,0 +1,168 @@
1
+ import { useNamespace } from '@gct-paas/core';
2
+ import { IHalfRect, IPosRect } from '../../../interface';
3
+ /**
4
+ * 组件暴露的属性
5
+ *
6
+ * @export
7
+ * @interface DesignItemHighlighterBinding
8
+ */
9
+ export interface DesignItemHighlighterBinding {
10
+ /**
11
+ * 样式命名空间
12
+ *
13
+ * @author zhanghanrui
14
+ * @date 2024-07-11 15:07:36
15
+ * @type {ReturnType<typeof useNamespace>}
16
+ */
17
+ ns: ReturnType<typeof useNamespace>;
18
+ /**
19
+ * 是否已经激活
20
+ *
21
+ * @author zhanghanrui
22
+ * @date 2024-07-11 15:07:42
23
+ * @type {boolean}
24
+ */
25
+ isHover: boolean;
26
+ /**
27
+ * 是否已经有选中
28
+ *
29
+ * @author zhanghanrui
30
+ * @date 2024-07-11 15:07:49
31
+ * @type {boolean}
32
+ */
33
+ isSelect: boolean;
34
+ /**
35
+ * 设置 hover 元素
36
+ *
37
+ * @author zhanghanrui
38
+ * @date 2024-07-11 15:07:49
39
+ */
40
+ setHover: (el?: HTMLElement) => void;
41
+ /**
42
+ * 设置激活态的元素
43
+ *
44
+ * @author zhanghanrui
45
+ * @date 2024-07-11 15:07:20
46
+ */
47
+ setSelect: (el?: HTMLElement) => void;
48
+ }
49
+ export declare const DesignItemHighlighter: import('vue').DefineComponent<{}, {
50
+ ns: import('@gct-paas/core').Namespace;
51
+ store: import('pinia').Store<string, import('../../..').IDesignViewState, IObject, import('../../..').IDesignViewActions>;
52
+ rootRef: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
53
+ isHover: import('vue').Ref<boolean, boolean>;
54
+ isSelect: import('vue').Ref<boolean, boolean>;
55
+ hoverEl: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
56
+ selectEl: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
57
+ hoverRect: import('vue').Ref<{
58
+ top: number;
59
+ right: number;
60
+ bottom: number;
61
+ left: number;
62
+ width: number;
63
+ height: number;
64
+ }, IPosRect | {
65
+ top: number;
66
+ right: number;
67
+ bottom: number;
68
+ left: number;
69
+ width: number;
70
+ height: number;
71
+ }>;
72
+ selectRect: import('vue').Ref<{
73
+ top: number;
74
+ right: number;
75
+ bottom: number;
76
+ left: number;
77
+ width: number;
78
+ height: number;
79
+ }, IPosRect | {
80
+ top: number;
81
+ right: number;
82
+ bottom: number;
83
+ left: number;
84
+ width: number;
85
+ height: number;
86
+ }>;
87
+ setHover: (el?: HTMLElement) => void;
88
+ setSelect: (el?: HTMLElement) => void;
89
+ hoverWidgetName: import('vue').ComputedRef<string>;
90
+ hoverHalfRect: import('vue').Ref<{
91
+ top: number;
92
+ right: number;
93
+ bottom: number;
94
+ left: number;
95
+ }, IHalfRect | {
96
+ top: number;
97
+ right: number;
98
+ bottom: number;
99
+ left: number;
100
+ }>;
101
+ actionHalfRect: import('vue').Ref<{
102
+ top: number;
103
+ right: number;
104
+ bottom: number;
105
+ left: number;
106
+ }, IHalfRect | {
107
+ top: number;
108
+ right: number;
109
+ bottom: number;
110
+ left: number;
111
+ }>;
112
+ onChangeHoverHalfRect: (rect: IHalfRect) => void;
113
+ onChangeActionHalfRect: (rect: IHalfRect) => void;
114
+ onChangeHoverPosRect: (rect: IPosRect) => void;
115
+ onChangeSelectPosRect: (rect: IPosRect) => void;
116
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {
117
+ DesignItemHighlighterContainer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
118
+ mode: {
119
+ type: import('vue').PropType<"hover" | "select">;
120
+ default: string;
121
+ };
122
+ posEl: {
123
+ type: import('vue').PropType<HTMLDivElement | null>;
124
+ default: null;
125
+ };
126
+ changeHalfRect: {
127
+ type: import('vue').PropType<(opt: IHalfRect) => void>;
128
+ };
129
+ changePosRect: {
130
+ type: import('vue').PropType<(opt: IPosRect) => void>;
131
+ };
132
+ }>, {
133
+ ns: import('@gct-paas/core').Namespace;
134
+ styleObj: import('vue').ComputedRef<{
135
+ display: string;
136
+ width: string;
137
+ height: string;
138
+ top: string;
139
+ left: string;
140
+ 'background-color': string;
141
+ 'clip-path': string;
142
+ }>;
143
+ calcHalfRect: () => {
144
+ top: number;
145
+ right: number;
146
+ bottom: number;
147
+ left: number;
148
+ };
149
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
150
+ mode: {
151
+ type: import('vue').PropType<"hover" | "select">;
152
+ default: string;
153
+ };
154
+ posEl: {
155
+ type: import('vue').PropType<HTMLDivElement | null>;
156
+ default: null;
157
+ };
158
+ changeHalfRect: {
159
+ type: import('vue').PropType<(opt: IHalfRect) => void>;
160
+ };
161
+ changePosRect: {
162
+ type: import('vue').PropType<(opt: IPosRect) => void>;
163
+ };
164
+ }>> & Readonly<{}>, {
165
+ mode: "hover" | "select";
166
+ posEl: HTMLDivElement | null;
167
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
168
+ }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,155 @@
1
+ import { DesignItemAttribute } from "../../../constant/index.mjs";
2
+ import { useDesignViewController } from "../../../hooks/use-design-view-controller/use-design-view-controller.mjs";
3
+ import "../../../hooks/index.mjs";
4
+ import { DesignItemHighlighterContainer } from "../design-item-highlighter-container/design-item-highlighter-container.mjs";
5
+ import { DesignItemActions } from "../design-item-actions/design-item-actions.mjs";
6
+ import { DesignItemHoverTitle } from "../design-item-hover-title/design-item-hover-title.mjs";
7
+ import './design-item-highlighter.css';/* empty css */
8
+ import { useNamespace } from "@gct-paas/core";
9
+ import { computed, createVNode, defineComponent, ref, vShow, withDirectives } from "vue";
10
+ //#region src/components/design/design-item-highlighter/design-item-highlighter.tsx
11
+ /**
12
+ * 组件暴露的属性
13
+ *
14
+ * @export
15
+ * @interface DesignItemHighlighterBinding
16
+ */
17
+ var DesignItemHighlighter = /* @__PURE__ */ defineComponent({
18
+ name: "DesignItemHighlighter",
19
+ components: { DesignItemHighlighterContainer },
20
+ setup(_) {
21
+ const ns = useNamespace("design-item-highlighter");
22
+ const store = useDesignViewController().store;
23
+ const rootRef = ref(null);
24
+ const isHover = ref(false);
25
+ const isSelect = ref(false);
26
+ const hoverEl = ref(null);
27
+ const selectEl = ref(null);
28
+ const hoverRect = ref({
29
+ top: 0,
30
+ right: 0,
31
+ bottom: 0,
32
+ left: 0,
33
+ width: 0,
34
+ height: 0
35
+ });
36
+ const selectRect = ref({
37
+ top: 0,
38
+ right: 0,
39
+ bottom: 0,
40
+ left: 0,
41
+ width: 0,
42
+ height: 0
43
+ });
44
+ const defRect = -2;
45
+ const hoverHalfRect = ref({
46
+ top: defRect,
47
+ right: defRect,
48
+ bottom: defRect,
49
+ left: defRect
50
+ });
51
+ const actionHalfRect = ref({
52
+ top: defRect,
53
+ right: defRect,
54
+ bottom: defRect,
55
+ left: defRect
56
+ });
57
+ const setHover = (el) => {
58
+ if (el && selectEl.value !== el) {
59
+ isHover.value = true;
60
+ hoverEl.value = el;
61
+ } else {
62
+ isHover.value = false;
63
+ hoverEl.value = null;
64
+ }
65
+ };
66
+ const setSelect = (el) => {
67
+ if (el) {
68
+ if (el === hoverEl.value) {
69
+ isHover.value = false;
70
+ hoverEl.value = null;
71
+ }
72
+ isSelect.value = true;
73
+ selectEl.value = el;
74
+ } else {
75
+ isSelect.value = false;
76
+ selectEl.value = null;
77
+ }
78
+ };
79
+ const hoverWidgetName = computed(() => {
80
+ return hoverEl.value?.getAttribute(DesignItemAttribute.DESIGN_NAME) || "";
81
+ });
82
+ function onChangeHoverHalfRect(rect) {
83
+ hoverHalfRect.value = rect;
84
+ }
85
+ function onChangeActionHalfRect(rect) {
86
+ actionHalfRect.value = rect;
87
+ }
88
+ function onChangeHoverPosRect(rect) {
89
+ hoverRect.value = rect;
90
+ }
91
+ function onChangeSelectPosRect(rect) {
92
+ selectRect.value = rect;
93
+ }
94
+ return {
95
+ ns,
96
+ store,
97
+ rootRef,
98
+ isHover,
99
+ isSelect,
100
+ hoverEl,
101
+ selectEl,
102
+ hoverRect,
103
+ selectRect,
104
+ setHover,
105
+ setSelect,
106
+ hoverWidgetName,
107
+ hoverHalfRect,
108
+ actionHalfRect,
109
+ onChangeHoverHalfRect,
110
+ onChangeActionHalfRect,
111
+ onChangeHoverPosRect,
112
+ onChangeSelectPosRect
113
+ };
114
+ },
115
+ render() {
116
+ return createVNode("div", {
117
+ "ref": "rootRef",
118
+ "class": [
119
+ this.ns.b(),
120
+ this.ns.is("dragging", this.store.isDragging),
121
+ this.ns.is("hidden", this.isHover !== true && this.isSelect !== true)
122
+ ]
123
+ }, [
124
+ withDirectives(createVNode(DesignItemHoverTitle, {
125
+ "top": this.hoverRect.top,
126
+ "left": this.hoverRect.left + this.hoverRect.width,
127
+ "content": this.hoverWidgetName,
128
+ "halfRect": this.hoverHalfRect,
129
+ "hoverEl": this.hoverEl
130
+ }, null), [[vShow, this.hoverRect && this.hoverWidgetName && this.selectEl != this.hoverEl && this.store.isDragging !== true]]),
131
+ createVNode(DesignItemActions, {
132
+ "selectEl": this.selectEl,
133
+ "class": [this.ns.e("actions"), this.ns.is("show", !!this.selectRect)],
134
+ "top": this.selectRect.top,
135
+ "left": this.selectRect.left + this.selectRect.width,
136
+ "halfRect": this.actionHalfRect
137
+ }, null),
138
+ createVNode(DesignItemHighlighterContainer, {
139
+ "ref": "hoverRef",
140
+ "posEl": this.hoverEl,
141
+ "changeHalfRect": this.onChangeHoverHalfRect,
142
+ "changePosRect": this.onChangeHoverPosRect
143
+ }, null),
144
+ createVNode(DesignItemHighlighterContainer, {
145
+ "ref": "selectRef",
146
+ "posEl": this.selectEl,
147
+ "mode": "select",
148
+ "changeHalfRect": this.onChangeActionHalfRect,
149
+ "changePosRect": this.onChangeSelectPosRect
150
+ }, null)
151
+ ]);
152
+ }
153
+ });
154
+ //#endregion
155
+ export { DesignItemHighlighter };
@@ -0,0 +1,85 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-design-item-highlighter-container {
66
+ position: absolute;
67
+ pointer-events: none;
68
+ }
69
+ .gct-design-item-highlighter-container--hover {
70
+ z-index: 1;
71
+ background-color: rgba(49, 104, 236, 0.08);
72
+ border: 2px dashed var(--ant-primary-color);
73
+ }
74
+
75
+ .gct-design-item-highlighter-container--select {
76
+ z-index: 2;
77
+ border: 2px solid var(--ant-primary-color);
78
+ }
79
+
80
+ .gct-design-item-highlighter-container__mask {
81
+ position: absolute;
82
+ inset: 0;
83
+ z-index: 1;
84
+ pointer-events: none;
85
+ }
@@ -0,0 +1,53 @@
1
+ import { PropType } from 'vue';
2
+ import { IHalfRect, IPosRect } from '../../../interface';
3
+ export declare const DesignItemHighlighterContainer: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ mode: {
5
+ type: PropType<"hover" | "select">;
6
+ default: string;
7
+ };
8
+ posEl: {
9
+ type: PropType<HTMLDivElement | null>;
10
+ default: null;
11
+ };
12
+ changeHalfRect: {
13
+ type: PropType<(opt: IHalfRect) => void>;
14
+ };
15
+ changePosRect: {
16
+ type: PropType<(opt: IPosRect) => void>;
17
+ };
18
+ }>, {
19
+ ns: import('@gct-paas/core').Namespace;
20
+ styleObj: import('vue').ComputedRef<{
21
+ display: string;
22
+ width: string;
23
+ height: string;
24
+ top: string;
25
+ left: string;
26
+ 'background-color': string;
27
+ 'clip-path': string;
28
+ }>;
29
+ calcHalfRect: () => {
30
+ top: number;
31
+ right: number;
32
+ bottom: number;
33
+ left: number;
34
+ };
35
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
36
+ mode: {
37
+ type: PropType<"hover" | "select">;
38
+ default: string;
39
+ };
40
+ posEl: {
41
+ type: PropType<HTMLDivElement | null>;
42
+ default: null;
43
+ };
44
+ changeHalfRect: {
45
+ type: PropType<(opt: IHalfRect) => void>;
46
+ };
47
+ changePosRect: {
48
+ type: PropType<(opt: IPosRect) => void>;
49
+ };
50
+ }>> & Readonly<{}>, {
51
+ mode: "hover" | "select";
52
+ posEl: HTMLDivElement | null;
53
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;