@mathstack/viz 2.1.0 → 2.2.1

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 (450) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +11 -11
  3. package/fesm2022/mathstack-viz.mjs +11024 -0
  4. package/fesm2022/mathstack-viz.mjs.map +1 -0
  5. package/package.json +18 -6
  6. package/types/mathstack-viz.d.ts +5830 -0
  7. package/CHANGELOG.md +0 -0
  8. package/cypress/fixtures/example.json +0 -5
  9. package/cypress/fixtures/usMap.json +0 -13511
  10. package/cypress/support/commands.ts +0 -104
  11. package/cypress/support/component-index.html +0 -12
  12. package/cypress/support/component.ts +0 -33
  13. package/cypress.config.ts +0 -9
  14. package/karma.conf.js +0 -62
  15. package/ng-package.json +0 -8
  16. package/project.json +0 -97
  17. package/src/.eslintrc.json +0 -35
  18. package/src/.prettierrc +0 -31
  19. package/src/lib/axes/base/config/xy-axis-builder.ts +0 -68
  20. package/src/lib/axes/base/config/xy-axis-config.ts +0 -35
  21. package/src/lib/axes/base/config/xy-axis-options.ts +0 -11
  22. package/src/lib/axes/base/xy-axis-base.spec.ts +0 -114
  23. package/src/lib/axes/base/xy-axis-base.ts +0 -305
  24. package/src/lib/axes/base/xy-axis-domain-lines.cy.ts +0 -511
  25. package/src/lib/axes/baseline/axis-baseline-builder.ts +0 -77
  26. package/src/lib/axes/baseline/axis-baseline-options.ts +0 -4
  27. package/src/lib/axes/baseline/axis-baseline.ts +0 -11
  28. package/src/lib/axes/grid/grid-builder.ts +0 -74
  29. package/src/lib/axes/grid/grid-config.ts +0 -13
  30. package/src/lib/axes/grid/grid-options.ts +0 -7
  31. package/src/lib/axes/index.ts +0 -40
  32. package/src/lib/axes/label/axis-label-builder.ts +0 -140
  33. package/src/lib/axes/label/axis-label-options.ts +0 -12
  34. package/src/lib/axes/label/axis-label.ts +0 -18
  35. package/src/lib/axes/label/axis-labels.cy.ts +0 -303
  36. package/src/lib/axes/ordinal/ordinal-axis-config.ts +0 -31
  37. package/src/lib/axes/ordinal/ordinal-axis.spec.ts +0 -30
  38. package/src/lib/axes/ordinal/ordinal-axis.ts +0 -26
  39. package/src/lib/axes/quantitative/quantitative-axis-config.ts +0 -39
  40. package/src/lib/axes/quantitative/quantitative-axis-ticks.cy.ts +0 -748
  41. package/src/lib/axes/quantitative/quantitative-axis.spec.ts +0 -537
  42. package/src/lib/axes/quantitative/quantitative-axis.ts +0 -191
  43. package/src/lib/axes/ticks/tick-wrap/tick-wrap-builder.ts +0 -141
  44. package/src/lib/axes/ticks/tick-wrap/tick-wrap-options.ts +0 -11
  45. package/src/lib/axes/ticks/tick-wrap/tick-wrap.cy.ts +0 -360
  46. package/src/lib/axes/ticks/tick-wrap/tick-wrap.ts +0 -21
  47. package/src/lib/axes/ticks/ticks-builder.ts +0 -370
  48. package/src/lib/axes/ticks/ticks-options.ts +0 -24
  49. package/src/lib/axes/ticks/ticks.ts +0 -33
  50. package/src/lib/axes/x/x-axis-config.ts +0 -48
  51. package/src/lib/axes/x/x-axis.spec.ts +0 -90
  52. package/src/lib/axes/x/x-axis.ts +0 -109
  53. package/src/lib/axes/x-ordinal/x-ordinal-axis-builder.ts +0 -75
  54. package/src/lib/axes/x-ordinal/x-ordinal-axis-config.ts +0 -27
  55. package/src/lib/axes/x-ordinal/x-ordinal-axis.component.ts +0 -33
  56. package/src/lib/axes/x-quantitative/x-quantitative-axis-builder.ts +0 -74
  57. package/src/lib/axes/x-quantitative/x-quantitative-axis-config.ts +0 -32
  58. package/src/lib/axes/x-quantitative/x-quantitative-axis.component.ts +0 -40
  59. package/src/lib/axes/xy-axis.module.ts +0 -20
  60. package/src/lib/axes/y/y-axis-config.ts +0 -47
  61. package/src/lib/axes/y/y-axis.spec.ts +0 -92
  62. package/src/lib/axes/y/y-axis.ts +0 -161
  63. package/src/lib/axes/y-ordinal/y-ordinal-axis-builder.ts +0 -76
  64. package/src/lib/axes/y-ordinal/y-ordinal-axis-config.ts +0 -29
  65. package/src/lib/axes/y-ordinal/y-ordinal-axis.component.ts +0 -33
  66. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-builder.ts +0 -74
  67. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis-config.ts +0 -34
  68. package/src/lib/axes/y-quantitative-axis/y-quantitative-axis.component.ts +0 -40
  69. package/src/lib/bars/bars.component.scss +0 -0
  70. package/src/lib/bars/bars.component.spec.ts +0 -1470
  71. package/src/lib/bars/bars.component.ts +0 -717
  72. package/src/lib/bars/bars.cy.ts +0 -829
  73. package/src/lib/bars/bars.module.ts +0 -9
  74. package/src/lib/bars/config/backgrounds/bars-backgrounds-builder.ts +0 -51
  75. package/src/lib/bars/config/backgrounds/bars-backgrounds-options.ts +0 -4
  76. package/src/lib/bars/config/backgrounds/bars-backgrounds.ts +0 -11
  77. package/src/lib/bars/config/bars-builder.ts +0 -340
  78. package/src/lib/bars/config/bars-config.spec.ts +0 -132
  79. package/src/lib/bars/config/bars-config.ts +0 -70
  80. package/src/lib/bars/config/bars-dimensions.ts +0 -29
  81. package/src/lib/bars/config/bars-options.ts +0 -20
  82. package/src/lib/bars/config/labels/bars-labels-builder.ts +0 -89
  83. package/src/lib/bars/config/labels/bars-labels-options.ts +0 -6
  84. package/src/lib/bars/config/labels/bars-labels.cy.ts +0 -781
  85. package/src/lib/bars/config/labels/bars-labels.ts +0 -13
  86. package/src/lib/bars/events/actions/bars-click-actions.ts +0 -23
  87. package/src/lib/bars/events/actions/bars-hover-actions.ts +0 -43
  88. package/src/lib/bars/events/actions/bars-hover-move-actions.ts +0 -21
  89. package/src/lib/bars/events/bars-events.directive.spec.ts +0 -186
  90. package/src/lib/bars/events/bars-events.directive.ts +0 -235
  91. package/src/lib/bars/events/bars-interaction-output.ts +0 -17
  92. package/src/lib/bars/events/bars-tooltip-positioner.ts +0 -24
  93. package/src/lib/bars/index.ts +0 -18
  94. package/src/lib/charts/chart/chart-scaling.cy.ts +0 -323
  95. package/src/lib/charts/chart/chart.component.html +0 -45
  96. package/src/lib/charts/chart/chart.component.scss +0 -37
  97. package/src/lib/charts/chart/chart.component.ts +0 -243
  98. package/src/lib/charts/chart/chart.token.ts +0 -4
  99. package/src/lib/charts/chart/chart.ts +0 -5
  100. package/src/lib/charts/chart/config/chart-builder.ts +0 -194
  101. package/src/lib/charts/chart/config/chart-config.ts +0 -21
  102. package/src/lib/charts/chart/config/chart-options.ts +0 -11
  103. package/src/lib/charts/chart.module.ts +0 -10
  104. package/src/lib/charts/index.ts +0 -9
  105. package/src/lib/charts/map-chart/map-chart.component.scss +0 -0
  106. package/src/lib/charts/map-chart/map-chart.component.spec.ts +0 -35
  107. package/src/lib/charts/map-chart/map-chart.component.ts +0 -61
  108. package/src/lib/charts/xy-chart/xy-chart.component.spec.ts +0 -34
  109. package/src/lib/charts/xy-chart/xy-chart.component.ts +0 -65
  110. package/src/lib/core/common-behaviors/constructor.ts +0 -7
  111. package/src/lib/core/index.ts +0 -11
  112. package/src/lib/core/pipes/resize-chart-height.pipe.spec.ts +0 -23
  113. package/src/lib/core/pipes/resize-chart-height.pipe.ts +0 -20
  114. package/src/lib/core/styles/_spacing.scss +0 -4
  115. package/src/lib/core/types/layout.ts +0 -28
  116. package/src/lib/core/types/scale.ts +0 -6
  117. package/src/lib/core/types/utility.ts +0 -11
  118. package/src/lib/core/types/values.ts +0 -10
  119. package/src/lib/core/utilities/colors.spec.ts +0 -57
  120. package/src/lib/core/utilities/colors.ts +0 -42
  121. package/src/lib/core/utilities/fill-utilities.spec.ts +0 -25
  122. package/src/lib/core/utilities/fill-utilities.ts +0 -21
  123. package/src/lib/core/utilities/type-guards.spec.ts +0 -55
  124. package/src/lib/core/utilities/type-guards.ts +0 -33
  125. package/src/lib/core/utilities/value-format.ts +0 -21
  126. package/src/lib/core/utilities/values.spec.ts +0 -954
  127. package/src/lib/core/utilities/values.ts +0 -189
  128. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-builder.ts +0 -105
  129. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position-options.ts +0 -24
  130. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.spec.ts +0 -66
  131. package/src/lib/data-dimensions/continuous-quantitative/date-chart-position/date-chart-position.ts +0 -72
  132. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/concrete-domain-padding.ts +0 -10
  133. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-padding.ts +0 -76
  134. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/domain-test-utility.ts +0 -130
  135. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over-options.ts +0 -3
  136. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/percent-over/percent-over.ts +0 -37
  137. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel-options.ts +0 -3
  138. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/pixel/pixel.ts +0 -73
  139. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/quantitative-domain-padding.cy.ts +0 -978
  140. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval-options.ts +0 -3
  141. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-interval/round-to-interval.ts +0 -27
  142. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig-options.ts +0 -3
  143. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/domain-padding/round-to-sig-fig/round-to-sig-fig.ts +0 -30
  144. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-builder.ts +0 -183
  145. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position-options.ts +0 -8
  146. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.spec.ts +0 -28
  147. package/src/lib/data-dimensions/continuous-quantitative/number-chart-position/number-chart-position.ts +0 -62
  148. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension-options.ts +0 -15
  149. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.spec.ts +0 -155
  150. package/src/lib/data-dimensions/continuous-quantitative/number-dimension/number-dimension.ts +0 -57
  151. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-builder.ts +0 -166
  152. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value-options.ts +0 -10
  153. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.spec.ts +0 -34
  154. package/src/lib/data-dimensions/continuous-quantitative/number-visual-value/number-visual-value.ts +0 -57
  155. package/src/lib/data-dimensions/dimension-builder.ts +0 -45
  156. package/src/lib/data-dimensions/dimension-options.ts +0 -12
  157. package/src/lib/data-dimensions/dimension.ts +0 -30
  158. package/src/lib/data-dimensions/index.ts +0 -31
  159. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-builder.ts +0 -122
  160. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position-options.ts +0 -12
  161. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.spec.ts +0 -83
  162. package/src/lib/data-dimensions/ordinal/ordinal-chart-position/ordinal-chart-position.ts +0 -101
  163. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-builder.ts +0 -108
  164. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value-options.ts +0 -12
  165. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.cy.ts +0 -384
  166. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.spec.ts +0 -63
  167. package/src/lib/data-dimensions/ordinal/ordinal-visual-value/ordinal-visual-value.ts +0 -79
  168. package/src/lib/data-export/data-export-config.ts +0 -98
  169. package/src/lib/data-export/data-export.spec.ts +0 -33
  170. package/src/lib/data-export/data-export.ts +0 -87
  171. package/src/lib/data-export/index.ts +0 -2
  172. package/src/lib/dots/config/dots-builder.ts +0 -442
  173. package/src/lib/dots/config/dots-config.spec.ts +0 -123
  174. package/src/lib/dots/config/dots-config.ts +0 -81
  175. package/src/lib/dots/config/dots-options.ts +0 -32
  176. package/src/lib/dots/dots.component.scss +0 -0
  177. package/src/lib/dots/dots.component.spec.ts +0 -143
  178. package/src/lib/dots/dots.component.ts +0 -291
  179. package/src/lib/dots/dots.cy.ts +0 -594
  180. package/src/lib/dots/dots.module.ts +0 -9
  181. package/src/lib/dots/events/actions/dots-hover-actions.ts +0 -19
  182. package/src/lib/dots/events/actions/dots-hover-move-actions.ts +0 -38
  183. package/src/lib/dots/events/dots-events.directive.ts +0 -214
  184. package/src/lib/dots/events/dots-interaction-output.ts +0 -15
  185. package/src/lib/dots/events/dots-tooltip-positioner.ts +0 -24
  186. package/src/lib/dots/index.ts +0 -10
  187. package/src/lib/events/events.directive.ts +0 -184
  188. package/src/lib/events/events.types.ts +0 -57
  189. package/src/lib/events/index.ts +0 -4
  190. package/src/lib/events/interaction-output.ts +0 -34
  191. package/src/lib/events/tooltip-positioner.ts +0 -15
  192. package/src/lib/fill-definitions/fill-definitions.ts +0 -4
  193. package/src/lib/fill-definitions/index.ts +0 -1
  194. package/src/lib/geographies/config/geographies-builder.ts +0 -224
  195. package/src/lib/geographies/config/geographies-config.spec.ts +0 -100
  196. package/src/lib/geographies/config/geographies-config.ts +0 -81
  197. package/src/lib/geographies/config/geographies-options.ts +0 -37
  198. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-builder.ts +0 -212
  199. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer-options.ts +0 -26
  200. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.spec.ts +0 -119
  201. package/src/lib/geographies/config/layers/attribute-data-layer/attribute-data-layer.ts +0 -148
  202. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-builder.ts +0 -65
  203. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension-options.ts +0 -15
  204. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data/attribute-data-dimension.ts +0 -32
  205. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-enums.ts +0 -10
  206. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/attribute-data-bin-types.ts +0 -15
  207. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-builder.ts +0 -18
  208. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins-options.ts +0 -8
  209. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.spec.ts +0 -60
  210. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/calculated-bins/calculated-bins.ts +0 -34
  211. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-builder.ts +0 -46
  212. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins-options.ts +0 -8
  213. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.cy.ts +0 -437
  214. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.spec.ts +0 -105
  215. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/categorical-bins/categorical-bins.ts +0 -54
  216. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-builder.ts +0 -65
  217. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins-options.ts +0 -9
  218. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.spec.ts +0 -82
  219. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks-bins.ts +0 -81
  220. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/custom-breaks/custom-breaks.cy.ts +0 -378
  221. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-builder.ts +0 -50
  222. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins-options.ts +0 -8
  223. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.cy.ts +0 -362
  224. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.spec.ts +0 -72
  225. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-frequencies-bins/equal-frequencies-bins.ts +0 -56
  226. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-builder.ts +0 -60
  227. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins-options.ts +0 -9
  228. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.cy.ts +0 -307
  229. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.spec.ts +0 -104
  230. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/equal-value-ranges-bins/equal-value-ranges-bins.ts +0 -89
  231. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-builder.ts +0 -62
  232. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins-options.ts +0 -8
  233. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.cy.ts +0 -265
  234. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.spec.ts +0 -42
  235. package/src/lib/geographies/config/layers/attribute-data-layer/dimensions/no-bins/no-bins.ts +0 -42
  236. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-builder.ts +0 -116
  237. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer-options.ts +0 -20
  238. package/src/lib/geographies/config/layers/geographies-layer/geographies-layer.ts +0 -104
  239. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-builder.ts +0 -111
  240. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer-options.ts +0 -19
  241. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.spec.ts +0 -41
  242. package/src/lib/geographies/config/layers/geojson-properties-layer/geojson-properties-layer.ts +0 -67
  243. package/src/lib/geographies/config/layers/labels/geographies-labels-builder.ts +0 -269
  244. package/src/lib/geographies/config/layers/labels/geographies-labels-options.ts +0 -45
  245. package/src/lib/geographies/config/layers/labels/geographies-labels.ts +0 -38
  246. package/src/lib/geographies/events/actions/geographies-click-actions.ts +0 -21
  247. package/src/lib/geographies/events/actions/geographies-hover-actions.ts +0 -17
  248. package/src/lib/geographies/events/actions/geographies-hover-move-actions.ts +0 -19
  249. package/src/lib/geographies/events/geographies-events.directive.spec.ts +0 -225
  250. package/src/lib/geographies/events/geographies-events.directive.ts +0 -235
  251. package/src/lib/geographies/events/geographies-interaction-output.ts +0 -17
  252. package/src/lib/geographies/events/geographies-tooltip-positioner.ts +0 -23
  253. package/src/lib/geographies/geographies-feature.ts +0 -16
  254. package/src/lib/geographies/geographies.component.html +0 -1
  255. package/src/lib/geographies/geographies.component.scss +0 -0
  256. package/src/lib/geographies/geographies.component.spec.ts +0 -148
  257. package/src/lib/geographies/geographies.component.ts +0 -318
  258. package/src/lib/geographies/geographies.cy.ts +0 -640
  259. package/src/lib/geographies/geographies.module.ts +0 -9
  260. package/src/lib/geographies/index.ts +0 -32
  261. package/src/lib/grouped-bars/config/grouped-bars-builder.ts +0 -66
  262. package/src/lib/grouped-bars/config/grouped-bars-config.ts +0 -41
  263. package/src/lib/grouped-bars/config/grouped-bars-options.ts +0 -9
  264. package/src/lib/grouped-bars/events/grouped-bars-events.directive.ts +0 -221
  265. package/src/lib/grouped-bars/grouped-bars.component.scss +0 -0
  266. package/src/lib/grouped-bars/grouped-bars.component.spec.ts +0 -25
  267. package/src/lib/grouped-bars/grouped-bars.component.ts +0 -94
  268. package/src/lib/grouped-bars/grouped-bars.module.ts +0 -9
  269. package/src/lib/grouped-bars/index.ts +0 -10
  270. package/src/lib/image-download/image-download-config.ts +0 -57
  271. package/src/lib/image-download/image-download-enums.ts +0 -7
  272. package/src/lib/image-download/image-download-options.ts +0 -14
  273. package/src/lib/image-download/image-download.service.ts +0 -70
  274. package/src/lib/image-download/index.ts +0 -4
  275. package/src/lib/lines/config/area-fills/area-fills-builder.ts +0 -87
  276. package/src/lib/lines/config/area-fills/area-fills-options.ts +0 -8
  277. package/src/lib/lines/config/area-fills/area-fills.ts +0 -14
  278. package/src/lib/lines/config/lines-builder.ts +0 -242
  279. package/src/lib/lines/config/lines-config.spec.ts +0 -52
  280. package/src/lib/lines/config/lines-config.ts +0 -96
  281. package/src/lib/lines/config/lines-options.ts +0 -19
  282. package/src/lib/lines/config/stroke/lines-stroke-builder.ts +0 -135
  283. package/src/lib/lines/config/stroke/lines-stroke-options.ts +0 -6
  284. package/src/lib/lines/config/stroke/lines-stroke.ts +0 -15
  285. package/src/lib/lines/events/actions/lines-click-actions.ts +0 -17
  286. package/src/lib/lines/events/actions/lines-hover-move-actions.ts +0 -113
  287. package/src/lib/lines/events/actions/lines-marker-click-actions.ts +0 -29
  288. package/src/lib/lines/events/lines-events.directive.spec.ts +0 -152
  289. package/src/lib/lines/events/lines-events.directive.ts +0 -310
  290. package/src/lib/lines/events/lines-interaction-output.ts +0 -17
  291. package/src/lib/lines/events/lines-tooltip-positioner.ts +0 -24
  292. package/src/lib/lines/index.ts +0 -17
  293. package/src/lib/lines/lines.component.scss +0 -0
  294. package/src/lib/lines/lines.component.spec.ts +0 -95
  295. package/src/lib/lines/lines.component.ts +0 -425
  296. package/src/lib/lines/lines.cy.ts +0 -738
  297. package/src/lib/lines/lines.module.ts +0 -9
  298. package/src/lib/map-legend/continuous-legend/continuous-legend.component.html +0 -28
  299. package/src/lib/map-legend/continuous-legend/continuous-legend.component.scss +0 -76
  300. package/src/lib/map-legend/continuous-legend/continuous-legend.component.spec.ts +0 -61
  301. package/src/lib/map-legend/continuous-legend/continuous-legend.component.ts +0 -82
  302. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.html +0 -40
  303. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.scss +0 -141
  304. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.spec.ts +0 -75
  305. package/src/lib/map-legend/discontinuous-legend/discontinuous-legend.component.ts +0 -57
  306. package/src/lib/map-legend/index.ts +0 -2
  307. package/src/lib/map-legend/map-legend-base.spec.ts +0 -190
  308. package/src/lib/map-legend/map-legend-base.ts +0 -99
  309. package/src/lib/map-legend/map-legend.component.html +0 -24
  310. package/src/lib/map-legend/map-legend.component.scss +0 -0
  311. package/src/lib/map-legend/map-legend.component.spec.ts +0 -125
  312. package/src/lib/map-legend/map-legend.component.ts +0 -80
  313. package/src/lib/map-legend/map-legend.module.ts +0 -8
  314. package/src/lib/marks/aux-marks/aux-marks.ts +0 -18
  315. package/src/lib/marks/aux-marks/config/aux-marks-builder.ts +0 -25
  316. package/src/lib/marks/aux-marks/config/aux-marks-config.ts +0 -6
  317. package/src/lib/marks/config/marks-config.ts +0 -14
  318. package/src/lib/marks/config/marks-options.ts +0 -9
  319. package/src/lib/marks/index.ts +0 -15
  320. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.spec.ts +0 -74
  321. package/src/lib/marks/map-marks/map-aux-marks/map-aux-marks.ts +0 -40
  322. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.spec.ts +0 -79
  323. package/src/lib/marks/map-marks/map-primary-marks/map-primary-marks.ts +0 -63
  324. package/src/lib/marks/marks.ts +0 -39
  325. package/src/lib/marks/primary-marks/config/primary-marks-builder.ts +0 -75
  326. package/src/lib/marks/primary-marks/config/primary-marks-config.ts +0 -9
  327. package/src/lib/marks/primary-marks/primary-marks-base.spec.ts +0 -58
  328. package/src/lib/marks/primary-marks/primary-marks.ts +0 -43
  329. package/src/lib/marks/xy-marks/xy-aux-marks/xy-aux-marks.ts +0 -40
  330. package/src/lib/marks/xy-marks/xy-marks-config.ts +0 -5
  331. package/src/lib/marks/xy-marks/xy-marks.ts +0 -10
  332. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks-config.ts +0 -7
  333. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.spec.ts +0 -186
  334. package/src/lib/marks/xy-marks/xy-primary-marks/xy-primary-marks.ts +0 -72
  335. package/src/lib/point-markers/index.ts +0 -3
  336. package/src/lib/point-markers/point-markers-builder.ts +0 -93
  337. package/src/lib/point-markers/point-markers-options.ts +0 -6
  338. package/src/lib/point-markers/point-markers.ts +0 -13
  339. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-builder.ts +0 -162
  340. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels-options.ts +0 -17
  341. package/src/lib/quantitative-rules/config/labels/quantitative-rules-labels.ts +0 -26
  342. package/src/lib/quantitative-rules/config/quantitative-rules-builder.ts +0 -134
  343. package/src/lib/quantitative-rules/config/quantitative-rules-config.ts +0 -21
  344. package/src/lib/quantitative-rules/config/quantitative-rules-dimensions.ts +0 -20
  345. package/src/lib/quantitative-rules/config/quantitative-rules-options.ts +0 -13
  346. package/src/lib/quantitative-rules/index.ts +0 -6
  347. package/src/lib/quantitative-rules/quantitative-rules.component.scss +0 -3
  348. package/src/lib/quantitative-rules/quantitative-rules.component.spec.ts +0 -50
  349. package/src/lib/quantitative-rules/quantitative-rules.component.ts +0 -224
  350. package/src/lib/quantitative-rules/quantitative-rules.cy.ts +0 -549
  351. package/src/lib/quantitative-rules/quantitative-rules.module.ts +0 -8
  352. package/src/lib/stacked-area/config/stacked-area-builder.ts +0 -264
  353. package/src/lib/stacked-area/config/stacked-area-config.spec.ts +0 -107
  354. package/src/lib/stacked-area/config/stacked-area-config.ts +0 -109
  355. package/src/lib/stacked-area/config/stacked-area-options.ts +0 -28
  356. package/src/lib/stacked-area/events/actions/stacked-area-hover-move-actions.ts +0 -17
  357. package/src/lib/stacked-area/events/stacked-area-events.directive.spec.ts +0 -168
  358. package/src/lib/stacked-area/events/stacked-area-events.directive.ts +0 -272
  359. package/src/lib/stacked-area/events/stacked-area-interaction-output.ts +0 -33
  360. package/src/lib/stacked-area/events/stacked-area-tooltip-positioner.ts +0 -37
  361. package/src/lib/stacked-area/index.ts +0 -7
  362. package/src/lib/stacked-area/stacked-area.component.scss +0 -0
  363. package/src/lib/stacked-area/stacked-area.component.spec.ts +0 -41
  364. package/src/lib/stacked-area/stacked-area.component.ts +0 -241
  365. package/src/lib/stacked-area/stacked-area.module.ts +0 -9
  366. package/src/lib/stacked-bars/config/stacked-bars-builder.ts +0 -109
  367. package/src/lib/stacked-bars/config/stacked-bars-config.spec.ts +0 -122
  368. package/src/lib/stacked-bars/config/stacked-bars-config.ts +0 -79
  369. package/src/lib/stacked-bars/config/stacked-bars-options.ts +0 -16
  370. package/src/lib/stacked-bars/events/actions/stacked-bars-click-actions.ts +0 -23
  371. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-actions.ts +0 -22
  372. package/src/lib/stacked-bars/events/actions/stacked-bars-hover-move-actions.ts +0 -21
  373. package/src/lib/stacked-bars/events/stacked-bars-events.directive.spec.ts +0 -266
  374. package/src/lib/stacked-bars/events/stacked-bars-events.directive.ts +0 -240
  375. package/src/lib/stacked-bars/index.ts +0 -10
  376. package/src/lib/stacked-bars/stacked-bars.component.scss +0 -0
  377. package/src/lib/stacked-bars/stacked-bars.component.spec.ts +0 -25
  378. package/src/lib/stacked-bars/stacked-bars.component.ts +0 -158
  379. package/src/lib/stacked-bars/stacked-bars.module.ts +0 -9
  380. package/src/lib/stroke/base/stroke-base-options.ts +0 -7
  381. package/src/lib/stroke/base/stroke-base.ts +0 -9
  382. package/src/lib/stroke/index.ts +0 -5
  383. package/src/lib/stroke/stroke-builder.ts +0 -103
  384. package/src/lib/stroke/stroke-options.ts +0 -5
  385. package/src/lib/stroke/stroke.ts +0 -12
  386. package/src/lib/svg-text-wrap/index.ts +0 -3
  387. package/src/lib/svg-text-wrap/svg-text-wrap-builder.ts +0 -105
  388. package/src/lib/svg-text-wrap/svg-text-wrap-options.ts +0 -8
  389. package/src/lib/svg-text-wrap/svg-text-wrap.ts +0 -137
  390. package/src/lib/testing/data/continent-population-year-data.ts +0 -126
  391. package/src/lib/testing/data/country-area-continent.ts +0 -59
  392. package/src/lib/testing/data/state-population-income-year-data.ts +0 -123
  393. package/src/lib/testing/stubs/bars.component.stub.ts +0 -12
  394. package/src/lib/testing/stubs/chart.component.stub.ts +0 -6
  395. package/src/lib/testing/stubs/click.directive.stub.ts +0 -15
  396. package/src/lib/testing/stubs/core/destroy-ref.stub.ts +0 -9
  397. package/src/lib/testing/stubs/core/overlay-ref.stub.ts +0 -13
  398. package/src/lib/testing/stubs/core/overlay.stub.ts +0 -8
  399. package/src/lib/testing/stubs/event.directive.stub.ts +0 -10
  400. package/src/lib/testing/stubs/hover-move.directive.stub.ts +0 -17
  401. package/src/lib/testing/stubs/hover.directive.stub.ts +0 -14
  402. package/src/lib/testing/stubs/input-event.directive.stub.ts +0 -9
  403. package/src/lib/testing/stubs/lines.component.stub.ts +0 -13
  404. package/src/lib/testing/stubs/map-aux-marks.stub.ts +0 -10
  405. package/src/lib/testing/stubs/map-chart.component.stub.ts +0 -3
  406. package/src/lib/testing/stubs/map-legend-content.stub.ts +0 -16
  407. package/src/lib/testing/stubs/map-legend.component.stub.ts +0 -10
  408. package/src/lib/testing/stubs/map-primary-marks.stub.ts +0 -16
  409. package/src/lib/testing/stubs/ordinal-axis.stub.ts +0 -18
  410. package/src/lib/testing/stubs/primary-marks.stub.ts +0 -18
  411. package/src/lib/testing/stubs/quantitative-axis.stub.ts +0 -18
  412. package/src/lib/testing/stubs/services/main.service.stub.ts +0 -5
  413. package/src/lib/testing/stubs/services/utilities.service.stub.ts +0 -7
  414. package/src/lib/testing/stubs/stacked-area.component.stub.ts +0 -13
  415. package/src/lib/testing/stubs/x-axis.stub.ts +0 -10
  416. package/src/lib/testing/stubs/xy-axis.class.stub.ts +0 -20
  417. package/src/lib/testing/stubs/xy-axis.stub.ts +0 -44
  418. package/src/lib/testing/stubs/xy-chart.component.stub.ts +0 -5
  419. package/src/lib/testing/stubs/xy-data-marks.stub.ts +0 -15
  420. package/src/lib/testing/stubs/y-axis.stub.ts +0 -15
  421. package/src/lib/tooltips/config/tooltip.ts +0 -11
  422. package/src/lib/tooltips/html-tooltip/config/html-tooltip-builder.ts +0 -134
  423. package/src/lib/tooltips/html-tooltip/config/html-tooltip-config.ts +0 -21
  424. package/src/lib/tooltips/html-tooltip/config/html-tooltip-options.ts +0 -12
  425. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position-builder.ts +0 -191
  426. package/src/lib/tooltips/html-tooltip/config/position/tooltip-position.ts +0 -42
  427. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-builder.ts +0 -75
  428. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size-options.ts +0 -8
  429. package/src/lib/tooltips/html-tooltip/config/size/tooltip-size.ts +0 -15
  430. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.spec.ts +0 -537
  431. package/src/lib/tooltips/html-tooltip/html-tooltip.directive.ts +0 -210
  432. package/src/lib/tooltips/html-tooltip/html-tooltip.module.ts +0 -16
  433. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.html +0 -41
  434. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.scss +0 -63
  435. package/src/lib/tooltips/html-tooltip/tooltip-triangle/tooltip-triangle.component.ts +0 -19
  436. package/src/lib/tooltips/index.ts +0 -11
  437. package/src/lib/tooltips/svg-tooltip/config/svg-tooltip.ts +0 -5
  438. package/src/lib/xy-background/index.ts +0 -2
  439. package/src/lib/xy-background/xy-background.component.html +0 -10
  440. package/src/lib/xy-background/xy-background.component.scss +0 -0
  441. package/src/lib/xy-background/xy-background.component.spec.ts +0 -24
  442. package/src/lib/xy-background/xy-background.component.ts +0 -19
  443. package/src/lib/xy-background/xy-background.module.ts +0 -8
  444. package/src/public-api.ts +0 -26
  445. package/src/test.ts +0 -15
  446. package/tsconfig.doc.json +0 -4
  447. package/tsconfig.json +0 -20
  448. package/tsconfig.lib.json +0 -23
  449. package/tsconfig.lib.prod.json +0 -10
  450. package/tsconfig.spec.json +0 -10
