@meta2d/core 1.0.0

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 (202) hide show
  1. package/index.d.ts +9 -0
  2. package/index.js +10 -0
  3. package/index.js.map +1 -0
  4. package/package.json +39 -0
  5. package/src/canvas/canvas.d.ts +399 -0
  6. package/src/canvas/canvas.js +5920 -0
  7. package/src/canvas/canvas.js.map +1 -0
  8. package/src/canvas/canvasImage.d.ts +25 -0
  9. package/src/canvas/canvasImage.js +343 -0
  10. package/src/canvas/canvasImage.js.map +1 -0
  11. package/src/canvas/index.d.ts +2 -0
  12. package/src/canvas/index.js +3 -0
  13. package/src/canvas/index.js.map +1 -0
  14. package/src/canvas/magnifierCanvas.d.ts +20 -0
  15. package/src/canvas/magnifierCanvas.js +99 -0
  16. package/src/canvas/magnifierCanvas.js.map +1 -0
  17. package/src/canvas/offscreen.d.ts +2 -0
  18. package/src/canvas/offscreen.js +14 -0
  19. package/src/canvas/offscreen.js.map +1 -0
  20. package/src/core.d.ts +348 -0
  21. package/src/core.js +2465 -0
  22. package/src/core.js.map +1 -0
  23. package/src/data.d.ts +34 -0
  24. package/src/data.js +83 -0
  25. package/src/data.js.map +1 -0
  26. package/src/diagrams/arrow.d.ts +4 -0
  27. package/src/diagrams/arrow.js +47 -0
  28. package/src/diagrams/arrow.js.map +1 -0
  29. package/src/diagrams/circle.d.ts +2 -0
  30. package/src/diagrams/circle.js +9 -0
  31. package/src/diagrams/circle.js.map +1 -0
  32. package/src/diagrams/cloud.d.ts +2 -0
  33. package/src/diagrams/cloud.js +12 -0
  34. package/src/diagrams/cloud.js.map +1 -0
  35. package/src/diagrams/cube.d.ts +2 -0
  36. package/src/diagrams/cube.js +70 -0
  37. package/src/diagrams/cube.js.map +1 -0
  38. package/src/diagrams/diamond.d.ts +2 -0
  39. package/src/diagrams/diamond.js +13 -0
  40. package/src/diagrams/diamond.js.map +1 -0
  41. package/src/diagrams/file.d.ts +2 -0
  42. package/src/diagrams/file.js +18 -0
  43. package/src/diagrams/file.js.map +1 -0
  44. package/src/diagrams/gif.d.ts +5 -0
  45. package/src/diagrams/gif.js +80 -0
  46. package/src/diagrams/gif.js.map +1 -0
  47. package/src/diagrams/hexagon.d.ts +2 -0
  48. package/src/diagrams/hexagon.js +55 -0
  49. package/src/diagrams/hexagon.js.map +1 -0
  50. package/src/diagrams/iframe.d.ts +5 -0
  51. package/src/diagrams/iframe.js +52 -0
  52. package/src/diagrams/iframe.js.map +1 -0
  53. package/src/diagrams/index.d.ts +67 -0
  54. package/src/diagrams/index.js +72 -0
  55. package/src/diagrams/index.js.map +1 -0
  56. package/src/diagrams/line/curve.d.ts +16 -0
  57. package/src/diagrams/line/curve.js +233 -0
  58. package/src/diagrams/line/curve.js.map +1 -0
  59. package/src/diagrams/line/index.d.ts +4 -0
  60. package/src/diagrams/line/index.js +5 -0
  61. package/src/diagrams/line/index.js.map +1 -0
  62. package/src/diagrams/line/line.d.ts +42 -0
  63. package/src/diagrams/line/line.js +419 -0
  64. package/src/diagrams/line/line.js.map +1 -0
  65. package/src/diagrams/line/polyline.d.ts +10 -0
  66. package/src/diagrams/line/polyline.js +622 -0
  67. package/src/diagrams/line/polyline.js.map +1 -0
  68. package/src/diagrams/line/smooth.d.ts +3 -0
  69. package/src/diagrams/line/smooth.js +174 -0
  70. package/src/diagrams/line/smooth.js.map +1 -0
  71. package/src/diagrams/message.d.ts +2 -0
  72. package/src/diagrams/message.js +15 -0
  73. package/src/diagrams/message.js.map +1 -0
  74. package/src/diagrams/mindLine.d.ts +3 -0
  75. package/src/diagrams/mindLine.js +31 -0
  76. package/src/diagrams/mindLine.js.map +1 -0
  77. package/src/diagrams/mindNode.d.ts +3 -0
  78. package/src/diagrams/mindNode.js +189 -0
  79. package/src/diagrams/mindNode.js.map +1 -0
  80. package/src/diagrams/pentagon.d.ts +3 -0
  81. package/src/diagrams/pentagon.js +46 -0
  82. package/src/diagrams/pentagon.js.map +1 -0
  83. package/src/diagrams/pentagram.d.ts +3 -0
  84. package/src/diagrams/pentagram.js +77 -0
  85. package/src/diagrams/pentagram.js.map +1 -0
  86. package/src/diagrams/people.d.ts +2 -0
  87. package/src/diagrams/people.js +19 -0
  88. package/src/diagrams/people.js.map +1 -0
  89. package/src/diagrams/rectangle.d.ts +3 -0
  90. package/src/diagrams/rectangle.js +26 -0
  91. package/src/diagrams/rectangle.js.map +1 -0
  92. package/src/diagrams/svg/parse.d.ts +15 -0
  93. package/src/diagrams/svg/parse.js +326 -0
  94. package/src/diagrams/svg/parse.js.map +1 -0
  95. package/src/diagrams/svgPath.d.ts +2 -0
  96. package/src/diagrams/svgPath.js +30 -0
  97. package/src/diagrams/svgPath.js.map +1 -0
  98. package/src/diagrams/triangle.d.ts +3 -0
  99. package/src/diagrams/triangle.js +41 -0
  100. package/src/diagrams/triangle.js.map +1 -0
  101. package/src/diagrams/video.d.ts +5 -0
  102. package/src/diagrams/video.js +143 -0
  103. package/src/diagrams/video.js.map +1 -0
  104. package/src/event/event.d.ts +45 -0
  105. package/src/event/event.js +17 -0
  106. package/src/event/event.js.map +1 -0
  107. package/src/event/index.d.ts +1 -0
  108. package/src/event/index.js +2 -0
  109. package/src/event/index.js.map +1 -0
  110. package/src/map/index.d.ts +1 -0
  111. package/src/map/index.js +2 -0
  112. package/src/map/index.js.map +1 -0
  113. package/src/map/map.d.ts +20 -0
  114. package/src/map/map.js +143 -0
  115. package/src/map/map.js.map +1 -0
  116. package/src/options.d.ts +70 -0
  117. package/src/options.js +61 -0
  118. package/src/options.js.map +1 -0
  119. package/src/pen/arrow.d.ts +4 -0
  120. package/src/pen/arrow.js +186 -0
  121. package/src/pen/arrow.js.map +1 -0
  122. package/src/pen/index.d.ts +5 -0
  123. package/src/pen/index.js +6 -0
  124. package/src/pen/index.js.map +1 -0
  125. package/src/pen/math.d.ts +28 -0
  126. package/src/pen/math.js +304 -0
  127. package/src/pen/math.js.map +1 -0
  128. package/src/pen/model.d.ts +354 -0
  129. package/src/pen/model.js +172 -0
  130. package/src/pen/model.js.map +1 -0
  131. package/src/pen/render.d.ts +132 -0
  132. package/src/pen/render.js +1908 -0
  133. package/src/pen/render.js.map +1 -0
  134. package/src/pen/text.d.ts +7 -0
  135. package/src/pen/text.js +311 -0
  136. package/src/pen/text.js.map +1 -0
  137. package/src/pen/utils.d.ts +2 -0
  138. package/src/pen/utils.js +41 -0
  139. package/src/pen/utils.js.map +1 -0
  140. package/src/point/index.d.ts +1 -0
  141. package/src/point/index.js +2 -0
  142. package/src/point/index.js.map +1 -0
  143. package/src/point/point.d.ts +53 -0
  144. package/src/point/point.js +119 -0
  145. package/src/point/point.js.map +1 -0
  146. package/src/rect/index.d.ts +1 -0
  147. package/src/rect/index.js +2 -0
  148. package/src/rect/index.js.map +1 -0
  149. package/src/rect/rect.d.ts +49 -0
  150. package/src/rect/rect.js +446 -0
  151. package/src/rect/rect.js.map +1 -0
  152. package/src/rect/triangle.d.ts +2 -0
  153. package/src/rect/triangle.js +10 -0
  154. package/src/rect/triangle.js.map +1 -0
  155. package/src/scroll/index.d.ts +1 -0
  156. package/src/scroll/index.js +2 -0
  157. package/src/scroll/index.js.map +1 -0
  158. package/src/scroll/scroll.d.ts +32 -0
  159. package/src/scroll/scroll.js +193 -0
  160. package/src/scroll/scroll.js.map +1 -0
  161. package/src/store/global.d.ts +25 -0
  162. package/src/store/global.js +18 -0
  163. package/src/store/global.js.map +1 -0
  164. package/src/store/index.d.ts +2 -0
  165. package/src/store/index.js +3 -0
  166. package/src/store/index.js.map +1 -0
  167. package/src/store/store.d.ts +104 -0
  168. package/src/store/store.js +73 -0
  169. package/src/store/store.js.map +1 -0
  170. package/src/tooltip/index.d.ts +1 -0
  171. package/src/tooltip/index.js +2 -0
  172. package/src/tooltip/index.js.map +1 -0
  173. package/src/tooltip/tooltip.d.ts +40 -0
  174. package/src/tooltip/tooltip.js +162 -0
  175. package/src/tooltip/tooltip.js.map +1 -0
  176. package/src/utils/browser.d.ts +1 -0
  177. package/src/utils/browser.js +4 -0
  178. package/src/utils/browser.js.map +1 -0
  179. package/src/utils/clone.d.ts +8 -0
  180. package/src/utils/clone.js +73 -0
  181. package/src/utils/clone.js.map +1 -0
  182. package/src/utils/color.d.ts +3 -0
  183. package/src/utils/color.js +126 -0
  184. package/src/utils/color.js.map +1 -0
  185. package/src/utils/error.d.ts +2 -0
  186. package/src/utils/error.js +6 -0
  187. package/src/utils/error.js.map +1 -0
  188. package/src/utils/file.d.ts +2 -0
  189. package/src/utils/file.js +84 -0
  190. package/src/utils/file.js.map +1 -0
  191. package/src/utils/index.d.ts +7 -0
  192. package/src/utils/index.js +8 -0
  193. package/src/utils/index.js.map +1 -0
  194. package/src/utils/math.d.ts +18 -0
  195. package/src/utils/math.js +141 -0
  196. package/src/utils/math.js.map +1 -0
  197. package/src/utils/padding.d.ts +7 -0
  198. package/src/utils/padding.js +47 -0
  199. package/src/utils/padding.js.map +1 -0
  200. package/src/utils/uuid.d.ts +4 -0
  201. package/src/utils/uuid.js +13 -0
  202. package/src/utils/uuid.js.map +1 -0
