@meta2d/core 1.0.55 → 1.0.56

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 (302) hide show
  1. package/README.md +13 -0
  2. package/package.build.json +39 -0
  3. package/package.json +38 -38
  4. package/src/canvas/canvas.ts +8639 -0
  5. package/src/canvas/canvasImage.ts +525 -0
  6. package/src/canvas/canvasTemplate.ts +257 -0
  7. package/src/canvas/magnifierCanvas.ts +142 -0
  8. package/src/canvas/offscreen.ts +14 -0
  9. package/src/core.ts +5128 -0
  10. package/src/data.ts +86 -0
  11. package/src/diagrams/arrow.ts +50 -0
  12. package/src/diagrams/circle.ts +19 -0
  13. package/src/diagrams/cloud.ts +34 -0
  14. package/src/diagrams/cube.ts +94 -0
  15. package/src/diagrams/diamond.ts +14 -0
  16. package/src/diagrams/file.ts +19 -0
  17. package/src/diagrams/gif.ts +105 -0
  18. package/src/diagrams/{hexagon.js → hexagon.ts} +19 -14
  19. package/src/diagrams/iframe.ts +365 -0
  20. package/src/diagrams/{index.js → index.ts} +36 -34
  21. package/src/diagrams/line/arrow.ts +175 -0
  22. package/src/diagrams/line/curve.ts +260 -0
  23. package/src/diagrams/line/line.ts +409 -0
  24. package/src/diagrams/line/polyline.ts +676 -0
  25. package/src/diagrams/line/smooth.ts +133 -0
  26. package/src/diagrams/message.ts +17 -0
  27. package/src/diagrams/mindLine.ts +31 -0
  28. package/src/diagrams/mindNode.ts +177 -0
  29. package/src/diagrams/panel.ts +149 -0
  30. package/src/diagrams/pentagon.ts +48 -0
  31. package/src/diagrams/pentagram.ts +63 -0
  32. package/src/diagrams/people.ts +23 -0
  33. package/src/diagrams/rectangle.ts +29 -0
  34. package/src/diagrams/svg/parse.ts +319 -0
  35. package/src/diagrams/svgPath.ts +53 -0
  36. package/src/diagrams/triangle.ts +43 -0
  37. package/src/diagrams/video.ts +202 -0
  38. package/src/dialog/dialog.ts +177 -0
  39. package/src/event/event.ts +142 -0
  40. package/src/map/map.ts +239 -0
  41. package/src/options.ts +205 -0
  42. package/src/pen/arrow.ts +259 -0
  43. package/src/pen/math.ts +253 -0
  44. package/src/pen/model.ts +785 -0
  45. package/src/pen/plugin.ts +57 -0
  46. package/src/pen/render.ts +3725 -0
  47. package/src/pen/text.ts +341 -0
  48. package/src/pen/utils.ts +21 -0
  49. package/src/point/point.ts +232 -0
  50. package/src/rect/rect.ts +507 -0
  51. package/src/rect/triangle.ts +16 -0
  52. package/src/scroll/scroll.ts +277 -0
  53. package/src/store/global.ts +38 -0
  54. package/src/store/store.ts +293 -0
  55. package/src/theme.ts +35 -0
  56. package/src/title/title.ts +115 -0
  57. package/src/tooltip/tooltip.ts +199 -0
  58. package/src/utils/clone.ts +79 -0
  59. package/src/utils/color.ts +126 -0
  60. package/src/utils/error.ts +7 -0
  61. package/src/utils/file.ts +46 -0
  62. package/src/utils/{index.d.ts → index.ts} +1 -0
  63. package/src/utils/math.ts +120 -0
  64. package/src/utils/object.ts +23 -0
  65. package/src/utils/padding.ts +48 -0
  66. package/src/utils/time.ts +25 -0
  67. package/src/utils/url.ts +30 -0
  68. package/src/utils/uuid.ts +15 -0
  69. package/index.js +0 -10
  70. package/index.js.map +0 -1
  71. package/src/canvas/canvas.d.ts +0 -456
  72. package/src/canvas/canvas.js +0 -8187
  73. package/src/canvas/canvas.js.map +0 -1
  74. package/src/canvas/canvasImage.d.ts +0 -28
  75. package/src/canvas/canvasImage.js +0 -503
  76. package/src/canvas/canvasImage.js.map +0 -1
  77. package/src/canvas/canvasTemplate.d.ts +0 -19
  78. package/src/canvas/canvasTemplate.js +0 -229
  79. package/src/canvas/canvasTemplate.js.map +0 -1
  80. package/src/canvas/index.js +0 -3
  81. package/src/canvas/index.js.map +0 -1
  82. package/src/canvas/magnifierCanvas.d.ts +0 -20
  83. package/src/canvas/magnifierCanvas.js +0 -101
  84. package/src/canvas/magnifierCanvas.js.map +0 -1
  85. package/src/canvas/offscreen.d.ts +0 -2
  86. package/src/canvas/offscreen.js +0 -14
  87. package/src/canvas/offscreen.js.map +0 -1
  88. package/src/core.d.ts +0 -479
  89. package/src/core.js +0 -5199
  90. package/src/core.js.map +0 -1
  91. package/src/data.d.ts +0 -34
  92. package/src/data.js +0 -85
  93. package/src/data.js.map +0 -1
  94. package/src/diagrams/arrow.d.ts +0 -4
  95. package/src/diagrams/arrow.js +0 -47
  96. package/src/diagrams/arrow.js.map +0 -1
  97. package/src/diagrams/circle.d.ts +0 -2
  98. package/src/diagrams/circle.js +0 -9
  99. package/src/diagrams/circle.js.map +0 -1
  100. package/src/diagrams/cloud.d.ts +0 -2
  101. package/src/diagrams/cloud.js +0 -12
  102. package/src/diagrams/cloud.js.map +0 -1
  103. package/src/diagrams/cube.d.ts +0 -2
  104. package/src/diagrams/cube.js +0 -70
  105. package/src/diagrams/cube.js.map +0 -1
  106. package/src/diagrams/diamond.d.ts +0 -2
  107. package/src/diagrams/diamond.js +0 -13
  108. package/src/diagrams/diamond.js.map +0 -1
  109. package/src/diagrams/file.d.ts +0 -2
  110. package/src/diagrams/file.js +0 -18
  111. package/src/diagrams/file.js.map +0 -1
  112. package/src/diagrams/gif.d.ts +0 -5
  113. package/src/diagrams/gif.js +0 -90
  114. package/src/diagrams/gif.js.map +0 -1
  115. package/src/diagrams/hexagon.d.ts +0 -2
  116. package/src/diagrams/hexagon.js.map +0 -1
  117. package/src/diagrams/iframe.d.ts +0 -2
  118. package/src/diagrams/iframe.js +0 -356
  119. package/src/diagrams/iframe.js.map +0 -1
  120. package/src/diagrams/index.d.ts +0 -71
  121. package/src/diagrams/index.js.map +0 -1
  122. package/src/diagrams/line/arrow.d.ts +0 -2
  123. package/src/diagrams/line/arrow.js +0 -128
  124. package/src/diagrams/line/arrow.js.map +0 -1
  125. package/src/diagrams/line/curve.d.ts +0 -16
  126. package/src/diagrams/line/curve.js +0 -236
  127. package/src/diagrams/line/curve.js.map +0 -1
  128. package/src/diagrams/line/index.js +0 -6
  129. package/src/diagrams/line/index.js.map +0 -1
  130. package/src/diagrams/line/line.d.ts +0 -42
  131. package/src/diagrams/line/line.js +0 -431
  132. package/src/diagrams/line/line.js.map +0 -1
  133. package/src/diagrams/line/polyline.d.ts +0 -10
  134. package/src/diagrams/line/polyline.js +0 -657
  135. package/src/diagrams/line/polyline.js.map +0 -1
  136. package/src/diagrams/line/smooth.d.ts +0 -3
  137. package/src/diagrams/line/smooth.js +0 -174
  138. package/src/diagrams/line/smooth.js.map +0 -1
  139. package/src/diagrams/message.d.ts +0 -2
  140. package/src/diagrams/message.js +0 -15
  141. package/src/diagrams/message.js.map +0 -1
  142. package/src/diagrams/mindLine.d.ts +0 -3
  143. package/src/diagrams/mindLine.js +0 -31
  144. package/src/diagrams/mindLine.js.map +0 -1
  145. package/src/diagrams/mindNode.d.ts +0 -3
  146. package/src/diagrams/mindNode.js +0 -189
  147. package/src/diagrams/mindNode.js.map +0 -1
  148. package/src/diagrams/panel.d.ts +0 -2
  149. package/src/diagrams/panel.js +0 -131
  150. package/src/diagrams/panel.js.map +0 -1
  151. package/src/diagrams/pentagon.d.ts +0 -3
  152. package/src/diagrams/pentagon.js +0 -46
  153. package/src/diagrams/pentagon.js.map +0 -1
  154. package/src/diagrams/pentagram.d.ts +0 -3
  155. package/src/diagrams/pentagram.js +0 -77
  156. package/src/diagrams/pentagram.js.map +0 -1
  157. package/src/diagrams/people.d.ts +0 -2
  158. package/src/diagrams/people.js +0 -19
  159. package/src/diagrams/people.js.map +0 -1
  160. package/src/diagrams/rectangle.d.ts +0 -3
  161. package/src/diagrams/rectangle.js +0 -26
  162. package/src/diagrams/rectangle.js.map +0 -1
  163. package/src/diagrams/svg/parse.d.ts +0 -15
  164. package/src/diagrams/svg/parse.js +0 -326
  165. package/src/diagrams/svg/parse.js.map +0 -1
  166. package/src/diagrams/svgPath.d.ts +0 -2
  167. package/src/diagrams/svgPath.js +0 -30
  168. package/src/diagrams/svgPath.js.map +0 -1
  169. package/src/diagrams/triangle.d.ts +0 -3
  170. package/src/diagrams/triangle.js +0 -41
  171. package/src/diagrams/triangle.js.map +0 -1
  172. package/src/diagrams/video.d.ts +0 -5
  173. package/src/diagrams/video.js +0 -185
  174. package/src/diagrams/video.js.map +0 -1
  175. package/src/dialog/dialog.d.ts +0 -21
  176. package/src/dialog/dialog.js +0 -98
  177. package/src/dialog/dialog.js.map +0 -1
  178. package/src/dialog/index.js +0 -2
  179. package/src/dialog/index.js.map +0 -1
  180. package/src/event/event.d.ts +0 -102
  181. package/src/event/event.js +0 -22
  182. package/src/event/event.js.map +0 -1
  183. package/src/event/index.js +0 -2
  184. package/src/event/index.js.map +0 -1
  185. package/src/map/index.js +0 -2
  186. package/src/map/index.js.map +0 -1
  187. package/src/map/map.d.ts +0 -21
  188. package/src/map/map.js +0 -210
  189. package/src/map/map.js.map +0 -1
  190. package/src/options.d.ts +0 -130
  191. package/src/options.js +0 -80
  192. package/src/options.js.map +0 -1
  193. package/src/pen/arrow.d.ts +0 -4
  194. package/src/pen/arrow.js +0 -188
  195. package/src/pen/arrow.js.map +0 -1
  196. package/src/pen/index.js +0 -7
  197. package/src/pen/index.js.map +0 -1
  198. package/src/pen/math.d.ts +0 -28
  199. package/src/pen/math.js +0 -304
  200. package/src/pen/math.js.map +0 -1
  201. package/src/pen/model.d.ts +0 -514
  202. package/src/pen/model.js +0 -210
  203. package/src/pen/model.js.map +0 -1
  204. package/src/pen/plugin.d.ts +0 -5
  205. package/src/pen/plugin.js +0 -88
  206. package/src/pen/plugin.js.map +0 -1
  207. package/src/pen/render.d.ts +0 -147
  208. package/src/pen/render.js +0 -3236
  209. package/src/pen/render.js.map +0 -1
  210. package/src/pen/text.d.ts +0 -8
  211. package/src/pen/text.js +0 -375
  212. package/src/pen/text.js.map +0 -1
  213. package/src/pen/utils.d.ts +0 -2
  214. package/src/pen/utils.js +0 -41
  215. package/src/pen/utils.js.map +0 -1
  216. package/src/point/index.js +0 -2
  217. package/src/point/index.js.map +0 -1
  218. package/src/point/point.d.ts +0 -65
  219. package/src/point/point.js +0 -179
  220. package/src/point/point.js.map +0 -1
  221. package/src/rect/index.js +0 -2
  222. package/src/rect/index.js.map +0 -1
  223. package/src/rect/rect.d.ts +0 -52
  224. package/src/rect/rect.js +0 -486
  225. package/src/rect/rect.js.map +0 -1
  226. package/src/rect/triangle.d.ts +0 -2
  227. package/src/rect/triangle.js +0 -10
  228. package/src/rect/triangle.js.map +0 -1
  229. package/src/scroll/index.js +0 -2
  230. package/src/scroll/index.js.map +0 -1
  231. package/src/scroll/scroll.d.ts +0 -35
  232. package/src/scroll/scroll.js +0 -221
  233. package/src/scroll/scroll.js.map +0 -1
  234. package/src/store/global.d.ts +0 -25
  235. package/src/store/global.js +0 -18
  236. package/src/store/global.js.map +0 -1
  237. package/src/store/index.js +0 -3
  238. package/src/store/index.js.map +0 -1
  239. package/src/store/store.d.ts +0 -228
  240. package/src/store/store.js +0 -121
  241. package/src/store/store.js.map +0 -1
  242. package/src/theme.d.ts +0 -13
  243. package/src/theme.js +0 -23
  244. package/src/theme.js.map +0 -1
  245. package/src/title/index.js +0 -2
  246. package/src/title/index.js.map +0 -1
  247. package/src/title/title.d.ts +0 -30
  248. package/src/title/title.js +0 -99
  249. package/src/title/title.js.map +0 -1
  250. package/src/tooltip/index.js +0 -2
  251. package/src/tooltip/index.js.map +0 -1
  252. package/src/tooltip/tooltip.d.ts +0 -40
  253. package/src/tooltip/tooltip.js +0 -167
  254. package/src/tooltip/tooltip.js.map +0 -1
  255. package/src/utils/browser.d.ts +0 -1
  256. package/src/utils/browser.js +0 -4
  257. package/src/utils/browser.js.map +0 -1
  258. package/src/utils/clone.d.ts +0 -8
  259. package/src/utils/clone.js +0 -88
  260. package/src/utils/clone.js.map +0 -1
  261. package/src/utils/color.d.ts +0 -3
  262. package/src/utils/color.js +0 -126
  263. package/src/utils/color.js.map +0 -1
  264. package/src/utils/error.d.ts +0 -2
  265. package/src/utils/error.js +0 -6
  266. package/src/utils/error.js.map +0 -1
  267. package/src/utils/file.d.ts +0 -3
  268. package/src/utils/file.js +0 -92
  269. package/src/utils/file.js.map +0 -1
  270. package/src/utils/index.js +0 -9
  271. package/src/utils/index.js.map +0 -1
  272. package/src/utils/math.d.ts +0 -18
  273. package/src/utils/math.js +0 -152
  274. package/src/utils/math.js.map +0 -1
  275. package/src/utils/object.d.ts +0 -2
  276. package/src/utils/object.js +0 -21
  277. package/src/utils/object.js.map +0 -1
  278. package/src/utils/padding.d.ts +0 -7
  279. package/src/utils/padding.js +0 -47
  280. package/src/utils/padding.js.map +0 -1
  281. package/src/utils/time.d.ts +0 -1
  282. package/src/utils/time.js +0 -17
  283. package/src/utils/time.js.map +0 -1
  284. package/src/utils/url.d.ts +0 -4
  285. package/src/utils/url.js +0 -27
  286. package/src/utils/url.js.map +0 -1
  287. package/src/utils/uuid.d.ts +0 -4
  288. package/src/utils/uuid.js +0 -13
  289. package/src/utils/uuid.js.map +0 -1
  290. /package/{index.d.ts → index.ts} +0 -0
  291. /package/src/canvas/{index.d.ts → index.ts} +0 -0
  292. /package/src/diagrams/line/{index.d.ts → index.ts} +0 -0
  293. /package/src/dialog/{index.d.ts → index.ts} +0 -0
  294. /package/src/event/{index.d.ts → index.ts} +0 -0
  295. /package/src/map/{index.d.ts → index.ts} +0 -0
  296. /package/src/pen/{index.d.ts → index.ts} +0 -0
  297. /package/src/point/{index.d.ts → index.ts} +0 -0
  298. /package/src/rect/{index.d.ts → index.ts} +0 -0
  299. /package/src/scroll/{index.d.ts → index.ts} +0 -0
  300. /package/src/store/{index.d.ts → index.ts} +0 -0
  301. /package/src/title/{index.d.ts → index.ts} +0 -0
  302. /package/src/tooltip/{index.d.ts → index.ts} +0 -0
