vislite 1.7.0-alpha.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +13 -3
  3. package/LICENSE +20 -20
  4. package/README.md +1 -49
  5. package/lib/BarLayout/index.es.js +1 -1
  6. package/lib/BarLayout/index.es.min.js +1 -1
  7. package/lib/Buffer/index.es.js +1 -1
  8. package/lib/Buffer/index.es.min.js +1 -1
  9. package/lib/Canvas/index.es.js +1 -1
  10. package/lib/Canvas/index.es.min.js +1 -1
  11. package/lib/Cardinal/index.es.js +1 -1
  12. package/lib/Cardinal/index.es.min.js +1 -1
  13. package/lib/Eoap/index.es.js +1 -1
  14. package/lib/Eoap/index.es.min.js +1 -1
  15. package/lib/Hermite/index.es.js +1 -1
  16. package/lib/Hermite/index.es.min.js +1 -1
  17. package/lib/MapCoordinate/index.es.js +1 -1
  18. package/lib/MapCoordinate/index.es.min.js +1 -1
  19. package/lib/Matrix4/index.es.js +1 -1
  20. package/lib/Matrix4/index.es.min.js +1 -1
  21. package/lib/Mercator/index.es.js +1 -1
  22. package/lib/Mercator/index.es.min.js +1 -1
  23. package/lib/PieLayout/index.es.js +1 -1
  24. package/lib/PieLayout/index.es.min.js +1 -1
  25. package/lib/RawCanvas/index.es.js +1 -1
  26. package/lib/RawCanvas/index.es.min.js +1 -1
  27. package/lib/SVG/index.es.js +91 -2
  28. package/lib/SVG/index.es.min.js +2 -2
  29. package/lib/Shader/index.es.js +1 -1
  30. package/lib/Shader/index.es.min.js +1 -1
  31. package/lib/Texture/index.es.js +1 -1
  32. package/lib/Texture/index.es.min.js +1 -1
  33. package/lib/TreeLayout/index.es.js +1 -1
  34. package/lib/TreeLayout/index.es.min.js +1 -1
  35. package/lib/animation/index.es.js +1 -1
  36. package/lib/animation/index.es.min.js +1 -1
  37. package/lib/assemble/index.es.js +1 -1
  38. package/lib/assemble/index.es.min.js +1 -1
  39. package/lib/getLoopColors/index.es.js +1 -1
  40. package/lib/getLoopColors/index.es.min.js +1 -1
  41. package/lib/getWebGLContext/index.es.js +1 -1
  42. package/lib/getWebGLContext/index.es.min.js +1 -1
  43. package/lib/index.umd.js +91 -2
  44. package/lib/index.umd.min.js +3 -3
  45. package/lib/initOption/index.es.js +1 -1
  46. package/lib/initOption/index.es.min.js +1 -1
  47. package/lib/mergeOption/index.es.js +1 -1
  48. package/lib/mergeOption/index.es.min.js +1 -1
  49. package/lib/move/index.es.js +1 -1
  50. package/lib/move/index.es.min.js +1 -1
  51. package/lib/rotate/index.es.js +1 -1
  52. package/lib/rotate/index.es.min.js +1 -1
  53. package/lib/ruler/index.es.js +1 -1
  54. package/lib/ruler/index.es.min.js +1 -1
  55. package/lib/scale/index.es.js +1 -1
  56. package/lib/scale/index.es.min.js +1 -1
  57. package/lib/throttle/index.es.js +1 -1
  58. package/lib/throttle/index.es.min.js +1 -1
  59. package/minialipay/ui-canvas/drawImage.js +35 -35
  60. package/minialipay/ui-canvas/index.acss +4 -4
  61. package/minialipay/ui-canvas/index.axml +3 -3
  62. package/minialipay/ui-canvas/index.d.ts +1 -1
  63. package/minialipay/ui-canvas/index.js +100 -100
  64. package/minialipay/ui-canvas/index.json +6 -6
  65. package/miniprogram/ui-canvas/drawImage.js +35 -35
  66. package/miniprogram/ui-canvas/index.js +125 -125
  67. package/miniprogram/ui-canvas/index.json +4 -4
  68. package/miniprogram/ui-canvas/index.wxml +4 -4
  69. package/miniprogram/ui-canvas/index.wxss +5 -5
  70. package/package/BarLayout/index.ts +2 -2
  71. package/package/Buffer/index.ts +2 -2
  72. package/package/Canvas/index.ts +2 -2
  73. package/package/Cardinal/index.ts +2 -2
  74. package/package/Eoap/index.ts +2 -2
  75. package/package/Hermite/index.ts +2 -2
  76. package/package/MapCoordinate/index.ts +2 -2
  77. package/package/Matrix4/index.ts +2 -2
  78. package/package/Mercator/index.ts +2 -2
  79. package/package/PieLayout/index.ts +2 -2
  80. package/package/RawCanvas/index.ts +2 -2
  81. package/package/SVG/index.ts +2 -2
  82. package/package/Shader/index.ts +2 -2
  83. package/package/Texture/index.ts +2 -2
  84. package/package/TreeLayout/index.ts +2 -2
  85. package/package/animation/index.ts +5 -5
  86. package/package/assemble/index.ts +2 -2
  87. package/package/getLoopColors/index.ts +2 -2
  88. package/package/getWebGLContext/index.ts +40 -40
  89. package/package/index.ts +84 -84
  90. package/package/initOption/index.ts +2 -2
  91. package/package/mergeOption/index.ts +2 -2
  92. package/package/move/index.ts +2 -2
  93. package/package/rotate/index.ts +2 -2
  94. package/package/ruler/index.ts +2 -2
  95. package/package/scale/index.ts +2 -2
  96. package/package/throttle/index.ts +2 -2
  97. package/package.json +1 -1
  98. package/src/Canvas.ts +89 -89
  99. package/src/Eoap.ts +66 -66
  100. package/src/Matrix4/index.ts +84 -84
  101. package/src/Matrix4/move.ts +12 -12
  102. package/src/Matrix4/rotate.ts +15 -15
  103. package/src/Matrix4/scale.ts +11 -11
  104. package/src/Matrix4/transform.ts +64 -64
  105. package/src/Mercator.ts +27 -27
  106. package/src/SVG.ts +55 -55
  107. package/src/common/assemble.ts +22 -22
  108. package/src/common/canvas/arc.ts +51 -51
  109. package/src/common/canvas/config.ts +176 -176
  110. package/src/common/canvas/default.ts +64 -64
  111. package/src/common/canvas/gradient.ts +31 -31
  112. package/src/common/canvas/index.ts +188 -188
  113. package/src/common/canvas/painter.ts +453 -453
  114. package/src/common/canvas/texts.ts +18 -18
  115. package/src/common/map/getBoundary.ts +15 -15
  116. package/src/common/map/tool.ts +29 -29
  117. package/src/common/option.ts +29 -29
  118. package/src/common/setStyle.ts +5 -5
  119. package/src/common/svg/config.ts +213 -213
  120. package/src/common/svg/default.ts +29 -29
  121. package/src/common/svg/gradient.ts +53 -53
  122. package/src/common/svg/index.ts +89 -2
  123. package/src/common/svg/tool.ts +51 -51
  124. package/src/common/tree/index.ts +25 -25
  125. package/src/common/tree/toInnerTree.ts +61 -61
  126. package/src/common/tree/toPlainTree.ts +135 -135
  127. package/src/common/type.ts +26 -26
  128. package/src/common/webgl/buffer.ts +79 -79
  129. package/src/common/webgl/getWebGLContext.ts +45 -45
  130. package/src/common/webgl/shader.ts +75 -75
  131. package/src/common/webgl/texture.ts +98 -98
  132. package/src/coordinate/MapCoordinate.ts +80 -80
  133. package/src/getLoopColors.ts +42 -42
  134. package/src/interpolation/Cardinal.ts +110 -110
  135. package/src/interpolation/Hermite.ts +65 -65
  136. package/src/layout/BarLayout.ts +249 -249
  137. package/src/layout/PieLayout.ts +144 -144
  138. package/src/layout/TreeLayout.ts +200 -200
  139. package/src/move.ts +7 -7
  140. package/src/rotate.ts +7 -7
  141. package/src/ruler.ts +209 -209
  142. package/src/scale.ts +6 -6
  143. package/types/Bar.d.ts +91 -91
  144. package/types/BarConfig.d.ts +4 -4
  145. package/types/BarLayout.d.ts +48 -48
  146. package/types/BarOption.d.ts +31 -31
  147. package/types/Buffer.d.ts +23 -23
  148. package/types/Canvas.d.ts +375 -375
  149. package/types/CanvasConfig.d.ts +88 -88
  150. package/types/CanvasOption.d.ts +13 -13
  151. package/types/CanvasOpts.d.ts +9 -9
  152. package/types/Cardinal.d.ts +13 -13
  153. package/types/Gradient.d.ts +14 -14
  154. package/types/Hermite.d.ts +18 -18
  155. package/types/Map.d.ts +9 -9
  156. package/types/MapConfig.d.ts +27 -27
  157. package/types/MapCoordinate.d.ts +22 -22
  158. package/types/Matrix4.d.ts +47 -47
  159. package/types/Pie.d.ts +73 -73
  160. package/types/PieConfig.d.ts +26 -26
  161. package/types/PieLayout.d.ts +40 -40
  162. package/types/PieOption.d.ts +21 -21
  163. package/types/SVG.d.ts +31 -0
  164. package/types/SVGConfig.d.ts +71 -71
  165. package/types/Shader.d.ts +16 -16
  166. package/types/Texture.d.ts +16 -16
  167. package/types/Tree.d.ts +74 -74
  168. package/types/TreeConfig.d.ts +36 -36
  169. package/types/TreeLayout.d.ts +59 -59
  170. package/types/TreeOption.d.ts +48 -48
  171. package/types/animation.d.ts +11 -11
  172. package/types/assemble.d.ts +5 -5
  173. package/types/getLoopColors.d.ts +5 -5
  174. package/types/getWebGLContext.d.ts +7 -7
  175. package/types/index.d.ts +195 -195
  176. package/types/move.d.ts +5 -5
  177. package/types/option.d.ts +12 -12
  178. package/types/painterConfig.d.ts +4 -4
  179. package/types/rotate.d.ts +5 -5
  180. package/types/ruler.d.ts +10 -10
  181. package/types/scale.d.ts +5 -5
  182. package/types/throttle.d.ts +5 -5
  183. package/types/ui-canvas.d.ts +4 -4
  184. package/types/uni-canvas.d.ts +3 -3
  185. package/uni-app/drawImage.js +19 -19
  186. package/uni-app/ui-canvas.vue +295 -295
