vislite 1.12.0-alpha.1 → 1.12.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 (181) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +402 -401
  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 +17 -17
  8. package/bin/run +21 -21
  9. package/bin/skills.js +26 -26
  10. package/lib/BarLayout/index.es.js +348 -348
  11. package/lib/Buffer/index.es.js +34 -34
  12. package/lib/Canvas/index.es.js +804 -789
  13. package/lib/Canvas/index.es.min.js +1 -1
  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 -721
  22. package/lib/RawCanvas/index.es.min.js +1 -1
  23. package/lib/SVG/index.es.js +626 -626
  24. package/lib/Shader/index.es.js +34 -34
  25. package/lib/Texture/index.es.js +52 -52
  26. package/lib/TreeLayout/index.es.js +301 -301
  27. package/lib/animation/index.es.js +2 -2
  28. package/lib/assemble/index.es.js +19 -19
  29. package/lib/getLoopColors/index.es.js +34 -34
  30. package/lib/getWebGLContext/index.es.js +61 -61
  31. package/lib/index.umd.js +2797 -2782
  32. package/lib/index.umd.min.js +2 -2
  33. package/lib/initOption/index.es.js +5 -5
  34. package/lib/mergeOption/index.es.js +34 -34
  35. package/lib/move/index.es.js +6 -6
  36. package/lib/rotate/index.es.js +6 -6
  37. package/lib/ruler/index.es.js +136 -136
  38. package/lib/scale/index.es.js +5 -5
  39. package/minialipay/ui-canvas/drawImage.js +35 -35
  40. package/minialipay/ui-canvas/index.acss +4 -4
  41. package/minialipay/ui-canvas/index.axml +3 -3
  42. package/minialipay/ui-canvas/index.d.ts +1 -1
  43. package/minialipay/ui-canvas/index.js +100 -100
  44. package/minialipay/ui-canvas/index.json +6 -6
  45. package/miniprogram/ui-canvas/drawImage.js +35 -35
  46. package/miniprogram/ui-canvas/index.js +125 -125
  47. package/miniprogram/ui-canvas/index.json +4 -4
  48. package/miniprogram/ui-canvas/index.wxml +4 -4
  49. package/miniprogram/ui-canvas/index.wxss +5 -5
  50. package/package/BarLayout/index.ts +2 -2
  51. package/package/Buffer/index.ts +2 -2
  52. package/package/Canvas/index.ts +2 -2
  53. package/package/Cardinal/index.ts +2 -2
  54. package/package/Eoap/index.ts +2 -2
  55. package/package/Hermite/index.ts +2 -2
  56. package/package/MapCoordinate/index.ts +2 -2
  57. package/package/Matrix4/index.ts +2 -2
  58. package/package/Mercator/index.ts +2 -2
  59. package/package/PieLayout/index.ts +2 -2
  60. package/package/RawCanvas/index.ts +2 -2
  61. package/package/SVG/index.ts +2 -2
  62. package/package/Shader/index.ts +2 -2
  63. package/package/Texture/index.ts +2 -2
  64. package/package/TreeLayout/index.ts +2 -2
  65. package/package/animation/index.ts +5 -5
  66. package/package/assemble/index.ts +2 -2
  67. package/package/getLoopColors/index.ts +2 -2
  68. package/package/getWebGLContext/index.ts +40 -40
  69. package/package/index.ts +84 -84
  70. package/package/initOption/index.ts +2 -2
  71. package/package/mergeOption/index.ts +2 -2
  72. package/package/move/index.ts +2 -2
  73. package/package/rotate/index.ts +2 -2
  74. package/package/ruler/index.ts +2 -2
  75. package/package/scale/index.ts +2 -2
  76. package/package/throttle/index.ts +2 -2
  77. package/package.json +79 -79
  78. package/skills/vislite-lib/BarLayout.md +117 -117
  79. package/skills/vislite-lib/Canvas.md +183 -183
  80. package/skills/vislite-lib/Interpolation.md +129 -129
  81. package/skills/vislite-lib/Matrix.md +174 -174
  82. package/skills/vislite-lib/PieLayout.md +131 -131
  83. package/skills/vislite-lib/Projections.md +158 -158
  84. package/skills/vislite-lib/SKILL.md +179 -179
  85. package/skills/vislite-lib/SVG.md +137 -137
  86. package/skills/vislite-lib/TreeLayout.md +176 -176
  87. package/skills/vislite-lib/Utilities.md +261 -261
  88. package/skills/vislite-lib/WebGL.md +106 -106
  89. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  90. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  91. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  92. package/src/Canvas.ts +89 -89
  93. package/src/Eoap.ts +66 -66
  94. package/src/Matrix4/index.ts +84 -84
  95. package/src/Matrix4/move.ts +12 -12
  96. package/src/Matrix4/rotate.ts +15 -15
  97. package/src/Matrix4/scale.ts +11 -11
  98. package/src/Matrix4/transform.ts +64 -64
  99. package/src/Mercator.ts +27 -27
  100. package/src/SVG.ts +86 -86
  101. package/src/common/assemble.ts +30 -30
  102. package/src/common/canvas/arc.ts +51 -51
  103. package/src/common/canvas/config.ts +176 -176
  104. package/src/common/canvas/default.ts +64 -64
  105. package/src/common/canvas/gradient.ts +31 -31
  106. package/src/common/canvas/index.ts +189 -189
  107. package/src/common/canvas/painter.ts +475 -454
  108. package/src/common/canvas/texts.ts +18 -18
  109. package/src/common/map/getBoundary.ts +15 -15
  110. package/src/common/map/tool.ts +29 -29
  111. package/src/common/option.ts +31 -31
  112. package/src/common/setStyle.ts +5 -5
  113. package/src/common/svg/config.ts +213 -213
  114. package/src/common/svg/default.ts +29 -29
  115. package/src/common/svg/gradient.ts +53 -53
  116. package/src/common/svg/index.ts +420 -420
  117. package/src/common/svg/tool.ts +51 -51
  118. package/src/common/tree/index.ts +25 -25
  119. package/src/common/tree/toInnerTree.ts +61 -61
  120. package/src/common/tree/toPlainTree.ts +135 -135
  121. package/src/common/type.ts +26 -26
  122. package/src/common/webgl/buffer.ts +79 -79
  123. package/src/common/webgl/getWebGLContext.ts +45 -45
  124. package/src/common/webgl/shader.ts +75 -75
  125. package/src/common/webgl/texture.ts +98 -98
  126. package/src/coordinate/MapCoordinate.ts +80 -80
  127. package/src/getLoopColors.ts +42 -42
  128. package/src/interpolation/Cardinal.ts +110 -110
  129. package/src/interpolation/Hermite.ts +65 -65
  130. package/src/layout/BarLayout.ts +249 -249
  131. package/src/layout/PieLayout.ts +146 -146
  132. package/src/layout/TreeLayout.ts +200 -200
  133. package/src/move.ts +7 -7
  134. package/src/rotate.ts +7 -7
  135. package/src/ruler.ts +209 -209
  136. package/src/scale.ts +6 -6
  137. package/types/Bar.d.ts +91 -91
  138. package/types/BarConfig.d.ts +4 -4
  139. package/types/BarLayout.d.ts +48 -48
  140. package/types/BarOption.d.ts +31 -31
  141. package/types/Buffer.d.ts +30 -30
  142. package/types/Canvas.d.ts +379 -379
  143. package/types/CanvasConfig.d.ts +61 -61
  144. package/types/CanvasOption.d.ts +13 -13
  145. package/types/CanvasOpts.d.ts +9 -9
  146. package/types/Cardinal.d.ts +20 -20
  147. package/types/Gradient.d.ts +20 -20
  148. package/types/Hermite.d.ts +25 -25
  149. package/types/Map.d.ts +9 -9
  150. package/types/MapConfig.d.ts +27 -27
  151. package/types/MapCoordinate.d.ts +22 -22
  152. package/types/Matrix4.d.ts +79 -79
  153. package/types/Pie.d.ts +73 -73
  154. package/types/PieConfig.d.ts +26 -26
  155. package/types/PieLayout.d.ts +40 -40
  156. package/types/PieOption.d.ts +21 -21
  157. package/types/SVG.d.ts +282 -282
  158. package/types/SVGConfig.d.ts +54 -54
  159. package/types/Shader.d.ts +22 -22
  160. package/types/Texture.d.ts +22 -22
  161. package/types/Tree.d.ts +74 -74
  162. package/types/TreeConfig.d.ts +52 -52
  163. package/types/TreeLayout.d.ts +71 -71
  164. package/types/TreeOption.d.ts +48 -48
  165. package/types/animation.d.ts +26 -26
  166. package/types/assemble.d.ts +14 -14
  167. package/types/getLoopColors.d.ts +13 -13
  168. package/types/getWebGLContext.d.ts +7 -7
  169. package/types/index.d.ts +220 -221
  170. package/types/module.d.ts +110 -110
  171. package/types/move.d.ts +15 -15
  172. package/types/option.d.ts +12 -12
  173. package/types/painterConfig.d.ts +14 -14
  174. package/types/rotate.d.ts +15 -15
  175. package/types/ruler.d.ts +24 -24
  176. package/types/scale.d.ts +15 -15
  177. package/types/throttle.d.ts +6 -6
  178. package/types/ui-canvas.d.ts +4 -4
  179. package/types/uni-canvas.d.ts +3 -3
  180. package/uni-app/drawImage.js +19 -19
  181. 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