@meta2d/core 1.0.54 → 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 -455
  72. package/src/canvas/canvas.js +0 -8168
  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 -477
  89. package/src/core.js +0 -5168
  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 -14
  176. package/src/dialog/dialog.js +0 -77
  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 -512
  202. package/src/pen/model.js +0 -209
  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 -3229
  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 -226
  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,455 +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
- onwheel: (e: WheelEvent) => void;
133
- onkeydown: (e: KeyboardEvent) => void;
134
- /**
135
- * 分割连线的锚点,变成两条线
136
- * @param line 连线
137
- * @param anchor 锚点,连线的某个锚点,引用相同
138
- */
139
- splitLine(line: Pen, anchor: Point): void;
140
- private translateAnchor;
141
- onkeyup: (e: KeyboardEvent) => void;
142
- fileToPen(file: File, isGif: boolean): Promise<Pen>;
143
- ondrop: (event: DragEvent) => Promise<void>;
144
- dropPens(pens: Pen[], e: Point): Promise<void>;
145
- randomCombineId(pen: Pen, pens: Pen[], parentId?: string): Pen;
146
- addPens(pens: Pen[], history?: boolean): Promise<Pen[]>;
147
- ontouchstart: (e: TouchEvent) => void;
148
- ontouchmove: (event: TouchEvent) => void;
149
- ontouchend: (event: TouchEvent) => void;
150
- onGesturestart: (e: any) => void;
151
- /**
152
- * 获取初始化的 pencilLine
153
- * @param pt 需包含 penId
154
- */
155
- private getInitPencilLine;
156
- /**
157
- * 获取初始化的 drawingLine
158
- * @param pt 需包含 penId
159
- */
160
- private createDrawingLine;
161
- onMouseDown: (e: {
162
- x: number;
163
- y: number;
164
- clientX: number;
165
- clientY: number;
166
- pageX: number;
167
- pageY: number;
168
- buttons?: number;
169
- ctrlKey?: boolean;
170
- shiftKey?: boolean;
171
- altKey?: boolean;
172
- }) => void;
173
- onMouseMove: (e: {
174
- x: number;
175
- y: number;
176
- clientX: number;
177
- clientY: number;
178
- pageX: number;
179
- pageY: number;
180
- buttons?: number;
181
- ctrlKey?: boolean;
182
- shiftKey?: boolean;
183
- altKey?: boolean;
184
- }) => void;
185
- onMouseUp: (e: {
186
- x: number;
187
- y: number;
188
- clientX: number;
189
- clientY: number;
190
- pageX: number;
191
- pageY: number;
192
- buttons?: number;
193
- ctrlKey?: boolean;
194
- shiftKey?: boolean;
195
- altKey?: boolean;
196
- button?: number;
197
- }) => void;
198
- private addRuleLine;
199
- clearRuleLines(): void;
200
- get ruleLines(): Pen[];
201
- /**
202
- * @description 调整pen的坐标,让pen按照网格自动对齐
203
- * @author Joseph Ho
204
- * @date 14/11/2023
205
- * @memberof Canvas
206
- */
207
- alignPenToGrid(pen: Pen): void;
208
- /**
209
- * 拖拽结束,数据更新到 active.pens
210
- */
211
- private movedActivePens;
212
- /**
213
- * 复制移动后的笔
214
- */
215
- private copyMovedPens;
216
- /**
217
- * 若本次改变的画笔存在图片,并且在上层 or 下层,需要擦除上层 or 下层
218
- * 子节点中包含图片,也需要重绘
219
- * @param pens 本次改变的 pens
220
- */
221
- initImageCanvas(pens: Pen[]): void;
222
- initTemplateCanvas(pens: Pen[]): void;
223
- private hasImage;
224
- private clearDock;
225
- inactive(drawing?: boolean): void;
226
- active(pens: Pen[], emit?: boolean): void;
227
- getSizeCPs(): void;
228
- getSpecialAngle(to: Point, last: Point): void;
229
- onResize: () => void;
230
- onScroll: () => void;
231
- calibrateMouse: (pt: Point) => Point;
232
- clearHover(): void;
233
- private getContainerHover;
234
- private getHover;
235
- private inPens;
236
- private dockInAnchor;
237
- inAnchor(pt: Point, pen: Pen, anchor: Point): HoverType;
238
- resize(w?: number, h?: number): void;
239
- clearCanvas(): void;
240
- addPen(pen: Pen, history?: boolean, emit?: boolean): Promise<Pen>;
241
- pushHistory(action: EditAction): void;
242
- undo(): void;
243
- redo(): void;
244
- activeHistory(): void;
245
- doEditAction(action: EditAction, undo: boolean): void;
246
- makePen(pen: Pen): void;
247
- drawline(mouse?: Point): void;
248
- initLineRect(pen: Pen): void;
249
- drawingPencil(): void;
250
- stopPencil(): void;
251
- finishDrawline(end?: boolean): Promise<void>;
252
- finishPencil(): Promise<void>;
253
- /**
254
- * 火狐浏览器无法绘制 svg 不存在 width height 的问题
255
- * 此方法手动添加 width 和 height 解决火狐浏览器绘制 svg
256
- * @param pen
257
- */
258
- private firefoxLoadSvg;
259
- loadImage(pen: Pen): void;
260
- private imageTimer;
261
- imageLoaded(): void;
262
- private templateImageTimer;
263
- templateImageLoaded(): void;
264
- setCalculativeByScale(pen: Pen): void;
265
- updatePenRect(pen: Pen, { worldRectIsReady, playingAnimate, }?: {
266
- worldRectIsReady?: boolean;
267
- playingAnimate?: boolean;
268
- noChildren?: boolean;
269
- }): void;
270
- render: (patchFlags?: number | boolean) => void;
271
- renderPens: () => void;
272
- private renderPenContainChild;
273
- renderBorder: () => void;
274
- renderHoverPoint: () => void;
275
- translate(x?: number, y?: number): void;
276
- onMovePens(): void;
277
- /**
278
- * 缩放整个画布
279
- * @param scale 缩放比例,最终的 data.scale
280
- * @param center 中心点,引用类型,存在副作用,会更改原值
281
- */
282
- scale(scale: number, center?: {
283
- x: number;
284
- y: number;
285
- }): void;
286
- templateScale(scale: number, center?: {
287
- x: number;
288
- y: number;
289
- }): void;
290
- rotatePens(e: Point): void;
291
- resizePens(e: Point): void;
292
- movePens(e: {
293
- x: number;
294
- y: number;
295
- ctrlKey?: boolean;
296
- shiftKey?: boolean;
297
- altKey?: boolean;
298
- }): void;
299
- /**
300
- * 初始化移动,更改画笔的 id parentId 等关联关系
301
- * @param pen 要修改的画笔
302
- * @param pens 本次操作的画笔们,包含子画笔
303
- */
304
- private changeIdsByMoving;
305
- /**
306
- * 初始化 this.movingPens
307
- * 修改 ids (id parentId children 等)
308
- * 半透明,去图片
309
- */
310
- initMovingPens(): void;
311
- moveLineAnchor(pt: {
312
- x: number;
313
- y: number;
314
- }, keyOptions: {
315
- ctrlKey?: boolean;
316
- shiftKey?: boolean;
317
- altKey?: boolean;
318
- }): void;
319
- moveLineAnchorPrev(e: {
320
- x: number;
321
- y: number;
322
- }): void;
323
- moveLineAnchorNext(e: {
324
- x: number;
325
- y: number;
326
- }): void;
327
- setAnchor(e: {
328
- x: number;
329
- y: number;
330
- }): Promise<void>;
331
- /**
332
- * 连线允许移动,若与其它图形有连接,但其它图形不在此次移动中,会断开连接
333
- * @param line 连线
334
- * @param pens 本次移动的全部图形,包含子节点
335
- */
336
- private checkDisconnect;
337
- /**
338
- * 移动 画笔们
339
- * @param pens 画笔们,不包含子节点
340
- * @param x 偏移 x
341
- * @param y 偏移 y
342
- * @param doing 是否持续移动
343
- */
344
- translatePens(pens: Pen[], x: number, y: number, doing?: boolean): void;
345
- /**
346
- * 移动 画笔们
347
- * @param pens 画笔们,不包含子节点
348
- * @param x 偏移 x
349
- * @param y 偏移 y
350
- * @param doing 是否持续移动
351
- */
352
- templateTranslatePens(pens: Pen[], x: number, y: number): void;
353
- private calcAutoAnchor;
354
- restoreNodeAnimate(pen: Pen): void;
355
- updateLines(pen: Pen, change?: boolean): void;
356
- calcActiveRect(): void;
357
- /**
358
- * 旋转当前画笔包括子节点
359
- * @param pen 旋转的画笔
360
- * @param angle 本次的旋转值,加到 pen.calculative.rotate 上
361
- */
362
- rotatePen(pen: Pen, angle: number, rect: Rect): void;
363
- nextAnimate(pen: Pen): void;
364
- getFrameProps(pen: Pen): {};
365
- animate(): void;
366
- get clipboardName(): string;
367
- copy(pens?: Pen[], emit?: boolean): Promise<void>;
368
- cut(pens?: Pen[]): void;
369
- paste(): Promise<void>;
370
- /**
371
- * 获取 pens 列表中的所有节点(包含子节点)
372
- * @param pens 不包含子节点
373
- */
374
- getAllByPens(pens: Pen[]): Pen[];
375
- getAllFollowersByPens(pens: Pen[], deep?: boolean): Pen[];
376
- setFollowers(pens?: Pen[]): void;
377
- /**
378
- *
379
- * @param pen 当前复制的画笔
380
- * @param parentId 父节点 id
381
- * @param clipboard 本次复制的全部画笔,包含子节点, 以及 origin 和 scale
382
- * @returns 复制后的画笔
383
- */
384
- private pastePen;
385
- /**
386
- * 修改对应连线的 anchors
387
- * @param oldId 老 id
388
- * @param pen 节点
389
- * @param pastePens 本次复制的 pens 包含子节点
390
- */
391
- changeLineAnchors(oldId: string, pen: Pen, pastePens: Pen[]): void;
392
- /**
393
- * 复制连线的过程,修改 与 此线连接 node 的 connectedLines
394
- * @param oldId 线原 id
395
- * @param line 线
396
- * @param pastePens 此处复制的全部 pens (包含子节点)
397
- */
398
- changeNodeConnectedLine(oldId: string, line: Pen, pastePens: Pen[]): void;
399
- delete(pens?: Pen[], canDelLocked?: boolean, history?: boolean): Promise<void>;
400
- private _del;
401
- getDelPens(pen: Pen, delPens: Pen[]): void;
402
- private getLockedParent;
403
- delForce(pen: Pen): void;
404
- private delConnectedLines;
405
- private ondblclick;
406
- showInput: (pen: Pen, rect?: Rect, background?: string) => void;
407
- setInputStyle: (pen: Pen) => void;
408
- convertSpecialCharacter(str: any): any;
409
- hideInput: () => void;
410
- private createInput;
411
- clearDropdownList(): void;
412
- private setDropdownList;
413
- /**
414
- * 添加一个选项到 dropdown dom 中
415
- * @param text 选项文字
416
- * @param index 选项索引
417
- */
418
- private dropdownAppendOption;
419
- private selectDropdown;
420
- find(idOrTag: string): Pen[];
421
- findOne(idOrTag: string): Pen | undefined;
422
- changePenId(oldId: string, newId: string): void;
423
- updateValue(pen: Pen, data: IValue): void;
424
- /**
425
- * 执行 pen ,以及 pen 的子孙节点的 onResize 生命周期函数
426
- */
427
- private execPenResize;
428
- setPenRect(pen: Pen, rect: Rect, render?: boolean): void;
429
- getPenRect(pen: Pen, origin?: Point, scale?: number): {
430
- x: number;
431
- y: number;
432
- width: number;
433
- height: number;
434
- };
435
- toPng(padding?: Padding, callback?: BlobCallback, containBkImg?: boolean, maxWidth?: number): string;
436
- activeToPng(padding?: Padding, maxWidth?: number): string;
437
- pensToPng(pens?: Pen[], padding?: Padding, maxWidth?: number): string;
438
- toggleAnchorMode(): void;
439
- addAnchorHand(): void;
440
- removeAnchorHand(): void;
441
- toggleAnchorHand(): void;
442
- gotoView(x: number, y: number): void;
443
- showMagnifier(): void;
444
- hideMagnifier(): void;
445
- private inFitBorder;
446
- showFit(): void;
447
- hideFit(): void;
448
- makeFit(): void;
449
- updateFit(e: any): void;
450
- updateFitRect(fit?: Fit): void;
451
- deleteFit(fit?: Fit): void;
452
- calcuActiveFit(): void;
453
- toggleMagnifier(): void;
454
- destroy(): void;
455
- }