@oiz/stzh-components 2.3.0-alpha → 2.3.0-alpha2

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 (347) hide show
  1. package/dist/cjs/{app-globals-13e786d3.js → app-globals-03f189c4.js} +1 -1
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/stzh-actions.cjs.entry.js +1 -1
  4. package/dist/cjs/stzh-appnav.cjs.entry.js +1 -1
  5. package/dist/cjs/stzh-audio.cjs.entry.js +1 -1
  6. package/dist/cjs/stzh-badge_3.cjs.entry.js +6 -2
  7. package/dist/cjs/stzh-card_3.cjs.entry.js +4 -3
  8. package/dist/cjs/stzh-cell.cjs.entry.js +1 -1
  9. package/dist/cjs/stzh-chart.cjs.entry.js +406 -1473
  10. package/dist/cjs/stzh-checkbox.cjs.entry.js +1 -1
  11. package/dist/cjs/stzh-checkboxgroup.cjs.entry.js +1 -1
  12. package/dist/cjs/stzh-chip_2.cjs.entry.js +1 -1
  13. package/dist/cjs/stzh-components.cjs.js +2 -2
  14. package/dist/cjs/stzh-contact.cjs.entry.js +1 -1
  15. package/dist/cjs/stzh-container.cjs.entry.js +1 -1
  16. package/dist/cjs/stzh-cspace.cjs.entry.js +1 -1
  17. package/dist/cjs/stzh-datalist_2.cjs.entry.js +20 -7
  18. package/dist/cjs/stzh-datepicker_3.cjs.entry.js +1 -1
  19. package/dist/cjs/stzh-details.cjs.entry.js +1 -1
  20. package/dist/cjs/stzh-dialog.cjs.entry.js +1 -1
  21. package/dist/cjs/stzh-dropdown.cjs.entry.js +6 -2
  22. package/dist/cjs/stzh-figure.cjs.entry.js +1 -1
  23. package/dist/cjs/stzh-footer.cjs.entry.js +1 -1
  24. package/dist/cjs/stzh-ghettobox_2.cjs.entry.js +1 -1
  25. package/dist/cjs/stzh-header.cjs.entry.js +1 -1
  26. package/dist/cjs/stzh-hspace.cjs.entry.js +1 -1
  27. package/dist/cjs/stzh-icon-sprite.cjs.entry.js +1 -1
  28. package/dist/cjs/stzh-input.cjs.entry.js +1 -1
  29. package/dist/cjs/stzh-link.cjs.entry.js +1 -1
  30. package/dist/cjs/stzh-menu_2.cjs.entry.js +1 -1
  31. package/dist/cjs/stzh-pagebottom.cjs.entry.js +1 -1
  32. package/dist/cjs/stzh-pagetitle-hero.cjs.entry.js +1 -1
  33. package/dist/cjs/stzh-pagetitle.cjs.entry.js +1 -1
  34. package/dist/cjs/stzh-popover.cjs.entry.js +1 -1
  35. package/dist/cjs/stzh-progressbar-item.cjs.entry.js +1 -1
  36. package/dist/cjs/stzh-readspeaker.cjs.entry.js +1 -1
  37. package/dist/cjs/stzh-row.cjs.entry.js +1 -1
  38. package/dist/cjs/stzh-section.cjs.entry.js +1 -1
  39. package/dist/cjs/stzh-sortable.cjs.entry.js +2 -2
  40. package/dist/cjs/stzh-space.cjs.entry.js +1 -1
  41. package/dist/cjs/stzh-status.cjs.entry.js +1 -1
  42. package/dist/cjs/stzh-table.cjs.entry.js +1 -1
  43. package/dist/cjs/stzh-textandimage.cjs.entry.js +1 -1
  44. package/dist/cjs/stzh-toggle.cjs.entry.js +1 -1
  45. package/dist/cjs/stzh-tooltip.cjs.entry.js +1 -1
  46. package/dist/cjs/stzh-upload.cjs.entry.js +2 -2
  47. package/dist/cjs/stzh-vspace.cjs.entry.js +1 -1
  48. package/dist/cjs/{utils-ff153309.js → utils-a2ff9f84.js} +39 -11
  49. package/dist/collection/assets/i18n/de.json +3 -3
  50. package/dist/collection/assets/icons/mono/calculator.svg +10 -0
  51. package/dist/collection/components/stzh-button/stzh-button.css +26 -2
  52. package/dist/collection/components/stzh-button/stzh-button.js +40 -0
  53. package/dist/collection/components/stzh-button/stzh-button.stories.js +9 -0
  54. package/dist/collection/components/stzh-card/stzh-card.css +3 -0
  55. package/dist/collection/components/stzh-card-list/stzh-card-list.js +2 -2
  56. package/dist/collection/components/stzh-cell/stzh-cell.css +5 -0
  57. package/dist/collection/components/stzh-chart/stzh-chart.css +37 -55
  58. package/dist/collection/components/stzh-chip/stzh-chip.css +7 -3
  59. package/dist/collection/components/stzh-chip/stzh-chip.js +2 -2
  60. package/dist/collection/components/stzh-chip-select/stzh-chip-select.js +1 -0
  61. package/dist/collection/components/stzh-container/stzh-container.css +8 -0
  62. package/dist/collection/components/stzh-cspace/stzh-cspace.css +8 -6
  63. package/dist/collection/components/stzh-datalist/stzh-datalist.css +3 -3
  64. package/dist/collection/components/stzh-datalist/stzh-datalist.js +5 -5
  65. package/dist/collection/components/stzh-datalist/stzh-datalist.stories.js +18 -6
  66. package/dist/collection/components/stzh-datalist-item/stzh-datalist-item.css +57 -18
  67. package/dist/collection/components/stzh-datalist-item/stzh-datalist-item.js +70 -4
  68. package/dist/collection/components/stzh-datatable/stzh-datatable.js +1 -1
  69. package/dist/collection/components/stzh-dropdown/stzh-dropdown.js +22 -2
  70. package/dist/collection/components/stzh-hspace/stzh-hspace.css +19 -13
  71. package/dist/collection/components/stzh-icon-sprite/assets/svgsprites/symbol/sprite.symbol.html +47 -34
  72. package/dist/collection/components/stzh-icon-sprite/assets/svgsprites/symbol/svg/sprite.symbol.svg +1 -1
  73. package/dist/collection/components/stzh-progressbar-item/stzh-progressbar-item.css +0 -3
  74. package/dist/collection/components/stzh-row/stzh-row.css +5 -0
  75. package/dist/collection/components/stzh-section/stzh-section.css +6 -0
  76. package/dist/collection/components/stzh-sortable/stzh-sortable.js +3 -3
  77. package/dist/collection/components/stzh-space/stzh-space.css +6 -0
  78. package/dist/collection/components/stzh-status/stzh-status.css +5 -1
  79. package/dist/collection/components/stzh-status/stzh-status.js +1 -1
  80. package/dist/collection/components/stzh-table/stzh-table.js +1 -1
  81. package/dist/collection/components/stzh-upload/stzh-upload.js +1 -1
  82. package/dist/collection/components/stzh-vspace/stzh-vspace.css +6 -0
  83. package/dist/collection/pages/website.stories.js +4 -1
  84. package/dist/collection/utils/utils.js +41 -20
  85. package/dist/components/index.js +1 -1
  86. package/dist/components/stzh-button2.js +7 -1
  87. package/dist/components/stzh-card-list2.js +2 -2
  88. package/dist/components/stzh-card2.js +1 -1
  89. package/dist/components/stzh-cell.js +1 -1
  90. package/dist/components/stzh-chart.js +406 -1473
  91. package/dist/components/stzh-chip-select2.js +1 -0
  92. package/dist/components/stzh-chip2.js +1 -1
  93. package/dist/components/stzh-contact.js +18 -12
  94. package/dist/components/stzh-container.js +1 -1
  95. package/dist/components/stzh-cspace.js +1 -1
  96. package/dist/components/stzh-datalist-item2.js +33 -11
  97. package/dist/components/stzh-datalist2.js +17 -11
  98. package/dist/components/stzh-dropdown2.js +6 -1
  99. package/dist/components/stzh-hspace.js +1 -1
  100. package/dist/components/stzh-icon-sprite.js +1 -1
  101. package/dist/components/stzh-progressbar-item2.js +1 -1
  102. package/dist/components/stzh-row.js +1 -1
  103. package/dist/components/stzh-section.js +1 -1
  104. package/dist/components/stzh-sitemap.js +16 -10
  105. package/dist/components/stzh-sortable2.js +2 -2
  106. package/dist/components/stzh-space.js +1 -1
  107. package/dist/components/stzh-status2.js +2 -2
  108. package/dist/components/stzh-upload.js +1 -1
  109. package/dist/components/stzh-vspace.js +1 -1
  110. package/dist/components/utils.js +39 -11
  111. package/dist/esm/{app-globals-2e508622.js → app-globals-02f560cd.js} +1 -1
  112. package/dist/esm/loader.js +2 -2
  113. package/dist/esm/stzh-actions.entry.js +1 -1
  114. package/dist/esm/stzh-appnav.entry.js +1 -1
  115. package/dist/esm/stzh-audio.entry.js +1 -1
  116. package/dist/esm/stzh-badge_3.entry.js +6 -2
  117. package/dist/esm/stzh-card_3.entry.js +4 -3
  118. package/dist/esm/stzh-cell.entry.js +1 -1
  119. package/dist/esm/stzh-chart.entry.js +406 -1473
  120. package/dist/esm/stzh-checkbox.entry.js +1 -1
  121. package/dist/esm/stzh-checkboxgroup.entry.js +1 -1
  122. package/dist/esm/stzh-chip_2.entry.js +1 -1
  123. package/dist/esm/stzh-components.js +2 -2
  124. package/dist/esm/stzh-contact.entry.js +1 -1
  125. package/dist/esm/stzh-container.entry.js +1 -1
  126. package/dist/esm/stzh-cspace.entry.js +1 -1
  127. package/dist/esm/stzh-datalist_2.entry.js +20 -7
  128. package/dist/esm/stzh-datepicker_3.entry.js +1 -1
  129. package/dist/esm/stzh-details.entry.js +1 -1
  130. package/dist/esm/stzh-dialog.entry.js +1 -1
  131. package/dist/esm/stzh-dropdown.entry.js +6 -2
  132. package/dist/esm/stzh-figure.entry.js +1 -1
  133. package/dist/esm/stzh-footer.entry.js +1 -1
  134. package/dist/esm/stzh-ghettobox_2.entry.js +1 -1
  135. package/dist/esm/stzh-header.entry.js +1 -1
  136. package/dist/esm/stzh-hspace.entry.js +1 -1
  137. package/dist/esm/stzh-icon-sprite.entry.js +1 -1
  138. package/dist/esm/stzh-input.entry.js +1 -1
  139. package/dist/esm/stzh-link.entry.js +1 -1
  140. package/dist/esm/stzh-menu_2.entry.js +1 -1
  141. package/dist/esm/stzh-pagebottom.entry.js +1 -1
  142. package/dist/esm/stzh-pagetitle-hero.entry.js +1 -1
  143. package/dist/esm/stzh-pagetitle.entry.js +1 -1
  144. package/dist/esm/stzh-popover.entry.js +1 -1
  145. package/dist/esm/stzh-progressbar-item.entry.js +1 -1
  146. package/dist/esm/stzh-readspeaker.entry.js +1 -1
  147. package/dist/esm/stzh-row.entry.js +1 -1
  148. package/dist/esm/stzh-section.entry.js +1 -1
  149. package/dist/esm/stzh-sortable.entry.js +2 -2
  150. package/dist/esm/stzh-space.entry.js +1 -1
  151. package/dist/esm/stzh-status.entry.js +1 -1
  152. package/dist/esm/stzh-table.entry.js +1 -1
  153. package/dist/esm/stzh-textandimage.entry.js +1 -1
  154. package/dist/esm/stzh-toggle.entry.js +1 -1
  155. package/dist/esm/stzh-tooltip.entry.js +1 -1
  156. package/dist/esm/stzh-upload.entry.js +2 -2
  157. package/dist/esm/stzh-vspace.entry.js +1 -1
  158. package/dist/esm/{utils-92a77db5.js → utils-51148d9a.js} +39 -11
  159. package/dist/esm-es5/app-globals-02f560cd.js +1 -0
  160. package/dist/esm-es5/loader.js +1 -1
  161. package/dist/esm-es5/stzh-actions.entry.js +1 -1
  162. package/dist/esm-es5/stzh-appnav.entry.js +1 -1
  163. package/dist/esm-es5/stzh-audio.entry.js +1 -1
  164. package/dist/esm-es5/stzh-badge_3.entry.js +1 -1
  165. package/dist/esm-es5/stzh-card_3.entry.js +1 -1
  166. package/dist/esm-es5/stzh-cell.entry.js +1 -1
  167. package/dist/esm-es5/stzh-chart.entry.js +3 -3
  168. package/dist/esm-es5/stzh-checkbox.entry.js +1 -1
  169. package/dist/esm-es5/stzh-checkboxgroup.entry.js +1 -1
  170. package/dist/esm-es5/stzh-chip_2.entry.js +1 -1
  171. package/dist/esm-es5/stzh-components.js +1 -1
  172. package/dist/esm-es5/stzh-contact.entry.js +1 -1
  173. package/dist/esm-es5/stzh-container.entry.js +1 -1
  174. package/dist/esm-es5/stzh-cspace.entry.js +1 -1
  175. package/dist/esm-es5/stzh-datalist_2.entry.js +1 -1
  176. package/dist/esm-es5/stzh-datepicker_3.entry.js +1 -1
  177. package/dist/esm-es5/stzh-details.entry.js +1 -1
  178. package/dist/esm-es5/stzh-dialog.entry.js +1 -1
  179. package/dist/esm-es5/stzh-dropdown.entry.js +2 -2
  180. package/dist/esm-es5/stzh-figure.entry.js +1 -1
  181. package/dist/esm-es5/stzh-footer.entry.js +1 -1
  182. package/dist/esm-es5/stzh-ghettobox_2.entry.js +1 -1
  183. package/dist/esm-es5/stzh-header.entry.js +1 -1
  184. package/dist/esm-es5/stzh-hspace.entry.js +1 -1
  185. package/dist/esm-es5/stzh-icon-sprite.entry.js +1 -1
  186. package/dist/esm-es5/stzh-input.entry.js +1 -1
  187. package/dist/esm-es5/stzh-link.entry.js +1 -1
  188. package/dist/esm-es5/stzh-menu_2.entry.js +1 -1
  189. package/dist/esm-es5/stzh-pagebottom.entry.js +1 -1
  190. package/dist/esm-es5/stzh-pagetitle-hero.entry.js +1 -1
  191. package/dist/esm-es5/stzh-pagetitle.entry.js +1 -1
  192. package/dist/esm-es5/stzh-popover.entry.js +1 -1
  193. package/dist/esm-es5/stzh-progressbar-item.entry.js +1 -1
  194. package/dist/esm-es5/stzh-readspeaker.entry.js +1 -1
  195. package/dist/esm-es5/stzh-row.entry.js +1 -1
  196. package/dist/esm-es5/stzh-section.entry.js +1 -1
  197. package/dist/esm-es5/stzh-sortable.entry.js +2 -2
  198. package/dist/esm-es5/stzh-space.entry.js +1 -1
  199. package/dist/esm-es5/stzh-status.entry.js +1 -1
  200. package/dist/esm-es5/stzh-table.entry.js +1 -1
  201. package/dist/esm-es5/stzh-textandimage.entry.js +1 -1
  202. package/dist/esm-es5/stzh-toggle.entry.js +1 -1
  203. package/dist/esm-es5/stzh-tooltip.entry.js +1 -1
  204. package/dist/esm-es5/stzh-upload.entry.js +1 -1
  205. package/dist/esm-es5/stzh-vspace.entry.js +1 -1
  206. package/dist/esm-es5/utils-51148d9a.js +1 -0
  207. package/dist/stzh-components/assets/i18n/de.json +3 -3
  208. package/dist/stzh-components/assets/icons/mono/calculator.svg +10 -0
  209. package/dist/stzh-components/assets/svgsprites/symbol/sprite.symbol.html +47 -34
  210. package/dist/stzh-components/assets/svgsprites/symbol/svg/sprite.symbol.svg +1 -1
  211. package/dist/stzh-components/{p-d6a11daa.entry.js → p-02d51685.entry.js} +1 -1
  212. package/dist/stzh-components/p-0759cd7e.entry.js +1 -0
  213. package/dist/stzh-components/{p-6c80b920.system.entry.js → p-07dc23a3.system.entry.js} +1 -1
  214. package/dist/stzh-components/{p-bb82fa2d.system.entry.js → p-088b16c6.system.entry.js} +1 -1
  215. package/dist/stzh-components/{p-2ba88798.entry.js → p-0ba944ab.entry.js} +1 -1
  216. package/dist/stzh-components/{p-06f5abab.system.entry.js → p-0ffd0de8.system.entry.js} +1 -1
  217. package/dist/stzh-components/{p-2c490268.system.entry.js → p-102e2bcd.system.entry.js} +1 -1
  218. package/dist/stzh-components/{p-a2b2cfac.system.entry.js → p-12856e02.system.entry.js} +1 -1
  219. package/dist/stzh-components/{p-b9427914.entry.js → p-155ecf6c.entry.js} +1 -1
  220. package/dist/stzh-components/p-16c0b9ae.entry.js +3 -0
  221. package/dist/stzh-components/p-18e20038.entry.js +1 -0
  222. package/dist/stzh-components/{p-f433e62a.system.entry.js → p-1a98470f.system.entry.js} +1 -1
  223. package/dist/stzh-components/p-1bcda13d.system.entry.js +1 -0
  224. package/dist/stzh-components/p-1d435dd8.system.entry.js +1 -0
  225. package/dist/stzh-components/{p-8972cf20.entry.js → p-1f74846f.entry.js} +1 -1
  226. package/dist/stzh-components/{p-ac3e3b2a.system.entry.js → p-215d2cf6.system.entry.js} +1 -1
  227. package/dist/stzh-components/{p-1f925e84.system.entry.js → p-25d8a9c0.system.entry.js} +1 -1
  228. package/dist/stzh-components/{p-97e4272b.system.entry.js → p-2674dc69.system.entry.js} +1 -1
  229. package/dist/stzh-components/p-29e9ad9f.system.entry.js +1 -0
  230. package/dist/stzh-components/p-2c42ae68.entry.js +1 -0
  231. package/dist/stzh-components/{p-d32965be.system.entry.js → p-309fc559.system.entry.js} +1 -1
  232. package/dist/stzh-components/p-30a9de85.system.entry.js +1 -0
  233. package/dist/stzh-components/{p-64e27ac1.entry.js → p-31b995e8.entry.js} +1 -1
  234. package/dist/stzh-components/p-326fcb23.js +1 -0
  235. package/dist/stzh-components/{p-705aa56d.entry.js → p-32a03d1c.entry.js} +1 -1
  236. package/dist/stzh-components/p-37920e74.system.entry.js +1 -0
  237. package/dist/stzh-components/{p-125a8244.entry.js → p-4633b93d.entry.js} +1 -1
  238. package/dist/stzh-components/{p-81b4b0e6.system.entry.js → p-48e79dc0.system.entry.js} +1 -1
  239. package/dist/stzh-components/p-4c60da30.entry.js +1 -0
  240. package/dist/stzh-components/p-4eee30ea.system.entry.js +1 -0
  241. package/dist/stzh-components/{p-41fa7e81.entry.js → p-532b4218.entry.js} +1 -1
  242. package/dist/stzh-components/{p-668b4025.system.entry.js → p-552d0e82.system.entry.js} +1 -1
  243. package/dist/stzh-components/p-57235597.system.entry.js +1 -0
  244. package/dist/stzh-components/p-5c697491.js +1 -0
  245. package/dist/stzh-components/{p-a0a033bd.system.entry.js → p-5c72664e.system.entry.js} +1 -1
  246. package/dist/stzh-components/p-5d55a672.system.entry.js +1 -0
  247. package/dist/stzh-components/p-63bb1d5e.system.js +1 -0
  248. package/dist/stzh-components/{p-7b0c04b3.system.entry.js → p-6606e17e.system.entry.js} +1 -1
  249. package/dist/stzh-components/{p-8ee705ed.entry.js → p-66692130.entry.js} +1 -1
  250. package/dist/stzh-components/{p-bc36fda4.system.entry.js → p-6769b9a8.system.entry.js} +1 -1
  251. package/dist/stzh-components/{p-04d390eb.entry.js → p-67816aa4.entry.js} +1 -1
  252. package/dist/stzh-components/{p-e7e9b295.system.entry.js → p-6a94e520.system.entry.js} +1 -1
  253. package/dist/stzh-components/p-6deb516e.entry.js +1 -0
  254. package/dist/stzh-components/{p-ed58b644.system.entry.js → p-72a62d0d.system.entry.js} +1 -1
  255. package/dist/stzh-components/p-761ee059.entry.js +1 -0
  256. package/dist/stzh-components/{p-c33b7d23.entry.js → p-77320d20.entry.js} +1 -1
  257. package/dist/stzh-components/p-798ac79c.entry.js +1 -0
  258. package/dist/stzh-components/{p-7185f634.entry.js → p-7f857e56.entry.js} +1 -1
  259. package/dist/stzh-components/{p-9d5c70ee.system.entry.js → p-809ed955.system.entry.js} +1 -1
  260. package/dist/stzh-components/{p-fa615b51.system.entry.js → p-84a6e023.system.entry.js} +1 -1
  261. package/dist/stzh-components/p-89bd0d46.entry.js +1 -0
  262. package/dist/stzh-components/{p-5c717080.system.entry.js → p-8f577bc6.system.entry.js} +1 -1
  263. package/dist/stzh-components/{p-cbe6d2ea.entry.js → p-919cf183.entry.js} +1 -1
  264. package/dist/stzh-components/p-94918f2a.system.entry.js +1 -0
  265. package/dist/stzh-components/p-951b04ab.entry.js +1 -0
  266. package/dist/stzh-components/{p-da98a8bb.system.entry.js → p-963a7526.system.entry.js} +1 -1
  267. package/dist/stzh-components/{p-126a0f14.entry.js → p-9be21c72.entry.js} +1 -1
  268. package/dist/stzh-components/p-9de8b25b.entry.js +1 -0
  269. package/dist/stzh-components/{p-fe5d5fc8.entry.js → p-a1727d35.entry.js} +1 -1
  270. package/dist/stzh-components/{p-7e94b787.entry.js → p-a2df0ea1.entry.js} +1 -1
  271. package/dist/stzh-components/{p-6496df0a.system.entry.js → p-a32ae73a.system.entry.js} +2 -2
  272. package/dist/stzh-components/{p-8c5a6832.system.entry.js → p-a7eb3e02.system.entry.js} +1 -1
  273. package/dist/stzh-components/p-acf59d10.entry.js +1 -0
  274. package/dist/stzh-components/p-ad62a793.system.entry.js +1 -0
  275. package/dist/stzh-components/{p-4370efe7.entry.js → p-ae38f1d2.entry.js} +1 -1
  276. package/dist/stzh-components/p-b04a9d0f.system.entry.js +1 -0
  277. package/dist/stzh-components/p-b422041d.entry.js +1 -0
  278. package/dist/stzh-components/{p-b050c1f4.entry.js → p-b9372a2a.entry.js} +1 -1
  279. package/dist/stzh-components/{p-f5b2c12e.entry.js → p-bb698e26.entry.js} +1 -1
  280. package/dist/stzh-components/{p-dbe5320f.entry.js → p-bc2af057.entry.js} +1 -1
  281. package/dist/stzh-components/{p-1c2c9ca8.entry.js → p-bc545121.entry.js} +1 -1
  282. package/dist/stzh-components/{p-d5644c25.entry.js → p-be97cb22.entry.js} +1 -1
  283. package/dist/stzh-components/{p-b6e6f847.entry.js → p-c2a22eb8.entry.js} +1 -1
  284. package/dist/stzh-components/{p-0af8a184.system.entry.js → p-c4c620fa.system.entry.js} +1 -1
  285. package/dist/stzh-components/p-c87e9b71.entry.js +1 -0
  286. package/dist/stzh-components/p-cc722b35.system.entry.js +3 -0
  287. package/dist/stzh-components/{p-38e7645a.entry.js → p-d1cfe06b.entry.js} +1 -1
  288. package/dist/stzh-components/p-d4b7a303.system.js +1 -0
  289. package/dist/stzh-components/p-d4c006e8.entry.js +1 -0
  290. package/dist/stzh-components/{p-a3c7aa63.entry.js → p-d9ae09b5.entry.js} +4 -4
  291. package/dist/stzh-components/p-db6aa108.system.js +1 -0
  292. package/dist/stzh-components/{p-8715198b.entry.js → p-de76e01b.entry.js} +1 -1
  293. package/dist/stzh-components/{p-a44527f8.entry.js → p-e1b2785b.entry.js} +1 -1
  294. package/dist/stzh-components/{p-00c4c8c0.system.entry.js → p-e4a8f1bc.system.entry.js} +1 -1
  295. package/dist/stzh-components/p-e59c2adc.system.entry.js +1 -0
  296. package/dist/stzh-components/p-e9994d05.system.entry.js +1 -0
  297. package/dist/stzh-components/{p-e78fe899.system.entry.js → p-ed783154.system.entry.js} +1 -1
  298. package/dist/stzh-components/{p-4d8c81b2.system.entry.js → p-eed126cf.system.entry.js} +1 -1
  299. package/dist/stzh-components/{p-f3d69226.system.entry.js → p-f3276ca5.system.entry.js} +1 -1
  300. package/dist/stzh-components/p-f4deacf4.system.entry.js +1 -0
  301. package/dist/stzh-components/{p-99aacd74.entry.js → p-f7e18135.entry.js} +1 -1
  302. package/dist/stzh-components/{p-09f582cd.entry.js → p-febba79b.entry.js} +1 -1
  303. package/dist/stzh-components/{p-5f9b58fb.system.entry.js → p-ff328114.system.entry.js} +1 -1
  304. package/dist/stzh-components/stzh-components.esm.js +1 -1
  305. package/dist/stzh-components/stzh-components.js +1 -1
  306. package/dist/types/components.d.ts +58 -14
  307. package/dist/types/index.d.ts +1 -1
  308. package/dist/types/utils/utils.d.ts +4 -2
  309. package/dist/vscode-data.json +46 -6
  310. package/package.json +2 -2
  311. package/dist/esm-es5/app-globals-2e508622.js +0 -1
  312. package/dist/esm-es5/utils-92a77db5.js +0 -1
  313. package/dist/stzh-components/p-0447b178.system.entry.js +0 -1
  314. package/dist/stzh-components/p-0ada0b0a.system.entry.js +0 -1
  315. package/dist/stzh-components/p-0afba769.entry.js +0 -1
  316. package/dist/stzh-components/p-101f9b11.system.entry.js +0 -1
  317. package/dist/stzh-components/p-2ad73c0c.system.entry.js +0 -1
  318. package/dist/stzh-components/p-2f4c5e18.entry.js +0 -1
  319. package/dist/stzh-components/p-3238b0bf.entry.js +0 -1
  320. package/dist/stzh-components/p-3e433996.entry.js +0 -1
  321. package/dist/stzh-components/p-4a298117.system.entry.js +0 -1
  322. package/dist/stzh-components/p-537adcfe.system.entry.js +0 -3
  323. package/dist/stzh-components/p-563b1abc.system.entry.js +0 -1
  324. package/dist/stzh-components/p-5cb1cd93.system.entry.js +0 -1
  325. package/dist/stzh-components/p-6414454e.system.entry.js +0 -1
  326. package/dist/stzh-components/p-65ea23f6.entry.js +0 -1
  327. package/dist/stzh-components/p-74d6e349.system.entry.js +0 -1
  328. package/dist/stzh-components/p-791bc813.system.js +0 -1
  329. package/dist/stzh-components/p-86a29c35.js +0 -1
  330. package/dist/stzh-components/p-8ccefd49.system.entry.js +0 -1
  331. package/dist/stzh-components/p-906caf97.js +0 -1
  332. package/dist/stzh-components/p-9380fb85.entry.js +0 -1
  333. package/dist/stzh-components/p-99e27f57.system.js +0 -1
  334. package/dist/stzh-components/p-99e43fb0.entry.js +0 -1
  335. package/dist/stzh-components/p-9be29697.entry.js +0 -1
  336. package/dist/stzh-components/p-a4dd5ba3.entry.js +0 -1
  337. package/dist/stzh-components/p-a51dd210.system.entry.js +0 -1
  338. package/dist/stzh-components/p-b689b882.entry.js +0 -1
  339. package/dist/stzh-components/p-bf071e77.system.js +0 -1
  340. package/dist/stzh-components/p-c0ec905d.entry.js +0 -1
  341. package/dist/stzh-components/p-c646c712.entry.js +0 -1
  342. package/dist/stzh-components/p-ccf023da.entry.js +0 -3
  343. package/dist/stzh-components/p-da85cf73.system.entry.js +0 -1
  344. package/dist/stzh-components/p-dd5f29aa.entry.js +0 -1
  345. package/dist/stzh-components/p-de9edaf2.entry.js +0 -1
  346. package/dist/stzh-components/p-fd3acd16.system.entry.js +0 -1
  347. package/dist/stzh-components/p-fe9acc68.system.entry.js +0 -1
