aldehyde 0.2.516 → 0.2.518

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 (186) hide show
  1. package/lib/controls/auto-complete/index.d.ts.map +1 -1
  2. package/lib/controls/auto-complete/index.js +2 -4
  3. package/lib/controls/auto-complete/index.js.map +1 -1
  4. package/lib/controls/direct-file-view/index.d.ts.map +1 -1
  5. package/lib/controls/direct-file-view/index.js +4 -1
  6. package/lib/controls/direct-file-view/index.js.map +1 -1
  7. package/lib/controls/entry-control.d.ts.map +1 -1
  8. package/lib/controls/entry-control.js +4 -0
  9. package/lib/controls/entry-control.js.map +1 -1
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
  11. package/lib/controls/view-control.d.ts.map +1 -1
  12. package/lib/controls/view-control.js +1 -0
  13. package/lib/controls/view-control.js.map +1 -1
  14. package/lib/detail/view/act-dtmpl-view.d.ts +2 -0
  15. package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
  16. package/lib/detail/view/act-dtmpl-view.js +3 -2
  17. package/lib/detail/view/act-dtmpl-view.js.map +1 -1
  18. package/lib/detail/view/dtmpl-view.d.ts +11 -0
  19. package/lib/detail/view/dtmpl-view.d.ts.map +1 -1
  20. package/lib/detail/view/dtmpl-view.js +20 -17
  21. package/lib/detail/view/dtmpl-view.js.map +1 -1
  22. package/lib/detail/view/field-view-group.d.ts +9 -0
  23. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  24. package/lib/detail/view/field-view-group.js +17 -15
  25. package/lib/detail/view/field-view-group.js.map +1 -1
  26. package/lib/detail/view/index.less +6 -0
  27. package/lib/draw-canvas-edit/components/asset-bar/index.less +35 -35
  28. package/lib/draw-canvas-edit/components/main-header/index.less +23 -23
  29. package/lib/form/dtmpl-form.d.ts +12 -1
  30. package/lib/form/dtmpl-form.d.ts.map +1 -1
  31. package/lib/form/dtmpl-form.js +35 -27
  32. package/lib/form/dtmpl-form.js.map +1 -1
  33. package/lib/form/form-Item-group.d.ts +9 -0
  34. package/lib/form/form-Item-group.d.ts.map +1 -1
  35. package/lib/form/form-Item-group.js +13 -3
  36. package/lib/form/form-Item-group.js.map +1 -1
  37. package/lib/list/card-list/card-list-item.d.ts.map +1 -1
  38. package/lib/list/card-list/card-list-item.js +28 -6
  39. package/lib/list/card-list/card-list-item.js.map +1 -1
  40. package/lib/lowcode-components/base-table/index.less +61 -61
  41. package/lib/lowcode-components/data-number/index.d.ts +2 -0
  42. package/lib/lowcode-components/data-number/index.d.ts.map +1 -1
  43. package/lib/lowcode-components/data-number/index.js +21 -1
  44. package/lib/lowcode-components/data-number/index.js.map +1 -1
  45. package/lib/lowcode-components/data-number/index.less +10 -10
  46. package/lib/lowcode-components/date-time/index.less +4 -4
  47. package/lib/lowcode-components/four-angle-glow-border/index.less +49 -49
  48. package/lib/lowcode-components/line-chart/index.js +7 -7
  49. package/lib/lowcode-components/line-chart/index.js.map +1 -1
  50. package/lib/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
  51. package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
  52. package/lib/lowcode-components/text-scroller/index.less +28 -28
  53. package/lib/module/dtmpl-edit-page.d.ts +1 -0
  54. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  55. package/lib/module/dtmpl-edit-page.js +5 -5
  56. package/lib/module/dtmpl-edit-page.js.map +1 -1
  57. package/lib/module/dtmpl-view-card.d.ts +2 -0
  58. package/lib/module/dtmpl-view-card.d.ts.map +1 -1
  59. package/lib/module/dtmpl-view-card.js +7 -4
  60. package/lib/module/dtmpl-view-card.js.map +1 -1
  61. package/lib/module/dtmpl-view-drawer.d.ts +2 -0
  62. package/lib/module/dtmpl-view-drawer.d.ts.map +1 -1
  63. package/lib/module/dtmpl-view-drawer.js +3 -2
  64. package/lib/module/dtmpl-view-drawer.js.map +1 -1
  65. package/lib/module/dtmpl-view-modal.d.ts +2 -0
  66. package/lib/module/dtmpl-view-modal.d.ts.map +1 -1
  67. package/lib/module/dtmpl-view-modal.js +3 -2
  68. package/lib/module/dtmpl-view-modal.js.map +1 -1
  69. package/lib/module/ttmpl-table.d.ts.map +1 -1
  70. package/lib/module/ttmpl-table.js +1 -1
  71. package/lib/module/ttmpl-table.js.map +1 -1
  72. package/lib/routable/index.less +5 -0
  73. package/lib/routable/ltmpl-route.d.ts +1 -0
  74. package/lib/routable/ltmpl-route.d.ts.map +1 -1
  75. package/lib/routable/ltmpl-route.js +37 -7
  76. package/lib/routable/ltmpl-route.js.map +1 -1
  77. package/lib/routable/ttmpl-table-route.d.ts.map +1 -1
  78. package/lib/routable/ttmpl-table-route.js +2 -1
  79. package/lib/routable/ttmpl-table-route.js.map +1 -1
  80. package/lib/table/act-table.d.ts +3 -0
  81. package/lib/table/act-table.d.ts.map +1 -1
  82. package/lib/table/act-table.js +9 -6
  83. package/lib/table/act-table.js.map +1 -1
  84. package/lib/table/column/column-builder.d.ts.map +1 -1
  85. package/lib/table/column/column-builder.js +22 -10
  86. package/lib/table/column/column-builder.js.map +1 -1
  87. package/lib/table/pagination.js +1 -1
  88. package/lib/table/pagination.js.map +1 -1
  89. package/lib/table/relation-table.d.ts +5 -0
  90. package/lib/table/relation-table.d.ts.map +1 -1
  91. package/lib/table/relation-table.js +54 -10
  92. package/lib/table/relation-table.js.map +1 -1
  93. package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
  94. package/lib/tmpl/control-type-supportor.js +1 -0
  95. package/lib/tmpl/control-type-supportor.js.map +1 -1
  96. package/lib/tmpl/hcservice-v3.d.ts +2 -0
  97. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  98. package/lib/tmpl/hcservice-v3.js +26 -0
  99. package/lib/tmpl/hcservice-v3.js.map +1 -1
  100. package/lib/tmpl/interface.d.ts +8 -1
  101. package/lib/tmpl/interface.d.ts.map +1 -1
  102. package/lib/tmpl/interface.js.map +1 -1
  103. package/lib/units/index.d.ts +2 -0
  104. package/lib/units/index.d.ts.map +1 -1
  105. package/lib/units/index.js +45 -0
  106. package/lib/units/index.js.map +1 -1
  107. package/package.json +1 -1
  108. package/src/aldehyde/controls/auto-complete/index.tsx +4 -6
  109. package/src/aldehyde/controls/direct-file-view/index.tsx +4 -1
  110. package/src/aldehyde/controls/entry-control.tsx +4 -0
  111. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
  112. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +156 -156
  113. package/src/aldehyde/controls/view-control.tsx +1 -0
  114. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +4 -1
  115. package/src/aldehyde/detail/view/dtmpl-view.tsx +20 -26
  116. package/src/aldehyde/detail/view/field-view-group.tsx +20 -22
  117. package/src/aldehyde/detail/view/index.less +6 -0
  118. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +35 -35
  119. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +110 -110
  120. package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +23 -23
  121. package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +263 -263
  122. package/src/aldehyde/draw-canvas-edit/components/render/draws/index.ts +7 -7
  123. package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +241 -241
  124. package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +699 -699
  125. package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +500 -500
  126. package/src/aldehyde/draw-canvas-edit/components/render/graphs/index.ts +5 -5
  127. package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +493 -493
  128. package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +680 -680
  129. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +68 -68
  130. package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +113 -113
  131. package/src/aldehyde/draw-canvas-edit/components/render/handlers/index.ts +9 -9
  132. package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +49 -49
  133. package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +45 -45
  134. package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +45 -45
  135. package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +81 -81
  136. package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +59 -59
  137. package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +89 -89
  138. package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +154 -154
  139. package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +222 -222
  140. package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +224 -224
  141. package/src/aldehyde/draw-canvas-edit/components/render/utils/a-star.ts +116 -116
  142. package/src/aldehyde/draw-canvas-edit/components/render/utils/bezier-scene-func.ts +72 -72
  143. package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +119 -119
  144. package/src/aldehyde/form/dtmpl-form.tsx +59 -55
  145. package/src/aldehyde/form/form-Item-group.tsx +16 -5
  146. package/src/aldehyde/layout4/imgs/user.svg +26 -26
  147. package/src/aldehyde/list/card-list/card-list-item.tsx +26 -7
  148. package/src/aldehyde/lowcode-components/base-color-block/index.tsx +31 -31
  149. package/src/aldehyde/lowcode-components/base-table/index.less +61 -61
  150. package/src/aldehyde/lowcode-components/data-number/index.less +10 -10
  151. package/src/aldehyde/lowcode-components/data-number/index.tsx +22 -1
  152. package/src/aldehyde/lowcode-components/date-time/index.less +4 -4
  153. package/src/aldehyde/lowcode-components/date-time/index.tsx +64 -64
  154. package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +49 -49
  155. package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -53
  156. package/src/aldehyde/lowcode-components/line-chart/index.tsx +7 -7
  157. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -64
  158. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -77
  159. package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +36 -36
  160. package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +144 -144
  161. package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
  162. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/controller.ts +36 -36
  163. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/definition.ts +53 -53
  164. package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/index.tsx +15 -15
  165. package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +98 -98
  166. package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
  167. package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +121 -121
  168. package/src/aldehyde/lowcode-components/placeholder-component/index.tsx +81 -81
  169. package/src/aldehyde/lowcode-components/text-scroller/index.less +28 -28
  170. package/src/aldehyde/lowcode-components/text-scroller/index.tsx +173 -173
  171. package/src/aldehyde/module/dtmpl-edit-page.tsx +10 -1
  172. package/src/aldehyde/module/dtmpl-view-card.tsx +39 -34
  173. package/src/aldehyde/module/dtmpl-view-drawer.tsx +4 -2
  174. package/src/aldehyde/module/dtmpl-view-modal.tsx +4 -2
  175. package/src/aldehyde/module/ttmpl-table.tsx +1 -0
  176. package/src/aldehyde/routable/index.less +5 -0
  177. package/src/aldehyde/routable/ltmpl-route.tsx +39 -4
  178. package/src/aldehyde/routable/ttmpl-table-route.tsx +3 -0
  179. package/src/aldehyde/table/act-table.tsx +11 -6
  180. package/src/aldehyde/table/column/column-builder.tsx +14 -3
  181. package/src/aldehyde/table/pagination.tsx +1 -1
  182. package/src/aldehyde/table/relation-table.tsx +77 -16
  183. package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -0
  184. package/src/aldehyde/tmpl/hcservice-v3.tsx +23 -0
  185. package/src/aldehyde/tmpl/interface.tsx +9 -2
  186. package/src/aldehyde/units/index.tsx +44 -0
