aldehyde 0.2.473 → 0.2.475

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/lib/controls/action/utils.d.ts +1 -1
  2. package/lib/controls/entity-select/entity-select.d.ts +2 -2
  3. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  4. package/lib/controls/entity-select/entity-select.js +16 -7
  5. package/lib/controls/entity-select/entity-select.js.map +1 -1
  6. package/lib/controls/entry-control.d.ts.map +1 -1
  7. package/lib/controls/entry-control.js +3 -2
  8. package/lib/controls/entry-control.js.map +1 -1
  9. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +12 -12
  11. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js.map +1 -1
  12. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  13. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  14. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  15. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  16. package/lib/controls/select/index.d.ts.map +1 -1
  17. package/lib/controls/select/index.js +13 -7
  18. package/lib/controls/select/index.js.map +1 -1
  19. package/lib/controls/text/index.less +1 -0
  20. package/lib/controls/view-control.d.ts.map +1 -1
  21. package/lib/controls/view-control.js +1 -0
  22. package/lib/controls/view-control.js.map +1 -1
  23. package/lib/detail/button/edit-button.d.ts.map +1 -1
  24. package/lib/detail/button/edit-button.js +23 -11
  25. package/lib/detail/button/edit-button.js.map +1 -1
  26. package/lib/detail/button/view-button.d.ts.map +1 -1
  27. package/lib/detail/button/view-button.js +21 -10
  28. package/lib/detail/button/view-button.js.map +1 -1
  29. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts +5 -0
  30. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +1 -0
  31. package/lib/draw-canvas/edit/components/asset-bar/index.js +79 -0
  32. package/lib/draw-canvas/edit/components/asset-bar/index.js.map +1 -0
  33. package/lib/draw-canvas/edit/components/asset-bar/index.less +36 -0
  34. package/lib/draw-canvas/edit/components/main-header/index.d.ts +19 -0
  35. package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +1 -0
  36. package/lib/draw-canvas/edit/components/main-header/index.js +203 -0
  37. package/lib/draw-canvas/edit/components/main-header/index.js.map +1 -0
  38. package/lib/draw-canvas/edit/components/main-header/index.less +21 -0
  39. package/lib/draw-canvas/edit/components/render/index.d.ts +90 -0
  40. package/lib/draw-canvas/edit/components/render/index.d.ts.map +1 -0
  41. package/lib/draw-canvas/edit/components/render/index.js +692 -0
  42. package/lib/draw-canvas/edit/components/render/index.js.map +1 -0
  43. package/lib/draw-canvas/edit/components/render/types.d.ts +247 -0
  44. package/lib/draw-canvas/edit/components/render/types.d.ts.map +1 -0
  45. package/lib/draw-canvas/edit/components/render/types.js +66 -0
  46. package/lib/draw-canvas/edit/components/render/types.js.map +1 -0
  47. package/lib/draw-canvas/edit/components/setting-form/imag-upload.d.ts +26 -0
  48. package/lib/draw-canvas/edit/components/setting-form/imag-upload.d.ts.map +1 -0
  49. package/lib/draw-canvas/edit/components/setting-form/imag-upload.js +83 -0
  50. package/lib/draw-canvas/edit/components/setting-form/imag-upload.js.map +1 -0
  51. package/lib/draw-canvas/edit/components/setting-form/index.d.ts +17 -0
  52. package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +1 -0
  53. package/lib/draw-canvas/edit/components/setting-form/index.js +243 -0
  54. package/lib/draw-canvas/edit/components/setting-form/index.js.map +1 -0
  55. package/lib/draw-canvas/edit/constant.d.ts +7 -0
  56. package/lib/draw-canvas/edit/constant.d.ts.map +1 -0
  57. package/lib/draw-canvas/edit/constant.js +7 -0
  58. package/lib/draw-canvas/edit/constant.js.map +1 -0
  59. package/lib/draw-canvas/edit/index.d.ts +8 -0
  60. package/lib/draw-canvas/edit/index.d.ts.map +1 -0
  61. package/lib/draw-canvas/edit/index.js +165 -0
  62. package/lib/draw-canvas/edit/index.js.map +1 -0
  63. package/lib/draw-canvas/edit/index.less +49 -0
  64. package/lib/draw-canvas/view/index.d.ts +8 -0
  65. package/lib/draw-canvas/view/index.d.ts.map +1 -0
  66. package/lib/draw-canvas/view/index.js +50 -0
  67. package/lib/draw-canvas/view/index.js.map +1 -0
  68. package/lib/draw-canvas/view/index.less +60 -0
  69. package/lib/draw-canvas/view/view.d.ts +10 -0
  70. package/lib/draw-canvas/view/view.d.ts.map +1 -0
  71. package/lib/draw-canvas/view/view.js +104 -0
  72. package/lib/draw-canvas/view/view.js.map +1 -0
  73. package/lib/form/form-Item-group.d.ts.map +1 -1
  74. package/lib/form/form-Item-group.js +4 -4
  75. package/lib/form/form-Item-group.js.map +1 -1
  76. package/lib/icon/local-aliIcon/iconfont.js +5 -5
  77. package/lib/icon/local-aliIcon/iconfont.js.map +1 -1
  78. package/lib/lowcode-components/index.d.ts +2 -0
  79. package/lib/lowcode-components/index.d.ts.map +1 -1
  80. package/lib/lowcode-components/index.js +2 -1
  81. package/lib/lowcode-components/index.js.map +1 -1
  82. package/lib/lowcode-components/lowcode-view/component/assets.d.ts.map +1 -1
  83. package/lib/lowcode-components/lowcode-view/component/assets.js +8 -0
  84. package/lib/lowcode-components/lowcode-view/component/assets.js.map +1 -1
  85. package/lib/lowcode-components/radar-chart/index.d.ts +51 -0
  86. package/lib/lowcode-components/radar-chart/index.d.ts.map +1 -0
  87. package/lib/lowcode-components/radar-chart/index.js +276 -0
  88. package/lib/lowcode-components/radar-chart/index.js.map +1 -0
  89. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  90. package/lib/module/dtmpl-edit-card.js +18 -1
  91. package/lib/module/dtmpl-edit-card.js.map +1 -1
  92. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  93. package/lib/module/dtmpl-edit-page.js +19 -2
  94. package/lib/module/dtmpl-edit-page.js.map +1 -1
  95. package/lib/routable/ltmpl-route.d.ts +2 -0
  96. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  97. package/lib/routable/ltmpl-route.js +20 -4
  98. package/lib/routable/ltmpl-route.js.map +1 -1
  99. package/lib/table/act-table.d.ts +2 -0
  100. package/lib/table/act-table.d.ts.map +1 -1
  101. package/lib/table/act-table.js +4 -4
  102. package/lib/table/act-table.js.map +1 -1
  103. package/lib/table/column/column-builder.d.ts.map +1 -1
  104. package/lib/table/column/column-builder.js +23 -8
  105. package/lib/table/column/column-builder.js.map +1 -1
  106. package/lib/table/relation-table.d.ts +7 -0
  107. package/lib/table/relation-table.d.ts.map +1 -1
  108. package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
  109. package/lib/tmpl/control-type-supportor.js +1 -0
  110. package/lib/tmpl/control-type-supportor.js.map +1 -1
  111. package/lib/tmpl/hcservice-v3.d.ts +3 -0
  112. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  113. package/lib/tmpl/hcservice-v3.js +61 -0
  114. package/lib/tmpl/hcservice-v3.js.map +1 -1
  115. package/lib/tmpl/interface.d.ts +17 -1
  116. package/lib/tmpl/interface.d.ts.map +1 -1
  117. package/lib/tmpl/interface.js.map +1 -1
  118. package/lib/tmpl/tmpl-config-analysis.js +1 -1
  119. package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
  120. package/lib/units/index.d.ts +3 -1
  121. package/lib/units/index.d.ts.map +1 -1
  122. package/lib/units/index.js +33 -3
  123. package/lib/units/index.js.map +1 -1
  124. package/package.json +4 -1
  125. package/src/aldehyde/controls/entity-select/entity-select.tsx +18 -8
  126. package/src/aldehyde/controls/entry-control.tsx +3 -2
  127. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  128. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +1 -1
  129. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  130. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  131. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  132. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  133. package/src/aldehyde/controls/select/index.tsx +7 -6
  134. package/src/aldehyde/controls/text/index.less +1 -0
  135. package/src/aldehyde/controls/view-control.tsx +1 -0
  136. package/src/aldehyde/detail/button/edit-button.tsx +21 -22
  137. package/src/aldehyde/detail/button/view-button.tsx +23 -21
  138. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.less +36 -0
  139. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.tsx +95 -0
  140. package/src/aldehyde/draw-canvas/edit/components/main-header/index.less +21 -0
  141. package/src/aldehyde/draw-canvas/edit/components/main-header/index.tsx +233 -0
  142. package/src/aldehyde/draw-canvas/edit/components/render/draws/bg-draw.ts +163 -0
  143. package/src/aldehyde/draw-canvas/edit/components/render/draws/contextmenu-draw.ts +307 -0
  144. package/src/aldehyde/draw-canvas/edit/components/render/draws/graph-draw.ts +251 -0
  145. package/src/aldehyde/draw-canvas/edit/components/render/draws/index.ts +7 -0
  146. package/src/aldehyde/draw-canvas/edit/components/render/draws/link-draw.ts +1416 -0
  147. package/src/aldehyde/draw-canvas/edit/components/render/draws/preview-draw.ts +275 -0
  148. package/src/aldehyde/draw-canvas/edit/components/render/draws/ref-line-draw.ts +72 -0
  149. package/src/aldehyde/draw-canvas/edit/components/render/draws/ruler-draw.ts +167 -0
  150. package/src/aldehyde/draw-canvas/edit/components/render/graphs/base-graph.ts +241 -0
  151. package/src/aldehyde/draw-canvas/edit/components/render/graphs/bezier.ts +542 -0
  152. package/src/aldehyde/draw-canvas/edit/components/render/graphs/circle.ts +700 -0
  153. package/src/aldehyde/draw-canvas/edit/components/render/graphs/curve.ts +501 -0
  154. package/src/aldehyde/draw-canvas/edit/components/render/graphs/index.ts +6 -0
  155. package/src/aldehyde/draw-canvas/edit/components/render/graphs/line.ts +494 -0
  156. package/src/aldehyde/draw-canvas/edit/components/render/graphs/rect.ts +681 -0
  157. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-handlers.ts +69 -0
  158. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-outside-handlers.ts +159 -0
  159. package/src/aldehyde/draw-canvas/edit/components/render/handlers/graph-handlers.ts +108 -0
  160. package/src/aldehyde/draw-canvas/edit/components/render/handlers/index.ts +9 -0
  161. package/src/aldehyde/draw-canvas/edit/components/render/handlers/key-move-handlers.ts +50 -0
  162. package/src/aldehyde/draw-canvas/edit/components/render/handlers/link-handlers.ts +46 -0
  163. package/src/aldehyde/draw-canvas/edit/components/render/handlers/selection-handlers.ts +393 -0
  164. package/src/aldehyde/draw-canvas/edit/components/render/handlers/shutcut-handlers.ts +46 -0
  165. package/src/aldehyde/draw-canvas/edit/components/render/handlers/text-handlers.ts +82 -0
  166. package/src/aldehyde/draw-canvas/edit/components/render/handlers/zoom-handlers.ts +60 -0
  167. package/src/aldehyde/draw-canvas/edit/components/render/index.ts +776 -0
  168. package/src/aldehyde/draw-canvas/edit/components/render/tools/align-tool.ts +91 -0
  169. package/src/aldehyde/draw-canvas/edit/components/render/tools/asset-tool.ts +142 -0
  170. package/src/aldehyde/draw-canvas/edit/components/render/tools/attract-tool.ts +440 -0
  171. package/src/aldehyde/draw-canvas/edit/components/render/tools/copy-tool.ts +269 -0
  172. package/src/aldehyde/draw-canvas/edit/components/render/tools/import-export-tool.ts +603 -0
  173. package/src/aldehyde/draw-canvas/edit/components/render/tools/index.ts +9 -0
  174. package/src/aldehyde/draw-canvas/edit/components/render/tools/link-tool.ts +225 -0
  175. package/src/aldehyde/draw-canvas/edit/components/render/tools/position-tool.ts +194 -0
  176. package/src/aldehyde/draw-canvas/edit/components/render/tools/selection-tool.ts +132 -0
  177. package/src/aldehyde/draw-canvas/edit/components/render/tools/z-index-tool.ts +227 -0
  178. package/src/aldehyde/draw-canvas/edit/components/render/types.ts +291 -0
  179. package/src/aldehyde/draw-canvas/edit/components/render/utils/a-star.ts +116 -0
  180. package/src/aldehyde/draw-canvas/edit/components/render/utils/bezier-scene-func.ts +73 -0
  181. package/src/aldehyde/draw-canvas/edit/components/setting-form/imag-upload.tsx +118 -0
  182. package/src/aldehyde/draw-canvas/edit/components/setting-form/index.tsx +295 -0
  183. package/src/aldehyde/draw-canvas/edit/constant.ts +6 -0
  184. package/src/aldehyde/draw-canvas/edit/index.less +49 -0
  185. package/src/aldehyde/draw-canvas/edit/index.tsx +197 -0
  186. package/src/aldehyde/draw-canvas/view/index.less +60 -0
  187. package/src/aldehyde/draw-canvas/view/index.tsx +48 -0
  188. package/src/aldehyde/draw-canvas/view/view.tsx +114 -0
  189. package/src/aldehyde/form/form-Item-group.tsx +5 -5
  190. package/src/aldehyde/icon/local-aliIcon/iconfont.js +1 -1
  191. package/src/aldehyde/lowcode-components/index.ts +4 -2
  192. package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +8 -0
  193. package/src/aldehyde/lowcode-components/radar-chart/index.tsx +323 -0
  194. package/src/aldehyde/module/dtmpl-edit-card.tsx +18 -1
  195. package/src/aldehyde/module/dtmpl-edit-page.tsx +19 -2
  196. package/src/aldehyde/routable/ltmpl-route.tsx +39 -3
  197. package/src/aldehyde/table/act-table.tsx +7 -4
  198. package/src/aldehyde/table/column/column-builder.tsx +29 -9
  199. package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
  200. package/src/aldehyde/tmpl/hcservice-v3.tsx +44 -0
  201. package/src/aldehyde/tmpl/interface.tsx +15 -1
  202. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +1 -1
  203. package/src/aldehyde/units/index.tsx +31 -3
