@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,40 +0,0 @@
1
- export * from './base/config/xy-axis-builder';
2
- export * from './base/config/xy-axis-config';
3
- export * from './base/config/xy-axis-options';
4
- export * from './base/xy-axis-base';
5
- export * from './baseline/axis-baseline';
6
- export * from './baseline/axis-baseline-builder';
7
- export * from './baseline/axis-baseline-options';
8
- export * from './grid/grid-builder';
9
- export * from './grid/grid-config';
10
- export * from './grid/grid-options';
11
- export * from './label/axis-label';
12
- export * from './label/axis-label-builder';
13
- export * from './label/axis-label-options';
14
- export * from './ordinal/ordinal-axis';
15
- export * from './ordinal/ordinal-axis-config';
16
- export * from './quantitative/quantitative-axis';
17
- export * from './quantitative/quantitative-axis-config';
18
- export * from './ticks/tick-wrap/tick-wrap';
19
- export * from './ticks/tick-wrap/tick-wrap-builder';
20
- export * from './ticks/tick-wrap/tick-wrap-options';
21
- export * from './ticks/ticks';
22
- export * from './ticks/ticks-builder';
23
- export * from './ticks/ticks-options';
24
- export * from './x/x-axis';
25
- export * from './x/x-axis-config';
26
- export * from './x-ordinal/x-ordinal-axis-builder';
27
- export * from './x-ordinal/x-ordinal-axis-config';
28
- export * from './x-ordinal/x-ordinal-axis.component';
29
- export * from './x-quantitative/x-quantitative-axis-builder';
30
- export * from './x-quantitative/x-quantitative-axis-config';
31
- export * from './x-quantitative/x-quantitative-axis.component';
32
- export * from './xy-axis.module';
33
- export * from './y/y-axis';
34
- export * from './y/y-axis-config';
35
- export * from './y-ordinal/y-ordinal-axis-builder';
36
- export * from './y-ordinal/y-ordinal-axis-config';
37
- export * from './y-ordinal/y-ordinal-axis.component';
38
- export * from './y-quantitative-axis/y-quantitative-axis-builder';
39
- export * from './y-quantitative-axis/y-quantitative-axis-config';
40
- export * from './y-quantitative-axis/y-quantitative-axis.component';
@@ -1,140 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { SvgTextWrapBuilder } from '../../svg-text-wrap/svg-text-wrap-builder';
3
- import { AxisLabel } from './axis-label';
4
-
5
- const DEFAULT = {
6
- _offset: { x: 0, y: 0 },
7
- _position: 'middle',
8
- };
9
-
10
- export class AxisLabelBuilder {
11
- protected _anchor: 'start' | 'middle' | 'end';
12
- protected _offset: {
13
- x: number;
14
- y: number;
15
- };
16
- protected _position: 'start' | 'middle' | 'end';
17
- protected _text: string;
18
- protected textWrapBuilder: SvgTextWrapBuilder;
19
- protected textWrapFunction: (wrap: SvgTextWrapBuilder) => void;
20
-
21
- constructor() {
22
- safeAssign(this, DEFAULT);
23
- }
24
-
25
- /**
26
- * OPTIONAL. The [text-anchor](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-anchor) for the axis label.
27
- *
28
- * If not provided or if called with null, the anchor will be determined by the position.
29
- *
30
- * @default specific to the position
31
- */
32
- anchor(value: 'start' | 'middle' | 'end' | null): this {
33
- if (value === null) {
34
- this._anchor = undefined;
35
- return this;
36
- }
37
- this._anchor = value;
38
- return this;
39
- }
40
-
41
- /**
42
- * OPTIONAL. The offset for the axis label from the position that would otherwise be created. Allows for fine-tuning the position of the label.
43
- *
44
- * Positive y values will move the label down, positive x values will move the label to the right.
45
- *
46
- * If not provided or if called with null, labels parallel to the axis will be placed at the far extent of the margin. Labels perpendicular to the axis will be placed at the axis line. The latter will likely need an offset.
47
- *
48
- * @default { x: 0, y: 0 }
49
- */
50
- offset(offset: null): this;
51
- offset(offset: { x?: number; y?: number }): this;
52
- offset(offset: { x?: number; y?: number } | null): this {
53
- if (offset === null) {
54
- this._offset = DEFAULT._offset;
55
- return this;
56
- }
57
- this._offset = {
58
- x: offset.x || 0,
59
- y: offset.y || 0,
60
- };
61
- return this;
62
- }
63
-
64
- /**
65
- * OPTIONAL. The position of the axis label relative to the axis.
66
- *
67
- * If the axis is horizontal, the options are 'start' is left, 'middle' is center, and 'end' is right.
68
- *
69
- * If the axis is vertical, the options are 'start' is top, 'middle' is center, and 'end' is bottom.
70
- *
71
- * @default 'middle'
72
- */
73
- position(value: 'start' | 'middle' | 'end'): this {
74
- this._position = value;
75
- return this;
76
- }
77
-
78
- /**
79
- * The text for the axis label.
80
- */
81
- text(value: string): this {
82
- this._text = value;
83
- return this;
84
- }
85
-
86
- /**
87
- * OPTIONAL. Specifies properties for wrapping the text of the label.
88
- *
89
- * To unset the wrap, call with null.
90
- */
91
- wrap(wrap: null): this;
92
- wrap(wrap: (wrap: SvgTextWrapBuilder) => void): this;
93
- wrap(wrap: ((wrap: SvgTextWrapBuilder) => void) | null): this {
94
- if (wrap === null) {
95
- this.textWrapFunction = undefined;
96
- return this;
97
- }
98
- this.textWrapFunction = wrap;
99
- return this;
100
- }
101
-
102
- /**
103
- * @internal Not meant to be called by consumers of the library.
104
- */
105
- _build(dimension: 'x' | 'y'): AxisLabel {
106
- if (this.textWrapFunction) this.createTextWrapBuilder(dimension);
107
- return new AxisLabel({
108
- anchor: this.getAnchorForDimension(dimension),
109
- position: this._position,
110
- offset: this._offset,
111
- text: this._text,
112
- wrap: this.textWrapBuilder?.build(),
113
- });
114
- }
115
-
116
- private createTextWrapBuilder(dimension: 'x' | 'y'): void {
117
- this.textWrapBuilder = new SvgTextWrapBuilder();
118
- const isRotatedYLabel = dimension === 'y' && this._position === 'middle';
119
- // set defaults but let user override setting defaults before calling wrap function
120
- if (isRotatedYLabel) {
121
- this.textWrapBuilder.maintainXPosition(false);
122
- this.textWrapBuilder.maintainYPosition(true);
123
- }
124
- this.textWrapFunction(this.textWrapBuilder);
125
- }
126
-
127
- private getAnchorForDimension(
128
- dimension: 'x' | 'y'
129
- ): 'start' | 'middle' | 'end' {
130
- if (this._anchor) return this._anchor;
131
- switch (this._position) {
132
- case 'start':
133
- return dimension === 'x' ? 'start' : 'end';
134
- case 'middle':
135
- return 'middle';
136
- case 'end':
137
- return 'end';
138
- }
139
- }
140
- }
@@ -1,12 +0,0 @@
1
- import { SvgTextWrap } from '../../svg-text-wrap';
2
-
3
- export interface AxisLabelOptions {
4
- anchor: 'start' | 'middle' | 'end';
5
- offset: {
6
- x: number;
7
- y: number;
8
- };
9
- position: 'start' | 'middle' | 'end';
10
- text: string;
11
- wrap: SvgTextWrap;
12
- }
@@ -1,18 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { SvgTextWrap } from '../../svg-text-wrap';
3
- import { AxisLabelOptions } from './axis-label-options';
4
-
5
- export class AxisLabel implements AxisLabelOptions {
6
- anchor: 'start' | 'middle' | 'end';
7
- offset: {
8
- x: number;
9
- y: number;
10
- };
11
- position: 'start' | 'middle' | 'end';
12
- text: string;
13
- wrap: SvgTextWrap;
14
-
15
- constructor(options: AxisLabelOptions) {
16
- safeAssign(this, options);
17
- }
18
- }
@@ -1,303 +0,0 @@
1
- /* eslint-disable @angular-eslint/prefer-standalone */
2
- import { Component, Input } from '@angular/core';
3
- import {
4
- ChartConfig,
5
- LinesConfig,
6
- VicChartConfigBuilder,
7
- VicChartModule,
8
- VicLinesConfigBuilder,
9
- VicLinesModule,
10
- VicXQuantitativeAxisConfig,
11
- VicXQuantitativeAxisConfigBuilder,
12
- VicXyAxisModule,
13
- VicXyBackgroundModule,
14
- VicYQuantitativeAxisConfig,
15
- VicYQuantitativeAxisConfigBuilder,
16
- } from '@mathstack/viz';
17
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
18
- import {
19
- ContinentPopulationNumYearData,
20
- ContinentPopulationNumYearDatum,
21
- } from '../../testing/data/continent-population-year-data';
22
-
23
- // Cypress will get the tick elements before d3 has set the text value of the elements,
24
- // because d3 creates the elements and sets the text value in a transition).
25
- // This wait time is necessary to ensure that the text value of the tick elements has been set by d3.
26
- const axisTickTextWaitTime = 1000;
27
-
28
- const margin = { top: 60, right: 20, bottom: 40, left: 80 };
29
- const chartHeight = 400;
30
- const chartWidth = 600;
31
- const data = ContinentPopulationNumYearData;
32
- @Component({
33
- selector: 'vic-test-axis-labels',
34
- template: `
35
- <vic-xy-chart [config]="chartConfig">
36
- <ng-container svg-elements>
37
- <svg:g vic-xy-background></svg:g>
38
- <svg:g
39
- vic-x-quantitative-axis
40
- [config]="xQuantitativeAxisConfig"
41
- ></svg:g>
42
- <svg:g
43
- vic-y-quantitative-axis
44
- [config]="yQuantitativeAxisConfig"
45
- ></svg:g>
46
- <svg:g vic-primary-marks-lines [config]="linesConfig"></svg:g>
47
- </ng-container>
48
- </vic-xy-chart>
49
- `,
50
- styles: [],
51
- imports: [
52
- VicChartModule,
53
- VicLinesModule,
54
- VicXyAxisModule,
55
- VicXyBackgroundModule,
56
- ],
57
- })
58
- class TestAxisLabelsComponent<Datum> {
59
- @Input() linesConfig: LinesConfig<Datum>;
60
- @Input() yQuantitativeAxisConfig: VicYQuantitativeAxisConfig<number>;
61
- @Input() xQuantitativeAxisConfig: VicXQuantitativeAxisConfig<number>;
62
- chartConfig: ChartConfig = new VicChartConfigBuilder()
63
- .maxHeight(chartHeight)
64
- .maxWidth(chartWidth)
65
- .margin(margin)
66
- .scalingStrategy('responsive-width')
67
- .getConfig();
68
- }
69
-
70
- function mountAxisLabelsComponent(
71
- xAxisConfig: VicXQuantitativeAxisConfig<number>,
72
- yAxisConfig: VicYQuantitativeAxisConfig<number>
73
- ): void {
74
- const linesConfig =
75
- new VicLinesConfigBuilder<ContinentPopulationNumYearDatum>()
76
- .data(data)
77
- .xNumeric((dimension) =>
78
- dimension.valueAccessor((d) => d.year).includeZeroInDomain(false)
79
- )
80
- .y((y) => y.valueAccessor((d) => d.population))
81
- .stroke((stroke) =>
82
- stroke.color((color) => color.valueAccessor((d) => d.continent))
83
- )
84
- .getConfig();
85
-
86
- cy.mount(TestAxisLabelsComponent<ContinentPopulationNumYearDatum>, {
87
- componentProperties: {
88
- linesConfig: linesConfig,
89
- xQuantitativeAxisConfig: xAxisConfig,
90
- yQuantitativeAxisConfig: yAxisConfig,
91
- },
92
- });
93
- }
94
-
95
- // ***********************************************************
96
- // Test that axis labels are visible when various basic config values are used - no custom offsets
97
- // ***********************************************************
98
- describe('It creates axis labels that are visible when default values are used', () => {
99
- beforeEach(() => {
100
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder<number>()
101
- .ticks((ticks) => ticks.format('.0f'))
102
- .label((label) => label.text('Year'))
103
- .getConfig();
104
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder<number>()
105
- .label((label) => label.text('Population'))
106
- .ticks((ticks) => ticks.format('.2s'))
107
- .getConfig();
108
- mountAxisLabelsComponent(xAxisConfig, yAxisConfig);
109
- cy.wait(axisTickTextWaitTime);
110
- });
111
- it('should have visible x and y axis labels that are centered on axes', () => {
112
- cy.get('.vic-axis-x-quantitative .vic-axis-label').should(
113
- 'have.text',
114
- 'Year'
115
- );
116
- cy.get('.vic-axis-y-quantitative .vic-axis-label').should(
117
- 'have.text',
118
- 'Population'
119
- );
120
- cy.get<SVGGElement>('.vic-xy-background').then((chartBackground) => {
121
- const chartRect = chartBackground[0].getBBox();
122
- cy.get<SVGTextElement>('.vic-axis-x-quantitative .vic-axis-label').then(
123
- (xAxisLabel) => {
124
- const textRect = xAxisLabel[0].getBoundingClientRect();
125
- expect(
126
- textRect.left + (textRect.right - textRect.left) / 2
127
- ).to.be.closeTo(margin.left + chartRect.width / 2, 4);
128
- }
129
- );
130
- cy.get<SVGTextElement>('.vic-axis-y-quantitative .vic-axis-label').then(
131
- (yAxisLabel) => {
132
- const textRect = yAxisLabel[0].getBoundingClientRect();
133
- expect(
134
- textRect.top + (textRect.bottom - textRect.top) / 2
135
- ).to.be.closeTo(margin.top + chartRect.height / 2, 4);
136
- }
137
- );
138
- });
139
- });
140
- });
141
-
142
- describe('It creates axis labels that correctly positioned when positions are start', () => {
143
- beforeEach(() => {
144
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder<number>()
145
- .ticks((ticks) => ticks.format('.0f'))
146
- .label((label) => label.text('Year').position('start'))
147
- .getConfig();
148
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder<number>()
149
- .label((label) => label.text('Population').position('start'))
150
- .ticks((ticks) => ticks.format('.2s'))
151
- .getConfig();
152
- mountAxisLabelsComponent(xAxisConfig, yAxisConfig);
153
- cy.wait(axisTickTextWaitTime);
154
- });
155
- it('should have visible x and y axis labels that are at the leading edge of axes', () => {
156
- cy.get<SVGGElement>('.vic-xy-background').then(() => {
157
- cy.get<SVGTextElement>('.vic-axis-x-quantitative .vic-axis-label').then(
158
- (xAxisLabel) => {
159
- const textRect = xAxisLabel[0].getBoundingClientRect();
160
- expect(textRect.left).to.be.closeTo(margin.left, 4);
161
- }
162
- );
163
- cy.get<SVGTextElement>('.vic-axis-y-quantitative .vic-axis-label').then(
164
- (yAxisLabel) => {
165
- const textRect = yAxisLabel[0].getBoundingClientRect();
166
- expect(textRect.bottom).to.be.closeTo(margin.top, 4);
167
- }
168
- );
169
- });
170
- });
171
- });
172
-
173
- describe('It creates axis labels that are correctly positioned when positions are end', () => {
174
- beforeEach(() => {
175
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder<number>()
176
- .ticks((ticks) => ticks.format('.0f'))
177
- .label((label) => label.text('Year').position('end'))
178
- .getConfig();
179
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder<number>()
180
- .label((label) => label.text('Population').position('end'))
181
- .ticks((ticks) => ticks.format('.2s'))
182
- .getConfig();
183
- mountAxisLabelsComponent(xAxisConfig, yAxisConfig);
184
- cy.wait(axisTickTextWaitTime);
185
- });
186
- it('should have visible x and y axis labels that are at the trailing edge of axes', () => {
187
- cy.get<SVGGElement>('.vic-xy-background').then((chartBackground) => {
188
- const chartRect = chartBackground[0].getBoundingClientRect();
189
- cy.get<SVGTextElement>('.vic-axis-x-quantitative .vic-axis-label').then(
190
- (xAxisLabel) => {
191
- const textRect = xAxisLabel[0].getBoundingClientRect();
192
- expect(textRect.right).to.be.closeTo(chartRect.right, 4);
193
- }
194
- );
195
- cy.get<SVGTextElement>('.vic-axis-y-quantitative .vic-axis-label').then(
196
- (yAxisLabel) => {
197
- const textRect = yAxisLabel[0].getBoundingClientRect();
198
- expect(textRect.bottom).to.be.closeTo(chartRect.bottom, 4);
199
- }
200
- );
201
- });
202
- });
203
- });
204
-
205
- // ***********************************************************
206
- // Test that axis labels correctly wrap - brittle tests but better than nothing
207
- // ***********************************************************
208
- describe('It creates axis labels that are visible when default values are used', () => {
209
- const wrapWidth = 160;
210
- beforeEach(() => {
211
- const xAxisConfig = new VicXQuantitativeAxisConfigBuilder<number>()
212
- .ticks((ticks) => ticks.format('.0f'))
213
- .label((label) =>
214
- label
215
- .text('Years in which Mathematica operated')
216
- .wrap((wrap) => wrap.width(wrapWidth))
217
- )
218
- .getConfig();
219
- const yAxisConfig = new VicYQuantitativeAxisConfigBuilder<number>()
220
- .label((label) =>
221
- label
222
- .text(
223
- 'Number of spectacular components tests Mathematica has written as part of frontend work'
224
- )
225
- .wrap((wrap) => wrap.width(wrapWidth))
226
- )
227
- .ticks((ticks) => ticks.format('.2s'))
228
- .getConfig();
229
- mountAxisLabelsComponent(xAxisConfig, yAxisConfig);
230
- cy.wait(axisTickTextWaitTime);
231
- });
232
- it('should have visible x and y axis labels that are correctly wrapped and centered on axes', () => {
233
- // Ensure that there are multiple tspan elements created for each label.
234
- cy.get('.vic-axis-x-quantitative .vic-axis-label tspan').should(
235
- 'have.length',
236
- 2
237
- );
238
- cy.get('.vic-axis-y-quantitative .vic-axis-label tspan').should(
239
- 'have.length',
240
- 3
241
- );
242
-
243
- // Ensure each line is offset vertically.
244
- cy.get('.vic-axis-x-quantitative .vic-axis-label tspan').then((spans) => {
245
- const dyValues = Array.from(spans).map((span) => span.getAttribute('dy'));
246
- expect(new Set(dyValues).size).to.equal(2);
247
- });
248
- cy.get('.vic-axis-y-quantitative .vic-axis-label tspan').then((spans) => {
249
- const dyValues = Array.from(spans).map((span) => span.getAttribute('dy'));
250
- expect(new Set(dyValues).size).to.equal(3);
251
- });
252
-
253
- // dy values are evenly spaced
254
- cy.get('.vic-axis-y-quantitative .vic-axis-label tspan').then((spans) => {
255
- const dyValues = Array.from(spans).map((span) => span.getAttribute('dy'));
256
- const differences = dyValues.reduce((acc, val, i) => {
257
- if (i === 0) return acc;
258
- const diff =
259
- parseFloat(val || '0') - parseFloat(dyValues[i - 1] || '0');
260
- const diffRoundedToPointOne = Math.round(diff * 10) / 10;
261
- acc.push(diffRoundedToPointOne);
262
- return acc;
263
- }, []);
264
- expect(new Set(differences).size).to.equal(1);
265
- });
266
-
267
- // Ensure that the overall width of the label is less than or equal to the wrap width.
268
- cy.get('.vic-axis-x-quantitative .vic-axis-label')
269
- .invoke('width')
270
- .should('be.lte', wrapWidth);
271
- cy.get('.vic-axis-y-quantitative .vic-axis-label')
272
- .invoke('width')
273
- .should('be.lte', wrapWidth);
274
-
275
- // Ensure that the label text is split across multiple lines.
276
- cy.get('.vic-axis-x-quantitative .vic-axis-label tspan').each(($span) => {
277
- expect($span.text().length).to.be.greaterThan(0);
278
- });
279
- cy.get('.vic-axis-y-quantitative .vic-axis-label tspan').each(($span) => {
280
- expect($span.text().length).to.be.greaterThan(0);
281
- });
282
-
283
- cy.get<SVGGElement>('.vic-xy-background').then((chartBackground) => {
284
- const chartRect = chartBackground[0].getBBox();
285
- cy.get<SVGTextElement>('.vic-axis-x-quantitative .vic-axis-label').then(
286
- (xAxisLabel) => {
287
- const textRect = xAxisLabel[0].getBoundingClientRect();
288
- expect(
289
- textRect.left + (textRect.right - textRect.left) / 2
290
- ).to.be.closeTo(margin.left + chartRect.width / 2, 4);
291
- }
292
- );
293
- cy.get<SVGTextElement>('.vic-axis-y-quantitative .vic-axis-label').then(
294
- (yAxisLabel) => {
295
- const textRect = yAxisLabel[0].getBoundingClientRect();
296
- expect(
297
- textRect.top + (textRect.bottom - textRect.top) / 2
298
- ).to.be.closeTo(margin.top + chartRect.height / 2, 4);
299
- }
300
- );
301
- });
302
- });
303
- });
@@ -1,31 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { AbstractConstructor } from '../../core/common-behaviors/constructor';
3
- import { DataValue } from '../../core/types/values';
4
- import { XyAxisConfig } from '../base/config/xy-axis-config';
5
- import { XyAxisBaseOptions } from '../base/config/xy-axis-options';
6
- import { Ticks } from '../ticks/ticks';
7
- import { TicksOptions } from '../ticks/ticks-options';
8
-
9
- export interface VicOrdinalAxisOptions<
10
- Tick extends DataValue,
11
- > extends XyAxisBaseOptions {
12
- ticks: TicksOptions<Tick>;
13
- }
14
-
15
- export function mixinOrdinalAxisConfig<
16
- Tick extends DataValue,
17
- T extends AbstractConstructor<XyAxisConfig<Tick, Ticks<Tick>>>,
18
- >(Base: T) {
19
- abstract class Mixin extends Base implements VicOrdinalAxisOptions<Tick> {
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- constructor(...args: any[]) {
22
- super(...args);
23
- safeAssign(this, args[0]);
24
- }
25
- }
26
- return Mixin;
27
- }
28
-
29
- export abstract class VicOrdinalAxisConfig<
30
- Tick extends DataValue,
31
- > extends mixinOrdinalAxisConfig(XyAxisConfig)<Tick, Ticks<Tick>> {}
@@ -1,30 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { ElementRef } from '@angular/core';
3
- import { TestBed } from '@angular/core/testing';
4
- import { XyChartComponent } from '@mathstack/viz';
5
- import { OrdinalAxisStub } from '../../testing/stubs/ordinal-axis.stub';
6
-
7
- describe('the OrdinalAxis mixin', () => {
8
- let abstractClass: OrdinalAxisStub<string>;
9
- const mockElementRef = {
10
- nativeElement: {
11
- querySelector: jasmine.createSpy('querySelector'),
12
- style: {},
13
- },
14
- };
15
-
16
- beforeEach(() => {
17
- TestBed.configureTestingModule({
18
- providers: [
19
- OrdinalAxisStub,
20
- XyChartComponent,
21
- { provide: ElementRef, useValue: mockElementRef },
22
- ],
23
- });
24
- abstractClass = TestBed.inject(OrdinalAxisStub);
25
- });
26
-
27
- it('should be created', () => {
28
- expect(abstractClass).toBeTruthy();
29
- });
30
- });
@@ -1,26 +0,0 @@
1
- import { format, utcFormat } from 'd3';
2
- import { AbstractConstructor } from '../../core/common-behaviors/constructor';
3
- import { DataValue } from '../../core/types/values';
4
- import { XyAxis } from '../base/xy-axis-base';
5
- import { Ticks } from '../ticks/ticks';
6
- import { VicOrdinalAxisConfig as OrdinalAxisConfig } from './ordinal-axis-config';
7
-
8
- export function ordinalAxisMixin<
9
- Tick extends DataValue,
10
- T extends AbstractConstructor<XyAxis<Tick, Ticks<Tick>>>,
11
- >(Base: T) {
12
- abstract class Mixin extends Base {
13
- override config: OrdinalAxisConfig<Tick>;
14
-
15
- setTicks(tickFormat: string | ((value: Tick) => string)): void {
16
- this.axis.tickFormat((d) => {
17
- const formatter = d instanceof Date ? utcFormat : format;
18
- return typeof tickFormat === 'function'
19
- ? tickFormat(d)
20
- : formatter(tickFormat)(d);
21
- });
22
- }
23
- }
24
-
25
- return Mixin;
26
- }
@@ -1,39 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { AbstractConstructor } from '../../core/common-behaviors/constructor';
3
- import { ContinuousValue } from '../../core/types/values';
4
- import { XyAxisConfig } from '../base/config/xy-axis-config';
5
- import { XyAxisBaseOptions } from '../base/config/xy-axis-options';
6
- import { QuantitativeTicks } from '../ticks/ticks';
7
- import { QuantitativeTicksOptions } from '../ticks/ticks-options';
8
-
9
- export interface VicQuantitativeAxisOptions<
10
- Tick extends ContinuousValue,
11
- > extends XyAxisBaseOptions {
12
- ticks: QuantitativeTicksOptions<Tick>;
13
- }
14
-
15
- export function mixinQuantitativeAxisConfig<
16
- Tick extends ContinuousValue,
17
- T extends AbstractConstructor<XyAxisConfig<Tick, QuantitativeTicks<Tick>>>,
18
- >(Base: T) {
19
- abstract class Mixin
20
- extends Base
21
- implements VicQuantitativeAxisOptions<Tick>
22
- {
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- constructor(...args: any[]) {
25
- super(...args);
26
- if (args.length > 0) {
27
- safeAssign(this, args[0]);
28
- }
29
- }
30
- }
31
- return Mixin;
32
- }
33
-
34
- export abstract class VicQuantitativeAxisConfig<
35
- Tick extends ContinuousValue,
36
- > extends mixinQuantitativeAxisConfig(XyAxisConfig)<
37
- Tick,
38
- QuantitativeTicks<Tick>
39
- > {}