@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,307 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @angular-eslint/prefer-standalone */
3
- import { Component, Input } from '@angular/core';
4
- import {
5
- ChartConfig,
6
- GeographiesConfig,
7
- VicChartConfigBuilder,
8
- VicChartModule,
9
- VicGeographiesConfigBuilder,
10
- VicGeographiesModule,
11
- } from '@mathstack/viz';
12
- import { color } from 'd3';
13
- import {
14
- FeatureCollection,
15
- GeoJsonProperties,
16
- MultiPolygon,
17
- Polygon,
18
- } from 'geojson';
19
- import { beforeEach, cy, describe, expect, it } from 'local-cypress';
20
- import * as topojson from 'topojson-client';
21
- import { GeometryCollection, Objects, Topology } from 'topojson-specification';
22
- import {
23
- StateIncomePopulationYearDatum,
24
- stateIncomePopulationYearData,
25
- } from '../../../../../../testing/data/state-population-income-year-data';
26
-
27
- const margin = { top: 36, right: 36, bottom: 36, left: 36 };
28
- const chartHeight = 400;
29
- const chartWidth = 600;
30
- const attributeData = stateIncomePopulationYearData
31
- .filter((x) => x.year === 2020)
32
- .filter((x) => x.state !== 'Puerto Rico');
33
-
34
- interface TestMapGeometryProperties extends GeoJsonProperties {
35
- name: string;
36
- id: string;
37
- }
38
-
39
- interface TestMapObjects extends Objects {
40
- country: GeometryCollection<TestMapGeometryProperties>;
41
- states: GeometryCollection<TestMapGeometryProperties>;
42
- }
43
-
44
- type TestUsMapTopology = Topology<TestMapObjects>;
45
-
46
- // ***********************************************************
47
- // Geographies component set up
48
- // ***********************************************************
49
- @Component({
50
- // eslint-disable-next-line @angular-eslint/component-selector
51
- selector: 'app-test-geographies',
52
- template: `
53
- <vic-map-chart [config]="chartConfig">
54
- <svg:g
55
- vic-primary-marks-geographies
56
- svg-elements
57
- [config]="geographiesConfig"
58
- [vicGeographiesHoverActions]="hoverActions"
59
- (vicGeographiesHoverOutput)="updateTooltipForNewOutput($event)"
60
- ></svg:g>
61
- </vic-map-chart>
62
- `,
63
- styles: [],
64
- imports: [VicChartModule, VicGeographiesModule],
65
- })
66
- class TestGeographiesComponent {
67
- @Input() geographiesConfig: GeographiesConfig<
68
- StateIncomePopulationYearDatum,
69
- TestMapGeometryProperties
70
- >;
71
- chartConfig: ChartConfig = new VicChartConfigBuilder()
72
- .margin(margin)
73
- .maxWidth(chartWidth)
74
- .maxHeight(chartHeight)
75
- .scalingStrategy('responsive-width')
76
- .getConfig();
77
- }
78
-
79
- const mountGeographiesComponent = (
80
- geographiesConfig: GeographiesConfig<
81
- StateIncomePopulationYearDatum,
82
- TestMapGeometryProperties
83
- >
84
- ): void => {
85
- cy.mount(TestGeographiesComponent, {
86
- componentProperties: {
87
- geographiesConfig: geographiesConfig,
88
- },
89
- });
90
- };
91
-
92
- // ***********************************************************
93
- // Test dimension
94
- // ***********************************************************
95
- describe('the Equal Value Ranges Bins Attribute Data dimension', () => {
96
- let geographiesConfig: GeographiesConfig<
97
- StateIncomePopulationYearDatum,
98
- TestMapGeometryProperties
99
- >;
100
- beforeEach(() => {
101
- geographiesConfig = undefined;
102
- });
103
- it('Uses dimension defaults and creates bins in the data and colors values accordingly with default colors', () => {
104
- cy.fixture('usMap.json').then((response) => {
105
- const usMap: TestUsMapTopology = response;
106
- const usBoundary = topojson.feature(
107
- usMap,
108
- usMap.objects.country
109
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
110
- const states = topojson.feature(
111
- usMap,
112
- usMap.objects.states
113
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
114
- geographiesConfig = new VicGeographiesConfigBuilder<
115
- StateIncomePopulationYearDatum,
116
- TestMapGeometryProperties
117
- >()
118
- .boundary(usBoundary)
119
- .featureIndexAccessor((d) => d.properties.name)
120
- .attributeDataLayer((dimension) =>
121
- dimension
122
- .data(attributeData)
123
- .class((d) => d.name.split(' ').join('-'))
124
- .geographies(states.features)
125
- .geographyIndexAccessor((d) => d.state)
126
- .equalValueRangesBins((bins) => bins.valueAccessor((d) => d.income))
127
- )
128
- .getConfig();
129
- mountGeographiesComponent(geographiesConfig);
130
- const scale =
131
- geographiesConfig.attributeDataLayer.attributeDimension.getScale();
132
- const ranges = {
133
- white: scale.invertExtent('white'),
134
- pink: scale.invertExtent('pink'),
135
- red: scale.invertExtent('red'),
136
- };
137
- const whiteRange = ranges.white[1] - ranges.white[0];
138
- const pinkRange = ranges.pink[1] - ranges.pink[0];
139
- const redRange = ranges.red[1] - ranges.red[0];
140
- expect(whiteRange).to.be.closeTo(pinkRange, 1);
141
- expect(pinkRange).to.be.closeTo(redRange, 1);
142
- cy.get('.vic-geographies-group path').then((states) => {
143
- states.each((_, state) => {
144
- const fill = state.getAttribute('fill');
145
- const datum = attributeData.find(
146
- (d) => d.state === state.classList[0].split('-').join(' ')
147
- );
148
- if (datum) {
149
- if (datum.income < ranges.white[1]) {
150
- expect(fill).to.equal('white');
151
- } else if (datum.income < ranges.pink[1]) {
152
- expect(fill).to.equal('pink');
153
- } else {
154
- expect(fill).to.equal('red');
155
- }
156
- }
157
- });
158
- });
159
- });
160
- });
161
-
162
- it('colors values lower than user-provided domain with first bin color and values higher than user-provided domain with last bin color', () => {
163
- cy.fixture('usMap.json').then((response) => {
164
- const usMap: TestUsMapTopology = response;
165
- const usBoundary = topojson.feature(
166
- usMap,
167
- usMap.objects.country
168
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
169
- const states = topojson.feature(
170
- usMap,
171
- usMap.objects.states
172
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
173
- geographiesConfig = new VicGeographiesConfigBuilder<
174
- StateIncomePopulationYearDatum,
175
- TestMapGeometryProperties
176
- >()
177
- .boundary(usBoundary)
178
- .featureIndexAccessor((d) => d.properties.name)
179
- .attributeDataLayer((dimension) =>
180
- dimension
181
- .data(attributeData)
182
- .class((d) => d.name.split(' ').join('-'))
183
- .geographies(states.features)
184
- .geographyIndexAccessor((d) => d.state)
185
- .equalValueRangesBins((bins) =>
186
- bins.valueAccessor((d) => d.income).domain([50000, 80000])
187
- )
188
- )
189
- .getConfig();
190
- mountGeographiesComponent(geographiesConfig);
191
- cy.get('.vic-geographies-group path').then((states) => {
192
- states.each((_, state) => {
193
- const fill = state.getAttribute('fill');
194
- const datum = attributeData.find(
195
- (d) => d.state === state.classList[0].split('-').join(' ')
196
- );
197
- if (datum) {
198
- if (datum.income < 50000) {
199
- expect(fill).to.equal('white');
200
- }
201
- if (datum.income > 80000) {
202
- expect(fill).to.equal('red');
203
- }
204
- }
205
- });
206
- });
207
- });
208
- });
209
-
210
- it('colors the map with the number of bins specified in numBins for features with attribute data and a null color for features without attribute data even if the range provides fewer colors', () => {
211
- cy.fixture('usMap.json').then((response) => {
212
- const numBins = 6;
213
- const nullColor = 'navajowhite';
214
- const usMap: TestUsMapTopology = response;
215
- const usBoundary = topojson.feature(
216
- usMap,
217
- usMap.objects.country
218
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
219
- const states = topojson.feature(
220
- usMap,
221
- usMap.objects.states
222
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
223
- geographiesConfig = new VicGeographiesConfigBuilder<
224
- StateIncomePopulationYearDatum,
225
- TestMapGeometryProperties
226
- >()
227
- .boundary(usBoundary)
228
- .featureIndexAccessor((d) => d.properties.name)
229
- .attributeDataLayer((dimension) =>
230
- dimension
231
- .data(attributeData)
232
- .class((d) => d.name.split(' ').join('-'))
233
- .geographies(states.features)
234
- .geographyIndexAccessor((d) => d.state)
235
- .equalValueRangesBins((bins) =>
236
- bins
237
- .valueAccessor((d) => d.income)
238
- .numBins(numBins)
239
- .nullColor(nullColor)
240
- )
241
- )
242
- .getConfig();
243
- mountGeographiesComponent(geographiesConfig);
244
- const colors = [];
245
- cy.get('.vic-geographies-group path').then((states) => {
246
- states.each((_, state) => {
247
- const fill = state.getAttribute('fill');
248
- if (!colors.includes(fill)) {
249
- colors.push(fill);
250
- }
251
- });
252
- expect(colors.length).to.equal(numBins + 1);
253
- expect(colors).to.include(nullColor);
254
- });
255
- });
256
- });
257
-
258
- it('colors the map with the first numBins colors in the range for features with attribute data and the nullColor for features without attribute data if numBins is a smaller number than the length of the range', () => {
259
- cy.fixture('usMap.json').then((response) => {
260
- const numBins = 2;
261
- const nullColor = 'navajowhite';
262
- const usMap: TestUsMapTopology = response;
263
- const usBoundary = topojson.feature(
264
- usMap,
265
- usMap.objects.country
266
- ) as FeatureCollection<MultiPolygon, TestMapGeometryProperties>;
267
- const states = topojson.feature(
268
- usMap,
269
- usMap.objects.states
270
- ) as FeatureCollection<MultiPolygon | Polygon, TestMapGeometryProperties>;
271
- geographiesConfig = new VicGeographiesConfigBuilder<
272
- StateIncomePopulationYearDatum,
273
- TestMapGeometryProperties
274
- >()
275
- .boundary(usBoundary)
276
- .featureIndexAccessor((d) => d.properties.name)
277
- .attributeDataLayer((dimension) =>
278
- dimension
279
- .data(attributeData)
280
- .class((d) => d.name.split(' ').join('-'))
281
- .geographies(states.features)
282
- .geographyIndexAccessor((d) => d.state)
283
- .equalValueRangesBins((bins) =>
284
- bins
285
- .valueAccessor((d) => d.income)
286
- .numBins(numBins)
287
- .nullColor(nullColor)
288
- )
289
- )
290
- .getConfig();
291
- mountGeographiesComponent(geographiesConfig);
292
- const colors = [];
293
- cy.get('.vic-geographies-group path').then((states) => {
294
- states.each((_, state) => {
295
- const fill = state.getAttribute('fill');
296
- if (!colors.includes(fill)) {
297
- colors.push(fill);
298
- }
299
- });
300
- expect(colors.length).to.equal(numBins + 1);
301
- expect(colors).to.include(nullColor);
302
- expect(colors).to.include(color('white').formatRgb());
303
- expect(colors).to.include(color('pink').formatRgb());
304
- });
305
- });
306
- });
307
- });
@@ -1,104 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { EqualValueRangesAttributeDataDimension } from './equal-value-ranges-bins';
3
- import { EqualValueRangesBinsBuilder } from './equal-value-ranges-bins-builder';
4
-
5
- describe('VicEqualValuesAttributeDataDimension', () => {
6
- let dimension: EqualValueRangesAttributeDataDimension<any>;
7
- beforeEach(() => {
8
- dimension = new EqualValueRangesBinsBuilder<any>()
9
- .numBins(3)
10
- .formatSpecifier('.1f')
11
- .range(['red', 'blue', 'yellow', 'green'])
12
- .domain([0, 20])
13
- .valueAccessor((d) => d)
14
- ._build();
15
- });
16
-
17
- describe('setPropertiesFromData', () => {
18
- beforeEach(() => {
19
- spyOn(dimension as any, 'setDomain');
20
- spyOn(dimension as any, 'setValidatedDomainAndNumBins');
21
- spyOn(dimension as any, 'setRange');
22
- });
23
- it('calls setDomain once', () => {
24
- dimension.setPropertiesFromData([1, 2, 3, 4, 5, 6, 7, 8, 9]);
25
- expect((dimension as any).setDomain).toHaveBeenCalledOnceWith([
26
- 1, 2, 3, 4, 5, 6, 7, 8, 9,
27
- ]);
28
- });
29
- it('calls setValidatedDomainAndNumBins once', () => {
30
- dimension.setPropertiesFromData([1, 2, 3, 4, 5, 6, 7, 8, 9]);
31
- expect(
32
- (dimension as any).setValidatedDomainAndNumBins
33
- ).toHaveBeenCalledTimes(1);
34
- });
35
- it('calls setRange once', () => {
36
- dimension.setPropertiesFromData([1, 2, 3, 4, 5, 6, 7, 8, 9]);
37
- expect((dimension as any).setRange).toHaveBeenCalledTimes(1);
38
- });
39
- });
40
-
41
- describe('integration: setDomain/setValidatedDomainAndNumBins', () => {
42
- it('sets the domain to the users value if it exists', () => {
43
- (dimension as any).setDomain([1, 2, 3, 4, 5, 6, 7, 8, 9]);
44
- (dimension as any).setValidatedDomainAndNumBins();
45
- expect((dimension as any).calculatedDomain).toEqual([0, 20]);
46
- });
47
- it('sets the domain to values if there is no user provided domain', () => {
48
- dimension = new EqualValueRangesBinsBuilder<any>()
49
- .numBins(3)
50
- .formatSpecifier('.1f')
51
- .range(['red', 'blue', 'yellow', 'green'])
52
- .valueAccessor((d) => d)
53
- ._build();
54
- (dimension as any).setDomain([1, 2, 3, 4, 5, 6, 7, 8, 9]);
55
- expect((dimension as any).calculatedDomain).toEqual([1, 9]);
56
- });
57
- });
58
-
59
- describe('getValidatedNumBinsAndDomainForIntegerValues', () => {
60
- it('returns a numBins that reflects possible values in domain and a domain of [min, max + 1] when numBins is greater than the length of the data', () => {
61
- expect(
62
- (dimension as any).getValidatedNumBinsAndDomainForIntegerValues(
63
- 5,
64
- [-1, 1]
65
- )
66
- ).toEqual({ numBins: 3, domain: [-1, 2] });
67
- });
68
- it('returns the correct values when numBins is less than the length of the data', () => {
69
- expect(
70
- (dimension as any).getValidatedNumBinsAndDomainForIntegerValues(
71
- 2,
72
- [-1, 33]
73
- )
74
- ).toEqual({ numBins: 2, domain: [-1, 33] });
75
- });
76
- });
77
-
78
- describe('integration: getScale', () => {
79
- let scale: any;
80
- beforeEach(() => {
81
- dimension = new EqualValueRangesBinsBuilder<any>()
82
- .numBins(4)
83
- .formatSpecifier('.1f')
84
- .range(['red', 'blue', 'yellow', 'green'])
85
- .valueAccessor((d) => d)
86
- .nullColor('black')
87
- ._build();
88
- dimension.setPropertiesFromData([0, 2, 4, 6, 8]);
89
- scale = dimension.getScale();
90
- });
91
- it('correctly sets the domain', () => {
92
- expect(scale.domain()).toEqual([0, 8]);
93
- });
94
- it('correctly sets the range', () => {
95
- expect(scale.range()).toEqual(['red', 'blue', 'yellow', 'green']);
96
- });
97
- it('correctly scales a value in the domain', () => {
98
- expect(scale(2)).toEqual('blue');
99
- });
100
- it('correctly scales a value out of the domain', () => {
101
- expect(scale(null)).toEqual('black');
102
- });
103
- });
104
- });
@@ -1,89 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { extent } from 'd3';
3
- import { BinStrategy } from '../attribute-data-bin-enums';
4
- import { CalculatedBinsAttributeDataDimension } from '../calculated-bins/calculated-bins';
5
- import { EqualValueRangesAttributeDataDimensionOptions } from './equal-value-ranges-bins-options';
6
-
7
- /**
8
- * Configuration object for attribute data that is quantitative and will be binned into equal value ranges. For example, if the data is [0, 1, 2, 4, 60, 100] and numBins is 2, the bin ranges will be [0, 49] and [50, 100].
9
- *
10
- * The generic parameter is the type of the attribute data.
11
- */
12
- export class EqualValueRangesAttributeDataDimension<
13
- Datum,
14
- RangeValue extends string | number = string,
15
- >
16
- extends CalculatedBinsAttributeDataDimension<Datum, RangeValue>
17
- implements EqualValueRangesAttributeDataDimensionOptions<Datum, RangeValue>
18
- {
19
- override readonly binType: BinStrategy.equalValueRanges;
20
- private calculatedDomain: [number, number];
21
- readonly domain: [number, number];
22
- readonly numBins: number;
23
-
24
- constructor(
25
- options: EqualValueRangesAttributeDataDimensionOptions<Datum, RangeValue>
26
- ) {
27
- super('number');
28
- this.binType = BinStrategy.equalValueRanges;
29
- safeAssign(this, options);
30
- if (!this.valueAccessor) {
31
- console.error(
32
- 'Value accessor is required for EqualValuesAttributeDataDimension'
33
- );
34
- }
35
- }
36
-
37
- setPropertiesFromData(data: Datum[]): void {
38
- const values = data.map(this.valueAccessor);
39
- this.setDomain(values);
40
- this.setValidatedDomainAndNumBins();
41
- this.setRange();
42
- }
43
-
44
- protected setDomain(values: number[]): void {
45
- const domainValues = this.domain ?? values;
46
- this.calculatedDomain = extent(domainValues);
47
- }
48
-
49
- private setValidatedDomainAndNumBins(): void {
50
- if (this.valueFormatIsInteger()) {
51
- const validated = this.getValidatedNumBinsAndDomainForIntegerValues(
52
- this.numBins,
53
- this.calculatedDomain
54
- );
55
- this.calculatedNumBins = validated.numBins;
56
- this.calculatedDomain = validated.domain;
57
- } else {
58
- this.calculatedNumBins = this.numBins;
59
- }
60
- }
61
-
62
- protected valueFormatIsInteger(): boolean {
63
- return this.formatSpecifier && this.formatSpecifier.includes('0f');
64
- }
65
-
66
- protected getValidatedNumBinsAndDomainForIntegerValues(
67
- numBins: number,
68
- domain: [number, number]
69
- ): {
70
- numBins: number;
71
- domain: [number, number];
72
- } {
73
- const validated = { numBins, domain };
74
- const dataRange = domain.map((x) => Math.round(x));
75
- const numDiscreteValues = Math.abs(dataRange[1] - dataRange[0]) + 1;
76
- if (numDiscreteValues < numBins) {
77
- validated.numBins = numDiscreteValues;
78
- validated.domain = [dataRange[0], dataRange[1] + 1];
79
- }
80
- return validated;
81
- }
82
-
83
- getScale() {
84
- return this.scale()
85
- .domain(this.calculatedDomain)
86
- .range(this.range)
87
- .unknown(this.nullColor);
88
- }
89
- }
@@ -1,62 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { interpolateLab, scaleLinear } from 'd3';
3
- import { AttributeDataDimensionBuilder } from '../attribute-data/attribute-data-dimension-builder';
4
- import { NoBinsAttributeDataDimension } from './no-bins';
5
-
6
- const DEFAULT = {
7
- _interpolator: interpolateLab,
8
- _nullColor: 'whitesmoke',
9
- _range: ['white', 'slategray'],
10
- _scale: scaleLinear,
11
- };
12
-
13
- /**
14
- * Configuration object for attribute data that is quantitative and does not have bins.
15
- *
16
- * The generic parameter is the type of the attribute data.
17
- */
18
- export class NoBinsAttributeDataDimensionBuilder<
19
- Datum,
20
- > extends AttributeDataDimensionBuilder<Datum, number> {
21
- private _domain: [number, number];
22
- private _formatSpecifier: string;
23
-
24
- constructor() {
25
- super();
26
- safeAssign(this, DEFAULT);
27
- }
28
-
29
- /**
30
- * OPTIONAL. The domain of the scale. If not set, the domain will be inferred from the data.
31
- */
32
- domain(domain: [number, number]): this {
33
- this._domain = domain;
34
- return this;
35
- }
36
-
37
- /**
38
- * OPTIONAL. Sets a format specifier that will be applied to the value of this dimension using D3 format for display purposes.
39
- *
40
- * For example, this will format data values shown in a tooltip
41
- */
42
- formatSpecifier(formatSpecifier: string): this {
43
- this._formatSpecifier = formatSpecifier;
44
- return this;
45
- }
46
-
47
- /**
48
- * @internal This method is not intended to be used by consumers of this library.
49
- */
50
- _build(): NoBinsAttributeDataDimension<Datum> {
51
- return new NoBinsAttributeDataDimension({
52
- domain: this._domain,
53
- formatFunction: this._formatFunction,
54
- formatSpecifier: this._formatSpecifier,
55
- interpolator: this._interpolator,
56
- nullColor: this._nullColor,
57
- range: this._range,
58
- scale: this._scale,
59
- valueAccessor: this._valueAccessor,
60
- });
61
- }
62
- }
@@ -1,8 +0,0 @@
1
- import { AttributeDataDimensionOptions } from '../attribute-data/attribute-data-dimension-options';
2
-
3
- export interface NoBinsAttributeDataDimensionOptions<
4
- Datum,
5
- > extends AttributeDataDimensionOptions<Datum, number> {
6
- domain: [number, number];
7
- formatSpecifier: string;
8
- }