@@ -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,159 @@
1
+ import Konva from 'konva';
2
+ import { nanoid } from 'nanoid';
3
+ import { Render } from '../index';
4
+ import { Handler, AssetInfoPoint, 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
+ const componentType = e.dataTransfer?.getData('componentType'); // 组件类型
29
+ // 接收连接点信息
30
+ let morePoints: AssetInfoPoint[] = [];
31
+ const morePointsTxt = e.dataTransfer?.getData('points') ?? '[]';
32
+ try {
33
+ morePoints = JSON.parse(morePointsTxt);
34
+ } catch (e) {
35
+ console.error(e);
36
+ }
37
+ const type = e.dataTransfer?.getData('type');
38
+ if (src && type) {
39
+ const stageState = this.render.getStageState();
40
+ const { pageHeight, pageWidth } = this.render.getPageSettings()
41
+ this.render.stage.setPointersPositions(e);
42
+ const pos = this.render.stage.getPointerPosition();
43
+ if (pos) {
44
+ this.render.assetTool[type === 'json' ? 'loadJson' : ({ svg: "loadSvg", gif: "loadGif" }[type] || "loadImg")](src).then((target: Konva.Image | Konva.Group) => {
45
+ let group = null;
46
+ let width = target.width();
47
+ let height = target.height();
48
+ if (width > pageWidth || height > pageHeight) {
49
+ const sizeScale = Math.min(pageWidth / width, pageHeight / height);
50
+ width *= sizeScale;
51
+ height *= sizeScale;
52
+ target.setSize({ width, height });
53
+ }
54
+ // 默认连接点
55
+ let points: AssetInfoPoint[] = [];
56
+ if (target instanceof Konva.Image) { // 图片素材
57
+ group = new Konva.Group({
58
+ id: nanoid(),
59
+ width,
60
+ height,
61
+ name: 'asset',
62
+ assetType: AssetType.Image,
63
+ draggable: true,
64
+ componentType,
65
+ imageType:
66
+ type !== 'json'
67
+ ? (["svg", "gif", "other"].includes(type) ? type : "other")
68
+ : undefined
69
+ });
70
+ this.render.setAssetSettings(group, this.render.getAssetSettings(), false);
71
+ group.add(target);
72
+ points = [
73
+ { x: 0, y: group.height() / 2, direction: 'left' }, // 左
74
+ { x: group.width(), y: group.height() / 2, direction: 'right' }, // 右
75
+ { x: group.width() / 2, y: 0, direction: 'top' }, // 上
76
+ { x: group.width() / 2, y: group.height(), direction: 'bottom' } // 下
77
+ ];
78
+ } else {// json 素材
79
+ target.id(nanoid());
80
+ target.setAttrs({
81
+ name: 'asset',
82
+ assetType: AssetType.Json,
83
+ draggable: true
84
+ });
85
+ group = target;
86
+ this.render.linkTool.groupIdCover(group);
87
+ }
88
+ target.setAttrs({ x: 0, y: 0 } as any);
89
+ this.render.layer.add(group); // 组件添加到画布
90
+ const x = this.render.toStageValue(pos.x - stageState.x) - group.width() / 2;
91
+ const y = this.render.toStageValue(pos.y - stageState.y) - group.height() / 2;
92
+ group.setAttrs({ x, y });
93
+ // 更新坐标记录
94
+ this.render.setAssetSettings(group, this.render.getAssetSettings(group), false);
95
+ // 自定义连接点 覆盖 默认连接点
96
+ if (Array.isArray(morePoints) && morePoints.length > 0) {
97
+ points = morePoints;
98
+ }
99
+ // 连接点信息
100
+ group.setAttrs({
101
+ points: points.map(
102
+ (o) =>
103
+ ({
104
+ ...o,
105
+ id: nanoid(),
106
+ groupId: group.id(),
107
+ visible: false,
108
+ pairs: [],
109
+ direction: o.direction
110
+ }) as LinkDrawPoint
111
+ )
112
+ });
113
+ // 连接点(锚点)
114
+ for (const point of group.getAttr('points') ?? []) {
115
+ group.add(
116
+ new Konva.Circle({
117
+ name: 'link-anchor',
118
+ id: point.id,
119
+ x: point.x,
120
+ y: point.y,
121
+ radius: this.render.toStageValue(1),
122
+ stroke: 'rgba(0,0,255,1)',
123
+ strokeWidth: this.render.toStageValue(2),
124
+ visible: false,
125
+ direction: point.direction
126
+ })
127
+ );
128
+ }
129
+ group.on('mouseenter', () => { // 显示 连接点
130
+ this.render.linkTool.pointsVisible(true, group);
131
+ });
132
+ // hover 框(多选时才显示)
133
+ group.add(
134
+ new Konva.Rect({
135
+ id: 'hoverRect',
136
+ width: target.width(),
137
+ height: target.height(),
138
+ fill: 'rgba(0,255,0,0.3)',
139
+ visible: false
140
+ })
141
+ );
142
+
143
+ group.on('mouseleave', () => {
144
+ // 隐藏 连接点
145
+ this.render.linkTool.pointsVisible(false, group);
146
+ // 隐藏 hover 框
147
+ group.findOne('#hoverRect')?.visible(false);
148
+ });
149
+ // 更新历史
150
+ this.render.updateHistory();
151
+ // 重绘
152
+ this.render.redraw([PreviewDraw.name]);
153
+ })
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
@@ -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
+ }