@@ -1,81 +1,81 @@
1
- import Konva from 'konva';
2
- import { Render } from '../index';
3
- import { Handler } from '../types';
4
-
5
- // 文本创建操作
6
-
7
- export class TextHandlers implements Handler {
8
- static readonly NAME = 'TextHandlers';
9
- private render: Render;
10
- constructor(render: Render) {
11
- this.render = render;
12
- }
13
- // 获取鼠标位置,并处理为相对大小
14
- getStagePoint(attract = false) {
15
- const pos = this.render.stage.getPointerPosition();
16
- if (pos) {
17
- const stageState = this.render.getStageState();
18
- if (attract) {
19
- const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
20
- return {
21
- x: this.render.toStageValue(transformerPos.x - stageState.x),
22
- y: this.render.toStageValue(transformerPos.y - stageState.y)
23
- };
24
- } else {
25
- return {
26
- x: this.render.toStageValue(pos.x - stageState.x),
27
- y: this.render.toStageValue(pos.y - stageState.y)
28
- };
29
- }
30
- }
31
- return null;
32
- }
33
- group: Konva.Group | null = null;
34
- handlers = {
35
- stage: {
36
- mousedown: (e: Konva.KonvaEventObject<MouseEvent>) => {
37
- // 只有在 texting 模式且点击空白区域时才创建文本
38
- if (!this.render.texting) return;
39
- const target = e.target;
40
- // 检查是否点击在 stage 背景上(不是其他元素)
41
- const isBackground = target === this.render.stage ||
42
- (target.attrs && target.attrs.name && target.attrs.name.includes('background'));
43
- if (!isBackground) return;
44
- try {
45
- // 清除当前选择
46
- this.render.selectionTool.selectingClear();
47
- this.render.linkTool.selectingClear();
48
- const point = this.getStagePoint();
49
- if (point) {
50
- this.group = this.render.importExportTool.addTextAsset(point);
51
- if (this.group) {
52
- // 创建成功后立即选中文本
53
- this.render.selectionTool.select([this.group]);
54
- }
55
- }
56
- } catch (err) {
57
- console.error('Failed to create text asset:', err);
58
- this.group = null;
59
- }
60
- },
61
- mouseup: () => { // 重置 texting 状态
62
- this.render.changeTexting(false);
63
- this.group = null;
64
- },
65
- click: (e: Konva.KonvaEventObject<MouseEvent>) => { // 点击空白区域时,如果有文本创建了一半,也取消
66
- if (!this.render.texting) return;
67
- const target = e.target;
68
- const isBackground = target === this.render.stage ||
69
- (target.attrs && target.attrs.name && target.attrs.name.includes('background'));
70
- if (isBackground) {
71
- this.render.changeTexting(false);
72
- }
73
- }
74
- },
75
- transformer: {
76
- dblclick: () => {
77
- // 双击文本时显示编辑面板
78
- }
79
- }
80
- }
81
- }
1
+ import Konva from 'konva';
2
+ import { Render } from '../index';
3
+ import { Handler } from '../types';
4
+
5
+ // 文本创建操作
6
+
7
+ export class TextHandlers implements Handler {
8
+ static readonly NAME = 'TextHandlers';
9
+ private render: Render;
10
+ constructor(render: Render) {
11
+ this.render = render;
12
+ }
13
+ // 获取鼠标位置,并处理为相对大小
14
+ getStagePoint(attract = false) {
15
+ const pos = this.render.stage.getPointerPosition();
16
+ if (pos) {
17
+ const stageState = this.render.getStageState();
18
+ if (attract) {
19
+ const { pos: transformerPos } = this.render.attractTool.attractPoint(pos);
20
+ return {
21
+ x: this.render.toStageValue(transformerPos.x - stageState.x),
22
+ y: this.render.toStageValue(transformerPos.y - stageState.y)
23
+ };
24
+ } else {
25
+ return {
26
+ x: this.render.toStageValue(pos.x - stageState.x),
27
+ y: this.render.toStageValue(pos.y - stageState.y)
28
+ };
29
+ }
30
+ }
31
+ return null;
32
+ }
33
+ group: Konva.Group | null = null;
34
+ handlers = {
35
+ stage: {
36
+ mousedown: (e: Konva.KonvaEventObject<MouseEvent>) => {
37
+ // 只有在 texting 模式且点击空白区域时才创建文本
38
+ if (!this.render.texting) return;
39
+ const target = e.target;
40
+ // 检查是否点击在 stage 背景上(不是其他元素)
41
+ const isBackground = target === this.render.stage ||
42
+ (target.attrs && target.attrs.name && target.attrs.name.includes('background'));
43
+ if (!isBackground) return;
44
+ try {
45
+ // 清除当前选择
46
+ this.render.selectionTool.selectingClear();
47
+ this.render.linkTool.selectingClear();
48
+ const point = this.getStagePoint();
49
+ if (point) {
50
+ this.group = this.render.importExportTool.addTextAsset(point);
51
+ if (this.group) {
52
+ // 创建成功后立即选中文本
53
+ this.render.selectionTool.select([this.group]);
54
+ }
55
+ }
56
+ } catch (err) {
57
+ console.error('Failed to create text asset:', err);
58
+ this.group = null;
59
+ }
60
+ },
61
+ mouseup: () => { // 重置 texting 状态
62
+ this.render.changeTexting(false);
63
+ this.group = null;
64
+ },
65
+ click: (e: Konva.KonvaEventObject<MouseEvent>) => { // 点击空白区域时,如果有文本创建了一半,也取消
66
+ if (!this.render.texting) return;
67
+ const target = e.target;
68
+ const isBackground = target === this.render.stage ||
69
+ (target.attrs && target.attrs.name && target.attrs.name.includes('background'));
70
+ if (isBackground) {
71
+ this.render.changeTexting(false);
72
+ }
73
+ }
74
+ },
75
+ transformer: {
76
+ dblclick: () => {
77
+ // 双击文本时显示编辑面板
78
+ }
79
+ }
80
+ }
81
+ }
@@ -1,59 +1,59 @@
1
- import Konva from 'konva';
2
- import { Render } from '../index';
3
- import { Handler } from '../types';
4
- import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw, RefLineDraw, BgDraw } from '../draws';
5
-
6
- // 缩放
7
-
8
- export class ZoomHandlers implements Handler {
9
- static readonly NAME = 'ZoomHandlers';
10
- private render: Render;
11
- constructor(render: Render) {
12
- this.render = render;
13
- }
14
- scaleBy = 0.1; // zoom 速度
15
- // zoom 范围
16
- scaleMin = 0.2;
17
- scaleMax = 5;
18
-
19
- handlers = {
20
- stage: {
21
- wheel: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['wheel']>) => {
22
- const { scale: oldScale } = this.render.getStageState();
23
- const isPinchToZoom = e.evt.ctrlKey;
24
- const newScale = isPinchToZoom ? oldScale + (e.evt.deltaY < 0 ? this.scaleBy : -this.scaleBy) : oldScale;
25
- const finalScale = Math.max(this.scaleMin, Math.min(this.scaleMax, newScale));
26
- if (finalScale !== oldScale) {
27
- const position = this.render.stage.getPosition();
28
- const point = { x: e.evt.offsetX, y: e.evt.offsetY };
29
- const mousePointTo = {
30
- x: (point.x - position.x) / oldScale,
31
- y: (point.y - position.y) / oldScale
32
- };
33
- const newPosition = {
34
- x: -(mousePointTo.x * finalScale - point.x),
35
- y: -(mousePointTo.y * finalScale - point.y)
36
- };
37
- this.render.emit('scale-change', finalScale);
38
- this.render.stage.scale({ x: finalScale, y: finalScale });
39
- this.render.stage.position(newPosition);
40
- } else if (!isPinchToZoom) {
41
- const position = this.render.stage.getPosition();
42
- this.render.stage.position({
43
- x: position.x - e.evt.deltaX,
44
- y: position.y - e.evt.deltaY
45
- });
46
- }
47
- // 重绘
48
- this.render.redraw([
49
- BgDraw.NAME,
50
- GraphDraw.NAME,
51
- LinkDraw.NAME,
52
- RulerDraw.NAME,
53
- RefLineDraw.NAME,
54
- PreviewDraw.NAME
55
- ]);
56
- }
57
- }
58
- }
59
- }
1
+ import Konva from 'konva';
2
+ import { Render } from '../index';
3
+ import { Handler } from '../types';
4
+ import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw, RefLineDraw, BgDraw } from '../draws';
5
+
6
+ // 缩放
7
+
8
+ export class ZoomHandlers implements Handler {
9
+ static readonly NAME = 'ZoomHandlers';
10
+ private render: Render;
11
+ constructor(render: Render) {
12
+ this.render = render;
13
+ }
14
+ scaleBy = 0.1; // zoom 速度
15
+ // zoom 范围
16
+ scaleMin = 0.2;
17
+ scaleMax = 5;
18
+
19
+ handlers = {
20
+ stage: {
21
+ wheel: (e: Konva.KonvaEventObject<GlobalEventHandlersEventMap['wheel']>) => {
22
+ const { scale: oldScale } = this.render.getStageState();
23
+ const isPinchToZoom = e.evt.ctrlKey;
24
+ const newScale = isPinchToZoom ? oldScale + (e.evt.deltaY < 0 ? this.scaleBy : -this.scaleBy) : oldScale;
25
+ const finalScale = Math.max(this.scaleMin, Math.min(this.scaleMax, newScale));
26
+ if (finalScale !== oldScale) {
27
+ const position = this.render.stage.getPosition();
28
+ const point = { x: e.evt.offsetX, y: e.evt.offsetY };
29
+ const mousePointTo = {
30
+ x: (point.x - position.x) / oldScale,
31
+ y: (point.y - position.y) / oldScale
32
+ };
33
+ const newPosition = {
34
+ x: -(mousePointTo.x * finalScale - point.x),
35
+ y: -(mousePointTo.y * finalScale - point.y)
36
+ };
37
+ this.render.emit('scale-change', finalScale);
38
+ this.render.stage.scale({ x: finalScale, y: finalScale });
39
+ this.render.stage.position(newPosition);
40
+ } else if (!isPinchToZoom) {
41
+ const position = this.render.stage.getPosition();
42
+ this.render.stage.position({
43
+ x: position.x - e.evt.deltaX,
44
+ y: position.y - e.evt.deltaY
45
+ });
46
+ }
47
+ // 重绘
48
+ this.render.redraw([
49
+ BgDraw.NAME,
50
+ GraphDraw.NAME,
51
+ LinkDraw.NAME,
52
+ RulerDraw.NAME,
53
+ RefLineDraw.NAME,
54
+ PreviewDraw.NAME
55
+ ]);
56
+ }
57
+ }
58
+ }
59
+ }
@@ -1,89 +1,89 @@
1
- import Konva from 'konva';
2
- import { Render } from '../index';
3
- import { AlignType } from '../types';
4
- import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw } from '../draws';
5
-
6
- // 工具栏对齐
7
-
8
- export class AlignTool {
9
- private render: Render;
10
- constructor(render: Render) {
11
- this.render = render;
12
- }
13
-
14
- getAlignRect(node: Konva.Node | Konva.Transformer) {
15
- const stageState = this.render.getStageState();
16
- let width = 0, height = 0, x = 0, y = 0;
17
- const result = node.getClientRect();
18
- // 转为 逻辑觉尺寸
19
- [width, height, x, y] = [
20
- this.render.toStageValue(result.width),
21
- this.render.toStageValue(result.height),
22
- this.render.toStageValue(result.x - stageState.x),
23
- this.render.toStageValue(result.y - stageState.y)
24
- ];
25
- return { width, height, x, y };
26
- }
27
-
28
- // 对齐参考点
29
- getAlignPoints(node?: Konva.Node | Konva.Transformer): { [index: string]: number } {
30
- let width = 0, height = 0, x = 0, y = 0;
31
- if (node !== void 0) {
32
- // 选择器 / 基于节点 逻辑觉尺寸
33
- const rect = this.getAlignRect(node);
34
- [width, height, x, y] = [rect.width, rect.height, rect.x, rect.y];
35
- } else { // 默认为选择器
36
- return this.getAlignPoints(this.render.transformer);
37
- }
38
- return {
39
- Middle: x + width / 2,
40
- Left: x,
41
- Right: x + width,
42
- Center: y + height / 2,
43
- Top: y,
44
- Bottom: y + height
45
- };
46
- }
47
-
48
- align(type: AlignType, target?: Konva.Node) {
49
- // 对齐参考点(所有)
50
- const points = this.getAlignPoints(target);
51
- // 对齐参考点
52
- const point = points[type];
53
- // 需要移动的节点
54
- const nodes = this.render.transformer.nodes().filter((node) => node !== target);
55
- // 移动逻辑
56
- for (const node of nodes) {
57
- // 逻辑觉尺寸
58
- const rect = this.getAlignRect(node);
59
- const [width, height, x, y] = [rect.width, rect.height, rect.x, rect.y];
60
- switch (type) {
61
- case "Middle":
62
- case "Left":
63
- case "Right":
64
- {
65
- const cx = type === "Middle" ? x + width / 2 : type === "Left" ? x : x + width;
66
- node.x(node.x() + (point - cx));
67
- }
68
- break;
69
- case "Center":
70
- case "Top":
71
- case "Bottom":
72
- {
73
- const cy = type === "Center" ? y + height / 2 : type === "Top" ? y : y + height;
74
- node.y(node.y() + (point - cy));
75
- }
76
- break;
77
- }
78
- }
79
- // 更新历史
80
- this.render.updateHistory();
81
- // 重绘
82
- this.render.redraw([
83
- GraphDraw.NAME,
84
- LinkDraw.NAME,
85
- RulerDraw.NAME,
86
- PreviewDraw.NAME
87
- ]);
88
- }
89
- }
1
+ import Konva from 'konva';
2
+ import { Render } from '../index';
3
+ import { AlignType } from '../types';
4
+ import { GraphDraw, LinkDraw, RulerDraw, PreviewDraw } from '../draws';
5
+
6
+ // 工具栏对齐
7
+
8
+ export class AlignTool {
9
+ private render: Render;
10
+ constructor(render: Render) {
11
+ this.render = render;
12
+ }
13
+
14
+ getAlignRect(node: Konva.Node | Konva.Transformer) {
15
+ const stageState = this.render.getStageState();
16
+ let width = 0, height = 0, x = 0, y = 0;
17
+ const result = node.getClientRect();
18
+ // 转为 逻辑觉尺寸
19
+ [width, height, x, y] = [
20
+ this.render.toStageValue(result.width),
21
+ this.render.toStageValue(result.height),
22
+ this.render.toStageValue(result.x - stageState.x),
23
+ this.render.toStageValue(result.y - stageState.y)
24
+ ];
25
+ return { width, height, x, y };
26
+ }
27
+
28
+ // 对齐参考点
29
+ getAlignPoints(node?: Konva.Node | Konva.Transformer): { [index: string]: number } {
30
+ let width = 0, height = 0, x = 0, y = 0;
31
+ if (node !== void 0) {
32
+ // 选择器 / 基于节点 逻辑觉尺寸
33
+ const rect = this.getAlignRect(node);
34
+ [width, height, x, y] = [rect.width, rect.height, rect.x, rect.y];
35
+ } else { // 默认为选择器
36
+ return this.getAlignPoints(this.render.transformer);
37
+ }
38
+ return {
39
+ Middle: x + width / 2,
40
+ Left: x,
41
+ Right: x + width,
42
+ Center: y + height / 2,
43
+ Top: y,
44
+ Bottom: y + height
45
+ };
46
+ }
47
+
48
+ align(type: AlignType, target?: Konva.Node) {
49
+ // 对齐参考点(所有)
50
+ const points = this.getAlignPoints(target);
51
+ // 对齐参考点
52
+ const point = points[type];
53
+ // 需要移动的节点
54
+ const nodes = this.render.transformer.nodes().filter((node) => node !== target);
55
+ // 移动逻辑
56
+ for (const node of nodes) {
57
+ // 逻辑觉尺寸
58
+ const rect = this.getAlignRect(node);
59
+ const [width, height, x, y] = [rect.width, rect.height, rect.x, rect.y];
60
+ switch (type) {
61
+ case "Middle":
62
+ case "Left":
63
+ case "Right":
64
+ {
65
+ const cx = type === "Middle" ? x + width / 2 : type === "Left" ? x : x + width;
66
+ node.x(node.x() + (point - cx));
67
+ }
68
+ break;
69
+ case "Center":
70
+ case "Top":
71
+ case "Bottom":
72
+ {
73
+ const cy = type === "Center" ? y + height / 2 : type === "Top" ? y : y + height;
74
+ node.y(node.y() + (point - cy));
75
+ }
76
+ break;
77
+ }
78
+ }
79
+ // 更新历史
80
+ this.render.updateHistory();
81
+ // 重绘
82
+ this.render.redraw([
83
+ GraphDraw.NAME,
84
+ LinkDraw.NAME,
85
+ RulerDraw.NAME,
86
+ PreviewDraw.NAME
87
+ ]);
88
+ }
89
+ }