@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,119 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { GeographiesAttributeDataLayer } from './attribute-data-layer';
3
- import { GeographiesAttributeDataLayerBuilder } from './attribute-data-layer-builder';
4
-
5
- type Datum = { value: number; state: string };
6
- const data = [
7
- { value: 1, state: 'AL' },
8
- { value: 2, state: 'AK' },
9
- { value: 3, state: 'AZ' },
10
- { value: 4, state: 'CA' },
11
- { value: 5, state: 'CO' },
12
- { value: 6, state: 'CO' },
13
- ];
14
- function createLayer(): GeographiesAttributeDataLayer<
15
- Datum,
16
- { name: string },
17
- any
18
- > {
19
- return new GeographiesAttributeDataLayerBuilder<Datum, { name: string }>()
20
- .equalValueRangesBins((dimension) =>
21
- dimension.valueAccessor((d) => d.value).numBins(5)
22
- )
23
- .geographyIndexAccessor((d) => d.state)
24
- .data(data)
25
- ._build();
26
- }
27
-
28
- describe('GeographiesAttributeDataLayer', () => {
29
- let layer: GeographiesAttributeDataLayer<Datum, { name: string }, any>;
30
-
31
- describe('initPropertiesFromData()', () => {
32
- beforeEach(() => {
33
- layer = createLayer();
34
- spyOn(layer as any, 'getUniqueDatumsByGeoAccessor').and.returnValue(
35
- 'uniqueValues' as any
36
- );
37
- spyOn(layer.attributeDimension, 'setPropertiesFromData');
38
- spyOn(layer.attributeDimension, 'getScale');
39
- spyOn(layer as any, 'setAttributeDataMaps');
40
- layer.initPropertiesFromData();
41
- });
42
- it('calls getUniqueDatumsByGeoAccessor once', () => {
43
- expect(
44
- (layer as any).getUniqueDatumsByGeoAccessor
45
- ).toHaveBeenCalledOnceWith(data);
46
- });
47
- it('calls setPropertiesFromData once', () => {
48
- expect(
49
- layer.attributeDimension.setPropertiesFromData
50
- ).toHaveBeenCalledOnceWith('uniqueValues' as any);
51
- });
52
- it('calls setAttributeDataMaps once', () => {
53
- expect((layer as any).setAttributeDataMaps).toHaveBeenCalledOnceWith(
54
- 'uniqueValues' as any
55
- );
56
- });
57
- it('calls getScale once', () => {
58
- expect(layer.attributeDimension.getScale).toHaveBeenCalledTimes(1);
59
- });
60
- });
61
-
62
- describe('getUniqueDatumsByGeoAccessor()', () => {
63
- beforeEach(() => {
64
- layer = createLayer();
65
- });
66
- it('returns the unique datums by geoAccessor', () => {
67
- const result = (layer as any).getUniqueDatumsByGeoAccessor(data);
68
- expect(result).toEqual([
69
- { value: 1, state: 'AL' },
70
- { value: 2, state: 'AK' },
71
- { value: 3, state: 'AZ' },
72
- { value: 4, state: 'CA' },
73
- { value: 5, state: 'CO' },
74
- ]);
75
- });
76
- });
77
-
78
- describe('setAttributeDataMaps()', () => {
79
- beforeEach(() => {
80
- layer = createLayer();
81
- (layer as any).setAttributeDataMaps([
82
- { value: 1, state: 'AL' },
83
- { value: 2, state: 'AK' },
84
- { value: 3, state: 'AZ' },
85
- { value: 4, state: 'CA' },
86
- { value: 5, state: 'CO' },
87
- ]);
88
- });
89
- it('correctly sets attributeValuesByGeographyIndex', () => {
90
- expect(layer.attributeValuesByGeographyIndex.get('AL')).toEqual(1);
91
- expect(layer.attributeValuesByGeographyIndex.get('AK')).toEqual(2);
92
- expect(layer.attributeValuesByGeographyIndex.get('AZ')).toEqual(3);
93
- expect(layer.attributeValuesByGeographyIndex.get('CA')).toEqual(4);
94
- expect(layer.attributeValuesByGeographyIndex.get('CO')).toEqual(5);
95
- });
96
- it('correctly sets datumsByGeographyIndex', () => {
97
- expect(layer.datumsByGeographyIndex.get('AL')).toEqual({
98
- value: 1,
99
- state: 'AL',
100
- });
101
- expect(layer.datumsByGeographyIndex.get('AK')).toEqual({
102
- value: 2,
103
- state: 'AK',
104
- });
105
- expect(layer.datumsByGeographyIndex.get('AZ')).toEqual({
106
- value: 3,
107
- state: 'AZ',
108
- });
109
- expect(layer.datumsByGeographyIndex.get('CA')).toEqual({
110
- value: 4,
111
- state: 'CA',
112
- });
113
- expect(layer.datumsByGeographyIndex.get('CO')).toEqual({
114
- value: 5,
115
- state: 'CO',
116
- });
117
- });
118
- });
119
- });
@@ -1,148 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { InternMap, select } from 'd3';
3
- import { Geometry, MultiPolygon, Polygon } from 'geojson';
4
- import { FillUtilities } from '../../../../core/utilities/fill-utilities';
5
- import { ValueUtilities } from '../../../../core/utilities/values';
6
- import { FillDefinition } from '../../../../fill-definitions/fill-definitions';
7
- import { GeographiesFeature } from '../../../geographies-feature';
8
- import {
9
- GeographiesLayer,
10
- GeographiesTooltipDatum,
11
- } from '../geographies-layer/geographies-layer';
12
- import { GeographiesAttributeDataLayerOptions } from './attribute-data-layer-options';
13
- import { BinStrategy } from './dimensions/attribute-data-bin-enums';
14
- import { CategoricalBinsAttributeDataDimension } from './dimensions/categorical-bins/categorical-bins';
15
- import { CustomBreaksBinsAttributeDataDimension } from './dimensions/custom-breaks/custom-breaks-bins';
16
- import { EqualFrequenciesAttributeDataDimension } from './dimensions/equal-frequencies-bins/equal-frequencies-bins';
17
- import { EqualValueRangesAttributeDataDimension } from './dimensions/equal-value-ranges-bins/equal-value-ranges-bins';
18
- import { NoBinsAttributeDataDimension } from './dimensions/no-bins/no-bins';
19
-
20
- const DEFAULT = {
21
- _nullColor: '#dcdcdc',
22
- _strokeColor: 'dimgray',
23
- _strokeWidth: '1',
24
- _enableEventActions: true,
25
- };
26
-
27
- export class GeographiesAttributeDataLayer<
28
- Datum,
29
- TProperties,
30
- TGeometry extends Geometry = MultiPolygon | Polygon,
31
- >
32
- extends GeographiesLayer<Datum, TProperties, TGeometry>
33
- implements GeographiesAttributeDataLayerOptions<Datum, TProperties, TGeometry>
34
- {
35
- readonly attributeDimension:
36
- | CategoricalBinsAttributeDataDimension<Datum>
37
- | NoBinsAttributeDataDimension<Datum>
38
- | EqualValueRangesAttributeDataDimension<Datum>
39
- | EqualFrequenciesAttributeDataDimension<Datum>
40
- | CustomBreaksBinsAttributeDataDimension<Datum>;
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- attributeScale: any;
43
- attributeValuesByGeographyIndex: InternMap<string, string | number>;
44
- readonly customFills: FillDefinition<Datum>[];
45
- readonly data: Datum[];
46
- datumsByGeographyIndex: InternMap<string, Datum>;
47
- geographyIndexAccessor: (d: Datum) => string;
48
- readonly marksClass: string;
49
- readonly mixBlendMode: string;
50
-
51
- constructor(
52
- options: GeographiesAttributeDataLayerOptions<Datum, TProperties, TGeometry>
53
- ) {
54
- super();
55
- safeAssign(this, DEFAULT);
56
- safeAssign(this, options);
57
- if (this.attributeDimension === undefined) {
58
- console.error('Attribute dimension is required for data layers');
59
- }
60
- if (this.geographyIndexAccessor === undefined) {
61
- console.error('Geography index accessor is required for data layers');
62
- }
63
- this.initPropertiesFromData();
64
- }
65
-
66
- initPropertiesFromData(): void {
67
- const uniqueDatums = this.getUniqueDatumsByGeoAccessor(this.data);
68
- this.attributeDimension.setPropertiesFromData(uniqueDatums);
69
- this.setAttributeDataMaps(uniqueDatums);
70
- this.attributeScale = this.attributeDimension.getScale();
71
- }
72
-
73
- private getUniqueDatumsByGeoAccessor(data: Datum[]): Datum[] {
74
- const uniqueByGeoAccessor = (arr: Datum[], set = new Set()) =>
75
- arr.filter(
76
- (x) =>
77
- !set.has(this.geographyIndexAccessor(x)) &&
78
- set.add(this.geographyIndexAccessor(x))
79
- );
80
- return uniqueByGeoAccessor(data);
81
- }
82
-
83
- private setAttributeDataMaps(uniqueDatums: Datum[]): void {
84
- this.attributeValuesByGeographyIndex = new InternMap(
85
- uniqueDatums.map((d) => {
86
- const value = this.attributeDimension.valueAccessor(d);
87
- return [
88
- this.geographyIndexAccessor(d),
89
- value === null || value === undefined ? undefined : value,
90
- ];
91
- })
92
- );
93
- this.datumsByGeographyIndex = new InternMap(
94
- uniqueDatums.map((d) => {
95
- return [this.geographyIndexAccessor(d), d];
96
- })
97
- );
98
- }
99
-
100
- getFill(feature: GeographiesFeature<TProperties, TGeometry>): string {
101
- const geographyIndex = this.featureIndexAccessor(feature);
102
- return this.customFills
103
- ? this.getPatternFill(geographyIndex)
104
- : this.getAttributeFill(geographyIndex);
105
- }
106
-
107
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
- getPatternFill(geographyIndex: string): string {
109
- const datum = this.datumsByGeographyIndex.get(geographyIndex);
110
- const geographyFill = this.getAttributeFill(geographyIndex);
111
- return FillUtilities.getFill(datum, geographyFill, this.customFills);
112
- }
113
-
114
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
- getAttributeFill(geographyIndex: string): string {
116
- const dataValue = this.attributeValuesByGeographyIndex.get(geographyIndex);
117
- return this.attributeScale(dataValue);
118
- }
119
-
120
- getTooltipData(path: SVGPathElement): GeographiesTooltipDatum<Datum> {
121
- const feature = select(path).datum() as GeographiesFeature<
122
- TProperties,
123
- TGeometry
124
- >;
125
- const featureIndex = this.featureIndexAccessor(feature);
126
- const datum = this.datumsByGeographyIndex.get(featureIndex);
127
- const value = this.attributeValuesByGeographyIndex.get(featureIndex);
128
- const tooltipData: GeographiesTooltipDatum<Datum> = {
129
- datum,
130
- geography: this.geographyIndexAccessor(datum),
131
- attributeValue: this.attributeDimension.formatFunction
132
- ? ValueUtilities.customFormat(
133
- datum,
134
- this.attributeDimension.formatFunction
135
- )
136
- : this.attributeDimension.dimensionType !== 'ordinal' &&
137
- this.attributeDimension.binType !== BinStrategy.categorical
138
- ? ValueUtilities.d3Format(
139
- value as number,
140
- this.attributeDimension.formatSpecifier
141
- )
142
- : (value as string),
143
- color: this.getAttributeFill(featureIndex),
144
- };
145
-
146
- return tooltipData;
147
- }
148
- }
@@ -1,65 +0,0 @@
1
- import { DataValue } from '../../../../../../core/types/values';
2
- import { DataDimensionBuilder } from '../../../../../../data-dimensions/dimension-builder';
3
-
4
- export abstract class AttributeDataDimensionBuilder<
5
- Datum,
6
- AttributeValue extends DataValue,
7
- RangeValue extends string | number = string,
8
- > extends DataDimensionBuilder<Datum, AttributeValue> {
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- protected _interpolator: (...args: any) => any;
11
- protected _nullColor: string;
12
- protected _range: RangeValue[];
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- protected _scale: (...args: any) => string;
15
-
16
- /**
17
- * OPTIONAL. For binned dimensions, a function that will be used to create the a new range for the attribute data scale if the user's specified numBins is greater than the values in the user's specified range.
18
- *
19
- * For the No Bins dimension, this will be used to interpolate between the two colors in the range.
20
- *
21
- * @default interpolateLab
22
- */
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- interpolator(interpolator: (...args: any) => any): this {
25
- this._interpolator = interpolator;
26
- return this;
27
- }
28
-
29
- /**
30
- * A color that will be used if there are any geojson features provided in this dimension's geographies that do not have attribute data.
31
- *
32
- * @default 'whitesmoke'
33
- */
34
- nullColor(nullColor: string): this {
35
- this._nullColor = nullColor;
36
- return this;
37
- }
38
-
39
- /**
40
- * OPTIONAL. An array of values that will be used as the range in the attribute data scale.
41
- *
42
- * @default ['white', 'slategray'] for Categorical Bins
43
- * @default ['white', 'blue'] for Equal Frequencies Bins
44
- * @default ['white', 'pink', 'red'] for Equal Value Ranges Bins
45
- */
46
- range(range: RangeValue[]): this {
47
- this._range = range;
48
- return this;
49
- }
50
-
51
- /**
52
- * A function that will be used to create the scale for the attribute data.
53
- *
54
- * @default scaleOrdinal for Categorical Bins
55
- * @default scaleThreshold for Custom Breaks Bins (cannot be overridden)
56
- * @default scaleQuantile for Equal Frequencies Bins
57
- * @default scaleQuantize for Equal Value Ranges Bins
58
- * @default scaleLinear for No Bins
59
- */
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- scale(scale: (...args: any) => string): this {
62
- this._scale = scale;
63
- return this;
64
- }
65
- }
@@ -1,15 +0,0 @@
1
- import { DataValue } from '../../../../../../core/types/values';
2
- import { DataDimensionOptions } from '../../../../../../data-dimensions/dimension-options';
3
-
4
- export interface AttributeDataDimensionOptions<
5
- Datum,
6
- AttributeValue extends DataValue,
7
- RangeValue extends string | number = string,
8
- > extends DataDimensionOptions<Datum, AttributeValue> {
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- interpolator: (...args: any) => any;
11
- nullColor: string;
12
- range: RangeValue[];
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- scale: (...args: any) => string;
15
- }
@@ -1,32 +0,0 @@
1
- import { DataValue } from '../../../../../../core/types/values';
2
- import { DataDimension } from '../../../../../../data-dimensions/dimension';
3
- import { BinStrategy } from '../attribute-data-bin-enums';
4
- import { AttributeDataDimensionOptions } from './attribute-data-dimension-options';
5
-
6
- /**
7
- * Configuration object for attribute data that will be used to shade the map.
8
- *
9
- * The first generic parameter is the type of the attribute data.
10
- */
11
- export abstract class AttributeDataDimension<
12
- Datum,
13
- AttributeValue extends DataValue,
14
- RangeValue extends string | number = string,
15
- >
16
- extends DataDimension<Datum, AttributeValue>
17
- implements AttributeDataDimensionOptions<Datum, AttributeValue, RangeValue>
18
- {
19
- binType: BinStrategy;
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- interpolator: (...args: any) => any;
22
- nullColor: string;
23
- range: RangeValue[];
24
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
- scale: (...args: any) => any;
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- abstract getScale(): any;
28
-
29
- constructor(dimensionType: 'number' | 'ordinal' | 'date') {
30
- super(dimensionType);
31
- }
32
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Enum that defines the types of binning that can be used to map quantitative attribute data to colors.
3
- */
4
- export enum BinStrategy {
5
- none = 'none',
6
- categorical = 'categorical',
7
- equalValueRanges = 'equalValueRanges',
8
- equalFrequencies = 'equalFrequencies',
9
- customBreaks = 'customBreaks',
10
- }
@@ -1,15 +0,0 @@
1
- import { BinStrategy } from './attribute-data-bin-enums';
2
- import { CategoricalBinsAttributeDataDimension } from './categorical-bins/categorical-bins';
3
- import { CustomBreaksBinsAttributeDataDimension } from './custom-breaks/custom-breaks-bins';
4
- import { EqualFrequenciesAttributeDataDimension } from './equal-frequencies-bins/equal-frequencies-bins';
5
- import { EqualValueRangesAttributeDataDimension } from './equal-value-ranges-bins/equal-value-ranges-bins';
6
- import { NoBinsAttributeDataDimension } from './no-bins/no-bins';
7
-
8
- export type VicNumberValuesBin = Omit<BinStrategy, BinStrategy.categorical>;
9
-
10
- export type VicAttributeDataDimensionConfig<Datum> =
11
- | CategoricalBinsAttributeDataDimension<Datum>
12
- | NoBinsAttributeDataDimension<Datum>
13
- | EqualValueRangesAttributeDataDimension<Datum>
14
- | EqualFrequenciesAttributeDataDimension<Datum>
15
- | CustomBreaksBinsAttributeDataDimension<Datum>;
@@ -1,18 +0,0 @@
1
- import { AttributeDataDimensionBuilder } from '../attribute-data/attribute-data-dimension-builder';
2
-
3
- export abstract class CalculatedBinsAttributeDataDimensionBuilder<
4
- Datum,
5
- RangeValue extends string | number = string,
6
- > extends AttributeDataDimensionBuilder<Datum, number, RangeValue> {
7
- protected _formatSpecifier: string;
8
-
9
- /**
10
- * OPTIONAL. Sets a format specifier that will be applied to the value of this dimension using D3 format for display purposes.
11
- *
12
- * For example, this will format data values shown in a tooltip
13
- */
14
- formatSpecifier(formatSpecifier: string): this {
15
- this._formatSpecifier = formatSpecifier;
16
- return this;
17
- }
18
- }
@@ -1,8 +0,0 @@
1
- import { AttributeDataDimensionOptions } from '../attribute-data/attribute-data-dimension-options';
2
-
3
- export interface CalculatedBinsAttributeDataDimensionOptions<
4
- Datum,
5
- RangeValue extends string | number = string,
6
- > extends AttributeDataDimensionOptions<Datum, number, RangeValue> {
7
- formatSpecifier: string;
8
- }
@@ -1,60 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { interpolateLab } from 'd3';
3
- import { CalculatedBinsAttributeDataDimension } from './calculated-bins';
4
-
5
- class ConcreteCalculatedBins extends CalculatedBinsAttributeDataDimension<
6
- any,
7
- string
8
- > {
9
- protected override setDomain(): void {
10
- return;
11
- }
12
- override getScale() {
13
- return;
14
- }
15
- override setPropertiesFromData(): void {
16
- return;
17
- }
18
- }
19
-
20
- describe('CalculatedRangeBinsAttributeDataDimension', () => {
21
- let dimension: ConcreteCalculatedBins;
22
- beforeEach(() => {
23
- dimension = new ConcreteCalculatedBins('number');
24
- });
25
- describe('integration: setRange', () => {
26
- it('sets the range to the correct values/length', () => {
27
- (dimension as any).calculatedNumBins = 3;
28
- dimension.range = ['red', 'blue', 'yellow', 'green'];
29
- dimension.interpolator = interpolateLab;
30
- (dimension as any).setRange();
31
- expect(dimension.range.length).toEqual(3);
32
- });
33
- });
34
- describe('shouldCalculateBinColors', () => {
35
- it('returns true when numBins is greater than 1 and colors length is not equal to numBins - colors are fewer', () => {
36
- expect((dimension as any).shouldCalculateBinColors(2, ['red'])).toBe(
37
- true
38
- );
39
- });
40
- it('returns true when numBins is greater than 1 and colors length is not equal to numBins - colors are greater', () => {
41
- expect(
42
- (dimension as any).shouldCalculateBinColors(2, [
43
- 'red',
44
- 'blue',
45
- 'yellow',
46
- ])
47
- ).toBe(true);
48
- });
49
- it('returns false when numBins is 1', () => {
50
- expect((dimension as any).shouldCalculateBinColors(1, ['red'])).toBe(
51
- false
52
- );
53
- });
54
- it('returns false when colors length is equal to numBins', () => {
55
- expect(
56
- (dimension as any).shouldCalculateBinColors(2, ['red', 'blue'])
57
- ).toBe(false);
58
- });
59
- });
60
- });
@@ -1,34 +0,0 @@
1
- import { extent, range, scaleLinear } from 'd3';
2
- import { AttributeDataDimension } from '../attribute-data/attribute-data-dimension';
3
-
4
- export abstract class CalculatedBinsAttributeDataDimension<
5
- Datum,
6
- RangeValue extends string | number = string,
7
- > extends AttributeDataDimension<Datum, number, RangeValue> {
8
- protected calculatedNumBins: number;
9
- readonly formatSpecifier: string;
10
-
11
- protected setRange(): void {
12
- if (this.shouldCalculateBinColors(this.calculatedNumBins, this.range)) {
13
- const binIndicies = range(this.calculatedNumBins);
14
- this.range = binIndicies.map((i) =>
15
- this.getColorGenerator(binIndicies)(i)
16
- );
17
- }
18
- }
19
-
20
- private shouldCalculateBinColors(
21
- numBins: number,
22
- range: RangeValue[]
23
- ): boolean {
24
- return numBins > 1 && range.length !== numBins;
25
- }
26
-
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- private getColorGenerator(binIndicies: number[]): any {
29
- return scaleLinear<RangeValue>()
30
- .domain(extent(binIndicies))
31
- .range(this.range)
32
- .interpolate(this.interpolator);
33
- }
34
- }
@@ -1,46 +0,0 @@
1
- import { safeAssign } from '@mathstack/app-kit';
2
- import { scaleOrdinal } from 'd3';
3
- import { AttributeDataDimensionBuilder } from '../attribute-data/attribute-data-dimension-builder';
4
- import { CategoricalBinsAttributeDataDimension } from './categorical-bins';
5
-
6
- const DEFAULT = {
7
- _nullColor: 'whitesmoke',
8
- _range: ['white', 'lightslategray'],
9
- _scale: scaleOrdinal,
10
- _valueAccessor: () => '',
11
- };
12
-
13
- export class CategoricalBinsBuilder<
14
- Datum,
15
- RangeValue extends string | number = string,
16
- > extends AttributeDataDimensionBuilder<Datum, RangeValue> {
17
- private _domain: string[];
18
-
19
- constructor() {
20
- super();
21
- safeAssign(this, DEFAULT);
22
- }
23
-
24
- /**
25
- * OPTIONAL. Sets the domain of the scale. If not set, the domain will be inferred from the data.
26
- */
27
- domain(domain: string[]): this {
28
- this._domain = domain;
29
- return this;
30
- }
31
-
32
- /**
33
- * @internal This method is not intended to be used by consumers of this library.
34
- */
35
- _build(): CategoricalBinsAttributeDataDimension<Datum, RangeValue> {
36
- return new CategoricalBinsAttributeDataDimension({
37
- domain: this._domain,
38
- formatFunction: this._formatFunction,
39
- interpolator: this._interpolator,
40
- nullColor: this._nullColor,
41
- range: this._range,
42
- scale: this._scale,
43
- valueAccessor: this._valueAccessor,
44
- });
45
- }
46
- }
@@ -1,8 +0,0 @@
1
- import { AttributeDataDimensionOptions } from '../attribute-data/attribute-data-dimension-options';
2
-
3
- export interface CategoricalBinsOptions<
4
- Datum,
5
- RangeValue extends string | number = string,
6
- > extends AttributeDataDimensionOptions<Datum, RangeValue> {
7
- domain: string[];
8
- }