@@ -0,0 +1,23 @@
1
+ // const obj = {a:{b:[0,1,2]}}
2
+ // getter(obj, 'a.b.1')
3
+ export function getter(object: any, path: string) {
4
+ if (path == undefined) {
5
+ return object;
6
+ }
7
+ const arr = path.split('.');
8
+ while (arr.length && (object = object[arr.shift()]));
9
+ return object;
10
+ }
11
+
12
+ // setter(obj, 'a.b.1', 111)
13
+ export function setter(object: any, path: string, value: any) {
14
+ if (path == undefined) {
15
+ return;
16
+ }
17
+ path
18
+ .split('.')
19
+ .reduce(
20
+ (o, p, i) => (o[p] = path.split('.').length === ++i ? value : o[p] || {}),
21
+ object
22
+ );
23
+ }
@@ -0,0 +1,48 @@
1
+ export type Padding = number | string | number[];
2
+
3
+ /**
4
+ * turn padding into [top, right, bottom, left]
5
+ * @param {Number|Array} padding input padding
6
+ * @return {array} output
7
+ */
8
+ export const formatPadding = (padding: Padding): number[] => {
9
+ let top = 0;
10
+ let left = 0;
11
+ let right = 0;
12
+ let bottom = 0;
13
+
14
+ if (typeof padding === 'number') {
15
+ top = left = right = bottom = padding;
16
+ } else if (typeof padding === 'string') {
17
+ const intPadding = parseInt(padding, 10);
18
+ top = left = right = bottom = intPadding;
19
+ } else if (Array.isArray(padding)) {
20
+ top = padding[0];
21
+ right = !isNil(padding[1]) ? padding[1] : padding[0];
22
+ bottom = !isNil(padding[2]) ? padding[2] : padding[0];
23
+ left = !isNil(padding[3]) ? padding[3] : right;
24
+ }
25
+ return [top, right, bottom, left];
26
+ };
27
+
28
+ /**
29
+ * Checks if `value` is `null` or `undefined`.
30
+ *
31
+ * @since 4.0.0
32
+ * @category Lang
33
+ * @param {*} value The value to check.
34
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
35
+ * @example
36
+ *
37
+ * isNil(null)
38
+ * // => true
39
+ *
40
+ * isNil(void 0)
41
+ * // => true
42
+ *
43
+ * isNil(NaN)
44
+ * // => false
45
+ */
46
+ function isNil(value: unknown): value is null {
47
+ return value == null;
48
+ }
@@ -0,0 +1,25 @@
1
+ export function formatTime(format?: string) {
2
+ const weeks = ['天', '一', '二', '三', '四', '五', '六'];
3
+ const now = new Date();
4
+ const year = now.getFullYear();
5
+ const month = now.getMonth() + 1;
6
+ const day = now.getDate();
7
+ const week = now.getDay();
8
+ const hours = now.getHours();
9
+ const minutes = now.getMinutes();
10
+ const seconds = now.getSeconds();
11
+ const fn = new Function(
12
+ 'year',
13
+ 'month',
14
+ 'day',
15
+ 'week',
16
+ 'hours',
17
+ 'minutes',
18
+ 'seconds',
19
+ format
20
+ ? `return ${format}`
21
+ : 'return `${year}:${month}:${day} ${hours}:${minutes}:${seconds} 星期${week}`'
22
+ );
23
+ const time = fn(year, month, day, weeks[week], hours, minutes, seconds);
24
+ return time;
25
+ }
@@ -0,0 +1,30 @@
1
+ export function queryURLParams(value?: string) {
2
+ let url = value || window.location.search.split('?')[1];
3
+ const urlSearchParams = new URLSearchParams(url);
4
+ const params = Object.fromEntries(urlSearchParams.entries());
5
+ return params;
6
+ }
7
+
8
+ export const getRootDomain = () => {
9
+ let domain = '';
10
+ const domainItems = location.hostname.split('.');
11
+ if (
12
+ domainItems.length < 3 ||
13
+ (domainItems.length === 4 &&
14
+ +domainItems[0] > 0 &&
15
+ +domainItems[1] > 0 &&
16
+ +domainItems[2] > 0 &&
17
+ +domainItems[3] > 0)
18
+ ) {
19
+ domain = location.hostname;
20
+ } else if (
21
+ location.hostname.endsWith('.com.cn') ||
22
+ location.hostname.endsWith('.org.cn')
23
+ ) {
24
+ domain = domainItems.slice(-3).join('.');
25
+ } else {
26
+ domain = domainItems.slice(-2).join('.');
27
+ }
28
+
29
+ return domain;
30
+ };
@@ -0,0 +1,15 @@
1
+ export function s4() {
2
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
3
+ }
4
+
5
+ export function s8() {
6
+ return (((1 + Math.random()) * 0x100000000) | 0).toString(16).substring(1);
7
+ }
8
+
9
+ export function s12() {
10
+ return s4() + s8();
11
+ }
12
+
13
+ export function s16() {
14
+ return s8() + s8();
15
+ }
package/index.js DELETED
@@ -1,10 +0,0 @@
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 DELETED
@@ -1 +0,0 @@
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"}
@@ -1,456 +0,0 @@
1
- import { Pen, IValue } from '../pen';
2
- import { Point } from '../point';
3
- import { Rect } from '../rect';
4
- import { EditAction, Fit, Meta2dStore } from '../store';
5
- import { Padding } from '../utils';
6
- import { HotkeyType, HoverType, MouseRight } from '../data';
7
- import { curve, mind, lineSegment } from '../diagrams';
8
- import { polyline } from '../diagrams/line/polyline';
9
- import { Tooltip } from '../tooltip';
10
- import { Scroll } from '../scroll';
11
- import { CanvasImage } from './canvasImage';
12
- import { MagnifierCanvas } from './magnifierCanvas';
13
- import { Meta2d } from '../core';
14
- import { Dialog } from '../dialog';
15
- import { Title } from '../title';
16
- import { CanvasTemplate } from './canvasTemplate';
17
- export declare const movingSuffix: "-moving";
18
- export declare class Canvas {
19
- parent: Meta2d;
20
- parentElement: HTMLElement;
21
- store: Meta2dStore;
22
- canvas: HTMLCanvasElement;
23
- offscreen: HTMLCanvasElement;
24
- width: number;
25
- height: number;
26
- externalElements: HTMLDivElement;
27
- clientRect?: DOMRect;
28
- canvasRect: Rect;
29
- activeRect: Rect;
30
- initActiveRect: Rect;
31
- dragRect: Rect;
32
- lastRotate: number;
33
- sizeCPs: Point[];
34
- activeInitPos: Point[];
35
- hoverType: HoverType;
36
- resizeIndex: number;
37
- mouseDown: {
38
- x: number;
39
- y: number;
40
- restore?: boolean;
41
- };
42
- hotkeyType: HotkeyType;
43
- mouseRight: MouseRight;
44
- addCaches: Pen[];
45
- touchCenter?: Point;
46
- initTouchDis?: number;
47
- initScale?: number;
48
- touchScaling?: boolean;
49
- touchMoving?: boolean;
50
- startTouches?: TouchList;
51
- lastOffsetX: number;
52
- lastOffsetY: number;
53
- drawingLineName?: string;
54
- drawLineFns: string[];
55
- drawingLine?: Pen;
56
- pencil?: boolean;
57
- pencilLine?: Pen;
58
- movingPens: Pen[];
59
- patchFlagsLines?: Set<Pen>;
60
- dock: {
61
- xDock: Point;
62
- yDock: Point;
63
- };
64
- prevAnchor: Point;
65
- nextAnchor: Point;
66
- private lastMouseTime;
67
- private hoverTimer;
68
- private fitTimer;
69
- private willInactivePen;
70
- patchFlags: boolean;
71
- lastRender: number;
72
- touchStart: number;
73
- touchStartTimer: any;
74
- timer: any;
75
- private lastAnimateRender;
76
- animateRendering: boolean;
77
- renderTimer: number;
78
- initPens?: Pen[];
79
- pointSize: 8;
80
- pasteOffset: boolean;
81
- opening: boolean;
82
- maxZindex: number;
83
- canMoveLine: boolean;
84
- randomIdObj: object;
85
- keyOptions?: {
86
- shiftKey?: boolean;
87
- altKey?: boolean;
88
- ctrlKey?: boolean;
89
- metaKey?: boolean;
90
- };
91
- /**
92
- * @deprecated 改用 beforeAddPens
93
- */
94
- beforeAddPen: (pen: Pen) => boolean;
95
- beforeAddPens: (pens: Pen[]) => Promise<boolean>;
96
- beforeAddAnchor: (pen: Pen, anchor: Point) => Promise<boolean>;
97
- beforeRemovePens: (pens: Pen[]) => Promise<boolean>;
98
- beforeRemoveAnchor: (pen: Pen, anchor: Point) => Promise<boolean>;
99
- customResizeDock: (store: Meta2dStore, rect: Rect, pens: Pen[], resizeIndex: number) => {
100
- xDock: Point;
101
- yDock: Point;
102
- };
103
- customMoveDock: (store: Meta2dStore, rect: Rect, pens: Pen[], offset: Point) => {
104
- xDock: Point;
105
- yDock: Point;
106
- };
107
- inputParent: HTMLDivElement;
108
- inputDiv: HTMLDivElement;
109
- inputRight: HTMLDivElement;
110
- dropdown: HTMLUListElement;
111
- tooltip: Tooltip;
112
- title: Title;
113
- mousePos: Point;
114
- scroll: Scroll;
115
- movingAnchor: Point;
116
- canvasTemplate: CanvasTemplate;
117
- canvasImage: CanvasImage;
118
- canvasImageBottom: CanvasImage;
119
- magnifierCanvas: MagnifierCanvas;
120
- dialog: Dialog;
121
- autoPolylineFlag: boolean;
122
- stopPropagation: (e: MouseEvent) => void;
123
- constructor(parent: Meta2d, parentElement: HTMLElement, store: Meta2dStore);
124
- curve: typeof curve;
125
- polyline: typeof polyline;
126
- mind: typeof mind;
127
- line: typeof lineSegment;
128
- listen(): void;
129
- onCopy: (event: ClipboardEvent) => void;
130
- onCut: (event: ClipboardEvent) => void;
131
- onPaste: (event: ClipboardEvent) => void;
132
- onMessage: (e: MessageEvent) => void;
133
- onwheel: (e: WheelEvent) => void;
134
- onkeydown: (e: KeyboardEvent) => void;
135
- /**
136
- * 分割连线的锚点,变成两条线
137
- * @param line 连线
138
- * @param anchor 锚点,连线的某个锚点,引用相同
139
- */
140
- splitLine(line: Pen, anchor: Point): void;
141
- private translateAnchor;
142
- onkeyup: (e: KeyboardEvent) => void;
143
- fileToPen(file: File, isGif: boolean): Promise<Pen>;
144
- ondrop: (event: DragEvent) => Promise<void>;
145
- dropPens(pens: Pen[], e: Point): Promise<void>;
146
- randomCombineId(pen: Pen, pens: Pen[], parentId?: string): Pen;
147
- addPens(pens: Pen[], history?: boolean): Promise<Pen[]>;
148
- ontouchstart: (e: TouchEvent) => void;
149
- ontouchmove: (event: TouchEvent) => void;
150
- ontouchend: (event: TouchEvent) => void;
151
- onGesturestart: (e: any) => void;
152
- /**
153
- * 获取初始化的 pencilLine
154
- * @param pt 需包含 penId
155
- */
156
- private getInitPencilLine;
157
- /**
158
- * 获取初始化的 drawingLine
159
- * @param pt 需包含 penId
160
- */
161
- private createDrawingLine;
162
- onMouseDown: (e: {
163
- x: number;
164
- y: number;
165
- clientX: number;
166
- clientY: number;
167
- pageX: number;
168
- pageY: number;
169
- buttons?: number;
170
- ctrlKey?: boolean;
171
- shiftKey?: boolean;
172
- altKey?: boolean;
173
- }) => void;
174
- onMouseMove: (e: {
175
- x: number;
176
- y: number;
177
- clientX: number;
178
- clientY: number;
179
- pageX: number;
180
- pageY: number;
181
- buttons?: number;
182
- ctrlKey?: boolean;
183
- shiftKey?: boolean;
184
- altKey?: boolean;
185
- }) => void;
186
- onMouseUp: (e: {
187
- x: number;
188
- y: number;
189
- clientX: number;
190
- clientY: number;
191
- pageX: number;
192
- pageY: number;
193
- buttons?: number;
194
- ctrlKey?: boolean;
195
- shiftKey?: boolean;
196
- altKey?: boolean;
197
- button?: number;
198
- }) => void;
199
- private addRuleLine;
200
- clearRuleLines(): void;
201
- get ruleLines(): Pen[];
202
- /**
203
- * @description 调整pen的坐标,让pen按照网格自动对齐
204
- * @author Joseph Ho
205
- * @date 14/11/2023
206
- * @memberof Canvas
207
- */
208
- alignPenToGrid(pen: Pen): void;
209
- /**
210
- * 拖拽结束,数据更新到 active.pens
211
- */
212
- private movedActivePens;
213
- /**
214
- * 复制移动后的笔
215
- */
216
- private copyMovedPens;
217
- /**
218
- * 若本次改变的画笔存在图片,并且在上层 or 下层,需要擦除上层 or 下层
219
- * 子节点中包含图片,也需要重绘
220
- * @param pens 本次改变的 pens
221
- */
222
- initImageCanvas(pens: Pen[]): void;
223
- initTemplateCanvas(pens: Pen[]): void;
224
- private hasImage;
225
- private clearDock;
226
- inactive(drawing?: boolean): void;
227
- active(pens: Pen[], emit?: boolean): void;
228
- getSizeCPs(): void;
229
- getSpecialAngle(to: Point, last: Point): void;
230
- onResize: () => void;
231
- onScroll: () => void;
232
- calibrateMouse: (pt: Point) => Point;
233
- clearHover(): void;
234
- private getContainerHover;
235
- private getHover;
236
- private inPens;
237
- private dockInAnchor;
238
- inAnchor(pt: Point, pen: Pen, anchor: Point): HoverType;
239
- resize(w?: number, h?: number): void;
240
- clearCanvas(): void;
241
- addPen(pen: Pen, history?: boolean, emit?: boolean): Promise<Pen>;
242
- pushHistory(action: EditAction): void;
243
- undo(): void;
244
- redo(): void;
245
- activeHistory(): void;
246
- doEditAction(action: EditAction, undo: boolean): void;
247
- makePen(pen: Pen): void;
248
- drawline(mouse?: Point): void;
249
- initLineRect(pen: Pen): void;
250
- drawingPencil(): void;
251
- stopPencil(): void;
252
- finishDrawline(end?: boolean): Promise<void>;
253
- finishPencil(): Promise<void>;
254
- /**
255
- * 火狐浏览器无法绘制 svg 不存在 width height 的问题
256
- * 此方法手动添加 width 和 height 解决火狐浏览器绘制 svg
257
- * @param pen
258
- */
259
- private firefoxLoadSvg;
260
- loadImage(pen: Pen): void;
261
- private imageTimer;
262
- imageLoaded(): void;
263
- private templateImageTimer;
264
- templateImageLoaded(): void;
265
- setCalculativeByScale(pen: Pen): void;
266
- updatePenRect(pen: Pen, { worldRectIsReady, playingAnimate, }?: {
267
- worldRectIsReady?: boolean;
268
- playingAnimate?: boolean;
269
- noChildren?: boolean;
270
- }): void;
271
- render: (patchFlags?: number | boolean) => void;
272
- renderPens: () => void;
273
- private renderPenContainChild;
274
- renderBorder: () => void;
275
- renderHoverPoint: () => void;
276
- translate(x?: number, y?: number): void;
277
- onMovePens(): void;
278
- /**
279
- * 缩放整个画布
280
- * @param scale 缩放比例,最终的 data.scale
281
- * @param center 中心点,引用类型,存在副作用,会更改原值
282
- */
283
- scale(scale: number, center?: {
284
- x: number;
285
- y: number;
286
- }): void;
287
- templateScale(scale: number, center?: {
288
- x: number;
289
- y: number;
290
- }): void;
291
- rotatePens(e: Point): void;
292
- resizePens(e: Point): void;
293
- movePens(e: {
294
- x: number;
295
- y: number;
296
- ctrlKey?: boolean;
297
- shiftKey?: boolean;
298
- altKey?: boolean;
299
- }): void;
300
- /**
301
- * 初始化移动,更改画笔的 id parentId 等关联关系
302
- * @param pen 要修改的画笔
303
- * @param pens 本次操作的画笔们,包含子画笔
304
- */
305
- private changeIdsByMoving;
306
- /**
307
- * 初始化 this.movingPens
308
- * 修改 ids (id parentId children 等)
309
- * 半透明,去图片
310
- */
311
- initMovingPens(): void;
312
- moveLineAnchor(pt: {
313
- x: number;
314
- y: number;
315
- }, keyOptions: {
316
- ctrlKey?: boolean;
317
- shiftKey?: boolean;
318
- altKey?: boolean;
319
- }): void;
320
- moveLineAnchorPrev(e: {
321
- x: number;
322
- y: number;
323
- }): void;
324
- moveLineAnchorNext(e: {
325
- x: number;
326
- y: number;
327
- }): void;
328
- setAnchor(e: {
329
- x: number;
330
- y: number;
331
- }): Promise<void>;
332
- /**
333
- * 连线允许移动,若与其它图形有连接,但其它图形不在此次移动中,会断开连接
334
- * @param line 连线
335
- * @param pens 本次移动的全部图形,包含子节点
336
- */
337
- private checkDisconnect;
338
- /**
339
- * 移动 画笔们
340
- * @param pens 画笔们,不包含子节点
341
- * @param x 偏移 x
342
- * @param y 偏移 y
343
- * @param doing 是否持续移动
344
- */
345
- translatePens(pens: Pen[], x: number, y: number, doing?: boolean): void;
346
- /**
347
- * 移动 画笔们
348
- * @param pens 画笔们,不包含子节点
349
- * @param x 偏移 x
350
- * @param y 偏移 y
351
- * @param doing 是否持续移动
352
- */
353
- templateTranslatePens(pens: Pen[], x: number, y: number): void;
354
- private calcAutoAnchor;
355
- restoreNodeAnimate(pen: Pen): void;
356
- updateLines(pen: Pen, change?: boolean): void;
357
- calcActiveRect(): void;
358
- /**
359
- * 旋转当前画笔包括子节点
360
- * @param pen 旋转的画笔
361
- * @param angle 本次的旋转值,加到 pen.calculative.rotate 上
362
- */
363
- rotatePen(pen: Pen, angle: number, rect: Rect): void;
364
- nextAnimate(pen: Pen): void;
365
- getFrameProps(pen: Pen): {};
366
- animate(): void;
367
- get clipboardName(): string;
368
- copy(pens?: Pen[], emit?: boolean): Promise<void>;
369
- cut(pens?: Pen[]): void;
370
- paste(): Promise<void>;
371
- /**
372
- * 获取 pens 列表中的所有节点(包含子节点)
373
- * @param pens 不包含子节点
374
- */
375
- getAllByPens(pens: Pen[]): Pen[];
376
- getAllFollowersByPens(pens: Pen[], deep?: boolean): Pen[];
377
- setFollowers(pens?: Pen[]): void;
378
- /**
379
- *
380
- * @param pen 当前复制的画笔
381
- * @param parentId 父节点 id
382
- * @param clipboard 本次复制的全部画笔,包含子节点, 以及 origin 和 scale
383
- * @returns 复制后的画笔
384
- */
385
- private pastePen;
386
- /**
387
- * 修改对应连线的 anchors
388
- * @param oldId 老 id
389
- * @param pen 节点
390
- * @param pastePens 本次复制的 pens 包含子节点
391
- */
392
- changeLineAnchors(oldId: string, pen: Pen, pastePens: Pen[]): void;
393
- /**
394
- * 复制连线的过程,修改 与 此线连接 node 的 connectedLines
395
- * @param oldId 线原 id
396
- * @param line 线
397
- * @param pastePens 此处复制的全部 pens (包含子节点)
398
- */
399
- changeNodeConnectedLine(oldId: string, line: Pen, pastePens: Pen[]): void;
400
- delete(pens?: Pen[], canDelLocked?: boolean, history?: boolean): Promise<void>;
401
- private _del;
402
- getDelPens(pen: Pen, delPens: Pen[]): void;
403
- private getLockedParent;
404
- delForce(pen: Pen): void;
405
- private delConnectedLines;
406
- private ondblclick;
407
- showInput: (pen: Pen, rect?: Rect, background?: string) => void;
408
- setInputStyle: (pen: Pen) => void;
409
- convertSpecialCharacter(str: any): any;
410
- hideInput: () => void;
411
- private createInput;
412
- clearDropdownList(): void;
413
- private setDropdownList;
414
- /**
415
- * 添加一个选项到 dropdown dom 中
416
- * @param text 选项文字
417
- * @param index 选项索引
418
- */
419
- private dropdownAppendOption;
420
- private selectDropdown;
421
- find(idOrTag: string): Pen[];
422
- findOne(idOrTag: string): Pen | undefined;
423
- changePenId(oldId: string, newId: string): void;
424
- updateValue(pen: Pen, data: IValue): void;
425
- /**
426
- * 执行 pen ,以及 pen 的子孙节点的 onResize 生命周期函数
427
- */
428
- private execPenResize;
429
- setPenRect(pen: Pen, rect: Rect, render?: boolean): void;
430
- getPenRect(pen: Pen, origin?: Point, scale?: number): {
431
- x: number;
432
- y: number;
433
- width: number;
434
- height: number;
435
- };
436
- toPng(padding?: Padding, callback?: BlobCallback, containBkImg?: boolean, maxWidth?: number): string;
437
- activeToPng(padding?: Padding, maxWidth?: number): string;
438
- pensToPng(pens?: Pen[], padding?: Padding, maxWidth?: number): string;
439
- toggleAnchorMode(): void;
440
- addAnchorHand(): void;
441
- removeAnchorHand(): void;
442
- toggleAnchorHand(): void;
443
- gotoView(x: number, y: number): void;
444
- showMagnifier(): void;
445
- hideMagnifier(): void;
446
- private inFitBorder;
447
- showFit(): void;
448
- hideFit(): void;
449
- makeFit(): void;
450
- updateFit(e: any): void;
451
- updateFitRect(fit?: Fit): void;
452
- deleteFit(fit?: Fit): void;
453
- calcuActiveFit(): void;
454
- toggleMagnifier(): void;
455
- destroy(): void;
456
- }