vislite 1.9.0-alpha.2 → 1.9.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 (184) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +3 -2
  3. package/LICENSE +20 -20
  4. package/README.md +1 -1
  5. package/lib/BarLayout/index.es.js +121 -121
  6. package/lib/BarLayout/index.es.min.js +2 -2
  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 +121 -121
  24. package/lib/PieLayout/index.es.min.js +2 -2
  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 +1 -1
  28. package/lib/SVG/index.es.min.js +1 -1
  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 +121 -121
  34. package/lib/TreeLayout/index.es.min.js +2 -2
  35. package/lib/animation/index.es.js +121 -121
  36. package/lib/animation/index.es.min.js +2 -2
  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 +171 -171
  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 +51 -51
  58. package/lib/throttle/index.es.min.js +2 -2
  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 +75 -75
  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 +189 -189
  113. package/src/common/canvas/texts.ts +18 -18
  114. package/src/common/map/getBoundary.ts +15 -15
  115. package/src/common/map/tool.ts +29 -29
  116. package/src/common/option.ts +29 -29
  117. package/src/common/setStyle.ts +5 -5
  118. package/src/common/svg/config.ts +213 -213
  119. package/src/common/svg/default.ts +29 -29
  120. package/src/common/svg/gradient.ts +53 -53
  121. package/src/common/svg/index.ts +420 -420
  122. package/src/common/svg/tool.ts +51 -51
  123. package/src/common/tree/index.ts +25 -25
  124. package/src/common/tree/toInnerTree.ts +61 -61
  125. package/src/common/tree/toPlainTree.ts +135 -135
  126. package/src/common/type.ts +26 -26
  127. package/src/common/webgl/buffer.ts +79 -79
  128. package/src/common/webgl/getWebGLContext.ts +45 -45
  129. package/src/common/webgl/shader.ts +75 -75
  130. package/src/common/webgl/texture.ts +98 -98
  131. package/src/coordinate/MapCoordinate.ts +80 -80
  132. package/src/getLoopColors.ts +42 -42
  133. package/src/interpolation/Cardinal.ts +110 -110
  134. package/src/interpolation/Hermite.ts +65 -65
  135. package/src/layout/BarLayout.ts +249 -249
  136. package/src/layout/TreeLayout.ts +200 -200
  137. package/src/move.ts +7 -7
  138. package/src/rotate.ts +7 -7
  139. package/src/ruler.ts +209 -209
  140. package/src/scale.ts +6 -6
  141. package/types/Bar.d.ts +91 -91
  142. package/types/BarConfig.d.ts +4 -4
  143. package/types/BarLayout.d.ts +48 -48
  144. package/types/BarOption.d.ts +31 -31
  145. package/types/Buffer.d.ts +23 -23
  146. package/types/Canvas.d.ts +375 -375
  147. package/types/CanvasConfig.d.ts +88 -88
  148. package/types/CanvasOption.d.ts +13 -13
  149. package/types/CanvasOpts.d.ts +9 -9
  150. package/types/Cardinal.d.ts +13 -13
  151. package/types/Gradient.d.ts +14 -14
  152. package/types/Hermite.d.ts +18 -18
  153. package/types/Map.d.ts +9 -9
  154. package/types/MapConfig.d.ts +27 -27
  155. package/types/MapCoordinate.d.ts +22 -22
  156. package/types/Matrix4.d.ts +47 -47
  157. package/types/Pie.d.ts +73 -73
  158. package/types/PieConfig.d.ts +26 -26
  159. package/types/PieLayout.d.ts +40 -40
  160. package/types/PieOption.d.ts +21 -21
  161. package/types/SVG.d.ts +278 -278
  162. package/types/SVGConfig.d.ts +71 -71
  163. package/types/Shader.d.ts +16 -16
  164. package/types/Texture.d.ts +16 -16
  165. package/types/Tree.d.ts +74 -74
  166. package/types/TreeConfig.d.ts +36 -36
  167. package/types/TreeLayout.d.ts +59 -59
  168. package/types/TreeOption.d.ts +48 -48
  169. package/types/animation.d.ts +11 -11
  170. package/types/assemble.d.ts +5 -5
  171. package/types/getLoopColors.d.ts +5 -5
  172. package/types/getWebGLContext.d.ts +7 -7
  173. package/types/index.d.ts +196 -196
  174. package/types/move.d.ts +5 -5
  175. package/types/option.d.ts +12 -12
  176. package/types/painterConfig.d.ts +4 -4
  177. package/types/rotate.d.ts +5 -5
  178. package/types/ruler.d.ts +10 -10
  179. package/types/scale.d.ts +5 -5
  180. package/types/throttle.d.ts +5 -5
  181. package/types/ui-canvas.d.ts +4 -4
  182. package/types/uni-canvas.d.ts +3 -3
  183. package/uni-app/drawImage.js +19 -19
  184. 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