@visactor/vchart 1.8.8-alpha.1 → 1.8.10-alpha.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 (411) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +635 -581
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/config.js +1 -1
  6. package/cjs/animation/config.js.map +1 -1
  7. package/cjs/component/axis/base-axis.d.ts +2 -1
  8. package/cjs/component/axis/base-axis.js +11 -1
  9. package/cjs/component/axis/base-axis.js.map +1 -1
  10. package/cjs/component/axis/cartesian/axis.d.ts +9 -2
  11. package/cjs/component/axis/cartesian/axis.js +23 -8
  12. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  13. package/cjs/component/axis/cartesian/interface/spec.d.ts +19 -3
  14. package/cjs/component/axis/cartesian/interface/spec.js.map +1 -1
  15. package/cjs/component/axis/mixin/band-axis-mixin.d.ts +6 -1
  16. package/cjs/component/axis/mixin/band-axis-mixin.js +17 -1
  17. package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
  18. package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +9 -1
  19. package/cjs/component/axis/mixin/linear-axis-mixin.js +18 -5
  20. package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  21. package/cjs/component/axis/polar/axis.d.ts +1 -1
  22. package/cjs/component/axis/polar/axis.js +4 -4
  23. package/cjs/component/axis/polar/axis.js.map +1 -1
  24. package/cjs/component/brush/brush.js +3 -3
  25. package/cjs/component/brush/brush.js.map +1 -1
  26. package/cjs/component/crosshair/base.js +5 -4
  27. package/cjs/component/crosshair/base.js.map +1 -1
  28. package/cjs/component/crosshair/cartesian.js +20 -17
  29. package/cjs/component/crosshair/cartesian.js.map +1 -1
  30. package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -1
  31. package/cjs/component/data-zoom/data-filter-base-component.js +6 -3
  32. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  33. package/cjs/component/geo/geo-coordinate.d.ts +1 -0
  34. package/cjs/component/geo/geo-coordinate.js +7 -6
  35. package/cjs/component/geo/geo-coordinate.js.map +1 -1
  36. package/cjs/component/indicator/indicator.js +2 -2
  37. package/cjs/component/indicator/indicator.js.map +1 -1
  38. package/cjs/component/label/label.js +3 -3
  39. package/cjs/component/label/label.js.map +1 -1
  40. package/cjs/component/label/total-label.js +3 -3
  41. package/cjs/component/label/total-label.js.map +1 -1
  42. package/cjs/component/label/util.js.map +1 -1
  43. package/cjs/component/map-label/component.js +1 -1
  44. package/cjs/component/map-label/component.js.map +1 -1
  45. package/cjs/component/marker/mark-line/mark-line.js +3 -3
  46. package/cjs/component/marker/mark-line/mark-line.js.map +1 -1
  47. package/cjs/component/marker/utils.js +6 -6
  48. package/cjs/component/marker/utils.js.map +1 -1
  49. package/cjs/component/player/player.js +2 -1
  50. package/cjs/component/player/player.js.map +1 -1
  51. package/cjs/component/tooltip/utils/show-tooltip.js +1 -1
  52. package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
  53. package/cjs/constant/event.js +2 -1
  54. package/cjs/constant/scroll-bar.js +1 -2
  55. package/cjs/core/index.d.ts +1 -1
  56. package/cjs/core/index.js +1 -1
  57. package/cjs/core/index.js.map +1 -1
  58. package/cjs/core/vchart.js +1 -1
  59. package/cjs/core/vchart.js.map +1 -1
  60. package/cjs/env/env.js +1 -1
  61. package/cjs/env/index.js +1 -1
  62. package/cjs/event/event-dispatcher.js +4 -6
  63. package/cjs/event/event-dispatcher.js.map +1 -1
  64. package/cjs/event/event.js +1 -1
  65. package/cjs/event/index.js +1 -1
  66. package/cjs/event/interface.js +1 -1
  67. package/cjs/interaction/interface.js +2 -1
  68. package/cjs/interaction/trigger.js +1 -1
  69. package/cjs/interaction/zoom/zoomable.js +9 -9
  70. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  71. package/cjs/layout/base-layout.d.ts +46 -2
  72. package/cjs/layout/base-layout.js +194 -36
  73. package/cjs/layout/base-layout.js.map +1 -1
  74. package/cjs/layout/index.js +1 -1
  75. package/cjs/layout/interface.d.ts +1 -4
  76. package/cjs/layout/interface.js +1 -1
  77. package/cjs/layout/interface.js.map +1 -1
  78. package/cjs/layout/layout-item.d.ts +1 -5
  79. package/cjs/layout/layout-item.js +5 -25
  80. package/cjs/layout/layout-item.js.map +1 -1
  81. package/cjs/layout/layout3d/index.d.ts +1 -8
  82. package/cjs/layout/layout3d/index.js +10 -69
  83. package/cjs/layout/layout3d/index.js.map +1 -1
  84. package/cjs/layout/util.js +27 -69
  85. package/cjs/layout/util.js.map +1 -1
  86. package/cjs/model/base-model-transformer.d.ts +2 -1
  87. package/cjs/model/base-model-transformer.js +6 -2
  88. package/cjs/model/base-model-transformer.js.map +1 -1
  89. package/cjs/model/interface.d.ts +0 -2
  90. package/cjs/model/interface.js.map +1 -1
  91. package/cjs/model/layout-model.d.ts +0 -8
  92. package/cjs/model/layout-model.js +0 -15
  93. package/cjs/model/layout-model.js.map +1 -1
  94. package/cjs/series/area/area-transformer.d.ts +2 -0
  95. package/cjs/series/area/area-transformer.js +18 -1
  96. package/cjs/series/area/area-transformer.js.map +1 -1
  97. package/cjs/series/area/area.d.ts +0 -1
  98. package/cjs/series/area/area.js +1 -17
  99. package/cjs/series/area/area.js.map +1 -1
  100. package/cjs/series/bar/bar.js +1 -1
  101. package/cjs/series/bar/bar.js.map +1 -1
  102. package/cjs/series/base/base-series-transformer.js +1 -2
  103. package/cjs/series/base/base-series-transformer.js.map +1 -1
  104. package/cjs/series/base/base-series.js +14 -13
  105. package/cjs/series/base/base-series.js.map +1 -1
  106. package/cjs/series/cartesian/cartesian.js +4 -3
  107. package/cjs/series/cartesian/cartesian.js.map +1 -1
  108. package/cjs/series/correlation/correlation.js +1 -1
  109. package/cjs/series/correlation/correlation.js.map +1 -1
  110. package/cjs/series/mixin/line-mixin.js +1 -1
  111. package/cjs/series/mixin/line-mixin.js.map +1 -1
  112. package/cjs/series/pie/3d/pie-3d.js +1 -1
  113. package/cjs/series/pie/3d/pie-3d.js.map +1 -1
  114. package/cjs/series/pie/pie.js +7 -7
  115. package/cjs/series/pie/pie.js.map +1 -1
  116. package/cjs/series/polar/polar.js +1 -1
  117. package/cjs/series/polar/polar.js.map +1 -1
  118. package/cjs/series/radar/animation.js +1 -1
  119. package/cjs/series/radar/animation.js.map +1 -1
  120. package/cjs/series/sankey/sankey.js +1 -1
  121. package/cjs/series/sankey/sankey.js.map +1 -1
  122. package/cjs/series/sunburst/sunburst.js +2 -2
  123. package/cjs/series/sunburst/sunburst.js.map +1 -1
  124. package/cjs/series/word-cloud/base.js +3 -3
  125. package/cjs/series/word-cloud/base.js.map +1 -1
  126. package/cjs/theme/builtin/index.js +3 -1
  127. package/cjs/theme/builtin/index.js.map +1 -1
  128. package/cjs/typings/layout.d.ts +1 -1
  129. package/cjs/typings/layout.js.map +1 -1
  130. package/esm/animation/config.js +1 -1
  131. package/esm/animation/config.js.map +1 -1
  132. package/esm/component/axis/base-axis.d.ts +2 -1
  133. package/esm/component/axis/base-axis.js +11 -1
  134. package/esm/component/axis/base-axis.js.map +1 -1
  135. package/esm/component/axis/cartesian/axis.d.ts +9 -2
  136. package/esm/component/axis/cartesian/axis.js +23 -8
  137. package/esm/component/axis/cartesian/axis.js.map +1 -1
  138. package/esm/component/axis/cartesian/interface/spec.d.ts +19 -3
  139. package/esm/component/axis/cartesian/interface/spec.js.map +1 -1
  140. package/esm/component/axis/mixin/band-axis-mixin.d.ts +6 -1
  141. package/esm/component/axis/mixin/band-axis-mixin.js +17 -1
  142. package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
  143. package/esm/component/axis/mixin/linear-axis-mixin.d.ts +9 -1
  144. package/esm/component/axis/mixin/linear-axis-mixin.js +19 -5
  145. package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
  146. package/esm/component/axis/polar/axis.d.ts +1 -1
  147. package/esm/component/axis/polar/axis.js +4 -4
  148. package/esm/component/axis/polar/axis.js.map +1 -1
  149. package/esm/component/brush/brush.js +3 -3
  150. package/esm/component/brush/brush.js.map +1 -1
  151. package/esm/component/crosshair/base.js +5 -4
  152. package/esm/component/crosshair/base.js.map +1 -1
  153. package/esm/component/crosshair/cartesian.js +20 -17
  154. package/esm/component/crosshair/cartesian.js.map +1 -1
  155. package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -1
  156. package/esm/component/data-zoom/data-filter-base-component.js +6 -4
  157. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  158. package/esm/component/geo/geo-coordinate.d.ts +1 -0
  159. package/esm/component/geo/geo-coordinate.js +7 -6
  160. package/esm/component/geo/geo-coordinate.js.map +1 -1
  161. package/esm/component/indicator/indicator.js +2 -2
  162. package/esm/component/indicator/indicator.js.map +1 -1
  163. package/esm/component/label/label.js +3 -3
  164. package/esm/component/label/label.js.map +1 -1
  165. package/esm/component/label/total-label.js +3 -3
  166. package/esm/component/label/total-label.js.map +1 -1
  167. package/esm/component/label/util.js.map +1 -1
  168. package/esm/component/map-label/component.js +1 -1
  169. package/esm/component/map-label/component.js.map +1 -1
  170. package/esm/component/marker/mark-line/mark-line.js +3 -3
  171. package/esm/component/marker/mark-line/mark-line.js.map +1 -1
  172. package/esm/component/marker/utils.js +6 -6
  173. package/esm/component/marker/utils.js.map +1 -1
  174. package/esm/component/player/player.js +2 -1
  175. package/esm/component/player/player.js.map +1 -1
  176. package/esm/component/tooltip/utils/show-tooltip.js +1 -1
  177. package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
  178. package/esm/constant/event.js +2 -1
  179. package/esm/constant/scroll-bar.js +1 -2
  180. package/esm/core/index.d.ts +1 -1
  181. package/esm/core/index.js +1 -1
  182. package/esm/core/index.js.map +1 -1
  183. package/esm/core/vchart.js +1 -1
  184. package/esm/core/vchart.js.map +1 -1
  185. package/esm/env/env.js +1 -1
  186. package/esm/env/index.js +1 -1
  187. package/esm/event/event-dispatcher.js +4 -6
  188. package/esm/event/event-dispatcher.js.map +1 -1
  189. package/esm/event/event.js +1 -1
  190. package/esm/event/index.js +1 -1
  191. package/esm/event/interface.js +1 -1
  192. package/esm/interaction/interface.js +2 -1
  193. package/esm/interaction/trigger.js +1 -1
  194. package/esm/interaction/zoom/zoomable.js +8 -9
  195. package/esm/interaction/zoom/zoomable.js.map +1 -1
  196. package/esm/layout/base-layout.d.ts +46 -2
  197. package/esm/layout/base-layout.js +192 -36
  198. package/esm/layout/base-layout.js.map +1 -1
  199. package/esm/layout/index.js +1 -1
  200. package/esm/layout/interface.d.ts +1 -4
  201. package/esm/layout/interface.js +1 -1
  202. package/esm/layout/interface.js.map +1 -1
  203. package/esm/layout/layout-item.d.ts +1 -5
  204. package/esm/layout/layout-item.js +5 -24
  205. package/esm/layout/layout-item.js.map +1 -1
  206. package/esm/layout/layout3d/index.d.ts +1 -8
  207. package/esm/layout/layout3d/index.js +10 -69
  208. package/esm/layout/layout3d/index.js.map +1 -1
  209. package/esm/layout/util.js +27 -69
  210. package/esm/layout/util.js.map +1 -1
  211. package/esm/model/base-model-transformer.d.ts +2 -1
  212. package/esm/model/base-model-transformer.js +6 -2
  213. package/esm/model/base-model-transformer.js.map +1 -1
  214. package/esm/model/interface.d.ts +0 -2
  215. package/esm/model/interface.js.map +1 -1
  216. package/esm/model/layout-model.d.ts +0 -8
  217. package/esm/model/layout-model.js +0 -15
  218. package/esm/model/layout-model.js.map +1 -1
  219. package/esm/series/area/area-transformer.d.ts +2 -0
  220. package/esm/series/area/area-transformer.js +19 -0
  221. package/esm/series/area/area-transformer.js.map +1 -1
  222. package/esm/series/area/area.d.ts +0 -1
  223. package/esm/series/area/area.js +1 -18
  224. package/esm/series/area/area.js.map +1 -1
  225. package/esm/series/bar/bar.js +1 -1
  226. package/esm/series/bar/bar.js.map +1 -1
  227. package/esm/series/base/base-series-transformer.js +1 -2
  228. package/esm/series/base/base-series-transformer.js.map +1 -1
  229. package/esm/series/base/base-series.js +13 -12
  230. package/esm/series/base/base-series.js.map +1 -1
  231. package/esm/series/cartesian/cartesian.js +3 -2
  232. package/esm/series/cartesian/cartesian.js.map +1 -1
  233. package/esm/series/correlation/correlation.js +1 -1
  234. package/esm/series/correlation/correlation.js.map +1 -1
  235. package/esm/series/mixin/line-mixin.js +1 -1
  236. package/esm/series/mixin/line-mixin.js.map +1 -1
  237. package/esm/series/pie/3d/pie-3d.js +1 -1
  238. package/esm/series/pie/3d/pie-3d.js.map +1 -1
  239. package/esm/series/pie/pie.js +7 -7
  240. package/esm/series/pie/pie.js.map +1 -1
  241. package/esm/series/polar/polar.js +1 -1
  242. package/esm/series/polar/polar.js.map +1 -1
  243. package/esm/series/radar/animation.js +1 -1
  244. package/esm/series/radar/animation.js.map +1 -1
  245. package/esm/series/sankey/sankey.js +1 -1
  246. package/esm/series/sankey/sankey.js.map +1 -1
  247. package/esm/series/sunburst/sunburst.js +2 -2
  248. package/esm/series/sunburst/sunburst.js.map +1 -1
  249. package/esm/series/word-cloud/base.js +3 -3
  250. package/esm/series/word-cloud/base.js.map +1 -1
  251. package/esm/theme/builtin/index.js +2 -1
  252. package/esm/theme/builtin/index.js.map +1 -1
  253. package/esm/typings/layout.d.ts +1 -1
  254. package/esm/typings/layout.js.map +1 -1
  255. package/package.json +14 -14
  256. package/cjs/theme/builtin/common-mobile/component/axis/band-axis.d.ts +0 -2
  257. package/cjs/theme/builtin/common-mobile/component/axis/band-axis.js +0 -22
  258. package/cjs/theme/builtin/common-mobile/component/axis/band-axis.js.map +0 -1
  259. package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.d.ts +0 -4
  260. package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.js +0 -40
  261. package/cjs/theme/builtin/common-mobile/component/axis/cartesian-axis.js.map +0 -1
  262. package/cjs/theme/builtin/common-mobile/component/axis/common-axis.d.ts +0 -2
  263. package/cjs/theme/builtin/common-mobile/component/axis/common-axis.js +0 -42
  264. package/cjs/theme/builtin/common-mobile/component/axis/common-axis.js.map +0 -1
  265. package/cjs/theme/builtin/common-mobile/component/axis/linear-axis.d.ts +0 -2
  266. package/cjs/theme/builtin/common-mobile/component/axis/linear-axis.js +0 -22
  267. package/cjs/theme/builtin/common-mobile/component/axis/linear-axis.js.map +0 -1
  268. package/cjs/theme/builtin/common-mobile/component/axis/polar-axis.d.ts +0 -3
  269. package/cjs/theme/builtin/common-mobile/component/axis/polar-axis.js +0 -25
  270. package/cjs/theme/builtin/common-mobile/component/axis/polar-axis.js.map +0 -1
  271. package/cjs/theme/builtin/common-mobile/component/crosshair.d.ts +0 -2
  272. package/cjs/theme/builtin/common-mobile/component/crosshair.js +0 -39
  273. package/cjs/theme/builtin/common-mobile/component/crosshair.js.map +0 -1
  274. package/cjs/theme/builtin/common-mobile/component/data-zoom.d.ts +0 -2
  275. package/cjs/theme/builtin/common-mobile/component/data-zoom.js +0 -40
  276. package/cjs/theme/builtin/common-mobile/component/data-zoom.js.map +0 -1
  277. package/cjs/theme/builtin/common-mobile/component/index.d.ts +0 -2
  278. package/cjs/theme/builtin/common-mobile/component/index.js +0 -34
  279. package/cjs/theme/builtin/common-mobile/component/index.js.map +0 -1
  280. package/cjs/theme/builtin/common-mobile/component/indicator.d.ts +0 -2
  281. package/cjs/theme/builtin/common-mobile/component/indicator.js +0 -23
  282. package/cjs/theme/builtin/common-mobile/component/indicator.js.map +0 -1
  283. package/cjs/theme/builtin/common-mobile/component/legend/color-legend.d.ts +0 -2
  284. package/cjs/theme/builtin/common-mobile/component/legend/color-legend.js +0 -23
  285. package/cjs/theme/builtin/common-mobile/component/legend/color-legend.js.map +0 -1
  286. package/cjs/theme/builtin/common-mobile/component/legend/continuous.d.ts +0 -2
  287. package/cjs/theme/builtin/common-mobile/component/legend/continuous.js +0 -44
  288. package/cjs/theme/builtin/common-mobile/component/legend/continuous.js.map +0 -1
  289. package/cjs/theme/builtin/common-mobile/component/legend/discrete-legend.d.ts +0 -2
  290. package/cjs/theme/builtin/common-mobile/component/legend/discrete-legend.js +0 -39
  291. package/cjs/theme/builtin/common-mobile/component/legend/discrete-legend.js.map +0 -1
  292. package/cjs/theme/builtin/common-mobile/component/legend/size-legend.d.ts +0 -2
  293. package/cjs/theme/builtin/common-mobile/component/legend/size-legend.js +0 -23
  294. package/cjs/theme/builtin/common-mobile/component/legend/size-legend.js.map +0 -1
  295. package/cjs/theme/builtin/common-mobile/component/map-label.d.ts +0 -2
  296. package/cjs/theme/builtin/common-mobile/component/map-label.js +0 -39
  297. package/cjs/theme/builtin/common-mobile/component/map-label.js.map +0 -1
  298. package/cjs/theme/builtin/common-mobile/component/mark-area.d.ts +0 -2
  299. package/cjs/theme/builtin/common-mobile/component/mark-area.js +0 -24
  300. package/cjs/theme/builtin/common-mobile/component/mark-area.js.map +0 -1
  301. package/cjs/theme/builtin/common-mobile/component/mark-line.d.ts +0 -2
  302. package/cjs/theme/builtin/common-mobile/component/mark-line.js +0 -33
  303. package/cjs/theme/builtin/common-mobile/component/mark-line.js.map +0 -1
  304. package/cjs/theme/builtin/common-mobile/component/mark-point.d.ts +0 -2
  305. package/cjs/theme/builtin/common-mobile/component/mark-point.js +0 -19
  306. package/cjs/theme/builtin/common-mobile/component/mark-point.js.map +0 -1
  307. package/cjs/theme/builtin/common-mobile/component/player.d.ts +0 -2
  308. package/cjs/theme/builtin/common-mobile/component/player.js +0 -51
  309. package/cjs/theme/builtin/common-mobile/component/player.js.map +0 -1
  310. package/cjs/theme/builtin/common-mobile/component/poptip.d.ts +0 -2
  311. package/cjs/theme/builtin/common-mobile/component/poptip.js +0 -25
  312. package/cjs/theme/builtin/common-mobile/component/poptip.js.map +0 -1
  313. package/cjs/theme/builtin/common-mobile/component/title.d.ts +0 -2
  314. package/cjs/theme/builtin/common-mobile/component/title.js +0 -23
  315. package/cjs/theme/builtin/common-mobile/component/title.js.map +0 -1
  316. package/cjs/theme/builtin/common-mobile/component/tooltip.d.ts +0 -2
  317. package/cjs/theme/builtin/common-mobile/component/tooltip.js +0 -43
  318. package/cjs/theme/builtin/common-mobile/component/tooltip.js.map +0 -1
  319. package/cjs/theme/builtin/common-mobile/component/total-label.d.ts +0 -2
  320. package/cjs/theme/builtin/common-mobile/component/total-label.js +0 -16
  321. package/cjs/theme/builtin/common-mobile/component/total-label.js.map +0 -1
  322. package/cjs/theme/builtin/common-mobile/constants.d.ts +0 -2
  323. package/cjs/theme/builtin/common-mobile/constants.js +0 -23
  324. package/cjs/theme/builtin/common-mobile/constants.js.map +0 -1
  325. package/cjs/theme/builtin/common-mobile/mark.d.ts +0 -3
  326. package/cjs/theme/builtin/common-mobile/mark.js +0 -35
  327. package/cjs/theme/builtin/common-mobile/mark.js.map +0 -1
  328. package/cjs/theme/builtin/dark-mobile/index.d.ts +0 -2
  329. package/cjs/theme/builtin/dark-mobile/index.js +0 -18
  330. package/cjs/theme/builtin/dark-mobile/index.js.map +0 -1
  331. package/cjs/theme/builtin/light-mobile/index.d.ts +0 -2
  332. package/cjs/theme/builtin/light-mobile/index.js +0 -18
  333. package/cjs/theme/builtin/light-mobile/index.js.map +0 -1
  334. package/esm/theme/builtin/common-mobile/component/axis/band-axis.d.ts +0 -2
  335. package/esm/theme/builtin/common-mobile/component/axis/band-axis.js +0 -18
  336. package/esm/theme/builtin/common-mobile/component/axis/band-axis.js.map +0 -1
  337. package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.d.ts +0 -4
  338. package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.js +0 -38
  339. package/esm/theme/builtin/common-mobile/component/axis/cartesian-axis.js.map +0 -1
  340. package/esm/theme/builtin/common-mobile/component/axis/common-axis.d.ts +0 -2
  341. package/esm/theme/builtin/common-mobile/component/axis/common-axis.js +0 -36
  342. package/esm/theme/builtin/common-mobile/component/axis/common-axis.js.map +0 -1
  343. package/esm/theme/builtin/common-mobile/component/axis/linear-axis.d.ts +0 -2
  344. package/esm/theme/builtin/common-mobile/component/axis/linear-axis.js +0 -18
  345. package/esm/theme/builtin/common-mobile/component/axis/linear-axis.js.map +0 -1
  346. package/esm/theme/builtin/common-mobile/component/axis/polar-axis.d.ts +0 -3
  347. package/esm/theme/builtin/common-mobile/component/axis/polar-axis.js +0 -23
  348. package/esm/theme/builtin/common-mobile/component/axis/polar-axis.js.map +0 -1
  349. package/esm/theme/builtin/common-mobile/component/crosshair.d.ts +0 -2
  350. package/esm/theme/builtin/common-mobile/component/crosshair.js +0 -35
  351. package/esm/theme/builtin/common-mobile/component/crosshair.js.map +0 -1
  352. package/esm/theme/builtin/common-mobile/component/data-zoom.d.ts +0 -2
  353. package/esm/theme/builtin/common-mobile/component/data-zoom.js +0 -34
  354. package/esm/theme/builtin/common-mobile/component/data-zoom.js.map +0 -1
  355. package/esm/theme/builtin/common-mobile/component/index.d.ts +0 -2
  356. package/esm/theme/builtin/common-mobile/component/index.js +0 -66
  357. package/esm/theme/builtin/common-mobile/component/index.js.map +0 -1
  358. package/esm/theme/builtin/common-mobile/component/indicator.d.ts +0 -2
  359. package/esm/theme/builtin/common-mobile/component/indicator.js +0 -17
  360. package/esm/theme/builtin/common-mobile/component/indicator.js.map +0 -1
  361. package/esm/theme/builtin/common-mobile/component/legend/color-legend.d.ts +0 -2
  362. package/esm/theme/builtin/common-mobile/component/legend/color-legend.js +0 -17
  363. package/esm/theme/builtin/common-mobile/component/legend/color-legend.js.map +0 -1
  364. package/esm/theme/builtin/common-mobile/component/legend/continuous.d.ts +0 -2
  365. package/esm/theme/builtin/common-mobile/component/legend/continuous.js +0 -38
  366. package/esm/theme/builtin/common-mobile/component/legend/continuous.js.map +0 -1
  367. package/esm/theme/builtin/common-mobile/component/legend/discrete-legend.d.ts +0 -2
  368. package/esm/theme/builtin/common-mobile/component/legend/discrete-legend.js +0 -33
  369. package/esm/theme/builtin/common-mobile/component/legend/discrete-legend.js.map +0 -1
  370. package/esm/theme/builtin/common-mobile/component/legend/size-legend.d.ts +0 -2
  371. package/esm/theme/builtin/common-mobile/component/legend/size-legend.js +0 -17
  372. package/esm/theme/builtin/common-mobile/component/legend/size-legend.js.map +0 -1
  373. package/esm/theme/builtin/common-mobile/component/map-label.d.ts +0 -2
  374. package/esm/theme/builtin/common-mobile/component/map-label.js +0 -33
  375. package/esm/theme/builtin/common-mobile/component/map-label.js.map +0 -1
  376. package/esm/theme/builtin/common-mobile/component/mark-area.d.ts +0 -2
  377. package/esm/theme/builtin/common-mobile/component/mark-area.js +0 -18
  378. package/esm/theme/builtin/common-mobile/component/mark-area.js.map +0 -1
  379. package/esm/theme/builtin/common-mobile/component/mark-line.d.ts +0 -2
  380. package/esm/theme/builtin/common-mobile/component/mark-line.js +0 -27
  381. package/esm/theme/builtin/common-mobile/component/mark-line.js.map +0 -1
  382. package/esm/theme/builtin/common-mobile/component/mark-point.d.ts +0 -2
  383. package/esm/theme/builtin/common-mobile/component/mark-point.js +0 -15
  384. package/esm/theme/builtin/common-mobile/component/mark-point.js.map +0 -1
  385. package/esm/theme/builtin/common-mobile/component/player.d.ts +0 -2
  386. package/esm/theme/builtin/common-mobile/component/player.js +0 -47
  387. package/esm/theme/builtin/common-mobile/component/player.js.map +0 -1
  388. package/esm/theme/builtin/common-mobile/component/poptip.d.ts +0 -2
  389. package/esm/theme/builtin/common-mobile/component/poptip.js +0 -19
  390. package/esm/theme/builtin/common-mobile/component/poptip.js.map +0 -1
  391. package/esm/theme/builtin/common-mobile/component/title.d.ts +0 -2
  392. package/esm/theme/builtin/common-mobile/component/title.js +0 -17
  393. package/esm/theme/builtin/common-mobile/component/title.js.map +0 -1
  394. package/esm/theme/builtin/common-mobile/component/tooltip.d.ts +0 -2
  395. package/esm/theme/builtin/common-mobile/component/tooltip.js +0 -37
  396. package/esm/theme/builtin/common-mobile/component/tooltip.js.map +0 -1
  397. package/esm/theme/builtin/common-mobile/component/total-label.d.ts +0 -2
  398. package/esm/theme/builtin/common-mobile/component/total-label.js +0 -10
  399. package/esm/theme/builtin/common-mobile/component/total-label.js.map +0 -1
  400. package/esm/theme/builtin/common-mobile/constants.d.ts +0 -2
  401. package/esm/theme/builtin/common-mobile/constants.js +0 -19
  402. package/esm/theme/builtin/common-mobile/constants.js.map +0 -1
  403. package/esm/theme/builtin/common-mobile/mark.d.ts +0 -3
  404. package/esm/theme/builtin/common-mobile/mark.js +0 -31
  405. package/esm/theme/builtin/common-mobile/mark.js.map +0 -1
  406. package/esm/theme/builtin/dark-mobile/index.d.ts +0 -2
  407. package/esm/theme/builtin/dark-mobile/index.js +0 -16
  408. package/esm/theme/builtin/dark-mobile/index.js.map +0 -1
  409. package/esm/theme/builtin/light-mobile/index.d.ts +0 -2
  410. package/esm/theme/builtin/light-mobile/index.js +0 -16
  411. package/esm/theme/builtin/light-mobile/index.js.map +0 -1
