vislite 1.12.0 → 2.0.0-next.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 (180) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +414 -403
  3. package/LICENSE +20 -20
  4. package/README-en.md +245 -245
  5. package/README.md +245 -245
  6. package/bin/formatArgv.js +30 -30
  7. package/bin/help.js +21 -17
  8. package/bin/minialipay.js +27 -0
  9. package/bin/run +25 -21
  10. package/bin/skills.js +26 -26
  11. package/lib/BarLayout/index.es.js +348 -348
  12. package/lib/Buffer/index.es.js +34 -34
  13. package/lib/Canvas/index.es.js +804 -804
  14. package/lib/Cardinal/index.es.js +89 -89
  15. package/lib/Eoap/index.es.js +32 -32
  16. package/lib/Hermite/index.es.js +34 -34
  17. package/lib/MapCoordinate/index.es.js +199 -199
  18. package/lib/Matrix4/index.es.js +123 -123
  19. package/lib/Mercator/index.es.js +18 -18
  20. package/lib/PieLayout/index.es.js +115 -115
  21. package/lib/RawCanvas/index.es.js +736 -736
  22. package/lib/SVG/index.es.js +626 -626
  23. package/lib/Shader/index.es.js +34 -34
  24. package/lib/Texture/index.es.js +52 -52
  25. package/lib/TreeLayout/index.es.js +301 -301
  26. package/lib/animation/index.es.js +2 -2
  27. package/lib/assemble/index.es.js +19 -19
  28. package/lib/getLoopColors/index.es.js +34 -34
  29. package/lib/getWebGLContext/index.es.js +61 -61
  30. package/lib/index.umd.js +2797 -2797
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/initOption/index.es.js +5 -5
  33. package/lib/mergeOption/index.es.js +34 -34
  34. package/lib/move/index.es.js +6 -6
  35. package/lib/rotate/index.es.js +6 -6
  36. package/lib/ruler/index.es.js +136 -136
  37. package/lib/scale/index.es.js +5 -5
  38. package/minialipay/ui-canvas/drawImage.js +35 -35
  39. package/minialipay/ui-canvas/index.acss +4 -4
  40. package/minialipay/ui-canvas/index.axml +3 -3
  41. package/minialipay/ui-canvas/index.d.ts +1 -1
  42. package/minialipay/ui-canvas/index.js +100 -100
  43. package/minialipay/ui-canvas/index.json +6 -6
  44. package/miniprogram/ui-canvas/drawImage.js +35 -35
  45. package/miniprogram/ui-canvas/index.js +125 -125
  46. package/miniprogram/ui-canvas/index.json +4 -4
  47. package/miniprogram/ui-canvas/index.wxml +4 -4
  48. package/miniprogram/ui-canvas/index.wxss +5 -5
  49. package/package/BarLayout/index.ts +2 -2
  50. package/package/Buffer/index.ts +2 -2
  51. package/package/Canvas/index.ts +2 -2
  52. package/package/Cardinal/index.ts +2 -2
  53. package/package/Eoap/index.ts +2 -2
  54. package/package/Hermite/index.ts +2 -2
  55. package/package/MapCoordinate/index.ts +2 -2
  56. package/package/Matrix4/index.ts +2 -2
  57. package/package/Mercator/index.ts +2 -2
  58. package/package/PieLayout/index.ts +2 -2
  59. package/package/RawCanvas/index.ts +2 -2
  60. package/package/SVG/index.ts +2 -2
  61. package/package/Shader/index.ts +2 -2
  62. package/package/Texture/index.ts +2 -2
  63. package/package/TreeLayout/index.ts +2 -2
  64. package/package/animation/index.ts +5 -5
  65. package/package/assemble/index.ts +2 -2
  66. package/package/getLoopColors/index.ts +2 -2
  67. package/package/getWebGLContext/index.ts +40 -40
  68. package/package/index.ts +84 -84
  69. package/package/initOption/index.ts +2 -2
  70. package/package/mergeOption/index.ts +2 -2
  71. package/package/move/index.ts +2 -2
  72. package/package/rotate/index.ts +2 -2
  73. package/package/ruler/index.ts +2 -2
  74. package/package/scale/index.ts +2 -2
  75. package/package/throttle/index.ts +2 -2
  76. package/package.json +103 -79
  77. package/skills/vislite-lib/BarLayout.md +117 -117
  78. package/skills/vislite-lib/Canvas.md +183 -183
  79. package/skills/vislite-lib/Interpolation.md +129 -129
  80. package/skills/vislite-lib/Matrix.md +174 -174
  81. package/skills/vislite-lib/PieLayout.md +131 -131
  82. package/skills/vislite-lib/Projections.md +158 -158
  83. package/skills/vislite-lib/SKILL.md +179 -179
  84. package/skills/vislite-lib/SVG.md +137 -137
  85. package/skills/vislite-lib/TreeLayout.md +176 -176
  86. package/skills/vislite-lib/Utilities.md +261 -261
  87. package/skills/vislite-lib/WebGL.md +106 -106
  88. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  89. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  90. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  91. package/src/Canvas.ts +89 -89
  92. package/src/Eoap.ts +66 -66
  93. package/src/Matrix4/index.ts +84 -84
  94. package/src/Matrix4/move.ts +12 -12
  95. package/src/Matrix4/rotate.ts +15 -15
  96. package/src/Matrix4/scale.ts +11 -11
  97. package/src/Matrix4/transform.ts +64 -64
  98. package/src/Mercator.ts +27 -27
  99. package/src/SVG.ts +86 -86
  100. package/src/common/assemble.ts +30 -30
  101. package/src/common/canvas/arc.ts +51 -51
  102. package/src/common/canvas/config.ts +176 -176
  103. package/src/common/canvas/default.ts +64 -64
  104. package/src/common/canvas/gradient.ts +31 -31
  105. package/src/common/canvas/index.ts +189 -189
  106. package/src/common/canvas/painter.ts +475 -475
  107. package/src/common/canvas/texts.ts +18 -18
  108. package/src/common/map/getBoundary.ts +15 -15
  109. package/src/common/map/tool.ts +29 -29
  110. package/src/common/option.ts +31 -31
  111. package/src/common/setStyle.ts +5 -5
  112. package/src/common/svg/config.ts +213 -213
  113. package/src/common/svg/default.ts +29 -29
  114. package/src/common/svg/gradient.ts +53 -53
  115. package/src/common/svg/index.ts +420 -420
  116. package/src/common/svg/tool.ts +51 -51
  117. package/src/common/tree/index.ts +25 -25
  118. package/src/common/tree/toInnerTree.ts +61 -61
  119. package/src/common/tree/toPlainTree.ts +135 -135
  120. package/src/common/type.ts +26 -26
  121. package/src/common/webgl/buffer.ts +79 -79
  122. package/src/common/webgl/getWebGLContext.ts +45 -45
  123. package/src/common/webgl/shader.ts +75 -75
  124. package/src/common/webgl/texture.ts +98 -98
  125. package/src/coordinate/MapCoordinate.ts +80 -80
  126. package/src/getLoopColors.ts +42 -42
  127. package/src/interpolation/Cardinal.ts +110 -110
  128. package/src/interpolation/Hermite.ts +65 -65
  129. package/src/layout/BarLayout.ts +249 -249
  130. package/src/layout/PieLayout.ts +146 -146
  131. package/src/layout/TreeLayout.ts +200 -200
  132. package/src/move.ts +7 -7
  133. package/src/rotate.ts +7 -7
  134. package/src/ruler.ts +209 -209
  135. package/src/scale.ts +6 -6
  136. package/types/Bar.d.ts +91 -91
  137. package/types/BarConfig.d.ts +4 -4
  138. package/types/BarLayout.d.ts +48 -48
  139. package/types/BarOption.d.ts +31 -31
  140. package/types/Buffer.d.ts +30 -30
  141. package/types/Canvas.d.ts +379 -379
  142. package/types/CanvasConfig.d.ts +61 -61
  143. package/types/CanvasOption.d.ts +13 -13
  144. package/types/CanvasOpts.d.ts +9 -9
  145. package/types/Cardinal.d.ts +20 -20
  146. package/types/Gradient.d.ts +20 -20
  147. package/types/Hermite.d.ts +25 -25
  148. package/types/Map.d.ts +9 -9
  149. package/types/MapConfig.d.ts +27 -27
  150. package/types/MapCoordinate.d.ts +22 -22
  151. package/types/Matrix4.d.ts +79 -79
  152. package/types/Pie.d.ts +73 -73
  153. package/types/PieConfig.d.ts +26 -26
  154. package/types/PieLayout.d.ts +40 -40
  155. package/types/PieOption.d.ts +21 -21
  156. package/types/SVG.d.ts +282 -282
  157. package/types/SVGConfig.d.ts +54 -54
  158. package/types/Shader.d.ts +22 -22
  159. package/types/Texture.d.ts +22 -22
  160. package/types/Tree.d.ts +74 -74
  161. package/types/TreeConfig.d.ts +52 -52
  162. package/types/TreeLayout.d.ts +71 -71
  163. package/types/TreeOption.d.ts +48 -48
  164. package/types/animation.d.ts +26 -26
  165. package/types/assemble.d.ts +14 -14
  166. package/types/getLoopColors.d.ts +13 -13
  167. package/types/getWebGLContext.d.ts +7 -7
  168. package/types/index.d.ts +220 -220
  169. package/types/module.d.ts +110 -110
  170. package/types/move.d.ts +15 -15
  171. package/types/option.d.ts +12 -12
  172. package/types/painterConfig.d.ts +14 -14
  173. package/types/rotate.d.ts +15 -15
  174. package/types/ruler.d.ts +24 -24
  175. package/types/scale.d.ts +15 -15
  176. package/types/throttle.d.ts +6 -6
  177. package/types/ui-canvas.d.ts +4 -4
  178. package/types/uni-canvas.d.ts +3 -3
  179. package/uni-app/drawImage.js +19 -19
  180. package/uni-app/ui-canvas.vue +295 -295
