aldehyde 0.2.494 → 0.2.495
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.
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +63 -63
- package/lib/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/lib/draw-canvas-edit/components/main-header/index.less +23 -23
- package/lib/layout2/page.d.ts +2 -1
- package/lib/layout2/page.d.ts.map +1 -1
- package/lib/layout2/page.js +19 -8
- package/lib/layout2/page.js.map +1 -1
- package/lib/layout2/type/layout-type.d.ts +1 -0
- package/lib/layout2/type/layout-type.d.ts.map +1 -1
- package/lib/lowcode-components/base-table/index.less +61 -61
- package/lib/lowcode-components/base-text/index.less +19 -19
- package/lib/lowcode-components/data-number/index.less +10 -10
- package/lib/lowcode-components/date-time/index.less +4 -4
- package/lib/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/lib/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/lib/lowcode-components/text-scroller/index.less +28 -28
- package/lib/module/ltmpl-table.d.ts +7 -0
- package/lib/module/ltmpl-table.d.ts.map +1 -1
- package/lib/module/ltmpl-table.js +12 -16
- package/lib/module/ltmpl-table.js.map +1 -1
- package/lib/routable/dtmpl-route.d.ts.map +1 -1
- package/lib/routable/dtmpl-route.js +8 -2
- package/lib/routable/dtmpl-route.js.map +1 -1
- package/lib/routable/import-route.d.ts.map +1 -1
- package/lib/routable/import-route.js +9 -1
- package/lib/routable/import-route.js.map +1 -1
- package/lib/routable/ltmpl-route.d.ts.map +1 -1
- package/lib/routable/ltmpl-route.js +13 -6
- package/lib/routable/ltmpl-route.js.map +1 -1
- package/lib/routable/splitview-ltmpl-route.d.ts.map +1 -1
- package/lib/routable/splitview-ltmpl-route.js +11 -10
- package/lib/routable/splitview-ltmpl-route.js.map +1 -1
- package/lib/routable/ttmpl-route.d.ts.map +1 -1
- package/lib/routable/ttmpl-route.js +9 -2
- package/lib/routable/ttmpl-route.js.map +1 -1
- package/lib/table/act-table.d.ts +1 -0
- package/lib/table/act-table.d.ts.map +1 -1
- package/lib/table/act-table.js +31 -9
- package/lib/table/act-table.js.map +1 -1
- package/lib/table/page-chart.js +1 -1
- package/lib/table/page-chart.js.map +1 -1
- package/lib/table/row-table.d.ts +6 -0
- package/lib/table/row-table.d.ts.map +1 -1
- package/lib/table/row-table.js +21 -6
- package/lib/table/row-table.js.map +1 -1
- package/lib/tmpl/interface.d.ts +1 -0
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tree/act-tree.d.ts +1 -0
- package/lib/tree/act-tree.d.ts.map +1 -1
- package/lib/tree/act-tree.js +6 -7
- package/lib/tree/act-tree.js.map +1 -1
- package/lib/tree/tree-utils.d.ts +1 -1
- package/lib/tree/tree-utils.d.ts.map +1 -1
- package/lib/tree/tree-utils.js +4 -4
- package/lib/tree/tree-utils.js.map +1 -1
- package/lib/units/index.d.ts +4 -0
- package/lib/units/index.d.ts.map +1 -1
- package/lib/units/index.js +10 -3
- package/lib/units/index.js.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +63 -63
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +93 -93
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +110 -110
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +23 -23
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +263 -263
- package/src/aldehyde/draw-canvas-edit/components/render/draws/index.ts +7 -7
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +241 -241
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +699 -699
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +500 -500
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/index.ts +5 -5
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +493 -493
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +680 -680
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +68 -68
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +113 -113
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/index.ts +9 -9
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +49 -49
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +81 -81
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +59 -59
- package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +89 -89
- package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +154 -154
- package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +222 -222
- package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +224 -224
- package/src/aldehyde/draw-canvas-edit/components/render/utils/a-star.ts +116 -116
- package/src/aldehyde/draw-canvas-edit/components/render/utils/bezier-scene-func.ts +72 -72
- package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +119 -119
- package/src/aldehyde/layout2/page.tsx +17 -9
- package/src/aldehyde/layout2/type/layout-type.ts +1 -0
- package/src/aldehyde/layout4/imgs/user.svg +26 -26
- package/src/aldehyde/lowcode-components/base-color-block/index.tsx +31 -31
- package/src/aldehyde/lowcode-components/base-table/index.less +61 -61
- package/src/aldehyde/lowcode-components/base-text/index.less +19 -19
- package/src/aldehyde/lowcode-components/data-number/index.less +10 -10
- package/src/aldehyde/lowcode-components/date-time/index.less +4 -4
- package/src/aldehyde/lowcode-components/date-time/index.tsx +64 -64
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -53
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -64
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -77
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +91 -91
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/controller.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/definition.ts +53 -53
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/index.tsx +15 -15
- package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +98 -98
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +121 -121
- package/src/aldehyde/lowcode-components/placeholder-component/index.tsx +81 -81
- package/src/aldehyde/lowcode-components/text-scroller/index.less +28 -28
- package/src/aldehyde/lowcode-components/text-scroller/index.tsx +173 -173
- package/src/aldehyde/module/ltmpl-table.tsx +14 -15
- package/src/aldehyde/routable/dtmpl-route.tsx +14 -8
- package/src/aldehyde/routable/import-route.tsx +12 -5
- package/src/aldehyde/routable/ltmpl-route.tsx +14 -9
- package/src/aldehyde/routable/splitview-ltmpl-route.tsx +11 -8
- package/src/aldehyde/routable/ttmpl-route.tsx +13 -8
- package/src/aldehyde/table/act-table.tsx +28 -9
- package/src/aldehyde/table/page-chart.tsx +1 -1
- package/src/aldehyde/table/row-table.tsx +29 -6
- package/src/aldehyde/tmpl/interface.tsx +1 -0
- package/src/aldehyde/tree/act-tree.tsx +8 -6
- package/src/aldehyde/tree/tree-utils.tsx +4 -4
- package/src/aldehyde/units/index.tsx +11 -3
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
import Konva from 'konva';
|
|
2
|
-
import { Render } from '../index';
|
|
3
|
-
import { PreviewDraw } from '../draws';
|
|
4
|
-
|
|
5
|
-
const gifler = (window as any).gifler;
|
|
6
|
-
|
|
7
|
-
export class AssetTool {
|
|
8
|
-
private render: Render;
|
|
9
|
-
// 同一个 svgXML 内容只转一次 Blob,避免重复创建 Blob URL
|
|
10
|
-
private svgBlobCache: Map<string, string> = new Map();
|
|
11
|
-
// 同地址 svg 只 fetch 一次,避免重复网络请求
|
|
12
|
-
private svgRawCache: Map<string, string> = new Map();
|
|
13
|
-
|
|
14
|
-
constructor(render: Render) {
|
|
15
|
-
this.render = render;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// 加载 svg xml(带 Blob 缓存)
|
|
19
|
-
loadSvgXML(svgXML: string) {
|
|
20
|
-
let url = this.svgBlobCache.get(svgXML);
|
|
21
|
-
if (!url) {
|
|
22
|
-
const blob = new Blob([svgXML], { type: 'image/svg+xml' });
|
|
23
|
-
url = URL.createObjectURL(blob);
|
|
24
|
-
this.svgBlobCache.set(svgXML, url);
|
|
25
|
-
}
|
|
26
|
-
return new Promise<Konva.Image>((resolve) => {
|
|
27
|
-
Konva.Image.fromURL(url, (imageNode) => {
|
|
28
|
-
imageNode.setAttrs({ svgXML } as any);
|
|
29
|
-
resolve(imageNode);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// 加载 svg(带 fetch 缓存 + Blob 缓存)
|
|
35
|
-
async loadSvg(src: string) {
|
|
36
|
-
let rawSvg = this.svgRawCache.get(src);
|
|
37
|
-
if (!rawSvg) {
|
|
38
|
-
rawSvg = await (await fetch(src)).text();
|
|
39
|
-
this.svgRawCache.set(src, rawSvg);
|
|
40
|
-
}
|
|
41
|
-
const svgXML = this.render.setSvgXMLSettings(rawSvg, this.render.getAssetSettings());
|
|
42
|
-
return this.loadSvgXML(svgXML);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// 加载 gif
|
|
46
|
-
async loadGif(src: string) {
|
|
47
|
-
return new Promise<Konva.Image>((resolve) => {
|
|
48
|
-
const img = document.createElement('img');
|
|
49
|
-
img.onload = () => {
|
|
50
|
-
const canvas = document.createElement('canvas');
|
|
51
|
-
canvas.width = img.naturalWidth;
|
|
52
|
-
canvas.height = img.naturalHeight;
|
|
53
|
-
const gif = gifler(src);
|
|
54
|
-
gif.frames(canvas, (ctx: CanvasRenderingContext2D, frame: any) => {
|
|
55
|
-
ctx.drawImage(frame.buffer, frame.x, frame.y);
|
|
56
|
-
this.render.layer.draw();
|
|
57
|
-
// 更新预览(layer)
|
|
58
|
-
this.render.draws[PreviewDraw.NAME]?.layer.draw();
|
|
59
|
-
});
|
|
60
|
-
img.remove();
|
|
61
|
-
// TODO: 拖动 gif 素材产生大量 JS event listeners
|
|
62
|
-
resolve(new Konva.Image({ image: canvas, gif: src }));
|
|
63
|
-
}
|
|
64
|
-
img.src = src;
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// 加载图片
|
|
69
|
-
async loadImg(src: string) {
|
|
70
|
-
return new Promise<Konva.Image>((resolve) => {
|
|
71
|
-
Konva.Image.fromURL(src, (imageNode) => {
|
|
72
|
-
imageNode.setAttrs({ src } as any);
|
|
73
|
-
resolve(imageNode);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// 加载节点 json
|
|
79
|
-
async loadJson(src: string) {
|
|
80
|
-
try {
|
|
81
|
-
// 读取 json内容
|
|
82
|
-
const json = JSON.parse(await (await fetch(src)).text());
|
|
83
|
-
// 子素材
|
|
84
|
-
const assets = json.children;
|
|
85
|
-
// 刷新id
|
|
86
|
-
this.render.linkTool.jsonIdCover(assets);
|
|
87
|
-
// 生成空白 stage+layer
|
|
88
|
-
const stageEmpty = new Konva.Stage({ container: document.createElement('div') });
|
|
89
|
-
const layerEmpty = new Konva.Layer();
|
|
90
|
-
stageEmpty.add(layerEmpty);
|
|
91
|
-
// 空白 json 根
|
|
92
|
-
const jsonRoot = JSON.parse(stageEmpty.toJSON());
|
|
93
|
-
jsonRoot.children[0].children = [json];
|
|
94
|
-
// 重新加载 stage
|
|
95
|
-
const stageReload = Konva.Node.create(JSON.stringify(jsonRoot), document.createElement('div'));
|
|
96
|
-
// 目标 group(即 json 转化后的节点)
|
|
97
|
-
const groupTarget = stageReload.children[0].children[0] as Konva.Group;
|
|
98
|
-
// 释放内存
|
|
99
|
-
stageEmpty.destroy();
|
|
100
|
-
groupTarget.remove();
|
|
101
|
-
stageReload.destroy();
|
|
102
|
-
// 深度遍历加载子素材
|
|
103
|
-
const nodes: {
|
|
104
|
-
target: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node
|
|
105
|
-
parent?: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node
|
|
106
|
-
}[] = [{ target: groupTarget }];
|
|
107
|
-
while (nodes.length > 0) {
|
|
108
|
-
const item = nodes.shift();
|
|
109
|
-
if (item) {
|
|
110
|
-
const node = item.target;
|
|
111
|
-
if (node instanceof Konva.Image) {
|
|
112
|
-
if (node.attrs.svgXML) {
|
|
113
|
-
const n = await this.loadSvgXML(node.attrs.svgXML);
|
|
114
|
-
n.listening(false);
|
|
115
|
-
node.parent?.add(n);
|
|
116
|
-
node.remove();
|
|
117
|
-
} else if (node.attrs.gif) {
|
|
118
|
-
const n = await this.loadGif(node.attrs.gif);
|
|
119
|
-
n.listening(false);
|
|
120
|
-
node.parent?.add(n);
|
|
121
|
-
node.remove();
|
|
122
|
-
} else if (node.attrs.src) {
|
|
123
|
-
const n = await this.loadImg(node.attrs.src);
|
|
124
|
-
n.listening(false);
|
|
125
|
-
node.parent?.add(n);
|
|
126
|
-
node.remove();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (node instanceof Konva.Stage || node instanceof Konva.Layer || node instanceof Konva.Group) {
|
|
130
|
-
nodes.push(
|
|
131
|
-
...node.getChildren().map((o) => ({
|
|
132
|
-
target: o,
|
|
133
|
-
parent: node
|
|
134
|
-
}))
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// 作用:点击空白区域可选择
|
|
141
|
-
const clickMask = new Konva.Rect({
|
|
142
|
-
id: 'click-mask',
|
|
143
|
-
width: groupTarget.width(),
|
|
144
|
-
height: groupTarget.height()
|
|
145
|
-
});
|
|
146
|
-
groupTarget.add(clickMask);
|
|
147
|
-
clickMask.zIndex(1)
|
|
148
|
-
return groupTarget;
|
|
149
|
-
} catch (e) {
|
|
150
|
-
console.error(e);
|
|
151
|
-
return new Konva.Group();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { Render } from '../index';
|
|
3
|
+
import { PreviewDraw } from '../draws';
|
|
4
|
+
|
|
5
|
+
const gifler = (window as any).gifler;
|
|
6
|
+
|
|
7
|
+
export class AssetTool {
|
|
8
|
+
private render: Render;
|
|
9
|
+
// 同一个 svgXML 内容只转一次 Blob,避免重复创建 Blob URL
|
|
10
|
+
private svgBlobCache: Map<string, string> = new Map();
|
|
11
|
+
// 同地址 svg 只 fetch 一次,避免重复网络请求
|
|
12
|
+
private svgRawCache: Map<string, string> = new Map();
|
|
13
|
+
|
|
14
|
+
constructor(render: Render) {
|
|
15
|
+
this.render = render;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 加载 svg xml(带 Blob 缓存)
|
|
19
|
+
loadSvgXML(svgXML: string) {
|
|
20
|
+
let url = this.svgBlobCache.get(svgXML);
|
|
21
|
+
if (!url) {
|
|
22
|
+
const blob = new Blob([svgXML], { type: 'image/svg+xml' });
|
|
23
|
+
url = URL.createObjectURL(blob);
|
|
24
|
+
this.svgBlobCache.set(svgXML, url);
|
|
25
|
+
}
|
|
26
|
+
return new Promise<Konva.Image>((resolve) => {
|
|
27
|
+
Konva.Image.fromURL(url, (imageNode) => {
|
|
28
|
+
imageNode.setAttrs({ svgXML } as any);
|
|
29
|
+
resolve(imageNode);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// 加载 svg(带 fetch 缓存 + Blob 缓存)
|
|
35
|
+
async loadSvg(src: string) {
|
|
36
|
+
let rawSvg = this.svgRawCache.get(src);
|
|
37
|
+
if (!rawSvg) {
|
|
38
|
+
rawSvg = await (await fetch(src)).text();
|
|
39
|
+
this.svgRawCache.set(src, rawSvg);
|
|
40
|
+
}
|
|
41
|
+
const svgXML = this.render.setSvgXMLSettings(rawSvg, this.render.getAssetSettings());
|
|
42
|
+
return this.loadSvgXML(svgXML);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// 加载 gif
|
|
46
|
+
async loadGif(src: string) {
|
|
47
|
+
return new Promise<Konva.Image>((resolve) => {
|
|
48
|
+
const img = document.createElement('img');
|
|
49
|
+
img.onload = () => {
|
|
50
|
+
const canvas = document.createElement('canvas');
|
|
51
|
+
canvas.width = img.naturalWidth;
|
|
52
|
+
canvas.height = img.naturalHeight;
|
|
53
|
+
const gif = gifler(src);
|
|
54
|
+
gif.frames(canvas, (ctx: CanvasRenderingContext2D, frame: any) => {
|
|
55
|
+
ctx.drawImage(frame.buffer, frame.x, frame.y);
|
|
56
|
+
this.render.layer.draw();
|
|
57
|
+
// 更新预览(layer)
|
|
58
|
+
this.render.draws[PreviewDraw.NAME]?.layer.draw();
|
|
59
|
+
});
|
|
60
|
+
img.remove();
|
|
61
|
+
// TODO: 拖动 gif 素材产生大量 JS event listeners
|
|
62
|
+
resolve(new Konva.Image({ image: canvas, gif: src }));
|
|
63
|
+
}
|
|
64
|
+
img.src = src;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 加载图片
|
|
69
|
+
async loadImg(src: string) {
|
|
70
|
+
return new Promise<Konva.Image>((resolve) => {
|
|
71
|
+
Konva.Image.fromURL(src, (imageNode) => {
|
|
72
|
+
imageNode.setAttrs({ src } as any);
|
|
73
|
+
resolve(imageNode);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// 加载节点 json
|
|
79
|
+
async loadJson(src: string) {
|
|
80
|
+
try {
|
|
81
|
+
// 读取 json内容
|
|
82
|
+
const json = JSON.parse(await (await fetch(src)).text());
|
|
83
|
+
// 子素材
|
|
84
|
+
const assets = json.children;
|
|
85
|
+
// 刷新id
|
|
86
|
+
this.render.linkTool.jsonIdCover(assets);
|
|
87
|
+
// 生成空白 stage+layer
|
|
88
|
+
const stageEmpty = new Konva.Stage({ container: document.createElement('div') });
|
|
89
|
+
const layerEmpty = new Konva.Layer();
|
|
90
|
+
stageEmpty.add(layerEmpty);
|
|
91
|
+
// 空白 json 根
|
|
92
|
+
const jsonRoot = JSON.parse(stageEmpty.toJSON());
|
|
93
|
+
jsonRoot.children[0].children = [json];
|
|
94
|
+
// 重新加载 stage
|
|
95
|
+
const stageReload = Konva.Node.create(JSON.stringify(jsonRoot), document.createElement('div'));
|
|
96
|
+
// 目标 group(即 json 转化后的节点)
|
|
97
|
+
const groupTarget = stageReload.children[0].children[0] as Konva.Group;
|
|
98
|
+
// 释放内存
|
|
99
|
+
stageEmpty.destroy();
|
|
100
|
+
groupTarget.remove();
|
|
101
|
+
stageReload.destroy();
|
|
102
|
+
// 深度遍历加载子素材
|
|
103
|
+
const nodes: {
|
|
104
|
+
target: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node
|
|
105
|
+
parent?: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node
|
|
106
|
+
}[] = [{ target: groupTarget }];
|
|
107
|
+
while (nodes.length > 0) {
|
|
108
|
+
const item = nodes.shift();
|
|
109
|
+
if (item) {
|
|
110
|
+
const node = item.target;
|
|
111
|
+
if (node instanceof Konva.Image) {
|
|
112
|
+
if (node.attrs.svgXML) {
|
|
113
|
+
const n = await this.loadSvgXML(node.attrs.svgXML);
|
|
114
|
+
n.listening(false);
|
|
115
|
+
node.parent?.add(n);
|
|
116
|
+
node.remove();
|
|
117
|
+
} else if (node.attrs.gif) {
|
|
118
|
+
const n = await this.loadGif(node.attrs.gif);
|
|
119
|
+
n.listening(false);
|
|
120
|
+
node.parent?.add(n);
|
|
121
|
+
node.remove();
|
|
122
|
+
} else if (node.attrs.src) {
|
|
123
|
+
const n = await this.loadImg(node.attrs.src);
|
|
124
|
+
n.listening(false);
|
|
125
|
+
node.parent?.add(n);
|
|
126
|
+
node.remove();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (node instanceof Konva.Stage || node instanceof Konva.Layer || node instanceof Konva.Group) {
|
|
130
|
+
nodes.push(
|
|
131
|
+
...node.getChildren().map((o) => ({
|
|
132
|
+
target: o,
|
|
133
|
+
parent: node
|
|
134
|
+
}))
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// 作用:点击空白区域可选择
|
|
141
|
+
const clickMask = new Konva.Rect({
|
|
142
|
+
id: 'click-mask',
|
|
143
|
+
width: groupTarget.width(),
|
|
144
|
+
height: groupTarget.height()
|
|
145
|
+
});
|
|
146
|
+
groupTarget.add(clickMask);
|
|
147
|
+
clickMask.zIndex(1)
|
|
148
|
+
return groupTarget;
|
|
149
|
+
} catch (e) {
|
|
150
|
+
console.error(e);
|
|
151
|
+
return new Konva.Group();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|