@@ -11,25 +11,118 @@ class Layout {
11
11
  this.leftCurrent = 0, this.topCurrent = 0, this.rightCurrent = 0, this.bottomCurrent = 0,
12
12
  this._onError = null == ctx ? void 0 : ctx.onError;
13
13
  }
14
- layoutItems(_chart, items, chartLayoutRect, chartViewBox) {
14
+ _layoutInit(_chart, items, chartLayoutRect, chartViewBox) {
15
15
  this._chartLayoutRect = chartLayoutRect, this._chartViewBox = chartViewBox, this.leftCurrent = chartLayoutRect.x,
16
16
  this.topCurrent = chartLayoutRect.y, this.rightCurrent = chartLayoutRect.x + chartLayoutRect.width,
17
- this.bottomCurrent = chartLayoutRect.height + chartLayoutRect.y, items.sort(((a, b) => b.layoutLevel - a.layoutLevel)),
17
+ this.bottomCurrent = chartLayoutRect.height + chartLayoutRect.y, items.sort(((a, b) => b.layoutLevel - a.layoutLevel));
18
+ }
19
+ _layoutNormalItems(items) {
18
20
  this.layoutNormalInlineItems(items.filter((x => "normal-inline" === x.layoutType))),
19
21
  this.layoutNormalItems(items.filter((x => "normal" === x.layoutType)));
22
+ }
23
+ _groupItems(items) {
24
+ const regionItems = items.filter((x => "region" === x.layoutType)), relativeItems = items.filter((x => "region-relative" === x.layoutType)), relativeOverlapItems = items.filter((x => "region-relative-overlap" === x.layoutType)), allRelatives = relativeItems.concat(relativeOverlapItems), overlapItems = {
25
+ left: {
26
+ items: [],
27
+ rect: {
28
+ width: 0,
29
+ height: 0
30
+ }
31
+ },
32
+ right: {
33
+ items: [],
34
+ rect: {
35
+ width: 0,
36
+ height: 0
37
+ }
38
+ },
39
+ top: {
40
+ items: [],
41
+ rect: {
42
+ width: 0,
43
+ height: 0
44
+ }
45
+ },
46
+ bottom: {
47
+ items: [],
48
+ rect: {
49
+ width: 0,
50
+ height: 0
51
+ }
52
+ },
53
+ z: {
54
+ items: [],
55
+ rect: {
56
+ width: 0,
57
+ height: 0
58
+ }
59
+ }
60
+ };
61
+ return relativeOverlapItems.forEach((i => {
62
+ overlapItems[i.layoutOrient].items.push(i);
63
+ })), {
64
+ regionItems: regionItems,
65
+ relativeItems: relativeItems,
66
+ relativeOverlapItems: relativeOverlapItems,
67
+ allRelatives: allRelatives,
68
+ overlapItems: overlapItems
69
+ };
70
+ }
71
+ layoutItems(_chart, items, chartLayoutRect, chartViewBox) {
72
+ this._layoutInit(_chart, items, chartLayoutRect, chartViewBox), this._layoutNormalItems(items);
20
73
  const layoutTemp = {
21
74
  left: this.leftCurrent,
22
75
  top: this.topCurrent,
23
76
  right: this.rightCurrent,
24
77
  bottom: this.bottomCurrent
25
- }, regionItems = items.filter((x => "region" === x.layoutType)), relativeItems = items.filter((x => "region-relative" === x.layoutType));
26
- if (this.layoutRegionItems(regionItems, relativeItems), relativeItems.some((i => i.autoIndent))) {
27
- const {top: top, bottom: bottom, left: left, right: right} = this._checkAutoIndent(relativeItems, layoutTemp);
78
+ }, {regionItems: regionItems, relativeItems: relativeItems, relativeOverlapItems: relativeOverlapItems, allRelatives: allRelatives, overlapItems: overlapItems} = this._groupItems(items);
79
+ this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems),
80
+ this._processAutoIndent(regionItems, relativeItems, relativeOverlapItems, overlapItems, allRelatives, layoutTemp),
81
+ this.layoutAbsoluteItems(items.filter((x => "absolute" === x.layoutType)));
82
+ }
83
+ _processAutoIndent(regionItems, relativeItems, relativeOverlapItems, overlapItems = {
84
+ left: {
85
+ items: [],
86
+ rect: {
87
+ width: 0,
88
+ height: 0
89
+ }
90
+ },
91
+ right: {
92
+ items: [],
93
+ rect: {
94
+ width: 0,
95
+ height: 0
96
+ }
97
+ },
98
+ top: {
99
+ items: [],
100
+ rect: {
101
+ width: 0,
102
+ height: 0
103
+ }
104
+ },
105
+ bottom: {
106
+ items: [],
107
+ rect: {
108
+ width: 0,
109
+ height: 0
110
+ }
111
+ },
112
+ z: {
113
+ items: [],
114
+ rect: {
115
+ width: 0,
116
+ height: 0
117
+ }
118
+ }
119
+ }, allRelatives, layoutTemp) {
120
+ if (allRelatives.some((i => i.autoIndent))) {
121
+ const {top: top, bottom: bottom, left: left, right: right} = this._checkAutoIndent(allRelatives, layoutTemp);
28
122
  (top || bottom || left || right) && (this.topCurrent = layoutTemp.top + top, this.bottomCurrent = layoutTemp.bottom - bottom,
29
123
  this.leftCurrent = layoutTemp.left + left, this.rightCurrent = layoutTemp.right - right,
30
- this.layoutRegionItems(regionItems, relativeItems));
124
+ this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems));
31
125
  }
