aldehyde 0.2.472 → 0.2.474

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 (116) hide show
  1. package/lib/controls/entity-select/entity-select.js +1 -1
  2. package/lib/controls/entity-select/entity-select.js.map +1 -1
  3. package/lib/controls/entry-control.js +2 -2
  4. package/lib/controls/entry-control.js.map +1 -1
  5. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  6. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +12 -12
  7. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js.map +1 -1
  8. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  9. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  11. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  12. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts +5 -0
  13. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +1 -0
  14. package/lib/draw-canvas/edit/components/asset-bar/index.js +78 -0
  15. package/lib/draw-canvas/edit/components/asset-bar/index.js.map +1 -0
  16. package/lib/draw-canvas/edit/components/asset-bar/index.less +36 -0
  17. package/lib/draw-canvas/edit/components/main-header/index.d.ts +14 -0
  18. package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +1 -0
  19. package/lib/draw-canvas/edit/components/main-header/index.js +163 -0
  20. package/lib/draw-canvas/edit/components/main-header/index.js.map +1 -0
  21. package/lib/draw-canvas/edit/components/main-header/index.less +21 -0
  22. package/lib/draw-canvas/edit/components/render/index.d.ts +86 -0
  23. package/lib/draw-canvas/edit/components/render/index.d.ts.map +1 -0
  24. package/lib/draw-canvas/edit/components/render/index.js +686 -0
  25. package/lib/draw-canvas/edit/components/render/index.js.map +1 -0
  26. package/lib/draw-canvas/edit/components/render/types.d.ts +243 -0
  27. package/lib/draw-canvas/edit/components/render/types.d.ts.map +1 -0
  28. package/lib/draw-canvas/edit/components/render/types.js +66 -0
  29. package/lib/draw-canvas/edit/components/render/types.js.map +1 -0
  30. package/lib/draw-canvas/edit/components/setting-form/index.d.ts +19 -0
  31. package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +1 -0
  32. package/lib/draw-canvas/edit/components/setting-form/index.js +164 -0
  33. package/lib/draw-canvas/edit/components/setting-form/index.js.map +1 -0
  34. package/lib/draw-canvas/edit/index.d.ts +5 -0
  35. package/lib/draw-canvas/edit/index.d.ts.map +1 -0
  36. package/lib/draw-canvas/edit/index.js +112 -0
  37. package/lib/draw-canvas/edit/index.js.map +1 -0
  38. package/lib/draw-canvas/edit/index.less +34 -0
  39. package/lib/form/form-Item-group.d.ts.map +1 -1
  40. package/lib/form/form-Item-group.js +1 -1
  41. package/lib/form/form-Item-group.js.map +1 -1
  42. package/lib/icon/local-aliIcon/iconfont.js +5 -5
  43. package/lib/icon/local-aliIcon/iconfont.js.map +1 -1
  44. package/lib/table/relation-table.d.ts +4 -0
  45. package/lib/table/relation-table.d.ts.map +1 -1
  46. package/lib/tmpl/hcservice-v3.d.ts +1 -0
  47. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  48. package/lib/tmpl/hcservice-v3.js +27 -0
  49. package/lib/tmpl/hcservice-v3.js.map +1 -1
  50. package/lib/tmpl/interface.d.ts +4 -0
  51. package/lib/tmpl/interface.d.ts.map +1 -1
  52. package/lib/tmpl/interface.js.map +1 -1
  53. package/lib/units/index.d.ts +1 -0
  54. package/lib/units/index.d.ts.map +1 -1
  55. package/lib/units/index.js +16 -0
  56. package/lib/units/index.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/aldehyde/controls/entity-select/entity-select.tsx +1 -1
  59. package/src/aldehyde/controls/entry-control.tsx +2 -2
  60. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  61. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +1 -1
  62. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  63. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  64. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  65. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  66. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.less +36 -0
  67. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.tsx +93 -0
  68. package/src/aldehyde/draw-canvas/edit/components/main-header/index.less +21 -0
  69. package/src/aldehyde/draw-canvas/edit/components/main-header/index.tsx +187 -0
  70. package/src/aldehyde/draw-canvas/edit/components/render/draws/bg-draw.ts +98 -0
  71. package/src/aldehyde/draw-canvas/edit/components/render/draws/contextmenu-draw.ts +307 -0
  72. package/src/aldehyde/draw-canvas/edit/components/render/draws/graph-draw.ts +251 -0
  73. package/src/aldehyde/draw-canvas/edit/components/render/draws/index.ts +7 -0
  74. package/src/aldehyde/draw-canvas/edit/components/render/draws/link-draw.ts +1416 -0
  75. package/src/aldehyde/draw-canvas/edit/components/render/draws/preview-draw.ts +257 -0
  76. package/src/aldehyde/draw-canvas/edit/components/render/draws/ref-line-draw.ts +72 -0
  77. package/src/aldehyde/draw-canvas/edit/components/render/draws/ruler-draw.ts +167 -0
  78. package/src/aldehyde/draw-canvas/edit/components/render/graphs/base-graph.ts +241 -0
  79. package/src/aldehyde/draw-canvas/edit/components/render/graphs/bezier.ts +542 -0
  80. package/src/aldehyde/draw-canvas/edit/components/render/graphs/circle.ts +700 -0
  81. package/src/aldehyde/draw-canvas/edit/components/render/graphs/curve.ts +501 -0
  82. package/src/aldehyde/draw-canvas/edit/components/render/graphs/index.ts +6 -0
  83. package/src/aldehyde/draw-canvas/edit/components/render/graphs/line.ts +494 -0
  84. package/src/aldehyde/draw-canvas/edit/components/render/graphs/rect.ts +681 -0
  85. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-handlers.ts +69 -0
  86. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-outside-handlers.ts +162 -0
  87. package/src/aldehyde/draw-canvas/edit/components/render/handlers/graph-handlers.ts +108 -0
  88. package/src/aldehyde/draw-canvas/edit/components/render/handlers/index.ts +9 -0
  89. package/src/aldehyde/draw-canvas/edit/components/render/handlers/key-move-handlers.ts +50 -0
  90. package/src/aldehyde/draw-canvas/edit/components/render/handlers/link-handlers.ts +46 -0
  91. package/src/aldehyde/draw-canvas/edit/components/render/handlers/selection-handlers.ts +385 -0
  92. package/src/aldehyde/draw-canvas/edit/components/render/handlers/shutcut-handlers.ts +46 -0
  93. package/src/aldehyde/draw-canvas/edit/components/render/handlers/text-handlers.ts +82 -0
  94. package/src/aldehyde/draw-canvas/edit/components/render/handlers/zoom-handlers.ts +60 -0
  95. package/src/aldehyde/draw-canvas/edit/components/render/index.ts +768 -0
  96. package/src/aldehyde/draw-canvas/edit/components/render/tools/align-tool.ts +91 -0
  97. package/src/aldehyde/draw-canvas/edit/components/render/tools/asset-tool.ts +142 -0
  98. package/src/aldehyde/draw-canvas/edit/components/render/tools/attract-tool.ts +440 -0
  99. package/src/aldehyde/draw-canvas/edit/components/render/tools/copy-tool.ts +269 -0
  100. package/src/aldehyde/draw-canvas/edit/components/render/tools/import-export-tool.ts +603 -0
  101. package/src/aldehyde/draw-canvas/edit/components/render/tools/index.ts +9 -0
  102. package/src/aldehyde/draw-canvas/edit/components/render/tools/link-tool.ts +225 -0
  103. package/src/aldehyde/draw-canvas/edit/components/render/tools/position-tool.ts +212 -0
  104. package/src/aldehyde/draw-canvas/edit/components/render/tools/selection-tool.ts +132 -0
  105. package/src/aldehyde/draw-canvas/edit/components/render/tools/z-index-tool.ts +227 -0
  106. package/src/aldehyde/draw-canvas/edit/components/render/types.ts +287 -0
  107. package/src/aldehyde/draw-canvas/edit/components/render/utils/a-star.ts +116 -0
  108. package/src/aldehyde/draw-canvas/edit/components/render/utils/bezier-scene-func.ts +73 -0
  109. package/src/aldehyde/draw-canvas/edit/components/setting-form/index.tsx +200 -0
  110. package/src/aldehyde/draw-canvas/edit/index.less +34 -0
  111. package/src/aldehyde/draw-canvas/edit/index.tsx +138 -0
  112. package/src/aldehyde/form/form-Item-group.tsx +1 -0
  113. package/src/aldehyde/icon/local-aliIcon/iconfont.js +1 -1
  114. package/src/aldehyde/tmpl/hcservice-v3.tsx +14 -0
  115. package/src/aldehyde/tmpl/interface.tsx +2 -0
  116. package/src/aldehyde/units/index.tsx +15 -0
