@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,191 +0,0 @@
1
- import { AxisTimeInterval, format, utcFormat } from 'd3';
2
- import { AbstractConstructor } from '../../core/common-behaviors/constructor';
3
- import { ContinuousValue } from '../../core/types/values';
4
- import { XyAxis } from '../base/xy-axis-base';
5
- import { QuantitativeTicks } from '../ticks/ticks';
6
- import { VicQuantitativeAxisConfig as QuantitativeAxisConfig } from './quantitative-axis-config';
7
-
8
- export function quantitativeAxisMixin<
9
- Tick extends ContinuousValue,
10
- T extends AbstractConstructor<XyAxis<Tick, QuantitativeTicks<Tick>>>,
11
- >(Base: T) {
12
- abstract class Mixin extends Base {
13
- override config: QuantitativeAxisConfig<Tick>;
14
-
15
- setTicks(tickFormat: string | ((value: Tick) => string)): void {
16
- if (this.config.ticks.values) {
17
- this.setSpecifiedTickValues(tickFormat);
18
- } else {
19
- this.setUnspecifiedTickValues(tickFormat);
20
- }
21
- }
22
-
23
- setSpecifiedTickValues(
24
- tickFormat: string | ((value: Tick) => string)
25
- ): void {
26
- const validTickValues = this.getValidTickValues();
27
- this.axis.tickValues(validTickValues);
28
- this.axis.tickFormat((d) => {
29
- const formatter = d instanceof Date ? utcFormat : format;
30
- return typeof tickFormat === 'function'
31
- ? tickFormat(d)
32
- : formatter(tickFormat)(d);
33
- });
34
- }
35
-
36
- getValidTickValues(): Tick[] {
37
- const domain = this.scale.domain();
38
- const validValues = [];
39
- this.config.ticks.values.forEach((value) => {
40
- if (domain[0] <= value && value <= domain[1]) {
41
- validValues.push(value);
42
- }
43
- });
44
- return validValues;
45
- }
46
-
47
- setUnspecifiedTickValues(
48
- tickFormat: string | ((value: Tick) => string)
49
- ): void {
50
- const validNumTicks = this.getSuggestedNumTicks(tickFormat);
51
- this.axis.ticks(validNumTicks);
52
- this.axis.tickFormat((d) => {
53
- const formatter = d instanceof Date ? utcFormat : format;
54
- return typeof tickFormat === 'function'
55
- ? tickFormat(d)
56
- : formatter(tickFormat)(d);
57
- });
58
- }
59
-
60
- getSuggestedNumTicks(
61
- tickFormat: string | ((value: Tick) => string)
62
- ): number | AxisTimeInterval {
63
- let numSuggestedTicks = this.getNumTicks();
64
- if (
65
- typeof tickFormat === 'string' &&
66
- typeof numSuggestedTicks === 'number'
67
- ) {
68
- numSuggestedTicks = Math.round(numSuggestedTicks);
69
-
70
- if (this.scale.domain()[0] instanceof Date) {
71
- const maxTicks = this.getMaxTicksForDateFormat(tickFormat);
72
- if (maxTicks !== null) {
73
- return Math.min(numSuggestedTicks, maxTicks);
74
- }
75
- }
76
- if (tickFormat.includes('.')) {
77
- return this.getValidNumTicksForNumberFormatString(
78
- numSuggestedTicks,
79
- tickFormat
80
- );
81
- }
82
- return numSuggestedTicks;
83
- } else {
84
- return numSuggestedTicks;
85
- }
86
- }
87
-
88
- getNumTicks(): number | AxisTimeInterval {
89
- return (
90
- this.config.ticks.count ||
91
- this.config.getNumTicksBySpacing(this.config.ticks.spacing, {
92
- height: this.chart.config.height,
93
- width: this.chart.config.width,
94
- })
95
- );
96
- }
97
-
98
- getValidNumTicksForNumberFormatString(
99
- numTicks: number,
100
- tickFormat: string
101
- ): number {
102
- let numDecimalPlaces = Number(tickFormat.split('.')[1][0]);
103
- if (tickFormat.includes('%')) {
104
- numDecimalPlaces = numDecimalPlaces + 2;
105
- }
106
- const [start, end] = this.scale.domain();
107
- const range = end - start;
108
- const minStep = Math.pow(10, -1 * numDecimalPlaces);
109
- const rawCount = range / minStep;
110
- const numValidTicks = Math.round(rawCount);
111
- if (numTicks < numValidTicks) {
112
- return numTicks;
113
- } else {
114
- return numValidTicks;
115
- }
116
- }
117
-
118
- getMaxTicksForDateFormat(tickFormat: string): number | null {
119
- const [startDate, endDate] = this.scale.domain() as [Date, Date];
120
-
121
- // Year-only formatters: %Y, %y
122
- if (tickFormat === '%Y' || tickFormat === '%y') {
123
- const startYear = startDate.getUTCFullYear();
124
- const endYear = endDate.getUTCFullYear();
125
- return endYear - startYear + 1;
126
- }
127
-
128
- // Quarter formatter: %Y Q%q
129
- if (tickFormat === '%Y Q%q') {
130
- const startYear = startDate.getUTCFullYear();
131
- const startQuarter = Math.floor(startDate.getUTCMonth() / 3);
132
- const endYear = endDate.getUTCFullYear();
133
- const endQuarter = Math.floor(endDate.getUTCMonth() / 3);
134
-
135
- return (endYear - startYear) * 4 + (endQuarter - startQuarter) + 1;
136
- }
137
-
138
- // Month-year formatters: %B %Y, %b %Y
139
- if (tickFormat === '%B %Y' || tickFormat === '%b %Y') {
140
- const startYear = startDate.getUTCFullYear();
141
- const startMonth = startDate.getUTCMonth();
142
- const endYear = endDate.getUTCFullYear();
143
- const endMonth = endDate.getUTCMonth();
144
-
145
- return (endYear - startYear) * 12 + (endMonth - startMonth) + 1;
146
- }
147
-
148
- // Full date formatters: %B %d, %Y
149
- if (
150
- tickFormat === '%B %d, %Y' ||
151
- tickFormat === '%m/%d/%Y' ||
152
- tickFormat === '%Y-%m-%d'
153
- ) {
154
- const timeDiff = endDate.getTime() - startDate.getTime();
155
- const daysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
156
- return daysDiff + 1;
157
- }
158
-
159
- // Additional common time formatters for completeness
160
-
161
- // Month formatters: %B (full month), %b (abbreviated), %m (numeric)
162
- if (tickFormat === '%B' || tickFormat === '%b' || tickFormat === '%m') {
163
- const startYear = startDate.getUTCFullYear();
164
- const startMonth = startDate.getUTCMonth();
165
- const endYear = endDate.getUTCFullYear();
166
- const endMonth = endDate.getUTCMonth();
167
-
168
- return (endYear - startYear) * 12 + (endMonth - startMonth) + 1;
169
- }
170
-
171
- // Day formatters: %d (day of month), %e (day of month with space), %j (day of year)
172
- if (tickFormat === '%d' || tickFormat === '%e' || tickFormat === '%j') {
173
- const timeDiff = endDate.getTime() - startDate.getTime();
174
- const daysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
175
- return daysDiff + 1;
176
- }
177
-
178
- // Week formatters: %U, %W (week of year)
179
- if (tickFormat === '%U' || tickFormat === '%W') {
180
- const timeDiff = endDate.getTime() - startDate.getTime();
181
- const weeksDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24 * 7));
182
- return weeksDiff + 1;
183
- }
184
-
185
- // For composite formats or unrecognized formats, return null to use default logic
186
- return null;
187
- }
188
- }
189
-
190
- return Mixin;
191
- }
@@ -1,141 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { TickWrap } from './tick-wrap';
3
-
4
- const DEFAULT = {
5
- _wrapWidth: 'bandwidth',
6
- _lineHeight: 1.1,
7
- };
8
-
9
- export class TickWrapBuilder {
10
- _width:
11
- | 'bandwidth'
12
- | number
13
- | ((chartWidth: number, numOfTicks: number) => number);
14
- _maintainXPosition: boolean;
15
- _maintainYPosition: boolean;
16
- _lineHeight: number;
17
- _breakOnChars: string[];
18
- _spaceAroundBreakChars: boolean;
19
-
20
- constructor() {
21
- safeAssign(this, DEFAULT);
22
- }
23
-
24
- /**
25
- * OPTIONAL. Sets the characters to break on when wrapping text.
26
- * By default, text will only break on spaces.
27
- *
28
- * @default []
29
- */
30
- breakOnChars(breakOnChars: string[]) {
31
- this._breakOnChars = breakOnChars;
32
- return this;
33
- }
34
-
35
- /**
36
- * OPTIONAL. Sets the line-height property of the tick labels. Adjusting the line-height can useful when wrapping labels, particularly on a y-axis.
37
- *
38
- * @param value - The line-height of the tick labels, as a multiplier of the font size. For example, 1.1 is 110% of the font size, 1.5 is 150% of the font size, etc.
39
- */
40
- lineHeight(value: number | null) {
41
- if (value === null) {
42
- this._lineHeight = undefined;
43
- return this;
44
- }
45
- this._lineHeight = value;
46
- return this;
47
- }
48
-
49
- /**
50
- * OPTIONAL. If true, the x position of the text will be maintained.
51
- *
52
- * This is useful, for example, for centering bar labels on a vertical bar chart.
53
- *
54
- * @default false
55
- */
56
- maintainXPosition(maintainXPosition: boolean) {
57
- this._maintainXPosition = maintainXPosition;
58
- return this;
59
- }
60
-
61
- /**
62
- * OPTIONAL. If true, the y position of the text will be maintained.
63
- *
64
- * This is useful, for example, for centering bar labels on a horizontal bar chart.
65
- *
66
- * @default false
67
- */
68
- maintainYPosition(maintainYPosition: boolean) {
69
- this._maintainYPosition = maintainYPosition;
70
- return this;
71
- }
72
-
73
- /**
74
- * OPTIONAL. If true, spaces will be added around break characters.
75
- *
76
- * This is useful when breaking on punctuation characters, to avoid words being stuck to punctuation.
77
- * For example, breaking on commas without spaces around them would result in "word," at the end of one line and "word" at the start of the next line.
78
- *
79
- * @default false
80
- */
81
- spaceAroundBreakChars(spaceAroundBreakChars: boolean) {
82
- this._spaceAroundBreakChars = spaceAroundBreakChars;
83
- return this;
84
- }
85
-
86
- /**
87
- * OPTIONAL. Sets the width to wrap the text to. Can be a number, a function that takes the chart width and number of ticks, or 'bandwidth'.
88
- *
89
- * If 'bandwidth', the width will be the bandwidth of the scale.
90
- *
91
- * @default 'bandwidth'
92
- */
93
- width(width: 'bandwidth'): this;
94
- width(width: number): this;
95
- width(width: (chartWidth: number, numOfTicks: number) => number): this;
96
- width(width: null): this;
97
- width(
98
- width:
99
- | 'bandwidth'
100
- | number
101
- | ((chartWidth: number, numOfTicks: number) => number)
102
- | null
103
- ) {
104
- if (width === null) {
105
- this._width = undefined;
106
- return this;
107
- }
108
- this._width = width;
109
- return this;
110
- }
111
-
112
- /**
113
- * @internal Not meant to be called by consumers of the library.
114
- */
115
- _build(dimension: 'x' | 'y'): TickWrap {
116
- this.validate(dimension);
117
- return new TickWrap({
118
- width: this._width,
119
- maintainXPosition: this._maintainXPosition,
120
- maintainYPosition: this._maintainYPosition,
121
- lineHeight: this._lineHeight,
122
- breakOnChars: this._breakOnChars,
123
- spaceAroundBreakChars: this._spaceAroundBreakChars,
124
- });
125
- }
126
-
127
- private validate(dimension: 'x' | 'y'): void {
128
- this._maintainXPosition =
129
- this._maintainXPosition === undefined
130
- ? dimension === 'y'
131
- ? true
132
- : false
133
- : this._maintainXPosition;
134
- this._maintainYPosition =
135
- this._maintainYPosition === undefined
136
- ? dimension === 'x'
137
- ? false
138
- : true
139
- : this._maintainYPosition;
140
- }
141
- }
@@ -1,11 +0,0 @@
1
- export interface TickWrapOptions {
2
- width:
3
- | 'bandwidth'
4
- | number
5
- | ((chartWidth: number, numOfTicks: number) => number);
6
- maintainXPosition: boolean;
7
- maintainYPosition: boolean;
8
- lineHeight: number;
9
- breakOnChars: string[];
10
- spaceAroundBreakChars: boolean;
11
- }
@@ -1,360 +0,0 @@
1
- // ***********************************************************
2
- // Vertical bars chart component set up
3
-
4
- import { Component, Input } from '@angular/core';
5
- import {
6
- BarsConfig,
7
- ChartConfig,
8
- DataValue,
9
- VicBarsConfigBuilder,
10
- VicBarsModule,
11
- VicChartConfigBuilder,
12
- VicChartModule,
13
- VicXOrdinalAxisConfig,
14
- VicXOrdinalAxisConfigBuilder,
15
- VicXQuantitativeAxisConfig,
16
- VicXQuantitativeAxisConfigBuilder,
17
- VicXyAxisModule,
18
- VicYOrdinalAxisConfig,
19
- VicYOrdinalAxisConfigBuilder,
20
- VicYQuantitativeAxisConfig,
21
- VicYQuantitativeAxisConfigBuilder,
22
- } from '@mathstack/viz';
23
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
24
-
25
- type Datum = { state: string; value: number };
26
-
27
- const data = [
28
- { state: 'Alabama but a long label that is wrapped', value: 10 },
29
- { state: 'Alaska', value: 5 },
30
- { state: 'Arizona but a long label that is wrapped', value: 8 },
31
- { state: 'Arkansas', value: 2 },
32
- { state: 'California but a long label that is wrapped', value: 7 },
33
- { state: 'Colorado', value: 6 },
34
- ];
35
-
36
- const oneLineText = ['White/Causasian', 'Black', 'Native American'];
37
- const twoLineText = [
38
- 'Asian-American or Pacific Islander',
39
- 'Non-Hispanic Latino',
40
- ];
41
- const fourLineText = ['ThisIs/ALongMadeUp/ValueWithNo/Breaks'];
42
-
43
- const dataWithDelimeters = [
44
- { state: oneLineText[0], value: 10 },
45
- { state: twoLineText[0], value: 5 },
46
- { state: oneLineText[1], value: 8 },
47
- { state: twoLineText[1], value: 2 },
48
- { state: fourLineText[0], value: 7 },
49
- { state: oneLineText[2], value: 6 },
50
- ];
51
-
52
- const elementPositionDelta = 0.5;
53
- const initialRenderWaitTime = 1000;
54
-
55
- const assertBeforeAndAfterWindowResize = (assertions: () => void) => {
56
- assertions();
57
-
58
- // Resize window to check that label positioning is maintained
59
- cy.viewport(300, 300);
60
- cy.wait(2000);
61
- assertions();
62
- };
63
-
64
- // ***********************************************************
65
- // Horizontal bar chart component set up
66
- // ***********************************************************
67
- @Component({
68
- // eslint-disable-next-line @angular-eslint/component-selector
69
- selector: 'app-test-horizontal-bars',
70
- template: `
71
- <vic-xy-chart [config]="chartConfig">
72
- <ng-container svg-elements>
73
- <svg:g
74
- vic-x-quantitative-axis
75
- [config]="xQuantitativeAxisConfig"
76
- ></svg:g>
77
- <svg:g vic-y-ordinal-axis [config]="yOrdinalAxisConfig"></svg:g>
78
- <svg:g vic-primary-marks-bars [config]="barsConfig"></svg:g>
79
- </ng-container>
80
- </vic-xy-chart>
81
- `,
82
- styles: [],
83
- imports: [VicChartModule, VicBarsModule, VicXyAxisModule],
84
- })
85
- class TestHorizontalBarsComponent {
86
- @Input() barsConfig: BarsConfig<Datum, string>;
87
- @Input() xQuantitativeAxisConfig: VicXQuantitativeAxisConfig<number>;
88
- @Input() yOrdinalAxisConfig: VicYOrdinalAxisConfig<string>;
89
- chartConfig: ChartConfig = new VicChartConfigBuilder()
90
- .maxHeight(600)
91
- .margin({ top: 20, right: 20, bottom: 20, left: 160 })
92
- .scalingStrategy('responsive-width')
93
- .getConfig();
94
- }
95
-
96
- const mountHorizontalBarsComponent = (
97
- barsConfig: BarsConfig<Datum, string>,
98
- yAxisConfig: VicYOrdinalAxisConfig<DataValue>
99
- ): void => {
100
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder()
101
- .ticks((ticks) => ticks.format('.0f'))
102
- .getConfig();
103
-
104
- cy.mount(TestHorizontalBarsComponent, {
105
- componentProperties: {
106
- barsConfig: barsConfig,
107
- xQuantitativeAxisConfig: xAxisConfig,
108
- yOrdinalAxisConfig: yAxisConfig,
109
- },
110
- });
111
- };
112
-
113
- describe('horizontal bar chart tick labels', () => {
114
- let barsConfig: BarsConfig<Datum, string>;
115
- let yAxisConfig: VicYOrdinalAxisConfig<DataValue>;
116
- beforeEach(() => {
117
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
118
- .data(data)
119
- .horizontal((bars) =>
120
- bars
121
- .y((dimension) => dimension.valueAccessor((d) => d.state))
122
- .x((dimension) =>
123
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
124
- )
125
- )
126
- .color((dimension) =>
127
- dimension.valueAccessor(() => '').range(['#000080'])
128
- )
129
- .getConfig();
130
- yAxisConfig = new VicYOrdinalAxisConfigBuilder()
131
- .ticks((ticks) => ticks.wrap((wrap) => wrap.width(80)))
132
- .getConfig();
133
- mountHorizontalBarsComponent(barsConfig, yAxisConfig);
134
- cy.wait(initialRenderWaitTime); // wait for initial render
135
- });
136
- it('renders single-line ticks for short labels', () => {
137
- assertBeforeAndAfterWindowResize(() =>
138
- cy.get('.vic-axis-y-ordinal .tick text').then((ticks) => {
139
- ticks.each((i, $tick) => {
140
- if (i % 2 === 0) {
141
- const tspans = $tick.getElementsByTagName('tspan');
142
- expect(tspans.length).to.equal(1);
143
- }
144
- });
145
- })
146
- );
147
- });
148
-
149
- it('correctly wraps and renders multi-line ticks for long labels', () => {
150
- assertBeforeAndAfterWindowResize(() =>
151
- cy.get('.vic-axis-y-ordinal .tick text').then((ticks) => {
152
- ticks.each((i, $tick) => {
153
- if (i % 2 !== 0) {
154
- const tspans = $tick.getElementsByTagName('tspan');
155
- expect(tspans.length).to.equal(3);
156
-
157
- // all dy values are different
158
- const dyValues = Array.from(tspans).map((span) =>
159
- span.getAttribute('dy')
160
- );
161
- expect(new Set(dyValues).size).to.equal(3);
162
-
163
- // dy values are evenly spaced
164
- const differences = dyValues.reduce((acc, val, i) => {
165
- if (i === 0) return acc;
166
- const diff =
167
- parseFloat(val || '0') - parseFloat(dyValues[i - 1] || '0');
168
- const diffRoundedToPointOne = Math.round(diff * 10) / 10;
169
- acc.push(diffRoundedToPointOne);
170
- return acc;
171
- }, []);
172
- expect(new Set(differences).size).to.equal(1);
173
- }
174
- });
175
- })
176
- );
177
- });
178
-
179
- it('correctly centers tick labels on tick marks, vertically', () => {
180
- assertBeforeAndAfterWindowResize(() =>
181
- cy.get('.vic-axis-y-ordinal .tick line').then((ticks) => {
182
- ticks.each((i, $tick) => {
183
- cy.get('.vic-axis-y-ordinal .tick text')
184
- .eq(i)
185
- .then(($label) => {
186
- const labelRect = $label[0].getBoundingClientRect();
187
- const tickLineRect = $tick.getBoundingClientRect();
188
- expect(labelRect.top + labelRect.height / 2).to.be.closeTo(
189
- tickLineRect.top,
190
- elementPositionDelta
191
- );
192
- });
193
- });
194
- })
195
- );
196
- });
197
-
198
- it('correctly wraps long ticks with breaking characters', () => {
199
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
200
- .data(dataWithDelimeters)
201
- .horizontal((bars) =>
202
- bars
203
- .y((dimension) => dimension.valueAccessor((d) => d.state))
204
- .x((dimension) =>
205
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
206
- )
207
- )
208
- .color((dimension) =>
209
- dimension.valueAccessor(() => '').range(['#000080'])
210
- )
211
- .getConfig();
212
- yAxisConfig = new VicYOrdinalAxisConfigBuilder()
213
- .ticks((ticks) =>
214
- ticks.wrap((wrap) => wrap.width(80).breakOnChars(['/']))
215
- )
216
- .getConfig();
217
- mountHorizontalBarsComponent(barsConfig, yAxisConfig);
218
- cy.wait(initialRenderWaitTime); // wait for initial render
219
- assertBeforeAndAfterWindowResize(() =>
220
- cy.get('.vic-axis-y-ordinal .tick text').then((ticks) => {
221
- ticks.each((i, $tick) => {
222
- const tspans = $tick.getElementsByTagName('tspan');
223
- const textNoSpaces = $tick.textContent.replace(/\s/g, '');
224
- // have to compare spaceless because tspan insertion removes spaces
225
- if (
226
- oneLineText.map((s) => s.replace(/\s/g, '')).includes(textNoSpaces)
227
- ) {
228
- expect(tspans.length).to.equal(1);
229
- } else if (
230
- twoLineText.map((s) => s.replace(/\s/g, '')).includes(textNoSpaces)
231
- ) {
232
- expect(tspans.length).to.equal(2);
233
- } else if (
234
- fourLineText.map((s) => s.replace(/\s/g, '')).includes(textNoSpaces)
235
- ) {
236
- expect(tspans.length).to.equal(4);
237
- }
238
- });
239
- })
240
- );
241
- });
242
- });
243
-
244
- // ***********************************************************
245
- // Vertical bar chart component set up
246
- // ***********************************************************
247
- @Component({
248
- // eslint-disable-next-line @angular-eslint/component-selector
249
- selector: 'app-test-vertical-bars',
250
- template: `
251
- <vic-xy-chart [config]="chartConfig">
252
- <ng-container svg-elements>
253
- <svg:g
254
- vic-y-quantitative-axis
255
- [config]="yQuantitativeAxisConfig"
256
- ></svg:g>
257
- <svg:g vic-x-ordinal-axis [config]="xOrdinalAxisConfig"></svg:g>
258
- <svg:g vic-primary-marks-bars [config]="barsConfig"></svg:g>
259
- </ng-container>
260
- </vic-xy-chart>
261
- `,
262
- styles: [],
263
- imports: [VicChartModule, VicBarsModule, VicXyAxisModule],
264
- })
265
- class TestVerticalBarsComponent {
266
- @Input() barsConfig: BarsConfig<Datum, string>;
267
- @Input() yQuantitativeAxisConfig: VicYQuantitativeAxisConfig<number>;
268
- @Input() xOrdinalAxisConfig: VicXOrdinalAxisConfig<string>;
269
- chartConfig: ChartConfig = new VicChartConfigBuilder()
270
- .maxHeight(600)
271
- .margin({ top: 20, right: 20, bottom: 10, left: 20 })
272
- .scalingStrategy('responsive-width')
273
- .getConfig();
274
- }
275
-
276
- const mountVerticalBarsComponent = (
277
- barsConfig: BarsConfig<Datum, string>,
278
- xAxisConfig: VicXOrdinalAxisConfig<DataValue>
279
- ): void => {
280
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder()
281
- .ticks((ticks) => ticks.format('.0f'))
282
- .getConfig();
283
-
284
- cy.mount(TestVerticalBarsComponent, {
285
- componentProperties: {
286
- barsConfig: barsConfig,
287
- yQuantitativeAxisConfig: yAxisConfig,
288
- xOrdinalAxisConfig: xAxisConfig,
289
- },
290
- });
291
- };
292
-
293
- describe('vertical bar chart tick labels', () => {
294
- let barsConfig: BarsConfig<Datum, string>;
295
- let xAxisConfig: VicXOrdinalAxisConfig<DataValue>;
296
- beforeEach(() => {
297
- barsConfig = new VicBarsConfigBuilder<Datum, string>()
298
- .data(data)
299
- .vertical((bars) =>
300
- bars
301
- .x((dimension) => dimension.valueAccessor((d) => d.state))
302
- .y((dimension) =>
303
- dimension.valueAccessor((d) => d.value).domainPaddingPixels(-4)
304
- )
305
- )
306
- .color((dimension) =>
307
- dimension.valueAccessor(() => '').range(['#000080'])
308
- )
309
- .getConfig();
310
- xAxisConfig = new VicXOrdinalAxisConfigBuilder()
311
- .ticks((ticks) => ticks.wrap((wrap) => wrap.width('bandwidth')))
312
- .getConfig();
313
- mountVerticalBarsComponent(barsConfig, xAxisConfig);
314
- cy.wait(initialRenderWaitTime); // wait for initial render
315
- });
316
- it('correctly wraps long ticks', () => {
317
- cy.get('.vic-axis-x-ordinal .tick text').then((ticks) => {
318
- ticks.each((i, $tick) => {
319
- const tspans = $tick.getElementsByTagName('tspan');
320
- // ticks are grabbed left to right, i.e. AL is first tick, CO last tick
321
- if (i % 2 === 0) {
322
- expect(tspans.length).to.equal(3);
323
- } else {
324
- expect(tspans.length).to.equal(1);
325
- }
326
- });
327
- });
328
- });
329
-
330
- it('correctly centers tick labels on tick marks, horizontally', () => {
331
- cy.get('.vic-axis-x-ordinal .tick line').then((ticks) => {
332
- ticks.each((i, $tick) => {
333
- cy.get('.vic-axis-x-ordinal .tick text')
334
- .eq(i)
335
- .then(($label) => {
336
- const labelRect = $label[0].getBoundingClientRect();
337
- const tickLineRect = $tick.getBoundingClientRect();
338
- expect(labelRect.left + labelRect.width / 2).to.be.closeTo(
339
- tickLineRect.left,
340
- elementPositionDelta
341
- );
342
- });
343
- });
344
- });
345
- });
346
-
347
- it('wrapped labels are no wider than the width of the bar is wrapped with bandwidth', () => {
348
- cy.get('.vic-bars-group').then((bars) => {
349
- bars.each((i, $bar) => {
350
- cy.get('.vic-axis-x-ordinal .tick text')
351
- .eq(i)
352
- .then(($label) => {
353
- const labelRect = $label[0].getBoundingClientRect();
354
- const barRect = $bar.getBoundingClientRect();
355
- expect(labelRect.width).to.be.lessThan(barRect.width + 1);
356
- });
357
- });
358
- });
359
- });
360
- });