32
- this.layoutAbsoluteItems(items.filter((x => "absolute" === x.layoutType)));
33
126
  }
34
127
  layoutNormalItems(normalItems) {
35
128
  normalItems.forEach((item => {
@@ -51,32 +144,46 @@ class Layout {
51
144
  }
52
145
  layoutNormalInlineItems(normalItems) {
53
146
  const leftItems = normalItems.filter((item => "left" === item.layoutOrient)), rightItems = normalItems.filter((item => "right" === item.layoutOrient)), topItems = normalItems.filter((item => "top" === item.layoutOrient)), bottomItems = normalItems.filter((item => "bottom" === item.layoutOrient)), limitWidth = this._chartLayoutRect.width + this._chartLayoutRect.x, limitHeight = this._chartLayoutRect.height + this._chartLayoutRect.y;
54
- (0, util_1.layoutLeftInlineItems)(leftItems, this, limitHeight), (0, util_1.layoutTopInlineItems)(topItems, this, limitWidth),
55
- (0, util_1.layoutRightInlineItems)(rightItems, this, limitHeight), (0, util_1.layoutBottomInlineItems)(bottomItems, this, limitWidth);
147
+ leftItems.length && (0, util_1.layoutLeftInlineItems)(leftItems, this, limitHeight),
148
+ topItems.length && (0, util_1.layoutTopInlineItems)(topItems, this, limitWidth),
149
+ rightItems.length && (0, util_1.layoutRightInlineItems)(rightItems, this, limitHeight),
150
+ bottomItems.length && (0, util_1.layoutBottomInlineItems)(bottomItems, this, limitWidth);
56
151
  }
57
- layoutRegionItems(regionItems, regionRelativeItems) {
58
- let regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent, regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;
59
- regionRelativeItems.filter((x => "left" === x.layoutOrient || "right" === x.layoutOrient)).forEach((item => {
152
+ _layoutRelativeOverlap(orient, info) {
153
+ info.items.forEach((item => {
60
154
  const layoutRect = this.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
61
- item.setLayoutRect({
62
- width: rect.width
63
- }), "left" === item.layoutOrient ? (item.setLayoutStartPosition({
155
+ info.rect.width = Math.max(rect.width, info.rect.width), info.rect.height = Math.max(rect.height, info.rect.height);
156
+ })), info.items.forEach((item => {
157
+ item.setLayoutRect(info.rect), "left" === orient ? item.setLayoutStartPosition({
64
158
  x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft
65
- }), this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight) : "right" === item.layoutOrient && (this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight,
66
- item.setLayoutStartPosition({
159
+ }) : "right" === orient ? item.setLayoutStartPosition({
67
160
  x: this.rightCurrent + item.layoutOffsetX + item.layoutPaddingLeft
68
- }));
69
- })), regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent, regionRelativeItems.filter((x => "top" === x.layoutOrient || "bottom" === x.layoutOrient)).forEach((item => {
70
- const layoutRect = this.getItemComputeLayoutRect(item), rect = item.computeBoundsInRect(layoutRect);
71
- item.setLayoutRect({
72
- height: rect.height
73
- }), "top" === item.layoutOrient ? (item.setLayoutStartPosition({
74
- y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop
75
- }), this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom) : "bottom" === item.layoutOrient && (this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom,
76
- item.setLayoutStartPosition({
77
- y: this.bottomCurrent + item.layoutOffsetY + item.layoutPaddingTop
78
- }));
79
- })), regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;
161
+ }) : "top" === orient ? item.setLayoutStartPosition({
162
+ x: this.topCurrent + item.layoutOffsetX + item.layoutPaddingLeft
163
+ }) : item.setLayoutStartPosition({
164
+ x: this.bottomCurrent + item.layoutOffsetX + item.layoutPaddingLeft
165
+ });
166
+ })), "left" === orient ? this.leftCurrent += info.rect.width : "right" === orient ? this.rightCurrent -= info.rect.width : "top" === orient ? this.topCurrent += info.rect.height : this.bottomCurrent -= info.rect.height;
167
+ }
168
+ _layoutRelativeItem(item, layoutRect) {
169
+ const rect = item.computeBoundsInRect(layoutRect);
170
+ "left" === item.layoutOrient || "right" === item.layoutOrient ? item.setLayoutRect({
171
+ width: rect.width
172
+ }) : item.setLayoutRect({
173
+ height: rect.height
174
+ }), "left" === item.layoutOrient ? (item.setLayoutStartPosition({
175
+ x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft
176
+ }), this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight) : "right" === item.layoutOrient ? (this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight,
177
+ item.setLayoutStartPosition({
178
+ x: this.rightCurrent + item.layoutOffsetX + item.layoutPaddingLeft
179
+ })) : "top" === item.layoutOrient ? (item.setLayoutStartPosition({
180
+ y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop
181
+ }), this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom) : "bottom" === item.layoutOrient && (this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom,
182
+ item.setLayoutStartPosition({
183
+ y: this.bottomCurrent + item.layoutOffsetY + item.layoutPaddingTop
184
+ }));
185
+ }
186
+ _layoutRegionItem(regionItems, regionRelativeTotalWidth, regionRelativeTotalHeight) {
80
187
  const regionWidth = Math.max(Math.min(regionRelativeTotalWidth, ...regionItems.map((region => {
81
188
  var _a;
82
189
  return null !== (_a = region.maxWidth) && void 0 !== _a ? _a : Number.MAX_VALUE;
@@ -84,7 +191,7 @@ class Layout {
84
191
  var _a;
85
192
  return null !== (_a = region.maxHeight) && void 0 !== _a ? _a : Number.MAX_VALUE;
86
193
  }))), 0);
87
- regionItems.forEach((region => {
194
+ return regionItems.forEach((region => {
88
195
  region.setLayoutRect({
89
196
  width: regionWidth,
90
197
  height: regionHeight
@@ -92,22 +199,73 @@ class Layout {
92
199
  x: this.leftCurrent + region.layoutOffsetX + region.layoutPaddingLeft,
93
200
  y: this.topCurrent + region.layoutOffsetY + region.layoutPaddingTop
94
201
  });
95
- })), regionRelativeItems.forEach((item => {
202
+ })), {
203
+ regionHeight: regionHeight,
204
+ regionWidth: regionWidth
205
+ };
206
+ }
207
+ layoutRegionItems(regionItems, regionRelativeItems, regionRelativeOverlapItems, overlapItems = {
208
+ left: {
209
+ items: [],
210
+ rect: {
211
+ width: 0,
212
+ height: 0
213
+ }
214
+ },
215
+ right: {
216
+ items: [],
217
+ rect: {
218
+ width: 0,
219
+ height: 0
220
+ }
221
+ },
222
+ top: {
223
+ items: [],
224
+ rect: {
225
+ width: 0,
226
+ height: 0
227
+ }
228
+ },
229
+ bottom: {
230
+ items: [],
231
+ rect: {
232
+ width: 0,
233
+ height: 0
234
+ }
235
+ },
236
+ z: {
237
+ items: [],
238
+ rect: {
239
+ width: 0,
240
+ height: 0
241
+ }
242
+ }
243
+ }) {
244
+ let regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent, regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;
245
+ regionRelativeItems.filter((x => "left" === x.layoutOrient || "right" === x.layoutOrient)).forEach((item => {
246
+ this._layoutRelativeItem(item, this.getItemComputeLayoutRect(item));
247
+ })), this._layoutRelativeOverlap("left", overlapItems.left), this._layoutRelativeOverlap("right", overlapItems.right),
248
+ regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent, regionRelativeItems.filter((x => "top" === x.layoutOrient || "bottom" === x.layoutOrient)).forEach((item => {
249
+ this._layoutRelativeItem(item, this.getItemComputeLayoutRect(item));
250
+ })), this._layoutRelativeOverlap("top", overlapItems.top), this._layoutRelativeOverlap("bottom", overlapItems.bottom),
251
+ regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;
252
+ const {regionWidth: regionWidth, regionHeight: regionHeight} = this._layoutRegionItem(regionItems, regionRelativeTotalWidth, regionRelativeTotalHeight);
253
+ regionRelativeItems.concat(regionRelativeOverlapItems).forEach((item => {
96
254
  if ([ "left", "right" ].includes(item.layoutOrient)) {
97
255
  const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);
98
256
  item.setLayoutRect({
99
- height: relativeRegion.layoutExcludeIndent.height
257
+ height: relativeRegion.getLayoutRect().height
100
258
  }), item.setLayoutStartPosition({
101
- y: relativeRegion.layoutExcludeIndent.y + item.layoutOffsetY + item.layoutPaddingTop
259
+ y: relativeRegion.getLayoutStartPoint().y + item.layoutOffsetY + item.layoutPaddingTop
102
260
  }), "right" === item.layoutOrient && item.setLayoutStartPosition({
103
261
  x: item.getLayoutStartPoint().x + regionWidth - regionRelativeTotalWidth
104
262
  });
105
263
  } else if ([ "top", "bottom" ].includes(item.layoutOrient)) {
106
264
  const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);
107
265
  item.setLayoutRect({
108
- width: relativeRegion.layoutExcludeIndent.width
266
+ width: relativeRegion.getLayoutRect().width
109
267
  }), item.setLayoutStartPosition({
110
- x: relativeRegion.layoutExcludeIndent.x + item.layoutOffsetX + item.layoutPaddingLeft
268
+ x: relativeRegion.getLayoutStartPoint().x + item.layoutOffsetX + item.layoutPaddingLeft
111
269
  }), "bottom" === item.layoutOrient && item.setLayoutStartPosition({
112
270
  y: item.getLayoutStartPoint().y + regionHeight - regionRelativeTotalHeight
113
271
  });
@@ -157,4 +315,4 @@ class Layout {
157
315
  }
158
316
 
159
317
  exports.Layout = Layout, Layout.type = "base";
160
- //# sourceMappingURL=base-layout.js.map
318
+ //# sourceMappingURL=base-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/base-layout.ts"],"names":[],"mappings":"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","file":"base-layout.js","sourcesContent":["import type { utilFunctionCtx } from '../typings/params';\nimport type { IChart } from '../chart/interface/chart';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { IBaseLayout, ILayoutItem } from './interface';\nimport type { IPadding, IRect } from '../typings/space';\nimport { error } from '../util/debug';\nimport { layoutBottomInlineItems, layoutLeftInlineItems, layoutRightInlineItems, layoutTopInlineItems } from './util';\n\ntype LayoutSideType = {\n top: number;\n left: number;\n bottom: number;\n right: number;\n};\n\nexport class Layout implements IBaseLayout {\n static type = 'base';\n\n leftCurrent: number = 0;\n topCurrent: number = 0;\n rightCurrent: number = 0;\n bottomCurrent: number = 0;\n\n _chartLayoutRect!: IRect;\n _chartViewBox!: IBoundsLike;\n\n protected _onError: (msg: string) => void;\n\n constructor(_spec?: unknown, ctx?: utilFunctionCtx) {\n this._onError = ctx?.onError;\n }\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n this._chartLayoutRect = chartLayoutRect;\n this._chartViewBox = chartViewBox;\n this.leftCurrent = chartLayoutRect.x;\n this.topCurrent = chartLayoutRect.y;\n this.rightCurrent = chartLayoutRect.x + chartLayoutRect.width;\n this.bottomCurrent = chartLayoutRect.height + chartLayoutRect.y;\n // 越大越先处理,进行排序调整,利用原地排序特性,排序会受 level 和传进来的数组顺序共同影响\n items.sort((a, b) => b.layoutLevel - a.layoutLevel);\n\n this.layoutNormalInlineItems(items.filter(x => x.layoutType === 'normal-inline'));\n this.layoutNormalItems(items.filter(x => x.layoutType === 'normal'));\n\n const layoutTemp: LayoutSideType = {\n left: this.leftCurrent,\n top: this.topCurrent,\n right: this.rightCurrent,\n bottom: this.bottomCurrent\n };\n const regionItems = items.filter(x => x.layoutType === 'region');\n const relativeItems = items.filter(x => x.layoutType === 'region-relative');\n // 有元素开启了自动缩进\n // TODO:目前只有普通占位布局下的 region-relative 元素支持\n // 主要考虑常规元素超出画布一般为用户个性设置,而且可以设置padding规避裁剪,不需要使用自动缩进\n this.layoutRegionItems(regionItems, relativeItems);\n if (relativeItems.some(i => i.autoIndent)) {\n // check auto indent\n const { top, bottom, left, right } = this._checkAutoIndent(relativeItems, layoutTemp);\n // 如果出现了需要自动缩进的场景 则基于缩进再次布局\n if (top || bottom || left || right) {\n // set outer bounds to padding\n this.topCurrent = layoutTemp.top + top;\n this.bottomCurrent = layoutTemp.bottom - bottom;\n this.leftCurrent = layoutTemp.left + left;\n this.rightCurrent = layoutTemp.right - right;\n // reLayout\n this.layoutRegionItems(regionItems, relativeItems);\n }\n }\n\n this.layoutAbsoluteItems(items.filter(x => x.layoutType === 'absolute'));\n }\n\n protected layoutNormalItems(normalItems: ILayoutItem[]): void {\n normalItems.forEach(item => {\n const layoutRect = this.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n\n if (item.layoutOrient === 'left') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'top') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n } else if (item.layoutOrient === 'right') {\n item.setLayoutStartPosition({\n x: this.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'bottom') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingRight,\n y: this.bottomCurrent + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n }\n });\n }\n\n protected layoutNormalInlineItems(normalItems: ILayoutItem[]): void {\n const leftItems = normalItems.filter(item => item.layoutOrient === 'left');\n const rightItems = normalItems.filter(item => item.layoutOrient === 'right');\n const topItems = normalItems.filter(item => item.layoutOrient === 'top');\n const bottomItems = normalItems.filter(item => item.layoutOrient === 'bottom');\n const limitWidth = this._chartLayoutRect.width + this._chartLayoutRect.x;\n const limitHeight = this._chartLayoutRect.height + this._chartLayoutRect.y;\n\n // 同 normal,按照 left、top、right、bottom 的顺序进行布局\n // 各个方向上再按照 position 进行分组布局,顺序为 start middle end\n layoutLeftInlineItems(leftItems, this, limitHeight);\n layoutTopInlineItems(topItems, this, limitWidth);\n layoutRightInlineItems(rightItems, this, limitHeight);\n layoutBottomInlineItems(bottomItems, this, limitWidth);\n }\n\n /**\n *\n * 1. 补全 region-relative rect 和部分 layoutStartPoint\n * 2. 补全 region rect 和 layoutStartPoint\n *\n */\n protected layoutRegionItems(regionItems: ILayoutItem[], regionRelativeItems: ILayoutItem[]): void {\n let regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent;\n let regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;\n\n regionRelativeItems\n .filter(x => x.layoutOrient === 'left' || x.layoutOrient === 'right')\n .forEach(item => {\n const layoutRect = this.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect({ width: rect.width });\n // 减少尺寸\n if (item.layoutOrient === 'left') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'right') {\n this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: this.rightCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n }\n });\n\n regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent;\n\n regionRelativeItems\n .filter(x => x.layoutOrient === 'top' || x.layoutOrient === 'bottom')\n .forEach(item => {\n const layoutRect = this.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect({ height: rect.height });\n\n // 减少尺寸\n if (item.layoutOrient === 'top') {\n item.setLayoutStartPosition({\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n } else if (item.layoutOrient === 'bottom') {\n this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n item.setLayoutStartPosition({\n y: this.bottomCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n }\n });\n // 此时得到height\n regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;\n\n // region 处理\n const regionWidth = Math.max(\n Math.min(regionRelativeTotalWidth, ...regionItems.map(region => region.maxWidth ?? Number.MAX_VALUE)),\n 0\n );\n const regionHeight = Math.max(\n Math.min(regionRelativeTotalHeight, ...regionItems.map(region => region.maxHeight ?? Number.MAX_VALUE)),\n 0\n );\n regionItems.forEach(region => {\n region.setLayoutRect({\n width: regionWidth,\n height: regionHeight\n });\n\n region.setLayoutStartPosition({\n x: this.leftCurrent + region.layoutOffsetX + region.layoutPaddingLeft,\n y: this.topCurrent + region.layoutOffsetY + region.layoutPaddingTop\n });\n });\n\n // region-relative 特殊处理\n regionRelativeItems.forEach(item => {\n // 处理特殊元素的宽高\n if (['left', 'right'].includes(item.layoutOrient)) {\n // 用户有配置的话,已经处理过,不需要再次处理\n const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);\n\n item.setLayoutRect({\n height: relativeRegion.layoutExcludeIndent.height\n });\n item.setLayoutStartPosition({\n y: relativeRegion.layoutExcludeIndent.y + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n if (item.layoutOrient === 'right') {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x + regionWidth - regionRelativeTotalWidth\n });\n }\n } else if (['top', 'bottom'].includes(item.layoutOrient)) {\n const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);\n\n item.setLayoutRect({\n width: relativeRegion.layoutExcludeIndent.width\n });\n\n item.setLayoutStartPosition({\n x: relativeRegion.layoutExcludeIndent.x + item.layoutOffsetX + item.layoutPaddingLeft\n });\n\n if (item.layoutOrient === 'bottom') {\n item.setLayoutStartPosition({\n y: item.getLayoutStartPoint().y + regionHeight - regionRelativeTotalHeight\n });\n }\n }\n });\n }\n\n /**\n * 再找出对 absolute 元素,无需排序,在 compiler 层需要排序放置\n *\n * 重要:absolute 默认依据 region 进行相对依赖\n */\n protected layoutAbsoluteItems(absoluteItems: ILayoutItem[]) {\n absoluteItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(this._chartLayoutRect);\n });\n }\n\n // 对普通布局来说,只出一个 region 绑定\n filterRegionsWithID(items: ILayoutItem[], id: number): ILayoutItem {\n const target = items.find(x => x.getModelId() === id);\n if (!target) {\n (this._onError ?? error)('can not find target region item, invalid id');\n }\n return target as ILayoutItem;\n }\n\n /**\n * 工具方法 根据item属性获取给item提供的布局空间\n * @param item\n */\n getItemComputeLayoutRect(item: ILayoutItem) {\n const result = {\n width: this.rightCurrent - this.leftCurrent - item.layoutPaddingLeft - item.layoutPaddingRight,\n height: this.bottomCurrent - this.topCurrent - item.layoutPaddingTop - item.layoutPaddingBottom\n };\n return result;\n }\n\n protected _checkAutoIndent(\n items: ILayoutItem[],\n layoutTemp: {\n top: number;\n left: number;\n bottom: number;\n right: number;\n }\n ): IPadding {\n const result = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n };\n items.forEach(i => {\n if (!i.getModelVisible() || !i.autoIndent) {\n return;\n }\n const vOrH = i.layoutOrient === 'left' || i.layoutOrient === 'right';\n const itemOuter = i.getLastComputeOutBounds();\n const outer = this._getOutInLayout(itemOuter, i, layoutTemp);\n if (vOrH) {\n result.top = Math.max(result.top, outer.top);\n result.bottom = Math.max(result.bottom, outer.bottom);\n } else {\n result.left = Math.max(result.left, outer.left);\n result.right = Math.max(result.right, outer.right);\n }\n });\n return result;\n }\n\n private _getOutInLayout(itemOuter: IBoundsLike, i: ILayoutItem, tempBorder: LayoutSideType): LayoutSideType {\n const { x, y } = i.getLayoutStartPoint();\n const { width, height } = i.getLayoutRect();\n\n const result: LayoutSideType = {\n left: tempBorder.left - (x - itemOuter.x1),\n right: x + width + itemOuter.x2 - tempBorder.right,\n top: tempBorder.top - (y - itemOuter.y1),\n bottom: y + height + itemOuter.y2 - tempBorder.bottom\n };\n return result;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/base-layout.ts"],"names":[],"mappings":"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","file":"base-layout.js","sourcesContent":["import type { utilFunctionCtx } from '../typings/params';\nimport type { IChart } from '../chart/interface/chart';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { IBaseLayout, ILayoutItem } from './interface';\nimport type { IOrientType, IPadding, IRect } from '../typings/space';\nimport { error } from '../util/debug';\nimport { layoutBottomInlineItems, layoutLeftInlineItems, layoutRightInlineItems, layoutTopInlineItems } from './util';\nimport type { ILayoutRect } from '../typings/layout';\n\nexport type LayoutSideType = {\n top: number;\n left: number;\n bottom: number;\n right: number;\n};\n\nexport interface IOffset {\n offsetLeft: number;\n offsetRight: number;\n offsetTop: number;\n offsetBottom: number;\n}\n\ntype overlapInfo = {\n items: ILayoutItem[];\n rect: ILayoutRect;\n};\n\nexport class Layout implements IBaseLayout {\n static type = 'base';\n\n leftCurrent: number = 0;\n topCurrent: number = 0;\n rightCurrent: number = 0;\n bottomCurrent: number = 0;\n\n _chartLayoutRect!: IRect;\n _chartViewBox!: IBoundsLike;\n\n protected _onError: (msg: string) => void;\n\n constructor(_spec?: unknown, ctx?: utilFunctionCtx) {\n this._onError = ctx?.onError;\n }\n\n protected _layoutInit(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike) {\n this._chartLayoutRect = chartLayoutRect;\n this._chartViewBox = chartViewBox;\n this.leftCurrent = chartLayoutRect.x;\n this.topCurrent = chartLayoutRect.y;\n this.rightCurrent = chartLayoutRect.x + chartLayoutRect.width;\n this.bottomCurrent = chartLayoutRect.height + chartLayoutRect.y;\n\n // 越大越先处理,进行排序调整,利用原地排序特性,排序会受 level 和传进来的数组顺序共同影响\n items.sort((a, b) => b.layoutLevel - a.layoutLevel);\n }\n\n protected _layoutNormalItems(items: ILayoutItem[]) {\n this.layoutNormalInlineItems(items.filter(x => x.layoutType === 'normal-inline'));\n this.layoutNormalItems(items.filter(x => x.layoutType === 'normal'));\n }\n\n protected _groupItems(items: ILayoutItem[]) {\n const regionItems = items.filter(x => x.layoutType === 'region');\n const relativeItems = items.filter(x => x.layoutType === 'region-relative');\n const relativeOverlapItems = items.filter(x => x.layoutType === 'region-relative-overlap');\n const allRelatives = relativeItems.concat(relativeOverlapItems);\n // 允许重叠元素 ,目前允许重叠元素认为是紧贴region的。最后布局\n const overlapItems: {\n [key in IOrientType]: overlapInfo;\n } = {\n left: { items: [], rect: { width: 0, height: 0 } },\n right: { items: [], rect: { width: 0, height: 0 } },\n top: { items: [], rect: { width: 0, height: 0 } },\n bottom: { items: [], rect: { width: 0, height: 0 } },\n z: { items: [], rect: { width: 0, height: 0 } }\n };\n relativeOverlapItems.forEach(i => {\n overlapItems[i.layoutOrient].items.push(i);\n });\n\n return {\n regionItems,\n relativeItems,\n relativeOverlapItems,\n allRelatives,\n overlapItems\n };\n }\n\n layoutItems(_chart: IChart, items: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike): void {\n // 布局初始化\n this._layoutInit(_chart, items, chartLayoutRect, chartViewBox);\n // 先布局 normal 类型的元素\n this._layoutNormalItems(items);\n // 开始布局 region 相关元素\n // 为了锁紧先保存一下当前的布局空间\n const layoutTemp: LayoutSideType = {\n left: this.leftCurrent,\n top: this.topCurrent,\n right: this.rightCurrent,\n bottom: this.bottomCurrent\n };\n const { regionItems, relativeItems, relativeOverlapItems, allRelatives, overlapItems } = this._groupItems(items);\n // 有元素开启了自动缩进\n // TODO:目前只有普通占位布局下的 region-relative 元素支持\n // 主要考虑常规元素超出画布一般为用户个性设置,而且可以设置padding规避裁剪,不需要使用自动缩进\n this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems);\n // 缩进\n this._processAutoIndent(regionItems, relativeItems, relativeOverlapItems, overlapItems, allRelatives, layoutTemp);\n\n this.layoutAbsoluteItems(items.filter(x => x.layoutType === 'absolute'));\n }\n\n protected _processAutoIndent(\n regionItems: ILayoutItem[],\n relativeItems: ILayoutItem[],\n relativeOverlapItems: ILayoutItem[],\n overlapItems: {\n [key in IOrientType]: overlapInfo;\n } = {\n left: { items: [], rect: { width: 0, height: 0 } },\n right: { items: [], rect: { width: 0, height: 0 } },\n top: { items: [], rect: { width: 0, height: 0 } },\n bottom: { items: [], rect: { width: 0, height: 0 } },\n z: { items: [], rect: { width: 0, height: 0 } }\n },\n allRelatives: ILayoutItem[],\n layoutTemp: LayoutSideType\n ): void {\n // 如果有缩进\n if (allRelatives.some(i => i.autoIndent)) {\n // check auto indent\n const { top, bottom, left, right } = this._checkAutoIndent(allRelatives, layoutTemp);\n // 如果出现了需要自动缩进的场景 则基于缩进再次布局\n if (top || bottom || left || right) {\n // set outer bounds to padding\n this.topCurrent = layoutTemp.top + top;\n this.bottomCurrent = layoutTemp.bottom - bottom;\n this.leftCurrent = layoutTemp.left + left;\n this.rightCurrent = layoutTemp.right - right;\n // reLayout\n this.layoutRegionItems(regionItems, relativeItems, relativeOverlapItems, overlapItems);\n }\n }\n }\n\n protected layoutNormalItems(normalItems: ILayoutItem[]): void {\n normalItems.forEach(item => {\n const layoutRect = this.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n item.setLayoutRect(rect);\n\n if (item.layoutOrient === 'left') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'top') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n } else if (item.layoutOrient === 'right') {\n item.setLayoutStartPosition({\n x: this.rightCurrent + item.layoutOffsetX - rect.width - item.layoutPaddingRight,\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'bottom') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingRight,\n y: this.bottomCurrent + item.layoutOffsetY - rect.height - item.layoutPaddingBottom\n });\n this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n }\n });\n }\n\n protected layoutNormalInlineItems(normalItems: ILayoutItem[]): void {\n const leftItems = normalItems.filter(item => item.layoutOrient === 'left');\n const rightItems = normalItems.filter(item => item.layoutOrient === 'right');\n const topItems = normalItems.filter(item => item.layoutOrient === 'top');\n const bottomItems = normalItems.filter(item => item.layoutOrient === 'bottom');\n\n const limitWidth = this._chartLayoutRect.width + this._chartLayoutRect.x;\n const limitHeight = this._chartLayoutRect.height + this._chartLayoutRect.y;\n\n // 同 normal,按照 left、top、right、bottom 的顺序进行布局\n // 各个方向上再按照 position 进行分组布局,顺序为 start middle end\n leftItems.length && layoutLeftInlineItems(leftItems, this, limitHeight);\n topItems.length && layoutTopInlineItems(topItems, this, limitWidth);\n rightItems.length && layoutRightInlineItems(rightItems, this, limitHeight);\n bottomItems.length && layoutBottomInlineItems(bottomItems, this, limitWidth);\n }\n\n protected _layoutRelativeOverlap(orient: IOrientType, info: overlapInfo) {\n // 得到 max rect\n info.items.forEach((item: ILayoutItem) => {\n const layoutRect = this.getItemComputeLayoutRect(item);\n const rect = item.computeBoundsInRect(layoutRect);\n info.rect.width = Math.max(rect.width, info.rect.width);\n info.rect.height = Math.max(rect.height, info.rect.height);\n });\n\n // 统一设置rect和pos\n info.items.forEach((item: ILayoutItem) => {\n item.setLayoutRect(info.rect);\n if (orient === 'left') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n } else if (orient === 'right') {\n item.setLayoutStartPosition({\n x: this.rightCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n } else if (orient === 'top') {\n item.setLayoutStartPosition({\n x: this.topCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n } else {\n item.setLayoutStartPosition({\n x: this.bottomCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n }\n });\n\n if (orient === 'left') {\n this.leftCurrent += info.rect.width;\n } else if (orient === 'right') {\n this.rightCurrent -= info.rect.width;\n } else if (orient === 'top') {\n this.topCurrent += info.rect.height;\n } else {\n this.bottomCurrent -= info.rect.height;\n }\n }\n\n protected _layoutRelativeItem(item: ILayoutItem, layoutRect: ILayoutRect) {\n const rect = item.computeBoundsInRect(layoutRect);\n if (item.layoutOrient === 'left' || item.layoutOrient === 'right') {\n item.setLayoutRect({ width: rect.width });\n } else {\n item.setLayoutRect({ height: rect.height });\n }\n // 减少尺寸\n if (item.layoutOrient === 'left') {\n item.setLayoutStartPosition({\n x: this.leftCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n this.leftCurrent += rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n } else if (item.layoutOrient === 'right') {\n this.rightCurrent -= rect.width + item.layoutPaddingLeft + item.layoutPaddingRight;\n item.setLayoutStartPosition({\n x: this.rightCurrent + item.layoutOffsetX + item.layoutPaddingLeft\n });\n } // 减少尺寸\n else if (item.layoutOrient === 'top') {\n item.setLayoutStartPosition({\n y: this.topCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n this.topCurrent += rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n } else if (item.layoutOrient === 'bottom') {\n this.bottomCurrent -= rect.height + item.layoutPaddingTop + item.layoutPaddingBottom;\n item.setLayoutStartPosition({\n y: this.bottomCurrent + item.layoutOffsetY + item.layoutPaddingTop\n });\n }\n }\n\n protected _layoutRegionItem(\n regionItems: ILayoutItem[],\n regionRelativeTotalWidth: number,\n regionRelativeTotalHeight: number\n ) {\n // region 处理\n const regionWidth = Math.max(\n Math.min(regionRelativeTotalWidth, ...regionItems.map(region => region.maxWidth ?? Number.MAX_VALUE)),\n 0\n );\n const regionHeight = Math.max(\n Math.min(regionRelativeTotalHeight, ...regionItems.map(region => region.maxHeight ?? Number.MAX_VALUE)),\n 0\n );\n regionItems.forEach(region => {\n region.setLayoutRect({\n width: regionWidth,\n height: regionHeight\n });\n\n region.setLayoutStartPosition({\n x: this.leftCurrent + region.layoutOffsetX + region.layoutPaddingLeft,\n y: this.topCurrent + region.layoutOffsetY + region.layoutPaddingTop\n });\n });\n\n return {\n regionHeight,\n regionWidth\n };\n }\n\n /**\n *\n * 1. 补全 region-relative rect 和部分 layoutStartPoint\n * 2. 补全 region rect 和 layoutStartPoint\n *\n */\n protected layoutRegionItems(\n regionItems: ILayoutItem[],\n regionRelativeItems: ILayoutItem[],\n regionRelativeOverlapItems: ILayoutItem[],\n overlapItems: {\n [key in IOrientType]: overlapInfo;\n } = {\n left: { items: [], rect: { width: 0, height: 0 } },\n right: { items: [], rect: { width: 0, height: 0 } },\n top: { items: [], rect: { width: 0, height: 0 } },\n bottom: { items: [], rect: { width: 0, height: 0 } },\n z: { items: [], rect: { width: 0, height: 0 } }\n }\n ): void {\n let regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent;\n let regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;\n\n regionRelativeItems\n .filter(x => x.layoutOrient === 'left' || x.layoutOrient === 'right')\n .forEach(item => {\n this._layoutRelativeItem(item, this.getItemComputeLayoutRect(item));\n });\n\n this._layoutRelativeOverlap('left', overlapItems.left);\n this._layoutRelativeOverlap('right', overlapItems.right);\n\n regionRelativeTotalWidth = this.rightCurrent - this.leftCurrent;\n\n regionRelativeItems\n .filter(x => x.layoutOrient === 'top' || x.layoutOrient === 'bottom')\n .forEach(item => {\n this._layoutRelativeItem(item, this.getItemComputeLayoutRect(item));\n });\n\n this._layoutRelativeOverlap('top', overlapItems.top);\n this._layoutRelativeOverlap('bottom', overlapItems.bottom);\n\n // 此时得到height\n regionRelativeTotalHeight = this.bottomCurrent - this.topCurrent;\n\n // region 处理\n const { regionWidth, regionHeight } = this._layoutRegionItem(\n regionItems,\n regionRelativeTotalWidth,\n regionRelativeTotalHeight\n );\n\n // region-relative 特殊处理\n regionRelativeItems.concat(regionRelativeOverlapItems).forEach(item => {\n // 处理特殊元素的宽高\n if (['left', 'right'].includes(item.layoutOrient)) {\n // 用户有配置的话,已经处理过,不需要再次处理\n const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);\n\n item.setLayoutRect({\n height: relativeRegion.getLayoutRect().height\n });\n item.setLayoutStartPosition({\n y: relativeRegion.getLayoutStartPoint().y + item.layoutOffsetY + item.layoutPaddingTop\n });\n\n if (item.layoutOrient === 'right') {\n item.setLayoutStartPosition({\n x: item.getLayoutStartPoint().x + regionWidth - regionRelativeTotalWidth\n });\n }\n } else if (['top', 'bottom'].includes(item.layoutOrient)) {\n const relativeRegion = this.filterRegionsWithID(regionItems, item.layoutBindRegionID[0]);\n\n item.setLayoutRect({\n width: relativeRegion.getLayoutRect().width\n });\n\n item.setLayoutStartPosition({\n x: relativeRegion.getLayoutStartPoint().x + item.layoutOffsetX + item.layoutPaddingLeft\n });\n\n if (item.layoutOrient === 'bottom') {\n item.setLayoutStartPosition({\n y: item.getLayoutStartPoint().y + regionHeight - regionRelativeTotalHeight\n });\n }\n }\n });\n }\n\n /**\n * 再找出对 absolute 元素,无需排序,在 compiler 层需要排序放置\n *\n * 重要:absolute 默认依据 region 进行相对依赖\n */\n protected layoutAbsoluteItems(absoluteItems: ILayoutItem[]) {\n absoluteItems.forEach(item => {\n // 设置盒子\n item.absoluteLayoutInRect(this._chartLayoutRect);\n });\n }\n\n // 对普通布局来说,只出一个 region 绑定\n filterRegionsWithID(items: ILayoutItem[], id: number): ILayoutItem {\n const target = items.find(x => x.getModelId() === id);\n if (!target) {\n (this._onError ?? error)('can not find target region item, invalid id');\n }\n return target as ILayoutItem;\n }\n\n /**\n * 工具方法 根据item属性获取给item提供的布局空间\n * @param item\n */\n getItemComputeLayoutRect(item: ILayoutItem) {\n const result = {\n width: this.rightCurrent - this.leftCurrent - item.layoutPaddingLeft - item.layoutPaddingRight,\n height: this.bottomCurrent - this.topCurrent - item.layoutPaddingTop - item.layoutPaddingBottom\n };\n return result;\n }\n\n protected _checkAutoIndent(\n items: ILayoutItem[],\n layoutTemp: {\n top: number;\n left: number;\n bottom: number;\n right: number;\n }\n ): IPadding {\n const result = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n };\n items.forEach(i => {\n if (!i.getModelVisible() || !i.autoIndent) {\n return;\n }\n const vOrH = i.layoutOrient === 'left' || i.layoutOrient === 'right';\n const itemOuter = i.getLastComputeOutBounds();\n const outer = this._getOutInLayout(itemOuter, i, layoutTemp);\n if (vOrH) {\n result.top = Math.max(result.top, outer.top);\n result.bottom = Math.max(result.bottom, outer.bottom);\n } else {\n result.left = Math.max(result.left, outer.left);\n result.right = Math.max(result.right, outer.right);\n }\n });\n return result;\n }\n\n private _getOutInLayout(itemOuter: IBoundsLike, i: ILayoutItem, tempBorder: LayoutSideType): LayoutSideType {\n const { x, y } = i.getLayoutStartPoint();\n const { width, height } = i.getLayoutRect();\n\n const result: LayoutSideType = {\n left: tempBorder.left - (x - itemOuter.x1),\n right: x + width + itemOuter.x2 - tempBorder.right,\n top: tempBorder.top - (y - itemOuter.y1),\n bottom: y + height + itemOuter.y2 - tempBorder.bottom\n };\n return result;\n }\n}\n"]}
@@ -40,4 +40,4 @@ Object.defineProperty(exports, "Layout3d", {
40
40
  return layout3d_1.registerLayout3d;
41
41
  }
42
42
  });
43
- //# sourceMappingURL=index.js.map
43
+ //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import type { IBoundsLike } from '@visactor/vutils';
2
2
  import type { StringOrNumber } from '../typings/common';
3
- import type { IOrientType, IPadding, IRect } from '../typings/space';
3
+ import type { IOrientType, IRect } from '../typings/space';
4
4
  import type { IPoint } from '../typings/coordinate';
5
5
  import type { ILayoutNumber, ILayoutPaddingSpec, ILayoutPoint, ILayoutRect, ILayoutType } from '../typings/layout';
6
6
  import type { ILayoutModel } from '../model/interface';
@@ -56,8 +56,6 @@ export interface ILayoutItem {
56
56
  layoutPaddingTop: number;
57
57
  layoutPaddingRight: number;
58
58
  layoutPaddingBottom: number;
59
- indent: IPadding;
60
- layoutExcludeIndent: IRect;
61
59
  layoutOffsetX: number;
62
60
  layoutOffsetY: number;
63
61
  layoutLevel: number;
@@ -89,7 +87,6 @@ export interface ILayoutItemSpec {
89
87
  layoutLevel?: number;
90
88
  orient?: IOrientType;
91
89
  padding?: ILayoutPaddingSpec;
92
- indent?: ILayoutPaddingSpec;
93
90
  noOuterPadding?: boolean;
94
91
  width?: ILayoutNumber;
95
92
  maxWidth?: ILayoutNumber;
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  });
6
- //# sourceMappingURL=interface.js.map
6
+ //# sourceMappingURL=interface.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IOrientType, IPadding, IRect } from '../typings/space';\nimport type { IPoint } from '../typings/coordinate';\nimport type { ILayoutNumber, ILayoutPaddingSpec, ILayoutPoint, ILayoutRect, ILayoutType } from '../typings/layout';\nimport type { ILayoutModel } from '../model/interface';\n\nexport interface IBaseLayout {\n /**\n * 对一组布局元素布局\n * 布局策略随意\n * @param item 布局元素数组\n * @param chartLayoutRect 排除图表 padding 后的图表的布局矩形,原点是图表绘制区域左上角。\n * @param chartViewBox 图表在画布中的可用空间,包含图表padding,原点是画布左上角\n * @returns\n */\n layoutItems: LayoutCallBack;\n}\n\nexport type LayoutCallBack = (\n chart: any,\n item: ILayoutItem[],\n chartLayoutRect: IRect,\n chartViewBox: IBoundsLike\n) => void;\n\nexport interface ILayoutSpecBase {\n type: string;\n}\n\nexport type ElementSpec = (\n | {\n modelKey: string; // spec key\n modelIndex: number;\n }\n | {\n modelId: string;\n }\n) & {\n col: number;\n colSpan?: number;\n row: number;\n rowSpan?: number;\n};\n\nexport interface IGridLayoutSpec extends ILayoutSpecBase {\n type: 'grid';\n col: number;\n row: number;\n colWidth?: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[];\n rowHeight?: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[];\n elements: ElementSpec[];\n}\n\nexport interface IBaseLayoutSpec extends ILayoutSpecBase {\n type: 'base';\n}\n\nexport type ILayoutSpec = IBaseLayoutSpec | IGridLayoutSpec;\n\nexport interface ILayoutConstructor {\n type: string;\n // TODO: spec 类型生命\n new (spec: ILayoutSpec | any, ctx?: any): IBaseLayout;\n}\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n readonly type: string;\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n /** 是否自动缩进 */\n autoIndent: boolean;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n // 锁进 概念上等同于 padding\n indent: IPadding;\n // 锁进后的布局属性\n layoutExcludeIndent: IRect;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n chartLayoutRect: ILayoutRect;\n\n readonly layoutRectLevelMap: ILayoutRect;\n minWidth: number;\n maxWidth: number;\n minHeight: number;\n maxHeight: number;\n\n readonly model: ILayoutModel;\n\n getModelId: () => StringOrNumber;\n getModelVisible: () => boolean;\n\n getSpec?: () => any;\n setAttrFromSpec: (spec: ILayoutItemSpec, chartViewRect: ILayoutRect) => void;\n\n setRectInSpec: (rect: ILayoutRect) => ILayoutRect;\n\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLayout: () => IRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n /** 生命周期 */\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: any) => void;\n onLayoutEnd: (option: any) => void;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /**\n * 模块的布局锁进\n * @since 1.8.6\n * */\n indent?: ILayoutPaddingSpec;\n /** 是否按照 orient 自动修改 padding,隐藏位于外侧的 padding。目前只在组件上生效 */\n noOuterPadding?: boolean;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\nexport interface ILayoutItemInitOption {\n layoutType: ILayoutType;\n layoutLevel: number;\n layoutOrient?: IOrientType;\n transformLayoutRect?: (rect: ILayoutRect) => ILayoutRect;\n transformLayoutPosition?: (pos: Partial<IPoint>) => Partial<IPoint>;\n}\n"]}
1
+ {"version":3,"sources":["../src/layout/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IOrientType, IRect } from '../typings/space';\nimport type { IPoint } from '../typings/coordinate';\nimport type { ILayoutNumber, ILayoutPaddingSpec, ILayoutPoint, ILayoutRect, ILayoutType } from '../typings/layout';\nimport type { ILayoutModel } from '../model/interface';\n\nexport interface IBaseLayout {\n /**\n * 对一组布局元素布局\n * 布局策略随意\n * @param item 布局元素数组\n * @param chartLayoutRect 排除图表 padding 后的图表的布局矩形,原点是图表绘制区域左上角。\n * @param chartViewBox 图表在画布中的可用空间,包含图表padding,原点是画布左上角\n * @returns\n */\n layoutItems: LayoutCallBack;\n}\n\nexport type LayoutCallBack = (\n chart: any,\n item: ILayoutItem[],\n chartLayoutRect: IRect,\n chartViewBox: IBoundsLike\n) => void;\n\nexport interface ILayoutSpecBase {\n type: string;\n}\n\nexport type ElementSpec = (\n | {\n modelKey: string; // spec key\n modelIndex: number;\n }\n | {\n modelId: string;\n }\n) & {\n col: number;\n colSpan?: number;\n row: number;\n rowSpan?: number;\n};\n\nexport interface IGridLayoutSpec extends ILayoutSpecBase {\n type: 'grid';\n col: number;\n row: number;\n colWidth?: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[];\n rowHeight?: {\n index: number;\n size: number | ((maxSize: number) => number);\n }[];\n elements: ElementSpec[];\n}\n\nexport interface IBaseLayoutSpec extends ILayoutSpecBase {\n type: 'base';\n}\n\nexport type ILayoutSpec = IBaseLayoutSpec | IGridLayoutSpec;\n\nexport interface ILayoutConstructor {\n type: string;\n // TODO: spec 类型生命\n new (spec: ILayoutSpec | any, ctx?: any): IBaseLayout;\n}\n\n/**\n * 因为这些元素都会继承到各个模块,所以这里统一有前缀避免语意冲突\n */\nexport interface ILayoutItem {\n readonly type: string;\n /**\n * 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n */\n directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n layoutClip: boolean;\n layoutType: ILayoutType;\n layoutBindRegionID: number | number[];\n layoutOrient: IOrientType;\n /** 是否自动缩进 */\n autoIndent: boolean;\n\n layoutPaddingLeft: number;\n layoutPaddingTop: number;\n layoutPaddingRight: number;\n layoutPaddingBottom: number;\n\n layoutOffsetX: number;\n layoutOffsetY: number;\n\n // 越大越先处理\n layoutLevel: number;\n\n chartLayoutRect: ILayoutRect;\n\n readonly layoutRectLevelMap: ILayoutRect;\n minWidth: number;\n maxWidth: number;\n minHeight: number;\n maxHeight: number;\n\n readonly model: ILayoutModel;\n\n getModelId: () => StringOrNumber;\n getModelVisible: () => boolean;\n\n getSpec?: () => any;\n setAttrFromSpec: (spec: ILayoutItemSpec, chartViewRect: ILayoutRect) => void;\n\n setRectInSpec: (rect: ILayoutRect) => ILayoutRect;\n\n getLayoutStartPoint: () => ILayoutPoint;\n getLayoutRect: () => ILayoutRect;\n getLayout: () => IRect;\n getLastComputeOutBounds: () => IBoundsLike;\n\n /** 生命周期 */\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: any) => void;\n onLayoutEnd: (option: any) => void;\n\n /**\n * 更新元素布局的 layoutRect 大小,用来更新指定布局空间\n */\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n /**\n * 基于元素内部逻辑计算占位空间,rect表示可用空间\n */\n computeBoundsInRect: (rect: ILayoutRect) => ILayoutRect;\n /**\n * 更新元素布局的起始点位置\n */\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n /**\n * 更新绝对布局元素的位置信息\n */\n absoluteLayoutInRect: (rect: IRect) => void;\n}\n\nexport interface ILayoutItemSpec {\n /** 当前模块的布局类型,配置为 absolute 的话,当前元素会以图表左上角为原点进行绝对布局 */\n layoutType?: ILayoutType;\n /**\n * 布局顺序等级,等级越大的,越优先布局\n * 比如顶部同时有标题和图例的场景,期望标题先放在顶部,然后放置图例。\n */\n layoutLevel?: number;\n\n // 基础的布局配置\n /** 模块布局位置 */\n orient?: IOrientType;\n /** 模块的布局间距 */\n padding?: ILayoutPaddingSpec;\n /** 是否按照 orient 自动修改 padding,隐藏位于外侧的 padding。目前只在组件上生效 */\n noOuterPadding?: boolean;\n /** 模块的布局大小:宽度 */\n width?: ILayoutNumber;\n /** 模块的布局最大宽度 */\n maxWidth?: ILayoutNumber;\n /** 模块的布局最小宽度 */\n minWidth?: ILayoutNumber;\n /** 模块的布局大小:高度 */\n height?: ILayoutNumber;\n /** 模块的布局最大高度 */\n maxHeight?: ILayoutNumber;\n /** 模块的布局最小高度 */\n minHeight?: ILayoutNumber;\n /** 模块的布局位置偏移:X */\n offsetX?: ILayoutNumber;\n /** 模块的布局位置偏移:Y */\n offsetY?: ILayoutNumber;\n\n /** 模块的展示层级,当2个模块重叠时,层级较大的展示在上方 */\n zIndex?: number;\n /** 模块是否裁剪超出布局区域外的绘图内容 */\n clip?: boolean;\n\n // 绝对布局下的对齐设置\n\n /** 模块绝对布局下,与图表左侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n left?: ILayoutNumber;\n /** 模块绝对布局下,与图表右侧的距离。注意仅在 layoutType === 'absolute' 时生效 */\n right?: ILayoutNumber;\n /** 模块绝对布局下,与图表顶部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n top?: ILayoutNumber;\n /** 模块绝对布局下,与图表底部的距离。注意仅在 layoutType === 'absolute' 时生效 */\n bottom?: ILayoutNumber;\n /** 模块绝对布局下,元素将放置在图表的正中间。注意仅在 layoutType === 'absolute' 时生效,同时将忽略 padding 属性 */\n center?: boolean;\n}\n\nexport interface ILayoutItemInitOption {\n layoutType: ILayoutType;\n layoutLevel: number;\n layoutOrient?: IOrientType;\n transformLayoutRect?: (rect: ILayoutRect) => ILayoutRect;\n transformLayoutPosition?: (pos: Partial<IPoint>) => Partial<IPoint>;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { ILayoutModel } from './../model/interface';
2
- import type { IPadding, IRect, IPoint } from '../typings';
2
+ import type { IRect, IPoint } from '../typings';
3
3
  import type { IBoundsLike } from '@visactor/vutils';
4
4
  import type { ILayoutItem, ILayoutItemInitOption, ILayoutItemSpec } from './interface';
5
5
  import type { IChartLayoutOption } from '../chart/interface/common';
@@ -39,10 +39,6 @@ export declare class LayoutItem implements ILayoutItem {
39
39
  layoutPaddingTop: ILayoutItem['layoutPaddingTop'];
40
40
  layoutPaddingRight: ILayoutItem['layoutPaddingRight'];
41
41
  layoutPaddingBottom: ILayoutItem['layoutPaddingBottom'];
42
- protected _indent: IPadding;
43
- get indent(): IPadding;
44
- private _layoutExcludeIndent;
45
- get layoutExcludeIndent(): IRect;
46
42
  layoutOffsetX: ILayoutItem['layoutOffsetX'];
47
43
  layoutOffsetY: ILayoutItem['layoutOffsetY'];
48
44
  layoutLevel: ILayoutItem['layoutLevel'];
@@ -49,12 +49,6 @@ class LayoutItem {
49
49
  set layoutOrient(v) {
50
50
  this._layoutOrient = v;
51
51
  }
52
- get indent() {
53
- return this._indent;
54
- }
55
- get layoutExcludeIndent() {
56
- return this._layoutExcludeIndent;
57
- }
58
52
  get model() {
59
53
  return this._model;
60
54
  }
@@ -80,17 +74,7 @@ class LayoutItem {
80
74
  y2: 0
81
75
  }, this.getLayoutRect = () => this._layoutRect, this.layoutType = "normal", this._layoutOrient = "left",
82
76
  this.layoutPaddingLeft = 0, this.layoutPaddingTop = 0, this.layoutPaddingRight = 0,
83
- this.layoutPaddingBottom = 0, this._indent = {
84
- left: 0,
85
- top: 0,
86
- right: 0,
87
- bottom: 0
88
- }, this._layoutExcludeIndent = {
89
- x: 0,
90
- y: 0,
91
- width: 0,
92
- height: 0
93
- }, this.layoutOffsetX = 0, this.layoutOffsetY = 0, this.layoutLevel = constant_1.LayoutLevel.Region,
77
+ this.layoutPaddingBottom = 0, this.layoutOffsetX = 0, this.layoutOffsetY = 0, this.layoutLevel = constant_1.LayoutLevel.Region,
94
78
  this._model = model, this._option = option, this.layoutLevel = option.layoutLevel,
95
79
  this.layoutType = option.layoutType, option.layoutOrient && (this.layoutOrient = option.layoutOrient),
96
80
  this._spec = null === (_a = null == model ? void 0 : model.getSpec) || void 0 === _a ? void 0 : _a.call(model);
@@ -101,10 +85,8 @@ class LayoutItem {
101
85
  const padding = (0, space_1.normalizeLayoutPaddingSpec)(spec.padding), paddingValue = (0,
102
86
  space_1.calcPadding)(padding, chartViewRect, chartViewRect);
103
87
  this.layoutPaddingLeft = paddingValue.left, this.layoutPaddingRight = paddingValue.right,
104
- this.layoutPaddingTop = paddingValue.top, this.layoutPaddingBottom = paddingValue.bottom;
105
- const indent = (0, space_1.normalizeLayoutPaddingSpec)(spec.indent);
106
- this._indent = (0, space_1.calcPadding)(indent, chartViewRect, chartViewRect), this._minHeight = (0,
107
- vutils_1.isNil)(spec.minHeight) ? null !== (_a = this._minHeight) && void 0 !== _a ? _a : null : (0,
88
+ this.layoutPaddingTop = paddingValue.top, this.layoutPaddingBottom = paddingValue.bottom,
89
+ this._minHeight = (0, vutils_1.isNil)(spec.minHeight) ? null !== (_a = this._minHeight) && void 0 !== _a ? _a : null : (0,
108
90
  space_1.calcLayoutNumber)(spec.minHeight, chartViewRect.height, chartViewRect),
109
91
  this._maxHeight = (0, vutils_1.isNil)(spec.maxHeight) ? null !== (_b = this._maxHeight) && void 0 !== _b ? _b : null : (0,
110
92
  space_1.calcLayoutNumber)(spec.maxHeight, chartViewRect.height, chartViewRect),
@@ -172,7 +154,6 @@ class LayoutItem {
172
154
  var _a, _b;
173
155
  this._option.transformLayoutPosition && (pos = this._option.transformLayoutPosition(pos)),
174
156
  (0, vutils_1.isValidNumber)(pos.x) && (this._layoutStartPoint.x = pos.x), (0, vutils_1.isValidNumber)(pos.y) && (this._layoutStartPoint.y = pos.y),
175
- this._layoutExcludeIndent.x = this._layoutStartPoint.x + this._indent.left, this._layoutExcludeIndent.y = this._layoutStartPoint.y + this._indent.top,
176
157
  null === (_b = (_a = this._model).afterSetLayoutStartPoint) || void 0 === _b || _b.call(_a, this._layoutStartPoint);
177
158
  }
178
159
  setLayoutRect({width: width, height: height}, levelMap) {
@@ -181,8 +162,7 @@ class LayoutItem {
181
162
  this._layoutRectLevelMap.width = null !== (_b = null == levelMap ? void 0 : levelMap.width) && void 0 !== _b ? _b : constant_1.DEFAULT_LAYOUT_RECT_LEVEL),
182
163
  (0, vutils_1.isValidNumber)(height) && (null !== (_c = null == levelMap ? void 0 : levelMap.height) && void 0 !== _c ? _c : constant_1.DEFAULT_LAYOUT_RECT_LEVEL) >= this._layoutRectLevelMap.height && (this._layoutRect.height = height,
183
164
  this._layoutRectLevelMap.height = null !== (_d = null == levelMap ? void 0 : levelMap.height) && void 0 !== _d ? _d : constant_1.DEFAULT_LAYOUT_RECT_LEVEL),
184
- this.setRectInSpec(this._layoutRect), this._layoutExcludeIndent.width = Math.max(this._layoutRect.width - this._indent.left - this._indent.right, 1),
185
- this._layoutExcludeIndent.height = Math.max(this._layoutRect.height - this._indent.top - this._indent.bottom, 1);
165
+ this.setRectInSpec(this._layoutRect);
186
166
  }
187
167
  getLayout() {
188
168
  return {
@@ -241,4 +221,4 @@ class LayoutItem {
241
221
  }
242
222
 
243
223
  exports.LayoutItem = LayoutItem;
244
- //# sourceMappingURL=layout-item.js.map
224
+ //# sourceMappingURL=layout-item.js.map