@@ -0,0 +1,69 @@
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
+ // @ts-ignore
8
+ static readonly name = 'Drag';
9
+ private render: Render;
10
+ constructor(render: Render) {
11
+ this.render = render;
12
+ }
13
+ // 右键是否按下
14
+ mousedownRight = false;
15
+ // 右键按下 stage 位置
16
+ mousedownStagePos = { x: 0, y: 0 };
17
+ // 右键按下位置
18
+ mousedownPointerPos = { x: 0, y: 0 };
19
+ handlers = {
20
+ stage: {
21
+ mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
22
+ // 拐点操作中,防止异常拖动
23
+ // 新建图形并拖动中
24
+ if (!(this.render.draws[LinkDraw.name] as LinkDraw)?.state.linkManualing && !this.render.graphType) {
25
+ if (e.evt.button === MouseButton["右键"] || (e.evt.ctrlKey && e.evt.button === MouseButton["左键"])) // mac 拖动画布快捷键
26
+ {
27
+ const stageState = this.render.getStageState();
28
+ // 鼠标右键
29
+ this.mousedownRight = true;
30
+ // 暂停元素 draggable
31
+ this.render.changeDraggable(false);
32
+ this.mousedownStagePos = { x: stageState.x, y: stageState.y };
33
+ const pos = this.render.stage.getPointerPosition();
34
+ if (pos) {
35
+ this.mousedownPointerPos = { x: pos.x, y: pos.y };
36
+ }
37
+ document.body.style.cursor = 'pointer';
38
+ }
39
+ }
40
+ },
41
+ mouseup: () => {
42
+ this.mousedownRight = false;
43
+ // 恢复元素 draggable
44
+ this.render.changeDraggable(!this.render.config.readonly);
45
+ document.body.style.cursor = 'default';
46
+ },
47
+ mousemove: () => {
48
+ if (this.mousedownRight) {
49
+ // 鼠标右键拖动
50
+ const pos = this.render.stage.getPointerPosition();
51
+ if (pos) {
52
+ const offsetX = pos.x - this.mousedownPointerPos.x;
53
+ const offsetY = pos.y - this.mousedownPointerPos.y;
54
+ // 移动 stage
55
+ this.render.stage.position({ x: this.mousedownStagePos.x + offsetX, y: this.mousedownStagePos.y + offsetY });
56
+ // 重绘
57
+ this.render.redraw([
58
+ BgDraw.name,
59
+ GraphDraw.name,
60
+ LinkDraw.name,
61
+ RulerDraw.name,
62
+ PreviewDraw.name
63
+ ]);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,162 @@
1
+ import Konva from 'konva';
2
+ import { nanoid } from 'nanoid';
3
+ import { Render } from '../index';
4
+ import { Handler, AssetInfoPoint, ImageType, AssetType, LinkDrawPoint } from '../types';
5
+ import { RefLineDraw, PreviewDraw } from '../draws';
6
+
7
+ export class DragOutsideHandlers implements Handler {
8
+ // @ts-ignore
9
+ static readonly name = 'DragOutside';
10
+ private render: Render;
11
+ constructor(render: Render) {
12
+ this.render = render;
13
+ }
14
+ handlers = {
15
+ dom: {
16
+ dragenter: (e: GlobalEventHandlersEventMap['dragenter']) => {
17
+ this.render.stage.setPointersPositions(e);
18
+ // 更新参考线
19
+ this.render.redraw([RefLineDraw.name]);
20
+ },
21
+ dragover: (e: GlobalEventHandlersEventMap['dragover']) => {
22
+ this.render.stage.setPointersPositions(e);
23
+ // 更新参考线
24
+ this.render.redraw([RefLineDraw.name]);
25
+ },
26
+ drop: (e: GlobalEventHandlersEventMap['drop']) => {
27
+ const src = e.dataTransfer?.getData('src');
28
+ // 接收连接点信息
29
+ let morePoints: AssetInfoPoint[] = [];
30
+ const morePointsTxt = e.dataTransfer?.getData('points') ?? '[]';
31
+ try {
32
+ morePoints = JSON.parse(morePointsTxt);
33
+ } catch (e) {
34
+ console.error(e);
35
+ }
36
+ const type = e.dataTransfer?.getData('type');
37
+ if (src && type) {
38
+ const stageState = this.render.getStageState();
39
+ this.render.stage.setPointersPositions(e);
40
+ const pos = this.render.stage.getPointerPosition();
41
+ if (pos) {
42
+ this.render.assetTool[
43
+ type === ImageType.svg
44
+ ? `loadSvg`
45
+ : type === ImageType.gif
46
+ ? 'loadGif'
47
+ : type === 'json'
48
+ ? 'loadJson'
49
+ : 'loadImg'
50
+ ](src).then((target: Konva.Image | Konva.Group) => {
51
+ let group = null;
52
+ // 默认连接点
53
+ let points: AssetInfoPoint[] = [];
54
+ // 图片素材
55
+ if (target instanceof Konva.Image) {
56
+ group = new Konva.Group({
57
+ id: nanoid(),
58
+ width: target.width(),
59
+ height: target.height(),
60
+ name: 'asset',
61
+ assetType: AssetType.Image,
62
+ draggable: true,
63
+ imageType:
64
+ type !== 'json'
65
+ ? type === ImageType.svg
66
+ ? ImageType.svg
67
+ : type === ImageType.gif
68
+ ? ImageType.gif
69
+ : ImageType.other
70
+ : undefined
71
+ });
72
+ this.render.setAssetSettings(group, this.render.getAssetSettings(), false);
73
+ group.add(target);
74
+ points = [
75
+ { x: 0, y: group.height() / 2, direction: 'left' }, // 左
76
+ { x: group.width(), y: group.height() / 2, direction: 'right' }, // 右
77
+ { x: group.width() / 2, y: 0, direction: 'top' }, // 上
78
+ { x: group.width() / 2, y: group.height(), direction: 'bottom' } // 下
79
+ ];
80
+ } else {
81
+ // json 素材
82
+ target.id(nanoid());
83
+ target.setAttrs({
84
+ name: 'asset',
85
+ assetType: AssetType.Json,
86
+ draggable: true
87
+ });
88
+ group = target;
89
+ this.render.linkTool.groupIdCover(group);
90
+ }
91
+ target.setAttrs({ x: 0, y: 0 } as any);
92
+ this.render.layer.add(group);
93
+ const x = this.render.toStageValue(pos.x - stageState.x) - group.width() / 2;
94
+ const y = this.render.toStageValue(pos.y - stageState.y) - group.height() / 2;
95
+ group.setAttrs({ x, y });
96
+ // 更新坐标记录
97
+ this.render.setAssetSettings(group, this.render.getAssetSettings(group), false);
98
+ // 自定义连接点 覆盖 默认连接点
99
+ if (Array.isArray(morePoints) && morePoints.length > 0) {
100
+ points = morePoints;
101
+ }
102
+ // 连接点信息
103
+ group.setAttrs({
104
+ points: points.map(
105
+ (o) =>
106
+ ({
107
+ ...o,
108
+ id: nanoid(),
109
+ groupId: group.id(),
110
+ visible: false,
111
+ pairs: [],
112
+ direction: o.direction
113
+ }) as LinkDrawPoint
114
+ )
115
+ });
116
+ // 连接点(锚点)
117
+ for (const point of group.getAttr('points') ?? []) {
118
+ group.add(
119
+ new Konva.Circle({
120
+ name: 'link-anchor',
121
+ id: point.id,
122
+ x: point.x,
123
+ y: point.y,
124
+ radius: this.render.toStageValue(1),
125
+ stroke: 'rgba(0,0,255,1)',
126
+ strokeWidth: this.render.toStageValue(2),
127
+ visible: false,
128
+ direction: point.direction
129
+ })
130
+ );
131
+ }
132
+ group.on('mouseenter', () => { // 显示 连接点
133
+ this.render.linkTool.pointsVisible(true, group);
134
+ });
135
+ // hover 框(多选时才显示)
136
+ group.add(
137
+ new Konva.Rect({
138
+ id: 'hoverRect',
139
+ width: target.width(),
140
+ height: target.height(),
141
+ fill: 'rgba(0,255,0,0.3)',
142
+ visible: false
143
+ })
144
+ );
145
+
146
+ group.on('mouseleave', () => {
147
+ // 隐藏 连接点
148
+ this.render.linkTool.pointsVisible(false, group);
149
+ // 隐藏 hover 框
150
+ group.findOne('#hoverRect')?.visible(false);
151
+ });
152
+ // 更新历史
153
+ this.render.updateHistory();
154
+ // 重绘
155
+ this.render.redraw([PreviewDraw.name]);
156
+ })
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
@@ -0,0 +1,108 @@
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
+ // @ts-ignore
9
+ static readonly name = 'Graph';
10
+ private render: Render;
11
+ constructor(render: Render) {
12
+ this.render = render;
13
+ }
14
+ graphing = false; // 新建图形中
15
+ currentGraph: BaseGraph | undefined; // 当前新建图形类型
16
+
17
+ /**
18
+ * 获取鼠标位置,并处理为 相对大小
19
+ * @param attract 含磁贴计算
20
+ * @returns
21
+ */
22
+ getStagePoint(attract = false) {
23
+ const pos = this.render.stage.getPointerPosition();
24
+ if (pos) {
25
+ const stageState = this.render.getStageState();
26
+ if (attract) { // 磁贴
27
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
28
+ return {
29
+ x: this.render.toStageValue(transformerPos.x - stageState.x),
30
+ y: this.render.toStageValue(transformerPos.y - stageState.y)
31
+ };
32
+ } else {
33
+ return {
34
+ x: this.render.toStageValue(pos.x - stageState.x),
35
+ y: this.render.toStageValue(pos.y - stageState.y)
36
+ };
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+
42
+ handlers = {
43
+ stage: {
44
+ mousedown: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['mousedown']>) => {
45
+ if (this.render.graphType) {
46
+ // 选中图形类型,开始
47
+ if (e.target === this.render.stage) {
48
+ this.graphing = true;
49
+ this.render.selectionTool.selectingClear();
50
+ this.render.linkTool.selectingClear();
51
+ const point = this.getStagePoint();
52
+ if (point) {
53
+ switch (this.render.graphType) {
54
+ case "Circle": // 新建 圆/椭圆 实例
55
+ this.currentGraph = new Circle(this.render, point);
56
+ break;
57
+ case "Rect": // 新建 矩形 实例
58
+ this.currentGraph = new Rect(this.render, point);
59
+ break;
60
+ case "Line": // 新建 直线、折线
61
+ this.currentGraph = new Line(this.render, point);
62
+ break;
63
+ case "Curve": // 新建 曲线
64
+ this.currentGraph = new Curve(this.render, point);
65
+ break;
66
+ case "Bezier": // 新建 贝赛尔曲线
67
+ this.currentGraph = new Bezier(this.render, point);
68
+ break;
69
+ default:
70
+ break;
71
+ }
72
+
73
+ // 初始化设置信息
74
+ if (this.currentGraph) {
75
+ this.render.setAssetSettings(
76
+ this.currentGraph.group,
77
+ this.render.getAssetSettings(this.currentGraph.group),
78
+ false
79
+ );
80
+ }
81
+ }
82
+ }
83
+ }
84
+ },
85
+ mousemove: () => {
86
+ if (this.graphing) {
87
+ if (this.currentGraph) {
88
+ const pos = this.getStagePoint(true);
89
+ if (pos) { // 新建并马上调整图形
90
+ this.currentGraph.drawMove(pos);
91
+ }
92
+ }
93
+ }
94
+ },
95
+ mouseup: () => {
96
+ if (this.graphing) {
97
+ if (this.currentGraph) {
98
+ this.currentGraph.drawEnd(); // 调整结束
99
+ }
100
+ this.graphing = false; // 调整结束
101
+ this.render.changeGraphType(); // 清空图形类型选择
102
+ this.render.attractTool.alignLinesClear(); // 对齐线清除
103
+ this.render.redraw([GraphDraw.name]);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
@@ -0,0 +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';
@@ -0,0 +1,50 @@
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
+ // @ts-ignore
9
+ static readonly name = 'KeyMove';
10
+ private render: Render;
11
+ constructor(render: Render) {
12
+ this.render = render;
13
+ }
14
+ speed = 1;
15
+ speedMax = 20;
16
+ change = _.debounce(() => this.render.updateHistory(), 200); // 更新历史
17
+ handlers = {
18
+ dom: {
19
+ keydown: (e: GlobalEventHandlersEventMap['keydown']) => {
20
+ if (!e.ctrlKey) {
21
+ if (Object.values(MoveKey).map((o) => o.toString()).includes(e.code)) {
22
+ if (e.code === MoveKey["上"]) {
23
+ this.render.selectionTool.selectingNodesMove({ x: 0, y: -this.speed });
24
+ } else if (e.code === MoveKey["左"]) {
25
+ this.render.selectionTool.selectingNodesMove({ x: -this.speed, y: 0 });
26
+ } else if (e.code === MoveKey["右"]) {
27
+ this.render.selectionTool.selectingNodesMove({ x: this.speed, y: 0 });
28
+ } else if (e.code === MoveKey["下"]) {
29
+ this.render.selectionTool.selectingNodesMove({ x: 0, y: this.speed });
30
+ }
31
+ if (this.speed < this.speedMax) {
32
+ this.speed++;
33
+ }
34
+ this.change();
35
+ // 重绘
36
+ this.render.redraw([
37
+ GraphDraw.name,
38
+ LinkDraw.name,
39
+ RulerDraw.name,
40
+ PreviewDraw.name
41
+ ]);
42
+ }
43
+ }
44
+ },
45
+ keyup: () => {
46
+ this.speed = 1;
47
+ }
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,46 @@
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
+ // @ts-ignore
9
+ static readonly name = 'Link';
10
+ private render: Render;
11
+ constructor(render: Render) {
12
+ this.render = render;
13
+ }
14
+ handlers = {
15
+ stage: {
16
+ mouseup: () => {
17
+ const linkDrawState = (this.render.draws[LinkDraw.name] as LinkDraw)?.state;
18
+ if (linkDrawState) { // 临时 连接线 移除
19
+ linkDrawState.linkingLine?.line.destroy();
20
+ linkDrawState.linkingLine = null;
21
+ }
22
+ },
23
+ mousemove: () => {
24
+ const linkDrawState = (this.render.draws[LinkDraw.name] as LinkDraw)?.state;
25
+ if (linkDrawState) {
26
+ const pos = this.render.stage.getPointerPosition();
27
+ if (pos) {
28
+ const stageState = this.render.getStageState();
29
+ if (linkDrawState.linkingLine) { // 临时 连接线 画
30
+ const { circle, line } = linkDrawState.linkingLine;
31
+ line.points(
32
+ [
33
+ [circle.x(), circle.y()],
34
+ [
35
+ this.render.toStageValue(pos.x - stageState.x),
36
+ this.render.toStageValue(pos.y - stageState.y)
37
+ ]
38
+ ].flat()
39
+ );
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }