@visactor/vtable 0.13.4-alpha.3 → 0.13.4-alpha.4

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 (227) hide show
  1. package/cjs/PivotChart.d.ts +3 -0
  2. package/cjs/PivotChart.js +44 -40
  3. package/cjs/PivotChart.js.map +1 -1
  4. package/cjs/components/axis/get-axis-attributes.d.ts +7 -0
  5. package/cjs/components/axis/get-axis-attributes.js +13 -17
  6. package/cjs/components/axis/get-axis-attributes.js.map +1 -1
  7. package/cjs/components/legend/continue-legend/continue-legend.js +1 -0
  8. package/cjs/components/legend/continue-legend/continue-legend.js.map +1 -1
  9. package/cjs/components/legend/discrete-legend/discrete-legend.js +1 -0
  10. package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  11. package/cjs/components/menu/dom/logic/MenuElementStyle.js +1 -1
  12. package/cjs/components/menu/dom/logic/MenuElementStyle.js.map +1 -1
  13. package/cjs/components/title/title.js +7 -6
  14. package/cjs/components/title/title.js.map +1 -1
  15. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  16. package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  17. package/cjs/core/BaseTable.d.ts +14 -0
  18. package/cjs/core/BaseTable.js +29 -3
  19. package/cjs/core/BaseTable.js.map +1 -1
  20. package/cjs/core/style.js +1 -1
  21. package/cjs/core/style.js.map +1 -1
  22. package/cjs/dataset/dataset.d.ts +0 -1
  23. package/cjs/dataset/dataset.js +3 -43
  24. package/cjs/dataset/dataset.js.map +1 -1
  25. package/cjs/event/event.d.ts +1 -1
  26. package/cjs/event/event.js +5 -4
  27. package/cjs/event/event.js.map +1 -1
  28. package/cjs/event/listener/table-group.js +9 -6
  29. package/cjs/event/listener/table-group.js.map +1 -1
  30. package/cjs/event/listener/touch.js +1 -1
  31. package/cjs/event/listener/touch.js.map +1 -1
  32. package/cjs/event/scroll.js +1 -1
  33. package/cjs/event/scroll.js.map +1 -1
  34. package/cjs/index.d.ts +1 -1
  35. package/cjs/index.js +1 -1
  36. package/cjs/index.js.map +1 -1
  37. package/cjs/layout/chart-helper/get-axis-config.js +71 -35
  38. package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
  39. package/cjs/layout/chart-helper/get-axis-domain.d.ts +1 -1
  40. package/cjs/layout/chart-helper/get-axis-domain.js +18 -8
  41. package/cjs/layout/chart-helper/get-axis-domain.js.map +1 -1
  42. package/cjs/layout/chart-helper/get-chart-spec.js +33 -17
  43. package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
  44. package/cjs/layout/chart-helper/zero-align.js.map +1 -0
  45. package/cjs/render/layout/arc.d.ts +21 -10
  46. package/cjs/render/layout/arc.js +9 -7
  47. package/cjs/render/layout/arc.js.map +1 -1
  48. package/cjs/render/layout/circle.d.ts +17 -10
  49. package/cjs/render/layout/circle.js +6 -5
  50. package/cjs/render/layout/circle.js.map +1 -1
  51. package/cjs/render/layout/container.d.ts +48 -10
  52. package/cjs/render/layout/container.js +100 -15
  53. package/cjs/render/layout/container.js.map +1 -1
  54. package/cjs/render/layout/group-element.d.ts +24 -4
  55. package/cjs/render/layout/group-element.js +40 -4
  56. package/cjs/render/layout/group-element.js.map +1 -1
  57. package/cjs/render/layout/icon.d.ts +10 -10
  58. package/cjs/render/layout/icon.js +9 -11
  59. package/cjs/render/layout/icon.js.map +1 -1
  60. package/cjs/render/layout/image.d.ts +17 -10
  61. package/cjs/render/layout/image.js +7 -6
  62. package/cjs/render/layout/image.js.map +1 -1
  63. package/cjs/render/layout/index.d.ts +0 -2
  64. package/cjs/render/layout/index.js +1 -2
  65. package/cjs/render/layout/index.js.map +1 -1
  66. package/cjs/render/layout/percent-calc.d.ts +4 -1
  67. package/cjs/render/layout/percent-calc.js.map +1 -1
  68. package/cjs/render/layout/rect.d.ts +20 -10
  69. package/cjs/render/layout/rect.js +6 -5
  70. package/cjs/render/layout/rect.js.map +1 -1
  71. package/cjs/render/layout/text.d.ts +46 -9
  72. package/cjs/render/layout/text.js +18 -7
  73. package/cjs/render/layout/text.js.map +1 -1
  74. package/cjs/scenegraph/component/custom.d.ts +2 -2
  75. package/cjs/scenegraph/component/custom.js +6 -14
  76. package/cjs/scenegraph/component/custom.js.map +1 -1
  77. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  78. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  79. package/cjs/scenegraph/group-creater/init-scenegraph.js +3 -3
  80. package/cjs/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  81. package/cjs/scenegraph/layout/compute-col-width.js +8 -5
  82. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  83. package/cjs/scenegraph/layout/update-height.js +2 -4
  84. package/cjs/scenegraph/layout/update-height.js.map +1 -1
  85. package/cjs/scenegraph/scenegraph.d.ts +5 -4
  86. package/cjs/scenegraph/scenegraph.js +4 -2
  87. package/cjs/scenegraph/scenegraph.js.map +1 -1
  88. package/cjs/scenegraph/select/create-select-border.d.ts +2 -2
  89. package/cjs/scenegraph/select/create-select-border.js +6 -15
  90. package/cjs/scenegraph/select/create-select-border.js.map +1 -1
  91. package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
  92. package/cjs/scenegraph/select/update-select-border.js +84 -31
  93. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  94. package/cjs/tools/LimitPromiseQueue.js +1 -1
  95. package/cjs/tools/NumberMap.js +1 -1
  96. package/cjs/tools/Rect.js +1 -1
  97. package/cjs/ts-types/base-table.d.ts +16 -0
  98. package/cjs/ts-types/base-table.js +1 -1
  99. package/cjs/ts-types/base-table.js.map +1 -1
  100. package/cjs/ts-types/common.js +1 -1
  101. package/cjs/ts-types/customElement.js +1 -1
  102. package/cjs/ts-types/table-engine.d.ts +2 -1
  103. package/cjs/ts-types/table-engine.js.map +1 -1
  104. package/dist/vtable.js +1385 -785
  105. package/dist/vtable.min.js +2 -2
  106. package/es/PivotChart.d.ts +3 -0
  107. package/es/PivotChart.js +44 -40
  108. package/es/PivotChart.js.map +1 -1
  109. package/es/components/axis/get-axis-attributes.d.ts +7 -0
  110. package/es/components/axis/get-axis-attributes.js +1 -1
  111. package/es/components/axis/get-axis-attributes.js.map +1 -1
  112. package/es/components/legend/continue-legend/continue-legend.js +1 -0
  113. package/es/components/legend/continue-legend/continue-legend.js.map +1 -1
  114. package/es/components/legend/discrete-legend/discrete-legend.js +1 -0
  115. package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
  116. package/es/components/menu/dom/logic/MenuElementStyle.js +1 -1
  117. package/es/components/menu/dom/logic/MenuElementStyle.js.map +1 -1
  118. package/es/components/title/title.js +6 -6
  119. package/es/components/title/title.js.map +1 -1
  120. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
  121. package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
  122. package/es/core/BaseTable.d.ts +14 -0
  123. package/es/core/BaseTable.js +37 -12
  124. package/es/core/BaseTable.js.map +1 -1
  125. package/es/core/style.js +1 -1
  126. package/es/core/style.js.map +1 -1
  127. package/es/dataset/dataset.d.ts +0 -1
  128. package/es/dataset/dataset.js +2 -46
  129. package/es/dataset/dataset.js.map +1 -1
  130. package/es/event/event.d.ts +1 -1
  131. package/es/event/event.js +5 -4
  132. package/es/event/event.js.map +1 -1
  133. package/es/event/listener/table-group.js +9 -6
  134. package/es/event/listener/table-group.js.map +1 -1
  135. package/es/event/listener/touch.js +1 -1
  136. package/es/event/listener/touch.js.map +1 -1
  137. package/es/event/scroll.js +1 -1
  138. package/es/event/scroll.js.map +1 -1
  139. package/es/index.d.ts +1 -1
  140. package/es/index.js +1 -1
  141. package/es/index.js.map +1 -1
  142. package/es/layout/chart-helper/get-axis-config.js +72 -33
  143. package/es/layout/chart-helper/get-axis-config.js.map +1 -1
  144. package/es/layout/chart-helper/get-axis-domain.d.ts +1 -1
  145. package/es/layout/chart-helper/get-axis-domain.js +20 -8
  146. package/es/layout/chart-helper/get-axis-domain.js.map +1 -1
  147. package/es/layout/chart-helper/get-chart-spec.js +33 -12
  148. package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
  149. package/es/layout/chart-helper/zero-align.js.map +1 -0
  150. package/es/render/layout/arc.d.ts +21 -10
  151. package/es/render/layout/arc.js +7 -7
  152. package/es/render/layout/arc.js.map +1 -1
  153. package/es/render/layout/circle.d.ts +17 -10
  154. package/es/render/layout/circle.js +6 -7
  155. package/es/render/layout/circle.js.map +1 -1
  156. package/es/render/layout/container.d.ts +48 -10
  157. package/es/render/layout/container.js +107 -16
  158. package/es/render/layout/container.js.map +1 -1
  159. package/es/render/layout/group-element.d.ts +24 -4
  160. package/es/render/layout/group-element.js +42 -4
  161. package/es/render/layout/group-element.js.map +1 -1
  162. package/es/render/layout/icon.d.ts +10 -10
  163. package/es/render/layout/icon.js +10 -12
  164. package/es/render/layout/icon.js.map +1 -1
  165. package/es/render/layout/image.d.ts +17 -10
  166. package/es/render/layout/image.js +7 -8
  167. package/es/render/layout/image.js.map +1 -1
  168. package/es/render/layout/index.d.ts +0 -2
  169. package/es/render/layout/index.js +0 -4
  170. package/es/render/layout/index.js.map +1 -1
  171. package/es/render/layout/percent-calc.d.ts +4 -1
  172. package/es/render/layout/percent-calc.js.map +1 -1
  173. package/es/render/layout/rect.d.ts +20 -10
  174. package/es/render/layout/rect.js +6 -7
  175. package/es/render/layout/rect.js.map +1 -1
  176. package/es/render/layout/text.d.ts +46 -9
  177. package/es/render/layout/text.js +18 -9
  178. package/es/render/layout/text.js.map +1 -1
  179. package/es/scenegraph/component/custom.d.ts +2 -2
  180. package/es/scenegraph/component/custom.js +7 -15
  181. package/es/scenegraph/component/custom.js.map +1 -1
  182. package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -2
  183. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  184. package/es/scenegraph/group-creater/init-scenegraph.js +3 -3
  185. package/es/scenegraph/group-creater/init-scenegraph.js.map +1 -1
  186. package/es/scenegraph/layout/compute-col-width.js +8 -5
  187. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  188. package/es/scenegraph/layout/update-height.js +2 -4
  189. package/es/scenegraph/layout/update-height.js.map +1 -1
  190. package/es/scenegraph/scenegraph.d.ts +5 -4
  191. package/es/scenegraph/scenegraph.js +3 -2
  192. package/es/scenegraph/scenegraph.js.map +1 -1
  193. package/es/scenegraph/select/create-select-border.d.ts +2 -2
  194. package/es/scenegraph/select/create-select-border.js +6 -15
  195. package/es/scenegraph/select/create-select-border.js.map +1 -1
  196. package/es/scenegraph/select/delete-select-border.js.map +1 -1
  197. package/es/scenegraph/select/update-select-border.js +84 -31
  198. package/es/scenegraph/select/update-select-border.js.map +1 -1
  199. package/es/tools/LimitPromiseQueue.js +1 -1
  200. package/es/tools/NumberMap.js +1 -1
  201. package/es/tools/Rect.js +1 -1
  202. package/es/ts-types/base-table.d.ts +16 -0
  203. package/es/ts-types/base-table.js +1 -1
  204. package/es/ts-types/base-table.js.map +1 -1
  205. package/es/ts-types/common.js +1 -1
  206. package/es/ts-types/customElement.js +1 -1
  207. package/es/ts-types/table-engine.d.ts +2 -1
  208. package/es/ts-types/table-engine.js.map +1 -1
  209. package/package.json +6 -6
  210. package/cjs/dataset/util/zero-align.js.map +0 -1
  211. package/cjs/render/layout/group.d.ts +0 -12
  212. package/cjs/render/layout/group.js +0 -18
  213. package/cjs/render/layout/group.js.map +0 -1
  214. package/cjs/render/layout/tag.d.ts +0 -14
  215. package/cjs/render/layout/tag.js +0 -21
  216. package/cjs/render/layout/tag.js.map +0 -1
  217. package/es/dataset/util/zero-align.js.map +0 -1
  218. package/es/render/layout/group.d.ts +0 -12
  219. package/es/render/layout/group.js +0 -12
  220. package/es/render/layout/group.js.map +0 -1
  221. package/es/render/layout/tag.d.ts +0 -14
  222. package/es/render/layout/tag.js +0 -15
  223. package/es/render/layout/tag.js.map +0 -1
  224. /package/cjs/{dataset/util → layout/chart-helper}/zero-align.d.ts +0 -0
  225. /package/cjs/{dataset/util → layout/chart-helper}/zero-align.js +0 -0
  226. /package/es/{dataset/util → layout/chart-helper}/zero-align.d.ts +0 -0
  227. /package/es/{dataset/util → layout/chart-helper}/zero-align.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["layout/chart-helper/zero-align.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYjD,SAAS,kBAAkB,CAAC,MAAgB;IAC1C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACjB,QAAQ,GAAG,CAAC,CAAC;YACb,QAAQ,GAAG,CAAC,CAAC;SACd;aAAM,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACxB,QAAQ,GAAG,CAAC,CAAC;YACb,QAAQ,GAAG,CAAC,CAAC;SACd;KACF;SAAM;QACL,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;QAC5B,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;KAC7B;IACD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,MAAM;QACN,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAgB,EAAE,KAAgB;IAC9D,MAAM,EACJ,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,gBAAgB,EAChC,MAAM,EAAE,OAAO,EAChB,GAAG,KAAK,CAAC;IACV,MAAM,EACJ,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,gBAAgB,EAChC,MAAM,EAAE,OAAO,EAChB,GAAG,KAAK,CAAC;IAEV,IAAI,SAAS,GAAG,CAAC,EAAE;QACjB,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QAGjC,IAAI,gBAAgB,EAAE;YAEpB,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACjC;QACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACjC;SAAM,IAAI,SAAS,GAAG,CAAC,EAAE;QACxB,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QAGjC,IAAI,gBAAgB,EAAE;YAEpB,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACjC;QACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACjC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgB,EAAE,KAAgB;IAC1D,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACtG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE5E,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;QACtC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;QACtC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;QACtC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB,EAAE,KAAgB;IACxD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC9G,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC9G,IAAI,gBAAgB,IAAI,gBAAgB,EAAE;QAExC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7E,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACjC;SAEI,IAAI,gBAAgB,EAAE;QACzB,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACjC;SAAM,IAAI,gBAAgB,EAAE;QAC3B,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACjC;SAAM;QAEL,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgB,EAAE,KAAgB;IAChE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACpE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEpE,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;QAC1C,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAoC,EACpC,MAAoC;IAEpC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAChE,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EACJ,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,gBAAgB,EAChC,WAAW,EAAE,YAAY,EAC1B,GAAG,KAAK,CAAC;IACV,MAAM,EACJ,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,SAAS,EACnB,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,gBAAgB,EAChC,WAAW,EAAE,YAAY,EAC1B,GAAG,KAAK,CAAC;IAIV,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;QACtC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;KACF;SAEI,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;QAC3C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACnC,OAAO,SAAS,CAAC;SAClB;KACF;SAEI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE;QAGvC,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBACzC,OAAO,SAAS,CAAC;aAClB;SACF;aAEI,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;YAC3C,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBACzC,OAAO,SAAS,CAAC;aAClB;SACF;QAID,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;YAEtC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC,gBAAgB,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAChB;iBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC7C,IAAI,CAAC,gBAAgB,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAChB;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;SACF;QAED,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE;YAEtC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC,gBAAgB,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAChB;iBAEI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,gBAAgB,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAChB;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;SACF;KACF;SAEI,IAAI,YAAY,IAAI,CAAC,YAAY,EAAE;QACtC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACvC,OAAO,SAAS,CAAC;SAClB;KACF;SAEI,IAAI,YAAY,IAAI,CAAC,YAAY,EAAE;QACtC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACvC,OAAO,SAAS,CAAC;SAClB;KACF;SAEI;QAEH,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,OAAO,SAAS,CAAC;SAClB;aAEI,IAAI,SAAS,GAAG,SAAS,EAAE;YAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBACjC,OAAO,SAAS,CAAC;aAClB;SACF;aAEI;YACH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;gBACjC,OAAO,SAAS,CAAC;aAClB;SACF;KACF;IAID,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC","file":"zero-align.js","sourcesContent":["/*\n * migrate from vchart/src/plugin/components/axis-sync-plugin/zero-align-transform.ts\n */\nimport { isValidNumber } from '@visactor/vutils';\n\ntype ScaleInfo = {\n total: number;\n negative: number;\n positive: number;\n includeZero: boolean;\n extendable_min: boolean;\n extendable_max: boolean;\n domain: number[];\n};\n\nfunction isValidAlignDomain(domain: number[]): boolean {\n return domain.length === 2 && isValidNumber(domain[0]) && isValidNumber(domain[1]) && domain[1] >= domain[0];\n}\n\nfunction getScaleInfo(domain: number[]): ScaleInfo {\n // example: -10 -20 total = 10 negative = 10\n const total = domain[1] - domain[0];\n const includeZero = domain[1] * domain[0] < 0;\n let negative = domain[0] <= 0 ? 0 - domain[0] : 0;\n let positive = domain[1] > 0 ? domain[1] - 0 : 0;\n if (total === 0) {\n if (domain[0] < 0) {\n negative = 1;\n positive = 0;\n } else if (domain[0] > 0) {\n negative = 0;\n positive = 1;\n }\n } else {\n negative = negative / total;\n positive = positive / total;\n }\n return {\n total,\n negative,\n positive,\n includeZero,\n domain,\n extendable_min: true,\n extendable_max: true\n };\n}\n\nfunction inDifferentCrossZero(info1: ScaleInfo, info2: ScaleInfo): boolean {\n const {\n positive: positive1,\n negative: negative1,\n extendable_min: s1Extendable_min,\n extendable_max: s1Extendable_max,\n domain: domain1\n } = info1;\n const {\n positive: positive2,\n negative: negative2,\n extendable_min: s2Extendable_min,\n extendable_max: s2Extendable_max,\n domain: domain2\n } = info2;\n // make s2 percent same as s1\n if (positive2 > 0) {\n if (!s2Extendable_min) {\n return false;\n }\n let comp = negative1 / positive1;\n // if s1 could extend max, then expand s1\n // example:【0.5,0.5】 + 【0,1】 = 【0.5,1】\n if (s1Extendable_max) {\n // change s1 percent\n comp = negative1 / Math.max(positive1, positive2);\n domain1[1] = -domain1[0] / comp;\n }\n domain2[0] = -domain2[1] * comp;\n } else if (negative2 > 0) {\n if (!s2Extendable_max) {\n return false;\n }\n let comp = positive1 / negative1;\n // if s1 could extend max, then expand s1\n // example:【0.5,0.5】 + 【1,0】 = 【1,0.5】\n if (s1Extendable_min) {\n // change s1 percent\n comp = positive1 / Math.max(negative1, negative1);\n domain1[0] = -domain1[1] / comp;\n }\n domain2[1] = -domain2[0] * comp;\n }\n return true;\n}\n\nfunction inOnlyZeroDomain(info1: ScaleInfo, info2: ScaleInfo): boolean {\n const { extendable_min: s1Extendable_min, extendable_max: s1Extendable_max, domain: domain1 } = info1;\n const { positive: positive2, negative: negative2, domain: domain2 } = info2;\n // both [0,0]\n if (positive2 === 0 && negative2 === 0) {\n return false;\n }\n // 如果副轴 有正值部分 主轴无法正值扩展,跳过\n if (positive2 > 0 && !s1Extendable_max) {\n return false;\n }\n // 如果副轴 有负值部分 主轴无法负值扩展,跳过\n if (negative2 > 0 && !s1Extendable_min) {\n return false;\n }\n // 其他场景,将主轴设置为与副轴相同\n domain1[0] = domain2[0];\n domain1[1] = domain2[1];\n return true;\n}\n\nfunction inAllCrossZero(info1: ScaleInfo, info2: ScaleInfo): boolean {\n const { positive: positive1, negative: negative1, extendable_max: s1Extendable_max, domain: domain1 } = info1;\n const { positive: positive2, negative: negative2, extendable_min: s2Extendable_min, domain: domain2 } = info2;\n if (s1Extendable_max && s2Extendable_min) {\n // percent\n const comp = Math.max(negative1, negative2) / Math.max(positive1, positive2);\n domain1[1] = -domain1[0] / comp;\n domain2[0] = -domain2[1] * comp;\n }\n // only on side extendable\n else if (s2Extendable_min) {\n const comp = negative1 / positive1;\n domain2[0] = -domain2[1] * comp;\n } else if (s1Extendable_max) {\n const comp = negative2 / positive2;\n domain1[1] = -domain1[0] / comp;\n } else {\n // skip\n return false;\n }\n return true;\n}\n\nfunction inNoCrossDifferentSide(info1: ScaleInfo, info2: ScaleInfo): boolean {\n const { extendable_min: s1Extendable_min, domain: domain1 } = info1;\n const { extendable_max: s2Extendable_max, domain: domain2 } = info2;\n // extendable\n if (!s1Extendable_min || !s2Extendable_max) {\n return false;\n }\n domain1[0] = -domain1[1];\n domain2[1] = -domain2[0];\n return true;\n}\n\nexport function getNewRangeToAlign(\n range1: { min: number; max: number },\n range2: { min: number; max: number }\n): { range1: number[]; range2: number[] } | undefined {\n const domain1 = [range1.min, range1.max];\n const domain2 = [range2.min, range2.max];\n\n if (!isValidAlignDomain(domain1) || !isValidAlignDomain(domain2)) {\n return undefined;\n }\n // 先分别获取正负比例\n const info1 = getScaleInfo(domain1);\n const info2 = getScaleInfo(domain2);\n const {\n positive: positive1,\n negative: negative1,\n extendable_min: s1Extendable_min,\n extendable_max: s1Extendable_max,\n includeZero: includeZero1\n } = info1;\n const {\n positive: positive2,\n negative: negative2,\n extendable_min: s2Extendable_min,\n extendable_max: s2Extendable_max,\n includeZero: includeZero2\n } = info2;\n\n // first check [0,0]\n // axis 1 in [0,0]\n if (positive1 === 0 && negative1 === 0) {\n if (!inOnlyZeroDomain(info1, info2)) {\n return undefined;\n }\n }\n // axis 2 in [0,0]\n else if (positive2 === 0 && negative2 === 0) {\n if (!inOnlyZeroDomain(info2, info1)) {\n return undefined;\n }\n }\n // check of both of axis are not cross zero\n else if (!includeZero1 && !includeZero2) {\n // if in different side s1 * s2 < 0\n // s1 > 0 s2 < 0\n if (negative1 === 0 && positive2 === 0) {\n if (!inNoCrossDifferentSide(info1, info2)) {\n return undefined;\n }\n }\n // s1 < 0 s2 > 0\n else if (negative2 === 0 && positive1 === 0) {\n if (!inNoCrossDifferentSide(info2, info1)) {\n return undefined;\n }\n }\n\n // if in same side s1 * s2 > 0\n // both positive\n if (negative1 === 0 && negative2 === 0) {\n // make sure has zero\n if (domain1[0] === 0 && domain2[0] > 0) {\n if (!s2Extendable_min) {\n return undefined;\n }\n domain2[0] = 0;\n } else if (domain2[0] === 0 && domain1[0] > 0) {\n if (!s1Extendable_min) {\n return undefined;\n }\n domain1[0] = 0;\n } else {\n return undefined;\n }\n }\n // both negative1\n if (positive1 === 0 && positive2 === 0) {\n // s1 has 0 in domain & s2 has not\n if (domain1[1] === 0 && domain2[1] > 0) {\n if (!s2Extendable_max) {\n return undefined;\n }\n domain2[1] = 0;\n }\n // s2 has 0 in domain & s1 has not\n else if (domain2[1] === 0 && domain1[1] > 0) {\n if (!s1Extendable_max) {\n return undefined;\n }\n domain1[1] = 0;\n } else {\n return undefined;\n }\n }\n }\n // check one axis cross zero axis1\n else if (includeZero1 && !includeZero2) {\n if (!inDifferentCrossZero(info1, info2)) {\n return undefined;\n }\n }\n // check one axis cross zero axis2\n else if (includeZero2 && !includeZero1) {\n if (!inDifferentCrossZero(info2, info1)) {\n return undefined;\n }\n }\n // check of both of axis are cross zero\n else {\n // same percent of negative\n if (negative1 === negative2) {\n return undefined;\n }\n // negative percent s1 > s2\n else if (negative1 > negative2) {\n if (!inAllCrossZero(info1, info2)) {\n return undefined;\n }\n }\n // negative percent s1 < s2\n else {\n if (!inAllCrossZero(info2, info1)) {\n return undefined;\n }\n }\n }\n // s1.domain(domain1);\n // s2.domain(domain2);\n\n return { range1: domain1, range2: domain2 };\n}\n"]}