@@ -1,829 +0,0 @@
1
- /* eslint-disable @angular-eslint/prefer-standalone */
2
- import { CommonModule } from '@angular/common';
3
- import { Component, Input } from '@angular/core';
4
- import {
5
- BarsConfig,
6
- BarsHost,
7
- BarsHoverEmitTooltipData,
8
- BarsHoverMoveEmitTooltipData,
9
- BarsInteractionOutput,
10
- ChartConfig,
11
- DEFAULT_TOOLTIP_Y_OFFSET,
12
- EventAction,
13
- HoverMoveAction,
14
- HtmlTooltipConfig,
15
- VicBarsConfigBuilder,
16
- VicBarsModule,
17
- VicChartConfigBuilder,
18
- VicChartModule,
19
- VicHtmlTooltipConfigBuilder,
20
- VicHtmlTooltipModule,
21
- VicXOrdinalAxisConfig,
22
- VicXOrdinalAxisConfigBuilder,
23
- VicXQuantitativeAxisConfig,
24
- VicXQuantitativeAxisConfigBuilder,
25
- VicXyAxisModule,
26
- VicYOrdinalAxisConfig,
27
- VicYOrdinalAxisConfigBuilder,
28
- VicYQuantitativeAxisConfig,
29
- VicYQuantitativeAxisConfigBuilder,
30
- } from '@mathstack/viz';
31
- import 'cypress-real-events';
32
- import { format, max } from 'd3';
33
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
34
- import { cloneDeep } from 'lodash-es';
35
- import { BehaviorSubject } from 'rxjs';
36
- import {
37
- countryFactsData,
38
- CountryFactsDatum,
39
- } from '../testing/data/country-area-continent';
40
-
41
- // Cypress will get the tick elements before d3 has set the text value of the elements,
42
- // because d3 creates the elements and sets the text value in a transition).
43
- // This wait time is necessary to ensure that the text value of the tick elements has been set by d3.
44
- const axisTickTextWaitTime = 1000;
45
-
46
- const horizontalMargin = { top: 36, right: 20, bottom: 4, left: 120 };
47
- const verticalMargin = { top: 20, right: 20, bottom: 4, left: 40 };
48
- const chartHeight = 400;
49
- const chartWidth = 600;
50
- const getXTransform = ($barGroup) => {
51
- const [x] = $barGroup
52
- .attr('transform')
53
- .split('(')[1]
54
- .split(')')[0]
55
- .split(',');
56
- return parseFloat(x);
57
- };
58
- const getYTransform = ($barGroup) => {
59
- const [, y] = $barGroup
60
- .attr('transform')
61
- .split('(')[1]
62
- .split(')')[0]
63
- .split(',');
64
- return parseFloat(y);
65
- };
66
-
67
- const groupSelector = '.vic-bars-group';
68
- const barSelector = '.vic-bars-bar';
69
- const labelSelector = '.vic-bars-label';
70
-
71
- // ***********************************************************
72
- // Horizontal bar chart component set up
73
- // ***********************************************************
74
- @Component({
75
- // eslint-disable-next-line @angular-eslint/component-selector
76
- selector: 'app-test-horizontal-bar',
77
- template: `
78
- <vic-xy-chart [config]="chartConfig">
79
- <ng-container svg-elements>
80
- <svg:g
81
- vic-x-quantitative-axis
82
- [config]="xQuantitativeAxisConfig"
83
- ></svg:g>
84
- <svg:g vic-y-ordinal-axis [config]="yOrdinalAxisConfig"></svg:g>
85
- <svg:g
86
- vic-primary-marks-bars
87
- [config]="barsConfig"
88
- vicBarsEvents
89
- [hoverMoveActions]="hoverMoveActions"
90
- (interactionOutput)="updateTooltipForNewOutput($event)"
91
- >
92
- <vic-html-tooltip
93
- [config]="tooltipConfig$ | async"
94
- [template]="htmlTooltip"
95
- ></vic-html-tooltip>
96
- </svg:g>
97
- </ng-container>
98
- </vic-xy-chart>
99
-
100
- <ng-template #htmlTooltip>
101
- @if ((tooltipData$ | async)?.values; as values) {
102
- <p class="x-value">{{ values.x }}</p>
103
- <p class="y-value">{{ values.y }}</p>
104
- }
105
- </ng-template>
106
- `,
107
- imports: [
108
- VicChartModule,
109
- VicBarsModule,
110
- VicXyAxisModule,
111
- VicHtmlTooltipModule,
112
- CommonModule,
113
- ],
114
- })
115
- class TestHorizontalBarsComponent {
116
- @Input() barsConfig: BarsConfig<CountryFactsDatum, string>;
117
- @Input() yOrdinalAxisConfig: VicYOrdinalAxisConfig<string>;
118
- @Input() xQuantitativeAxisConfig: VicXQuantitativeAxisConfig<number>;
119
- tooltipConfig: BehaviorSubject<HtmlTooltipConfig> =
120
- new BehaviorSubject<HtmlTooltipConfig>(null);
121
- tooltipConfig$ = this.tooltipConfig.asObservable();
122
- tooltipData: BehaviorSubject<BarsInteractionOutput<CountryFactsDatum>> =
123
- new BehaviorSubject<BarsInteractionOutput<CountryFactsDatum>>(null);
124
- tooltipData$ = this.tooltipData.asObservable();
125
- hoverMoveActions: HoverMoveAction<
126
- BarsHost<CountryFactsDatum, string>,
127
- BarsInteractionOutput<CountryFactsDatum>
128
- >[] = [new BarsHoverMoveEmitTooltipData()];
129
- chartConfig: ChartConfig = new VicChartConfigBuilder()
130
- .margin(horizontalMargin)
131
- .maxHeight(chartHeight)
132
- .maxWidth(chartWidth)
133
- .transitionDuration(0)
134
- .scalingStrategy('responsive-width')
135
- .getConfig();
136
-
137
- updateTooltipForNewOutput(
138
- data: BarsInteractionOutput<CountryFactsDatum>
139
- ): void {
140
- this.updateTooltipData(data);
141
- this.updateTooltipConfig(data);
142
- }
143
-
144
- updateTooltipData(data: BarsInteractionOutput<CountryFactsDatum>): void {
145
- this.tooltipData.next(data);
146
- }
147
-
148
- updateTooltipConfig(data: BarsInteractionOutput<CountryFactsDatum>): void {
149
- const config = new VicHtmlTooltipConfigBuilder()
150
- .positionFromOutput(data, data?.defaultPosition)
151
- .show(!!data)
152
- .getConfig();
153
- this.tooltipConfig.next(config);
154
- }
155
- }
156
-
157
- const mountHorizontalBarsComponent = (
158
- barsConfig: BarsConfig<CountryFactsDatum, string>
159
- ): void => {
160
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder()
161
- .ticks((ticks) => ticks.format(',.0f'))
162
- .getConfig();
163
- const yAxisConfig = new VicYOrdinalAxisConfigBuilder().getConfig();
164
-
165
- cy.mount(TestHorizontalBarsComponent, {
166
- componentProperties: {
167
- barsConfig: barsConfig,
168
- xQuantitativeAxisConfig: xAxisConfig,
169
- yOrdinalAxisConfig: yAxisConfig,
170
- },
171
- });
172
- };
173
-
174
- // ***********************************************************
175
- // Vertical bar chart component set up
176
- // ***********************************************************
177
- @Component({
178
- // eslint-disable-next-line @angular-eslint/component-selector
179
- selector: 'app-test-vertical-bar',
180
- template: `
181
- <vic-xy-chart [config]="chartConfig">
182
- <ng-container svg-elements>
183
- <svg:g vic-x-ordinal-axis [config]="xOrdinalAxisConfig"></svg:g>
184
- <svg:g
185
- vic-y-quantitative-axis
186
- [config]="yQuantitativeAxisConfig"
187
- ></svg:g>
188
- <svg:g
189
- vic-primary-marks-bars
190
- [config]="barsConfig"
191
- vicBarsEvents
192
- [hoverActions]="hoverActions"
193
- (interactionOutput)="updateTooltipForNewOutput($event)"
194
- >
195
- <vic-html-tooltip
196
- [config]="tooltipConfig$ | async"
197
- [template]="htmlTooltip"
198
- ></vic-html-tooltip>
199
- </svg:g>
200
- </ng-container>
201
- <ng-template #htmlTooltip>
202
- <p>{{ (tooltipData$ | async).values.y }}</p>
203
- </ng-template>
204
- </vic-xy-chart>
205
- `,
206
- styles: [],
207
- imports: [
208
- VicChartModule,
209
- VicBarsModule,
210
- VicXyAxisModule,
211
- VicHtmlTooltipModule,
212
- CommonModule,
213
- ],
214
- })
215
- class TestVerticalBarsComponent {
216
- @Input() barsConfig: BarsConfig<CountryFactsDatum, string>;
217
- @Input() xOrdinalAxisConfig: VicXOrdinalAxisConfig<string>;
218
- @Input() yQuantitativeAxisConfig: VicYQuantitativeAxisConfig<number>;
219
- tooltipConfig: BehaviorSubject<HtmlTooltipConfig> =
220
- new BehaviorSubject<HtmlTooltipConfig>(null);
221
- tooltipConfig$ = this.tooltipConfig.asObservable();
222
- tooltipData: BehaviorSubject<BarsInteractionOutput<CountryFactsDatum>> =
223
- new BehaviorSubject<BarsInteractionOutput<CountryFactsDatum>>(null);
224
- tooltipData$ = this.tooltipData.asObservable();
225
- hoverActions: EventAction<BarsHost<CountryFactsDatum, string>>[] = [
226
- new BarsHoverEmitTooltipData(),
227
- ];
228
- chartConfig: ChartConfig = new VicChartConfigBuilder()
229
- .margin(verticalMargin)
230
- .maxHeight(chartHeight)
231
- .maxWidth(chartWidth)
232
- .transitionDuration(0)
233
- .scalingStrategy('responsive-width')
234
- .getConfig();
235
-
236
- updateTooltipForNewOutput(
237
- data: BarsInteractionOutput<CountryFactsDatum>
238
- ): void {
239
- this.updateTooltipData(data);
240
- this.updateTooltipConfig(data);
241
- }
242
-
243
- updateTooltipData(data: BarsInteractionOutput<CountryFactsDatum>): void {
244
- this.tooltipData.next(data);
245
- }
246
-
247
- updateTooltipConfig(data: BarsInteractionOutput<CountryFactsDatum>): void {
248
- const config = new VicHtmlTooltipConfigBuilder()
249
- .positionFromOutput(data)
250
- .show(!!data)
251
- .getConfig();
252
- this.tooltipConfig.next(config);
253
- }
254
- }
255
-
256
- const mountVerticalBarsComponent = (
257
- barsConfig: BarsConfig<CountryFactsDatum, string>
258
- ): void => {
259
- const xAxisConfig = new VicXOrdinalAxisConfigBuilder().getConfig();
260
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder()
261
- .ticks((ticks) => ticks.format('.0f'))
262
- .getConfig();
263
-
264
- cy.mount(TestVerticalBarsComponent, {
265
- componentProperties: {
266
- barsConfig: barsConfig,
267
- xOrdinalAxisConfig: xAxisConfig,
268
- yQuantitativeAxisConfig: yAxisConfig,
269
- },
270
- });
271
- };
272
-
273
- function getHorizontalConfig(
274
- data: CountryFactsDatum[]
275
- ): BarsConfig<CountryFactsDatum, string> {
276
- return new VicBarsConfigBuilder<CountryFactsDatum, string>()
277
- .data(data)
278
- .horizontal((bars) =>
279
- bars
280
- .x((dimension) =>
281
- dimension.valueAccessor((d) => d.area).domainPaddingPixels()
282
- )
283
- .y((dimension) => dimension.valueAccessor((d) => d.country))
284
- )
285
- .labels((labels) => labels.display(true))
286
- .getConfig();
287
- }
288
-
289
- function getVerticalConfig(
290
- data: CountryFactsDatum[]
291
- ): BarsConfig<CountryFactsDatum, string> {
292
- return new VicBarsConfigBuilder<CountryFactsDatum, string>()
293
- .data(data)
294
- .vertical((bars) =>
295
- bars
296
- .y((dimension) =>
297
- dimension.valueAccessor((d) => d.area).domainPaddingPixels()
298
- )
299
- .x((dimension) => dimension.valueAccessor((d) => d.country))
300
- )
301
- .labels((labels) => labels.display(true))
302
- .getConfig();
303
- }
304
-
305
- // ***********************************************************
306
- // Creating the correct bars in the correct order - functionality is agnostic to direction
307
- // ***********************************************************
308
- describe('it creates the correct bars in the correct order for the data', () => {
309
- let barsConfig: BarsConfig<CountryFactsDatum, string>;
310
- beforeEach(() => {
311
- barsConfig = undefined;
312
- });
313
- describe('if a user does not provide an explicit ordinal domain', () => {
314
- it('creates one bar and one ordinal axis tick per datum when data has no repeated ordinal values', () => {
315
- barsConfig = getHorizontalConfig(countryFactsData);
316
- mountHorizontalBarsComponent(barsConfig);
317
- cy.wait(axisTickTextWaitTime);
318
- cy.get(groupSelector).should('have.length', countryFactsData.length);
319
- cy.get(barSelector).should('have.length', countryFactsData.length);
320
- // D3 draws the top axis tick first, so we need to reverse the data to match the order of the axis ticks
321
- const reversedData = countryFactsData.slice().reverse();
322
- cy.get('.vic-axis-y-ordinal .tick text').each(($tick, index) => {
323
- expect($tick.text()).to.equal(reversedData[index].country);
324
- });
325
- cy.get('.vic-bars-label').each(($label, index) => {
326
- expect($label.text()).to.equal(countryFactsData[index].area.toString());
327
- });
328
- });
329
- it('creates one bar and one ordinal axis tick per unique ordinal value and uses the first of the repeated ordinal values when data has datums with duplicate ordinal values', () => {
330
- barsConfig = getHorizontalConfig([
331
- countryFactsData[0],
332
- countryFactsData.find((x) => x.country === 'Afghanistan'),
333
- ...countryFactsData.slice(1),
334
- ]);
335
- mountHorizontalBarsComponent(barsConfig);
336
- cy.wait(axisTickTextWaitTime);
337
- cy.get(groupSelector).should('have.length', countryFactsData.length);
338
- cy.get(barSelector).should('have.length', countryFactsData.length);
339
- // D3 draws the top axis tick first, so we need to reverse the data to match the order of the axis ticks
340
- const reversedData = countryFactsData.slice().reverse();
341
- cy.get('.vic-axis-y-ordinal .tick text').each(($tick, index) => {
342
- expect($tick.text()).to.equal(reversedData[index].country);
343
- });
344
- // Below tests that it did not use the second Afghanistan value
345
- cy.get(labelSelector).each(($label, index) => {
346
- expect($label.text()).to.equal(countryFactsData[index].area.toString());
347
- });
348
- });
349
- });
350
- describe('if a user provides an explicit ordinal domain', () => {
351
- const ordinalDomain = ['Afghanistan', 'Albania', 'Angola'];
352
- beforeEach(() => {
353
- barsConfig = new VicBarsConfigBuilder<CountryFactsDatum, string>()
354
- .data(countryFactsData)
355
- .vertical((bars) =>
356
- bars
357
- .y((dimension) =>
358
- dimension.valueAccessor((d) => d.area).domainPaddingPixels(50)
359
- )
360
- .x((dimension) =>
361
- dimension.valueAccessor((d) => d.country).domain(ordinalDomain)
362
- )
363
- )
364
- .labels((labels) => labels.display(true))
365
- .getConfig();
366
- });
367
- it('creates one bar and one ordinal axis tick per value in the provided domain and does not create bars for data not in domain', () => {
368
- mountVerticalBarsComponent(barsConfig);
369
- cy.wait(axisTickTextWaitTime);
370
- cy.get(groupSelector).should('have.length', ordinalDomain.length);
371
- cy.get(barSelector).should('have.length', ordinalDomain.length);
372
- // D3 draws the top axis tick first, so we need to reverse the domain to match the order of the axis ticks
373
- cy.get('.vic-axis-x-ordinal .tick text').each(($tick, index) => {
374
- expect($tick.text()).to.equal(ordinalDomain[index]);
375
- });
376
- });
377
- it('sets the quantitative domain according to all quantitative values in all of the data including those datums which are not drawn in the chart because of restricted domain', () => {
378
- mountVerticalBarsComponent(barsConfig);
379
- cy.wait(axisTickTextWaitTime);
380
- cy.get('.vic-axis-y-quantitative .tick text').then((ticks) => {
381
- const lastTickValue = ticks[ticks.length - 1].innerHTML;
382
- // expect "above" because we are adding 20 px of padding to the domain
383
- expect(parseFloat(lastTickValue)).to.be.above(
384
- max(countryFactsData.map((d) => d.area))
385
- );
386
- });
387
- });
388
- it('creates one bar and one ordinal axis tick per ordinal value in the domain and uses the first of the repeated ordinal values when data has datums with duplicate ordinal values', () => {
389
- barsConfig = new VicBarsConfigBuilder<CountryFactsDatum, string>()
390
- .data([
391
- ...countryFactsData,
392
- countryFactsData.find((x) => x.country === 'Afghanistan'),
393
- ])
394
- .vertical((bars) =>
395
- bars
396
- .y((dimension) =>
397
- dimension.valueAccessor((d) => d.area).domainPaddingPixels()
398
- )
399
- .x((dimension) =>
400
- dimension.valueAccessor((d) => d.country).domain(ordinalDomain)
401
- )
402
- )
403
- .labels((labels) => labels.display(true))
404
- .getConfig();
405
- mountVerticalBarsComponent(barsConfig);
406
- cy.wait(axisTickTextWaitTime);
407
- cy.get(groupSelector).should('have.length', ordinalDomain.length);
408
- cy.get(barSelector).should('have.length', ordinalDomain.length);
409
- // D3 draws the top axis tick first, so we need to reverse the data to match the order of the axis ticks
410
- cy.get('.vic-axis-x-ordinal .tick text').each(($tick, index) => {
411
- expect($tick.text()).to.equal(ordinalDomain[index]);
412
- });
413
- cy.get(labelSelector).first().should('have.text', '252072');
414
- });
415
- });
416
- });
417
-
418
- // Note: We do not test the functionality of the D3 scale, per policy of not testing external libs
419
- // This means that we do not attempt to assert that the height/width is the correct height/width for the data value, not do we test the value of the ordinal dimension of the bar.
420
- // Additionally, we test setting the quantitative domain under various conditions -- user-specified domain, user-specified includeZeroInDomain -- in the quantitative domain tests.
421
- // ***********************************************************
422
- // Bars are the correct size in the quantitative dimension
423
- // ***********************************************************
424
- [
425
- {
426
- mountFunction: mountHorizontalBarsComponent,
427
- orientation: 'horizontal',
428
- barAttr: 'width',
429
- },
430
- {
431
- mountFunction: mountVerticalBarsComponent,
432
- orientation: 'vertical',
433
- barAttr: 'height',
434
- },
435
- ].forEach(({ mountFunction, orientation, barAttr }) => {
436
- describe('bars have the expected size in the quantitative dimension', () => {
437
- let barsConfig: BarsConfig<CountryFactsDatum, string>;
438
- let testData: CountryFactsDatum[];
439
- beforeEach(() => {
440
- barsConfig = undefined;
441
- testData = cloneDeep(countryFactsData);
442
- });
443
- describe(`bars are ${orientation}`, () => {
444
- it(`a bar has a ${barAttr} of 0 if the quantitative value is 0`, () => {
445
- const zeroIndex = 2;
446
- testData[zeroIndex].area = 0;
447
- if (orientation === 'horizontal') {
448
- barsConfig = getHorizontalConfig(testData);
449
- } else {
450
- barsConfig = getVerticalConfig(testData);
451
- }
452
- mountFunction(barsConfig);
453
- cy.get(barSelector).each(($bar, i) => {
454
- const size = parseFloat($bar.attr(barAttr));
455
- if (i === zeroIndex) {
456
- expect(size).to.equal(0);
457
- } else {
458
- expect(size).to.be.above(0);
459
- }
460
- });
461
- });
462
- it(`a bar has a ${barAttr} of 0 if the quantitative value is non numeric`, () => {
463
- const nonNumericIndex = 3;
464
- testData[nonNumericIndex].area = undefined;
465
- if (orientation === 'horizontal') {
466
- barsConfig = getHorizontalConfig(testData);
467
- } else {
468
- barsConfig = getVerticalConfig(testData);
469
- }
470
- mountFunction(barsConfig);
471
- cy.get(barSelector).each(($bar, i) => {
472
- const size = parseFloat($bar.attr(barAttr));
473
- if (i === nonNumericIndex) {
474
- expect(size).to.equal(0);
475
- } else {
476
- expect(size).to.be.above(0);
477
- }
478
- });
479
- });
480
- it(`has bars with the correct ${barAttr} when some values are negative`, () => {
481
- const negativeIndex = 1;
482
- testData[negativeIndex].area = testData[negativeIndex + 1].area * -1;
483
- if (orientation === 'horizontal') {
484
- barsConfig = getHorizontalConfig(testData);
485
- } else {
486
- barsConfig = getVerticalConfig(testData);
487
- }
488
- mountFunction(barsConfig);
489
- cy.get(barSelector).then(($bars) => {
490
- const sizes = [];
491
- cy.wrap($bars).each(($bar) => {
492
- const size = parseFloat($bar.attr(barAttr));
493
- sizes.push(size);
494
- });
495
- expect(sizes[negativeIndex]).to.equal(sizes[negativeIndex + 1]);
496
- });
497
- });
498
- it('has bars that extend beyond the domain if the quantitative value is greater than the domain max - CORRECT BEHAVIOR CAUSES VISUAL ERROR', () => {
499
- const partialBuilder = new VicBarsConfigBuilder<
500
- CountryFactsDatum,
501
- string
502
- >()
503
- .data(testData)
504
- .labels((labels) => labels.display(true));
505
- if (orientation === 'horizontal') {
506
- barsConfig = partialBuilder
507
- .horizontal((bars) =>
508
- bars
509
- .x((dimension) =>
510
- dimension
511
- .valueAccessor((d) => d.area)
512
- .domain([0, 700000])
513
- .domainPaddingPixels()
514
- )
515
- .y((dimension) => dimension.valueAccessor((d) => d.country))
516
- )
517
- .getConfig();
518
- } else {
519
- barsConfig = partialBuilder
520
- .vertical((bars) =>
521
- bars
522
- .y((dimension) =>
523
- dimension
524
- .valueAccessor((d) => d.area)
525
- .domain([0, 700000])
526
- .domainPaddingPixels()
527
- )
528
- .x((dimension) => dimension.valueAccessor((d) => d.country))
529
- )
530
- .getConfig();
531
- }
532
- mountFunction(barsConfig);
533
- cy.get(barSelector)
534
- .eq(2)
535
- .then(($bar) => {
536
- const size = parseFloat($bar.attr(barAttr));
537
- const axisSelector =
538
- orientation === 'horizontal'
539
- ? '.vic-axis-x-quantitative'
540
- : '.vic-axis-y-quantitative';
541
- cy.get<SVGPathElement>(`${axisSelector} .domain`).then((domain) => {
542
- const domainRect = domain[0].getBBox();
543
- expect(size).to.be.above(domainRect[barAttr]);
544
- });
545
- });
546
- });
547
- it(`has bars with the correct ${barAttr} when values are negative and the smallest values is less than the domain min - CORRECT BEHAVIOR CAUSES VISUAL ERROR`, () => {
548
- const negativeIndex = 1;
549
- testData[negativeIndex].area = testData[negativeIndex + 1].area * -1;
550
- const partialBuilder = new VicBarsConfigBuilder<
551
- CountryFactsDatum,
552
- string
553
- >()
554
- .data(testData)
555
- .labels((labels) => labels.display(true));
556
- if (orientation === 'horizontal') {
557
- barsConfig = partialBuilder
558
- .horizontal((bars) =>
559
- bars
560
- .x((dimension) =>
561
- dimension
562
- .valueAccessor((d) => d.area)
563
- .domain([0, 1000000])
564
- .domainPaddingPixels()
565
- )
566
- .y((dimension) => dimension.valueAccessor((d) => d.country))
567
- )
568
- .getConfig();
569
- } else {
570
- barsConfig = partialBuilder
571
- .vertical((bars) =>
572
- bars
573
- .y((dimension) =>
574
- dimension
575
- .valueAccessor((d) => d.area)
576
- .domain([0, 1000000])
577
- .domainPaddingPixels()
578
- )
579
- .x((dimension) => dimension.valueAccessor((d) => d.country))
580
- )
581
- .getConfig();
582
- }
583
- mountFunction(barsConfig);
584
- cy.get(barSelector).then(($bars) => {
585
- const sizes = [];
586
- cy.wrap($bars).each(($bar) => {
587
- const size = parseFloat($bar.attr(barAttr));
588
- sizes.push(size);
589
- });
590
- expect(sizes[negativeIndex]).to.equal(sizes[negativeIndex + 1]);
591
- });
592
- });
593
- });
594
- });
595
- describe('bars all have the same size in the ordinal dimension', () => {
596
- let barsConfig: BarsConfig<CountryFactsDatum, string>;
597
- beforeEach(() => {
598
- barsConfig = undefined;
599
- });
600
- it(`bars are ${orientation} and have the same ${barAttr}`, () => {
601
- if (orientation === 'horizontal') {
602
- barsConfig = getHorizontalConfig(countryFactsData);
603
- } else {
604
- barsConfig = getVerticalConfig(countryFactsData);
605
- }
606
- mountFunction(barsConfig);
607
- cy.get(barSelector).then(($bars) => {
608
- const sizes = [];
609
- cy.wrap($bars).each(($bar) => {
610
- const size = parseFloat($bar.attr(barAttr));
611
- sizes.push(size);
612
- });
613
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
614
- expect(sizes.every((size) => size === sizes[0])).to.be.true;
615
- });
616
- });
617
- });
618
- });
619
-
620
- // ***********************************************************
621
- // Bars are correctly positioned in the quantitative dimension
622
- // ***********************************************************
623
- describe('bars have the expected origin in the quantitative dimension', () => {
624
- let barsConfig: BarsConfig<CountryFactsDatum, string>;
625
- let testData: CountryFactsDatum[];
626
- beforeEach(() => {
627
- barsConfig = undefined;
628
- testData = cloneDeep(countryFactsData);
629
- cy.viewport(800, 600);
630
- });
631
- describe('all values are positive', () => {
632
- it('has bars that start at the left chart margin if bars are horizontal', () => {
633
- barsConfig = getHorizontalConfig(testData);
634
- mountHorizontalBarsComponent(barsConfig);
635
- cy.get(groupSelector).then(($barGroups) => {
636
- cy.wrap($barGroups).each(($barGroup) => {
637
- const origin = getXTransform($barGroup);
638
- const margin = horizontalMargin.left;
639
- expect(origin).to.equal(margin);
640
- });
641
- });
642
- });
643
- it('has bars that start at the bottom chart margin if bars are vertical', () => {
644
- barsConfig = getVerticalConfig(testData);
645
- mountVerticalBarsComponent(barsConfig);
646
- cy.get(groupSelector).then(($barGroups) => {
647
- cy.wrap($barGroups).each(($barGroup) => {
648
- const origin = getYTransform($barGroup);
649
- cy.wrap($barGroup)
650
- .find(barSelector)
651
- .then(($bar) => {
652
- const barHeight = parseFloat($bar.attr('height'));
653
- expect(barHeight + origin).to.equal(
654
- chartHeight - verticalMargin.bottom
655
- );
656
- });
657
- });
658
- });
659
- });
660
- });
661
- describe('values are positive and negative', () => {
662
- let negativeBarIndex: number;
663
- it('has bars whose negative bars end at the start of the positive bars - bars are horizontal', () => {
664
- negativeBarIndex = 2;
665
- testData[negativeBarIndex].area = -testData[negativeBarIndex].area;
666
- barsConfig = getHorizontalConfig(testData);
667
- mountHorizontalBarsComponent(barsConfig);
668
- cy.get(groupSelector).then(($barGroups) => {
669
- cy.wrap($barGroups)
670
- .first()
671
- .then(($firstBarGroup) => {
672
- const positiveOrigin = getXTransform($firstBarGroup);
673
- cy.wrap($barGroups)
674
- .eq(negativeBarIndex)
675
- .then(($negativeBarGroup) => {
676
- const negativeOrigin = getXTransform($negativeBarGroup);
677
- cy.wrap($negativeBarGroup)
678
- .find(barSelector)
679
- .then(($negativeBar) => {
680
- const width = parseFloat($negativeBar.attr('width'));
681
- expect(negativeOrigin + width).to.equal(positiveOrigin);
682
- });
683
- });
684
- });
685
- });
686
- });
687
- it('has bars whose negative bars end at the start of the positive bars - bars are vertical', () => {
688
- negativeBarIndex = 2;
689
- testData[negativeBarIndex].area = -testData[negativeBarIndex].area;
690
- barsConfig = getVerticalConfig(testData);
691
- mountVerticalBarsComponent(barsConfig);
692
- cy.get(groupSelector).then(($barGroups) => {
693
- cy.wrap($barGroups)
694
- .first()
695
- .then(($firstBarGroup) => {
696
- const positiveYTransform = getYTransform($firstBarGroup);
697
- cy.wrap($firstBarGroup)
698
- .find(barSelector)
699
- .then(($positiveBar) => {
700
- const barHeight = parseFloat($positiveBar.attr('height'));
701
- const positiveOrigin = positiveYTransform + barHeight;
702
- cy.wrap($barGroups)
703
- .eq(negativeBarIndex)
704
- .then(($negativeBarGroup) => {
705
- const negativeOrigin = getYTransform($negativeBarGroup);
706
- expect(negativeOrigin).to.equal(positiveOrigin);
707
- });
708
- });
709
- });
710
- });
711
- });
712
- });
713
- describe('values are all negative', () => {
714
- beforeEach(() => {
715
- // ensure that chart can reach specified width of 600px, default cy viewport is 500 x 500
716
- cy.viewport(800, 600);
717
- });
718
- it('aligns all bars to the far right when bars are horizontal', () => {
719
- testData.forEach((d) => {
720
- d.area = -d.area;
721
- });
722
- barsConfig = getHorizontalConfig(testData);
723
- mountHorizontalBarsComponent(barsConfig);
724
- cy.get(groupSelector).then(($barGroups) => {
725
- cy.wrap($barGroups).each(($barGroup) => {
726
- const origin = getXTransform($barGroup);
727
- cy.wrap($barGroup)
728
- .find(barSelector)
729
- .then(($bar) => {
730
- const width = parseFloat($bar.attr('width'));
731
- expect(origin + width + horizontalMargin.right).to.equal(
732
- chartWidth
733
- );
734
- });
735
- });
736
- });
737
- });
738
- it('aligns all bars to the top when bars are vertical', () => {
739
- testData.forEach((d) => {
740
- d.area = -d.area;
741
- });
742
- barsConfig = getVerticalConfig(testData);
743
- mountVerticalBarsComponent(barsConfig);
744
- cy.get(groupSelector).then(($barGroups) => {
745
- cy.wrap($barGroups).each(($barGroup) => {
746
- const origin = getYTransform($barGroup);
747
- expect(origin).to.equal(verticalMargin.top);
748
- });
749
- });
750
- });
751
- });
752
- });
753
-
754
- // ***********************************************************
755
- // Tests of tooltips
756
- // ***********************************************************
757
- describe('displays tooltips for correct data per hover position', () => {
758
- beforeEach(() => {
759
- const barsConfig = new VicBarsConfigBuilder<CountryFactsDatum, string>()
760
- .data(countryFactsData)
761
- .horizontal((bars) =>
762
- bars
763
- .x((dimension) =>
764
- dimension
765
- .valueAccessor((d) => d.area)
766
- .formatFunction((d) => format('.1f')(d.area))
767
- .domainPaddingPixels()
768
- )
769
- .y((dimension) =>
770
- dimension
771
- .valueAccessor((d) => d.country)
772
- .formatFunction((d) => d.country.toUpperCase())
773
- )
774
- )
775
- .labels((labels) => labels.display(true))
776
- .getConfig();
777
- mountHorizontalBarsComponent(barsConfig);
778
- });
779
-
780
- countryFactsData.forEach((_, i) => {
781
- describe(`Data point at index ${i}`, () => {
782
- beforeEach(() => {
783
- cy.get(barSelector).eq(i).realHoverAndWait();
784
- });
785
- it('is okay', () => {
786
- cy.get('svg').should('exist');
787
- });
788
- it('displays a tooltip', () => {
789
- cy.get('.vic-html-tooltip-overlay').should('exist');
790
- });
791
- it('hides the tooltip on Esc button press', () => {
792
- cy.get('body').focus().type('{esc}');
793
- cy.get('.vic-html-tooltip-overlay').should('not.exist');
794
- });
795
- it('tooltip displays correctly formatted data', () => {
796
- cy.get('.x-value').should(
797
- 'have.text',
798
- format('.1f')(countryFactsData[i].area)
799
- );
800
- cy.get('.y-value').should(
801
- 'have.text',
802
- countryFactsData[i].country.toUpperCase()
803
- );
804
- });
805
- it('tooltip appears at the correct position', () => {
806
- cy.get('.vic-html-tooltip-overlay').then(($el) => {
807
- const tooltipBox = $el[0].getBoundingClientRect();
808
- cy.get(barSelector)
809
- .eq(i)
810
- .then(($el) => {
811
- const barBox = $el[0].getBoundingClientRect();
812
- expect((tooltipBox.left + tooltipBox.right) / 2).to.be.closeTo(
813
- (barBox.left + barBox.right) / 2,
814
- 5
815
- );
816
- expect(tooltipBox.bottom).to.be.closeTo(
817
- (barBox.top + barBox.bottom) / 2 - DEFAULT_TOOLTIP_Y_OFFSET,
818
- 10
819
- );
820
- });
821
- });
822
- });
823
- });
824
- });
825
- });
826
-
827
- // ***********************************************************
828
- // Fill of bars tested under categorical.cy.ts
829
- // ***********************************************************