@@ -1,250 +1,250 @@
1
- import type BarLayoutType from '../../types/BarLayout'
2
- import type { BarResultType } from '../../types/Bar'
3
- import type BarOptionType from '../../types/BarOption'
4
- import type BarConfigType from '../../types/BarConfig'
5
-
6
- import { initOption } from '../common/option'
7
- import ruler from '../ruler'
8
- import { animation } from "oipage/web/animation/index"
9
-
10
- class BarLayout implements BarLayoutType {
11
- readonly name: string = 'BarLayout'
12
-
13
- private __config: BarConfigType
14
-
15
- constructor(config: BarConfigType = {}) {
16
- this.__config = initOption(config, {
17
-
18
- })
19
- }
20
-
21
- private __option = {
22
- x: 50,
23
- y: 350,
24
- width: 400,
25
- height: 300,
26
- category: "xAxis",
27
- duration: 200
28
- }
29
-
30
- setOption(option: BarOptionType) {
31
- initOption(option, this.__option)
32
- return this
33
- }
34
-
35
- private __rback: (bar: BarResultType) => void
36
- private __oralBar: any
37
- private __preBar: BarResultType | null
38
-
39
- use(initBar: any) {
40
- const bar: BarResultType = {
41
- coordinate: {
42
- x: this.__option.x,
43
- y: this.__option.y,
44
- width: this.__option.width,
45
- height: this.__option.height,
46
- xAxis: {
47
- type: this.__option.category === "xAxis" ? "category" : "value",
48
- data: []
49
- },
50
- yAxis: {
51
- type: this.__option.category === "xAxis" ? "value" : "category",
52
- data: []
53
- }
54
- },
55
- node: []
56
- }
57
-
58
- let maxValue = void 0, minValue = void 0
59
-
60
- // 求解一维最值
61
- if (initBar.data) {
62
- for (const val of initBar.data) {
63
- if (maxValue === void 0 || val > maxValue) maxValue = val
64
- if (minValue === void 0 || val < minValue) minValue = val
65
- }
66
- }
67
-
68
- // 求解二维最值
69
- else if (initBar.value) {
70
- for (const item of initBar.value) {
71
- for (const val of item.data) {
72
- if (maxValue === void 0 || val > maxValue) maxValue = val
73
- if (minValue === void 0 || val < minValue) minValue = val
74
- }
75
- }
76
- } else {
77
- throw new Error('No data leads to parsing errors')
78
- }
79
-
80
- const rulerArray = ruler(maxValue || 0, minValue || 0, 5)
81
-
82
- let categoryLen // 分类轴长度
83
- let valueLen // 数值轴长度
84
-
85
- if (this.__option.category === "xAxis") {
86
-
87
- // 设置刻度尺刻度
88
- bar.coordinate.xAxis.data = initBar.category
89
- bar.coordinate.yAxis.data = rulerArray
90
-
91
- // 设置轴长度
92
- categoryLen = this.__option.width
93
- valueLen = -1 * this.__option.height
94
- } else {
95
- bar.coordinate.xAxis.data = rulerArray
96
- bar.coordinate.yAxis.data = initBar.category
97
- categoryLen = this.__option.height
98
- valueLen = this.__option.width
99
- }
100
-
101
- // 求解分类轴刻度
102
- const category: any = []
103
-
104
- // 一维
105
- const categorySingle1Width = categoryLen / initBar.category.length
106
- const categorySingle2Width = categorySingle1Width * 0.9
107
- const categoryStart = categorySingle1Width * 0.05
108
- if (initBar.data) {
109
- for (let i = 0; i < initBar.data.length; i++) {
110
- category.push([
111
- categoryStart + categorySingle1Width * i,
112
- categorySingle2Width
113
- ])
114
- }
115
- }
116
-
117
- // 二维
118
- else {
119
- const categorySingle3Width = categorySingle2Width / initBar.value.length
120
- const categorySingle4Width = categorySingle3Width * 0.9
121
- const categoryStartBlance = categorySingle3Width * 0.05
122
- for (let i = 0; i < initBar.value[0].data.length; i++) {
123
- category[i] = []
124
- for (let j = 0; j < initBar.value.length; j++) {
125
- category[i].push([
126
- categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
127
- categorySingle4Width
128
- ])
129
- }
130
- }
131
- }
132
-
133
- // 根据值获取长度
134
- const singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
135
- const getLenByValue = (value: number) => {
136
- return singleValueLen * (value - rulerArray[0])
137
- }
138
-
139
- // 计算小矩形
140
- if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
141
- if (initBar.data) {
142
- const nodeBar = []
143
- for (let i = 0; i < initBar.data.length; i++) {
144
- nodeBar.push({
145
- x: this.__option.x + category[i][0],
146
- y: this.__option.y,
147
- width: category[i][1],
148
- height: getLenByValue(initBar.data[i]),
149
- value: initBar.data[i]
150
- })
151
- }
152
- bar.node.push({
153
- bar: nodeBar
154
- })
155
- } else {
156
- for (let j = 0; j < initBar.value.length; j++) {
157
- const nodeBar = []
158
- for (let i = 0; i < initBar.value[j].data.length; i++) {
159
- nodeBar.push({
160
- x: this.__option.x + category[i][j][0],
161
- y: this.__option.y,
162
- width: category[i][j][1],
163
- height: getLenByValue(initBar.value[j].data[i]),
164
- value: initBar.value[j].data[i]
165
- })
166
- }
167
- bar.node.push({
168
- name: initBar.value[j].name,
169
- bar: nodeBar
170
- })
171
- }
172
- }
173
- } else { // 分类在y轴,从上到下
174
- if (initBar.data) {
175
- const nodeBar = []
176
- for (let i = 0; i < initBar.data.length; i++) {
177
- nodeBar.push({
178
- x: this.__option.x,
179
- y: this.__option.y - this.__option.height + category[i][0],
180
- width: getLenByValue(initBar.data[i]),
181
- height: category[i][1],
182
- value: initBar.data[i]
183
- })
184
- }
185
- bar.node.push({
186
- bar: nodeBar
187
- })
188
- } else {
189
- for (let j = 0; j < initBar.value.length; j++) {
190
- const nodeBar = []
191
- for (let i = 0; i < initBar.value[j].data.length; i++) {
192
- nodeBar.push({
193
- x: this.__option.x,
194
- y: this.__option.y - this.__option.height + category[i][j][0],
195
- width: getLenByValue(initBar.value[j].data[i]),
196
- height: category[i][j][1],
197
- value: initBar.value[j].data[i]
198
- })
199
- }
200
- bar.node.push({
201
- name: initBar.value[j].name,
202
- bar: nodeBar
203
- })
204
- }
205
- }
206
- }
207
-
208
- return bar
209
- }
210
-
211
- bind(initBar: any, renderBack: (bar: BarResultType) => void) {
212
- this.__rback = renderBack
213
- this.__oralBar = initBar
214
-
215
- this.__preBar = this.use(this.__oralBar)
216
- this.__rback(this.__preBar)
217
-
218
- return this
219
- }
220
-
221
- unbind() {
222
- this.__rback = () => null
223
- this.__oralBar = null
224
- this.__preBar = null
225
- return this
226
- }
227
-
228
- doUpdate() {
229
- const newBar = this.use(this.__oralBar)
230
-
231
- const cacheBar = JSON.parse(JSON.stringify(newBar))
232
-
233
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
- animation((deep) => {
235
-
236
- if (this.__preBar) {
237
- // todo
238
- } else {
239
- this.__rback(cacheBar)
240
- }
241
-
242
- }, this.__option.duration, () => {
243
- this.__preBar = newBar
244
- this.__rback(this.__preBar)
245
- })
246
- return this
247
- }
248
- }
249
-
1
+ import type BarLayoutType from '../../types/BarLayout'
2
+ import type { BarResultType } from '../../types/Bar'
3
+ import type BarOptionType from '../../types/BarOption'
4
+ import type BarConfigType from '../../types/BarConfig'
5
+
6
+ import { initOption } from '../common/option'
7
+ import ruler from '../ruler'
8
+ import { animation } from "oipage/web/animation/index"
9
+
10
+ class BarLayout implements BarLayoutType {
11
+ readonly name: string = 'BarLayout'
12
+
13
+ private __config: BarConfigType
14
+
15
+ constructor(config: BarConfigType = {}) {
16
+ this.__config = initOption(config, {
17
+
18
+ })
19
+ }
20
+
21
+ private __option = {
22
+ x: 50,
23
+ y: 350,
24
+ width: 400,
25
+ height: 300,
26
+ category: "xAxis",
27
+ duration: 200
28
+ }
29
+
30
+ setOption(option: BarOptionType) {
31
+ initOption(option, this.__option)
32
+ return this
33
+ }
34
+
35
+ private __rback: (bar: BarResultType) => void
36
+ private __oralBar: any
37
+ private __preBar: BarResultType | null
38
+
39
+ use(initBar: any) {
40
+ const bar: BarResultType = {
41
+ coordinate: {
42
+ x: this.__option.x,
43
+ y: this.__option.y,
44
+ width: this.__option.width,
45
+ height: this.__option.height,
46
+ xAxis: {
47
+ type: this.__option.category === "xAxis" ? "category" : "value",
48
+ data: []
49
+ },
50
+ yAxis: {
51
+ type: this.__option.category === "xAxis" ? "value" : "category",
52
+ data: []
53
+ }
54
+ },
55
+ node: []
56
+ }
57
+
58
+ let maxValue = void 0, minValue = void 0
59
+
60
+ // 求解一维最值
61
+ if (initBar.data) {
62
+ for (const val of initBar.data) {
63
+ if (maxValue === void 0 || val > maxValue) maxValue = val
64
+ if (minValue === void 0 || val < minValue) minValue = val
65
+ }
66
+ }
67
+
68
+ // 求解二维最值
69
+ else if (initBar.value) {
70
+ for (const item of initBar.value) {
71
+ for (const val of item.data) {
72
+ if (maxValue === void 0 || val > maxValue) maxValue = val
73
+ if (minValue === void 0 || val < minValue) minValue = val
74
+ }
75
+ }
76
+ } else {
77
+ throw new Error('No data leads to parsing errors')
78
+ }
79
+
80
+ const rulerArray = ruler(maxValue || 0, minValue || 0, 5)
81
+
82
+ let categoryLen // 分类轴长度
83
+ let valueLen // 数值轴长度
84
+
85
+ if (this.__option.category === "xAxis") {
86
+
87
+ // 设置刻度尺刻度
88
+ bar.coordinate.xAxis.data = initBar.category
89
+ bar.coordinate.yAxis.data = rulerArray
90
+
91
+ // 设置轴长度
92
+ categoryLen = this.__option.width
93
+ valueLen = -1 * this.__option.height
94
+ } else {
95
+ bar.coordinate.xAxis.data = rulerArray
96
+ bar.coordinate.yAxis.data = initBar.category
97
+ categoryLen = this.__option.height
98
+ valueLen = this.__option.width
99
+ }
100
+
101
+ // 求解分类轴刻度
102
+ const category: any = []
103
+
104
+ // 一维
105
+ const categorySingle1Width = categoryLen / initBar.category.length
106
+ const categorySingle2Width = categorySingle1Width * 0.9
107
+ const categoryStart = categorySingle1Width * 0.05
108
+ if (initBar.data) {
109
+ for (let i = 0; i < initBar.data.length; i++) {
110
+ category.push([
111
+ categoryStart + categorySingle1Width * i,
112
+ categorySingle2Width
113
+ ])
114
+ }
115
+ }
116
+
117
+ // 二维
118
+ else {
119
+ const categorySingle3Width = categorySingle2Width / initBar.value.length
120
+ const categorySingle4Width = categorySingle3Width * 0.9
121
+ const categoryStartBlance = categorySingle3Width * 0.05
122
+ for (let i = 0; i < initBar.value[0].data.length; i++) {
123
+ category[i] = []
124
+ for (let j = 0; j < initBar.value.length; j++) {
125
+ category[i].push([
126
+ categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
127
+ categorySingle4Width
128
+ ])
129
+ }
130
+ }
131
+ }
132
+
133
+ // 根据值获取长度
134
+ const singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
135
+ const getLenByValue = (value: number) => {
136
+ return singleValueLen * (value - rulerArray[0])
137
+ }
138
+
139
+ // 计算小矩形
140
+ if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
141
+ if (initBar.data) {
142
+ const nodeBar = []
143
+ for (let i = 0; i < initBar.data.length; i++) {
144
+ nodeBar.push({
145
+ x: this.__option.x + category[i][0],
146
+ y: this.__option.y,
147
+ width: category[i][1],
148
+ height: getLenByValue(initBar.data[i]),
149
+ value: initBar.data[i]
150
+ })
151
+ }
152
+ bar.node.push({
153
+ bar: nodeBar
154
+ })
155
+ } else {
156
+ for (let j = 0; j < initBar.value.length; j++) {
157
+ const nodeBar = []
158
+ for (let i = 0; i < initBar.value[j].data.length; i++) {
159
+ nodeBar.push({
160
+ x: this.__option.x + category[i][j][0],
161
+ y: this.__option.y,
162
+ width: category[i][j][1],
163
+ height: getLenByValue(initBar.value[j].data[i]),
164
+ value: initBar.value[j].data[i]
165
+ })
166
+ }
167
+ bar.node.push({
168
+ name: initBar.value[j].name,
169
+ bar: nodeBar
170
+ })
171
+ }
172
+ }
173
+ } else { // 分类在y轴,从上到下
174
+ if (initBar.data) {
175
+ const nodeBar = []
176
+ for (let i = 0; i < initBar.data.length; i++) {
177
+ nodeBar.push({
178
+ x: this.__option.x,
179
+ y: this.__option.y - this.__option.height + category[i][0],
180
+ width: getLenByValue(initBar.data[i]),
181
+ height: category[i][1],
182
+ value: initBar.data[i]
183
+ })
184
+ }
185
+ bar.node.push({
186
+ bar: nodeBar
187
+ })
188
+ } else {
189
+ for (let j = 0; j < initBar.value.length; j++) {
190
+ const nodeBar = []
191
+ for (let i = 0; i < initBar.value[j].data.length; i++) {
192
+ nodeBar.push({
193
+ x: this.__option.x,
194
+ y: this.__option.y - this.__option.height + category[i][j][0],
195
+ width: getLenByValue(initBar.value[j].data[i]),
196
+ height: category[i][j][1],
197
+ value: initBar.value[j].data[i]
198
+ })
199
+ }
200
+ bar.node.push({
201
+ name: initBar.value[j].name,
202
+ bar: nodeBar
203
+ })
204
+ }
205
+ }
206
+ }
207
+
208
+ return bar
209
+ }
210
+
211
+ bind(initBar: any, renderBack: (bar: BarResultType) => void) {
212
+ this.__rback = renderBack
213
+ this.__oralBar = initBar
214
+
215
+ this.__preBar = this.use(this.__oralBar)
216
+ this.__rback(this.__preBar)
217
+
218
+ return this
219
+ }
220
+
221
+ unbind() {
222
+ this.__rback = () => null
223
+ this.__oralBar = null
224
+ this.__preBar = null
225
+ return this
226
+ }
227
+
228
+ doUpdate() {
229
+ const newBar = this.use(this.__oralBar)
230
+
231
+ const cacheBar = JSON.parse(JSON.stringify(newBar))
232
+
233
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
+ animation((deep) => {
235
+
236
+ if (this.__preBar) {
237
+ // todo
238
+ } else {
239
+ this.__rback(cacheBar)
240
+ }
241
+
242
+ }, this.__option.duration, () => {
243
+ this.__preBar = newBar
244
+ this.__rback(this.__preBar)
245
+ })
246
+ return this
247
+ }
248
+ }
249
+
250
250
  export default BarLayout