package/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from './src/core';
2
+ export * from './src/options';
3
+ export * from './src/data';
4
+ export * from './src/utils';
5
+ export * from './src/pen';
6
+ export * from './src/rect';
7
+ export * from './src/point';
8
+ export * from './src/event';
9
+ export * from './src/store';
package/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './src/core';
2
+ export * from './src/options';
3
+ export * from './src/data';
4
+ export * from './src/utils';
5
+ export * from './src/pen';
6
+ export * from './src/rect';
7
+ export * from './src/point';
8
+ export * from './src/event';
9
+ export * from './src/store';
10
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../packages/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@meta2d/core",
3
+ "version": "1.0.0",
4
+ "description": "@meta2d/core: Powerful, Beautiful, Simple, Open - Web-Based 2D At Its Best .",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
7
+ "scripts": {
8
+ "copy": "shx cp package.build.json ../../dist/core/package.json",
9
+ "build": "tsc && npm run copy"
10
+ },
11
+ "keywords": [
12
+ "meta2d",
13
+ "diagram",
14
+ "2D",
15
+ "canvas"
16
+ ],
17
+ "author": "alsmile123@qq.com",
18
+ "license": "MIT",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/le5le-com/meta2d.js.git"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/le5le-com/meta2d.js/issues"
25
+ },
26
+ "homepage": "https://github.com/le5le-com/meta2d.js#readme",
27
+ "devDependencies": {
28
+ "@types/marked": "^4.0.3",
29
+ "@types/offscreencanvas": "latest"
30
+ },
31
+ "dependencies": {
32
+ "mitt": "^2.1.0",
33
+ "mqtt": "^4.2.6"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "gitHead": "78f2a53ca1839c89b56e2e498d17ba4eb987ad14"
39
+ }
@@ -0,0 +1,399 @@
1
+ /// <reference types="offscreencanvas" />
2
+ import { Pen, IValue } from '../pen';
3
+ import { Point } from '../point';
4
+ import { Rect } from '../rect';
5
+ import { EditAction, Meta2dStore } from '../store';
6
+ import { Padding } from '../utils';
7
+ import { HotkeyType, HoverType, MouseRight } from '../data';
8
+ import { curve, mind, lineSegment } from '../diagrams';
9
+ import { polyline } from '../diagrams/line/polyline';
10
+ import { Tooltip } from '../tooltip';
11
+ import { Scroll } from '../scroll';
12
+ import { CanvasImage } from './canvasImage';
13
+ import { MagnifierCanvas } from './magnifierCanvas';
14
+ import { Meta2d } from '../core';
15
+ export declare const movingSuffix: "-moving";
16
+ export declare class Canvas {
17
+ parent: Meta2d;
18
+ parentElement: HTMLElement;
19
+ store: Meta2dStore;
20
+ canvas: HTMLCanvasElement;
21
+ offscreen: HTMLCanvasElement | OffscreenCanvas;
22
+ width: number;
23
+ height: number;
24
+ externalElements: HTMLDivElement;
25
+ clientRect?: DOMRect;
26
+ canvasRect: Rect;
27
+ activeRect: Rect;
28
+ initActiveRect: Rect;
29
+ dragRect: Rect;
30
+ lastRotate: number;
31
+ sizeCPs: Point[];
32
+ activeInitPos: Point[];
33
+ hoverType: HoverType;
34
+ resizeIndex: number;
35
+ mouseDown: {
36
+ x: number;
37
+ y: number;
38
+ restore?: boolean;
39
+ };
40
+ hotkeyType: HotkeyType;
41
+ mouseRight: MouseRight;
42
+ addCaches: Pen[];
43
+ touchCenter?: Point;
44
+ initTouchDis?: number;
45
+ initScale?: number;
46
+ touchScaling?: boolean;
47
+ touchMoving?: boolean;
48
+ startTouches?: TouchList;
49
+ lastOffsetX: number;
50
+ lastOffsetY: number;
51
+ drawingLineName?: string;
52
+ drawLineFns: string[];
53
+ drawingLine?: Pen;
54
+ pencil?: boolean;
55
+ pencilLine?: Pen;
56
+ movingPens: Pen[];
57
+ patchFlagsLines?: Set<Pen>;
58
+ dock: {
59
+ xDock: Point;
60
+ yDock: Point;
61
+ };
62
+ prevAnchor: Point;
63
+ nextAnchor: Point;
64
+ private lastMouseTime;
65
+ private hoverTimer;
66
+ private willInactivePen;
67
+ patchFlags: boolean;
68
+ lastRender: number;
69
+ touchStart: number;
70
+ touchStartTimer: any;
71
+ timer: any;
72
+ private lastAnimateRender;
73
+ animateRendering: boolean;
74
+ renderTimer: number;
75
+ initPens?: Pen[];
76
+ pointSize: 8;
77
+ pasteOffset: number;
78
+ /**
79
+ * @deprecated 改用 beforeAddPens
80
+ */
81
+ beforeAddPen: (pen: Pen) => boolean;
82
+ beforeAddPens: (pens: Pen[]) => Promise<boolean>;
83
+ beforeAddAnchor: (pen: Pen, anchor: Point) => Promise<boolean>;
84
+ beforeRemovePens: (pens: Pen[]) => Promise<boolean>;
85
+ beforeRemoveAnchor: (pen: Pen, anchor: Point) => Promise<boolean>;
86
+ customResizeDock: (store: Meta2dStore, rect: Rect, pens: Pen[], resizeIndex: number) => {
87
+ xDock: Point;
88
+ yDock: Point;
89
+ };
90
+ customMoveDock: (store: Meta2dStore, rect: Rect, pens: Pen[], offset: Point) => {
91
+ xDock: Point;
92
+ yDock: Point;
93
+ };
94
+ inputParent: HTMLDivElement;
95
+ inputDiv: HTMLDivElement;
96
+ inputRight: HTMLDivElement;
97
+ dropdown: HTMLUListElement;
98
+ tooltip: Tooltip;
99
+ mousePos: Point;
100
+ scroll: Scroll;
101
+ movingAnchor: Point;
102
+ canvasImage: CanvasImage;
103
+ canvasImageBottom: CanvasImage;
104
+ magnifierCanvas: MagnifierCanvas;
105
+ stopPropagation: (e: MouseEvent) => void;
106
+ constructor(parent: Meta2d, parentElement: HTMLElement, store: Meta2dStore);
107
+ curve: typeof curve;
108
+ polyline: typeof polyline;
109
+ mind: typeof mind;
110
+ line: typeof lineSegment;
111
+ listen(): void;
112
+ onCopy: (event: ClipboardEvent) => void;
113
+ onCut: (event: ClipboardEvent) => void;
114
+ onPaste: (event: ClipboardEvent) => void;
115
+ onwheel: (e: WheelEvent) => void;
116
+ onkeydown: (e: KeyboardEvent) => void;
117
+ /**
118
+ * 分割连线的锚点,变成两条线
119
+ * @param line 连线
120
+ * @param anchor 锚点,连线的某个锚点,引用相同
121
+ */
122
+ splitLine(line: Pen, anchor: Point): void;
123
+ private translateAnchor;
124
+ onkeyup: (e: KeyboardEvent) => void;
125
+ fileToPen(file: File, isGif: boolean): Promise<Pen>;
126
+ ondrop: (event: DragEvent) => Promise<void>;
127
+ dropPens(pens: Pen[], e: Point): Promise<void>;
128
+ randomCombineId(pen: Pen, pens: Pen[], parentId?: string): Pen;
129
+ addPens(pens: Pen[], history?: boolean): Promise<Pen[]>;
130
+ ontouchstart: (e: TouchEvent) => void;
131
+ ontouchmove: (event: TouchEvent) => void;
132
+ ontouchend: (event: TouchEvent) => void;
133
+ onGesturestart: (e: any) => void;
134
+ /**
135
+ * 获取初始化的 pencilLine
136
+ * @param pt 需包含 penId
137
+ */
138
+ private getInitPencilLine;
139
+ /**
140
+ * 获取初始化的 drawingLine
141
+ * @param pt 需包含 penId
142
+ */
143
+ private createDrawingLine;
144
+ onMouseDown: (e: {
145
+ x: number;
146
+ y: number;
147
+ clientX: number;
148
+ clientY: number;
149
+ pageX: number;
150
+ pageY: number;
151
+ buttons?: number;
152
+ ctrlKey?: boolean;
153
+ shiftKey?: boolean;
154
+ altKey?: boolean;
155
+ }) => void;
156
+ onMouseMove: (e: {
157
+ x: number;
158
+ y: number;
159
+ clientX: number;
160
+ clientY: number;
161
+ pageX: number;
162
+ pageY: number;
163
+ buttons?: number;
164
+ ctrlKey?: boolean;
165
+ shiftKey?: boolean;
166
+ altKey?: boolean;
167
+ }) => void;
168
+ onMouseUp: (e: {
169
+ x: number;
170
+ y: number;
171
+ clientX: number;
172
+ clientY: number;
173
+ pageX: number;
174
+ pageY: number;
175
+ buttons?: number;
176
+ ctrlKey?: boolean;
177
+ shiftKey?: boolean;
178
+ altKey?: boolean;
179
+ button?: number;
180
+ }) => void;
181
+ private addRuleLine;
182
+ /**
183
+ * 拖拽结束,数据更新到 active.pens
184
+ */
185
+ private movedActivePens;
186
+ /**
187
+ * 复制移动后的笔
188
+ */
189
+ private copyMovedPens;
190
+ /**
191
+ * 若本次改变的画笔存在图片,并且在上层 or 下层,需要擦除上层 or 下层
192
+ * 子节点中包含图片,也需要重绘
193
+ * @param pens 本次改变的 pens
194
+ */
195
+ initImageCanvas(pens: Pen[]): void;
196
+ private hasImage;
197
+ private clearDock;
198
+ inactive(drawing?: boolean): void;
199
+ active(pens: Pen[], emit?: boolean): void;
200
+ getSizeCPs(): void;
201
+ onResize: () => void;
202
+ onScroll: () => void;
203
+ calibrateMouse: (pt: Point) => Point;
204
+ clearHover(): void;
205
+ private getHover;
206
+ private inPens;
207
+ private dockInAnchor;
208
+ inAnchor(pt: Point, pen: Pen, anchor: Point): HoverType;
209
+ resize(w?: number, h?: number): void;
210
+ clearCanvas(): void;
211
+ addPen(pen: Pen, history?: boolean, emit?: boolean): Promise<Pen>;
212
+ pushHistory(action: EditAction): void;
213
+ undo(): void;
214
+ redo(): void;
215
+ activeHistory(): void;
216
+ doEditAction(action: EditAction, undo: boolean): void;
217
+ makePen(pen: Pen): void;
218
+ drawline(mouse?: Point): void;
219
+ initLineRect(pen: Pen): void;
220
+ drawingPencil(): void;
221
+ stopPencil(): void;
222
+ finishDrawline(end?: boolean): Promise<void>;
223
+ finishPencil(): Promise<void>;
224
+ /**
225
+ * 火狐浏览器无法绘制 svg 不存在 width height 的问题
226
+ * 此方法手动添加 width 和 height 解决火狐浏览器绘制 svg
227
+ * @param pen
228
+ */
229
+ private firefoxLoadSvg;
230
+ loadImage(pen: Pen): void;
231
+ private imageTimer;
232
+ imageLoaded(): void;
233
+ setCalculativeByScale(pen: Pen): void;
234
+ updatePenRect(pen: Pen, { worldRectIsReady, playingAnimate, }?: {
235
+ worldRectIsReady?: boolean;
236
+ playingAnimate?: boolean;
237
+ noChildren?: boolean;
238
+ }): void;
239
+ render: (patchFlags?: number | boolean) => void;
240
+ renderPens: () => void;
241
+ private renderPenContainChild;
242
+ renderBorder: () => void;
243
+ renderHoverPoint: () => void;
244
+ translate(x?: number, y?: number): void;
245
+ onMovePens(): void;
246
+ /**
247
+ * 缩放整个画布
248
+ * @param scale 缩放比例,最终的 data.scale
249
+ * @param center 中心点,引用类型,存在副作用,会更改原值
250
+ */
251
+ scale(scale: number, center?: {
252
+ x: number;
253
+ y: number;
254
+ }): void;
255
+ rotatePens(e: Point): void;
256
+ resizePens(e: Point): void;
257
+ movePens(e: {
258
+ x: number;
259
+ y: number;
260
+ ctrlKey?: boolean;
261
+ shiftKey?: boolean;
262
+ altKey?: boolean;
263
+ }): void;
264
+ /**
265
+ * 初始化移动,更改画笔的 id parentId 等关联关系
266
+ * @param pen 要修改的画笔
267
+ * @param pens 本次操作的画笔们,包含子画笔
268
+ */
269
+ private changeIdsByMoving;
270
+ /**
271
+ * 初始化 this.movingPens
272
+ * 修改 ids (id parentId children 等)
273
+ * 半透明,去图片
274
+ */
275
+ initMovingPens(): void;
276
+ moveLineAnchor(pt: {
277
+ x: number;
278
+ y: number;
279
+ }, keyOptions: {
280
+ ctrlKey?: boolean;
281
+ shiftKey?: boolean;
282
+ altKey?: boolean;
283
+ }): void;
284
+ moveLineAnchorPrev(e: {
285
+ x: number;
286
+ y: number;
287
+ }): void;
288
+ moveLineAnchorNext(e: {
289
+ x: number;
290
+ y: number;
291
+ }): void;
292
+ setAnchor(e: {
293
+ x: number;
294
+ y: number;
295
+ }): Promise<void>;
296
+ /**
297
+ * 连线允许移动,若与其它图形有连接,但其它图形不在此次移动中,会断开连接
298
+ * @param line 连线
299
+ * @param pens 本次移动的全部图形,包含子节点
300
+ */
301
+ private checkDisconnect;
302
+ /**
303
+ * 移动 画笔们
304
+ * @param pens 画笔们,不包含子节点
305
+ * @param x 偏移 x
306
+ * @param y 偏移 y
307
+ * @param doing 是否持续移动
308
+ */
309
+ translatePens(pens: Pen[], x: number, y: number, doing?: boolean): void;
310
+ private calcAutoAnchor;
311
+ restoreNodeAnimate(pen: Pen): void;
312
+ updateLines(pen: Pen, change?: boolean): void;
313
+ calcActiveRect(): void;
314
+ /**
315
+ * 旋转当前画笔包括子节点
316
+ * @param pen 旋转的画笔
317
+ * @param angle 本次的旋转值,加到 pen.calculative.rotate 上
318
+ */
319
+ rotatePen(pen: Pen, angle: number, rect: Rect): void;
320
+ nextAnimate(pen: Pen): void;
321
+ getFrameProps(pen: any): {};
322
+ animate(): void;
323
+ get clipboardName(): string;
324
+ copy(pens?: Pen[]): Promise<void>;
325
+ cut(pens?: Pen[]): void;
326
+ paste(): Promise<void>;
327
+ /**
328
+ * 获取 pens 列表中的所有节点(包含子节点)
329
+ * @param pens 不包含子节点
330
+ */
331
+ getAllByPens(pens: Pen[]): Pen[];
332
+ /**
333
+ *
334
+ * @param pen 当前复制的画笔
335
+ * @param parentId 父节点 id
336
+ * @param clipboard 本次复制的全部画笔,包含子节点, 以及 origin 和 scale
337
+ * @returns 复制后的画笔
338
+ */
339
+ private pastePen;
340
+ /**
341
+ * 修改对应连线的 anchors
342
+ * @param oldId 老 id
343
+ * @param pen 节点
344
+ * @param pastePens 本次复制的 pens 包含子节点
345
+ */
346
+ changeLineAnchors(oldId: string, pen: Pen, pastePens: Pen[]): void;
347
+ /**
348
+ * 复制连线的过程,修改 与 此线连接 node 的 connectedLines
349
+ * @param oldId 线原 id
350
+ * @param line 线
351
+ * @param pastePens 此处复制的全部 pens (包含子节点)
352
+ */
353
+ changeNodeConnectedLine(oldId: string, line: Pen, pastePens: Pen[]): void;
354
+ delete(pens?: Pen[], canDelLocked?: boolean, history?: boolean): Promise<void>;
355
+ private _del;
356
+ getDelPens(pen: Pen, delPens: Pen[]): void;
357
+ private getLockedParent;
358
+ delForce(pen: Pen): void;
359
+ private delConnectedLines;
360
+ private ondblclick;
361
+ showInput: (pen: Pen, rect?: Rect, background?: string) => void;
362
+ setInputStyle: (pen: Pen) => void;
363
+ hideInput: () => void;
364
+ private createInput;
365
+ clearDropdownList(): void;
366
+ private setDropdownList;
367
+ /**
368
+ * 添加一个选项到 dropdown dom 中
369
+ * @param text 选项文字
370
+ * @param index 选项索引
371
+ */
372
+ private dropdownAppendOption;
373
+ private selectDropdown;
374
+ find(idOrTag: string): Pen[];
375
+ findOne(idOrTag: string): Pen | undefined;
376
+ changePenId(oldId: string, newId: string): void;
377
+ updateValue(pen: Pen, data: IValue): void;
378
+ /**
379
+ * 执行 pen ,以及 pen 的子孙节点的 onResize 生命周期函数
380
+ */
381
+ private execPenResize;
382
+ setPenRect(pen: Pen, rect: Rect, render?: boolean): void;
383
+ getPenRect(pen: Pen, origin?: Point, scale?: number): {
384
+ x: number;
385
+ y: number;
386
+ width: number;
387
+ height: number;
388
+ };
389
+ toPng(padding?: Padding, callback?: BlobCallback, containBkImg?: boolean): string;
390
+ toggleAnchorMode(): void;
391
+ addAnchorHand(): void;
392
+ removeAnchorHand(): void;
393
+ toggleAnchorHand(): void;
394
+ gotoView(x: number, y: number): void;
395
+ showMagnifier(): void;
396
+ hideMagnifier(): void;
397
+ toggleMagnifier(): void;
398
+ destroy(): void;
399
+ }