@@ -1,12 +1,23 @@
1
- import type { IArcGraphicAttribute } from '@visactor/vrender';
2
- import { Arc as VArc } from '@visactor/vrender';
3
- type IArcOption = {
4
- marginTop?: number;
5
- marginRight?: number;
6
- marginBottom?: number;
7
- marginLeft?: number;
8
- } & IArcGraphicAttribute;
9
- export declare class Arc extends VArc {
10
- constructor(options: IArcOption);
1
+ import type { ElementOptions } from './element';
2
+ import { BaseElement } from './element';
3
+ type SectorOptions = {
4
+ radius: number;
5
+ startDegree?: number;
6
+ endDegree?: number;
7
+ clockWise?: boolean;
8
+ lineWidth?: number;
9
+ fill?: string | boolean;
10
+ stroke?: string | boolean;
11
+ } & ElementOptions;
12
+ export declare class Sector extends BaseElement {
13
+ type: 'arc';
14
+ radius: number;
15
+ startDegree: number;
16
+ endDegree: number;
17
+ clockWise: boolean;
18
+ lineWidth: number;
19
+ fill: string | boolean;
20
+ stroke: string | boolean;
21
+ constructor(options: SectorOptions);
11
22
  }
12
23
  export {};
@@ -1,12 +1,12 @@
1
- import { Arc as VArc } from "@visactor/vrender";
1
+ import { BaseElement } from "./element";
2
2
 
3
- import { isArray } from "@visactor/vutils";
4
-
5
- export class Arc extends VArc {
3
+ export class Sector extends BaseElement {
6
4
  constructor(options) {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
8
- const isPaddingNumber = isArray(options.boundsPadding), padding = [ null !== (_b = null !== (_a = options.marginTop) && void 0 !== _a ? _a : isPaddingNumber ? options.boundsPadding[0] : options.boundsPadding) && void 0 !== _b ? _b : 0, null !== (_d = null !== (_c = options.marginRight) && void 0 !== _c ? _c : isPaddingNumber ? options.boundsPadding[1] : options.boundsPadding) && void 0 !== _d ? _d : 0, null !== (_g = null !== (_e = options.marginBottom) && void 0 !== _e ? _e : isPaddingNumber ? null !== (_f = options.boundsPadding[2]) && void 0 !== _f ? _f : options.boundsPadding[0] : options.boundsPadding) && void 0 !== _g ? _g : 0, null !== (_k = null !== (_h = options.marginLeft) && void 0 !== _h ? _h : isPaddingNumber ? null !== (_j = options.boundsPadding[3]) && void 0 !== _j ? _j : options.boundsPadding[1] : options.boundsPadding) && void 0 !== _k ? _k : 0 ];
9
- options.boundsPadding = padding, super(options);
5
+ super(options), this.type = "arc", this.startDegree = 0, this.endDegree = 360, this.clockWise = !0,
6
+ this.radius = options.radius, this.startDegree = options.startDegree, this.endDegree = options.endDegree,
7
+ this.clockWise = options.clockWise, this.lineWidth = options.lineWidth, this.fill = options.fill,
8
+ this.stroke = options.stroke, this.width = 2 * this.radius, this.height = 2 * this.radius,
9
+ this.initLayoutSize(), this.dx += this.radius, this.dy += this.radius;
10
10
  }
11
11
  }
12
12
  //# sourceMappingURL=arc.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["render/layout/arc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAS3C,MAAM,OAAO,GAAI,SAAQ,IAAI;IAC3B,YAAY,OAAmB;;QAC7B,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG;YACd,MAAA,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAAI,CAAC;YAC9F,MAAA,MAAA,OAAO,CAAC,WAAW,mCAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAAI,CAAC;YAChG,MAAA,MAAA,OAAO,CAAC,YAAY,mCAClB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,mCAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAChG,CAAC;YACH,MAAA,MAAA,OAAO,CAAC,UAAU,mCAChB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,mCAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAChG,CAAC;SACJ,CAAC;QACF,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF","file":"arc.js","sourcesContent":["import type { IArcGraphicAttribute } from '@visactor/vrender';\nimport { Arc as VArc } from '@visactor/vrender';\nimport { isArray } from '@visactor/vutils';\n\ntype IArcOption = {\n marginTop?: number;\n marginRight?: number;\n marginBottom?: number;\n marginLeft?: number;\n} & IArcGraphicAttribute;\n\nexport class Arc extends VArc {\n constructor(options: IArcOption) {\n const isPaddingNumber = isArray(options.boundsPadding);\n const padding = [\n options.marginTop ?? (isPaddingNumber ? options.boundsPadding[0] : options.boundsPadding) ?? 0,\n options.marginRight ?? (isPaddingNumber ? options.boundsPadding[1] : options.boundsPadding) ?? 0,\n options.marginBottom ??\n (isPaddingNumber ? options.boundsPadding[2] ?? options.boundsPadding[0] : options.boundsPadding) ??\n 0,\n options.marginLeft ??\n (isPaddingNumber ? options.boundsPadding[3] ?? options.boundsPadding[1] : options.boundsPadding) ??\n 0\n ];\n options.boundsPadding = padding;\n\n super(options);\n }\n}\n"]}
1
+ {"version":3,"sources":["render/layout/arc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAYxC,MAAM,OAAO,MAAO,SAAQ,WAAW;IAUrC,YAAY,OAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QAVjB,SAAI,GAAU,KAAK,CAAC;QAEpB,gBAAW,GAAG,CAAC,CAAC;QAChB,cAAS,GAAG,GAAG,CAAC;QAChB,cAAS,GAAG,IAAI,CAAC;QAOf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACzB,CAAC;CACF","file":"arc.js","sourcesContent":["import type { ElementOptions } from './element';\nimport { BaseElement } from './element';\n\ntype SectorOptions = {\n radius: number;\n startDegree?: number;\n endDegree?: number;\n clockWise?: boolean;\n lineWidth?: number;\n fill?: string | boolean;\n stroke?: string | boolean;\n} & ElementOptions;\n\nexport class Sector extends BaseElement {\n type: 'arc' = 'arc';\n radius: number;\n startDegree = 0;\n endDegree = 360;\n clockWise = true;\n lineWidth: number;\n fill: string | boolean;\n stroke: string | boolean;\n\n constructor(options: SectorOptions) {\n super(options);\n this.radius = options.radius;\n this.startDegree = options.startDegree;\n this.endDegree = options.endDegree;\n this.clockWise = options.clockWise;\n this.lineWidth = options.lineWidth;\n this.fill = options.fill;\n this.stroke = options.stroke;\n\n this.width = this.radius * 2;\n this.height = this.radius * 2;\n\n this.initLayoutSize();\n\n this.dx += this.radius;\n this.dy += this.radius;\n }\n}\n"]}
@@ -1,12 +1,19 @@
1
- import type { ICircleGraphicAttribute } from '@visactor/vrender';
2
- import { Circle as VCircle } from '@visactor/vrender';
3
- type ICircleOption = {
4
- marginTop?: number;
5
- marginRight?: number;
6
- marginBottom?: number;
7
- marginLeft?: number;
8
- } & ICircleGraphicAttribute;
9
- export declare class Circle extends VCircle {
10
- constructor(options: ICircleOption);
1
+ import type { ElementOptions } from './element';
2
+ import { BaseElement } from './element';
3
+ type CircleOptions = {
4
+ radius: number;
5
+ radian?: number;
6
+ lineWidth?: number;
7
+ fill?: string | boolean;
8
+ stroke?: string | boolean;
9
+ } & ElementOptions;
10
+ export declare class Circle extends BaseElement {
11
+ type: 'circle';
12
+ radius: number;
13
+ radian: number;
14
+ lineWidth: number;
15
+ fill: string | boolean;
16
+ stroke: string | boolean;
17
+ constructor(options: CircleOptions);
11
18
  }
12
19
  export {};
@@ -1,12 +1,11 @@
1
- import { Circle as VCircle } from "@visactor/vrender";
1
+ import { BaseElement } from "./element";
2
2
 
3
- import { isArray } from "@visactor/vutils";
4
-
5
- export class Circle extends VCircle {
3
+ export class Circle extends BaseElement {
6
4
  constructor(options) {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
8
- const isPaddingNumber = isArray(options.boundsPadding), padding = [ null !== (_b = null !== (_a = options.marginTop) && void 0 !== _a ? _a : isPaddingNumber ? options.boundsPadding[0] : options.boundsPadding) && void 0 !== _b ? _b : 0, null !== (_d = null !== (_c = options.marginRight) && void 0 !== _c ? _c : isPaddingNumber ? options.boundsPadding[1] : options.boundsPadding) && void 0 !== _d ? _d : 0, null !== (_g = null !== (_e = options.marginBottom) && void 0 !== _e ? _e : isPaddingNumber ? null !== (_f = options.boundsPadding[2]) && void 0 !== _f ? _f : options.boundsPadding[0] : options.boundsPadding) && void 0 !== _g ? _g : 0, null !== (_k = null !== (_h = options.marginLeft) && void 0 !== _h ? _h : isPaddingNumber ? null !== (_j = options.boundsPadding[3]) && void 0 !== _j ? _j : options.boundsPadding[1] : options.boundsPadding) && void 0 !== _k ? _k : 0 ];
9
- options.boundsPadding = padding, super(options);
5
+ super(options), this.type = "circle", this.radius = options.radius, this.radian = options.radian,
6
+ this.lineWidth = options.lineWidth, this.fill = options.fill, this.stroke = options.stroke,
7
+ this.width = 2 * this.radius, this.height = 2 * this.radius, this.initLayoutSize(),
8
+ this.dx += this.radius, this.dy += this.radius;
10
9
  }
11
10
  }
12
11
  //# sourceMappingURL=circle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["render/layout/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAS3C,MAAM,OAAO,MAAO,SAAQ,OAAO;IACjC,YAAY,OAAsB;;QAChC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG;YACd,MAAA,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAAI,CAAC;YAC9F,MAAA,MAAA,OAAO,CAAC,WAAW,mCAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAAI,CAAC;YAChG,MAAA,MAAA,OAAO,CAAC,YAAY,mCAClB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,mCAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAChG,CAAC;YACH,MAAA,MAAA,OAAO,CAAC,UAAU,mCAChB,CAAC,eAAe,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,mCAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,mCAChG,CAAC;SACJ,CAAC;QACF,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF","file":"circle.js","sourcesContent":["import type { ICircleGraphicAttribute } from '@visactor/vrender';\nimport { Circle as VCircle } from '@visactor/vrender';\nimport { isArray } from '@visactor/vutils';\n\ntype ICircleOption = {\n marginTop?: number;\n marginRight?: number;\n marginBottom?: number;\n marginLeft?: number;\n} & ICircleGraphicAttribute;\n\nexport class Circle extends VCircle {\n constructor(options: ICircleOption) {\n const isPaddingNumber = isArray(options.boundsPadding);\n const padding = [\n options.marginTop ?? (isPaddingNumber ? options.boundsPadding[0] : options.boundsPadding) ?? 0,\n options.marginRight ?? (isPaddingNumber ? options.boundsPadding[1] : options.boundsPadding) ?? 0,\n options.marginBottom ??\n (isPaddingNumber ? options.boundsPadding[2] ?? options.boundsPadding[0] : options.boundsPadding) ??\n 0,\n options.marginLeft ??\n (isPaddingNumber ? options.boundsPadding[3] ?? options.boundsPadding[1] : options.boundsPadding) ??\n 0\n ];\n options.boundsPadding = padding;\n\n super(options);\n }\n}\n"]}
1
+ {"version":3,"sources":["render/layout/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAUxC,MAAM,OAAO,MAAO,SAAQ,WAAW;IAQrC,YAAY,OAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QARjB,SAAI,GAAa,QAAQ,CAAC;QASxB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACzB,CAAC;CACF","file":"circle.js","sourcesContent":["import type { ElementOptions } from './element';\nimport { BaseElement } from './element';\n\ntype CircleOptions = {\n radius: number;\n radian?: number;\n lineWidth?: number;\n fill?: string | boolean;\n stroke?: string | boolean;\n} & ElementOptions;\n\nexport class Circle extends BaseElement {\n type: 'circle' = 'circle';\n radius: number;\n radian: number;\n lineWidth: number;\n fill: string | boolean;\n stroke: string | boolean;\n\n constructor(options: CircleOptions) {\n super(options);\n this.radius = options.radius;\n this.radian = options.radian;\n this.lineWidth = options.lineWidth;\n this.fill = options.fill;\n this.stroke = options.stroke;\n\n this.width = this.radius * 2;\n this.height = this.radius * 2;\n\n this.initLayoutSize();\n\n this.dx += this.radius;\n this.dy += this.radius;\n }\n}\n"]}
@@ -1,14 +1,52 @@
1
- import type { IGroupGraphicAttribute } from '@visactor/vrender';
2
- import { Group } from '@visactor/vrender';
1
+ import type { BaseTableAPI } from '../../ts-types/base-table';
2
+ import type { DirectionKey } from './direction';
3
+ import type { ElementOptions } from './element';
4
+ import { BaseElement } from './element';
5
+ import { Line } from './line';
3
6
  import type { percentCalcObj } from './percent-calc';
4
- export type IContainerOptions = {
7
+ type containerOptions = {
5
8
  width?: number | percentCalcObj;
6
9
  height?: number | percentCalcObj;
7
- marginTop?: number;
8
- marginRight?: number;
9
- marginBottom?: number;
10
- marginLeft?: number;
11
- } & IGroupGraphicAttribute;
12
- export declare class Container extends Group {
13
- constructor(containerOptions: IContainerOptions);
10
+ direction?: 'row' | 'column';
11
+ justifyContent?: 'start' | 'end' | 'center';
12
+ alignItems?: 'start' | 'end' | 'center';
13
+ alignContent?: 'start' | 'end' | 'center';
14
+ showBounds?: boolean;
15
+ } & ElementOptions;
16
+ export declare class Container extends BaseElement {
17
+ type: 'container';
18
+ width: number;
19
+ _widthObj: percentCalcObj;
20
+ height: number;
21
+ _heightObj: percentCalcObj;
22
+ needCalcSize: boolean;
23
+ direction: 'row' | 'column';
24
+ justifyContent: 'start' | 'end' | 'center';
25
+ alignItems: 'start' | 'end' | 'center';
26
+ alignContent: 'start' | 'end' | 'center';
27
+ lines: Line[];
28
+ currentLine?: Line;
29
+ currentLineY: number;
30
+ table: BaseTableAPI;
31
+ directionKey: DirectionKey;
32
+ showBounds: boolean;
33
+ offsetY: number;
34
+ isRoot?: boolean;
35
+ constructor(options: containerOptions);
36
+ add(element: BaseElement): void;
37
+ updateYAlign(): void;
38
+ getSize(): {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ getContentSize(): {
43
+ width: number;
44
+ height: number;
45
+ };
46
+ calcSize(parentWidth: number, parentHeight: number): void;
47
+ getElements(parentPos?: {
48
+ parentX: number;
49
+ parentY: number;
50
+ }, isHover?: boolean, isSelect?: boolean): any[];
14
51
  }
52
+ export {};
@@ -1,21 +1,112 @@
1
- import { isArray } from "@visactor/vutils";
1
+ import { isNumber } from "@visactor/vutils";
2
2
 
3
- import { Group } from "@visactor/vrender";
3
+ import { DIRECTION_KEY } from "./direction";
4
4
 
5
- export class Container extends Group {
6
- constructor(containerOptions) {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
8
- containerOptions.direction && (containerOptions.flexDirection = containerOptions.direction),
9
- !containerOptions.justifyContent || "start" !== containerOptions.justifyContent && "end" !== containerOptions.justifyContent || (containerOptions.justifyContent = "flex-" + containerOptions.justifyContent),
10
- !containerOptions.alignItems || "start" !== containerOptions.alignItems && "end" !== containerOptions.alignItems || (containerOptions.alignItems = "flex-" + containerOptions.alignItems),
11
- !containerOptions.alignContent || "start" !== containerOptions.alignContent && "end" !== containerOptions.alignContent || (containerOptions.alignContent = "flex-" + containerOptions.alignContent),
12
- containerOptions.display = "flex", containerOptions.flexDirection || (containerOptions.flexDirection = "row"),
13
- containerOptions.clip = !0, containerOptions.fill = null === (_a = null == containerOptions ? void 0 : containerOptions.background) || void 0 === _a ? void 0 : _a.fill,
14
- containerOptions.stroke = null === (_b = null == containerOptions ? void 0 : containerOptions.background) || void 0 === _b ? void 0 : _b.stroke,
15
- containerOptions.lineWidth = null === (_c = null == containerOptions ? void 0 : containerOptions.background) || void 0 === _c ? void 0 : _c.lineWidth,
16
- containerOptions.cornerRadius = null === (_d = null == containerOptions ? void 0 : containerOptions.background) || void 0 === _d ? void 0 : _d.cornerRadius;
17
- const isPaddingNumber = isArray(containerOptions.boundsPadding), padding = [ null !== (_f = null !== (_e = containerOptions.marginTop) && void 0 !== _e ? _e : isPaddingNumber ? containerOptions.boundsPadding[0] : containerOptions.boundsPadding) && void 0 !== _f ? _f : 0, null !== (_h = null !== (_g = containerOptions.marginRight) && void 0 !== _g ? _g : isPaddingNumber ? containerOptions.boundsPadding[1] : containerOptions.boundsPadding) && void 0 !== _h ? _h : 0, null !== (_l = null !== (_j = containerOptions.marginBottom) && void 0 !== _j ? _j : isPaddingNumber ? null !== (_k = containerOptions.boundsPadding[2]) && void 0 !== _k ? _k : containerOptions.boundsPadding[0] : containerOptions.boundsPadding) && void 0 !== _l ? _l : 0, null !== (_p = null !== (_m = containerOptions.marginLeft) && void 0 !== _m ? _m : isPaddingNumber ? null !== (_o = containerOptions.boundsPadding[3]) && void 0 !== _o ? _o : containerOptions.boundsPadding[1] : containerOptions.boundsPadding) && void 0 !== _p ? _p : 0 ];
18
- containerOptions.boundsPadding = padding, super(containerOptions);
5
+ import { BaseElement } from "./element";
6
+
7
+ import { Line } from "./line";
8
+
9
+ import { Rect } from "./rect";
10
+
11
+ export class Container extends BaseElement {
12
+ constructor(options) {
13
+ super(options), this.type = "container", this.needCalcSize = !1, this.lines = [],
14
+ this.currentLineY = 0, this.offsetY = 0, this.direction = options.direction || "row",
15
+ this.justifyContent = options.justifyContent || "start", this.alignItems = options.alignItems || "start",
16
+ this.alignContent = options.alignContent || "start", isNumber(options.width) ? this.width = options.width : (this._widthObj = options.width,
17
+ this.needCalcSize = !0), isNumber(options.height) ? this.height = options.height : (this._heightObj = options.height,
18
+ this.needCalcSize = !0), this.directionKey = DIRECTION_KEY[this.direction], this.showBounds = options.showBounds || !1,
19
+ this.initLayoutSize();
20
+ }
21
+ add(element) {
22
+ if (this.needCalcSize) throw new Error("Need to specify a parent element before adding a child element when use percent size!");
23
+ "container" === element.type && element.calcSize(this.width, this.height), this.currentLine && this.currentLine.canAdd(element) ? this.currentLine.add(element) : (this.currentLine && (this.currentLine.addAble = !1,
24
+ this.currentLineY += this.currentLine[this.directionKey.height], this.currentLine.lineFinish()),
25
+ this.currentLine = new Line(this[this.directionKey.width], this.direction, this.justifyContent, this.alignItems),
26
+ this.currentLine[this.directionKey.y] = this.currentLineY, this.currentLine.add(element),
27
+ this.lines.push(this.currentLine));
28
+ }
29
+ updateYAlign() {
30
+ const offsetY = this[this.directionKey.height] - this.currentLineY;
31
+ "center" === this.alignContent ? this.offsetY = offsetY / 2 : "start" === this.alignContent ? this.offsetY = 0 : this.offsetY = offsetY;
32
+ }
33
+ getSize() {
34
+ const result = {
35
+ width: 0,
36
+ height: 0
37
+ };
38
+ this.currentLine && this.currentLine.addAble ? result[this.directionKey.height] = this.currentLineY + this.currentLine[this.directionKey.height] : result[this.directionKey.height] = this.currentLineY;
39
+ for (let i = 0; i < this.lines.length; i++) {
40
+ const line = this.lines[i];
41
+ result[this.directionKey.width] < line[this.directionKey.width] && (result[this.directionKey.width] = line[this.directionKey.width]);
42
+ }
43
+ return result;
44
+ }
45
+ getContentSize() {
46
+ const result = {
47
+ width: 0,
48
+ height: 0
49
+ }, calcFlag = {
50
+ width: !0,
51
+ height: !0
52
+ };
53
+ this.isRoot || this._heightObj || (calcFlag.height = !1, result.height = this.height),
54
+ this.isRoot || this._widthObj || (calcFlag.width = !1, result.width = this.width);
55
+ for (let i = 0; i < this.lines.length; i++) {
56
+ const size = this.lines[i].getContentSize();
57
+ calcFlag[this.directionKey.width] && result[this.directionKey.width] < size[this.directionKey.width] && (result[this.directionKey.width] = size[this.directionKey.width]),
58
+ calcFlag[this.directionKey.height] && (result[this.directionKey.height] += size[this.directionKey.height]);
59
+ }
60
+ return result;
61
+ }
62
+ calcSize(parentWidth, parentHeight) {
63
+ this._heightObj && (this.height = parentHeight * this._heightObj.percent / 100 + this._heightObj.delta,
64
+ this.needCalcSize = !1, this.initLayoutSize()), this._widthObj && (this.width = parentWidth * this._widthObj.percent / 100 + this._widthObj.delta,
65
+ this.needCalcSize = !1, this.initLayoutSize());
66
+ }
67
+ getElements(parentPos = {
68
+ parentX: 0,
69
+ parentY: 0
70
+ }, isHover = !1, isSelect = !1) {
71
+ var _a, _b, _c;
72
+ this.currentLine && this.currentLine.addAble && (this.currentLine.addAble = !1,
73
+ this.currentLineY += this.currentLine[this.directionKey.height], this.currentLine.lineFinish()),
74
+ this.updateYAlign();
75
+ const elements = [];
76
+ if (this.background && this.background.fill) {
77
+ const backgroundRect = new Rect({
78
+ width: this.width,
79
+ height: this.height,
80
+ stroke: null !== (_a = this.background.stroke) && void 0 !== _a && _a,
81
+ fill: this.background.fill,
82
+ cornerRadius: null !== (_b = this.background.cornerRadius) && void 0 !== _b ? _b : 0,
83
+ lineWidth: null !== (_c = this.background.lineWidth) && void 0 !== _c ? _c : 1
84
+ });
85
+ backgroundRect.x += this.x + parentPos.parentX, backgroundRect.y += this.y + parentPos.parentY,
86
+ elements.push(backgroundRect);
87
+ }
88
+ if (this.showBounds) {
89
+ const boundsRect = new Rect({
90
+ width: this.width,
91
+ height: this.height,
92
+ cornerRadius: 0,
93
+ stroke: "red",
94
+ fill: "rgba(255, 0, 0, 0.2)",
95
+ lineWidth: 4
96
+ });
97
+ boundsRect.x += this.x + parentPos.parentX, boundsRect.y += this.y + parentPos.parentY,
98
+ elements.push(boundsRect);
99
+ }
100
+ for (let i = 0; i < this.lines.length; i++) {
101
+ const line = this.lines[i];
102
+ line[this.directionKey.y] += this.offsetY;
103
+ const linesElements = line.getElements({
104
+ [this.directionKey.parentX]: this.x + parentPos.parentX,
105
+ [this.directionKey.parentY]: this.y + parentPos.parentY
106
+ }, isHover, isSelect);
107
+ elements.push(...linesElements);
108
+ }
109
+ return elements;
19
110
  }
20
111
  }
21
112
  //# sourceMappingURL=container.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["render/layout/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport type { IGroupGraphicAttribute } from '@visactor/vrender';\nimport { Group } from '@visactor/vrender';\nimport type { percentCalcObj } from './percent-calc';\n\nexport type IContainerOptions = {\n width?: number | percentCalcObj;\n height?: number | percentCalcObj;\n marginTop?: number;\n marginRight?: number;\n marginBottom?: number;\n marginLeft?: number;\n} & IGroupGraphicAttribute;\n\nexport class Container extends Group {\n constructor(containerOptions: IContainerOptions) {\n if ((containerOptions as any).direction) {\n containerOptions.flexDirection = (containerOptions as any).direction;\n }\n if (\n containerOptions.justifyContent &&\n ((containerOptions.justifyContent as any) === 'start' || (containerOptions.justifyContent as any) === 'end')\n ) {\n containerOptions.justifyContent = ('flex-' + containerOptions.justifyContent) as any;\n }\n\n if (\n containerOptions.alignItems &&\n ((containerOptions.alignItems as any) === 'start' || (containerOptions.alignItems as any) === 'end')\n ) {\n containerOptions.alignItems = ('flex-' + containerOptions.alignItems) as any;\n }\n\n if (\n containerOptions.alignContent &&\n ((containerOptions.alignContent as any) === 'start' || (containerOptions.alignContent as any) === 'end')\n ) {\n containerOptions.alignContent = ('flex-' + containerOptions.alignContent) as any;\n }\n containerOptions.display = 'flex';\n if (!containerOptions.flexDirection) {\n containerOptions.flexDirection = 'row';\n }\n\n containerOptions.clip = true;\n containerOptions.fill = (containerOptions?.background as any)?.fill;\n containerOptions.stroke = (containerOptions?.background as any)?.stroke;\n containerOptions.lineWidth = (containerOptions?.background as any)?.lineWidth;\n containerOptions.cornerRadius = (containerOptions?.background as any)?.cornerRadius;\n // containerOptions.flexWrap = 'nowrap';\n\n const isPaddingNumber = isArray(containerOptions.boundsPadding);\n const padding = [\n containerOptions.marginTop ??\n (isPaddingNumber ? containerOptions.boundsPadding[0] : containerOptions.boundsPadding) ??\n 0,\n containerOptions.marginRight ??\n (isPaddingNumber ? containerOptions.boundsPadding[1] : containerOptions.boundsPadding) ??\n 0,\n containerOptions.marginBottom ??\n (isPaddingNumber\n ? containerOptions.boundsPadding[2] ?? containerOptions.boundsPadding[0]\n : containerOptions.boundsPadding) ??\n 0,\n containerOptions.marginLeft ??\n (isPaddingNumber\n ? containerOptions.boundsPadding[3] ?? containerOptions.boundsPadding[1]\n : containerOptions.boundsPadding) ??\n 0\n ];\n containerOptions.boundsPadding = padding;\n\n super(containerOptions);\n }\n}\n"]}
1
+ {"version":3,"sources":["render/layout/container.ts"],"names":[],"mappings":"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","file":"container.js","sourcesContent":["import { isNumber } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { DirectionKey } from './direction';\nimport { DIRECTION_KEY } from './direction';\nimport type { ElementOptions } from './element';\nimport { BaseElement } from './element';\nimport { Line } from './line';\nimport type { percentCalcObj } from './percent-calc';\nimport { Rect } from './rect';\n\ntype containerOptions = {\n width?: number | percentCalcObj;\n height?: number | percentCalcObj;\n direction?: 'row' | 'column'; // 布局主方向\n justifyContent?: 'start' | 'end' | 'center'; // 布局方向上的对齐方式\n alignItems?: 'start' | 'end' | 'center'; // 布局交叉方向上的对齐方式\n alignContent?: 'start' | 'end' | 'center'; // 布局交叉方向上多根轴线的对齐方式\n showBounds?: boolean; // 是否显示bounds\n} & ElementOptions;\n\nexport class Container extends BaseElement {\n type: 'container' = 'container';\n declare width: number;\n _widthObj: percentCalcObj;\n declare height: number;\n _heightObj: percentCalcObj;\n needCalcSize = false;\n direction: 'row' | 'column'; // 布局主方向\n justifyContent: 'start' | 'end' | 'center'; // 布局方向上的对齐方式\n alignItems: 'start' | 'end' | 'center'; // 布局交叉方向上的对齐方式\n alignContent: 'start' | 'end' | 'center'; // 布局交叉方向上多根轴线的对齐方式\n lines: Line[] = [];\n currentLine?: Line;\n currentLineY = 0;\n table: BaseTableAPI;\n directionKey: DirectionKey;\n showBounds: boolean;\n offsetY = 0;\n isRoot?: boolean;\n\n constructor(options: containerOptions) {\n super(options);\n this.direction = options.direction || 'row';\n this.justifyContent = options.justifyContent || 'start';\n this.alignItems = options.alignItems || 'start';\n this.alignContent = options.alignContent || 'start';\n\n if (isNumber(options.width)) {\n this.width = options.width as number;\n } else {\n this._widthObj = options.width as percentCalcObj;\n this.needCalcSize = true;\n }\n if (isNumber(options.height)) {\n this.height = options.height as number;\n } else {\n this._heightObj = options.height as percentCalcObj;\n this.needCalcSize = true;\n }\n\n this.directionKey = DIRECTION_KEY[this.direction];\n\n this.showBounds = options.showBounds || false;\n\n this.initLayoutSize();\n }\n\n add(element: BaseElement) {\n if (this.needCalcSize) {\n throw new Error('Need to specify a parent element before adding a child element when use percent size!');\n }\n\n if (element.type === 'container') {\n (element as Container).calcSize(this.width, this.height);\n }\n\n if (this.currentLine && this.currentLine.canAdd(element)) {\n this.currentLine.add(element);\n } else {\n if (this.currentLine) {\n this.currentLine.addAble = false; // 关闭当前行\n this.currentLineY += this.currentLine[this.directionKey.height]; // 更新目前line y位置\n this.currentLine.lineFinish();\n }\n // this.currentLine = new Line(this.width);\n this.currentLine = new Line(this[this.directionKey.width], this.direction, this.justifyContent, this.alignItems);\n this.currentLine[this.directionKey.y] = this.currentLineY;\n this.currentLine.add(element);\n this.lines.push(this.currentLine);\n }\n }\n\n // 交叉方向上多根轴线的对齐方式\n updateYAlign() {\n const offsetY = this[this.directionKey.height] - this.currentLineY;\n if (this.alignContent === 'center') {\n this.offsetY = offsetY / 2;\n } else if (this.alignContent === 'start') {\n this.offsetY = 0;\n } else {\n this.offsetY = offsetY;\n }\n }\n\n getSize() {\n const result = {\n width: 0,\n height: 0\n };\n if (this.currentLine && this.currentLine.addAble) {\n result[this.directionKey.height] = this.currentLineY + this.currentLine[this.directionKey.height];\n } else {\n result[this.directionKey.height] = this.currentLineY;\n }\n\n for (let i = 0; i < this.lines.length; i++) {\n const line = this.lines[i];\n if (result[this.directionKey.width] < line[this.directionKey.width]) {\n result[this.directionKey.width] = line[this.directionKey.width];\n }\n }\n return result;\n }\n\n getContentSize() {\n const result = {\n width: 0,\n height: 0\n };\n\n const calcFlag = {\n width: true,\n height: true\n };\n\n if (!this.isRoot && !this._heightObj) {\n calcFlag.height = false;\n result.height = this.height;\n }\n if (!this.isRoot && !this._widthObj) {\n calcFlag.width = false;\n result.width = this.width;\n }\n\n for (let i = 0; i < this.lines.length; i++) {\n const line = this.lines[i];\n const size = line.getContentSize();\n if (calcFlag[this.directionKey.width] && result[this.directionKey.width] < size[this.directionKey.width]) {\n result[this.directionKey.width] = size[this.directionKey.width];\n }\n\n if (calcFlag[this.directionKey.height]) {\n result[this.directionKey.height] += size[this.directionKey.height];\n }\n }\n\n return result;\n }\n\n calcSize(parentWidth: number, parentHeight: number) {\n if (this._heightObj) {\n this.height = (parentHeight * this._heightObj.percent) / 100 + this._heightObj.delta;\n this.needCalcSize = false;\n this.initLayoutSize();\n }\n if (this._widthObj) {\n this.width = (parentWidth * this._widthObj.percent) / 100 + this._widthObj.delta;\n this.needCalcSize = false;\n this.initLayoutSize();\n }\n }\n\n // 获取平坦后的全部子图元,更新子图元xy位置信息\n getElements(\n parentPos: { parentX: number; parentY: number } = { parentX: 0, parentY: 0 },\n isHover = false,\n isSelect = false\n ) {\n // 关闭最后一行\n if (this.currentLine && this.currentLine.addAble) {\n this.currentLine.addAble = false; // 关闭当前行\n this.currentLineY += this.currentLine[this.directionKey.height]; // 更新目前line y位置\n this.currentLine.lineFinish();\n }\n\n // 处理alignContent\n this.updateYAlign();\n\n const elements = [];\n if (this.background && this.background.fill) {\n const backgroundRect = new Rect({\n width: this.width,\n height: this.height,\n stroke: this.background.stroke ?? false,\n fill: this.background.fill,\n cornerRadius: this.background.cornerRadius ?? 0,\n lineWidth: this.background.lineWidth ?? 1\n });\n backgroundRect.x += this.x + parentPos.parentX;\n backgroundRect.y += this.y + parentPos.parentY;\n elements.push(backgroundRect);\n }\n if (this.showBounds) {\n const boundsRect = new Rect({\n width: this.width,\n height: this.height,\n cornerRadius: 0,\n stroke: 'red',\n fill: 'rgba(255, 0, 0, 0.2)',\n lineWidth: 4\n });\n boundsRect.x += this.x + parentPos.parentX;\n boundsRect.y += this.y + parentPos.parentY;\n elements.push(boundsRect);\n }\n // const parentPos = { parentX, parentY };\n for (let i = 0; i < this.lines.length; i++) {\n const line = this.lines[i];\n line[this.directionKey.y] += this.offsetY;\n // const linesElements = line.getElements(table, this.x + parentX, this.y + parentY);\n const linesElements = line.getElements(\n {\n [this.directionKey.parentX]: this.x + parentPos.parentX,\n [this.directionKey.parentY]: this.y + parentPos.parentY\n } as any,\n isHover,\n isSelect\n );\n elements.push(...linesElements);\n }\n\n return elements;\n }\n}\n"]}
@@ -1,5 +1,25 @@
1
- import type { IContainerOptions } from './container';
2
- import { Container } from './container';
3
- export declare class GroupElement extends Container {
4
- constructor(option: IContainerOptions);
1
+ import type { AlignItems, DirectionKey } from './direction';
2
+ import type { ElementOptions } from './element';
3
+ import { BaseElement } from './element';
4
+ type GroupElementOptions = {
5
+ direction?: 'row' | 'column';
6
+ alignItems?: AlignItems;
7
+ } & ElementOptions;
8
+ export declare class GroupElement extends BaseElement {
9
+ type: 'group-element';
10
+ direction: 'row' | 'column';
11
+ alignItems?: AlignItems;
12
+ width: number;
13
+ height: number;
14
+ children: BaseElement[];
15
+ directionKey: DirectionKey;
16
+ constructor(options: GroupElementOptions);
17
+ add(element: BaseElement): void;
18
+ updateHeight(element: BaseElement): void;
19
+ getOffsetY(element: BaseElement): number;
20
+ getElements(parentPos?: {
21
+ parentX: number;
22
+ parentY: number;
23
+ }, isHover?: boolean, isSelect?: boolean): BaseElement[];
5
24
  }
25
+ export {};
@@ -1,8 +1,46 @@
1
- import { Container } from "./container";
1
+ import { DIRECTION_KEY } from "./direction";
2
2
 
3
- export class GroupElement extends Container {
4
- constructor(option) {
5
- option.flexWrap = "nowrap", super(option);
3
+ import { BaseElement } from "./element";
4
+
5
+ export class GroupElement extends BaseElement {
6
+ constructor(options) {
7
+ super(options), this.type = "group-element", this.width = 0, this.height = 0, this.children = [],
8
+ this.direction = options.direction || "row", this.alignItems = options.alignItems || "start",
9
+ this.directionKey = DIRECTION_KEY[this.direction];
10
+ }
11
+ add(element) {
12
+ element.x = this.width, this.width += element.layoutWidth, this.children.push(element),
13
+ this.updateHeight(element), this.initLayoutSize();
14
+ }
15
+ updateHeight(element) {
16
+ element.layoutHeight > this.height && (this.height = element.layoutHeight);
17
+ }
18
+ getOffsetY(element) {
19
+ switch (this.alignItems) {
20
+ case "start":
21
+ default:
22
+ return 0;
23
+
24
+ case "center":
25
+ return (this[this.directionKey.height] - element[this.directionKey.layoutHeight]) / 2;
26
+
27
+ case "end":
28
+ return this[this.directionKey.height] - element[this.directionKey.layoutHeight];
29
+ }
30
+ }
31
+ getElements(parentPos = {
32
+ parentX: 0,
33
+ parentY: 0
34
+ }, isHover = !1, isSelect = !1) {
35
+ var _a, _b;
36
+ const elements = [];
37
+ for (let i = 0; i < this.children.length; i++) {
38
+ const element = this.children[i];
39
+ "icon" === element.type && ("mouseenter_cell" === (null === (_a = element.cache) || void 0 === _a ? void 0 : _a.visibleTime) && !isHover || "click_cell" === (null === (_b = element.cache) || void 0 === _b ? void 0 : _b.visibleTime) && !isSelect) || (element[this.directionKey.x] += this[this.directionKey.dx] + this[this.directionKey.x] + parentPos.parentX,
40
+ element[this.directionKey.y] += this.getOffsetY(element) + this[this.directionKey.dy] + this[this.directionKey.y] + parentPos.parentY,
41
+ elements.push(element));
42
+ }
43
+ return elements;
6
44
  }
7
45
  }
8
46
  //# sourceMappingURL=group-element.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["render/layout/group-element.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,MAAyB;QACnC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACF","file":"group-element.js","sourcesContent":["import type { IContainerOptions } from './container';\nimport { Container } from './container';\n\nexport class GroupElement extends Container {\n constructor(option: IContainerOptions) {\n option.flexWrap = 'nowrap';\n super(option);\n }\n}\n"]}
1
+ {"version":3,"sources":["render/layout/group-element.ts"],"names":[],"mappings":"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","file":"group-element.js","sourcesContent":["import type { AlignItems, DirectionKey } from './direction';\nimport { DIRECTION_KEY } from './direction';\nimport type { ElementOptions } from './element';\nimport { BaseElement } from './element';\nimport type { Icon } from './icon';\n\ntype GroupElementOptions = {\n direction?: 'row' | 'column';\n alignItems?: AlignItems;\n} & ElementOptions;\n\nexport class GroupElement extends BaseElement {\n type: 'group-element' = 'group-element';\n direction: 'row' | 'column';\n alignItems?: AlignItems;\n width = 0;\n height = 0;\n children: BaseElement[] = [];\n directionKey: DirectionKey;\n\n constructor(options: GroupElementOptions) {\n super(options);\n this.direction = options.direction || 'row';\n this.alignItems = options.alignItems || 'start';\n\n this.directionKey = DIRECTION_KEY[this.direction];\n }\n\n add(element: BaseElement) {\n element.x = this.width;\n this.width += element.layoutWidth;\n this.children.push(element);\n this.updateHeight(element);\n this.initLayoutSize();\n }\n\n updateHeight(element: BaseElement) {\n if (element.layoutHeight > this.height) {\n this.height = element.layoutHeight;\n }\n }\n\n getOffsetY(element: BaseElement): number {\n switch (this.alignItems) {\n case 'start':\n return 0;\n case 'center':\n return (this[this.directionKey.height] - element[this.directionKey.layoutHeight]) / 2;\n case 'end':\n return this[this.directionKey.height] - element[this.directionKey.layoutHeight];\n default:\n return 0;\n }\n }\n\n // 获取平坦后的全部子图元,更新子图元xy位置信息\n getElements(\n parentPos: { parentX: number; parentY: number } = { parentX: 0, parentY: 0 },\n isHover = false,\n isSelect = false\n ) {\n const elements = [];\n for (let i = 0; i < this.children.length; i++) {\n const element = this.children[i];\n // element.getSize(table);\n // element.x = this.width;\n // this.width += element.layoutWidth;\n // this.updateHeight(element);\n\n if (\n element.type === 'icon' &&\n (((element as Icon).cache?.visibleTime === 'mouseenter_cell' && !isHover) ||\n ((element as Icon).cache?.visibleTime === 'click_cell' && !isSelect))\n ) {\n continue;\n }\n\n element[this.directionKey.x] += this[this.directionKey.dx] + this[this.directionKey.x] + parentPos.parentX;\n element[this.directionKey.y] +=\n this.getOffsetY(element) + this[this.directionKey.dy] + this[this.directionKey.y] + parentPos.parentY;\n elements.push(element);\n }\n\n return elements;\n }\n}\n"]}
@@ -1,21 +1,21 @@
1
- import type { IImageGraphicAttribute } from '@visactor/vrender';
2
- import { Image } from '@visactor/vrender';
1
+ import type { ElementOptions } from './element';
2
+ import { BaseElement } from './element';
3
3
  import type { ColumnIconOption } from '../../ts-types';
4
- type IIconOptions = {
4
+ type IconOptions = {
5
5
  width: number;
6
6
  height: number;
7
7
  svg?: string;
8
8
  iconName?: string;
9
- marginTop?: number;
10
- marginRight?: number;
11
- marginBottom?: number;
12
- marginLeft?: number;
13
- } & IImageGraphicAttribute;
14
- export declare class Icon extends Image {
9
+ } & ElementOptions;
10
+ export declare class Icon extends BaseElement {
15
11
  id: string;
12
+ type: 'icon';
13
+ width: number;
14
+ height: number;
16
15
  svg: string;
17
16
  iconName: string;
17
+ cursor?: string;
18
18
  cache?: ColumnIconOption;
19
- constructor(options: IIconOptions);
19
+ constructor(options: IconOptions);
20
20
  }
21
21
  export {};
@@ -1,21 +1,19 @@
1
- import { Image } from "@visactor/vrender";
1
+ import { isString } from "@visactor/vutils";
2
2
 
3
- import { isArray, isString } from "@visactor/vutils";
3
+ import { BaseElement } from "./element";
4
4
 
5
5
  import * as registerIcons from "../../icons";
6
6
 
7
- export class Icon extends Image {
7
+ export class Icon extends BaseElement {
8
8
  constructor(options) {
9
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
10
- let cache;
11
- if (isString(options.iconName)) {
12
- cache = registerIcons.get()[options.iconName], cache && (options.width = null !== (_a = options.width) && void 0 !== _a ? _a : cache.width,
13
- options.height = null !== (_b = options.height) && void 0 !== _b ? _b : cache.height,
14
- options.svg = cache.svg, options.cursor = cache.cursor);
9
+ var _a, _b, _c;
10
+ if (super(options), this.type = "icon", this.iconName = options.iconName, isString(this.iconName)) {
11
+ const cache = registerIcons.get()[this.iconName];
12
+ cache && (this.cache = cache, this.width = cache.width, this.height = cache.height,
13
+ this.svg = cache.svg, this.cursor = cache.cursor);
15
14
  }
16
- options.svg && (options.image = options.svg);
17
- const isPaddingNumber = isArray(options.boundsPadding), padding = [ null !== (_d = null !== (_c = options.marginTop) && void 0 !== _c ? _c : isPaddingNumber ? options.boundsPadding[0] : options.boundsPadding) && void 0 !== _d ? _d : 0, null !== (_f = null !== (_e = options.marginRight) && void 0 !== _e ? _e : isPaddingNumber ? options.boundsPadding[1] : options.boundsPadding) && void 0 !== _f ? _f : 0, null !== (_j = null !== (_g = options.marginBottom) && void 0 !== _g ? _g : isPaddingNumber ? null !== (_h = options.boundsPadding[2]) && void 0 !== _h ? _h : options.boundsPadding[0] : options.boundsPadding) && void 0 !== _j ? _j : 0, null !== (_m = null !== (_k = options.marginLeft) && void 0 !== _k ? _k : isPaddingNumber ? null !== (_l = options.boundsPadding[3]) && void 0 !== _l ? _l : options.boundsPadding[1] : options.boundsPadding) && void 0 !== _m ? _m : 0 ];
18
- options.boundsPadding = padding, super(options), this.cache = cache;
15
+ this.width = null !== (_a = options.width) && void 0 !== _a ? _a : this.width, this.height = null !== (_b = options.height) && void 0 !== _b ? _b : this.height,
16
+ this.svg = null !== (_c = options.svg) && void 0 !== _c ? _c : this.svg, this.initLayoutSize();
19
17
  }
20
18
  }
21
19
  //# sourceMappingURL=icon.js.map