@@ -5036,10 +5036,10 @@ function ribbon() {
5036
5036
 
5037
5037
  var prefix = "$";
5038
5038
 
5039
- function Map$1() {}
5039
+ function Map() {}
5040
5040
 
5041
- Map$1.prototype = map$1.prototype = {
5042
- constructor: Map$1,
5041
+ Map.prototype = map$1.prototype = {
5042
+ constructor: Map,
5043
5043
  has: function(key) {
5044
5044
  return (prefix + key) in this;
5045
5045
  },
@@ -5087,10 +5087,10 @@ Map$1.prototype = map$1.prototype = {
5087
5087
  };
5088
5088
 
5089
5089
  function map$1(object, f) {
5090
- var map = new Map$1;
5090
+ var map = new Map;
5091
5091
 
5092
5092
  // Copy constructor.
5093
- if (object instanceof Map$1) object.each(function(value, key) { map.set(key, value); });
5093
+ if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
5094
5094
 
5095
5095
  // Index array by numeric index or specified key function.
5096
5096
  else if (Array.isArray(object)) {
@@ -5180,12 +5180,12 @@ function setMap(map, key, value) {
5180
5180
  map.set(key, value);
5181
5181
  }
5182
5182
 
5183
- function Set$1() {}
5183
+ function Set() {}
5184
5184
 
5185
5185
  var proto = map$1.prototype;
5186
5186
 
5187
- Set$1.prototype = set.prototype = {
5188
- constructor: Set$1,
5187
+ Set.prototype = set.prototype = {
5188
+ constructor: Set,
5189
5189
  has: proto.has,
5190
5190
  add: function(value) {
5191
5191
  value += "";
@@ -5201,10 +5201,10 @@ Set$1.prototype = set.prototype = {
5201
5201
  };
5202
5202
 
5203
5203
  function set(object, f) {
5204
- var set = new Set$1;
5204
+ var set = new Set;
5205
5205
 
5206
5206
  // Copy constructor.
5207
- if (object instanceof Set$1) object.each(function(value) { set.add(value); });
5207
+ if (object instanceof Set) object.each(function(value) { set.add(value); });
5208
5208
 
5209
5209
  // Otherwise, assume it’s an array.
5210
5210
  else if (object) {
@@ -17159,945 +17159,46 @@ const d3 = /*#__PURE__*/Object.freeze({
17159
17159
  const require$$0 = /*@__PURE__*/_commonjsHelpers.getAugmentedNamespace(d3);
17160
17160
 
17161
17161
  var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
17162
- /*! sszvis v2.4.1, Copyright 2014-present Statistik Stadt Zürich */
17162
+ /*! sszvis v2.1.1, Copyright 2014-present Statistik Stadt Zürich */
17163
17163
  (function (global, factory) {
17164
17164
  factory(exports, require$$0) ;
17165
17165
  }(_commonjsHelpers.commonjsGlobal, (function (exports, d3) {
17166
- var d3__default = 'default' in d3 ? d3['default'] : d3;
17167
-
17168
- function n(n){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;e<t;e++)r[e-1]=arguments[e];throw Error("[Immer] minified error nr: "+n+(r.length?" "+r.join(","):"")+". Find the full error at: https://bit.ly/3cXEKWf")}function t(n){return !!n&&!!n[Q]}function r(n){return !!n&&(function(n){if(!n||"object"!=typeof n)return !1;var t=Object.getPrototypeOf(n);return !t||t===Object.prototype}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function i(n,t,r){void 0===r&&(r=!1),0===o(n)?(r?Object.keys:Z)(n).forEach((function(e){r&&"symbol"==typeof e||t(e,n[e],n);})):n.forEach((function(r,e){return t(e,r,n)}));}function o(n){var t=n[Q];return t?t.i>3?t.i-4:t.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,t){return 2===o(n)?n.has(t):Object.prototype.hasOwnProperty.call(n,t)}function a(n,t){return 2===o(n)?n.get(t):n[t]}function f(n,t,r){var e=o(n);2===e?n.set(t,r):3===e?(n.delete(t),n.add(r)):n[t]=r;}function c(n,t){return n===t?0!==n||1/n==1/t:n!=n&&t!=t}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return n.slice();var t=nn(n);delete t[Q];for(var r=Z(t),e=0;e<r.length;e++){var i=r[e],o=t[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(t[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]});}return Object.create(Object.getPrototypeOf(n),t)}function d(n,e){b(n)||t(n)||!r(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,t){return d(t,!0)}),!0));}function h(){n(2);}function b(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function y(t){var r=tn[t];return r||n(19,t),r}function m(n,t){tn[n]=t;}function _(){return U}function j(n,t){t&&(y("Patches"),n.u=[],n.s=[],n.v=t);}function g(n){O(n),n.p.forEach(S),n.p=null;}function O(n){n===U&&(U=n.l);}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var t=n[Q];0===t.i||1===t.i?t.j():t.g=!0;}function P(t,e){e._=e.p.length;var i=e.p[0],o=void 0!==t&&t!==i;return e.h.O||y("ES5").S(e,t,o),o?(i[Q].P&&(g(e),n(4)),r(t)&&(t=M(e,t),e.l||x(e,t)),e.u&&y("Patches").M(i[Q],t,e.u,e.s)):t=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),t!==H?t:void 0}function M(n,t,r){if(b(t))return t;var e=t[Q];if(!e)return i(t,(function(i,o){return A(n,e,t,i,o,r)}),!0),t;if(e.A!==n)return t;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(t,i){return A(n,e,o,t,i,r)})),x(n,o,!1),r&&n.u&&y("Patches").R(e,r,n.u,n.s);}return e.o}function A(e,i,o,a,c,s){if(t(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!t(v))return;e.m=!1;}if(r(c)&&!b(c)){if(!e.h.N&&e._<1)return;M(e,c),i&&i.A.l||x(e,c);}}function x(n,t,r){void 0===r&&(r=!1),n.h.N&&n.m&&d(t,r);}function z(n,t){var r=n[Q];return (r?p(r):n)[t]}function I(n,t){if(t in n)for(var r=Object.getPrototypeOf(n);r;){var e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Object.getPrototypeOf(r);}}function E(n){n.P||(n.P=!0,n.l&&E(n.l));}function k(n){n.o||(n.o=l(n.t));}function R(n,t,r){var e=s(t)?y("MapSet").T(t,r):v(t)?y("MapSet").F(t,r):n.O?function(n,t){var r=Array.isArray(n),e={i:r?1:0,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:n,k:null,o:null,j:null,C:!1},i=e,o=rn;r&&(i=[e],o=en);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(t,r):y("ES5").J(t,r);return (r?r.A:_()).p.push(e),e}function D(e){return t(e)||n(22,e),function n(t){if(!r(t))return t;var e,u=t[Q],c=o(t);if(u){if(!u.P&&(u.i<4||!y("ES5").K(u)))return u.t;u.I=!0,e=N(t,c),u.I=!1;}else e=N(t,c);return i(e,(function(t,r){u&&a(u.t,t)===r||f(e,t,n(r));})),3===c?new Set(e):e}(e)}function N(n,t){switch(t){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function T(){function r(n,t){var r=s[n];return r?r.enumerable=t:s[n]=r={configurable:!0,enumerable:t,get:function(){var t=this[Q];return rn.get(t,n)},set:function(t){var r=this[Q];rn.set(r,n,t);}},r}function e(n){for(var t=n.length-1;t>=0;t--){var r=n[t][Q];if(!r.P)switch(r.i){case 5:a(r)&&E(r);break;case 4:o(r)&&E(r);}}}function o(n){for(var t=n.t,r=n.k,e=Z(r),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=t[o];if(void 0===a&&!u(t,o))return !0;var f=r[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return !0}}var v=!!t[Q];return e.length!==Z(t).length+(v?0:1)}function a(n){var t=n.k;if(t.length!==n.t.length)return !0;var r=Object.getOwnPropertyDescriptor(t,t.length-1);return !(!r||r.get)}var s={};m("ES5",{J:function(n,t){var e=Array.isArray(n),i=function(n,t){if(n){for(var e=Array(t.length),i=0;i<t.length;i++)Object.defineProperty(e,""+i,r(i,!0));return e}var o=nn(t);delete o[Q];for(var u=Z(o),a=0;a<u.length;a++){var f=u[a];o[f]=r(f,n||!!o[f].enumerable);}return Object.create(Object.getPrototypeOf(t),o)}(e,n),o={i:e?5:4,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,r,o){o?t(r)&&r[Q].A===n&&e(n.p):(n.u&&function n(t){if(t&&"object"==typeof t){var r=t[Q];if(r){var e=r.t,o=r.k,f=r.D,c=r.i;if(4===c)i(o,(function(t){t!==Q&&(void 0!==e[t]||u(e,t)?f[t]||n(o[t]):(f[t]=!0,E(r)));})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,E(r));}));else if(5===c){if(a(r)&&(E(r),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)void 0===f[l]&&n(o[l]);}}}}(n.p[0]),e(n.p));},K:function(n){return 4===n.i?o(n):a(n)}});}var G,U,W="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),X="undefined"!=typeof Map,q="undefined"!=typeof Set,B="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=W?Symbol.for("immer-nothing"):((G={})["immer-nothing"]=!0,G),L=W?Symbol.for("immer-draftable"):"__$immer_draftable",Q=W?Symbol.for("immer-state"):"__$immer_state",Z="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,nn=Object.getOwnPropertyDescriptors||function(n){var t={};return Z(n).forEach((function(r){t[r]=Object.getOwnPropertyDescriptor(n,r);})),t},tn={},rn={get:function(n,t){if(t===Q)return n;var e=p(n);if(!u(e,t))return function(n,t,r){var e,i=I(t,r);return i?"value"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,t);var i=e[t];return n.I||!r(i)?i:i===z(n.t,t)?(k(n),n.o[t]=R(n.A.h,i,n)):i},has:function(n,t){return t in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,t,r){var e=I(p(n),t);if(null==e?void 0:e.set)return e.set.call(n.k,r),!0;if(n.D[t]=!0,!n.P){if(c(r,z(p(n),t))&&(void 0!==r||u(n.t,t)))return !0;k(n),E(n);}return n.o[t]=r,!0},deleteProperty:function(n,t){return void 0!==z(n.t,t)||t in n.t?(n.D[t]=!1,k(n),E(n)):delete n.D[t],n.o&&delete n.o[t],!0},getOwnPropertyDescriptor:function(n,t){var r=p(n),e=Reflect.getOwnPropertyDescriptor(r,t);return e?{writable:!0,configurable:1!==n.i||"length"!==t,enumerable:e.enumerable,value:r[t]}:e},defineProperty:function(){n(11);},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12);}},en={};i(rn,(function(n,t){en[n]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)};})),en.deleteProperty=function(t,r){return rn.deleteProperty.call(this,t[0],r)},en.set=function(t,r,e){return rn.set.call(this,t[0],r,e,t[0])};var on=function(){function e(n){this.O=B,this.N="production"!=="production","boolean"==typeof(null==n?void 0:n.useProxies)&&this.setUseProxies(n.useProxies),"boolean"==typeof(null==n?void 0:n.autoFreeze)&&this.setAutoFreeze(n.autoFreeze),this.produce=this.produce.bind(this),this.produceWithPatches=this.produceWithPatches.bind(this);}var i=e.prototype;return i.produce=function(t,e,i){if("function"==typeof t&&"function"!=typeof e){var o=e;e=t;var u=this;return function(n){var t=this;void 0===n&&(n=o);for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];return u.produce(n,(function(n){var r;return (r=e).call.apply(r,[t,n].concat(i))}))}}var a;if("function"!=typeof e&&n(6),void 0!==i&&"function"!=typeof i&&n(7),r(t)){var f=w(this),c=R(this,t,void 0),s=!0;try{a=e(c),s=!1;}finally{s?g(f):O(f);}return "undefined"!=typeof Promise&&a instanceof Promise?a.then((function(n){return j(f,i),P(n,f)}),(function(n){throw g(f),n})):(j(f,i),P(a,f))}if(!t||"object"!=typeof t){if((a=e(t))===H)return;return void 0===a&&(a=t),this.N&&d(a,!0),a}n(21,t);},i.produceWithPatches=function(n,t){var r,e,i=this;return "function"==typeof n?function(t){for(var r=arguments.length,e=Array(r>1?r-1:0),o=1;o<r;o++)e[o-1]=arguments[o];return i.produceWithPatches(t,(function(t){return n.apply(void 0,[t].concat(e))}))}:[this.produce(n,t,(function(n,t){r=n,e=t;})),r,e]},i.createDraft=function(e){r(e)||n(8),t(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(t,r){var e=t&&t[Q];var i=e.A;return j(i,r),P(void 0,i)},i.setAutoFreeze=function(n){this.N=n;},i.setUseProxies=function(t){t&&!B&&n(20),this.O=t;},i.applyPatches=function(n,r){var e;for(e=r.length-1;e>=0;e--){var i=r[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}var o=y("Patches").$;return t(n)?o(n,r):this.produce(n,(function(n){return o(n,r.slice(e+1))}))},e}(),un=new on;un.produceWithPatches.bind(un);var cn=un.setAutoFreeze.bind(un);un.setUseProxies.bind(un);un.applyPatches.bind(un);var pn=un.createDraft.bind(un),ln=un.finishDraft.bind(un);
17169
-
17170
17166
  /**
17171
- * @this {Promise}
17167
+ * d3.selection plugin to simplify creating idempotent divs that are not
17168
+ * recreated when rendered again.
17169
+ *
17170
+ * @see https://github.com/mbostock/d3/wiki/Selections
17171
+ *
17172
+ * @param {String} key - the name of the group
17173
+ * @return {d3.selection}
17172
17174
  */
17173
- function finallyConstructor(callback) {
17174
- var constructor = this.constructor;
17175
- return this.then(
17176
- function(value) {
17177
- // @ts-ignore
17178
- return constructor.resolve(callback()).then(function() {
17179
- return value;
17180
- });
17181
- },
17182
- function(reason) {
17183
- // @ts-ignore
17184
- return constructor.resolve(callback()).then(function() {
17185
- // @ts-ignore
17186
- return constructor.reject(reason);
17187
- });
17188
- }
17189
- );
17190
- }
17191
-
17192
- // Store setTimeout reference so promise-polyfill will be unaffected by
17193
- // other code modifying setTimeout (like sinon.useFakeTimers())
17194
- var setTimeoutFunc = setTimeout;
17195
-
17196
- function isArray(x) {
17197
- return Boolean(x && typeof x.length !== 'undefined');
17198
- }
17199
17175
 
17200
- function noop() {}
17201
-
17202
- // Polyfill for Function.prototype.bind
17203
- function bind(fn, thisArg) {
17204
- return function() {
17205
- fn.apply(thisArg, arguments);
17206
- };
17207
- }
17208
-
17209
- /**
17210
- * @constructor
17211
- * @param {Function} fn
17212
- */
17213
- function Promise$1(fn) {
17214
- if (!(this instanceof Promise$1))
17215
- throw new TypeError('Promises must be constructed via new');
17216
- if (typeof fn !== 'function') throw new TypeError('not a function');
17217
- /** @type {!number} */
17218
- this._state = 0;
17219
- /** @type {!boolean} */
17220
- this._handled = false;
17221
- /** @type {Promise|undefined} */
17222
- this._value = undefined;
17223
- /** @type {!Array<!Function>} */
17224
- this._deferreds = [];
17225
-
17226
- doResolve(fn, this);
17227
- }
17228
-
17229
- function handle(self, deferred) {
17230
- while (self._state === 3) {
17231
- self = self._value;
17232
- }
17233
- if (self._state === 0) {
17234
- self._deferreds.push(deferred);
17235
- return;
17236
- }
17237
- self._handled = true;
17238
- Promise$1._immediateFn(function() {
17239
- var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
17240
- if (cb === null) {
17241
- (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
17242
- return;
17243
- }
17244
- var ret;
17245
- try {
17246
- ret = cb(self._value);
17247
- } catch (e) {
17248
- reject(deferred.promise, e);
17249
- return;
17250
- }
17251
- resolve(deferred.promise, ret);
17176
+ d3.selection.prototype.selectDiv = function (key) {
17177
+ var div = this.selectAll('[data-d3-selectdiv="' + key + '"]').data(function (d) {
17178
+ return [d];
17252
17179
  });
17253
- }
17254
-
17255
- function resolve(self, newValue) {
17256
- try {
17257
- // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
17258
- if (newValue === self)
17259
- throw new TypeError('A promise cannot be resolved with itself.');
17260
- if (
17261
- newValue &&
17262
- (typeof newValue === 'object' || typeof newValue === 'function')
17263
- ) {
17264
- var then = newValue.then;
17265
- if (newValue instanceof Promise$1) {
17266
- self._state = 3;
17267
- self._value = newValue;
17268
- finale(self);
17269
- return;
17270
- } else if (typeof then === 'function') {
17271
- doResolve(bind(then, newValue), self);
17272
- return;
17273
- }
17274
- }
17275
- self._state = 1;
17276
- self._value = newValue;
17277
- finale(self);
17278
- } catch (e) {
17279
- reject(self, e);
17280
- }
17281
- }
17282
-
17283
- function reject(self, newValue) {
17284
- self._state = 2;
17285
- self._value = newValue;
17286
- finale(self);
17287
- }
17288
-
17289
- function finale(self) {
17290
- if (self._state === 2 && self._deferreds.length === 0) {
17291
- Promise$1._immediateFn(function() {
17292
- if (!self._handled) {
17293
- Promise$1._unhandledRejectionFn(self._value);
17294
- }
17295
- });
17296
- }
17297
-
17298
- for (var i = 0, len = self._deferreds.length; i < len; i++) {
17299
- handle(self, self._deferreds[i]);
17300
- }
17301
- self._deferreds = null;
17302
- }
17303
-
17304
- /**
17305
- * @constructor
17306
- */
17307
- function Handler(onFulfilled, onRejected, promise) {
17308
- this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
17309
- this.onRejected = typeof onRejected === 'function' ? onRejected : null;
17310
- this.promise = promise;
17311
- }
17180
+ var newDiv = div.enter().append("div").attr("data-d3-selectdiv", key).style("position", "absolute");
17181
+ return div.merge(newDiv);
17182
+ };
17312
17183
 
17313
17184
  /**
17314
- * Take a potentially misbehaving resolver function and make sure
17315
- * onFulfilled and onRejected are only called once.
17185
+ * d3.selection plugin to simplify creating idempotent groups that are not
17186
+ * recreated when rendered again.
17187
+ *
17188
+ * @see https://github.com/mbostock/d3/wiki/Selections
17316
17189
  *
17317
- * Makes no guarantees about asynchrony.
17190
+ * @param {String} key The name of the group
17191
+ * @return {d3.selection}
17318
17192
  */
17319
- function doResolve(fn, self) {
17320
- var done = false;
17321
- try {
17322
- fn(
17323
- function(value) {
17324
- if (done) return;
17325
- done = true;
17326
- resolve(self, value);
17327
- },
17328
- function(reason) {
17329
- if (done) return;
17330
- done = true;
17331
- reject(self, reason);
17332
- }
17333
- );
17334
- } catch (ex) {
17335
- if (done) return;
17336
- done = true;
17337
- reject(self, ex);
17338
- }
17339
- }
17340
17193
 
17341
- Promise$1.prototype['catch'] = function(onRejected) {
17342
- return this.then(null, onRejected);
17343
- };
17344
-
17345
- Promise$1.prototype.then = function(onFulfilled, onRejected) {
17346
- // @ts-ignore
17347
- var prom = new this.constructor(noop);
17348
-
17349
- handle(this, new Handler(onFulfilled, onRejected, prom));
17350
- return prom;
17351
- };
17352
-
17353
- Promise$1.prototype['finally'] = finallyConstructor;
17354
-
17355
- Promise$1.all = function(arr) {
17356
- return new Promise$1(function(resolve, reject) {
17357
- if (!isArray(arr)) {
17358
- return reject(new TypeError('Promise.all accepts an array'));
17359
- }
17360
-
17361
- var args = Array.prototype.slice.call(arr);
17362
- if (args.length === 0) return resolve([]);
17363
- var remaining = args.length;
17364
-
17365
- function res(i, val) {
17366
- try {
17367
- if (val && (typeof val === 'object' || typeof val === 'function')) {
17368
- var then = val.then;
17369
- if (typeof then === 'function') {
17370
- then.call(
17371
- val,
17372
- function(val) {
17373
- res(i, val);
17374
- },
17375
- reject
17376
- );
17377
- return;
17378
- }
17379
- }
17380
- args[i] = val;
17381
- if (--remaining === 0) {
17382
- resolve(args);
17383
- }
17384
- } catch (ex) {
17385
- reject(ex);
17386
- }
17387
- }
17388
-
17389
- for (var i = 0; i < args.length; i++) {
17390
- res(i, args[i]);
17391
- }
17392
- });
17393
- };
17394
-
17395
- Promise$1.resolve = function(value) {
17396
- if (value && typeof value === 'object' && value.constructor === Promise$1) {
17397
- return value;
17398
- }
17399
-
17400
- return new Promise$1(function(resolve) {
17401
- resolve(value);
17402
- });
17403
- };
17404
-
17405
- Promise$1.reject = function(value) {
17406
- return new Promise$1(function(resolve, reject) {
17407
- reject(value);
17408
- });
17409
- };
17410
-
17411
- Promise$1.race = function(arr) {
17412
- return new Promise$1(function(resolve, reject) {
17413
- if (!isArray(arr)) {
17414
- return reject(new TypeError('Promise.race accepts an array'));
17415
- }
17416
-
17417
- for (var i = 0, len = arr.length; i < len; i++) {
17418
- Promise$1.resolve(arr[i]).then(resolve, reject);
17419
- }
17420
- });
17421
- };
17422
-
17423
- // Use polyfill for setImmediate for performance gains
17424
- Promise$1._immediateFn =
17425
- // @ts-ignore
17426
- (typeof setImmediate === 'function' &&
17427
- function(fn) {
17428
- // @ts-ignore
17429
- setImmediate(fn);
17430
- }) ||
17431
- function(fn) {
17432
- setTimeoutFunc(fn, 0);
17433
- };
17434
-
17435
- Promise$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {
17436
- if (typeof console !== 'undefined' && console) {
17437
- console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
17438
- }
17439
- };
17440
-
17441
- /** @suppress {undefinedVars} */
17442
- var globalNS = (function() {
17443
- // the only reliable means to get the global object is
17444
- // `Function('return this')()`
17445
- // However, this causes CSP violations in Chrome apps.
17446
- if (typeof self !== 'undefined') {
17447
- return self;
17448
- }
17449
- if (typeof window !== 'undefined') {
17450
- return window;
17451
- }
17452
- if (typeof _commonjsHelpers.commonjsGlobal !== 'undefined') {
17453
- return _commonjsHelpers.commonjsGlobal;
17454
- }
17455
- throw new Error('unable to locate global object');
17456
- })();
17457
-
17458
- if (!('Promise' in globalNS)) {
17459
- globalNS['Promise'] = Promise$1;
17460
- } else if (!globalNS.Promise.prototype['finally']) {
17461
- globalNS.Promise.prototype['finally'] = finallyConstructor;
17462
- }
17463
-
17464
- var global$1 = (function(self) {
17465
- return self
17466
- // eslint-disable-next-line no-invalid-this
17467
- })(typeof self !== 'undefined' ? self : window);
17468
- var support = {
17469
- searchParams: 'URLSearchParams' in global$1,
17470
- iterable: 'Symbol' in global$1 && 'iterator' in Symbol,
17471
- blob:
17472
- 'FileReader' in global$1 &&
17473
- 'Blob' in global$1 &&
17474
- (function() {
17475
- try {
17476
- new Blob();
17477
- return true
17478
- } catch (e) {
17479
- return false
17480
- }
17481
- })(),
17482
- formData: 'FormData' in global$1,
17483
- arrayBuffer: 'ArrayBuffer' in global$1
17484
- };
17485
-
17486
- function isDataView(obj) {
17487
- return obj && DataView.prototype.isPrototypeOf(obj)
17488
- }
17489
-
17490
- if (support.arrayBuffer) {
17491
- var viewClasses = [
17492
- '[object Int8Array]',
17493
- '[object Uint8Array]',
17494
- '[object Uint8ClampedArray]',
17495
- '[object Int16Array]',
17496
- '[object Uint16Array]',
17497
- '[object Int32Array]',
17498
- '[object Uint32Array]',
17499
- '[object Float32Array]',
17500
- '[object Float64Array]'
17501
- ];
17502
-
17503
- var isArrayBufferView =
17504
- ArrayBuffer.isView ||
17505
- function(obj) {
17506
- return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
17507
- };
17508
- }
17509
-
17510
- function normalizeName(name) {
17511
- if (typeof name !== 'string') {
17512
- name = String(name);
17513
- }
17514
- if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
17515
- throw new TypeError('Invalid character in header field name')
17516
- }
17517
- return name.toLowerCase()
17518
- }
17519
-
17520
- function normalizeValue(value) {
17521
- if (typeof value !== 'string') {
17522
- value = String(value);
17523
- }
17524
- return value
17525
- }
17526
-
17527
- // Build a destructive iterator for the value list
17528
- function iteratorFor(items) {
17529
- var iterator = {
17530
- next: function() {
17531
- var value = items.shift();
17532
- return {done: value === undefined, value: value}
17533
- }
17534
- };
17535
-
17536
- if (support.iterable) {
17537
- iterator[Symbol.iterator] = function() {
17538
- return iterator
17539
- };
17540
- }
17541
-
17542
- return iterator
17543
- }
17544
-
17545
- function Headers(headers) {
17546
- this.map = {};
17547
-
17548
- if (headers instanceof Headers) {
17549
- headers.forEach(function(value, name) {
17550
- this.append(name, value);
17551
- }, this);
17552
- } else if (Array.isArray(headers)) {
17553
- headers.forEach(function(header) {
17554
- this.append(header[0], header[1]);
17555
- }, this);
17556
- } else if (headers) {
17557
- Object.getOwnPropertyNames(headers).forEach(function(name) {
17558
- this.append(name, headers[name]);
17559
- }, this);
17560
- }
17561
- }
17562
-
17563
- Headers.prototype.append = function(name, value) {
17564
- name = normalizeName(name);
17565
- value = normalizeValue(value);
17566
- var oldValue = this.map[name];
17567
- this.map[name] = oldValue ? oldValue + ', ' + value : value;
17568
- };
17569
-
17570
- Headers.prototype['delete'] = function(name) {
17571
- delete this.map[normalizeName(name)];
17572
- };
17573
-
17574
- Headers.prototype.get = function(name) {
17575
- name = normalizeName(name);
17576
- return this.has(name) ? this.map[name] : null
17577
- };
17578
-
17579
- Headers.prototype.has = function(name) {
17580
- return this.map.hasOwnProperty(normalizeName(name))
17581
- };
17582
-
17583
- Headers.prototype.set = function(name, value) {
17584
- this.map[normalizeName(name)] = normalizeValue(value);
17585
- };
17586
-
17587
- Headers.prototype.forEach = function(callback, thisArg) {
17588
- for (var name in this.map) {
17589
- if (this.map.hasOwnProperty(name)) {
17590
- callback.call(thisArg, this.map[name], name, this);
17591
- }
17592
- }
17593
- };
17594
-
17595
- Headers.prototype.keys = function() {
17596
- var items = [];
17597
- this.forEach(function(value, name) {
17598
- items.push(name);
17599
- });
17600
- return iteratorFor(items)
17601
- };
17602
-
17603
- Headers.prototype.values = function() {
17604
- var items = [];
17605
- this.forEach(function(value) {
17606
- items.push(value);
17607
- });
17608
- return iteratorFor(items)
17609
- };
17610
-
17611
- Headers.prototype.entries = function() {
17612
- var items = [];
17613
- this.forEach(function(value, name) {
17614
- items.push([name, value]);
17615
- });
17616
- return iteratorFor(items)
17617
- };
17618
-
17619
- if (support.iterable) {
17620
- Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
17621
- }
17622
-
17623
- function consumed(body) {
17624
- if (body.bodyUsed) {
17625
- return Promise.reject(new TypeError('Already read'))
17626
- }
17627
- body.bodyUsed = true;
17628
- }
17629
-
17630
- function fileReaderReady(reader) {
17631
- return new Promise(function(resolve, reject) {
17632
- reader.onload = function() {
17633
- resolve(reader.result);
17634
- };
17635
- reader.onerror = function() {
17636
- reject(reader.error);
17637
- };
17638
- })
17639
- }
17640
-
17641
- function readBlobAsArrayBuffer(blob) {
17642
- var reader = new FileReader();
17643
- var promise = fileReaderReady(reader);
17644
- reader.readAsArrayBuffer(blob);
17645
- return promise
17646
- }
17647
-
17648
- function readBlobAsText(blob) {
17649
- var reader = new FileReader();
17650
- var promise = fileReaderReady(reader);
17651
- reader.readAsText(blob);
17652
- return promise
17653
- }
17654
-
17655
- function readArrayBufferAsText(buf) {
17656
- var view = new Uint8Array(buf);
17657
- var chars = new Array(view.length);
17658
-
17659
- for (var i = 0; i < view.length; i++) {
17660
- chars[i] = String.fromCharCode(view[i]);
17661
- }
17662
- return chars.join('')
17663
- }
17664
-
17665
- function bufferClone(buf) {
17666
- if (buf.slice) {
17667
- return buf.slice(0)
17668
- } else {
17669
- var view = new Uint8Array(buf.byteLength);
17670
- view.set(new Uint8Array(buf));
17671
- return view.buffer
17672
- }
17673
- }
17674
-
17675
- function Body() {
17676
- this.bodyUsed = false;
17677
-
17678
- this._initBody = function(body) {
17679
- /*
17680
- fetch-mock wraps the Response object in an ES6 Proxy to
17681
- provide useful test harness features such as flush. However, on
17682
- ES5 browsers without fetch or Proxy support pollyfills must be used;
17683
- the proxy-pollyfill is unable to proxy an attribute unless it exists
17684
- on the object before the Proxy is created. This change ensures
17685
- Response.bodyUsed exists on the instance, while maintaining the
17686
- semantic of setting Request.bodyUsed in the constructor before
17687
- _initBody is called.
17688
- */
17689
- this.bodyUsed = this.bodyUsed;
17690
- this._bodyInit = body;
17691
- if (!body) {
17692
- this._bodyText = '';
17693
- } else if (typeof body === 'string') {
17694
- this._bodyText = body;
17695
- } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
17696
- this._bodyBlob = body;
17697
- } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
17698
- this._bodyFormData = body;
17699
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
17700
- this._bodyText = body.toString();
17701
- } else if (support.arrayBuffer && support.blob && isDataView(body)) {
17702
- this._bodyArrayBuffer = bufferClone(body.buffer);
17703
- // IE 10-11 can't handle a DataView body.
17704
- this._bodyInit = new Blob([this._bodyArrayBuffer]);
17705
- } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
17706
- this._bodyArrayBuffer = bufferClone(body);
17707
- } else {
17708
- this._bodyText = body = Object.prototype.toString.call(body);
17709
- }
17710
-
17711
- if (!this.headers.get('content-type')) {
17712
- if (typeof body === 'string') {
17713
- this.headers.set('content-type', 'text/plain;charset=UTF-8');
17714
- } else if (this._bodyBlob && this._bodyBlob.type) {
17715
- this.headers.set('content-type', this._bodyBlob.type);
17716
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
17717
- this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
17718
- }
17719
- }
17720
- };
17721
-
17722
- if (support.blob) {
17723
- this.blob = function() {
17724
- var rejected = consumed(this);
17725
- if (rejected) {
17726
- return rejected
17727
- }
17728
-
17729
- if (this._bodyBlob) {
17730
- return Promise.resolve(this._bodyBlob)
17731
- } else if (this._bodyArrayBuffer) {
17732
- return Promise.resolve(new Blob([this._bodyArrayBuffer]))
17733
- } else if (this._bodyFormData) {
17734
- throw new Error('could not read FormData body as blob')
17735
- } else {
17736
- return Promise.resolve(new Blob([this._bodyText]))
17737
- }
17738
- };
17739
-
17740
- this.arrayBuffer = function() {
17741
- if (this._bodyArrayBuffer) {
17742
- return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
17743
- } else {
17744
- return this.blob().then(readBlobAsArrayBuffer)
17745
- }
17746
- };
17747
- }
17748
-
17749
- this.text = function() {
17750
- var rejected = consumed(this);
17751
- if (rejected) {
17752
- return rejected
17753
- }
17754
-
17755
- if (this._bodyBlob) {
17756
- return readBlobAsText(this._bodyBlob)
17757
- } else if (this._bodyArrayBuffer) {
17758
- return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
17759
- } else if (this._bodyFormData) {
17760
- throw new Error('could not read FormData body as text')
17761
- } else {
17762
- return Promise.resolve(this._bodyText)
17763
- }
17764
- };
17765
-
17766
- if (support.formData) {
17767
- this.formData = function() {
17768
- return this.text().then(decode)
17769
- };
17770
- }
17771
-
17772
- this.json = function() {
17773
- return this.text().then(JSON.parse)
17774
- };
17775
-
17776
- return this
17777
- }
17778
-
17779
- // HTTP methods whose capitalization should be normalized
17780
- var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
17781
-
17782
- function normalizeMethod(method) {
17783
- var upcased = method.toUpperCase();
17784
- return methods.indexOf(upcased) > -1 ? upcased : method
17785
- }
17786
-
17787
- function Request(input, options) {
17788
- options = options || {};
17789
- var body = options.body;
17790
-
17791
- if (input instanceof Request) {
17792
- if (input.bodyUsed) {
17793
- throw new TypeError('Already read')
17794
- }
17795
- this.url = input.url;
17796
- this.credentials = input.credentials;
17797
- if (!options.headers) {
17798
- this.headers = new Headers(input.headers);
17799
- }
17800
- this.method = input.method;
17801
- this.mode = input.mode;
17802
- this.signal = input.signal;
17803
- if (!body && input._bodyInit != null) {
17804
- body = input._bodyInit;
17805
- input.bodyUsed = true;
17806
- }
17807
- } else {
17808
- this.url = String(input);
17809
- }
17810
-
17811
- this.credentials = options.credentials || this.credentials || 'same-origin';
17812
- if (options.headers || !this.headers) {
17813
- this.headers = new Headers(options.headers);
17814
- }
17815
- this.method = normalizeMethod(options.method || this.method || 'GET');
17816
- this.mode = options.mode || this.mode || null;
17817
- this.signal = options.signal || this.signal;
17818
- this.referrer = null;
17819
-
17820
- if ((this.method === 'GET' || this.method === 'HEAD') && body) {
17821
- throw new TypeError('Body not allowed for GET or HEAD requests')
17822
- }
17823
- this._initBody(body);
17824
-
17825
- if (this.method === 'GET' || this.method === 'HEAD') {
17826
- if (options.cache === 'no-store' || options.cache === 'no-cache') {
17827
- // Search for a '_' parameter in the query string
17828
- var reParamSearch = /([?&])_=[^&]*/;
17829
- if (reParamSearch.test(this.url)) {
17830
- // If it already exists then set the value with the current time
17831
- this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
17832
- } else {
17833
- // Otherwise add a new '_' parameter to the end with the current time
17834
- var reQueryString = /\?/;
17835
- this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
17836
- }
17837
- }
17838
- }
17839
- }
17840
-
17841
- Request.prototype.clone = function() {
17842
- return new Request(this, {body: this._bodyInit})
17843
- };
17844
-
17845
- function decode(body) {
17846
- var form = new FormData();
17847
- body
17848
- .trim()
17849
- .split('&')
17850
- .forEach(function(bytes) {
17851
- if (bytes) {
17852
- var split = bytes.split('=');
17853
- var name = split.shift().replace(/\+/g, ' ');
17854
- var value = split.join('=').replace(/\+/g, ' ');
17855
- form.append(decodeURIComponent(name), decodeURIComponent(value));
17856
- }
17857
- });
17858
- return form
17859
- }
17860
-
17861
- function parseHeaders(rawHeaders) {
17862
- var headers = new Headers();
17863
- // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
17864
- // https://tools.ietf.org/html/rfc7230#section-3.2
17865
- var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
17866
- preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
17867
- var parts = line.split(':');
17868
- var key = parts.shift().trim();
17869
- if (key) {
17870
- var value = parts.join(':').trim();
17871
- headers.append(key, value);
17872
- }
17194
+ d3.selection.prototype.selectGroup = function (key) {
17195
+ var group = this.selectAll('[data-d3-selectgroup="' + key + '"]').data(function (d) {
17196
+ return [d];
17873
17197
  });
17874
- return headers
17875
- }
17876
-
17877
- Body.call(Request.prototype);
17878
-
17879
- function Response(bodyInit, options) {
17880
- if (!options) {
17881
- options = {};
17882
- }
17883
-
17884
- this.type = 'default';
17885
- this.status = options.status === undefined ? 200 : options.status;
17886
- this.ok = this.status >= 200 && this.status < 300;
17887
- this.statusText = 'statusText' in options ? options.statusText : '';
17888
- this.headers = new Headers(options.headers);
17889
- this.url = options.url || '';
17890
- this._initBody(bodyInit);
17891
- }
17892
-
17893
- Body.call(Response.prototype);
17894
-
17895
- Response.prototype.clone = function() {
17896
- return new Response(this._bodyInit, {
17897
- status: this.status,
17898
- statusText: this.statusText,
17899
- headers: new Headers(this.headers),
17900
- url: this.url
17901
- })
17902
- };
17903
-
17904
- Response.error = function() {
17905
- var response = new Response(null, {status: 0, statusText: ''});
17906
- response.type = 'error';
17907
- return response
17908
- };
17909
-
17910
- var redirectStatuses = [301, 302, 303, 307, 308];
17911
-
17912
- Response.redirect = function(url, status) {
17913
- if (redirectStatuses.indexOf(status) === -1) {
17914
- throw new RangeError('Invalid status code')
17915
- }
17916
-
17917
- return new Response(null, {status: status, headers: {location: url}})
17198
+ var newGroup = group.enter().append("g").attr("data-d3-selectgroup", key);
17199
+ return group.merge(newGroup);
17918
17200
  };
17919
17201
 
17920
- var DOMException = global$1.DOMException;
17921
-
17922
- if (typeof DOMException !== 'function') {
17923
- DOMException = function(message, name) {
17924
- this.message = message;
17925
- this.name = name;
17926
- var error = Error(message);
17927
- this.stack = error.stack;
17928
- };
17929
- DOMException.prototype = Object.create(Error.prototype);
17930
- DOMException.prototype.constructor = DOMException;
17931
- }
17932
-
17933
- function fetch(input, init) {
17934
- return new Promise(function(resolve, reject) {
17935
- var request = new Request(input, init);
17936
-
17937
- if (request.signal && request.signal.aborted) {
17938
- return reject(new DOMException('Aborted', 'AbortError'))
17939
- }
17940
-
17941
- var xhr = new XMLHttpRequest();
17942
-
17943
- function abortXhr() {
17944
- xhr.abort();
17945
- }
17946
-
17947
- xhr.onload = function() {
17948
- var options = {
17949
- status: xhr.status,
17950
- statusText: xhr.statusText,
17951
- headers: parseHeaders(xhr.getAllResponseHeaders() || '')
17952
- };
17953
- options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
17954
- var body = 'response' in xhr ? xhr.response : xhr.responseText;
17955
- setTimeout(function() {
17956
- resolve(new Response(body, options));
17957
- }, 0);
17958
- };
17959
-
17960
- xhr.onerror = function() {
17961
- setTimeout(function() {
17962
- reject(new TypeError('Network request failed'));
17963
- }, 0);
17964
- };
17965
-
17966
- xhr.ontimeout = function() {
17967
- setTimeout(function() {
17968
- reject(new TypeError('Network request failed'));
17969
- }, 0);
17970
- };
17971
-
17972
- xhr.onabort = function() {
17973
- setTimeout(function() {
17974
- reject(new DOMException('Aborted', 'AbortError'));
17975
- }, 0);
17976
- };
17977
-
17978
- function fixUrl(url) {
17979
- try {
17980
- return url === '' && global$1.location.href ? global$1.location.href : url
17981
- } catch (e) {
17982
- return url
17983
- }
17984
- }
17985
-
17986
- xhr.open(request.method, fixUrl(request.url), true);
17987
-
17988
- if (request.credentials === 'include') {
17989
- xhr.withCredentials = true;
17990
- } else if (request.credentials === 'omit') {
17991
- xhr.withCredentials = false;
17992
- }
17993
-
17994
- if ('responseType' in xhr) {
17995
- if (support.blob) {
17996
- xhr.responseType = 'blob';
17997
- } else if (
17998
- support.arrayBuffer &&
17999
- request.headers.get('Content-Type') &&
18000
- request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
18001
- ) {
18002
- xhr.responseType = 'arraybuffer';
18003
- }
18004
- }
18005
-
18006
- request.headers.forEach(function(value, name) {
18007
- xhr.setRequestHeader(name, value);
18008
- });
18009
-
18010
- if (request.signal) {
18011
- request.signal.addEventListener('abort', abortXhr);
18012
-
18013
- xhr.onreadystatechange = function() {
18014
- // DONE (success or failure)
18015
- if (xhr.readyState === 4) {
18016
- request.signal.removeEventListener('abort', abortXhr);
18017
- }
18018
- };
18019
- }
18020
-
18021
- xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
18022
- })
18023
- }
18024
-
18025
- fetch.polyfill = true;
18026
-
18027
- if (!global$1.fetch) {
18028
- global$1.fetch = fetch;
18029
- global$1.Headers = Headers;
18030
- global$1.Request = Request;
18031
- global$1.Response = Response;
18032
- }
18033
-
18034
- /**
18035
- * d3-request shim
18036
- *
18037
- * This module shims [d3-request](https://github.com/d3/d3-request) from d3v4 using
18038
- * the new [d3-fetch](https://github.com/d3/d3-fetch) from d3v5. This makes it
18039
- * possible to use d3v4 code with d3v5 for the use cases in SSZVIS, but not when
18040
- * using more advanced functionality of d3-request (e.g. setting headers).
18041
- *
18042
- * Example from d3v4 that works thanks to this shim:
18043
- *
18044
- * d3.csv("http://example.com")
18045
- * .row(function(x) {
18046
- * return {
18047
- * year: parseInt(x.Jahr, 10)
18048
- * }
18049
- * })
18050
- * .get(function(error, data) {
18051
- * if (error) {
18052
- * sszvis.loadError(error);
18053
- * return;
18054
- * }
18055
- * actions.prepareState(data);
18056
- * })
18057
- *
18058
- * With d3v5 this can now be written like:
18059
- *
18060
- * d3.csv("http://example.com", function(x) { return x })
18061
- * .then(actions.prepareState)
18062
- * .catch(sszvis.loadError)
18063
- *
18064
- * Supported d3 versions:
18065
- * - d3 5.0: Fully supported
18066
- * - d3 4.0: Partially supported (only "get" and "row" methods have been implemented)
18067
- */
18068
- d3__default.csv = mkShim(d3__default.csv);
18069
- d3__default.json = mkShim(d3__default.json); // -----------------------------------------------------------------------------
18070
-
18071
- function mkShim(request) {
18072
- function mkGet() {
18073
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18074
- args[_key] = arguments[_key];
18075
- }
18076
-
18077
- return function (cb) {
18078
- request.apply(void 0, args).then(function (data) {
18079
- cb(undefined, data);
18080
- }).catch(cb);
18081
- };
18082
- }
18083
-
18084
- return function (url, parseNew) {
18085
- return {
18086
- // This is the "new" d3-fetch way of loading data that uses a Promise
18087
- then: function then(cb) {
18088
- return request(url, parseNew).then(cb);
18089
- },
18090
- // This is the "old" d3-request way of loading data using an XMLHttpRequest
18091
- get: mkGet(url),
18092
- row: function row(parseRow) {
18093
- return {
18094
- get: mkGet(url, parseRow)
18095
- };
18096
- }
18097
- };
18098
- };
18099
- }
18100
-
18101
17202
  /* eslint-disable */
18102
17203
 
18103
17204
  /**
@@ -18198,64 +17299,17 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18198
17299
  throw new Error("Error parsing XML string");
18199
17300
  }
18200
17301
  }
18201
- }); // The innerSVG DOM property for SVGElement.
18202
-
18203
- Object.defineProperty(SVGElement.prototype, "innerSVG", {
18204
- get: function get() {
18205
- return this.innerHTML;
18206
- },
18207
- set: function set(markupText) {
18208
- this.innerHTML = markupText;
18209
- }
18210
- });
18211
- })();
18212
-
18213
- // This is the more strict version of `isNaN`. We need to polyfill it for Internet Explorer,
18214
- // all other browsers support this.
18215
- // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
18216
- Number.isNaN = Number.isNaN || function isNaN(input) {
18217
- return typeof input === "number" && input !== input;
18218
- };
18219
-
18220
- T(); // d3 mutates state in many places, which is why we have to turn this off.
18221
-
18222
- cn(false);
18223
-
18224
- /**
18225
- * d3.selection plugin to simplify creating idempotent divs that are not
18226
- * recreated when rendered again.
18227
- *
18228
- * @see https://github.com/mbostock/d3/wiki/Selections
18229
- *
18230
- * @param {String} key - the name of the group
18231
- * @return {d3.selection}
18232
- */
18233
-
18234
- d3.selection.prototype.selectDiv = function (key) {
18235
- var div = this.selectAll('[data-d3-selectdiv="' + key + '"]').data(function (d) {
18236
- return [d];
18237
- });
18238
- var newDiv = div.enter().append("div").attr("data-d3-selectdiv", key).style("position", "absolute");
18239
- return div.merge(newDiv);
18240
- };
18241
-
18242
- /**
18243
- * d3.selection plugin to simplify creating idempotent groups that are not
18244
- * recreated when rendered again.
18245
- *
18246
- * @see https://github.com/mbostock/d3/wiki/Selections
18247
- *
18248
- * @param {String} key The name of the group
18249
- * @return {d3.selection}
18250
- */
18251
-
18252
- d3.selection.prototype.selectGroup = function (key) {
18253
- var group = this.selectAll('[data-d3-selectgroup="' + key + '"]').data(function (d) {
18254
- return [d];
17302
+ }); // The innerSVG DOM property for SVGElement.
17303
+
17304
+ Object.defineProperty(SVGElement.prototype, "innerSVG", {
17305
+ get: function get() {
17306
+ return this.innerHTML;
17307
+ },
17308
+ set: function set(markupText) {
17309
+ this.innerHTML = markupText;
17310
+ }
18255
17311
  });
18256
- var newGroup = group.enter().append("g").attr("data-d3-selectgroup", key);
18257
- return group.merge(newGroup);
18258
- };
17312
+ })();
18259
17313
 
18260
17314
  /**
18261
17315
  * A collection of functional programming helper functions
@@ -18427,7 +17481,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18427
17481
  */
18428
17482
 
18429
17483
  var defined = function defined(val) {
18430
- return typeof val !== "undefined" && val != null && !Number.isNaN(val);
17484
+ return typeof val !== "undefined" && val != null;
18431
17485
  };
18432
17486
  /**
18433
17487
  * fn.derivedSet
@@ -18667,7 +17721,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18667
17721
  */
18668
17722
 
18669
17723
  var isNumber = function isNumber(val) {
18670
- return Object.prototype.toString.call(val) === "[object Number]" && !Number.isNaN(val);
17724
+ return Object.prototype.toString.call(val) === "[object Number]";
18671
17725
  };
18672
17726
  /**
18673
17727
  * fn.isObject
@@ -18943,22 +17997,10 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18943
17997
  };
18944
17998
  }
18945
17999
 
18946
- var darkBlue = "#3431DE";
18947
- var mediumBlue = "#0A8DF6";
18948
- var lightBlue = "#23C3F1";
18949
- var darkRed = "#7B4FB7";
18950
- var mediumRed = "#DB247D";
18951
- var lightRed = "#FB737E";
18952
- var darkGreen = "#007C78";
18953
- var mediumGreen = "#1D942E";
18954
- var lightGreen = "#99C32E";
18955
- var darkBrown = "#9A5B01";
18956
- var mediumBrown = "#FF720C";
18957
- var lightBrown = "#FBB900";
18958
- var scaleQual12 = qualColorScale([darkBlue, mediumBlue, lightBlue, darkRed, mediumRed, lightRed, darkGreen, mediumGreen, lightGreen, darkBrown, mediumBrown, lightBrown]);
18959
- var scaleQual6 = qualColorScale([darkBlue, mediumRed, mediumGreen, lightBrown, lightBlue, mediumBrown]);
18960
- var scaleQual6a = qualColorScale([darkBlue, mediumBlue, lightBlue, darkRed, mediumRed, lightRed]);
18961
- var scaleQual6b = qualColorScale([darkGreen, mediumGreen, lightGreen, darkBrown, mediumBrown, lightBrown]);
18000
+ var scaleQual12 = qualColorScale(["#5182B3", "#B8CFE6", "#60BF97", "#B8E6D2", "#94BF69", "#CFE6B8", "#E6CF73", "#FAEBAF", "#E67D73", "#F2CEC2", "#CC6788", "#E6B7C7"]);
18001
+ var scaleQual6 = qualColorScale(["#5182B3", "#60BF97", "#94BF69", "#E6CF73", "#E67D73", "#CC6788"]);
18002
+ var scaleQual6a = qualColorScale(["#5182B3", "#B8CFE6", "#60BF97", "#B8E6D2", "#94BF69", "#CFE6B8"]);
18003
+ var scaleQual6b = qualColorScale(["#E6CF73", "#FAEBAF", "#E67D73", "#F2CEC2", "#CC6788", "#E6B7C7"]);
18962
18004
 
18963
18005
  function seqColorScale(colors) {
18964
18006
  return function () {
@@ -18967,10 +18009,10 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18967
18009
  };
18968
18010
  }
18969
18011
 
18970
- var scaleSeqBlu = seqColorScale(["#CADEFF", "#5B6EFF", "#211A8A"]);
18971
- var scaleSeqRed = seqColorScale(["#FED2EE", "#ED408D", "#7D0044"]);
18972
- var scaleSeqGrn = seqColorScale(["#CFEED8", "#34B446", "#0C4B1F"]);
18973
- var scaleSeqBrn = seqColorScale(["#FCDDBB", "#EA5D00", "#611F00"]);
18012
+ var scaleSeqBlu = seqColorScale(["#DDE9FE", "#3B76B3", "#343F4D"]);
18013
+ var scaleSeqRed = seqColorScale(["#FEECEC", "#CC6171", "#4D353A"]);
18014
+ var scaleSeqGrn = seqColorScale(["#D2DFDE", "#4A807C", "#2C3C3F"]);
18015
+ var scaleSeqBrn = seqColorScale(["#E9DFD6", "#A67D5A", "#4C3735"]);
18974
18016
 
18975
18017
  function divColorScale(colors) {
18976
18018
  return function () {
@@ -18979,10 +18021,10 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
18979
18021
  };
18980
18022
  }
18981
18023
 
18982
- var scaleDivVal = divColorScale(["#782600", "#FFFFFF", "#2F2ABB"]);
18983
- var scaleDivValGry = divColorScale(["#782600", "#F3F3F3", "#2F2ABB"]);
18984
- var scaleDivNtr = divColorScale(["#A30059", "#FFFFFF", "#10652A"]);
18985
- var scaleDivNtrGry = divColorScale(["#A30059", "#F3F3F3", "#10652A"]);
18024
+ var scaleDivVal = divColorScale(["#CC6171", "#FFFFFF", "#3B76B3"]);
18025
+ var scaleDivValGry = divColorScale(["#CC6171", "#F3F3F3", "#3B76B3"]);
18026
+ var scaleDivNtr = divColorScale(["#A67D5A", "#FFFFFF", "#4A807C"]);
18027
+ var scaleDivNtrGry = divColorScale(["#A67D5A", "#F3F3F3", "#4A807C"]);
18986
18028
 
18987
18029
  function greyColorScale(colors) {
18988
18030
  return function () {
@@ -19831,7 +18873,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
19831
18873
  * @return {sszvis.component}
19832
18874
  */
19833
18875
  function rangeRuler () {
19834
- return component().prop("x", functor).prop("y0", functor).prop("y1", functor).prop("top").prop("bottom").prop("label").prop("removeStroke").label(functor("")).prop("total").prop("flip", functor).flip(false).render(function (data) {
18876
+ return component().prop("x", functor).prop("y0", functor).prop("y1", functor).prop("top").prop("bottom").prop("label").label(functor("")).prop("total").prop("flip", functor).flip(false).render(function (data) {
19835
18877
  var selection = d3.select(this);
19836
18878
  var props = selection.props();
19837
18879
  var crispX = compose(halfPixel, props.x);
@@ -19870,11 +18912,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
19870
18912
  .style("text-anchor", function (d) {
19871
18913
  return props.flip(d) ? "end" : "start";
19872
18914
  }).text(compose(formatNumber, props.label));
19873
-
19874
- if (!props.removeStroke) {
19875
- marks.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
19876
- }
19877
-
19878
18915
  var total = selection.selectAll(".sszvis-rangeRuler__total").data([last(data)]);
19879
18916
  var newTotal = total.enter().append("text").classed("sszvis-rangeRuler__total", true);
19880
18917
  total.exit().remove();
@@ -19885,10 +18922,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
19885
18922
  }).attr("y", props.top - 10).style("text-anchor", function (d) {
19886
18923
  return props.flip(d) ? "end" : "start";
19887
18924
  }).text("Total " + formatNumber(props.total));
19888
-
19889
- if (!props.removeStroke) {
19890
- total.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
19891
- }
19892
18925
  });
19893
18926
  }
19894
18927
 
@@ -20223,367 +19256,129 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
20223
19256
  * formatTable
20224
19257
  */
20225
19258
 
20226
-
20227
- function formatTable(rows) {
20228
- var tableBody = rows.map(function (row) {
20229
- return "<tr>" + row.map(function (cell) {
20230
- return "<td>" + cell + "</td>";
20231
- }).join("") + "</tr>";
20232
- }).join("");
20233
- return '<table class="sszvis-tooltip__body__table">' + tableBody + "</table>";
20234
- }
20235
- /**
20236
- * Tooltip background generator
20237
- *
20238
- * Generates a path description with a tip on the specified side.
20239
- *
20240
- * top
20241
- * ________
20242
- * left | | right
20243
- * |___ ___|
20244
- * \/
20245
- * bottom
20246
- *
20247
- * @param {Vector} a Top-left corner of the tooltip rectangle (x, y)
20248
- * @param {Vector} b Bottom-right corner of the tooltip rectangle (x, y)
20249
- * @param {String} orientation The tip will point in this direction (top, right, bottom, left)
20250
- *
20251
- * @return {Path} SVG path description
20252
- */
20253
-
20254
-
20255
- function tooltipBackgroundGenerator(a, b, orientation, radius) {
20256
- switch (orientation) {
20257
- case "top":
20258
- a[1] = a[1] + TIP_SIZE;
20259
- break;
20260
-
20261
- case "bottom":
20262
- b[1] = b[1] - TIP_SIZE;
20263
- break;
20264
-
20265
- case "left":
20266
- a[0] = a[0] + TIP_SIZE;
20267
- break;
20268
-
20269
- case "right":
20270
- b[0] = b[0] - TIP_SIZE;
20271
- break;
20272
- }
20273
-
20274
- function x(d) {
20275
- return d[0];
20276
- }
20277
-
20278
- function y(d) {
20279
- return d[1];
20280
- }
20281
-
20282
- function side(cx, cy, x0, y0, x1, y1, showTip) {
20283
- var mx = x0 + (x1 - x0) / 2;
20284
- var my = y0 + (y1 - y0) / 2;
20285
- var corner = ["Q", cx, cy, x0, y0];
20286
- var tip = [];
20287
-
20288
- if (showTip && y0 === y1) {
20289
- if (x0 < x1) {
20290
- // Top
20291
- tip = ["L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my];
20292
- } else {
20293
- // Bottom
20294
- tip = ["L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my];
20295
- }
20296
- } else if (showTip && x0 === x1) {
20297
- if (y0 < y1) {
20298
- // Right
20299
- tip = ["L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE];
20300
- } else {
20301
- // Left
20302
- tip = ["L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE];
20303
- }
20304
- }
20305
-
20306
- var end = ["L", x1, y1];
20307
- return [].concat(corner, tip, end);
20308
- }
20309
-
20310
- return [// Start
20311
- ["M", x(a), y(a) + radius], // Top side
20312
- side(x(a), y(a), x(a) + radius, y(a), x(b) - radius, y(a), orientation === "top"), // Right side
20313
- side(x(b), y(a), x(b), y(a) + radius, x(b), y(b) - radius, orientation === "right"), // Bottom side
20314
- side(x(b), y(b), x(b) - radius, y(b), x(a) + radius, y(b), orientation === "bottom"), // Left side
20315
- side(x(a), y(b), x(a), y(b) - radius, x(a), y(a) + radius, orientation === "left")].map(function (d) {
20316
- return d.join(" ");
20317
- }).join(" ");
20318
- }
20319
- /**
20320
- * Detect whether the current browser supports SVG filters
20321
- */
20322
-
20323
-
20324
- function supportsSVGFilters() {
20325
- return window["SVGFEColorMatrixElement"] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
20326
- }
20327
-
20328
- /**
20329
- * @function sszvis.tooltipFit
20330
- *
20331
- * This is a useful default function for making a tooltip fit within a horizontal space.
20332
- * You provide a default orientation for the tooltip, but also provide the bounds of the
20333
- * space within which the tooltip should stay. When the tooltip is too close to the left
20334
- * or right edge of the bounds, it is oriented away from the edge. Otherwise the default
20335
- * is used.
20336
- *
20337
- * @param {String} defaultValue The default value for the tooltip orientation
20338
- * @param {Object} bounds The bounds object within which the tooltip should stay.
20339
- *
20340
- * @returns {Function} A function for calculating the orientation of the tooltips.
20341
- */
20342
- function fitTooltip (defaultVal, bounds) {
20343
- var lo = Math.min(bounds.innerWidth * 1 / 4, 100);
20344
- var hi = Math.max(bounds.innerWidth * 3 / 4, bounds.innerWidth - 100);
20345
- return function (d) {
20346
- var x = d.x;
20347
- return x > hi ? "right" : x < lo ? "left" : defaultVal;
20348
- };
20349
- }
20350
-
20351
- /**
20352
- * Fallback handling
20353
- *
20354
- * Defaults to rendering a fallback image with standard chart proportions.
20355
- *
20356
- * @example
20357
- * if (sszvis.fallback.unsupported()) {
20358
- * sszvis.fallback.render('#sszvis-chart', {src: '../fallback.png', height: 300});
20359
- * return;
20360
- * }
20361
- *
20362
- * @module sszvis/fallback
20363
- */
20364
- var fallbackUnsupported = function fallbackUnsupported() {
20365
- var supportsSVG = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect;
20366
- return !supportsSVG;
20367
- };
20368
- var fallbackCanvasUnsupported = function fallbackCanvasUnsupported() {
20369
- var supportsCanvas = !!document.createElement("canvas").getContext;
20370
- return !supportsCanvas;
20371
- };
20372
- var fallbackRender = function fallbackRender(selector, options) {
20373
- options || (options = {});
20374
- options.src || (options.src = "fallback.png");
20375
- var selection = isSelection(selector) ? selector : d3.select(selector);
20376
- selection.append("img").attr("class", "sszvis-fallback-image").attr("src", options.src);
20377
- };
20378
-
20379
- var nanoThrottle = function (callback, ms, trailing) {
20380
- var t = 0, call;
20381
- arguments.length < 3 && (trailing = true);
20382
- return function () {
20383
- var args = arguments;
20384
- var self = this;
20385
- call = function () {
20386
- callback.apply(self, args);
20387
- t = new Date().getTime() + ms;
20388
- call = null;
20389
- trailing && setTimeout(function () {
20390
- call && call();
20391
- }, ms);
20392
- };
20393
- if (new Date().getTime() > t) call();
20394
- }
20395
- };
20396
-
20397
- /**
20398
- * Viewport Resize watcher
20399
- *
20400
- * The resize watcher in the sszvis.viewport module can be used for alerting user code to
20401
- * changes in the browser window size. This includes window resizing on desktop computers
20402
- * and browsers, but also orientation changes on mobile browsers. Functions which listen
20403
- * to the 'resize' event of the sszvis.viewport module will be fired on window resize.
20404
- * You can add a resize listener to your application very easily:
20405
- *
20406
- * sszvis.viewport.on('resize', listenerFunction);
20407
- *
20408
- * The listener function will be called once per resize event, but at a slight delay. This is because,
20409
- * while a user is resizing their browser window, many resize events can fire very quickly. This component
20410
- * automatically throttles the rate at which the listener function is called, since you probably don't need
20411
- * to respond to every single resize event. This throttling provides for a smoother user experience as they
20412
- * resize the browser, and increases performance across the board. The listener function will always be
20413
- * called after one or more window resize events, it just won't be called as often as the window fires the
20414
- * events.
20415
- *
20416
- * @module sszvis/viewport
20417
- *
20418
- * @function {string, function} on the .on() function is used to listen to the resize event itself.
20419
- * There is only one event supported by this component at the moment, so
20420
- * the first argument to .on must be 'resize' for it to have any effect.
20421
- * Although this is somewhat redundant, it is done to keep this component's
20422
- * API clear and in line with other components.
20423
- *
20424
- * @return {Object}
20425
- */
20426
- // sszvis.viewport.on('resize', callback);
20427
- // While still enabling the user to register multiple callbacks for the 'resize'
20428
- // event. Multiple callbacks are a feature which simply returning a d3.dispatch('resize')
20429
- // object would not allow.
20430
-
20431
- var callbacks = {
20432
- resize: []
20433
- };
20434
-
20435
- if (typeof window !== "undefined") {
20436
- d3.select(window).on("resize", nanoThrottle(function () {
20437
- trigger("resize");
20438
- }, 500));
20439
- }
20440
-
20441
- var on$1 = function on(name, cb) {
20442
- if (!callbacks[name]) {
20443
- callbacks[name] = [];
20444
- }
20445
-
20446
- callbacks[name] = callbacks[name].filter(function (fn) {
20447
- return fn !== cb;
20448
- }).concat(cb);
20449
- return this;
20450
- };
20451
-
20452
- var off = function off(name, cb) {
20453
- if (!callbacks[name]) {
20454
- return this;
20455
- }
20456
-
20457
- callbacks[name] = callbacks[name].filter(function (fn) {
20458
- return fn !== cb;
20459
- });
20460
- return this;
20461
- };
20462
-
20463
- var trigger = function trigger(name) {
20464
- var evtArgs = Array.prototype.slice.call(arguments, 1);
20465
-
20466
- if (callbacks[name]) {
20467
- callbacks[name].forEach(function (fn) {
20468
- fn.apply(null, evtArgs);
20469
- });
20470
- }
20471
-
20472
- return this;
20473
- };
20474
-
20475
- var viewport = {
20476
- on: on$1,
20477
- off: off,
20478
- trigger: trigger
20479
- };
20480
-
19259
+
19260
+ function formatTable(rows) {
19261
+ var tableBody = rows.map(function (row) {
19262
+ return "<tr>" + row.map(function (cell) {
19263
+ return "<td>" + cell + "</td>";
19264
+ }).join("") + "</tr>";
19265
+ }).join("");
19266
+ return '<table class="sszvis-tooltip__body__table">' + tableBody + "</table>";
19267
+ }
20481
19268
  /**
20482
- * Application loop
20483
- *
20484
- * Creates a stateful app that can be interacted with through actions. By providing
20485
- * a structured approach, this allows us to optimize the render loop and clarifies
20486
- * the relationship between state and actions.
20487
- *
20488
- * Within an app, state can only be modified through actions. During the render phase,
20489
- * state is immutable and an error will be thrown if it is modified accidentally.
20490
- *
20491
- * Conceptually, an app works like this:
20492
- *
20493
- * init
20494
- * ⇣
20495
- * state ⭢ render
20496
- * ⮤ action ⮠
20497
- *
20498
- * The basis of an app are the following three types:
20499
- *
20500
- * Dispatch can be used to schedule an action after rendering has been completed. In the
20501
- * render function, dispatch is not directly accessible; instead, an actions object is
20502
- * provided to dispatch actions by calling them as functions.
20503
- * @typedef {(action: string, p?: Props) => void} Dispatch
20504
- *
20505
- * An effect can be returned from an action to schedule further actions using dispatch.
20506
- * @typedef {(d: Dispatch, p?: Props) => void} Effect
19269
+ * Tooltip background generator
20507
19270
  *
20508
- * An action receives an Immer.js Draft that can be mutated within the action. If further
20509
- * actions should be called after this one, an action can return an Effect.
20510
- * @typedef {(s: Draft, p?: Props) => Effect | void} Action
20511
- * @see {@link https://immerjs.github.io/immer/docs/produce/}
19271
+ * Generates a path description with a tip on the specified side.
20512
19272
  *
20513
- * The app can be configured with the following props:
19273
+ * top
19274
+ * ________
19275
+ * left | | right
19276
+ * |___ ___|
19277
+ * \/
19278
+ * bottom
20514
19279
  *
20515
- * @prop {Object} props
20516
- * @prop {(s: Draft) => Promise<Effect | void>} props.init - Asynchronously create
20517
- * the initial state and optionally schedule an action
20518
- * @prop {(s: State, as: Record<keyof props.actions, (p?: Props) => void>)} props.render - Update
20519
- * the DOM from the state and optionally dispatch actions
20520
- * @prop {Record<string, Action>} [props.actions] - Functions to transition the
20521
- * application state
20522
- * @prop {{element: string, src: string}} [props.fallback] - Render a fallback image
19280
+ * @param {Vector} a Top-left corner of the tooltip rectangle (x, y)
19281
+ * @param {Vector} b Bottom-right corner of the tooltip rectangle (x, y)
19282
+ * @param {String} orientation The tip will point in this direction (top, right, bottom, left)
20523
19283
  *
20524
- * @module sszvis/app
19284
+ * @return {Path} SVG path description
20525
19285
  */
20526
19286
 
20527
- var app = function app(_ref) {
20528
- var init = _ref.init,
20529
- render = _ref.render,
20530
- _ref$actions = _ref.actions,
20531
- actions = _ref$actions === void 0 ? {} : _ref$actions,
20532
- fallback = _ref.fallback;
20533
- var doing;
20534
- var state;
20535
- invariant(isFunction$1(init), 'An "init" function returning a Promise must be provided.');
20536
- invariant(isFunction$1(render), 'A "render" function must be provided.');
20537
- var actionDispatchers = Object.keys(actions).reduce(function (acc, key) {
20538
- acc[key] = function (args) {
20539
- dispatch(key, args);
20540
- };
20541
19287
 
20542
- return acc;
20543
- }, {});
19288
+ function tooltipBackgroundGenerator(a, b, orientation, radius) {
19289
+ switch (orientation) {
19290
+ case "top":
19291
+ a[1] = a[1] + TIP_SIZE;
19292
+ break;
20544
19293
 
20545
- function scheduleUpdate(effect) {
20546
- if (!doing) {
20547
- doing = true;
20548
- requestAnimationFrame(function () {
20549
- render(state, actionDispatchers);
20550
- doing = false;
20551
- });
20552
- }
19294
+ case "bottom":
19295
+ b[1] = b[1] - TIP_SIZE;
19296
+ break;
19297
+
19298
+ case "left":
19299
+ a[0] = a[0] + TIP_SIZE;
19300
+ break;
19301
+
19302
+ case "right":
19303
+ b[0] = b[0] - TIP_SIZE;
19304
+ break;
19305
+ }
20553
19306
 
20554
- if (isFunction$1(effect)) effect(dispatch);
19307
+ function x(d) {
19308
+ return d[0];
20555
19309
  }
20556
19310
 
20557
- function dispatch(action, props) {
20558
- invariant(actions[action] != null, "Action \"".concat(action, "\" is not defined, add it to \"actions\"."));
20559
- var draft = pn(state);
20560
- var effect = actions[action](draft, props);
20561
- state = ln(draft);
20562
- scheduleUpdate(effect);
19311
+ function y(d) {
19312
+ return d[1];
20563
19313
  }
20564
19314
 
20565
- var initialState = pn({});
20566
- init(initialState).then(function (effect) {
20567
- state = ln(initialState);
20568
- scheduleUpdate(effect);
20569
- viewport.on("resize", scheduleUpdate);
20570
- }).catch(function (err) {
20571
- invariant(false, err);
20572
- fallback && fallbackRender(fallback.element, {
20573
- src: fallback.src
20574
- });
20575
- });
20576
- }; // -----------------------------------------------------------------------------
20577
- // Helper functions
19315
+ function side(cx, cy, x0, y0, x1, y1, showTip) {
19316
+ var mx = x0 + (x1 - x0) / 2;
19317
+ var my = y0 + (y1 - y0) / 2;
19318
+ var corner = ["Q", cx, cy, x0, y0];
19319
+ var tip = [];
19320
+
19321
+ if (showTip && y0 === y1) {
19322
+ if (x0 < x1) {
19323
+ // Top
19324
+ tip = ["L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my];
19325
+ } else {
19326
+ // Bottom
19327
+ tip = ["L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my];
19328
+ }
19329
+ } else if (showTip && x0 === x1) {
19330
+ if (y0 < y1) {
19331
+ // Right
19332
+ tip = ["L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE];
19333
+ } else {
19334
+ // Left
19335
+ tip = ["L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE];
19336
+ }
19337
+ }
20578
19338
 
20579
- function invariant(condition, message) {
20580
- if (!condition) {
20581
- throw new Error("[sszvis.app] ".concat(message));
19339
+ var end = ["L", x1, y1];
19340
+ return [].concat(corner, tip, end);
20582
19341
  }
19342
+
19343
+ return [// Start
19344
+ ["M", x(a), y(a) + radius], // Top side
19345
+ side(x(a), y(a), x(a) + radius, y(a), x(b) - radius, y(a), orientation === "top"), // Right side
19346
+ side(x(b), y(a), x(b), y(a) + radius, x(b), y(b) - radius, orientation === "right"), // Bottom side
19347
+ side(x(b), y(b), x(b) - radius, y(b), x(a) + radius, y(b), orientation === "bottom"), // Left side
19348
+ side(x(a), y(b), x(a), y(b) - radius, x(a), y(a) + radius, orientation === "left")].map(function (d) {
19349
+ return d.join(" ");
19350
+ }).join(" ");
19351
+ }
19352
+ /**
19353
+ * Detect whether the current browser supports SVG filters
19354
+ */
19355
+
19356
+
19357
+ function supportsSVGFilters() {
19358
+ return window["SVGFEColorMatrixElement"] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
20583
19359
  }
20584
19360
 
20585
- function isFunction$1(x) {
20586
- return typeof x === "function";
19361
+ /**
19362
+ * @function sszvis.tooltipFit
19363
+ *
19364
+ * This is a useful default function for making a tooltip fit within a horizontal space.
19365
+ * You provide a default orientation for the tooltip, but also provide the bounds of the
19366
+ * space within which the tooltip should stay. When the tooltip is too close to the left
19367
+ * or right edge of the bounds, it is oriented away from the edge. Otherwise the default
19368
+ * is used.
19369
+ *
19370
+ * @param {String} defaultValue The default value for the tooltip orientation
19371
+ * @param {Object} bounds The bounds object within which the tooltip should stay.
19372
+ *
19373
+ * @returns {Function} A function for calculating the orientation of the tooltips.
19374
+ */
19375
+ function fitTooltip (defaultVal, bounds) {
19376
+ var lo = Math.min(bounds.innerWidth * 1 / 4, 100);
19377
+ var hi = Math.max(bounds.innerWidth * 3 / 4, bounds.innerWidth - 100);
19378
+ return function (d) {
19379
+ var x = d.x;
19380
+ return x > hi ? "right" : x < lo ? "left" : defaultVal;
19381
+ };
20587
19382
  }
20588
19383
 
20589
19384
  /**
@@ -21181,7 +19976,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
21181
19976
  *
21182
19977
  * @property {boolean} alignOuterLabels Whether or not to align the outer labels to the axis extent so that they do not fall outside the axis space.
21183
19978
  * @property {boolean} contour Specify a 'contour' background for the axis labels.
21184
- * @property {boolean} removeStroke Removes the default stroke applied to the text
21185
19979
  * @property {number} hideBorderTickThreshold Specifies the pixel distance threshold for the visible tick correction. Ticks which are closer than
21186
19980
  * this threshold to the end of the axis (i.e. a tick which is 1 or two pixels from the end) will be
21187
19981
  * hidden from view. This prevents the display of a tick very close to the ending line.
@@ -21216,7 +20010,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
21216
20010
  var axis = function axis() {
21217
20011
  // var axisDelegate = d3.axisBottom();
21218
20012
  // axisDelegate.orient = function() { return 'bottom'; };
21219
- var axisComponent = component().prop("scale").prop("orient").prop("ticks").prop("tickValues").prop("tickSize").prop("tickSizeInner").prop("tickSizeOuter").prop("tickPadding").prop("tickFormat").prop("_scale").prop("orient").orient("bottom").prop("alignOuterLabels").alignOuterLabels(false).prop("contour").prop("removeStroke").prop("hideBorderTickThreshold").hideBorderTickThreshold(TICK_PROXIMITY_THRESHOLD).prop("hideLabelThreshold").hideLabelThreshold(LABEL_PROXIMITY_THRESHOLD).prop("highlightTick", functor).prop("showZeroY").showZeroY(false).prop("slant").prop("textWrap").prop("tickLength").prop("title").prop("titleAnchor") // start, end, or middle
20013
+ var axisComponent = component().prop("scale").prop("orient").prop("ticks").prop("tickValues").prop("tickSize").prop("tickSizeInner").prop("tickSizeOuter").prop("tickPadding").prop("tickFormat").prop("_scale").prop("orient").orient("bottom").prop("alignOuterLabels").alignOuterLabels(false).prop("contour").prop("hideBorderTickThreshold").hideBorderTickThreshold(TICK_PROXIMITY_THRESHOLD).prop("hideLabelThreshold").hideLabelThreshold(LABEL_PROXIMITY_THRESHOLD).prop("highlightTick", functor).prop("showZeroY").showZeroY(false).prop("slant").prop("textWrap").prop("tickLength").prop("title").prop("titleAnchor") // start, end, or middle
21220
20014
  .prop("titleCenter") // a boolean value - whether to center the title
21221
20015
  .prop("dxTitle") // a numeric value for the left offset of the title
21222
20016
  .prop("dyTitle") // a numeric value for the top offset of the title
@@ -21460,14 +20254,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
21460
20254
  textContour.text(textNode.textContent);
21461
20255
  });
21462
20256
  }
21463
-
21464
- if (!props.removeStroke) {
21465
- tickGroups.each(function () {
21466
- var g = d3.select(this);
21467
- var textNode = g.select("text");
21468
- textNode.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
21469
- });
21470
- }
21471
20257
  }); // axisComponent.__delegate__ = axisDelegate;
21472
20258
 
21473
20259
  return axisComponent;
@@ -22860,7 +21646,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
22860
21646
  return component().prop("radius").prop("fill").prop("stroke").prop("angle", functor).render(function (data) {
22861
21647
  var selection = d3.select(this);
22862
21648
  var props = selection.props();
22863
- var stroke = props.stroke || "#FFFFFF";
22864
21649
  var angle = 0;
22865
21650
  data.forEach(function (value) {
22866
21651
  // In order for an angle transition to work correctly in d3, the transition must be done in data space.
@@ -22891,7 +21676,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
22891
21676
  data[i].a1 = d.a1;
22892
21677
  }
22893
21678
  }).data(data);
22894
- var newSegments = segments.enter().append("path").classed("sszvis-path", true).attr("transform", "translate(" + props.radius + "," + props.radius + ")").attr("fill", props.fill).attr("stroke", stroke);
21679
+ var newSegments = segments.enter().append("path").classed("sszvis-path", true).attr("transform", "translate(" + props.radius + "," + props.radius + ")").attr("fill", props.fill).attr("stroke", props.stroke);
22895
21680
  segments.exit().remove();
22896
21681
  segments = segments.merge(newSegments);
22897
21682
  segments.transition(defaultTransition()).attr("transform", "translate(" + props.radius + "," + props.radius + ")").attrTween("d", function (d) {
@@ -22902,7 +21687,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
22902
21687
  d.a1 = angle1Interp(t);
22903
21688
  return arcGen(d);
22904
21689
  };
22905
- }).attr("fill", props.fill).attr("stroke", stroke);
21690
+ }).attr("fill", props.fill).attr("stroke", props.stroke);
22906
21691
  var ta = tooltipAnchor().position(function (d) {
22907
21692
  // The correction by - Math.PI / 2 is necessary because d3 automatically (and with brief, buried documentation!)
22908
21693
  // makes the same correction to svg.arc() angles :o
@@ -23263,7 +22048,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
23263
22048
  paths = paths.transition(defaultTransition());
23264
22049
  }
23265
22050
 
23266
- paths.attr("d", areaGen).attr("fill", props.fill).attr("stroke", props.stroke || "#ffffff");
22051
+ paths.attr("d", areaGen).attr("fill", props.fill).attr("stroke", props.stroke);
23267
22052
  });
23268
22053
  }
23269
22054
 
@@ -23392,7 +22177,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
23392
22177
  return component().prop("xScale", functor).prop("width", functor).prop("yScale", functor).prop("height", functor).prop("fill").prop("stroke").render(function (data) {
23393
22178
  var selection = d3.select(this);
23394
22179
  var props = selection.props();
23395
- var barGen = bar().x(config.x(props)).y(config.y(props)).width(config.width(props)).height(config.height(props)).fill(props.fill).stroke(props.stroke || "#FFFFFF");
22180
+ var barGen = bar().x(config.x(props)).y(config.y(props)).width(config.width(props)).height(config.height(props)).fill(props.fill).stroke(props.stroke);
23396
22181
  var groups = selection.selectAll(".sszvis-stack").data(data);
23397
22182
  var newGroups = groups.enter().append("g").classed("sszvis-stack", true);
23398
22183
  groups.exit().remove();
@@ -24092,6 +22877,34 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
24092
22877
  return viewport.merge(viewportEnter);
24093
22878
  }
24094
22879
 
22880
+ /**
22881
+ * Fallback handling
22882
+ *
22883
+ * Defaults to rendering a fallback image with standard chart proportions.
22884
+ *
22885
+ * @example
22886
+ * if (sszvis.fallback.unsupported()) {
22887
+ * sszvis.fallback.render('#sszvis-chart', {src: '../fallback.png', height: 300});
22888
+ * return;
22889
+ * }
22890
+ *
22891
+ * @module sszvis/fallback
22892
+ */
22893
+ var fallbackUnsupported = function fallbackUnsupported() {
22894
+ var supportsSVG = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect;
22895
+ return !supportsSVG;
22896
+ };
22897
+ var fallbackCanvasUnsupported = function fallbackCanvasUnsupported() {
22898
+ var supportsCanvas = !!document.createElement("canvas").getContext;
22899
+ return !supportsCanvas;
22900
+ };
22901
+ var fallbackRender = function fallbackRender(selector, options) {
22902
+ options || (options = {});
22903
+ options.src || (options.src = "fallback.png");
22904
+ var selection = isSelection(selector) ? selector : d3.select(selector);
22905
+ selection.append("img").attr("class", "sszvis-fallback-image").attr("src", options.src);
22906
+ };
22907
+
24095
22908
  /**
24096
22909
  * Ordinal Color Scale Legend
24097
22910
  *
@@ -25534,44 +24347,44 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25534
24347
  *
25535
24348
  * @return {sszvis.component}
25536
24349
  */
25537
- var datumAcc = prop("datum");
24350
+ var datumAcc = prop('datum');
25538
24351
  function bubble () {
25539
- var event = d3.dispatch("over", "out", "click");
25540
- var anchoredCirclesComponent = component().prop("mergedData").prop("mapPath").prop("radius", functor).prop("fill", functor).prop("strokeColor", functor).strokeColor("#ffffff").prop("strokeWidth", functor).strokeWidth(1).prop("transition").transition(true).render(function () {
24352
+ var event = d3.dispatch('over', 'out', 'click');
24353
+ var anchoredCirclesComponent = component().prop('mergedData').prop('mapPath').prop('radius', functor).prop('fill', functor).prop('strokeColor', functor).strokeColor('#ffffff').prop('strokeWidth', functor).strokeWidth(1).prop('transition').transition(true).render(function () {
25541
24354
  var selection = d3.select(this);
25542
24355
  var props = selection.props();
25543
24356
  var radiusAcc = compose(props.radius, datumAcc);
25544
- var anchoredCircles = selection.selectGroup("anchoredCircles").selectAll(".sszvis-anchored-circle").data(props.mergedData, function (d) {
24357
+ var anchoredCircles = selection.selectGroup('anchoredCircles').selectAll('.sszvis-anchored-circle').data(props.mergedData, function (d) {
25545
24358
  return d.geoJson.id;
25546
24359
  });
25547
- anchoredCircles.enter().append("circle").attr("class", "sszvis-anchored-circle sszvis-anchored-circle--entering").attr("r", radiusAcc).on("mouseover", function (d) {
25548
- event.call("over", this, d.datum);
25549
- }).on("mouseout", function (d) {
25550
- event.call("out", this, d.datum);
25551
- }).on("click", function (d) {
25552
- event.call("click", this, d.datum);
25553
- }).merge(anchoredCircles).attr("transform", function (d) {
24360
+ anchoredCircles.enter().append('circle').attr('class', 'sszvis-anchored-circle sszvis-anchored-circle--entering').attr('r', radiusAcc).on('mouseover', function (d) {
24361
+ event.call('over', this, d.datum);
24362
+ }).on('mouseout', function (d) {
24363
+ event.call('out', this, d.datum);
24364
+ }).on('click', function (d) {
24365
+ event.call('click', this, d.datum);
24366
+ }).merge(anchoredCircles).attr('transform', function (d) {
25554
24367
  var position = props.mapPath.projection()(getGeoJsonCenter(d.geoJson));
25555
24368
  return translateString(position[0], position[1]);
25556
- }).style("fill", function (d) {
24369
+ }).style('fill', function (d) {
25557
24370
  return props.fill(d.datum);
25558
- }).style("stroke", function (d) {
24371
+ }).style('stroke', function (d) {
25559
24372
  return props.strokeColor(d.datum);
25560
- }).style("stroke-width", function (d) {
24373
+ }).style('stroke-width', function (d) {
25561
24374
  return props.strokeWidth(d.datum);
25562
24375
  }).sort(function (a, b) {
25563
24376
  return props.radius(b.datum) - props.radius(a.datum);
25564
24377
  }); // Remove the --entering modifier from the updating circles
25565
24378
 
25566
- anchoredCircles.classed("sszvis-anchored-circle--entering", false);
24379
+ anchoredCircles.classed('sszvis-anchored-circle--entering', false);
25567
24380
 
25568
24381
  if (props.transition) {
25569
24382
  var t = defaultTransition();
25570
- anchoredCircles.exit().transition(t).attr("r", 0).remove();
25571
- anchoredCircles.transition(t).attr("r", radiusAcc);
24383
+ anchoredCircles.exit().transition(t).attr('r', 0).remove();
24384
+ anchoredCircles.transition(t).attr('r', radiusAcc);
25572
24385
  } else {
25573
24386
  anchoredCircles.exit().remove();
25574
- anchoredCircles.attr("r", radiusAcc);
24387
+ anchoredCircles.attr('r', radiusAcc);
25575
24388
  }
25576
24389
  });
25577
24390
 
@@ -25606,45 +24419,45 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25606
24419
  * @return {sszvis.component}
25607
24420
  */
25608
24421
  function mapRendererBase () {
25609
- return component().prop("mergedData").prop("geoJson").prop("mapPath").prop("defined", functor).defined(true) // a predicate function to determine whether a datum has a defined value
25610
- .prop("fill", functor).fill(function () {
25611
- return "black";
24422
+ return component().prop('mergedData').prop('geoJson').prop('mapPath').prop('defined', functor).defined(true) // a predicate function to determine whether a datum has a defined value
24423
+ .prop('fill', functor).fill(function () {
24424
+ return 'black';
25612
24425
  }) // a function for the entity fill color. default is black
25613
- .prop("transitionColor").transitionColor(true).render(function () {
24426
+ .prop('transitionColor').transitionColor(true).render(function () {
25614
24427
  var selection = d3.select(this);
25615
24428
  var props = selection.props(); // render the missing value pattern
25616
24429
 
25617
- ensureDefsElement(selection, "pattern", "missing-pattern").call(mapMissingValuePattern); // map fill function - returns the missing value pattern if the datum doesn't exist or fails the props.defined test
24430
+ ensureDefsElement(selection, 'pattern', 'missing-pattern').call(mapMissingValuePattern); // map fill function - returns the missing value pattern if the datum doesn't exist or fails the props.defined test
25618
24431
 
25619
24432
  function getMapFill(d) {
25620
- return props.defined(d.datum) ? props.fill(d.datum) : "url(#missing-pattern)";
24433
+ return props.defined(d.datum) ? props.fill(d.datum) : 'url(#missing-pattern)';
25621
24434
  }
25622
24435
 
25623
- var mapAreas = selection.selectAll(".sszvis-map__area").data(props.mergedData); // add the base map paths - these are filled according to the map fill function
24436
+ var mapAreas = selection.selectAll('.sszvis-map__area').data(props.mergedData); // add the base map paths - these are filled according to the map fill function
25624
24437
 
25625
- var newMapAreas = mapAreas.enter().append("path").classed("sszvis-map__area", true).classed("sszvis-map__area--entering", true).attr("data-event-target", "").attr("fill", getMapFill);
25626
- mapAreas.classed("sszvis-map__area--entering", false);
24438
+ var newMapAreas = mapAreas.enter().append('path').classed('sszvis-map__area', true).classed('sszvis-map__area--entering', true).attr('data-event-target', '').attr('fill', getMapFill);
24439
+ mapAreas.classed('sszvis-map__area--entering', false);
25627
24440
  mapAreas.exit().remove();
25628
24441
  mapAreas = mapAreas.merge(newMapAreas);
25629
- selection.selectAll(".sszvis-map__area--undefined").attr("fill", getMapFill); // change the fill if necessary
24442
+ selection.selectAll('.sszvis-map__area--undefined').attr('fill', getMapFill); // change the fill if necessary
25630
24443
 
25631
- mapAreas.classed("sszvis-map__area--undefined", function (d) {
24444
+ mapAreas.classed('sszvis-map__area--undefined', function (d) {
25632
24445
  return !defined(d.datum) || !props.defined(d.datum);
25633
- }).attr("d", function (d) {
24446
+ }).attr('d', function (d) {
25634
24447
  return props.mapPath(d.geoJson);
25635
24448
  });
25636
24449
 
25637
24450
  if (props.transitionColor) {
25638
- mapAreas.transition().call(slowTransition).attr("fill", getMapFill);
24451
+ mapAreas.transition().call(slowTransition).attr('fill', getMapFill);
25639
24452
  } else {
25640
- mapAreas.attr("fill", getMapFill);
24453
+ mapAreas.attr('fill', getMapFill);
25641
24454
  } // the tooltip anchor generator
25642
24455
 
25643
24456
 
25644
24457
  var ta = tooltipAnchor().position(function (d) {
25645
24458
  return props.mapPath.projection()(getGeoJsonCenter(d.geoJson));
25646
24459
  });
25647
- var tooltipGroup = selection.selectGroup("tooltipAnchors").datum(props.mergedData); // attach tooltip anchors
24460
+ var tooltipGroup = selection.selectGroup('tooltipAnchors').datum(props.mergedData); // attach tooltip anchors
25648
24461
 
25649
24462
  tooltipGroup.call(ta);
25650
24463
  });
@@ -25673,12 +24486,12 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25673
24486
  * @return {sszvis.component}
25674
24487
  */
25675
24488
  function geojson () {
25676
- var event = d3.dispatch("over", "out", "click");
25677
- var geojsonComponent = component().prop("dataKeyName").dataKeyName(GEO_KEY_DEFAULT).prop("geoJsonKeyName").geoJsonKeyName("id").prop("geoJson").prop("mapPath").prop("defined", functor).defined(true).prop("fill", functor).fill("black").prop("stroke", functor).stroke("black").prop("strokeWidth", functor).strokeWidth(1.25).prop("transitionColor").transitionColor(true).render(function (data) {
24489
+ var event = d3.dispatch('over', 'out', 'click');
24490
+ var geojsonComponent = component().prop('dataKeyName').dataKeyName(GEO_KEY_DEFAULT).prop('geoJsonKeyName').geoJsonKeyName('id').prop('geoJson').prop('mapPath').prop('defined', functor).defined(true).prop('fill', functor).fill('black').prop('stroke', functor).stroke('black').prop('strokeWidth', functor).strokeWidth(1.25).prop('transitionColor').transitionColor(true).render(function (data) {
25678
24491
  var selection = d3.select(this);
25679
24492
  var props = selection.props(); // render the missing value pattern
25680
24493
 
25681
- ensureDefsElement(selection, "pattern", "missing-pattern").call(mapMissingValuePattern); // getDataKeyName will be called on data values. It should return a map entity id.
24494
+ ensureDefsElement(selection, 'pattern', 'missing-pattern').call(mapMissingValuePattern); // getDataKeyName will be called on data values. It should return a map entity id.
25682
24495
  // getMapKeyName will be called on the 'properties' of each map feature. It should
25683
24496
  // return a map entity id. Data values are matched with corresponding map features using
25684
24497
  // these entity ids.
@@ -25697,36 +24510,36 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25697
24510
  });
25698
24511
 
25699
24512
  function getMapFill(d) {
25700
- return defined(d.datum) && props.defined(d.datum) ? props.fill(d.datum) : "url(#missing-pattern)";
24513
+ return defined(d.datum) && props.defined(d.datum) ? props.fill(d.datum) : 'url(#missing-pattern)';
25701
24514
  }
25702
24515
 
25703
24516
  function getMapStroke(d) {
25704
- return defined(d.datum) && props.defined(d.datum) ? props.stroke(d.datum) : "";
24517
+ return defined(d.datum) && props.defined(d.datum) ? props.stroke(d.datum) : '';
25705
24518
  }
25706
24519
 
25707
- var geoElements = selection.selectAll(".sszvis-map__geojsonelement").data(mergedData);
25708
- var newGeoElements = geoElements.enter().append("path").classed("sszvis-map__geojsonelement", true).attr("data-event-target", "").attr("fill", getMapFill);
24520
+ var geoElements = selection.selectAll('.sszvis-map__geojsonelement').data(mergedData);
24521
+ var newGeoElements = geoElements.enter().append('path').classed('sszvis-map__geojsonelement', true).attr('data-event-target', '').attr('fill', getMapFill);
25709
24522
  geoElements.exit().remove();
25710
24523
  geoElements = geoElements.merge(newGeoElements);
25711
- selection.selectAll(".sszvis-map__geojsonelement--undefined").attr("fill", getMapFill);
25712
- geoElements.classed("sszvis-map__geojsonelement--undefined", function (d) {
24524
+ selection.selectAll('.sszvis-map__geojsonelement--undefined').attr('fill', getMapFill);
24525
+ geoElements.classed('sszvis-map__geojsonelement--undefined', function (d) {
25713
24526
  return !defined(d.datum) || !props.defined(d.datum);
25714
- }).attr("d", function (d) {
24527
+ }).attr('d', function (d) {
25715
24528
  return props.mapPath(d.geoJson);
25716
24529
  });
25717
24530
 
25718
24531
  if (props.transitionColor) {
25719
- geoElements.transition().call(slowTransition).attr("fill", getMapFill);
24532
+ geoElements.transition().call(slowTransition).attr('fill', getMapFill);
25720
24533
  } else {
25721
- geoElements.attr("fill", getMapFill);
24534
+ geoElements.attr('fill', getMapFill);
25722
24535
  }
25723
24536
 
25724
- geoElements.attr("stroke", getMapStroke).attr("stroke-width", props.strokeWidth);
25725
- selection.selectAll("[data-event-target]").on("mouseover", function (d) {
24537
+ geoElements.attr('stroke', getMapStroke).attr('stroke-width', props.strokeWidth);
24538
+ selection.selectAll('[data-event-target]').on('mouseover', function (d) {
25726
24539
  event.over(d.datum);
25727
- }).on("mouseout", function (d) {
24540
+ }).on('mouseout', function (d) {
25728
24541
  event.out(d.datum);
25729
- }).on("click", function (d) {
24542
+ }).on('click', function (d) {
25730
24543
  event.click(d.datum);
25731
24544
  }); // the tooltip anchor generator
25732
24545
 
@@ -25740,7 +24553,7 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25740
24553
 
25741
24554
  return props.mapPath.projection()(sphericalCentroid);
25742
24555
  });
25743
- var tooltipGroup = selection.selectGroup("tooltipAnchors").datum(mergedData); // attach tooltip anchors
24556
+ var tooltipGroup = selection.selectGroup('tooltipAnchors').datum(mergedData); // attach tooltip anchors
25744
24557
 
25745
24558
  tooltipGroup.call(ta);
25746
24559
  });
@@ -25771,13 +24584,13 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25771
24584
  * @return {sszvis.component}
25772
24585
  */
25773
24586
  function mapRendererHighlight () {
25774
- return component().prop("keyName").keyName(GEO_KEY_DEFAULT) // the name of the data key that identifies which map entity it belongs to
25775
- .prop("geoJson").prop("mapPath").prop("highlight").highlight([]) // an array of data values to highlight
25776
- .prop("highlightStroke", functor).highlightStroke("white") // a function for highlighted entity stroke colors (default: white)
25777
- .prop("highlightStrokeWidth", functor).highlightStrokeWidth(2).render(function () {
24587
+ return component().prop('keyName').keyName(GEO_KEY_DEFAULT) // the name of the data key that identifies which map entity it belongs to
24588
+ .prop('geoJson').prop('mapPath').prop('highlight').highlight([]) // an array of data values to highlight
24589
+ .prop('highlightStroke', functor).highlightStroke('white') // a function for highlighted entity stroke colors (default: white)
24590
+ .prop('highlightStrokeWidth', functor).highlightStrokeWidth(2).render(function () {
25778
24591
  var selection = d3.select(this);
25779
24592
  var props = selection.props();
25780
- var highlightBorders = selection.selectAll(".sszvis-map__highlight");
24593
+ var highlightBorders = selection.selectAll('.sszvis-map__highlight');
25781
24594
 
25782
24595
  if (!props.highlight.length) {
25783
24596
  highlightBorders.remove();
@@ -25800,14 +24613,14 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25800
24613
  return m;
25801
24614
  }, []);
25802
24615
  highlightBorders = highlightBorders.data(mergedHighlight);
25803
- var newHighlightBorders = highlightBorders.enter().append("path").classed("sszvis-map__highlight", true);
24616
+ var newHighlightBorders = highlightBorders.enter().append('path').classed('sszvis-map__highlight', true);
25804
24617
  highlightBorders.exit().remove();
25805
24618
  highlightBorders = highlightBorders.merge(newHighlightBorders);
25806
- highlightBorders.attr("d", function (d) {
24619
+ highlightBorders.attr('d', function (d) {
25807
24620
  return props.mapPath(d.geoJson);
25808
- }).style("stroke", function (d) {
24621
+ }).style('stroke', function (d) {
25809
24622
  return props.highlightStroke(d.datum);
25810
- }).style("stroke-width", function (d) {
24623
+ }).style('stroke-width', function (d) {
25811
24624
  return props.highlightStrokeWidth(d.datum);
25812
24625
  });
25813
24626
  });
@@ -25841,17 +24654,17 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25841
24654
  * @return {sszvis.component}
25842
24655
  */
25843
24656
  function image () {
25844
- return component().prop("projection").prop("src").prop("geoBounds").prop("opacity").opacity(1).render(function () {
24657
+ return component().prop('projection').prop('src').prop('geoBounds').prop('opacity').opacity(1).render(function () {
25845
24658
  var selection = d3.select(this);
25846
24659
  var props = selection.props();
25847
- var image = selection.selectAll(".sszvis-map__image").data([0]); // At the moment, 1 image per container
24660
+ var image = selection.selectAll('.sszvis-map__image').data([0]); // At the moment, 1 image per container
25848
24661
 
25849
- var newImage = image.enter().append("img").classed("sszvis-map__image", true);
24662
+ var newImage = image.enter().append('img').classed('sszvis-map__image', true);
25850
24663
  image.exit().remove();
25851
24664
  image = image.merge(newImage);
25852
24665
  var topLeft = props.projection(props.geoBounds[0]);
25853
24666
  var bottomRight = props.projection(props.geoBounds[1]);
25854
- image.attr("src", props.src).style("left", Math.round(topLeft[0]) + "px").style("top", Math.round(topLeft[1]) + "px").style("width", Math.round(bottomRight[0] - topLeft[0]) + "px").style("height", Math.round(bottomRight[1] - topLeft[1]) + "px").style("opacity", props.opacity);
24667
+ image.attr('src', props.src).style('left', Math.round(topLeft[0]) + 'px').style('top', Math.round(topLeft[1]) + 'px').style('width', Math.round(bottomRight[0] - topLeft[0]) + 'px').style('height', Math.round(bottomRight[1] - topLeft[1]) + 'px').style('opacity', props.opacity);
25855
24668
  });
25856
24669
  }
25857
24670
 
@@ -25873,16 +24686,16 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25873
24686
  * @return {sszvis.component}
25874
24687
  */
25875
24688
  function mapRendererMesh () {
25876
- return component().prop("geoJson").prop("mapPath").prop("borderColor").borderColor("white") // A function or string for the color of all borders. Note: all borders have the same color
25877
- .prop("strokeWidth").strokeWidth(1.25).render(function () {
24689
+ return component().prop('geoJson').prop('mapPath').prop('borderColor').borderColor('white') // A function or string for the color of all borders. Note: all borders have the same color
24690
+ .prop('strokeWidth').strokeWidth(1.25).render(function () {
25878
24691
  var selection = d3.select(this);
25879
24692
  var props = selection.props(); // add the map borders. These are rendered as one single path element
25880
24693
 
25881
- var meshLine = selection.selectAll(".sszvis-map__border").data([props.geoJson]);
25882
- var newMeshLine = meshLine.enter().append("path").classed("sszvis-map__border", true);
24694
+ var meshLine = selection.selectAll('.sszvis-map__border').data([props.geoJson]);
24695
+ var newMeshLine = meshLine.enter().append('path').classed('sszvis-map__border', true);
25883
24696
  meshLine.exit().remove();
25884
24697
  meshLine = meshLine.merge(newMeshLine);
25885
- meshLine.attr("d", props.mapPath).style("stroke", props.borderColor).style("stroke-width", props.strokeWidth);
24698
+ meshLine.attr('d', props.mapPath).style('stroke', props.borderColor).style('stroke-width', props.strokeWidth);
25886
24699
  });
25887
24700
  }
25888
24701
 
@@ -25903,41 +24716,41 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25903
24716
  * @return {sszvis.component}
25904
24717
  */
25905
24718
  function mapRendererPatternedLakeOverlay () {
25906
- return component().prop("mapPath").prop("lakeFeature").prop("lakeBounds").prop("lakePathColor").prop("fadeOut").fadeOut(true).render(function () {
24719
+ return component().prop('mapPath').prop('lakeFeature').prop('lakeBounds').prop('lakePathColor').prop('fadeOut').fadeOut(true).render(function () {
25907
24720
  var selection = d3.select(this);
25908
24721
  var props = selection.props(); // the lake texture
25909
24722
 
25910
- ensureDefsElement(selection, "pattern", "lake-pattern").call(mapLakePattern);
24723
+ ensureDefsElement(selection, 'pattern', 'lake-pattern').call(mapLakePattern);
25911
24724
 
25912
24725
  if (props.fadeOut) {
25913
24726
  // the fade gradient
25914
- ensureDefsElement(selection, "linearGradient", "lake-fade-gradient").call(mapLakeFadeGradient); // the mask, which uses the fade gradient
24727
+ ensureDefsElement(selection, 'linearGradient', 'lake-fade-gradient').call(mapLakeFadeGradient); // the mask, which uses the fade gradient
25915
24728
 
25916
- ensureDefsElement(selection, "mask", "lake-fade-mask").call(mapLakeGradientMask);
24729
+ ensureDefsElement(selection, 'mask', 'lake-fade-mask').call(mapLakeGradientMask);
25917
24730
  } // generate the Lake Zurich path
25918
24731
 
25919
24732
 
25920
- var zurichSee = selection.selectAll(".sszvis-map__lakezurich").data([props.lakeFeature]);
25921
- var newZurichSee = zurichSee.enter().append("path").classed("sszvis-map__lakezurich", true);
24733
+ var zurichSee = selection.selectAll('.sszvis-map__lakezurich').data([props.lakeFeature]);
24734
+ var newZurichSee = zurichSee.enter().append('path').classed('sszvis-map__lakezurich', true);
25922
24735
  zurichSee.exit().remove();
25923
24736
  zurichSee = zurichSee.merge(newZurichSee);
25924
- zurichSee.attr("d", props.mapPath).attr("fill", "url(#lake-pattern)");
24737
+ zurichSee.attr('d', props.mapPath).attr('fill', 'url(#lake-pattern)');
25925
24738
 
25926
24739
  if (props.fadeOut) {
25927
24740
  // this mask applies the fade effect
25928
- zurichSee.attr("mask", "url(#lake-fade-mask)");
24741
+ zurichSee.attr('mask', 'url(#lake-fade-mask)');
25929
24742
  } // add a path for the boundaries of map entities which extend over the lake.
25930
24743
  // This path is rendered as a dotted line over the lake shape
25931
24744
 
25932
24745
 
25933
- var lakePath = selection.selectAll(".sszvis-map__lakepath").data([props.lakeBounds]);
25934
- var newLakePath = lakePath.enter().append("path").classed("sszvis-map__lakepath", true);
24746
+ var lakePath = selection.selectAll('.sszvis-map__lakepath').data([props.lakeBounds]);
24747
+ var newLakePath = lakePath.enter().append('path').classed('sszvis-map__lakepath', true);
25935
24748
  lakePath.exit().remove();
25936
24749
  lakePath = lakePath.merge(newLakePath);
25937
- lakePath.attr("d", props.mapPath);
24750
+ lakePath.attr('d', props.mapPath);
25938
24751
 
25939
24752
  if (props.lakePathColor) {
25940
- lakePath.style("stroke", props.lakePathColor);
24753
+ lakePath.style('stroke', props.lakePathColor);
25941
24754
  }
25942
24755
  });
25943
24756
  }
@@ -25964,21 +24777,21 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
25964
24777
  * @return {sszvis.component}
25965
24778
  */
25966
24779
  function raster () {
25967
- return component().prop("debug").debug(false).prop("width").prop("height").prop("position").prop("cellSide").cellSide(2).prop("fill", functor).prop("opacity").opacity(1).render(function (data) {
24780
+ return component().prop('debug').debug(false).prop('width').prop('height').prop('position').prop('cellSide').cellSide(2).prop('fill', functor).prop('opacity').opacity(1).render(function (data) {
25968
24781
  var selection = d3.select(this);
25969
24782
  var props = selection.props();
25970
- var canvas = selection.selectAll(".sszvis-map__rasterimage").data([0]);
25971
- var newCanvas = canvas.enter().append("canvas").classed("sszvis-map__rasterimage", true);
24783
+ var canvas = selection.selectAll('.sszvis-map__rasterimage').data([0]);
24784
+ var newCanvas = canvas.enter().append('canvas').classed('sszvis-map__rasterimage', true);
25972
24785
  canvas.exit().remove();
25973
24786
  canvas = canvas.merge(newCanvas);
25974
- canvas.attr("width", props.width).attr("height", props.height).style("opacity", props.opacity);
25975
- var ctx = canvas.node().getContext("2d");
24787
+ canvas.attr('width', props.width).attr('height', props.height).style('opacity', props.opacity);
24788
+ var ctx = canvas.node().getContext('2d');
25976
24789
  ctx.clearRect(0, 0, props.width, props.height);
25977
24790
 
25978
24791
  if (props.debug) {
25979
24792
  // Displays a rectangle that fills the canvas.
25980
24793
  // Useful for checking alignment with other render layers.
25981
- ctx.fillStyle = "rgba(255, 0, 0, 0.2)";
24794
+ ctx.fillStyle = 'rgba(255, 0, 0, 0.2)';
25982
24795
  ctx.fillRect(0, 0, props.width, props.height);
25983
24796
  }
25984
24797
 
@@ -26458,6 +25271,127 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
26458
25271
  var modularTextHTML = makeTextWithFormat(formatHTML());
26459
25272
  var modularTextSVG = makeTextWithFormat(formatSVG());
26460
25273
 
25274
+ /**
25275
+ * Viewport Resize watcher
25276
+ *
25277
+ * The resize watcher in the sszvis.viewport module can be used for alerting user code to
25278
+ * changes in the browser window size. This includes window resizing on desktop computers
25279
+ * and browsers, but also orientation changes on mobile browsers. Functions which listen
25280
+ * to the 'resize' event of the sszvis.viewport module will be fired on window resize.
25281
+ * You can add a resize listener to your application very easily:
25282
+ *
25283
+ * sszvis.viewport.on('resize', listenerFunction);
25284
+ *
25285
+ * The listener function will be called once per resize event, but at a slight delay. This is because,
25286
+ * while a user is resizing their browser window, many resize events can fire very quickly. This component
25287
+ * automatically throttles the rate at which the listener function is called, since you probably don't need
25288
+ * to respond to every single resize event. This throttling provides for a smoother user experience as they
25289
+ * resize the browser, and increases performance across the board. The listener function will always be
25290
+ * called after one or more window resize events, it just won't be called as often as the window fires the
25291
+ * events.
25292
+ *
25293
+ * @module sszvis/viewport
25294
+ *
25295
+ * @function {string, function} on the .on() function is used to listen to the resize event itself.
25296
+ * There is only one event supported by this component at the moment, so
25297
+ * the first argument to .on must be 'resize' for it to have any effect.
25298
+ * Although this is somewhat redundant, it is done to keep this component's
25299
+ * API clear and in line with other components.
25300
+ *
25301
+ * @return {Object}
25302
+ */
25303
+
25304
+ function throttle(wait, func) {
25305
+ var context, args, result;
25306
+ var timeout = null;
25307
+ var previous = 0;
25308
+
25309
+ var lastCall = function lastCall() {
25310
+ previous = 0;
25311
+ result = func.apply(context, args);
25312
+ timeout = context = args = null;
25313
+ };
25314
+
25315
+ return function () {
25316
+ var now = Date.now();
25317
+ if (!previous) previous = now; // Sets up so that the function isn't called immediately
25318
+
25319
+ var remaining = wait - (now - previous);
25320
+ context = this;
25321
+ args = arguments;
25322
+
25323
+ if (remaining <= 0 || remaining > wait) {
25324
+ if (timeout) {
25325
+ clearTimeout(timeout);
25326
+ timeout = null;
25327
+ }
25328
+
25329
+ previous = now;
25330
+ result = func.apply(context, args);
25331
+ if (!timeout) context = args = null;
25332
+ } else if (!timeout) {
25333
+ timeout = setTimeout(lastCall, remaining);
25334
+ }
25335
+
25336
+ return result;
25337
+ };
25338
+ } // This rather strange set of functions is designed to support the API:
25339
+ // sszvis.viewport.on('resize', callback);
25340
+ // While still enabling the user to register multiple callbacks for the 'resize'
25341
+ // event. Multiple callbacks are a feature which simply returning a d3.dispatch('resize')
25342
+ // object would not allow.
25343
+
25344
+
25345
+ var callbacks = {
25346
+ resize: []
25347
+ };
25348
+
25349
+ if (typeof window !== "undefined") {
25350
+ d3.select(window).on("resize", throttle(500, function () {
25351
+ trigger("resize");
25352
+ }));
25353
+ }
25354
+
25355
+ var on = function on(name, cb) {
25356
+ if (!callbacks[name]) {
25357
+ callbacks[name] = [];
25358
+ }
25359
+
25360
+ callbacks[name] = callbacks[name].filter(function (fn) {
25361
+ return fn !== cb;
25362
+ }).concat(cb);
25363
+ return this;
25364
+ };
25365
+
25366
+ var off = function off(name, cb) {
25367
+ if (!callbacks[name]) {
25368
+ return this;
25369
+ }
25370
+
25371
+ callbacks[name] = callbacks[name].filter(function (fn) {
25372
+ return fn !== cb;
25373
+ });
25374
+ return this;
25375
+ };
25376
+
25377
+ var trigger = function trigger(name) {
25378
+ var evtArgs = Array.prototype.slice.call(arguments, 1);
25379
+
25380
+ if (callbacks[name]) {
25381
+ callbacks[name].forEach(function (fn) {
25382
+ fn.apply(null, evtArgs);
25383
+ });
25384
+ }
25385
+
25386
+ return this;
25387
+ };
25388
+
25389
+ var viewport = {
25390
+ on: on,
25391
+ off: off,
25392
+ trigger: trigger
25393
+ };
25394
+
26461
25395
  exports.AGGLOMERATION_2012_KEY = AGGLOMERATION_2012_KEY;
26462
25396
  exports.DEFAULT_LEGEND_COLOR_ORDINAL_ROW_HEIGHT = DEFAULT_LEGEND_COLOR_ORDINAL_ROW_HEIGHT;
26463
25397
  exports.DEFAULT_WIDTH = DEFAULT_WIDTH;
@@ -26474,7 +25408,6 @@ var sszvis = _commonjsHelpers.createCommonjsModule(function (module, exports) {
26474
25408
  exports.annotationRangeRuler = rangeRuler;
26475
25409
  exports.annotationRectangle = rectangle;
26476
25410
  exports.annotationRuler = ruler;
26477
- exports.app = app;
26478
25411
  exports.arity = arity;
26479
25412
  exports.aspectRatio = aspectRatio;
26480
25413
  exports.aspectRatio12to5 = aspectRatio12to5;
@@ -27156,7 +26089,7 @@ const topojson = /*#__PURE__*/Object.freeze({
27156
26089
  untransform: untransform
27157
26090
  });
27158
26091
 
27159
- const stzhChartCss = "@charset \"UTF-8\";:host{font-family:var(--stzh-font-family-regular);font-weight:var(--stzh-font-weight-regular);font-style:normal;color:var(--stzh-base-color);-webkit-box-sizing:border-box;box-sizing:border-box;display:block}:host[hidden]{display:none}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}.sszvis-outer-container{clear:both;position:relative}.sszvis-svg-layer{position:relative}.sszvis-html-layer{position:absolute}.sszvis-fallback-image{display:block;margin:0 auto;max-width:32.25rem;width:100%}.sszvis-interactive{cursor:default;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);-webkit-touch-callout:none}.sszvis-interactive.sszvis-interactive--draggable{cursor:pointer;cursor:grab;cursor:-webkit-grab}.sszvis-interactive.sszvis-interactive--draggable:active{cursor:grabbing;cursor:-webkit-grabbing}:root{--stzh-font:var(--stzh-font-family-regular, \"Helvetica Neue\", Helvetica, Arial, sans-serif)}.sszvis-axis text{fill:#767676;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-axis path,.sszvis-axis line{fill:none;stroke:#b8b8b8;shape-rendering:crispEdges}.sszvis-axis .tick text.active{fill:#545454}.sszvis-axis .tick text.hidden{display:none}.sszvis-axis .tick line.hidden{display:none}.sszvis-axis.sszvis-axis--top path{display:none}.sszvis-axis.sszvis-axis--vertical path{display:none}.sszvis-axis.sszvis-axis--slider path{stroke:none}.sszvis-axis__label-contour{fill:#ffffff;opacity:0.8;stroke:#ffffff;stroke-width:3}.sszvis-bar--missing{stroke:#a4a4a4}.sszvis-line{fill:none;stroke-width:1.1}.sszvis-pyramid__referenceline{fill:none;stroke:#aaa;stroke-width:2;stroke-dasharray:3 3}.sszvis-sankey-label{alignment-baseline:central;dominant-baseline:central;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-sankey-strong-label{fill:#545454}.sszvis-sankey-weak-label{fill:#767676}.sszvis-sankey-column-label{text-anchor:middle}.sszvis-sankey-column-label-tick{stroke:#b8b8b8}.sszvis-sankey-link-source-label{text-anchor:start}.sszvis-sankey-link-target-label{text-anchor:end}.sszvis-map__area{stroke:none}.sszvis-map__border{fill:none;pointer-events:none;stroke-linejoin:round;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__highlight{fill:none;pointer-events:none;stroke-linejoin:round;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__lakezurich{pointer-events:none;stroke:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__lakepath{fill:none;pointer-events:none;stroke:#d3d3d3;stroke-width:1.25;stroke-dasharray:3 3;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__geojsonelement{pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__image{display:block;position:absolute;pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__rasterimage{display:block;position:absolute;pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-control-buttonGroup{display:inline-block;position:absolute;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-control-buttonGroup__item{background-color:#ffffff;border:0.0625rem solid #767676;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box;color:#767676;cursor:pointer;display:table-cell;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.75rem;line-height:normal;padding:0.5625rem 0.75rem;text-align:center;vertical-align:middle}.sszvis-control-buttonGroup__item.selected{background-color:#767676;color:#ffffff}.sszvis-control-buttonGroup__item:first-child{border-left:0.0625rem solid #767676;border-top-left-radius:0.1875rem;border-bottom-left-radius:0.1875rem}.sszvis-control-buttonGroup__item:last-child{border-top-right-radius:0.1875rem;border-bottom-right-radius:0.1875rem}.sszvis-control-select{border:0.0625rem solid #767676;border-radius:0.1875rem;background-color:#ffffff;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAABQElEQVR4nO3TzW2DUBDEcZdACSnBpe1lVhzdCSXZnaQE55JJSOJgMO9rH/OTOK70/iNxOomIiIiIiMi3cRzfar8hlc0tAM4A3gFMeZ5UDoDps+W86sDMBgBXd7+7+z3yCACmWcfVzIbFg9/xkUeYx68a4b/4iCM8in86wlJ8pBGW4ucj/Dhy98uzowgjrImffZevQzMb3P0WeYSN8bc/v0HkEXbHU8QRksVTpBGSx1OEEbLFU8sjZI+nFkcoFk8tjVA8nloYoVo81RyhejzVGKGZeCo5QnPxVGKEZuMp5wjNx1OOEcLEU8oRwsVTihHCxtOeEcLH0ysjdBNPW0foKp4yjBAnnhKOEC+eEowQN552jBA/nl4YoZ942jBCf/G0YoR+42lhhP7j6cEIx4mn2QjHiyczGw4bLyIiIiIiUtMHjJmBk7uXEiAAAAAASUVORK5CYII=\");background-position:96% 51%;background-repeat:no-repeat;background-size:0.75rem 0.75rem;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;height:2.125rem;overflow:hidden}.sszvis-control-select__element{background:transparent;border:0.0625rem solid #ffffff;color:#767676;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:1rem;height:2.125rem;outline:0}.sszvis-control-select__element:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.sszvis-control-select__metrics{font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.75rem;height:auto;position:absolute;visibility:hidden;width:auto;white-space:nowrap}.sszvis-control-slider__handle{cursor:pointer}.sszvis-control-slider--label{fill:#545454;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.625rem;text-anchor:middle}.sszvis-control-slider__handlebox{fill:#fff;stroke:#545454}.sszvis-control-slider__handleline{stroke:#545454}.sszvis-handleRuler__handle{fill:#ffffff;stroke:#808184}.sszvis-handleRuler__handle-mark{stroke:#a6a8ab}.sszvis-ruler__rule{shape-rendering:crispEdges;stroke:#cccccc}.sszvis-ruler__dot{stroke:#ffffff;stroke-width:1.5}.sszvis-ruler__label,.sszvis-ruler__label-outline{font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.75rem;font-style:normal;font-weight:normal}.sszvis-ruler__label{fill:#545454}.sszvis-ruler__label-outline{stroke:#ffffff;stroke-width:3}.sszvis-rangeFlag__mark{fill:#efefef;stroke:#7c7c7c;stroke-width:1.5}.sszvis-rangeRuler__rule{opacity:0.25;shape-rendering:crispEdges;stroke:#000000}.sszvis-rangeRuler__p1,.sszvis-rangeRuler__p2{fill:#000000;opacity:0.25}.sszvis-rangeRuler__label,.sszvis-rangeRuler__total{font-size:0.625rem;fill:#545454;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-style:normal}.sszvis-tooltip{min-width:3.75rem;position:absolute}.sszvis-tooltip__background{position:absolute}.sszvis-tooltip__background path{fill:rgba(255, 255, 255, 0.9)}.sszvis-tooltip__background.sszvis-tooltip__background--fallback path{stroke:#ddd;stroke-width:1}.sszvis-tooltip__content{font-family:Arial;padding:0.625rem 0.625rem 0.4375rem 0.625rem;position:relative;white-space:nowrap;z-index:1}.sszvis-tooltip__content strong{font-weight:bold}.sszvis-tooltip__content em{font-weight:bold}.sszvis-tooltip__header{color:#545454;font-size:0.75rem;line-height:1.3333;vertical-align:middle}.sszvis-tooltip__body{color:#7c7c7c;font-size:0.6875rem;line-height:1.4545;vertical-align:middle}.sszvis-tooltip--small .sszvis-tooltip__content{padding:0.375rem 0.625rem 0.25rem 0.625rem;text-align:center}.sszvis-tooltip__body__table,.sszvis-tooltip__body__table td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:top}.sszvis-tooltip__body__table{border:none !important;border-collapse:collapse;border-spacing:0;min-width:7.5rem;margin-top:0.375rem;width:100%}.sszvis-tooltip__body__table tr{border-top:0.0625rem solid #e5e6e7}.sszvis-tooltip__body__table td{border:none !important;padding:0.4375rem 0.5em 0.4375rem 0 !important;text-align:left;vertical-align:top}.sszvis-tooltip__body__table tr:last-child td{padding-bottom:0.1875rem}.sszvis-tooltip__body__table td:last-child{color:#545454;font-weight:bold;padding-right:0;text-align:right}.sszvis-tooltipAnchor{pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-referenceline{stroke-width:1.5;stroke:#aaa;stroke-dasharray:3 3}.sszvis-referenceline__caption{fill:#7c7c7c;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.6875rem;text-anchor:middle;-webkit-backface-visibility:hidden}.sszvis-dataareacircle__caption{fill:#7c7c7c;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.6875rem;text-anchor:middle}.sszvis-dataarearectangle__caption{fill:#7c7c7c;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.6875rem;text-anchor:middle}.sszvis-legend__label{fill:#767676;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.75rem;font-style:normal;font-weight:normal;text-anchor:start}.sszvis-legend__label--small{fill:#767676;font-size:0.625rem}.sszvis-legend__axislabel{fill:#767676;font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;font-family:var(--stzh-font);font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-legend__crispmark{shape-rendering:crispEdges}.sszvis-legend__greyline{fill:none;stroke:#b8b8b8;stroke-width:1.1}.sszvis-legend__dashedline{stroke:#cccccc;stroke-dasharray:2 3;stroke-width:1}stzh-chart{font-family:var(--stzh-font-family-regular);font-weight:var(--stzh-font-weight-regular);font-style:normal;color:var(--stzh-base-color);-webkit-box-sizing:border-box;box-sizing:border-box;display:block}stzh-chart[hidden]{display:none}stzh-chart *,stzh-chart *::before,stzh-chart *::after{-webkit-box-sizing:border-box;box-sizing:border-box}";
26092
+ const stzhChartCss = "@charset \"UTF-8\";:host{font-family:var(--stzh-font-family-regular);font-weight:var(--stzh-font-weight-regular);font-style:normal;color:var(--stzh-base-color);-webkit-box-sizing:border-box;box-sizing:border-box;display:block}:host[hidden]{display:none}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}.sszvis-outer-container{clear:both;position:relative}.sszvis-svg-layer{position:relative}.sszvis-html-layer{position:absolute}.sszvis-fallback-image{display:block;margin:0 auto;max-width:32.25rem;width:100%}.sszvis-interactive{cursor:default;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);-webkit-touch-callout:none}.sszvis-interactive.sszvis-interactive--draggable{cursor:pointer;cursor:grab;cursor:-webkit-grab}.sszvis-interactive.sszvis-interactive--draggable:active{cursor:grabbing;cursor:-webkit-grabbing}.sszvis-axis text{fill:#767676;font-family:Arial, sans-serif;font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-axis path,.sszvis-axis line{fill:none;stroke:#B8B8B8;shape-rendering:crispEdges}.sszvis-axis .tick text.active{fill:#545454}.sszvis-axis .tick text.hidden{display:none}.sszvis-axis .tick line.hidden{display:none}.sszvis-axis.sszvis-axis--top path{display:none}.sszvis-axis.sszvis-axis--vertical path{display:none}.sszvis-axis.sszvis-axis--slider path{stroke:none}.sszvis-axis__label-contour{fill:#FFFFFF;opacity:0.8;stroke:#FFFFFF;stroke-width:3}.sszvis-bar--missing{stroke:#A4A4A4}.sszvis-line{fill:none;stroke-width:1.1}.sszvis-pyramid__referenceline{fill:none;stroke:#aaa;stroke-width:2;stroke-dasharray:3 3}.sszvis-sankey-label{alignment-baseline:central;dominant-baseline:central;font-family:Arial, sans-serif;font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-sankey-strong-label{fill:#545454}.sszvis-sankey-weak-label{fill:#767676}.sszvis-sankey-column-label{text-anchor:middle}.sszvis-sankey-column-label-tick{stroke:#B8B8B8}.sszvis-sankey-link-source-label{text-anchor:start}.sszvis-sankey-link-target-label{text-anchor:end}.sszvis-map__area{stroke:none}.sszvis-map__border{fill:none;pointer-events:none;stroke-linejoin:round;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__highlight{fill:none;pointer-events:none;stroke-linejoin:round;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__lakezurich{pointer-events:none;stroke:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__lakepath{fill:none;pointer-events:none;stroke:#d3d3d3;stroke-width:1.25;stroke-dasharray:3 3;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__geojsonelement{pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__image{display:block;position:absolute;pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-map__rasterimage{display:block;position:absolute;pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-control-buttonGroup{display:inline-block;position:absolute;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-control-buttonGroup__item{background-color:#FFFFFF;border:0.0625rem solid #767676;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box;color:#767676;cursor:pointer;display:table-cell;font-family:Arial, sans-serif;font-size:0.75rem;line-height:normal;padding:0.5625rem 0.75rem;text-align:center;vertical-align:middle}.sszvis-control-buttonGroup__item.selected{background-color:#767676;color:#FFFFFF}.sszvis-control-buttonGroup__item:first-child{border-left:0.0625rem solid #767676;border-top-left-radius:0.1875rem;border-bottom-left-radius:0.1875rem}.sszvis-control-buttonGroup__item:last-child{border-top-right-radius:0.1875rem;border-bottom-right-radius:0.1875rem}.sszvis-control-select{border:0.0625rem solid #767676;border-radius:0.1875rem;background-color:#FFFFFF;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAABQElEQVR4nO3TzW2DUBDEcZdACSnBpe1lVhzdCSXZnaQE55JJSOJgMO9rH/OTOK70/iNxOomIiIiIiMi3cRzfar8hlc0tAM4A3gFMeZ5UDoDps+W86sDMBgBXd7+7+z3yCACmWcfVzIbFg9/xkUeYx68a4b/4iCM8in86wlJ8pBGW4ucj/Dhy98uzowgjrImffZevQzMb3P0WeYSN8bc/v0HkEXbHU8QRksVTpBGSx1OEEbLFU8sjZI+nFkcoFk8tjVA8nloYoVo81RyhejzVGKGZeCo5QnPxVGKEZuMp5wjNx1OOEcLEU8oRwsVTihHCxtOeEcLH0ysjdBNPW0foKp4yjBAnnhKOEC+eEowQN552jBA/nl4YoZ942jBCf/G0YoR+42lhhP7j6cEIx4mn2QjHiyczGw4bLyIiIiIiUtMHjJmBk7uXEiAAAAAASUVORK5CYII=\");background-position:96% 51%;background-repeat:no-repeat;background-size:0.75rem 0.75rem;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;height:2.125rem;overflow:hidden}.sszvis-control-select__element{background:transparent;border:0.0625rem solid #FFFFFF;color:#767676;font-family:Arial, sans-serif;font-size:1rem;height:2.125rem;outline:0}.sszvis-control-select__element:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.sszvis-control-select__metrics{font-family:Arial, sans-serif;font-size:0.75rem;height:auto;position:absolute;visibility:hidden;width:auto;white-space:nowrap}.sszvis-control-slider__handle{cursor:pointer}.sszvis-control-slider--label{fill:#545454;font-family:Arial, sans-serif;font-size:0.625rem;text-anchor:middle}.sszvis-control-slider__handlebox{fill:#fff;stroke:#545454}.sszvis-control-slider__handleline{stroke:#545454}.sszvis-handleRuler__handle{fill:#FFFFFF;stroke:#808184}.sszvis-handleRuler__handle-mark{stroke:#A6A8AB}.sszvis-ruler__rule{shape-rendering:crispEdges;stroke:#CCCCCC}.sszvis-ruler__dot{stroke:#FFFFFF;stroke-width:1.5}.sszvis-ruler__label,.sszvis-ruler__label-outline{font-family:Arial, sans-serif;font-size:0.75rem;font-style:normal;font-weight:normal}.sszvis-ruler__label{fill:#545454}.sszvis-ruler__label-outline{stroke:#FFFFFF;stroke-width:3}.sszvis-rangeFlag__mark{fill:#EFEFEF;stroke:#7C7C7C;stroke-width:1.5}.sszvis-rangeRuler__rule{opacity:0.25;shape-rendering:crispEdges;stroke:#000000}.sszvis-rangeRuler__p1,.sszvis-rangeRuler__p2{fill:#000000;opacity:0.25}.sszvis-rangeRuler__label,.sszvis-rangeRuler__total{font-size:0.625rem;fill:#545454;font-family:Arial, sans-serif;font-style:normal}.sszvis-tooltip{min-width:3.75rem;position:absolute}.sszvis-tooltip__background{position:absolute}.sszvis-tooltip__background path{fill:rgba(255, 255, 255, 0.9)}.sszvis-tooltip__background.sszvis-tooltip__background--fallback path{stroke:#ddd;stroke-width:1}.sszvis-tooltip__content{font-family:Arial;padding:0.625rem 0.625rem 0.4375rem 0.625rem;position:relative;white-space:nowrap;z-index:1}.sszvis-tooltip__content strong{font-weight:bold}.sszvis-tooltip__content em{font-weight:bold}.sszvis-tooltip__header{color:#545454;font-size:0.75rem;line-height:1.3333;vertical-align:middle}.sszvis-tooltip__body{color:#7C7C7C;font-size:0.6875rem;line-height:1.4545;vertical-align:middle}.sszvis-tooltip--small .sszvis-tooltip__content{padding:0.375rem 0.625rem 0.25rem 0.625rem;text-align:center}.sszvis-tooltip__body__table,.sszvis-tooltip__body__table td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:top}.sszvis-tooltip__body__table{border:none !important;border-collapse:collapse;border-spacing:0;min-width:7.5rem;margin-top:0.375rem;width:100%}.sszvis-tooltip__body__table tr{border-top:0.0625rem solid #E5E6E7}.sszvis-tooltip__body__table td{border:none !important;padding:0.4375rem 0.5em 0.4375rem 0 !important;text-align:left;vertical-align:top}.sszvis-tooltip__body__table tr:last-child td{padding-bottom:0.1875rem}.sszvis-tooltip__body__table td:last-child{color:#545454;font-weight:bold;padding-right:0;text-align:right}.sszvis-tooltipAnchor{pointer-events:none;user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sszvis-referenceline{stroke-width:1.5;stroke:#aaa;stroke-dasharray:3 3}.sszvis-referenceline__caption{fill:#7C7C7C;font-family:Arial, sans-serif;font-size:0.6875rem;text-anchor:middle;-webkit-backface-visibility:hidden}.sszvis-dataareacircle__caption{fill:#7C7C7C;font-family:Arial, sans-serif;font-size:0.6875rem;text-anchor:middle}.sszvis-dataarearectangle__caption{fill:#7C7C7C;font-family:Arial, sans-serif;font-size:0.6875rem;text-anchor:middle}.sszvis-legend__label{fill:#767676;font-family:Arial, sans-serif;font-size:0.75rem;font-style:normal;font-weight:normal;text-anchor:start}.sszvis-legend__label--small{fill:#767676;font-size:0.625rem}.sszvis-legend__axislabel{fill:#767676;font-family:Arial, sans-serif;font-size:0.625rem;font-style:normal;font-weight:normal}.sszvis-legend__crispmark{shape-rendering:crispEdges}.sszvis-legend__greyline{fill:none;stroke:#B8B8B8;stroke-width:1.1}.sszvis-legend__dashedline{stroke:#CCCCCC;stroke-dasharray:2 3;stroke-width:1}stzh-chart{font-family:var(--stzh-font-family-regular);font-weight:var(--stzh-font-weight-regular);font-style:normal;color:var(--stzh-base-color);-webkit-box-sizing:border-box;box-sizing:border-box;display:block}stzh-chart[hidden]{display:none}stzh-chart *,stzh-chart *::before,stzh-chart *::after{-webkit-box-sizing:border-box;box-sizing:border-box}";
27160
26093
 
27161
26094
  const StzhChart = class {
27162
26095
  constructor(hostRef) {