aldehyde 0.2.493 → 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/column-chart/index.js +2 -2
- package/lib/lowcode-components/column-chart/index.js.map +1 -1
- 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/line-bar-chart/index.d.ts.map +1 -1
- package/lib/lowcode-components/line-bar-chart/index.js +6 -2
- package/lib/lowcode-components/line-bar-chart/index.js.map +1 -1
- package/lib/lowcode-components/line-chart/index.d.ts.map +1 -1
- package/lib/lowcode-components/line-chart/index.js +6 -2
- package/lib/lowcode-components/line-chart/index.js.map +1 -1
- 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/column-chart/index.tsx +2 -2
- 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/line-bar-chart/index.tsx +5 -2
- package/src/aldehyde/lowcode-components/line-chart/index.tsx +5 -2
- 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,68 +1,68 @@
|
|
|
1
|
-
import Konva from 'konva';
|
|
2
|
-
import { Render } from '../index';
|
|
3
|
-
import { Handler, MouseButton } from '../types';
|
|
4
|
-
import { LinkDraw, BgDraw, GraphDraw, RulerDraw, PreviewDraw } from '../draws';
|
|
5
|
-
|
|
6
|
-
export class DragHandlers implements Handler {
|
|
7
|
-
static readonly NAME = 'DragHandlers';
|
|
8
|
-
private render: Render;
|
|
9
|
-
constructor(render: Render) {
|
|
10
|
-
this.render = render;
|
|
11
|
-
}
|
|
12
|
-
// 右键是否按下
|
|
13
|
-
mousedownRight = false;
|
|
14
|
-
// 右键按下 stage 位置
|
|
15
|
-
mousedownStagePos = { x: 0, y: 0 };
|
|
16
|
-
// 右键按下位置
|
|
17
|
-
mousedownPointerPos = { x: 0, y: 0 };
|
|
18
|
-
handlers = {
|
|
19
|
-
stage: {
|
|
20
|
-
mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
|
|
21
|
-
// 拐点操作中,防止异常拖动
|
|
22
|
-
// 新建图形并拖动中
|
|
23
|
-
if (!(this.render.draws[LinkDraw.NAME] as LinkDraw)?.state.linkManualing && !this.render.graphType) {
|
|
24
|
-
if (e.evt.button === MouseButton["右键"] || (e.evt.ctrlKey && e.evt.button === MouseButton["左键"])) // mac 拖动画布快捷键
|
|
25
|
-
{
|
|
26
|
-
const stageState = this.render.getStageState();
|
|
27
|
-
// 鼠标右键
|
|
28
|
-
this.mousedownRight = true;
|
|
29
|
-
// 暂停元素 draggable
|
|
30
|
-
this.render.changeDraggable(false);
|
|
31
|
-
this.mousedownStagePos = { x: stageState.x, y: stageState.y };
|
|
32
|
-
const pos = this.render.stage.getPointerPosition();
|
|
33
|
-
if (pos) {
|
|
34
|
-
this.mousedownPointerPos = { x: pos.x, y: pos.y };
|
|
35
|
-
}
|
|
36
|
-
document.body.style.cursor = 'pointer';
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
mouseup: () => {
|
|
41
|
-
this.mousedownRight = false;
|
|
42
|
-
// 恢复元素 draggable
|
|
43
|
-
this.render.changeDraggable(!this.render.config.readonly);
|
|
44
|
-
document.body.style.cursor = 'default';
|
|
45
|
-
},
|
|
46
|
-
mousemove: () => {
|
|
47
|
-
if (this.mousedownRight) {
|
|
48
|
-
// 鼠标右键拖动
|
|
49
|
-
const pos = this.render.stage.getPointerPosition();
|
|
50
|
-
if (pos) {
|
|
51
|
-
const offsetX = pos.x - this.mousedownPointerPos.x;
|
|
52
|
-
const offsetY = pos.y - this.mousedownPointerPos.y;
|
|
53
|
-
// 移动 stage
|
|
54
|
-
this.render.stage.position({ x: this.mousedownStagePos.x + offsetX, y: this.mousedownStagePos.y + offsetY });
|
|
55
|
-
// 重绘
|
|
56
|
-
this.render.redraw([
|
|
57
|
-
BgDraw.NAME,
|
|
58
|
-
GraphDraw.NAME,
|
|
59
|
-
LinkDraw.NAME,
|
|
60
|
-
RulerDraw.NAME,
|
|
61
|
-
PreviewDraw.NAME
|
|
62
|
-
]);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { Render } from '../index';
|
|
3
|
+
import { Handler, MouseButton } from '../types';
|
|
4
|
+
import { LinkDraw, BgDraw, GraphDraw, RulerDraw, PreviewDraw } from '../draws';
|
|
5
|
+
|
|
6
|
+
export class DragHandlers implements Handler {
|
|
7
|
+
static readonly NAME = 'DragHandlers';
|
|
8
|
+
private render: Render;
|
|
9
|
+
constructor(render: Render) {
|
|
10
|
+
this.render = render;
|
|
11
|
+
}
|
|
12
|
+
// 右键是否按下
|
|
13
|
+
mousedownRight = false;
|
|
14
|
+
// 右键按下 stage 位置
|
|
15
|
+
mousedownStagePos = { x: 0, y: 0 };
|
|
16
|
+
// 右键按下位置
|
|
17
|
+
mousedownPointerPos = { x: 0, y: 0 };
|
|
18
|
+
handlers = {
|
|
19
|
+
stage: {
|
|
20
|
+
mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
|
|
21
|
+
// 拐点操作中,防止异常拖动
|
|
22
|
+
// 新建图形并拖动中
|
|
23
|
+
if (!(this.render.draws[LinkDraw.NAME] as LinkDraw)?.state.linkManualing && !this.render.graphType) {
|
|
24
|
+
if (e.evt.button === MouseButton["右键"] || (e.evt.ctrlKey && e.evt.button === MouseButton["左键"])) // mac 拖动画布快捷键
|
|
25
|
+
{
|
|
26
|
+
const stageState = this.render.getStageState();
|
|
27
|
+
// 鼠标右键
|
|
28
|
+
this.mousedownRight = true;
|
|
29
|
+
// 暂停元素 draggable
|
|
30
|
+
this.render.changeDraggable(false);
|
|
31
|
+
this.mousedownStagePos = { x: stageState.x, y: stageState.y };
|
|
32
|
+
const pos = this.render.stage.getPointerPosition();
|
|
33
|
+
if (pos) {
|
|
34
|
+
this.mousedownPointerPos = { x: pos.x, y: pos.y };
|
|
35
|
+
}
|
|
36
|
+
document.body.style.cursor = 'pointer';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
mouseup: () => {
|
|
41
|
+
this.mousedownRight = false;
|
|
42
|
+
// 恢复元素 draggable
|
|
43
|
+
this.render.changeDraggable(!this.render.config.readonly);
|
|
44
|
+
document.body.style.cursor = 'default';
|
|
45
|
+
},
|
|
46
|
+
mousemove: () => {
|
|
47
|
+
if (this.mousedownRight) {
|
|
48
|
+
// 鼠标右键拖动
|
|
49
|
+
const pos = this.render.stage.getPointerPosition();
|
|
50
|
+
if (pos) {
|
|
51
|
+
const offsetX = pos.x - this.mousedownPointerPos.x;
|
|
52
|
+
const offsetY = pos.y - this.mousedownPointerPos.y;
|
|
53
|
+
// 移动 stage
|
|
54
|
+
this.render.stage.position({ x: this.mousedownStagePos.x + offsetX, y: this.mousedownStagePos.y + offsetY });
|
|
55
|
+
// 重绘
|
|
56
|
+
this.render.redraw([
|
|
57
|
+
BgDraw.NAME,
|
|
58
|
+
GraphDraw.NAME,
|
|
59
|
+
LinkDraw.NAME,
|
|
60
|
+
RulerDraw.NAME,
|
|
61
|
+
PreviewDraw.NAME
|
|
62
|
+
]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
import Konva from 'konva';
|
|
2
|
-
import { Render } from '../index';
|
|
3
|
-
import { Handler } from '../types';
|
|
4
|
-
import { BaseGraph, Circle, Rect, Line, Bezier, Curve } from '../graphs';
|
|
5
|
-
import { GraphDraw } from '../draws';
|
|
6
|
-
|
|
7
|
-
export class GraphHandlers implements Handler {
|
|
8
|
-
static readonly NAME = 'GraphHandlers';
|
|
9
|
-
private render: Render;
|
|
10
|
-
constructor(render: Render) {
|
|
11
|
-
this.render = render;
|
|
12
|
-
}
|
|
13
|
-
graphing = false; // 新建图形中
|
|
14
|
-
currentGraph: BaseGraph | undefined; // 当前新建图形类型
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 获取鼠标位置,并处理为 相对大小
|
|
18
|
-
* @param attract 含磁贴计算
|
|
19
|
-
* @returns
|
|
20
|
-
*/
|
|
21
|
-
getStagePoint(attract = false) {
|
|
22
|
-
const pos = this.render.stage.getPointerPosition();
|
|
23
|
-
if (pos) {
|
|
24
|
-
const stageState = this.render.getStageState();
|
|
25
|
-
if (attract) { // 磁贴
|
|
26
|
-
const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
|
|
27
|
-
return {
|
|
28
|
-
x: this.render.toStageValue(transformerPos.x - stageState.x),
|
|
29
|
-
y: this.render.toStageValue(transformerPos.y - stageState.y)
|
|
30
|
-
};
|
|
31
|
-
} else {
|
|
32
|
-
return {
|
|
33
|
-
x: this.render.toStageValue(pos.x - stageState.x),
|
|
34
|
-
y: this.render.toStageValue(pos.y - stageState.y)
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
handlers = {
|
|
42
|
-
stage: {
|
|
43
|
-
mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
|
|
44
|
-
if (this.render.graphType) {
|
|
45
|
-
// 选中图形类型,开始
|
|
46
|
-
if (e.target === this.render.stage) {
|
|
47
|
-
this.graphing = true;
|
|
48
|
-
this.render.selectionTool.selectingClear();
|
|
49
|
-
this.render.linkTool.selectingClear();
|
|
50
|
-
const point = this.getStagePoint();
|
|
51
|
-
if (point) {
|
|
52
|
-
switch (this.render.graphType) {
|
|
53
|
-
case "Circle": // 新建 圆/椭圆 实例
|
|
54
|
-
this.currentGraph = new Circle(this.render, point);
|
|
55
|
-
break;
|
|
56
|
-
case "Rect": // 新建 矩形 实例
|
|
57
|
-
this.currentGraph = new Rect(this.render, point);
|
|
58
|
-
break;
|
|
59
|
-
case "Line": // 新建 直线、折线
|
|
60
|
-
this.currentGraph = new Line(this.render, point);
|
|
61
|
-
break;
|
|
62
|
-
case "Curve": // 新建 曲线
|
|
63
|
-
this.currentGraph = new Curve(this.render, point);
|
|
64
|
-
break;
|
|
65
|
-
case "Bezier": // 新建 贝赛尔曲线
|
|
66
|
-
this.currentGraph = new Bezier(this.render, point);
|
|
67
|
-
break;
|
|
68
|
-
default:
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// 初始化设置信息
|
|
73
|
-
if (this.currentGraph) {
|
|
74
|
-
const temSetting = this.render.getAssetSettings(this.currentGraph.group);
|
|
75
|
-
this.render.setAssetSettings(
|
|
76
|
-
this.currentGraph.group,
|
|
77
|
-
{
|
|
78
|
-
...temSetting,
|
|
79
|
-
stroke: temSetting.stroke || "#000000",
|
|
80
|
-
strokeWidth: temSetting.strokeWidth || 1,
|
|
81
|
-
fill: temSetting.fill || (["Circle", "Rect"].includes(this.render.graphType) ? "transparent" : "#000000"),
|
|
82
|
-
},
|
|
83
|
-
false
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
mousemove: () => {
|
|
91
|
-
if (this.graphing) {
|
|
92
|
-
if (this.currentGraph) {
|
|
93
|
-
const pos = this.getStagePoint(true);
|
|
94
|
-
if (pos) { // 新建并马上调整图形
|
|
95
|
-
this.currentGraph.drawMove(pos);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
mouseup: () => {
|
|
101
|
-
if (this.graphing) {
|
|
102
|
-
if (this.currentGraph) {
|
|
103
|
-
this.currentGraph.drawEnd(); // 调整结束
|
|
104
|
-
}
|
|
105
|
-
this.graphing = false; // 调整结束
|
|
106
|
-
this.render.changeGraphType(); // 清空图形类型选择
|
|
107
|
-
this.render.attractTool.alignLinesClear(); // 对齐线清除
|
|
108
|
-
this.render.redraw([GraphDraw.NAME]);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
1
|
+
import Konva from 'konva';
|
|
2
|
+
import { Render } from '../index';
|
|
3
|
+
import { Handler } from '../types';
|
|
4
|
+
import { BaseGraph, Circle, Rect, Line, Bezier, Curve } from '../graphs';
|
|
5
|
+
import { GraphDraw } from '../draws';
|
|
6
|
+
|
|
7
|
+
export class GraphHandlers implements Handler {
|
|
8
|
+
static readonly NAME = 'GraphHandlers';
|
|
9
|
+
private render: Render;
|
|
10
|
+
constructor(render: Render) {
|
|
11
|
+
this.render = render;
|
|
12
|
+
}
|
|
13
|
+
graphing = false; // 新建图形中
|
|
14
|
+
currentGraph: BaseGraph | undefined; // 当前新建图形类型
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* 获取鼠标位置,并处理为 相对大小
|
|
18
|
+
* @param attract 含磁贴计算
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
getStagePoint(attract = false) {
|
|
22
|
+
const pos = this.render.stage.getPointerPosition();
|
|
23
|
+
if (pos) {
|
|
24
|
+
const stageState = this.render.getStageState();
|
|
25
|
+
if (attract) { // 磁贴
|
|
26
|
+
const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
|
|
27
|
+
return {
|
|
28
|
+
x: this.render.toStageValue(transformerPos.x - stageState.x),
|
|
29
|
+
y: this.render.toStageValue(transformerPos.y - stageState.y)
|
|
30
|
+
};
|
|
31
|
+
} else {
|
|
32
|
+
return {
|
|
33
|
+
x: this.render.toStageValue(pos.x - stageState.x),
|
|
34
|
+
y: this.render.toStageValue(pos.y - stageState.y)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
handlers = {
|
|
42
|
+
stage: {
|
|
43
|
+
mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
|
|
44
|
+
if (this.render.graphType) {
|
|
45
|
+
// 选中图形类型,开始
|
|
46
|
+
if (e.target === this.render.stage) {
|
|
47
|
+
this.graphing = true;
|
|
48
|
+
this.render.selectionTool.selectingClear();
|
|
49
|
+
this.render.linkTool.selectingClear();
|
|
50
|
+
const point = this.getStagePoint();
|
|
51
|
+
if (point) {
|
|
52
|
+
switch (this.render.graphType) {
|
|
53
|
+
case "Circle": // 新建 圆/椭圆 实例
|
|
54
|
+
this.currentGraph = new Circle(this.render, point);
|
|
55
|
+
break;
|
|
56
|
+
case "Rect": // 新建 矩形 实例
|
|
57
|
+
this.currentGraph = new Rect(this.render, point);
|
|
58
|
+
break;
|
|
59
|
+
case "Line": // 新建 直线、折线
|
|
60
|
+
this.currentGraph = new Line(this.render, point);
|
|
61
|
+
break;
|
|
62
|
+
case "Curve": // 新建 曲线
|
|
63
|
+
this.currentGraph = new Curve(this.render, point);
|
|
64
|
+
break;
|
|
65
|
+
case "Bezier": // 新建 贝赛尔曲线
|
|
66
|
+
this.currentGraph = new Bezier(this.render, point);
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 初始化设置信息
|
|
73
|
+
if (this.currentGraph) {
|
|
74
|
+
const temSetting = this.render.getAssetSettings(this.currentGraph.group);
|
|
75
|
+
this.render.setAssetSettings(
|
|
76
|
+
this.currentGraph.group,
|
|
77
|
+
{
|
|
78
|
+
...temSetting,
|
|
79
|
+
stroke: temSetting.stroke || "#000000",
|
|
80
|
+
strokeWidth: temSetting.strokeWidth || 1,
|
|
81
|
+
fill: temSetting.fill || (["Circle", "Rect"].includes(this.render.graphType) ? "transparent" : "#000000"),
|
|
82
|
+
},
|
|
83
|
+
false
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
mousemove: () => {
|
|
91
|
+
if (this.graphing) {
|
|
92
|
+
if (this.currentGraph) {
|
|
93
|
+
const pos = this.getStagePoint(true);
|
|
94
|
+
if (pos) { // 新建并马上调整图形
|
|
95
|
+
this.currentGraph.drawMove(pos);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
mouseup: () => {
|
|
101
|
+
if (this.graphing) {
|
|
102
|
+
if (this.currentGraph) {
|
|
103
|
+
this.currentGraph.drawEnd(); // 调整结束
|
|
104
|
+
}
|
|
105
|
+
this.graphing = false; // 调整结束
|
|
106
|
+
this.render.changeGraphType(); // 清空图形类型选择
|
|
107
|
+
this.render.attractTool.alignLinesClear(); // 对齐线清除
|
|
108
|
+
this.render.redraw([GraphDraw.NAME]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { DragHandlers } from './drag-handlers';
|
|
2
|
-
export { ZoomHandlers } from './zoom-handlers';
|
|
3
|
-
export { DragOutsideHandlers } from './drag-outside-handlers';
|
|
4
|
-
export { SelectionHandlers } from './selection-handlers';
|
|
5
|
-
export { KeyMoveHandlers } from './key-move-handlers';
|
|
6
|
-
export { ShutcutHandlers } from './shutcut-handlers';
|
|
7
|
-
export { LinkHandlers } from './link-handlers';
|
|
8
|
-
export { GraphHandlers } from './graph-handlers';
|
|
9
|
-
export { TextHandlers } from './text-handlers';
|
|
1
|
+
export { DragHandlers } from './drag-handlers';
|
|
2
|
+
export { ZoomHandlers } from './zoom-handlers';
|
|
3
|
+
export { DragOutsideHandlers } from './drag-outside-handlers';
|
|
4
|
+
export { SelectionHandlers } from './selection-handlers';
|
|
5
|
+
export { KeyMoveHandlers } from './key-move-handlers';
|
|
6
|
+
export { ShutcutHandlers } from './shutcut-handlers';
|
|
7
|
+
export { LinkHandlers } from './link-handlers';
|
|
8
|
+
export { GraphHandlers } from './graph-handlers';
|
|
9
|
+
export { TextHandlers } from './text-handlers';
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import * as _ from 'lodash';
|
|
2
|
-
import { Render } from '../index';
|
|
3
|
-
import { Handler, MoveKey } from '../types';
|
|
4
|
-
import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw } from '../draws';
|
|
5
|
-
|
|
6
|
-
// 键盘控制组件移动
|
|
7
|
-
export class KeyMoveHandlers implements Handler {
|
|
8
|
-
static readonly NAME = 'KeyMoveHandlers';
|
|
9
|
-
private render: Render;
|
|
10
|
-
constructor(render: Render) {
|
|
11
|
-
this.render = render;
|
|
12
|
-
}
|
|
13
|
-
speed = 1;
|
|
14
|
-
speedMax = 20;
|
|
15
|
-
change = _.debounce(() => this.render.updateHistory(), 200); // 更新历史
|
|
16
|
-
handlers = {
|
|
17
|
-
dom: {
|
|
18
|
-
keydown: (e: GlobalEventHandlersEventMap['keydown']) => {
|
|
19
|
-
if (!e.ctrlKey) {
|
|
20
|
-
if (Object.values(MoveKey).map((o) => o.toString()).includes(e.code)) {
|
|
21
|
-
if (e.code === MoveKey["上"]) {
|
|
22
|
-
this.render.selectionTool.selectingNodesMove({ x: 0, y: -this.speed });
|
|
23
|
-
} else if (e.code === MoveKey["左"]) {
|
|
24
|
-
this.render.selectionTool.selectingNodesMove({ x: -this.speed, y: 0 });
|
|
25
|
-
} else if (e.code === MoveKey["右"]) {
|
|
26
|
-
this.render.selectionTool.selectingNodesMove({ x: this.speed, y: 0 });
|
|
27
|
-
} else if (e.code === MoveKey["下"]) {
|
|
28
|
-
this.render.selectionTool.selectingNodesMove({ x: 0, y: this.speed });
|
|
29
|
-
}
|
|
30
|
-
if (this.speed < this.speedMax) {
|
|
31
|
-
this.speed++;
|
|
32
|
-
}
|
|
33
|
-
this.change();
|
|
34
|
-
// 重绘
|
|
35
|
-
this.render.redraw([
|
|
36
|
-
GraphDraw.NAME,
|
|
37
|
-
LinkDraw.NAME,
|
|
38
|
-
RulerDraw.NAME,
|
|
39
|
-
PreviewDraw.NAME
|
|
40
|
-
]);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
keyup: () => {
|
|
45
|
-
this.speed = 1;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
import * as _ from 'lodash';
|
|
2
|
+
import { Render } from '../index';
|
|
3
|
+
import { Handler, MoveKey } from '../types';
|
|
4
|
+
import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw } from '../draws';
|
|
5
|
+
|
|
6
|
+
// 键盘控制组件移动
|
|
7
|
+
export class KeyMoveHandlers implements Handler {
|
|
8
|
+
static readonly NAME = 'KeyMoveHandlers';
|
|
9
|
+
private render: Render;
|
|
10
|
+
constructor(render: Render) {
|
|
11
|
+
this.render = render;
|
|
12
|
+
}
|
|
13
|
+
speed = 1;
|
|
14
|
+
speedMax = 20;
|
|
15
|
+
change = _.debounce(() => this.render.updateHistory(), 200); // 更新历史
|
|
16
|
+
handlers = {
|
|
17
|
+
dom: {
|
|
18
|
+
keydown: (e: GlobalEventHandlersEventMap['keydown']) => {
|
|
19
|
+
if (!e.ctrlKey) {
|
|
20
|
+
if (Object.values(MoveKey).map((o) => o.toString()).includes(e.code)) {
|
|
21
|
+
if (e.code === MoveKey["上"]) {
|
|
22
|
+
this.render.selectionTool.selectingNodesMove({ x: 0, y: -this.speed });
|
|
23
|
+
} else if (e.code === MoveKey["左"]) {
|
|
24
|
+
this.render.selectionTool.selectingNodesMove({ x: -this.speed, y: 0 });
|
|
25
|
+
} else if (e.code === MoveKey["右"]) {
|
|
26
|
+
this.render.selectionTool.selectingNodesMove({ x: this.speed, y: 0 });
|
|
27
|
+
} else if (e.code === MoveKey["下"]) {
|
|
28
|
+
this.render.selectionTool.selectingNodesMove({ x: 0, y: this.speed });
|
|
29
|
+
}
|
|
30
|
+
if (this.speed < this.speedMax) {
|
|
31
|
+
this.speed++;
|
|
32
|
+
}
|
|
33
|
+
this.change();
|
|
34
|
+
// 重绘
|
|
35
|
+
this.render.redraw([
|
|
36
|
+
GraphDraw.NAME,
|
|
37
|
+
LinkDraw.NAME,
|
|
38
|
+
RulerDraw.NAME,
|
|
39
|
+
PreviewDraw.NAME
|
|
40
|
+
]);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
keyup: () => {
|
|
45
|
+
this.speed = 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { Render } from '../index';
|
|
2
|
-
import { Handler } from '../types';
|
|
3
|
-
import { LinkDraw } from '../draws';
|
|
4
|
-
|
|
5
|
-
// 临时连接线
|
|
6
|
-
|
|
7
|
-
export class LinkHandlers implements Handler {
|
|
8
|
-
static readonly NAME = 'LinkHandlers';
|
|
9
|
-
private render: Render;
|
|
10
|
-
constructor(render: Render) {
|
|
11
|
-
this.render = render;
|
|
12
|
-
}
|
|
13
|
-
handlers = {
|
|
14
|
-
stage: {
|
|
15
|
-
mouseup: () => {
|
|
16
|
-
const linkDrawState = (this.render.draws[LinkDraw.NAME] as LinkDraw)?.state;
|
|
17
|
-
if (linkDrawState) { // 临时 连接线 移除
|
|
18
|
-
linkDrawState.linkingLine?.line.destroy();
|
|
19
|
-
linkDrawState.linkingLine = null;
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
mousemove: () => {
|
|
23
|
-
const linkDrawState = (this.render.draws[LinkDraw.NAME] as LinkDraw)?.state;
|
|
24
|
-
if (linkDrawState) {
|
|
25
|
-
const pos = this.render.stage.getPointerPosition();
|
|
26
|
-
if (pos) {
|
|
27
|
-
const stageState = this.render.getStageState();
|
|
28
|
-
if (linkDrawState.linkingLine) { // 临时 连接线 画
|
|
29
|
-
const { circle, line } = linkDrawState.linkingLine;
|
|
30
|
-
line.points(
|
|
31
|
-
[
|
|
32
|
-
[circle.x(), circle.y()],
|
|
33
|
-
[
|
|
34
|
-
this.render.toStageValue(pos.x - stageState.x),
|
|
35
|
-
this.render.toStageValue(pos.y - stageState.y)
|
|
36
|
-
]
|
|
37
|
-
].flat()
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
import { Render } from '../index';
|
|
2
|
+
import { Handler } from '../types';
|
|
3
|
+
import { LinkDraw } from '../draws';
|
|
4
|
+
|
|
5
|
+
// 临时连接线
|
|
6
|
+
|
|
7
|
+
export class LinkHandlers implements Handler {
|
|
8
|
+
static readonly NAME = 'LinkHandlers';
|
|
9
|
+
private render: Render;
|
|
10
|
+
constructor(render: Render) {
|
|
11
|
+
this.render = render;
|
|
12
|
+
}
|
|
13
|
+
handlers = {
|
|
14
|
+
stage: {
|
|
15
|
+
mouseup: () => {
|
|
16
|
+
const linkDrawState = (this.render.draws[LinkDraw.NAME] as LinkDraw)?.state;
|
|
17
|
+
if (linkDrawState) { // 临时 连接线 移除
|
|
18
|
+
linkDrawState.linkingLine?.line.destroy();
|
|
19
|
+
linkDrawState.linkingLine = null;
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
mousemove: () => {
|
|
23
|
+
const linkDrawState = (this.render.draws[LinkDraw.NAME] as LinkDraw)?.state;
|
|
24
|
+
if (linkDrawState) {
|
|
25
|
+
const pos = this.render.stage.getPointerPosition();
|
|
26
|
+
if (pos) {
|
|
27
|
+
const stageState = this.render.getStageState();
|
|
28
|
+
if (linkDrawState.linkingLine) { // 临时 连接线 画
|
|
29
|
+
const { circle, line } = linkDrawState.linkingLine;
|
|
30
|
+
line.points(
|
|
31
|
+
[
|
|
32
|
+
[circle.x(), circle.y()],
|
|
33
|
+
[
|
|
34
|
+
this.render.toStageValue(pos.x - stageState.x),
|
|
35
|
+
this.render.toStageValue(pos.y - stageState.y)
|
|
36
|
+
]
|
|
37
|
+
].flat()
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { Render } from '../index';
|
|
2
|
-
import { Handler, ShutcutKey } from '../types';
|
|
3
|
-
|
|
4
|
-
export class ShutcutHandlers implements Handler {
|
|
5
|
-
static readonly NAME = 'ShutcutHandlers';
|
|
6
|
-
private render: Render;
|
|
7
|
-
constructor(render: Render) {
|
|
8
|
-
this.render = render;
|
|
9
|
-
}
|
|
10
|
-
handlers = {
|
|
11
|
-
dom: {
|
|
12
|
-
keydown: (e: GlobalEventHandlersEventMap['keydown']) => {
|
|
13
|
-
if (!this.render.config.readonly) {
|
|
14
|
-
if (e.ctrlKey || e.metaKey) {
|
|
15
|
-
if (e.code === ShutcutKey.C) {
|
|
16
|
-
this.render.copyTool.pasteStart();
|
|
17
|
-
} else if (e.code === ShutcutKey.V) {
|
|
18
|
-
this.render.copyTool.pasteEnd();
|
|
19
|
-
} else if (e.code === ShutcutKey.Z) {
|
|
20
|
-
if (e.shiftKey) {
|
|
21
|
-
this.render.nextHistory();
|
|
22
|
-
} else {
|
|
23
|
-
this.render.prevHistory();
|
|
24
|
-
}
|
|
25
|
-
} else if (e.code === ShutcutKey.A) {
|
|
26
|
-
this.render.selectionTool.selectAll();
|
|
27
|
-
}
|
|
28
|
-
} else if (e.code === ShutcutKey["删除"] || e.code === ShutcutKey.Backspace) {
|
|
29
|
-
this.render.remove(this.render.selectionTool.selectingNodes);
|
|
30
|
-
// 删除 连接线
|
|
31
|
-
this.render.linkTool.remove();
|
|
32
|
-
} else if (e.code === ShutcutKey.Esc) {
|
|
33
|
-
this.render.selectionTool.selectingClear();
|
|
34
|
-
this.render.linkTool.selectingClear();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (e.code === ShutcutKey.R) {
|
|
38
|
-
if (e.ctrlKey || e.metaKey) {
|
|
39
|
-
window.location.reload();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
import { Render } from '../index';
|
|
2
|
+
import { Handler, ShutcutKey } from '../types';
|
|
3
|
+
|
|
4
|
+
export class ShutcutHandlers implements Handler {
|
|
5
|
+
static readonly NAME = 'ShutcutHandlers';
|
|
6
|
+
private render: Render;
|
|
7
|
+
constructor(render: Render) {
|
|
8
|
+
this.render = render;
|
|
9
|
+
}
|
|
10
|
+
handlers = {
|
|
11
|
+
dom: {
|
|
12
|
+
keydown: (e: GlobalEventHandlersEventMap['keydown']) => {
|
|
13
|
+
if (!this.render.config.readonly) {
|
|
14
|
+
if (e.ctrlKey || e.metaKey) {
|
|
15
|
+
if (e.code === ShutcutKey.C) {
|
|
16
|
+
this.render.copyTool.pasteStart();
|
|
17
|
+
} else if (e.code === ShutcutKey.V) {
|
|
18
|
+
this.render.copyTool.pasteEnd();
|
|
19
|
+
} else if (e.code === ShutcutKey.Z) {
|
|
20
|
+
if (e.shiftKey) {
|
|
21
|
+
this.render.nextHistory();
|
|
22
|
+
} else {
|
|
23
|
+
this.render.prevHistory();
|
|
24
|
+
}
|
|
25
|
+
} else if (e.code === ShutcutKey.A) {
|
|
26
|
+
this.render.selectionTool.selectAll();
|
|
27
|
+
}
|
|
28
|
+
} else if (e.code === ShutcutKey["删除"] || e.code === ShutcutKey.Backspace) {
|
|
29
|
+
this.render.remove(this.render.selectionTool.selectingNodes);
|
|
30
|
+
// 删除 连接线
|
|
31
|
+
this.render.linkTool.remove();
|
|
32
|
+
} else if (e.code === ShutcutKey.Esc) {
|
|
33
|
+
this.render.selectionTool.selectingClear();
|
|
34
|
+
this.render.linkTool.selectingClear();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (e.code === ShutcutKey.R) {
|
|
38
|
+
if (e.ctrlKey || e.metaKey) {
|
|
39
|
+
window.location.reload();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|