@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,785 @@
1
+ import { Point } from '../point';
2
+ import { Rect } from '../rect';
3
+ import { Event, RealTime, Trigger } from '../event';
4
+ import { Canvas } from '../canvas';
5
+
6
+ export enum PenType {
7
+ Node,
8
+ Line,
9
+ }
10
+
11
+ export enum LockState {
12
+ None,
13
+ DisableEdit,
14
+ DisableMove,
15
+ DisableScale, //仅占位
16
+ DisableMoveScale,
17
+ // DisableActive,
18
+ Disable = 10,
19
+ }
20
+
21
+ export enum AnchorMode {
22
+ Default,
23
+ In,
24
+ Out,
25
+ }
26
+
27
+ export enum Gradient {
28
+ None, // 没有渐变
29
+ Linear, // 线性渐变
30
+ Radial, // 镜像渐变
31
+ }
32
+
33
+ //所在画布层 值和画布zIndex对应
34
+ export enum CanvasLayer{
35
+ CanvasTemplate = 1, //模版层
36
+ CanvasImageBottom, //底部图片层
37
+ CanvasMain, //主画布层
38
+ CanvasImage //顶部图片层
39
+ }
40
+
41
+ // export enum Flip {
42
+ // None, // 正常
43
+ // Horizontal, // 水平翻转
44
+ // Vertical, // 垂直翻转
45
+ // Both, // 全翻转
46
+ // }
47
+
48
+ // 修改哪些属性需要重现计算 textRect
49
+ export const needCalcTextRectProps = [
50
+ 'text',
51
+ 'textWidth',
52
+ 'textHeight',
53
+ 'textLeft',
54
+ 'textTop',
55
+ 'fontFamily',
56
+ 'fontSize',
57
+ 'lineHeight',
58
+ 'fontStyle',
59
+ 'fontWeight',
60
+ 'textAlign',
61
+ 'textBaseline',
62
+ 'whiteSpace',
63
+ 'ellipsis',
64
+ 'keepDecimal',
65
+ ];
66
+
67
+ export const needSetPenProps = ['x', 'y', 'width', 'height', 'flipX', 'flipY'];
68
+
69
+ export const needPatchFlagsPenRectProps = [
70
+ 'paddingTop',
71
+ 'paddingRight',
72
+ 'paddingBottom',
73
+ 'paddingLeft',
74
+ 'flipX',
75
+ 'flipY',
76
+ 'visible',
77
+ 'showChild',
78
+ ];
79
+
80
+ export const needCalcIconRectProps = ['iconLeft', 'iconTop', 'iconRotate'];
81
+
82
+ export interface ConnectLine {
83
+ lineId: string;
84
+ lineAnchor: string;
85
+ anchor: string;
86
+ }
87
+
88
+ export type TextAlign = 'left' | 'center' | 'right';
89
+ export type TextBaseline = 'top' | 'middle' | 'bottom';
90
+ export type WhiteSpace = 'nowrap' | 'pre-line' | 'break-all' | '';
91
+ // SetValue 方法参数类型
92
+ export type IValue = Pen &
93
+ Partial<ChartData> &
94
+ Partial<Record<'tag' | 'newId', string>> & { [key: string]: any };
95
+
96
+ // obj 类型数组 text 字段显示文字,其它属性选中后合并到画笔上
97
+ // string 类型,只展示文字
98
+ export type Dropdown = string | IValue;
99
+
100
+ export enum LineAnimateType {
101
+ Normal, // 水流
102
+ Beads, // 水珠流动
103
+ Dot, // 圆点
104
+ Arrow, // 箭头,
105
+ WaterDrop, // 水滴
106
+ }
107
+
108
+ export interface ColorStop {
109
+ i: number; //取值0-1,色标位置
110
+ color: string;
111
+ }
112
+
113
+ export interface Pen extends Rect {
114
+ id?: string;
115
+ tags?: string[];
116
+ parentId?: string;
117
+ type?: PenType;
118
+ name?: string;
119
+ lineName?: string;
120
+ borderRadius?: number;
121
+ // Hidden only visible == false
122
+ visible?: boolean;
123
+ locked?: LockState;
124
+
125
+ // 连线是否闭合路径
126
+ close?: boolean;
127
+ // 连线长度
128
+ length?: number;
129
+
130
+ title?: string;
131
+ // 优先级高于 title
132
+ titleFnJs?: string;
133
+ titleFn?: (pen: Pen) => string;
134
+
135
+ lineWidth?: number;
136
+ borderWidth?: number;
137
+ borderColor?: string;
138
+ globalAlpha?: number;
139
+ lineDash?: number[];
140
+ lineDashOffset?: number;
141
+ color?: string;
142
+ background?: string;
143
+ anchorColor?: string;
144
+ hoverAnchorColor?: string;
145
+ hoverColor?: string;
146
+ hoverBackground?: string;
147
+ activeColor?: string;
148
+ activeBackground?: string;
149
+ mouseDownValid?: boolean; // 是否鼠标按下是否有样式效果
150
+ mouseDownColor?: string;
151
+ mouseDownBackground?: string;
152
+ bkType?: Gradient;
153
+ /**
154
+ * @deprecated 改用 gradientColors
155
+ */
156
+ gradientFromColor?: string;
157
+ /**
158
+ * @deprecated 改用 gradientColors
159
+ */
160
+ gradientToColor?: string;
161
+ /**
162
+ * @deprecated 改用 gradientColors
163
+ */
164
+ gradientAngle?: number;
165
+ gradientRadius?: number;
166
+
167
+ // TODO: stroke 尚无径向渐变
168
+ strokeType?: Gradient;
169
+ /**
170
+ * @deprecated 改用 lineGradientColors
171
+ */
172
+ lineGradientFromColor?: string;
173
+ /**
174
+ * @deprecated 改用 lineGradientColors
175
+ */
176
+ lineGradientToColor?: string;
177
+ /**
178
+ * @deprecated 改用 lineGradientColors
179
+ */
180
+ lineGradientAngle?: number;
181
+
182
+ gradientColors?: string;
183
+ lineGradientColors?: string;
184
+ lineCap?: CanvasLineCap;
185
+ fromLineCap?: CanvasLineCap;
186
+ toLineCap?: CanvasLineCap;
187
+ lineJoin?: CanvasLineJoin;
188
+ shadowColor?: string;
189
+ shadowBlur?: number;
190
+ shadowOffsetX?: number;
191
+ shadowOffsetY?: number;
192
+ textHasShadow?: boolean; // 文字是否需要阴影
193
+
194
+ text?: string;
195
+ textWidth?: number;
196
+ textHeight?: number;
197
+ textLeft?: number;
198
+ textTop?: number;
199
+ textColor?: string;
200
+ hoverTextColor?: string;
201
+ activeTextColor?: string;
202
+ fontFamily?: string;
203
+ fontSize?: number;
204
+ lineHeight?: number;
205
+ fontStyle?: string;
206
+ fontWeight?: string;
207
+ textAlign?: TextAlign;
208
+ textBaseline?: TextBaseline;
209
+ textBackground?: string;
210
+ whiteSpace?: WhiteSpace;
211
+ ellipsis?: boolean;
212
+
213
+ image?: string;
214
+ icon?: string;
215
+ iconRotate?: number;
216
+ iconWidth?: number;
217
+ iconHeight?: number;
218
+ iconTop?: number;
219
+ iconLeft?: number;
220
+ iconColor?: string;
221
+ iconFamily?: string;
222
+ iconWeight?: string;
223
+ iconSize?: number;
224
+ iconAlign?:
225
+ | 'top'
226
+ | 'bottom'
227
+ | 'left'
228
+ | 'right'
229
+ | 'left-top'
230
+ | 'right-top'
231
+ | 'left-bottom'
232
+ | 'right-bottom'
233
+ | 'center';
234
+ imageRatio?: boolean;
235
+
236
+ disableInput?: boolean;
237
+ disableRotate?: boolean;
238
+ disableSize?: boolean;
239
+ disableAnchor?: boolean;
240
+
241
+ // 相对值,若小于 1 认为是相对坐标
242
+ paddingTop?: number;
243
+ paddingBottom?: number;
244
+ paddingLeft?: number;
245
+ paddingRight?: number;
246
+
247
+ backgroundImage?: string;
248
+ strokeImage?: string;
249
+
250
+ children?: string[];
251
+ followers?: string[];
252
+
253
+ anchors?: Point[];
254
+ anchorRadius?: number;
255
+ anchorBackground?: string;
256
+
257
+ pathId?: string;
258
+ path?: string;
259
+
260
+ fromArrow?: string;
261
+ toArrow?: string;
262
+ fromArrowSize?: number;
263
+ toArrowSize?: number;
264
+ fromArrowColor?: string;
265
+ toArrowColor?: string;
266
+
267
+ autoFrom?: boolean;
268
+ autoTo?: boolean;
269
+
270
+ connectedLines?: ConnectLine[];
271
+
272
+ // Cycle count. Infinite if == 0.
273
+ animateCycle?: number;
274
+ nextAnimate?: string;
275
+ // TODO: video 与 动画公用该属性,可能是个问题
276
+ autoPlay?: boolean;
277
+ playLoop?: boolean;
278
+
279
+ // 动画帧时长
280
+ duration?: number;
281
+ // 匀速渐变
282
+ linear?: boolean;
283
+ // 主要用于动画帧的缩放
284
+ scale?: number;
285
+ // 连线动画速度
286
+ animateSpan?: number;
287
+ animateColor?: string;
288
+ animateLineDash?: number[];
289
+ animateReverse?: boolean;
290
+ // 结束动画后,是否保持动画状态
291
+ keepAnimateState?: boolean;
292
+
293
+ lineAnimateType?: LineAnimateType;
294
+
295
+ frames?: Pen[];
296
+ // 提前预置的不同效果的动画组
297
+ animateList?: Pen[][];
298
+ animateInterval?: number;//动画间隔 (箭头)
299
+ animateShadow?: boolean;//发光效果
300
+ animateShadowColor?: string;
301
+ animateShadowBlur?: number;
302
+ input?: boolean;
303
+ dropdownList?: Dropdown[];
304
+
305
+ events?: Event[];
306
+
307
+ iframe?: string;
308
+ video?: string;
309
+ audio?: string;
310
+
311
+ progress?: number;
312
+ progressColor?: string;
313
+ verticalProgress?: boolean;
314
+ reverseProgress?: boolean;
315
+ progressGradientColors?: string;
316
+ externElement?: boolean;
317
+
318
+ autoPolyline?: boolean;
319
+
320
+ // flip?: Flip;
321
+ flipX?: boolean;
322
+ flipY?: boolean;
323
+
324
+ fillTexts?: string[];
325
+
326
+ hiddenText?: boolean; // 隐藏 text
327
+ keepDecimal?: number; // undefined 显示原内容;0 显示整数
328
+ showChild?: number; // 第几个子元素展示 undefined 即展示全部
329
+ animateDotSize?: number; // 线条原点动画,原点大小
330
+ isRuleLine?: boolean; // 是否是规则线,规则线不受缩放,平移影响
331
+ /**
332
+ * @deprecated 改用 canvasLayer
333
+ */
334
+ isBottom?: boolean; // 是否是底部图片
335
+ canvasLayer?: CanvasLayer; //图元所在画布层
336
+ form?: FormItem[]; // 业务表单
337
+ lockedOnCombine?: LockState; // 组合成 combine ,该节点的 locked 值
338
+ ratio?: boolean; //宽高比锁定
339
+ animateLineWidth?: number; //连线动画线宽
340
+ lineSmooth?:number; //连线平滑度
341
+ gradientSmooth?: number; //渐进色平滑度
342
+ scrolling?: string; //iframe scrolling属性
343
+ animations?: any[]; //动画数组
344
+ currentAnimation?: number; //当前动画索引
345
+ realTimes?: RealTime[];
346
+ triggers?: Trigger[]; //状态
347
+ crossOrigin?: string;
348
+ imageRadius?: number; //图片圆角
349
+ textFlip?: boolean; //文字是否镜像
350
+ textRotate?: boolean; //文字是否旋转
351
+ // calculative 对象中的值是为了动画存在,表明了渐变过程中,画布上绘制的当前值
352
+ textAutoAdjust?: boolean; //text图元宽高根据文本自动调整
353
+ dbInput?: boolean; //锁定状态下,双击能否输入
354
+ operationalRect?: Rect; //iframe可操作区域 x,y,width,height 均取值0-1
355
+ blur?: number;
356
+ blurBackground?: string;
357
+ /**
358
+ * @deprecated 改用 canvasLayer
359
+ */
360
+ template?: boolean; //是否作为模版图元
361
+ thumbImg?: string; //iframe嵌入场景缩略图
362
+ apiUrl?: string;
363
+ apiMethod?: string;
364
+ apiHeaders?: any;
365
+ apiBody?: any;
366
+ apiEnable?: boolean;
367
+ container?:boolean; //是否是容器组件
368
+ disabled?:boolean; //是否禁用
369
+ disabledColor?:string; //禁用颜色
370
+ disabledBackground?:string; //禁用背景色
371
+ disabledTextColor?:string; //禁用文字颜色
372
+ inputType?:string; //输入框类型
373
+ deviceId?:string;//关联的设备id
374
+ pivot?:Point; //旋转中心
375
+ noOnBinds?:boolean; //是否禁用绑定事件
376
+ interaction?:boolean; //是否开启交互 组合时将不会被锁定
377
+ childHover?:boolean; //子元素hover和active是否生效
378
+ childActive?:boolean;
379
+ calculative?: {
380
+ x?: number;
381
+ y?: number;
382
+ width?: number;
383
+ height?: number;
384
+ borderRadius?: number;
385
+
386
+ progress?: number;
387
+ progressColor?: string;
388
+ progressGradientColors?: string;
389
+ worldRect?: Rect;
390
+ worldAnchors?: Point[];
391
+ worldIconRect?: Rect;
392
+ worldTextRect?: Rect;
393
+ textDrawRect?: Rect;
394
+ svgRect?: Rect;
395
+
396
+ // 执行动画前的初始位置
397
+ initRect?: Rect;
398
+ // 执行动画前的初始相对位置
399
+ initRelativeRect?: Rect;
400
+ // 执行动画前存储子图元的显示隐藏情况
401
+ childrenVisible?: any;
402
+ rotate?: number;
403
+ lineWidth?: number;
404
+ borderWidth?: number;
405
+ borderColor?: string;
406
+ globalAlpha?: number;
407
+ lineDash?: number[];
408
+ lineDashOffset?: number;
409
+ color?: string;
410
+ background?: string;
411
+ // anchorColor?: string; // TODO: 锚点颜色动画,应该不需要
412
+ bkType?: number;
413
+ /**
414
+ * @deprecated 改用 gradientColors
415
+ */
416
+ gradientFromColor?: string;
417
+ /**
418
+ * @deprecated 改用 gradientColors
419
+ */
420
+ gradientToColor?: string;
421
+ /**
422
+ * @deprecated 改用 gradientColors
423
+ */
424
+ gradientAngle?: number;
425
+ gradientRadius?: number;
426
+
427
+ // TODO: stroke 尚无径向渐变
428
+ strokeType?: Gradient;
429
+ /**
430
+ * @deprecated 改用 lineGradientColors
431
+ */
432
+ lineGradientFromColor?: string;
433
+ /**
434
+ * @deprecated 改用 lineGradientColors
435
+ */
436
+ lineGradientToColor?: string;
437
+ /**
438
+ * @deprecated 改用 lineGradientColors
439
+ */
440
+ lineGradientAngle?: number;
441
+ shadowColor?: string;
442
+ shadowBlur?: number;
443
+ shadowOffsetX?: number;
444
+ shadowOffsetY?: number;
445
+ textHasShadow?: boolean;
446
+
447
+ tempText?: string;
448
+ text?: string;
449
+ textWidth?: number;
450
+ textHeight?: number;
451
+ textLeft?: number;
452
+ textTop?: number;
453
+ textColor?: string;
454
+ textType?: Gradient;
455
+ textGradientColors?: string;
456
+ fontFamily?: string;
457
+ fontSize?: number;
458
+ lineHeight?: number;
459
+ fontStyle?: string;
460
+ fontWeight?: string;
461
+ textBackground?: string;
462
+ iconSize?: number;
463
+ icon?: string;
464
+ iconRotate?: number;
465
+ iconWidth?: number;
466
+ iconHeight?: number;
467
+ iconTop?: number;
468
+ iconLeft?: number;
469
+ iconColor?: string;
470
+ iconFamily?: string;
471
+ iconWeight?: string;
472
+
473
+ // 绝对值,计算后的结果
474
+ paddingTop?: number;
475
+ paddingBottom?: number;
476
+ paddingLeft?: number;
477
+ paddingRight?: number;
478
+
479
+ textLines?: string[];
480
+ textLineWidths?: number[]; // textLines 每一行 width 组成的数组
481
+ image?: string;
482
+ img?: HTMLImageElement;
483
+ imgNaturalWidth?: number;
484
+ imgNaturalHeight?: number;
485
+ backgroundImage?: string;
486
+ strokeImage?: string;
487
+ backgroundImg?: HTMLImageElement;
488
+ strokeImg?: HTMLImageElement;
489
+ active?: boolean;
490
+ focus?: boolean; //聚焦图元
491
+ hover?: boolean;
492
+ mouseDown?: boolean; //是否鼠标按下
493
+ containerHover?: boolean; //容器组件hover
494
+ isDock?: boolean; // 是否是对齐参考画笔
495
+ pencil?: boolean;
496
+ activeAnchor?: Point;
497
+ patchFlags?: boolean;
498
+ visible?: boolean; // TODO: visible 是否参与动画呢?
499
+ // 仅仅内部专用
500
+ inView?: boolean;
501
+ // 辅助变量,画线时,动态计算锚点是否时水平方向
502
+ drawlineH?: boolean;
503
+
504
+ // 节点是否有图片
505
+ hasImage?: boolean;
506
+ // 图片是否已经绘画,避免频繁重绘
507
+ imageDrawed?: boolean;
508
+ // 图片是否在底层
509
+ /**
510
+ * @deprecated 改用 canvasLayer
511
+ */
512
+ isBottom?: boolean;
513
+ canvasLayer?: CanvasLayer; //图元所在画布层
514
+
515
+ scale?: number;
516
+
517
+ // 动画开始时间
518
+ start?: number;
519
+ // 动画时长
520
+ duration?: number;
521
+ // 动画结束时间
522
+ end?: number;
523
+ // 当前动画帧
524
+ frameIndex?: number;
525
+ // 当前动画帧起止时间
526
+ frameStart?: number;
527
+ frameEnd?: number;
528
+ frameDuration?: number;
529
+ animatePos?: number;
530
+ // 已经循环次数
531
+ cycleIndex?: number;
532
+ // 是否暂停动画
533
+ pause?: number;
534
+
535
+ layer?: number;
536
+
537
+ canvas?: Canvas;
538
+
539
+ iframe?: string;
540
+ video?: string;
541
+ audio?: string;
542
+ media?: HTMLMediaElement;
543
+
544
+ // flip?: Flip;
545
+ flipX?: boolean;
546
+ flipY?: boolean;
547
+
548
+ h?: boolean; // 是否水平
549
+
550
+ hiddenText?: boolean; // 隐藏 text
551
+ keepDecimal?: number; // undefined 显示原内容;0 显示整数;保留几位小数
552
+ showChild?: number; // 第几个子元素展示 undefined 即展示全部
553
+ animateDotSize?: number; // 线条原点动画,原点大小
554
+ zIndex?: number; //dom节点 z-index;
555
+ // media element
556
+ onended?: (pen: Pen) => void;
557
+
558
+ // 不应该被deepClone多份的数据,例如外部第三方组件库挂载点,
559
+ singleton?: any;
560
+ gradientColors?: string;
561
+ lineGradientColors?: string;
562
+ gradient?: CanvasGradient; //临时渐进色 防止每次都计算
563
+ lineGradient?: CanvasGradient;
564
+ radialGradient?: CanvasGradient;
565
+ gradientColorStop?: ColorStop[]; //临时 连线ColorStop
566
+ gradientTimer?: any;
567
+ animateLineWidth?: number;
568
+ lineSmooth?:number; //连线平滑度
569
+ gradientSmooth?: number; //渐进色平滑度
570
+ gradientAnimatePath?: Path2D;
571
+ cssDisplay?: string; //css display
572
+ animations?: any[];
573
+ imageRadius?: number;
574
+ disabled?: boolean; //是否禁用
575
+ disabledColor?: string;
576
+ disabledBackground?: string;
577
+ disabledTextColor?:string; //禁用文字颜色
578
+ };
579
+ lastConnected?:any;
580
+ // 下划线相关配置属性
581
+ textDecoration?: string;
582
+ textDecorationDash?: number[];
583
+ textDecorationColor?: string;
584
+ // 删除线相关配置
585
+ textStrickoutColor?: string;
586
+ textStrickoutDash?: number[];
587
+ textStrickout?: boolean;
588
+ // 前一个动画帧状态数据
589
+ prevFrame?: Pen;
590
+
591
+ onAdd?: (pen: Pen) => void;
592
+ onValue?: (pen: Pen) => void;
593
+ onBeforeValue?: (pen: Pen, value: ChartData) => any;
594
+ onDestroy?: (pen: Pen) => void;
595
+ onMove?: (pen: Pen) => void;
596
+ onResize?: (pen: Pen) => void;
597
+ onRotate?: (pen: Pen) => void;
598
+ onScale?: (pen: Pen) => void;
599
+ onClick?: (pen: Pen, e: Point) => void;
600
+ onMouseEnter?: (pen: Pen, e: Point) => void;
601
+ onMouseLeave?: (pen: Pen, e: Point) => void;
602
+ onMouseDown?: (pen: Pen, e: Point) => void;
603
+ onMouseMove?: (pen: Pen, e: Point) => void;
604
+ onMouseUp?: (pen: Pen, e: Point) => void;
605
+ onShowInput?: (pen: Pen, e: Point) => void;
606
+ onInput?: (pen: Pen, text: string) => void;
607
+ onChangeId?: (pen: Pen, oldId: string, newId: string) => void;
608
+ onBinds?: (pen: Pen, values: IValue[], formItem: FormItem) => IValue;
609
+ onStartVideo?: (pen: Pen) => void;
610
+ onPauseVideo?: (pen: Pen) => void;
611
+ onStopVideo?: (pen: Pen) => void;
612
+ onRenderPenRaw?: (pen: Pen) => void;
613
+ onKeyDown?: (pen: Pen, key: string) => void;
614
+ onWheel?: (pen: Pen, e: WheelEvent) => void;
615
+ onContextmenu?: (pen: Pen, e: Point) => void;
616
+ onConnectLine?: (line: Pen, e: {
617
+ lineAnchor: Point;
618
+ fromAnchor: Point;
619
+ line: Pen;
620
+ anchor: Point;
621
+ pen: Pen;
622
+ fromPen: Pen
623
+ }) => void;
624
+ }
625
+
626
+ // 属性绑定变量
627
+ export interface FormItem {
628
+ key: string;
629
+ /**
630
+ * 单属性绑定单变量 或 绑定多变量
631
+ * 为数组时,顺序不重要
632
+ */
633
+ dataIds?: BindId | BindId[];
634
+ }
635
+
636
+ export type BindId = {
637
+ dataId: string;
638
+ name: string; // TODO: 用作图表的归类
639
+ };
640
+
641
+ /**
642
+ * 图表追加或替换数据,只关注数据
643
+ */
644
+ export interface ChartData {
645
+ dataX: any | any[]; // x轴 或 y 轴分类变化
646
+ dataY: any | any[]; // series 数据变化
647
+ /**
648
+ * @deprecated 旧版本,未来移除该属性
649
+ */
650
+ overwrite?: boolean; // 追加 or 替换 , false 追加
651
+ }
652
+
653
+ /**
654
+ * dom 类型的 图形
655
+ */
656
+ export const isDomShapes = [
657
+ 'gif',
658
+ 'iframe',
659
+ 'video',
660
+ 'echarts',
661
+ 'highcharts',
662
+ 'lightningCharts',
663
+ ];
664
+
665
+ /**
666
+ * 交互图元
667
+ */
668
+ export const isInteraction = [
669
+ 'radio',
670
+ 'checkbox',
671
+ 'button',
672
+ 'inputDom',
673
+ 'slider',
674
+ 'echarts',
675
+ ]
676
+
677
+ // 格式刷同步的属性
678
+ export const formatAttrs: Set<string> = new Set([
679
+ 'borderRadius',
680
+ // 'rotate',
681
+ 'paddingLeft',
682
+ 'paddingRight',
683
+ 'paddingTop',
684
+ 'paddingBottom',
685
+ 'progress',
686
+ 'progressColor',
687
+ 'verticalProgress',
688
+ 'reverseProgress',
689
+ // 'flip',
690
+ 'flipX',
691
+ 'flipY',
692
+ 'input',
693
+ 'lineDash',
694
+ 'lineCap',
695
+ 'lineJoin',
696
+ 'strokeType',
697
+ 'lineGradientFromColor',
698
+ 'lineGradientToColor',
699
+ 'lineGradientAngle',
700
+ 'color',
701
+ 'hoverColor',
702
+ 'activeColor',
703
+ 'lineWidth',
704
+ 'bkType',
705
+ 'gradientFromColor',
706
+ 'gradientToColor',
707
+ 'gradientAngle',
708
+ 'gradientRadius',
709
+ 'hoverBackground',
710
+ 'activeBackground',
711
+ 'globalAlpha',
712
+ 'anchorColor',
713
+ 'anchorRadius',
714
+ 'shadowColor',
715
+ 'shadowBlur',
716
+ 'shadowOffsetX',
717
+ 'shadowOffsetY',
718
+ 'textHasShadow',
719
+ 'fontFamily',
720
+ 'fontSize',
721
+ 'textColor',
722
+ 'hoverTextColor',
723
+ 'activeTextColor',
724
+ 'textBackground',
725
+ 'fontStyle',
726
+ 'fontWeight',
727
+ 'textAlign',
728
+ 'textBaseline',
729
+ 'lineHeight',
730
+ 'whiteSpace',
731
+ 'textWidth',
732
+ 'textHeight',
733
+ 'textLeft',
734
+ 'textTop',
735
+ 'ellipsis',
736
+ 'hiddenText',
737
+ 'keepDecimal',
738
+ 'borderWidth',
739
+ 'borderColor',
740
+ 'animateLineWidth',
741
+ 'lineAnimateType',
742
+ 'frames',
743
+ 'animateColor',
744
+ 'animateType',
745
+ 'animateReverse',
746
+ 'background',
747
+ 'gradientColors',
748
+ 'lineGradientColors',
749
+ 'animateLineWidth',
750
+ 'gradientSmooth',
751
+ 'lineSmooth',
752
+ 'animations'
753
+ ]);
754
+
755
+ /**
756
+ * 清空 pen 的 生命周期
757
+ */
758
+ export function clearLifeCycle(pen: Pen) {
759
+ pen.onAdd = undefined;
760
+ pen.onValue = undefined;
761
+ pen.onBeforeValue = undefined;
762
+ pen.onDestroy = undefined;
763
+ pen.onMove = undefined;
764
+ pen.onResize = undefined;
765
+ pen.onRotate = undefined;
766
+ pen.onClick = undefined;
767
+ pen.onMouseEnter = undefined;
768
+ pen.onMouseLeave = undefined;
769
+ pen.onMouseDown = undefined;
770
+ pen.onMouseMove = undefined;
771
+ pen.onMouseUp = undefined;
772
+ pen.onShowInput = undefined;
773
+ pen.onInput = undefined;
774
+ pen.onChangeId = undefined;
775
+ pen.onBinds = undefined;
776
+ pen.onStartVideo = undefined;
777
+ pen.onPauseVideo = undefined;
778
+ pen.onStopVideo = undefined;
779
+ pen.onRenderPenRaw = undefined;
780
+ pen.onKeyDown = undefined;
781
+ pen.onContextmenu = undefined;
782
+ pen.onScale = undefined;
783
+ pen.onWheel = undefined;
784
+ pen.onConnectLine = undefined;
785
+ }