@@ -1,30 +1,30 @@
1
- import type { arcCapType, textAlignType, textBaselineType, lineCapType, lineJoinType } from "../../../types/painterConfig"
2
-
3
- export default function () {
4
- return {
5
- // 颜色
6
- fillStyle: "rgb(0,0,0)",
7
- strokeStyle: "rgb(0,0,0)",
8
-
9
- // 文字对齐方式
10
- textAlign: <textAlignType>"left",
11
- textBaseline: <textBaselineType>"middle",
12
-
13
- // 文字
14
- "fontSize": 16,
15
- "fontFamily": "sans-serif",
16
-
17
- // arc二端闭合方式['butt':直线闭合,'round':圆帽闭合]
18
- "arcStartCap": <arcCapType>"butt",
19
- "arcEndCap": <arcCapType>"butt",
20
-
21
- // 线条
22
- lineDash: [],
23
- lineWidth: 1,
24
- lineCap: <lineCapType>"butt",
25
- lineJoin: <lineJoinType>"miter",
26
-
27
- // 矩形圆角半径
28
- "rectRadius": []
29
- }
1
+ import type { arcCapType, textAlignType, textBaselineType, lineCapType, lineJoinType } from "../../../types/painterConfig"
2
+
3
+ export default function () {
4
+ return {
5
+ // 颜色
6
+ fillStyle: "rgb(0,0,0)",
7
+ strokeStyle: "rgb(0,0,0)",
8
+
9
+ // 文字对齐方式
10
+ textAlign: <textAlignType>"left",
11
+ textBaseline: <textBaselineType>"middle",
12
+
13
+ // 文字
14
+ "fontSize": 16,
15
+ "fontFamily": "sans-serif",
16
+
17
+ // arc二端闭合方式['butt':直线闭合,'round':圆帽闭合]
18
+ "arcStartCap": <arcCapType>"butt",
19
+ "arcEndCap": <arcCapType>"butt",
20
+
21
+ // 线条
22
+ lineDash: [],
23
+ lineWidth: 1,
24
+ lineCap: <lineCapType>"butt",
25
+ lineJoin: <lineJoinType>"miter",
26
+
27
+ // 矩形圆角半径
28
+ "rectRadius": []
29
+ }
30
30
  }
@@ -1,53 +1,53 @@
1
- import { initDefs } from './config'
2
- import { toNode, setAttribute } from "./tool"
3
-
4
- const enhanceGradient = function (gradient: SVGElement, gradientId: string) {
5
- const enhanceGradient = {
6
- "value": function () {
7
- return "url(#" + gradientId + ")"
8
- },
9
- "setColor": function (stop: number, color: string) {
10
-
11
- const stopEl = toNode("stop")
12
- gradient.appendChild(stopEl)
13
- setAttribute(stopEl, "offset", (stop * 100) + "%")
14
- setAttribute(stopEl, "style", "stop-color:" + color + ";")
15
-
16
- return enhanceGradient
17
- }
18
- }
19
- return enhanceGradient
20
- }
21
-
22
- // 线性渐变
23
- export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
24
-
25
- const defs = initDefs(el)
26
- const gradientId = "visliteLg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
27
-
28
- const linearGradient = toNode("linearGradient")
29
- defs.appendChild(linearGradient)
30
- setAttribute(linearGradient, "id", gradientId)
31
- setAttribute(linearGradient, "x1", x0 + "%")
32
- setAttribute(linearGradient, "y1", y0 + "%")
33
- setAttribute(linearGradient, "x2", x1 + "%")
34
- setAttribute(linearGradient, "y2", y1 + "%")
35
-
36
- return enhanceGradient(linearGradient, gradientId)
37
- }
38
-
39
- // 环形渐变
40
- export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
41
-
42
- const defs = initDefs(el)
43
- const gradientId = "visliteRg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
44
-
45
- const radialGradient = toNode("radialGradient")
46
- defs.appendChild(radialGradient)
47
- setAttribute(radialGradient, "id", gradientId)
48
- setAttribute(radialGradient, "cx", cx + "%")
49
- setAttribute(radialGradient, "cy", cy + "%")
50
- setAttribute(radialGradient, "r", r + "%")
51
-
52
- return enhanceGradient(radialGradient, gradientId)
53
- }
1
+ import { initDefs } from './config'
2
+ import { toNode, setAttribute } from "./tool"
3
+
4
+ const enhanceGradient = function (gradient: SVGElement, gradientId: string) {
5
+ const enhanceGradient = {
6
+ "value": function () {
7
+ return "url(#" + gradientId + ")"
8
+ },
9
+ "setColor": function (stop: number, color: string) {
10
+
11
+ const stopEl = toNode("stop")
12
+ gradient.appendChild(stopEl)
13
+ setAttribute(stopEl, "offset", (stop * 100) + "%")
14
+ setAttribute(stopEl, "style", "stop-color:" + color + ";")
15
+
16
+ return enhanceGradient
17
+ }
18
+ }
19
+ return enhanceGradient
20
+ }
21
+
22
+ // 线性渐变
23
+ export const linearGradient = function (el: SVGElement, x0: number, y0: number, x1: number, y1: number) {
24
+
25
+ const defs = initDefs(el)
26
+ const gradientId = "visliteLg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
27
+
28
+ const linearGradient = toNode("linearGradient")
29
+ defs.appendChild(linearGradient)
30
+ setAttribute(linearGradient, "id", gradientId)
31
+ setAttribute(linearGradient, "x1", x0 + "%")
32
+ setAttribute(linearGradient, "y1", y0 + "%")
33
+ setAttribute(linearGradient, "x2", x1 + "%")
34
+ setAttribute(linearGradient, "y2", y1 + "%")
35
+
36
+ return enhanceGradient(linearGradient, gradientId)
37
+ }
38
+
39
+ // 环形渐变
40
+ export const radialGradient = function (el: SVGElement, cx: number, cy: number, r: number) {
41
+
42
+ const defs = initDefs(el)
43
+ const gradientId = "visliteRg" + new Date().valueOf() + "" + (Math.random() * 1000000).toFixed(0)
44
+
45
+ const radialGradient = toNode("radialGradient")
46
+ defs.appendChild(radialGradient)
47
+ setAttribute(radialGradient, "id", gradientId)
48
+ setAttribute(radialGradient, "cx", cx + "%")
49
+ setAttribute(radialGradient, "cy", cy + "%")
50
+ setAttribute(radialGradient, "r", r + "%")
51
+
52
+ return enhanceGradient(radialGradient, gradientId)
53
+ }
@@ -19,6 +19,10 @@ class SVG {
19
19
  private __path: string = ""
20
20
  private __currentPosition: number[] = []
21
21
 
22
+ // 变换(和canvas2D的类似,内部维护了用于记录)
23
+ private __transform_history: Array<string> = []
24
+ private __transform_current = ""
25
+
22
26
  protected __svg: SVGElement
23
27
  constructor(svg: SVGElement) {
24
28
  this.__svg = svg
@@ -85,7 +89,7 @@ class SVG {
85
89
  path: "path",
86
90
  arc: "path",
87
91
  circle: "circle",
88
- rect: "rect",
92
+ rect: "path",
89
93
  }[el] || ""
90
94
 
91
95
  if (_el == "") throw new Error("Unsupported drawing method:" + el)
@@ -128,18 +132,27 @@ class SVG {
128
132
  // deg表示文字旋转角度,是角度值,不是弧度
129
133
  fillText(text: string, x: number, y: number, deg: number = 0) {
130
134
  initText(this.__useEl, this.__config, x, y, deg)
135
+ this.attr({
136
+ transform: this.__transform_current
137
+ })
131
138
  this.__useEl.textContent = text
132
139
  fill(this.__useEl, this.__config)
133
140
  return this
134
141
  }
135
142
  strokeText(text: string, x: number, y: number, deg: number = 0) {
136
143
  initText(this.__useEl, this.__config, x, y, deg)
144
+ this.attr({
145
+ transform: this.__transform_current
146
+ })
137
147
  this.__useEl.textContent = text
138
148
  stroke(this.__useEl, this.__config)
139
149
  return this
140
150
  }
141
151
  fullText(text: string, x: number, y: number, deg: number = 0) {
142
152
  initText(this.__useEl, this.__config, x, y, deg)
153
+ this.attr({
154
+ transform: this.__transform_current
155
+ })
143
156
  this.__useEl.textContent = text
144
157
  full(this.__useEl, this.__config)
145
158
  return this
@@ -155,6 +168,9 @@ class SVG {
155
168
  deg: number
156
169
  ) {
157
170
  initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
171
+ this.attr({
172
+ transform: this.__transform_current
173
+ })
158
174
  fill(this.__useEl, this.__config)
159
175
  return this
160
176
  }
@@ -167,6 +183,9 @@ class SVG {
167
183
  deg: number
168
184
  ) {
169
185
  initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
186
+ this.attr({
187
+ transform: this.__transform_current
188
+ })
170
189
  stroke(this.__useEl, this.__config)
171
190
  return this
172
191
  }
@@ -179,6 +198,9 @@ class SVG {
179
198
  deg: number
180
199
  ) {
181
200
  initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
201
+ this.attr({
202
+ transform: this.__transform_current
203
+ })
182
204
  full(this.__useEl, this.__config)
183
205
  return this
184
206
  }
@@ -186,16 +208,25 @@ class SVG {
186
208
  // 圆形
187
209
  fillCircle(cx: number, cy: number, r: number) {
188
210
  initCircle(this.__useEl, cx, cy, r)
211
+ this.attr({
212
+ transform: this.__transform_current
213
+ })
189
214
  fill(this.__useEl, this.__config)
190
215
  return this
191
216
  }
192
217
  strokeCircle(cx: number, cy: number, r: number) {
193
218
  initCircle(this.__useEl, cx, cy, r)
219
+ this.attr({
220
+ transform: this.__transform_current
221
+ })
194
222
  stroke(this.__useEl, this.__config)
195
223
  return this
196
224
  }
197
225
  fullCircle(cx: number, cy: number, r: number) {
198
226
  initCircle(this.__useEl, cx, cy, r)
227
+ this.attr({
228
+ transform: this.__transform_current
229
+ })
199
230
  full(this.__useEl, this.__config)
200
231
  return this
201
232
  }
@@ -203,16 +234,25 @@ class SVG {
203
234
  // 矩形
204
235
  fillRect(x: number, y: number, width: number, height: number) {
205
236
  initRect(this.__useEl, this.__config, x, y, width, height)
237
+ this.attr({
238
+ transform: this.__transform_current
239
+ })
206
240
  fill(this.__useEl, this.__config)
207
241
  return this
208
242
  }
209
243
  strokeRect(x: number, y: number, width: number, height: number) {
210
244
  initRect(this.__useEl, this.__config, x, y, width, height)
245
+ this.attr({
246
+ transform: this.__transform_current
247
+ })
211
248
  stroke(this.__useEl, this.__config)
212
249
  return this
213
250
  }
214
251
  fullRect(x: number, y: number, width: number, height: number) {
215
252
  initRect(this.__useEl, this.__config, x, y, width, height)
253
+ this.attr({
254
+ transform: this.__transform_current
255
+ })
216
256
  full(this.__useEl, this.__config)
217
257
  return this
218
258
  }
@@ -241,20 +281,38 @@ class SVG {
241
281
  }
242
282
  fill() {
243
283
  initPath(this.__useEl, this.__path)
284
+ this.attr({
285
+ transform: this.__transform_current
286
+ })
244
287
  fill(this.__useEl, this.__config)
245
288
  return this
246
289
  }
247
290
  stroke() {
248
291
  initPath(this.__useEl, this.__path)
292
+ this.attr({
293
+ transform: this.__transform_current
294
+ })
249
295
  stroke(this.__useEl, this.__config)
250
296
  return this
251
297
  }
252
298
  full() {
253
299
  initPath(this.__useEl, this.__path)
300
+ this.attr({
301
+ transform: this.__transform_current
302
+ })
254
303
  full(this.__useEl, this.__config)
255
304
  return this
256
305
  }
257
306
 
307
+ save() {
308
+ this.__transform_history.push(this.__transform_current);
309
+ return this
310
+ }
311
+ restore() {
312
+ if (this.__transform_history.length > 0) this.__transform_current = this.__transform_history.pop() as string;
313
+ return this
314
+ }
315
+
258
316
  arc(x: number, y: number, r: number, beginDeg: number, deg: number) {
259
317
  const begPosition = rotate(x, y, (beginDeg / 180) * Math.PI, x + r, y)
260
318
  const endPosition = rotate(
@@ -317,7 +375,6 @@ class SVG {
317
375
  return this
318
376
  }
319
377
 
320
-
321
378
  // 线性渐变
322
379
  createLinearGradient(x0: number, y0: number, x1: number, y1: number) {
323
380
  return linearGradient(this.__svg, x0, y0, x1, y1)
@@ -327,6 +384,36 @@ class SVG {
327
384
  createRadialGradient(cx: number, cy: number, r: number) {
328
385
  return radialGradient(this.__svg, cx, cy, r)
329
386
  }
387
+
388
+ // 转换画布
389
+ translate(dx: number, dy: number) {
390
+ this.__transform_current += ' translate(' + dx + ',' + dy + ')'
391
+ return this
392
+ }
393
+ rotate(deg: number) {
394
+ this.__transform_current += ' rotate(' + deg + ')'
395
+ return this
396
+ }
397
+
398
+ // 扩展绘制方法
399
+ install(methods: {
400
+ [key: string]: Function
401
+ }): any {
402
+ for (const key in methods) {
403
+
404
+ if (key in this) {
405
+ throw new Error("VISLite SVG:Method already exists and cannot be overwritten.")
406
+ } else {
407
+ (this as any)[key] = (...args: any) => {
408
+ const value = methods[key].apply(this, args)
409
+ if (value != void 0) return value
410
+ return this
411
+ }
412
+ }
413
+
414
+ }
415
+ return this
416
+ }
330
417
  }
331
418
 
332
419
  export default SVG
@@ -1,52 +1,52 @@
1
- import type SVGConfigType from '../../../types/SVGConfig'
2
-
3
- import { XLINK_ATTRIBUTE } from "./dictionary"
4
-
5
- const setLineAttr = (el: SVGElement, config: SVGConfigType) => {
6
- setAttribute(el, "stroke-dasharray", (config.lineDash as Array<number>).join(','))
7
- setAttribute(el, "stroke-width", config.lineWidth + "")
8
- setAttribute(el, "stroke-linecap", config.lineCap + "")
9
- setAttribute(el, "stroke-linejoin", config.lineJoin + "")
10
- }
11
-
12
- // 新建节点
13
- export function toNode(tagname: string) {
14
- return document.createElementNS('http://www.w3.org/2000/svg', tagname)
15
- }
16
-
17
- // 设置属性
18
- const _setAttribute = function (el: SVGElement, key: string, value: string | number) {
19
-
20
- // 需要使用xlink命名空间的xml属性
21
- if (XLINK_ATTRIBUTE.indexOf(key) > -1) {
22
- el.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:' + key, value + "")
23
- }
24
-
25
- // 否则
26
- else {
27
- el.setAttribute(key, value + "")
28
- }
29
- }
30
- export const setAttribute = _setAttribute
31
-
32
- // 获取属性
33
- export function getAttribute(el: SVGElement, key: string) {
34
- if (XLINK_ATTRIBUTE.indexOf(key) > -1) key = 'xlink:' + key
35
- return el.getAttribute(key)
36
- }
37
-
38
- export function full(el: SVGElement, config: SVGConfigType) {
39
- setLineAttr(el, config)
40
- _setAttribute(el, "stroke", config.strokeStyle as string)
41
- _setAttribute(el, "fill", config.fillStyle as string)
42
- }
43
-
44
- export function fill(el: SVGElement, config: SVGConfigType) {
45
- _setAttribute(el, "fill", config.fillStyle as string)
46
- }
47
-
48
- export function stroke(el: SVGElement, config: SVGConfigType) {
49
- setLineAttr(el, config)
50
- _setAttribute(el, "stroke", config.strokeStyle as string)
51
- _setAttribute(el, "fill", "none")
1
+ import type SVGConfigType from '../../../types/SVGConfig'
2
+
3
+ import { XLINK_ATTRIBUTE } from "./dictionary"
4
+
5
+ const setLineAttr = (el: SVGElement, config: SVGConfigType) => {
6
+ setAttribute(el, "stroke-dasharray", (config.lineDash as Array<number>).join(','))
7
+ setAttribute(el, "stroke-width", config.lineWidth + "")
8
+ setAttribute(el, "stroke-linecap", config.lineCap + "")
9
+ setAttribute(el, "stroke-linejoin", config.lineJoin + "")
10
+ }
11
+
12
+ // 新建节点
13
+ export function toNode(tagname: string) {
14
+ return document.createElementNS('http://www.w3.org/2000/svg', tagname)
15
+ }
16
+
17
+ // 设置属性
18
+ const _setAttribute = function (el: SVGElement, key: string, value: string | number) {
19
+
20
+ // 需要使用xlink命名空间的xml属性
21
+ if (XLINK_ATTRIBUTE.indexOf(key) > -1) {
22
+ el.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:' + key, value + "")
23
+ }
24
+
25
+ // 否则
26
+ else {
27
+ el.setAttribute(key, value + "")
28
+ }
29
+ }
30
+ export const setAttribute = _setAttribute
31
+
32
+ // 获取属性
33
+ export function getAttribute(el: SVGElement, key: string) {
34
+ if (XLINK_ATTRIBUTE.indexOf(key) > -1) key = 'xlink:' + key
35
+ return el.getAttribute(key)
36
+ }
37
+
38
+ export function full(el: SVGElement, config: SVGConfigType) {
39
+ setLineAttr(el, config)
40
+ _setAttribute(el, "stroke", config.strokeStyle as string)
41
+ _setAttribute(el, "fill", config.fillStyle as string)
42
+ }
43
+
44
+ export function fill(el: SVGElement, config: SVGConfigType) {
45
+ _setAttribute(el, "fill", config.fillStyle as string)
46
+ }
47
+
48
+ export function stroke(el: SVGElement, config: SVGConfigType) {
49
+ setLineAttr(el, config)
50
+ _setAttribute(el, "stroke", config.strokeStyle as string)
51
+ _setAttribute(el, "fill", "none")
52
52
  }
@@ -1,26 +1,26 @@
1
- import type TreeConfigType from '../../../types/TreeConfig'
2
- import type { TreeResultType } from '../../../types/Tree'
3
-
4
- import toPlainTree from './toPlainTree'
5
- import { initOption } from '../option'
6
-
7
- class Tree {
8
- readonly name: string = 'Tree'
9
-
10
- private __config: TreeConfigType
11
-
12
- constructor(config: TreeConfigType = {}) {
13
- this.__config = initOption(config, {
14
- root: (initTree: any) => initTree,
15
- children: (parentTree: any) => parentTree.children,
16
- id: (treedata: any) => treedata.name
17
- })
18
- }
19
-
20
- use(initTree: any, noOpens = {}): TreeResultType {
21
- return toPlainTree(initTree, this.__config, noOpens)
22
- }
23
-
24
- }
25
-
1
+ import type TreeConfigType from '../../../types/TreeConfig'
2
+ import type { TreeResultType } from '../../../types/Tree'
3
+
4
+ import toPlainTree from './toPlainTree'
5
+ import { initOption } from '../option'
6
+
7
+ class Tree {
8
+ readonly name: string = 'Tree'
9
+
10
+ private __config: TreeConfigType
11
+
12
+ constructor(config: TreeConfigType = {}) {
13
+ this.__config = initOption(config, {
14
+ root: (initTree: any) => initTree,
15
+ children: (parentTree: any) => parentTree.children,
16
+ id: (treedata: any) => treedata.name
17
+ })
18
+ }
19
+
20
+ use(initTree: any, noOpens = {}): TreeResultType {
21
+ return toPlainTree(initTree, this.__config, noOpens)
22
+ }
23
+
24
+ }
25
+
26
26
  export default Tree
@@ -1,62 +1,62 @@
1
- import type { default as TreeConfigType, rootType, childrenType, idType } from '../../../types/TreeConfig'
2
-
3
- /**
4
- * 根据配置的层次关系(配置的id,child,root)把原始数据变成内部结构,方便后期位置计算
5
- *
6
- * tempTree[id] = {
7
- * "data": 原始数据,
8
- * "pid": 父亲ID,
9
- * "id": 唯一标识ID,
10
- * "show": boolean,
11
- * "isOpen": boolean,
12
- * "children": [cid1、cid2、...]
13
- * }
14
- */
15
- export default (initTree: any, config: TreeConfigType) => {
16
- const tempTree: {
17
- [key: string]: any
18
- } = {}
19
-
20
- // 根结点
21
- const temp = (config.root as rootType)(initTree)
22
- let id: number | string, rid: number | string
23
- id = rid = (config.id as idType)(temp)
24
- tempTree[id] = {
25
- "data": temp,
26
- "pid": null,
27
- "id": id,
28
- "isOpen": true,
29
- "show": true,
30
- "deg": 0,
31
- "children": []
32
- }
33
-
34
- let num: number = 1
35
-
36
- // 根据传递的原始数据,生成内部统一结构
37
- ; (function createTree(pdata: any, pid: number | string) {
38
- const children = (config.children as childrenType)(pdata, initTree)
39
- num += children ? children.length : 0
40
- for (let flag = 0; children && flag < children.length; flag++) {
41
- id = (config.id as idType)(children[flag])
42
- tempTree[pid].children.push(id);
43
- tempTree[id] = {
44
- "data": children[flag],
45
- "pid": pid,
46
- "id": id,
47
- "isOpen": true,
48
- "show": true,
49
- "deg": 0,
50
- "children": []
51
- }
52
- createTree(children[flag], id)
53
- }
54
- })(temp, id)
55
-
56
- return {
57
- rid,
58
- value: tempTree,
59
- num
60
- }
61
-
1
+ import type { default as TreeConfigType, rootType, childrenType, idType } from '../../../types/TreeConfig'
2
+
3
+ /**
4
+ * 根据配置的层次关系(配置的id,child,root)把原始数据变成内部结构,方便后期位置计算
5
+ *
6
+ * tempTree[id] = {
7
+ * "data": 原始数据,
8
+ * "pid": 父亲ID,
9
+ * "id": 唯一标识ID,
10
+ * "show": boolean,
11
+ * "isOpen": boolean,
12
+ * "children": [cid1、cid2、...]
13
+ * }
14
+ */
15
+ export default (initTree: any, config: TreeConfigType) => {
16
+ const tempTree: {
17
+ [key: string]: any
18
+ } = {}
19
+
20
+ // 根结点
21
+ const temp = (config.root as rootType)(initTree)
22
+ let id: number | string, rid: number | string
23
+ id = rid = (config.id as idType)(temp)
24
+ tempTree[id] = {
25
+ "data": temp,
26
+ "pid": null,
27
+ "id": id,
28
+ "isOpen": true,
29
+ "show": true,
30
+ "deg": 0,
31
+ "children": []
32
+ }
33
+
34
+ let num: number = 1
35
+
36
+ // 根据传递的原始数据,生成内部统一结构
37
+ ; (function createTree(pdata: any, pid: number | string) {
38
+ const children = (config.children as childrenType)(pdata, initTree)
39
+ num += children ? children.length : 0
40
+ for (let flag = 0; children && flag < children.length; flag++) {
41
+ id = (config.id as idType)(children[flag])
42
+ tempTree[pid].children.push(id);
43
+ tempTree[id] = {
44
+ "data": children[flag],
45
+ "pid": pid,
46
+ "id": id,
47
+ "isOpen": true,
48
+ "show": true,
49
+ "deg": 0,
50
+ "children": []
51
+ }
52
+ createTree(children[flag], id)
53
+ }
54
+ })(temp, id)
55
+
56
+ return {
57
+ rid,
58
+ value: tempTree,
59
+ num
60
+ }
61
+
62
62
  }