aldehyde 0.2.427 → 0.2.429

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 (64) hide show
  1. package/lib/controls/2dEditor/2dEditor/index.d.ts +14 -0
  2. package/lib/controls/2dEditor/2dEditor/index.d.ts.map +1 -0
  3. package/lib/controls/2dEditor/2dEditor/index.js +201 -0
  4. package/lib/controls/2dEditor/2dEditor/index.js.map +1 -0
  5. package/lib/controls/2dEditor/2dEditor/index.less +6 -0
  6. package/lib/controls/2dEditor/2dView/index.d.ts +18 -0
  7. package/lib/controls/2dEditor/2dView/index.d.ts.map +1 -0
  8. package/lib/controls/2dEditor/2dView/index.js +76 -0
  9. package/lib/controls/2dEditor/2dView/index.js.map +1 -0
  10. package/lib/controls/2dEditor/2dView/index.less +9 -0
  11. package/lib/controls/2dEditor/components/card.d.ts +22 -0
  12. package/lib/controls/2dEditor/components/card.d.ts.map +1 -0
  13. package/lib/controls/2dEditor/components/card.js +118 -0
  14. package/lib/controls/2dEditor/components/card.js.map +1 -0
  15. package/lib/controls/2dEditor/components/component.less +66 -0
  16. package/lib/controls/2dEditor/components/hotspot.d.ts +17 -0
  17. package/lib/controls/2dEditor/components/hotspot.d.ts.map +1 -0
  18. package/lib/controls/2dEditor/components/hotspot.js +36 -0
  19. package/lib/controls/2dEditor/components/hotspot.js.map +1 -0
  20. package/lib/controls/2dEditor/components/html-box.d.ts +21 -0
  21. package/lib/controls/2dEditor/components/html-box.d.ts.map +1 -0
  22. package/lib/controls/2dEditor/components/html-box.js +51 -0
  23. package/lib/controls/2dEditor/components/html-box.js.map +1 -0
  24. package/lib/controls/2dEditor/components/image.d.ts +13 -0
  25. package/lib/controls/2dEditor/components/image.d.ts.map +1 -0
  26. package/lib/controls/2dEditor/components/image.js +61 -0
  27. package/lib/controls/2dEditor/components/image.js.map +1 -0
  28. package/lib/controls/2dEditor/components/line.d.ts +16 -0
  29. package/lib/controls/2dEditor/components/line.d.ts.map +1 -0
  30. package/lib/controls/2dEditor/components/line.js +42 -0
  31. package/lib/controls/2dEditor/components/line.js.map +1 -0
  32. package/lib/index.d.ts +3 -1
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +4 -1
  35. package/lib/index.js.map +1 -1
  36. package/lib/module/ltmpl-table.d.ts +1 -0
  37. package/lib/module/ltmpl-table.d.ts.map +1 -1
  38. package/lib/module/ltmpl-table.js +2 -2
  39. package/lib/module/ltmpl-table.js.map +1 -1
  40. package/lib/table/act-table.d.ts +5 -2
  41. package/lib/table/act-table.d.ts.map +1 -1
  42. package/lib/table/act-table.js +12 -9
  43. package/lib/table/act-table.js.map +1 -1
  44. package/lib/table/column/column-builder.js +2 -2
  45. package/lib/table/column/column-builder.js.map +1 -1
  46. package/lib/tmpl/interface.d.ts +2 -2
  47. package/lib/tmpl/interface.d.ts.map +1 -1
  48. package/package.json +5 -1
  49. package/src/aldehyde/controls/2dEditor/2dEditor/index.less +6 -0
  50. package/src/aldehyde/controls/2dEditor/2dEditor/index.tsx +270 -0
  51. package/src/aldehyde/controls/2dEditor/2dView/index.less +9 -0
  52. package/src/aldehyde/controls/2dEditor/2dView/index.tsx +110 -0
  53. package/src/aldehyde/controls/2dEditor/components/card.tsx +142 -0
  54. package/src/aldehyde/controls/2dEditor/components/component.less +66 -0
  55. package/src/aldehyde/controls/2dEditor/components/data.d.ts +30 -0
  56. package/src/aldehyde/controls/2dEditor/components/hotspot.tsx +81 -0
  57. package/src/aldehyde/controls/2dEditor/components/html-box.tsx +102 -0
  58. package/src/aldehyde/controls/2dEditor/components/image.tsx +100 -0
  59. package/src/aldehyde/controls/2dEditor/components/line.tsx +74 -0
  60. package/src/aldehyde/index.tsx +7 -1
  61. package/src/aldehyde/module/ltmpl-table.tsx +3 -1
  62. package/src/aldehyde/table/act-table.tsx +15 -10
  63. package/src/aldehyde/table/column/column-builder.tsx +2 -2
  64. package/src/aldehyde/tmpl/interface.tsx +2 -2
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { CommonNode } from "../components/data";
3
+ import "./index.less";
4
+ /**
5
+ * 主组件
6
+ */
7
+ interface Props {
8
+ defNodes?: CommonNode[];
9
+ dbClickAddNode?: boolean;
10
+ onAddNode?: (nodes: CommonNode[]) => void;
11
+ }
12
+ declare const Index: React.ForwardRefExoticComponent<Props & React.RefAttributes<unknown>>;
13
+ export default Index;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/2dEditor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6F,MAAM,OAAO,CAAC;AAOlH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,cAAc,CAAC;AAItB;;GAEG;AAEH,UAAU,KAAK;IACX,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC7C;AAED,QAAA,MAAM,KAAK,uEAqPT,CAAC;AAEH,eAAe,KAAK,CAAC"}
@@ -0,0 +1,201 @@
1
+ import React, { useState, useCallback, useMemo, useEffect, useRef, forwardRef, useImperativeHandle } from 'react';
2
+ import { Stage, Layer } from 'react-konva';
3
+ import { theme } from "antd";
4
+ import CardComponent from "../components/card";
5
+ import LineComponent from "../components/line";
6
+ import HotspotComponent from "../components/hotspot";
7
+ import ImageComponent from "../components/image";
8
+ import "./index.less";
9
+ const { useToken } = theme;
10
+ const Index = forwardRef((props, ref) => {
11
+ const { defNodes, dbClickAddNode = false, onAddNode } = props;
12
+ const [nodesMap, setNodesMap] = useState(); // 组件Map
13
+ const [selectedId, setSelectedId] = useState(); // 选中组件
14
+ const [scale, setScale] = useState(1); // 画布缩放比例
15
+ const [stagePos, setStagePos] = useState({ x: 0, y: 0 }); // 画布移动
16
+ const [stageSize, setStageSize] = useState({ width: 0, height: 0 }); // 画布尺寸
17
+ const stageRef = useRef(null);
18
+ const containerRef = useRef(null);
19
+ const { token } = useToken();
20
+ // 获取所有组件
21
+ const getAllNodes = () => {
22
+ if (!nodesMap) {
23
+ return [];
24
+ }
25
+ const nodesArr = Array.from(nodesMap.values()).sort((a, b) => a.zIndex - b.zIndex);
26
+ return nodesArr;
27
+ };
28
+ // 删除组件
29
+ const deleteNode = (node) => {
30
+ if (!nodesMap) {
31
+ return;
32
+ }
33
+ const temMap = new Map(nodesMap);
34
+ if (node.type === "hotspot") {
35
+ const nodesArr = Array.from(nodesMap.values());
36
+ const lineNode = nodesArr.find(r => r.sourceId === node.id);
37
+ if (lineNode) {
38
+ temMap.delete(lineNode.id);
39
+ temMap.delete(lineNode.targetId);
40
+ }
41
+ }
42
+ temMap.delete(node.id);
43
+ setNodesMap(temMap);
44
+ const temArr = Array.from(temMap.values()).sort((a, b) => a.zIndex - b.zIndex);
45
+ return temArr;
46
+ };
47
+ // 暴露给父组件的方法
48
+ useImperativeHandle(ref, () => ({ getAllNodes, deleteNode, stageSize }));
49
+ const handleStageSize = () => {
50
+ if (containerRef.current) {
51
+ const { clientWidth, clientHeight } = containerRef.current;
52
+ setStageSize({ width: clientWidth, height: clientHeight });
53
+ }
54
+ };
55
+ useEffect(() => {
56
+ handleStageSize();
57
+ window.addEventListener('resize', handleStageSize);
58
+ return () => window.removeEventListener('resize', handleStageSize);
59
+ }, []);
60
+ useEffect(() => {
61
+ if (defNodes === null || defNodes === void 0 ? void 0 : defNodes.length) {
62
+ const defNodesMap = new Map(defNodes.map(item => [item.id, item]));
63
+ setNodesMap(defNodesMap);
64
+ }
65
+ }, [defNodes]);
66
+ // 获取节点位置
67
+ const getNodePosition = useCallback((nodeId) => {
68
+ const node = nodesMap === null || nodesMap === void 0 ? void 0 : nodesMap.get(nodeId);
69
+ return node ? node.position : { x: 0, y: 0 };
70
+ }, [nodesMap]);
71
+ // 更新节点位置
72
+ const updateNodePosition = useCallback((id, newPosition) => {
73
+ setNodesMap(prev => {
74
+ const node = prev.get(id);
75
+ if (!node)
76
+ return prev;
77
+ const newMap = new Map(prev);
78
+ newMap.set(id, Object.assign(Object.assign({}, node), { position: newPosition }));
79
+ return newMap;
80
+ });
81
+ }, []);
82
+ // 组件拖拽处理
83
+ const handleNodeDragMove = useCallback((e, id) => {
84
+ const node = e.target;
85
+ updateNodePosition(id, { x: node.x(), y: node.y() });
86
+ }, [updateNodePosition]);
87
+ // 添加新节点
88
+ const handleStageDblClick = useCallback((e) => {
89
+ if (!dbClickAddNode || !e.currentTarget)
90
+ return;
91
+ const attrs = e.target.getAttrs();
92
+ const targetNode = attrs.id ? nodesMap.get(attrs.id) : undefined;
93
+ if (targetNode && !["image"].includes(targetNode.type)) { // 双击添加新节点,画布和图片上可添加
94
+ return;
95
+ }
96
+ const pointer = e.currentTarget.getPointerPosition();
97
+ if (!pointer)
98
+ return;
99
+ const nodeNumber = new Map(nodesMap).size;
100
+ const newId = Date.now().toString();
101
+ const newHotspotId = `hotspot-${newId}`;
102
+ const newCardId = `card-${newId}`;
103
+ const newLineId = `line-${newId}`;
104
+ const newLine = {
105
+ id: newLineId,
106
+ type: "line",
107
+ sourceId: newHotspotId,
108
+ targetId: newCardId,
109
+ zIndex: nodeNumber + 1
110
+ };
111
+ const newCardNode = {
112
+ id: newCardId,
113
+ type: "card",
114
+ position: { x: pointer.x + 200, y: pointer.y },
115
+ size: { width: 280, height: 190 },
116
+ zIndex: nodeNumber + 2
117
+ };
118
+ const newHotspot = {
119
+ id: newHotspotId,
120
+ type: "hotspot",
121
+ position: { x: pointer.x, y: pointer.y },
122
+ zIndex: nodeNumber + 3,
123
+ };
124
+ setNodesMap(prev => {
125
+ const newMap = new Map(prev);
126
+ newMap.set(newCardId, newCardNode);
127
+ newMap.set(newLineId, newLine);
128
+ newMap.set(newHotspotId, newHotspot);
129
+ return newMap;
130
+ });
131
+ if (onAddNode) {
132
+ onAddNode([newCardNode, newLine, newHotspot]);
133
+ }
134
+ }, [nodesMap]);
135
+ // 处理缩放
136
+ const handleWheel = useCallback((e) => {
137
+ e.evt.preventDefault();
138
+ const scaleBy = 1.1;
139
+ const stage = e.target.getStage();
140
+ const oldScale = stage.scaleX();
141
+ const pointer = stage.getPointerPosition();
142
+ const mousePointTo = {
143
+ x: (pointer.x - stage.x()) / oldScale,
144
+ y: (pointer.y - stage.y()) / oldScale,
145
+ };
146
+ const newScale = e.evt.deltaY > 0 ? oldScale / scaleBy : oldScale * scaleBy;
147
+ const clampedScale = Math.max(0.1, Math.min(newScale, 5));
148
+ stage.scale({ x: clampedScale, y: clampedScale });
149
+ stage.position({
150
+ x: pointer.x - mousePointTo.x * clampedScale,
151
+ y: pointer.y - mousePointTo.y * clampedScale,
152
+ });
153
+ setScale(clampedScale);
154
+ setStagePos({ x: stage.x(), y: stage.y() });
155
+ }, []);
156
+ // 处理画布拖拽
157
+ const handleStageDragEnd = useCallback((e) => {
158
+ const stage = e.target;
159
+ setStagePos({ x: stage.x(), y: stage.y() });
160
+ }, []);
161
+ // 更新组件配置
162
+ const handleChangeNode = (id, val) => {
163
+ setNodesMap(prev => {
164
+ const nodeCur = prev.get(id);
165
+ if (!nodeCur)
166
+ return prev;
167
+ const newMap = new Map(prev);
168
+ newMap.set(id, val);
169
+ return newMap;
170
+ });
171
+ };
172
+ // 组件渲染
173
+ const renderNode = (node) => {
174
+ switch (node.type) {
175
+ case "line": // 连线
176
+ return React.createElement(LineComponent, { key: node.id, node: node, getNodePosition: getNodePosition, lineType: "line" });
177
+ case "hotspot": // 热点
178
+ return React.createElement(HotspotComponent, { key: node.id, node: node, onDragMove: handleNodeDragMove, isSelected: node.id === selectedId, onSelect: () => setSelectedId(node.id), onChange: (val) => handleChangeNode(node.id, val) });
179
+ case "card": // 卡片
180
+ return React.createElement(CardComponent, { node: node, onDragMove: updateNodePosition, isSelected: node.id === selectedId, onSelect: () => setSelectedId(node.id), onChange: (val) => handleChangeNode(node.id, val) });
181
+ case "image":
182
+ return React.createElement(ImageComponent, { key: node.id, node: node, onDragMove: handleNodeDragMove, isSelected: node.id === selectedId, onSelect: () => setSelectedId(node.id), onChange: (val) => handleChangeNode(node.id, val) });
183
+ default:
184
+ break;
185
+ }
186
+ };
187
+ // 置空选中的组件
188
+ const checkDeselect = (e) => {
189
+ const clickedOnEmpty = e.target === e.target.getStage();
190
+ if (clickedOnEmpty) {
191
+ setSelectedId(null);
192
+ }
193
+ };
194
+ // 节点Map转数组并排序
195
+ const nodesArr = useMemo(() => nodesMap ? Array.from(nodesMap.values()).sort((a, b) => a.zIndex - b.zIndex) : [], [nodesMap]);
196
+ return (React.createElement("div", { ref: containerRef, className: 'editor-2d', style: { border: `1px solid ${token.colorBorderSecondary}` } },
197
+ React.createElement(Stage, { ref: stageRef, width: stageSize.width, height: stageSize.height, onDblClick: handleStageDblClick, onClick: checkDeselect },
198
+ React.createElement(Layer, null, nodesArr.map(node => renderNode(node))))));
199
+ });
200
+ export default Index;
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/2dEditor/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ .editor-2d {
2
+ width: 100%;
3
+ height: 100%;
4
+ position: relative;
5
+ overflow: hidden;
6
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { CommonNode } from "../components/data";
3
+ import "./index.less";
4
+ /**
5
+ * 渲染组件
6
+ */
7
+ interface Props {
8
+ config?: {
9
+ nodes: CommonNode[];
10
+ canvasSize: {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ };
15
+ }
16
+ declare const Index: (props: Props) => React.JSX.Element;
17
+ export default Index;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/2dView/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAMjF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,cAAc,CAAC;AAEtB;;GAEG;AAEH,UAAU,KAAK;IACX,MAAM,CAAC,EAAE;QACL,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACjD,CAAA;CACJ;AAED,QAAA,MAAM,KAAK,GAAI,OAAO,KAAK,sBAuF1B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,76 @@
1
+ import React, { useState, useCallback, useMemo, useEffect, useRef } from 'react';
2
+ import { Stage, Layer } from 'react-konva';
3
+ import CardComponent from "../components/card";
4
+ import LineComponent from "../components/line";
5
+ import HotspotComponent from "../components/hotspot";
6
+ import ImageComponent from "../components/image";
7
+ import "./index.less";
8
+ const Index = (props) => {
9
+ const { config } = props;
10
+ const [nodesMap, setNodesMap] = useState(); // 组件Map
11
+ const [canvasSize, setCanvasSize] = useState();
12
+ const [stageScale, setStageScale] = useState();
13
+ const stageRef = useRef(null);
14
+ const viewRef = useRef(null);
15
+ // 获取缩放比例
16
+ const getScale = () => {
17
+ // 创建 ResizeObserver 实例
18
+ const observer = new ResizeObserver((entries) => {
19
+ const entry = entries[0];
20
+ const { width, height } = entry.contentRect;
21
+ const canvasSize = config.canvasSize;
22
+ const widthScale = width / canvasSize.width;
23
+ const heightScale = height / canvasSize.height;
24
+ setStageScale(widthScale > heightScale ? heightScale : widthScale);
25
+ });
26
+ observer.observe(viewRef.current);
27
+ return observer;
28
+ };
29
+ useEffect(() => {
30
+ var _a;
31
+ let observer;
32
+ if (config) {
33
+ const defNodesMap = new Map(((_a = config.nodes) === null || _a === void 0 ? void 0 : _a.map(item => [item.id, item])) || []);
34
+ setNodesMap(defNodesMap);
35
+ setCanvasSize(config.canvasSize);
36
+ observer = getScale();
37
+ }
38
+ return () => {
39
+ // 取消监听
40
+ observer && observer.disconnect();
41
+ };
42
+ }, [config]);
43
+ // 获取节点位置
44
+ const getNodePosition = useCallback((nodeId) => {
45
+ const node = nodesMap === null || nodesMap === void 0 ? void 0 : nodesMap.get(nodeId);
46
+ return node ? node.position : { x: 0, y: 0 };
47
+ }, [nodesMap]);
48
+ // 组件渲染
49
+ const renderNode = (node) => {
50
+ const commonProps = {
51
+ key: node.id,
52
+ node,
53
+ isDesignMode: false
54
+ };
55
+ switch (node.type) {
56
+ case "line": // 连线
57
+ return React.createElement(LineComponent, Object.assign({}, commonProps, { getNodePosition: getNodePosition, lineType: "line" }));
58
+ case "hotspot": // 热点
59
+ return React.createElement(HotspotComponent, Object.assign({}, commonProps));
60
+ case "card": // 卡片
61
+ return React.createElement(CardComponent, Object.assign({}, commonProps));
62
+ case "image":
63
+ return React.createElement(ImageComponent, Object.assign({}, commonProps));
64
+ default:
65
+ break;
66
+ }
67
+ };
68
+ // 节点Map转数组并排序
69
+ const nodesArr = useMemo(() => nodesMap ? Array.from(nodesMap.values()).sort((a, b) => a.zIndex - b.zIndex) : [], [nodesMap]);
70
+ return (React.createElement("div", { className: 'view-2d', ref: viewRef }, stageScale ?
71
+ React.createElement("div", { style: { transform: `scale(${stageScale})` } },
72
+ React.createElement(Stage, { ref: stageRef, width: (canvasSize === null || canvasSize === void 0 ? void 0 : canvasSize.width) || 100, height: (canvasSize === null || canvasSize === void 0 ? void 0 : canvasSize.height) || 100 },
73
+ React.createElement(Layer, null, nodesArr.map(node => renderNode(node))))) : ""));
74
+ };
75
+ export default Index;
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/2dView/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ .view-2d {
2
+ width: 100%;
3
+ height: 100%;
4
+ position: relative;
5
+ overflow: hidden;
6
+ display: flex;
7
+ justify-content: center;
8
+ align-items: center;
9
+ }
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { BaseNode } from "./data";
3
+ import "./component.less";
4
+ /**
5
+ * 卡片组件
6
+ * 数据源参数配置:
7
+ * v1:标题;v2:标签;v3、v4、v5...卡片描述列表
8
+ */
9
+ interface Props {
10
+ node: BaseNode;
11
+ onDragMove?: (id: string, position: {
12
+ x: number;
13
+ y: number;
14
+ }) => void;
15
+ isSelected?: boolean;
16
+ onSelect?: () => void;
17
+ onChange?: (node: BaseNode) => void;
18
+ isDesignMode?: boolean;
19
+ }
20
+ declare const Index: (props: Props) => React.JSX.Element;
21
+ export default Index;
22
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/components/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,kBAAkB,CAAC;AAgB1B;;;;GAIG;AAEH,UAAU,KAAK;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,QAAA,MAAM,KAAK,GAAI,OAAO,KAAK,sBAuG1B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,118 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __rest = (this && this.__rest) || function (s, e) {
11
+ var t = {};
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
+ t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
+ t[p[i]] = s[p[i]];
18
+ }
19
+ return t;
20
+ };
21
+ import React, { useState, useRef, useEffect, useCallback } from 'react';
22
+ import { theme, Row, Col, Tag, Spin } from "antd";
23
+ import { HydrocarbonService } from "../../../index";
24
+ import HtmlBox from "./html-box";
25
+ import "./component.less";
26
+ const { useToken } = theme;
27
+ // 处理数据关系字段
28
+ const handleData = (val) => {
29
+ if (!val || !val.includes("@R@")) {
30
+ return val || "";
31
+ }
32
+ const temArr = val.split("@R@");
33
+ return temArr[1];
34
+ };
35
+ // 状态Tag颜色
36
+ const stateColors = { "在线": "success", "离线": "error" };
37
+ const Index = (props) => {
38
+ const { node, onDragMove, isSelected, onSelect, onChange, isDesignMode = true } = props;
39
+ const { id, position, draggable = true, rotation } = node;
40
+ const [isDragging, setIsDragging] = useState(false);
41
+ const [loading, setLaoding] = useState(false);
42
+ const [title, setTitle] = useState("");
43
+ const [state, setState] = useState("");
44
+ const [listData, setListData] = useState([]);
45
+ const isDraggingRef = useRef(false);
46
+ const { token } = useToken();
47
+ // 请求数据
48
+ const getData = (sourceId, params) => __awaiter(void 0, void 0, void 0, function* () {
49
+ var _a;
50
+ setLaoding(true);
51
+ const { data } = (yield HydrocarbonService.requestChartData(null, sourceId, params)) || {};
52
+ const { config, value } = ((_a = data === null || data === void 0 ? void 0 : data.value) === null || _a === void 0 ? void 0 : _a[0]) || {};
53
+ const _b = (value === null || value === void 0 ? void 0 : value[0]) || {}, { v1, v2 } = _b, otherVal = __rest(_b, ["v1", "v2"]);
54
+ setLaoding(false);
55
+ setTitle(handleData(v1));
56
+ setState(handleData(v2));
57
+ setListData(Object.keys(otherVal).sort((a, b) => Number(a.replace(/\D/g, '')) - Number(b.replace(/\D/g, ''))).map(r => ({ title: config[r], unit: config[`${r}-suffix`], value: handleData(otherVal[r]) })));
58
+ });
59
+ useEffect(() => {
60
+ var _a;
61
+ if (!isDesignMode && ((_a = node.dataSourceId) === null || _a === void 0 ? void 0 : _a.length)) {
62
+ getData(node.dataSourceId[0], node.params);
63
+ }
64
+ }, [node]);
65
+ const handleMouseDown = useCallback((e) => {
66
+ if (!draggable) {
67
+ return;
68
+ }
69
+ e.preventDefault();
70
+ e.stopPropagation();
71
+ setIsDragging(true);
72
+ isDraggingRef.current = true;
73
+ }, [id, position]);
74
+ const handleMouseMove = (e) => {
75
+ if (!isDraggingRef.current || !onDragMove)
76
+ return;
77
+ const newX = e.clientX;
78
+ const newY = e.clientY;
79
+ onDragMove(id, { x: newX, y: newY });
80
+ };
81
+ const handleMouseUp = () => {
82
+ if (isDraggingRef.current) {
83
+ setIsDragging(false);
84
+ isDraggingRef.current = false;
85
+ }
86
+ };
87
+ // Html监听组件位置变化
88
+ useEffect(() => {
89
+ if (id) {
90
+ window.addEventListener('mousemove', handleMouseMove);
91
+ window.addEventListener('mouseup', handleMouseUp);
92
+ }
93
+ return () => {
94
+ window.removeEventListener('mousemove', handleMouseMove);
95
+ window.removeEventListener('mouseup', handleMouseUp);
96
+ };
97
+ }, [id]);
98
+ return (React.createElement(HtmlBox, { node: node, onChange: onChange, isSelected: isSelected, onSelect: onSelect, onDragMove: onDragMove, isDesignMode: isDesignMode },
99
+ React.createElement("div", { className: 'card-component', style: {
100
+ transform: `translate(-50%, -50%) rotate(${rotation || 0}deg)`,
101
+ cursor: isDesignMode && isDragging ? 'grab' : 'default',
102
+ background: token.colorBgContainer,
103
+ border: `1px solid ${token.colorBorderSecondary}`
104
+ }, onMouseDown: handleMouseDown, onClick: onSelect },
105
+ React.createElement(Spin, { spinning: loading },
106
+ React.createElement("div", { className: 'card-title' }, title || "-"),
107
+ React.createElement("div", { className: 'card-detail' },
108
+ React.createElement(Row, { gutter: [16, 16] }, listData === null || listData === void 0 ? void 0 : listData.map((item, index) => React.createElement(Col, { className: "card-detail-item", span: 24, key: index },
109
+ React.createElement("div", { className: "card-detail-item-title" },
110
+ item.title,
111
+ "\uFF1A"),
112
+ React.createElement("div", { className: "card-detail-item-value" }, item.value || item.value === 0 ? item.value : "-"),
113
+ item.unit ? React.createElement("div", { className: 'card-detail-item-unit' }, item.unit) : "",
114
+ (index === 0 && state) ? React.createElement("span", { style: { marginLeft: '8px' } },
115
+ React.createElement(Tag, { color: stateColors[state] || "success" }, state)) : ""))))))));
116
+ };
117
+ export default Index;
118
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/components/card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ .card-component {
2
+ width: 100%;
3
+ height: 100%;
4
+ user-select: none;
5
+ pointer-events: auto;
6
+ border-radius: 12px;
7
+ overflow: hidden;
8
+ line-height: 18px;
9
+
10
+ .ant-spin-nested-loading,
11
+ .ant-spin-container {
12
+ width: 100%;
13
+ height: 100%;
14
+ }
15
+
16
+ .card-title {
17
+ font-size: 18px;
18
+ padding: 12px;
19
+ position: relative;
20
+ text-overflow: ellipsis;
21
+ overflow: hidden;
22
+ white-space: nowrap;
23
+ }
24
+
25
+ .card-title::after {
26
+ content: '';
27
+ position: absolute;
28
+ left: 0;
29
+ bottom: 0;
30
+ width: 100%;
31
+ height: 1px;
32
+ background: linear-gradient(54deg,
33
+ rgba(12, 80, 88, 0) 1.43%,
34
+ #0C5058 7.04%,
35
+ rgba(12, 80, 88, 0) 100%);
36
+ }
37
+
38
+ .card-detail {
39
+ padding: 12px 16px;
40
+
41
+ .card-detail-item {
42
+ display: flex;
43
+ align-items: center;
44
+
45
+ .card-detail-item-title {
46
+ white-space: nowrap;
47
+ max-width: 50%;
48
+ text-overflow: ellipsis;
49
+ overflow: hidden;
50
+ white-space: nowrap;
51
+ }
52
+
53
+ .card-detail-item-value {
54
+ text-overflow: ellipsis;
55
+ overflow: hidden;
56
+ white-space: nowrap;
57
+ max-height: 22px;
58
+ color: #F7B500;
59
+ }
60
+
61
+ .card-detail-item-unit {
62
+ margin-left: 4px;
63
+ }
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { BaseNode } from "./data";
3
+ interface Props {
4
+ node: BaseNode;
5
+ onDragMove?: (e: any, id: string) => void;
6
+ isSelected?: boolean;
7
+ onSelect?: () => void;
8
+ onChange?: (node: BaseNode) => void;
9
+ style?: {
10
+ fill: string;
11
+ stroke: string;
12
+ };
13
+ isDesignMode?: boolean;
14
+ }
15
+ declare const Index: (props: Props) => React.JSX.Element;
16
+ export default Index;
17
+ //# sourceMappingURL=hotspot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotspot.d.ts","sourceRoot":"","sources":["../../../../../../src/aldehyde/controls/2dEditor/components/hotspot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,UAAU,KAAK;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,CAAC,KAAA,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAGD,QAAA,MAAM,KAAK,GAAI,OAAO,KAAK,sBA4D1B,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,36 @@
1
+ import React, { Fragment, useRef, useEffect } from 'react';
2
+ import { Circle, Transformer } from 'react-konva';
3
+ import { theme } from "antd";
4
+ const { useToken } = theme;
5
+ // 热点组件
6
+ const Index = (props) => {
7
+ const { node, onDragMove, style, isSelected, onSelect, onChange, isDesignMode = true } = props;
8
+ const { position, size, draggable = true, selected = true, rotation } = node;
9
+ const nodeRef = useRef(null);
10
+ const trRef = useRef(null);
11
+ const { token } = useToken();
12
+ useEffect(() => {
13
+ trRef.current.nodes(isDesignMode && selected && isSelected ? [nodeRef.current] : []); // 选中设置可拖拽size
14
+ }, [isSelected]);
15
+ // 尺寸拖拽、旋转后执行
16
+ const onTransformEnd = () => {
17
+ const nodeCur = nodeRef.current;
18
+ const scaleX = nodeCur.scaleX();
19
+ const scaleY = nodeCur.scaleY();
20
+ const rotation = nodeCur.rotation();
21
+ nodeCur.scaleX(1);
22
+ nodeCur.scaleY(1);
23
+ onChange(Object.assign(Object.assign({}, node), { position: { x: nodeCur.x(), y: nodeCur.y() }, size: { width: Math.max(5, nodeCur.width() * scaleX), height: Math.max(nodeCur.height() * scaleY) }, rotation }));
24
+ };
25
+ return (React.createElement(Fragment, null,
26
+ React.createElement(Circle, { id: node.id, ref: nodeRef, x: position.x, y: position.y, radius: (size === null || size === void 0 ? void 0 : size.width) || 8, fill: (style === null || style === void 0 ? void 0 : style.fill) || token.colorPrimary, stroke: (style === null || style === void 0 ? void 0 : style.stroke) || "#ffffff", strokeWidth: 0, draggable: isDesignMode && draggable, shadowColor: "black", shadowBlur: 4, shadowOpacity: 0.3, onDragMove: (e) => onDragMove && onDragMove(e, node.id), onClick: onSelect, onTransformEnd: onTransformEnd, rotation: rotation }),
27
+ React.createElement(Transformer, { ref: trRef, flipEnabled: false, boundBoxFunc: (oldBox, newBox) => {
28
+ // limit resize
29
+ if (Math.abs(newBox.width) < 5 || Math.abs(newBox.height) < 5) {
30
+ return oldBox;
31
+ }
32
+ return newBox;
33
+ } })));
34
+ };
35
+ export default Index;
36
+ //# sourceMappingURL=hotspot.js.map