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

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-335f1552.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-d8ec4e57.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-d8ec4e57.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-705aa56d.entry.js → p-32a03d1c.entry.js} +1 -1
  235. package/dist/stzh-components/p-3327aeae.system.js +1 -0
  236. package/dist/stzh-components/p-37920e74.system.entry.js +1 -0
  237. package/dist/stzh-components/p-3f954bc3.system.js +1 -0
  238. package/dist/stzh-components/{p-125a8244.entry.js → p-4633b93d.entry.js} +1 -1
  239. package/dist/stzh-components/{p-81b4b0e6.system.entry.js → p-48e79dc0.system.entry.js} +1 -1
  240. package/dist/stzh-components/p-4c60da30.entry.js +1 -0
  241. package/dist/stzh-components/p-4eee30ea.system.entry.js +1 -0
  242. package/dist/stzh-components/{p-41fa7e81.entry.js → p-532b4218.entry.js} +1 -1
  243. package/dist/stzh-components/{p-668b4025.system.entry.js → p-552d0e82.system.entry.js} +1 -1
  244. package/dist/stzh-components/p-57235597.system.entry.js +1 -0
  245. package/dist/stzh-components/p-5c697491.js +1 -0
  246. package/dist/stzh-components/{p-a0a033bd.system.entry.js → p-5c72664e.system.entry.js} +1 -1
  247. package/dist/stzh-components/p-5d55a672.system.entry.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-8715198b.entry.js → p-de76e01b.entry.js} +1 -1
  292. package/dist/stzh-components/{p-a44527f8.entry.js → p-e1b2785b.entry.js} +1 -1
  293. package/dist/stzh-components/{p-00c4c8c0.system.entry.js → p-e4a8f1bc.system.entry.js} +1 -1
  294. package/dist/stzh-components/p-e59c2adc.system.entry.js +1 -0
  295. package/dist/stzh-components/p-e9994d05.system.entry.js +1 -0
  296. package/dist/stzh-components/p-ec0654ed.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
@@ -5032,10 +5032,10 @@ function ribbon() {
5032
5032
 
5033
5033
  var prefix = "$";
5034
5034
 
5035
- function Map$1() {}
5035
+ function Map() {}
5036
5036
 
5037
- Map$1.prototype = map$1.prototype = {
5038
- constructor: Map$1,
5037
+ Map.prototype = map$1.prototype = {
5038
+ constructor: Map,
5039
5039
  has: function(key) {
5040
5040
  return (prefix + key) in this;
5041
5041
  },
@@ -5083,10 +5083,10 @@ Map$1.prototype = map$1.prototype = {
5083
5083
  };
5084
5084
 
5085
5085
  function map$1(object, f) {
5086
- var map = new Map$1;
5086
+ var map = new Map;
5087
5087
 
5088
5088
  // Copy constructor.
5089
- if (object instanceof Map$1) object.each(function(value, key) { map.set(key, value); });
5089
+ if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });
5090
5090
 
5091
5091
  // Index array by numeric index or specified key function.
5092
5092
  else if (Array.isArray(object)) {
@@ -5176,12 +5176,12 @@ function setMap(map, key, value) {
5176
5176
  map.set(key, value);
5177
5177
  }
5178
5178
 
5179
- function Set$1() {}
5179
+ function Set() {}
5180
5180
 
5181
5181
  var proto = map$1.prototype;
5182
5182
 
5183
- Set$1.prototype = set.prototype = {
5184
- constructor: Set$1,
5183
+ Set.prototype = set.prototype = {
5184
+ constructor: Set,
5185
5185
  has: proto.has,
5186
5186
  add: function(value) {
5187
5187
  value += "";
@@ -5197,10 +5197,10 @@ Set$1.prototype = set.prototype = {
5197
5197
  };
5198
5198
 
5199
5199
  function set(object, f) {
5200
- var set = new Set$1;
5200
+ var set = new Set;
5201
5201
 
5202
5202
  // Copy constructor.
5203
- if (object instanceof Set$1) object.each(function(value) { set.add(value); });
5203
+ if (object instanceof Set) object.each(function(value) { set.add(value); });
5204
5204
 
5205
5205
  // Otherwise, assume it’s an array.
5206
5206
  else if (object) {
@@ -17155,945 +17155,46 @@ const d3 = /*#__PURE__*/Object.freeze({
17155
17155
  const require$$0 = /*@__PURE__*/getAugmentedNamespace(d3);
17156
17156
 
17157
17157
  var sszvis = createCommonjsModule(function (module, exports) {
17158
- /*! sszvis v2.4.1, Copyright 2014-present Statistik Stadt Zürich */
17158
+ /*! sszvis v2.1.1, Copyright 2014-present Statistik Stadt Zürich */
17159
17159
  (function (global, factory) {
17160
17160
  factory(exports, require$$0) ;
17161
17161
  }(commonjsGlobal, (function (exports, d3) {
17162
- var d3__default = 'default' in d3 ? d3['default'] : d3;
17163
-
17164
- 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);
17165
-
17166
17162
  /**
17167
- * @this {Promise}
17163
+ * d3.selection plugin to simplify creating idempotent divs that are not
17164
+ * recreated when rendered again.
17165
+ *
17166
+ * @see https://github.com/mbostock/d3/wiki/Selections
17167
+ *
17168
+ * @param {String} key - the name of the group
17169
+ * @return {d3.selection}
17168
17170
  */
17169
- function finallyConstructor(callback) {
17170
- var constructor = this.constructor;
17171
- return this.then(
17172
- function(value) {
17173
- // @ts-ignore
17174
- return constructor.resolve(callback()).then(function() {
17175
- return value;
17176
- });
17177
- },
17178
- function(reason) {
17179
- // @ts-ignore
17180
- return constructor.resolve(callback()).then(function() {
17181
- // @ts-ignore
17182
- return constructor.reject(reason);
17183
- });
17184
- }
17185
- );
17186
- }
17187
-
17188
- // Store setTimeout reference so promise-polyfill will be unaffected by
17189
- // other code modifying setTimeout (like sinon.useFakeTimers())
17190
- var setTimeoutFunc = setTimeout;
17191
-
17192
- function isArray(x) {
17193
- return Boolean(x && typeof x.length !== 'undefined');
17194
- }
17195
17171
 
17196
- function noop() {}
17197
-
17198
- // Polyfill for Function.prototype.bind
17199
- function bind(fn, thisArg) {
17200
- return function() {
17201
- fn.apply(thisArg, arguments);
17202
- };
17203
- }
17204
-
17205
- /**
17206
- * @constructor
17207
- * @param {Function} fn
17208
- */
17209
- function Promise$1(fn) {
17210
- if (!(this instanceof Promise$1))
17211
- throw new TypeError('Promises must be constructed via new');
17212
- if (typeof fn !== 'function') throw new TypeError('not a function');
17213
- /** @type {!number} */
17214
- this._state = 0;
17215
- /** @type {!boolean} */
17216
- this._handled = false;
17217
- /** @type {Promise|undefined} */
17218
- this._value = undefined;
17219
- /** @type {!Array<!Function>} */
17220
- this._deferreds = [];
17221
-
17222
- doResolve(fn, this);
17223
- }
17224
-
17225
- function handle(self, deferred) {
17226
- while (self._state === 3) {
17227
- self = self._value;
17228
- }
17229
- if (self._state === 0) {
17230
- self._deferreds.push(deferred);
17231
- return;
17232
- }
17233
- self._handled = true;
17234
- Promise$1._immediateFn(function() {
17235
- var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
17236
- if (cb === null) {
17237
- (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
17238
- return;
17239
- }
17240
- var ret;
17241
- try {
17242
- ret = cb(self._value);
17243
- } catch (e) {
17244
- reject(deferred.promise, e);
17245
- return;
17246
- }
17247
- resolve(deferred.promise, ret);
17172
+ d3.selection.prototype.selectDiv = function (key) {
17173
+ var div = this.selectAll('[data-d3-selectdiv="' + key + '"]').data(function (d) {
17174
+ return [d];
17248
17175
  });
17249
- }
17250
-
17251
- function resolve(self, newValue) {
17252
- try {
17253
- // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
17254
- if (newValue === self)
17255
- throw new TypeError('A promise cannot be resolved with itself.');
17256
- if (
17257
- newValue &&
17258
- (typeof newValue === 'object' || typeof newValue === 'function')
17259
- ) {
17260
- var then = newValue.then;
17261
- if (newValue instanceof Promise$1) {
17262
- self._state = 3;
17263
- self._value = newValue;
17264
- finale(self);
17265
- return;
17266
- } else if (typeof then === 'function') {
17267
- doResolve(bind(then, newValue), self);
17268
- return;
17269
- }
17270
- }
17271
- self._state = 1;
17272
- self._value = newValue;
17273
- finale(self);
17274
- } catch (e) {
17275
- reject(self, e);
17276
- }
17277
- }
17278
-
17279
- function reject(self, newValue) {
17280
- self._state = 2;
17281
- self._value = newValue;
17282
- finale(self);
17283
- }
17284
-
17285
- function finale(self) {
17286
- if (self._state === 2 && self._deferreds.length === 0) {
17287
- Promise$1._immediateFn(function() {
17288
- if (!self._handled) {
17289
- Promise$1._unhandledRejectionFn(self._value);
17290
- }
17291
- });
17292
- }
17293
-
17294
- for (var i = 0, len = self._deferreds.length; i < len; i++) {
17295
- handle(self, self._deferreds[i]);
17296
- }
17297
- self._deferreds = null;
17298
- }
17299
-
17300
- /**
17301
- * @constructor
17302
- */
17303
- function Handler(onFulfilled, onRejected, promise) {
17304
- this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
17305
- this.onRejected = typeof onRejected === 'function' ? onRejected : null;
17306
- this.promise = promise;
17307
- }
17176
+ var newDiv = div.enter().append("div").attr("data-d3-selectdiv", key).style("position", "absolute");
17177
+ return div.merge(newDiv);
17178
+ };
17308
17179
 
17309
17180
  /**
17310
- * Take a potentially misbehaving resolver function and make sure
17311
- * onFulfilled and onRejected are only called once.
17181
+ * d3.selection plugin to simplify creating idempotent groups that are not
17182
+ * recreated when rendered again.
17183
+ *
17184
+ * @see https://github.com/mbostock/d3/wiki/Selections
17312
17185
  *
17313
- * Makes no guarantees about asynchrony.
17186
+ * @param {String} key The name of the group
17187
+ * @return {d3.selection}
17314
17188
  */
17315
- function doResolve(fn, self) {
17316
- var done = false;
17317
- try {
17318
- fn(
17319
- function(value) {
17320
- if (done) return;
17321
- done = true;
17322
- resolve(self, value);
17323
- },
17324
- function(reason) {
17325
- if (done) return;
17326
- done = true;
17327
- reject(self, reason);
17328
- }
17329
- );
17330
- } catch (ex) {
17331
- if (done) return;
17332
- done = true;
17333
- reject(self, ex);
17334
- }
17335
- }
17336
17189
 
17337
- Promise$1.prototype['catch'] = function(onRejected) {
17338
- return this.then(null, onRejected);
17339
- };
17340
-
17341
- Promise$1.prototype.then = function(onFulfilled, onRejected) {
17342
- // @ts-ignore
17343
- var prom = new this.constructor(noop);
17344
-
17345
- handle(this, new Handler(onFulfilled, onRejected, prom));
17346
- return prom;
17347
- };
17348
-
17349
- Promise$1.prototype['finally'] = finallyConstructor;
17350
-
17351
- Promise$1.all = function(arr) {
17352
- return new Promise$1(function(resolve, reject) {
17353
- if (!isArray(arr)) {
17354
- return reject(new TypeError('Promise.all accepts an array'));
17355
- }
17356
-
17357
- var args = Array.prototype.slice.call(arr);
17358
- if (args.length === 0) return resolve([]);
17359
- var remaining = args.length;
17360
-
17361
- function res(i, val) {
17362
- try {
17363
- if (val && (typeof val === 'object' || typeof val === 'function')) {
17364
- var then = val.then;
17365
- if (typeof then === 'function') {
17366
- then.call(
17367
- val,
17368
- function(val) {
17369
- res(i, val);
17370
- },
17371
- reject
17372
- );
17373
- return;
17374
- }
17375
- }
17376
- args[i] = val;
17377
- if (--remaining === 0) {
17378
- resolve(args);
17379
- }
17380
- } catch (ex) {
17381
- reject(ex);
17382
- }
17383
- }
17384
-
17385
- for (var i = 0; i < args.length; i++) {
17386
- res(i, args[i]);
17387
- }
17388
- });
17389
- };
17390
-
17391
- Promise$1.resolve = function(value) {
17392
- if (value && typeof value === 'object' && value.constructor === Promise$1) {
17393
- return value;
17394
- }
17395
-
17396
- return new Promise$1(function(resolve) {
17397
- resolve(value);
17398
- });
17399
- };
17400
-
17401
- Promise$1.reject = function(value) {
17402
- return new Promise$1(function(resolve, reject) {
17403
- reject(value);
17404
- });
17405
- };
17406
-
17407
- Promise$1.race = function(arr) {
17408
- return new Promise$1(function(resolve, reject) {
17409
- if (!isArray(arr)) {
17410
- return reject(new TypeError('Promise.race accepts an array'));
17411
- }
17412
-
17413
- for (var i = 0, len = arr.length; i < len; i++) {
17414
- Promise$1.resolve(arr[i]).then(resolve, reject);
17415
- }
17416
- });
17417
- };
17418
-
17419
- // Use polyfill for setImmediate for performance gains
17420
- Promise$1._immediateFn =
17421
- // @ts-ignore
17422
- (typeof setImmediate === 'function' &&
17423
- function(fn) {
17424
- // @ts-ignore
17425
- setImmediate(fn);
17426
- }) ||
17427
- function(fn) {
17428
- setTimeoutFunc(fn, 0);
17429
- };
17430
-
17431
- Promise$1._unhandledRejectionFn = function _unhandledRejectionFn(err) {
17432
- if (typeof console !== 'undefined' && console) {
17433
- console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
17434
- }
17435
- };
17436
-
17437
- /** @suppress {undefinedVars} */
17438
- var globalNS = (function() {
17439
- // the only reliable means to get the global object is
17440
- // `Function('return this')()`
17441
- // However, this causes CSP violations in Chrome apps.
17442
- if (typeof self !== 'undefined') {
17443
- return self;
17444
- }
17445
- if (typeof window !== 'undefined') {
17446
- return window;
17447
- }
17448
- if (typeof commonjsGlobal !== 'undefined') {
17449
- return commonjsGlobal;
17450
- }
17451
- throw new Error('unable to locate global object');
17452
- })();
17453
-
17454
- if (!('Promise' in globalNS)) {
17455
- globalNS['Promise'] = Promise$1;
17456
- } else if (!globalNS.Promise.prototype['finally']) {
17457
- globalNS.Promise.prototype['finally'] = finallyConstructor;
17458
- }
17459
-
17460
- var global$1 = (function(self) {
17461
- return self
17462
- // eslint-disable-next-line no-invalid-this
17463
- })(typeof self !== 'undefined' ? self : window);
17464
- var support = {
17465
- searchParams: 'URLSearchParams' in global$1,
17466
- iterable: 'Symbol' in global$1 && 'iterator' in Symbol,
17467
- blob:
17468
- 'FileReader' in global$1 &&
17469
- 'Blob' in global$1 &&
17470
- (function() {
17471
- try {
17472
- new Blob();
17473
- return true
17474
- } catch (e) {
17475
- return false
17476
- }
17477
- })(),
17478
- formData: 'FormData' in global$1,
17479
- arrayBuffer: 'ArrayBuffer' in global$1
17480
- };
17481
-
17482
- function isDataView(obj) {
17483
- return obj && DataView.prototype.isPrototypeOf(obj)
17484
- }
17485
-
17486
- if (support.arrayBuffer) {
17487
- var viewClasses = [
17488
- '[object Int8Array]',
17489
- '[object Uint8Array]',
17490
- '[object Uint8ClampedArray]',
17491
- '[object Int16Array]',
17492
- '[object Uint16Array]',
17493
- '[object Int32Array]',
17494
- '[object Uint32Array]',
17495
- '[object Float32Array]',
17496
- '[object Float64Array]'
17497
- ];
17498
-
17499
- var isArrayBufferView =
17500
- ArrayBuffer.isView ||
17501
- function(obj) {
17502
- return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
17503
- };
17504
- }
17505
-
17506
- function normalizeName(name) {
17507
- if (typeof name !== 'string') {
17508
- name = String(name);
17509
- }
17510
- if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
17511
- throw new TypeError('Invalid character in header field name')
17512
- }
17513
- return name.toLowerCase()
17514
- }
17515
-
17516
- function normalizeValue(value) {
17517
- if (typeof value !== 'string') {
17518
- value = String(value);
17519
- }
17520
- return value
17521
- }
17522
-
17523
- // Build a destructive iterator for the value list
17524
- function iteratorFor(items) {
17525
- var iterator = {
17526
- next: function() {
17527
- var value = items.shift();
17528
- return {done: value === undefined, value: value}
17529
- }
17530
- };
17531
-
17532
- if (support.iterable) {
17533
- iterator[Symbol.iterator] = function() {
17534
- return iterator
17535
- };
17536
- }
17537
-
17538
- return iterator
17539
- }
17540
-
17541
- function Headers(headers) {
17542
- this.map = {};
17543
-
17544
- if (headers instanceof Headers) {
17545
- headers.forEach(function(value, name) {
17546
- this.append(name, value);
17547
- }, this);
17548
- } else if (Array.isArray(headers)) {
17549
- headers.forEach(function(header) {
17550
- this.append(header[0], header[1]);
17551
- }, this);
17552
- } else if (headers) {
17553
- Object.getOwnPropertyNames(headers).forEach(function(name) {
17554
- this.append(name, headers[name]);
17555
- }, this);
17556
- }
17557
- }
17558
-
17559
- Headers.prototype.append = function(name, value) {
17560
- name = normalizeName(name);
17561
- value = normalizeValue(value);
17562
- var oldValue = this.map[name];
17563
- this.map[name] = oldValue ? oldValue + ', ' + value : value;
17564
- };
17565
-
17566
- Headers.prototype['delete'] = function(name) {
17567
- delete this.map[normalizeName(name)];
17568
- };
17569
-
17570
- Headers.prototype.get = function(name) {
17571
- name = normalizeName(name);
17572
- return this.has(name) ? this.map[name] : null
17573
- };
17574
-
17575
- Headers.prototype.has = function(name) {
17576
- return this.map.hasOwnProperty(normalizeName(name))
17577
- };
17578
-
17579
- Headers.prototype.set = function(name, value) {
17580
- this.map[normalizeName(name)] = normalizeValue(value);
17581
- };
17582
-
17583
- Headers.prototype.forEach = function(callback, thisArg) {
17584
- for (var name in this.map) {
17585
- if (this.map.hasOwnProperty(name)) {
17586
- callback.call(thisArg, this.map[name], name, this);
17587
- }
17588
- }
17589
- };
17590
-
17591
- Headers.prototype.keys = function() {
17592
- var items = [];
17593
- this.forEach(function(value, name) {
17594
- items.push(name);
17595
- });
17596
- return iteratorFor(items)
17597
- };
17598
-
17599
- Headers.prototype.values = function() {
17600
- var items = [];
17601
- this.forEach(function(value) {
17602
- items.push(value);
17603
- });
17604
- return iteratorFor(items)
17605
- };
17606
-
17607
- Headers.prototype.entries = function() {
17608
- var items = [];
17609
- this.forEach(function(value, name) {
17610
- items.push([name, value]);
17611
- });
17612
- return iteratorFor(items)
17613
- };
17614
-
17615
- if (support.iterable) {
17616
- Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
17617
- }
17618
-
17619
- function consumed(body) {
17620
- if (body.bodyUsed) {
17621
- return Promise.reject(new TypeError('Already read'))
17622
- }
17623
- body.bodyUsed = true;
17624
- }
17625
-
17626
- function fileReaderReady(reader) {
17627
- return new Promise(function(resolve, reject) {
17628
- reader.onload = function() {
17629
- resolve(reader.result);
17630
- };
17631
- reader.onerror = function() {
17632
- reject(reader.error);
17633
- };
17634
- })
17635
- }
17636
-
17637
- function readBlobAsArrayBuffer(blob) {
17638
- var reader = new FileReader();
17639
- var promise = fileReaderReady(reader);
17640
- reader.readAsArrayBuffer(blob);
17641
- return promise
17642
- }
17643
-
17644
- function readBlobAsText(blob) {
17645
- var reader = new FileReader();
17646
- var promise = fileReaderReady(reader);
17647
- reader.readAsText(blob);
17648
- return promise
17649
- }
17650
-
17651
- function readArrayBufferAsText(buf) {
17652
- var view = new Uint8Array(buf);
17653
- var chars = new Array(view.length);
17654
-
17655
- for (var i = 0; i < view.length; i++) {
17656
- chars[i] = String.fromCharCode(view[i]);
17657
- }
17658
- return chars.join('')
17659
- }
17660
-
17661
- function bufferClone(buf) {
17662
- if (buf.slice) {
17663
- return buf.slice(0)
17664
- } else {
17665
- var view = new Uint8Array(buf.byteLength);
17666
- view.set(new Uint8Array(buf));
17667
- return view.buffer
17668
- }
17669
- }
17670
-
17671
- function Body() {
17672
- this.bodyUsed = false;
17673
-
17674
- this._initBody = function(body) {
17675
- /*
17676
- fetch-mock wraps the Response object in an ES6 Proxy to
17677
- provide useful test harness features such as flush. However, on
17678
- ES5 browsers without fetch or Proxy support pollyfills must be used;
17679
- the proxy-pollyfill is unable to proxy an attribute unless it exists
17680
- on the object before the Proxy is created. This change ensures
17681
- Response.bodyUsed exists on the instance, while maintaining the
17682
- semantic of setting Request.bodyUsed in the constructor before
17683
- _initBody is called.
17684
- */
17685
- this.bodyUsed = this.bodyUsed;
17686
- this._bodyInit = body;
17687
- if (!body) {
17688
- this._bodyText = '';
17689
- } else if (typeof body === 'string') {
17690
- this._bodyText = body;
17691
- } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
17692
- this._bodyBlob = body;
17693
- } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
17694
- this._bodyFormData = body;
17695
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
17696
- this._bodyText = body.toString();
17697
- } else if (support.arrayBuffer && support.blob && isDataView(body)) {
17698
- this._bodyArrayBuffer = bufferClone(body.buffer);
17699
- // IE 10-11 can't handle a DataView body.
17700
- this._bodyInit = new Blob([this._bodyArrayBuffer]);
17701
- } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
17702
- this._bodyArrayBuffer = bufferClone(body);
17703
- } else {
17704
- this._bodyText = body = Object.prototype.toString.call(body);
17705
- }
17706
-
17707
- if (!this.headers.get('content-type')) {
17708
- if (typeof body === 'string') {
17709
- this.headers.set('content-type', 'text/plain;charset=UTF-8');
17710
- } else if (this._bodyBlob && this._bodyBlob.type) {
17711
- this.headers.set('content-type', this._bodyBlob.type);
17712
- } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
17713
- this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
17714
- }
17715
- }
17716
- };
17717
-
17718
- if (support.blob) {
17719
- this.blob = function() {
17720
- var rejected = consumed(this);
17721
- if (rejected) {
17722
- return rejected
17723
- }
17724
-
17725
- if (this._bodyBlob) {
17726
- return Promise.resolve(this._bodyBlob)
17727
- } else if (this._bodyArrayBuffer) {
17728
- return Promise.resolve(new Blob([this._bodyArrayBuffer]))
17729
- } else if (this._bodyFormData) {
17730
- throw new Error('could not read FormData body as blob')
17731
- } else {
17732
- return Promise.resolve(new Blob([this._bodyText]))
17733
- }
17734
- };
17735
-
17736
- this.arrayBuffer = function() {
17737
- if (this._bodyArrayBuffer) {
17738
- return consumed(this) || Promise.resolve(this._bodyArrayBuffer)
17739
- } else {
17740
- return this.blob().then(readBlobAsArrayBuffer)
17741
- }
17742
- };
17743
- }
17744
-
17745
- this.text = function() {
17746
- var rejected = consumed(this);
17747
- if (rejected) {
17748
- return rejected
17749
- }
17750
-
17751
- if (this._bodyBlob) {
17752
- return readBlobAsText(this._bodyBlob)
17753
- } else if (this._bodyArrayBuffer) {
17754
- return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
17755
- } else if (this._bodyFormData) {
17756
- throw new Error('could not read FormData body as text')
17757
- } else {
17758
- return Promise.resolve(this._bodyText)
17759
- }
17760
- };
17761
-
17762
- if (support.formData) {
17763
- this.formData = function() {
17764
- return this.text().then(decode)
17765
- };
17766
- }
17767
-
17768
- this.json = function() {
17769
- return this.text().then(JSON.parse)
17770
- };
17771
-
17772
- return this
17773
- }
17774
-
17775
- // HTTP methods whose capitalization should be normalized
17776
- var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];
17777
-
17778
- function normalizeMethod(method) {
17779
- var upcased = method.toUpperCase();
17780
- return methods.indexOf(upcased) > -1 ? upcased : method
17781
- }
17782
-
17783
- function Request(input, options) {
17784
- options = options || {};
17785
- var body = options.body;
17786
-
17787
- if (input instanceof Request) {
17788
- if (input.bodyUsed) {
17789
- throw new TypeError('Already read')
17790
- }
17791
- this.url = input.url;
17792
- this.credentials = input.credentials;
17793
- if (!options.headers) {
17794
- this.headers = new Headers(input.headers);
17795
- }
17796
- this.method = input.method;
17797
- this.mode = input.mode;
17798
- this.signal = input.signal;
17799
- if (!body && input._bodyInit != null) {
17800
- body = input._bodyInit;
17801
- input.bodyUsed = true;
17802
- }
17803
- } else {
17804
- this.url = String(input);
17805
- }
17806
-
17807
- this.credentials = options.credentials || this.credentials || 'same-origin';
17808
- if (options.headers || !this.headers) {
17809
- this.headers = new Headers(options.headers);
17810
- }
17811
- this.method = normalizeMethod(options.method || this.method || 'GET');
17812
- this.mode = options.mode || this.mode || null;
17813
- this.signal = options.signal || this.signal;
17814
- this.referrer = null;
17815
-
17816
- if ((this.method === 'GET' || this.method === 'HEAD') && body) {
17817
- throw new TypeError('Body not allowed for GET or HEAD requests')
17818
- }
17819
- this._initBody(body);
17820
-
17821
- if (this.method === 'GET' || this.method === 'HEAD') {
17822
- if (options.cache === 'no-store' || options.cache === 'no-cache') {
17823
- // Search for a '_' parameter in the query string
17824
- var reParamSearch = /([?&])_=[^&]*/;
17825
- if (reParamSearch.test(this.url)) {
17826
- // If it already exists then set the value with the current time
17827
- this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
17828
- } else {
17829
- // Otherwise add a new '_' parameter to the end with the current time
17830
- var reQueryString = /\?/;
17831
- this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
17832
- }
17833
- }
17834
- }
17835
- }
17836
-
17837
- Request.prototype.clone = function() {
17838
- return new Request(this, {body: this._bodyInit})
17839
- };
17840
-
17841
- function decode(body) {
17842
- var form = new FormData();
17843
- body
17844
- .trim()
17845
- .split('&')
17846
- .forEach(function(bytes) {
17847
- if (bytes) {
17848
- var split = bytes.split('=');
17849
- var name = split.shift().replace(/\+/g, ' ');
17850
- var value = split.join('=').replace(/\+/g, ' ');
17851
- form.append(decodeURIComponent(name), decodeURIComponent(value));
17852
- }
17853
- });
17854
- return form
17855
- }
17856
-
17857
- function parseHeaders(rawHeaders) {
17858
- var headers = new Headers();
17859
- // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
17860
- // https://tools.ietf.org/html/rfc7230#section-3.2
17861
- var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
17862
- preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
17863
- var parts = line.split(':');
17864
- var key = parts.shift().trim();
17865
- if (key) {
17866
- var value = parts.join(':').trim();
17867
- headers.append(key, value);
17868
- }
17190
+ d3.selection.prototype.selectGroup = function (key) {
17191
+ var group = this.selectAll('[data-d3-selectgroup="' + key + '"]').data(function (d) {
17192
+ return [d];
17869
17193
  });
17870
- return headers
17871
- }
17872
-
17873
- Body.call(Request.prototype);
17874
-
17875
- function Response(bodyInit, options) {
17876
- if (!options) {
17877
- options = {};
17878
- }
17879
-
17880
- this.type = 'default';
17881
- this.status = options.status === undefined ? 200 : options.status;
17882
- this.ok = this.status >= 200 && this.status < 300;
17883
- this.statusText = 'statusText' in options ? options.statusText : '';
17884
- this.headers = new Headers(options.headers);
17885
- this.url = options.url || '';
17886
- this._initBody(bodyInit);
17887
- }
17888
-
17889
- Body.call(Response.prototype);
17890
-
17891
- Response.prototype.clone = function() {
17892
- return new Response(this._bodyInit, {
17893
- status: this.status,
17894
- statusText: this.statusText,
17895
- headers: new Headers(this.headers),
17896
- url: this.url
17897
- })
17898
- };
17899
-
17900
- Response.error = function() {
17901
- var response = new Response(null, {status: 0, statusText: ''});
17902
- response.type = 'error';
17903
- return response
17904
- };
17905
-
17906
- var redirectStatuses = [301, 302, 303, 307, 308];
17907
-
17908
- Response.redirect = function(url, status) {
17909
- if (redirectStatuses.indexOf(status) === -1) {
17910
- throw new RangeError('Invalid status code')
17911
- }
17912
-
17913
- return new Response(null, {status: status, headers: {location: url}})
17194
+ var newGroup = group.enter().append("g").attr("data-d3-selectgroup", key);
17195
+ return group.merge(newGroup);
17914
17196
  };
17915
17197
 
17916
- var DOMException = global$1.DOMException;
17917
-
17918
- if (typeof DOMException !== 'function') {
17919
- DOMException = function(message, name) {
17920
- this.message = message;
17921
- this.name = name;
17922
- var error = Error(message);
17923
- this.stack = error.stack;
17924
- };
17925
- DOMException.prototype = Object.create(Error.prototype);
17926
- DOMException.prototype.constructor = DOMException;
17927
- }
17928
-
17929
- function fetch(input, init) {
17930
- return new Promise(function(resolve, reject) {
17931
- var request = new Request(input, init);
17932
-
17933
- if (request.signal && request.signal.aborted) {
17934
- return reject(new DOMException('Aborted', 'AbortError'))
17935
- }
17936
-
17937
- var xhr = new XMLHttpRequest();
17938
-
17939
- function abortXhr() {
17940
- xhr.abort();
17941
- }
17942
-
17943
- xhr.onload = function() {
17944
- var options = {
17945
- status: xhr.status,
17946
- statusText: xhr.statusText,
17947
- headers: parseHeaders(xhr.getAllResponseHeaders() || '')
17948
- };
17949
- options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
17950
- var body = 'response' in xhr ? xhr.response : xhr.responseText;
17951
- setTimeout(function() {
17952
- resolve(new Response(body, options));
17953
- }, 0);
17954
- };
17955
-
17956
- xhr.onerror = function() {
17957
- setTimeout(function() {
17958
- reject(new TypeError('Network request failed'));
17959
- }, 0);
17960
- };
17961
-
17962
- xhr.ontimeout = function() {
17963
- setTimeout(function() {
17964
- reject(new TypeError('Network request failed'));
17965
- }, 0);
17966
- };
17967
-
17968
- xhr.onabort = function() {
17969
- setTimeout(function() {
17970
- reject(new DOMException('Aborted', 'AbortError'));
17971
- }, 0);
17972
- };
17973
-
17974
- function fixUrl(url) {
17975
- try {
17976
- return url === '' && global$1.location.href ? global$1.location.href : url
17977
- } catch (e) {
17978
- return url
17979
- }
17980
- }
17981
-
17982
- xhr.open(request.method, fixUrl(request.url), true);
17983
-
17984
- if (request.credentials === 'include') {
17985
- xhr.withCredentials = true;
17986
- } else if (request.credentials === 'omit') {
17987
- xhr.withCredentials = false;
17988
- }
17989
-
17990
- if ('responseType' in xhr) {
17991
- if (support.blob) {
17992
- xhr.responseType = 'blob';
17993
- } else if (
17994
- support.arrayBuffer &&
17995
- request.headers.get('Content-Type') &&
17996
- request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
17997
- ) {
17998
- xhr.responseType = 'arraybuffer';
17999
- }
18000
- }
18001
-
18002
- request.headers.forEach(function(value, name) {
18003
- xhr.setRequestHeader(name, value);
18004
- });
18005
-
18006
- if (request.signal) {
18007
- request.signal.addEventListener('abort', abortXhr);
18008
-
18009
- xhr.onreadystatechange = function() {
18010
- // DONE (success or failure)
18011
- if (xhr.readyState === 4) {
18012
- request.signal.removeEventListener('abort', abortXhr);
18013
- }
18014
- };
18015
- }
18016
-
18017
- xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
18018
- })
18019
- }
18020
-
18021
- fetch.polyfill = true;
18022
-
18023
- if (!global$1.fetch) {
18024
- global$1.fetch = fetch;
18025
- global$1.Headers = Headers;
18026
- global$1.Request = Request;
18027
- global$1.Response = Response;
18028
- }
18029
-
18030
- /**
18031
- * d3-request shim
18032
- *
18033
- * This module shims [d3-request](https://github.com/d3/d3-request) from d3v4 using
18034
- * the new [d3-fetch](https://github.com/d3/d3-fetch) from d3v5. This makes it
18035
- * possible to use d3v4 code with d3v5 for the use cases in SSZVIS, but not when
18036
- * using more advanced functionality of d3-request (e.g. setting headers).
18037
- *
18038
- * Example from d3v4 that works thanks to this shim:
18039
- *
18040
- * d3.csv("http://example.com")
18041
- * .row(function(x) {
18042
- * return {
18043
- * year: parseInt(x.Jahr, 10)
18044
- * }
18045
- * })
18046
- * .get(function(error, data) {
18047
- * if (error) {
18048
- * sszvis.loadError(error);
18049
- * return;
18050
- * }
18051
- * actions.prepareState(data);
18052
- * })
18053
- *
18054
- * With d3v5 this can now be written like:
18055
- *
18056
- * d3.csv("http://example.com", function(x) { return x })
18057
- * .then(actions.prepareState)
18058
- * .catch(sszvis.loadError)
18059
- *
18060
- * Supported d3 versions:
18061
- * - d3 5.0: Fully supported
18062
- * - d3 4.0: Partially supported (only "get" and "row" methods have been implemented)
18063
- */
18064
- d3__default.csv = mkShim(d3__default.csv);
18065
- d3__default.json = mkShim(d3__default.json); // -----------------------------------------------------------------------------
18066
-
18067
- function mkShim(request) {
18068
- function mkGet() {
18069
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18070
- args[_key] = arguments[_key];
18071
- }
18072
-
18073
- return function (cb) {
18074
- request.apply(void 0, args).then(function (data) {
18075
- cb(undefined, data);
18076
- }).catch(cb);
18077
- };
18078
- }
18079
-
18080
- return function (url, parseNew) {
18081
- return {
18082
- // This is the "new" d3-fetch way of loading data that uses a Promise
18083
- then: function then(cb) {
18084
- return request(url, parseNew).then(cb);
18085
- },
18086
- // This is the "old" d3-request way of loading data using an XMLHttpRequest
18087
- get: mkGet(url),
18088
- row: function row(parseRow) {
18089
- return {
18090
- get: mkGet(url, parseRow)
18091
- };
18092
- }
18093
- };
18094
- };
18095
- }
18096
-
18097
17198
  /* eslint-disable */
18098
17199
 
18099
17200
  /**
@@ -18194,64 +17295,17 @@ var sszvis = createCommonjsModule(function (module, exports) {
18194
17295
  throw new Error("Error parsing XML string");
18195
17296
  }
18196
17297
  }
18197
- }); // The innerSVG DOM property for SVGElement.
18198
-
18199
- Object.defineProperty(SVGElement.prototype, "innerSVG", {
18200
- get: function get() {
18201
- return this.innerHTML;
18202
- },
18203
- set: function set(markupText) {
18204
- this.innerHTML = markupText;
18205
- }
18206
- });
18207
- })();
18208
-
18209
- // This is the more strict version of `isNaN`. We need to polyfill it for Internet Explorer,
18210
- // all other browsers support this.
18211
- // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
18212
- Number.isNaN = Number.isNaN || function isNaN(input) {
18213
- return typeof input === "number" && input !== input;
18214
- };
18215
-
18216
- T(); // d3 mutates state in many places, which is why we have to turn this off.
18217
-
18218
- cn(false);
18219
-
18220
- /**
18221
- * d3.selection plugin to simplify creating idempotent divs that are not
18222
- * recreated when rendered again.
18223
- *
18224
- * @see https://github.com/mbostock/d3/wiki/Selections
18225
- *
18226
- * @param {String} key - the name of the group
18227
- * @return {d3.selection}
18228
- */
18229
-
18230
- d3.selection.prototype.selectDiv = function (key) {
18231
- var div = this.selectAll('[data-d3-selectdiv="' + key + '"]').data(function (d) {
18232
- return [d];
18233
- });
18234
- var newDiv = div.enter().append("div").attr("data-d3-selectdiv", key).style("position", "absolute");
18235
- return div.merge(newDiv);
18236
- };
18237
-
18238
- /**
18239
- * d3.selection plugin to simplify creating idempotent groups that are not
18240
- * recreated when rendered again.
18241
- *
18242
- * @see https://github.com/mbostock/d3/wiki/Selections
18243
- *
18244
- * @param {String} key The name of the group
18245
- * @return {d3.selection}
18246
- */
18247
-
18248
- d3.selection.prototype.selectGroup = function (key) {
18249
- var group = this.selectAll('[data-d3-selectgroup="' + key + '"]').data(function (d) {
18250
- return [d];
17298
+ }); // The innerSVG DOM property for SVGElement.
17299
+
17300
+ Object.defineProperty(SVGElement.prototype, "innerSVG", {
17301
+ get: function get() {
17302
+ return this.innerHTML;
17303
+ },
17304
+ set: function set(markupText) {
17305
+ this.innerHTML = markupText;
17306
+ }
18251
17307
  });
18252
- var newGroup = group.enter().append("g").attr("data-d3-selectgroup", key);
18253
- return group.merge(newGroup);
18254
- };
17308
+ })();
18255
17309
 
18256
17310
  /**
18257
17311
  * A collection of functional programming helper functions
@@ -18423,7 +17477,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
18423
17477
  */
18424
17478
 
18425
17479
  var defined = function defined(val) {
18426
- return typeof val !== "undefined" && val != null && !Number.isNaN(val);
17480
+ return typeof val !== "undefined" && val != null;
18427
17481
  };
18428
17482
  /**
18429
17483
  * fn.derivedSet
@@ -18663,7 +17717,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
18663
17717
  */
18664
17718
 
18665
17719
  var isNumber = function isNumber(val) {
18666
- return Object.prototype.toString.call(val) === "[object Number]" && !Number.isNaN(val);
17720
+ return Object.prototype.toString.call(val) === "[object Number]";
18667
17721
  };
18668
17722
  /**
18669
17723
  * fn.isObject
@@ -18939,22 +17993,10 @@ var sszvis = createCommonjsModule(function (module, exports) {
18939
17993
  };
18940
17994
  }
18941
17995
 
18942
- var darkBlue = "#3431DE";
18943
- var mediumBlue = "#0A8DF6";
18944
- var lightBlue = "#23C3F1";
18945
- var darkRed = "#7B4FB7";
18946
- var mediumRed = "#DB247D";
18947
- var lightRed = "#FB737E";
18948
- var darkGreen = "#007C78";
18949
- var mediumGreen = "#1D942E";
18950
- var lightGreen = "#99C32E";
18951
- var darkBrown = "#9A5B01";
18952
- var mediumBrown = "#FF720C";
18953
- var lightBrown = "#FBB900";
18954
- var scaleQual12 = qualColorScale([darkBlue, mediumBlue, lightBlue, darkRed, mediumRed, lightRed, darkGreen, mediumGreen, lightGreen, darkBrown, mediumBrown, lightBrown]);
18955
- var scaleQual6 = qualColorScale([darkBlue, mediumRed, mediumGreen, lightBrown, lightBlue, mediumBrown]);
18956
- var scaleQual6a = qualColorScale([darkBlue, mediumBlue, lightBlue, darkRed, mediumRed, lightRed]);
18957
- var scaleQual6b = qualColorScale([darkGreen, mediumGreen, lightGreen, darkBrown, mediumBrown, lightBrown]);
17996
+ var scaleQual12 = qualColorScale(["#5182B3", "#B8CFE6", "#60BF97", "#B8E6D2", "#94BF69", "#CFE6B8", "#E6CF73", "#FAEBAF", "#E67D73", "#F2CEC2", "#CC6788", "#E6B7C7"]);
17997
+ var scaleQual6 = qualColorScale(["#5182B3", "#60BF97", "#94BF69", "#E6CF73", "#E67D73", "#CC6788"]);
17998
+ var scaleQual6a = qualColorScale(["#5182B3", "#B8CFE6", "#60BF97", "#B8E6D2", "#94BF69", "#CFE6B8"]);
17999
+ var scaleQual6b = qualColorScale(["#E6CF73", "#FAEBAF", "#E67D73", "#F2CEC2", "#CC6788", "#E6B7C7"]);
18958
18000
 
18959
18001
  function seqColorScale(colors) {
18960
18002
  return function () {
@@ -18963,10 +18005,10 @@ var sszvis = createCommonjsModule(function (module, exports) {
18963
18005
  };
18964
18006
  }
18965
18007
 
18966
- var scaleSeqBlu = seqColorScale(["#CADEFF", "#5B6EFF", "#211A8A"]);
18967
- var scaleSeqRed = seqColorScale(["#FED2EE", "#ED408D", "#7D0044"]);
18968
- var scaleSeqGrn = seqColorScale(["#CFEED8", "#34B446", "#0C4B1F"]);
18969
- var scaleSeqBrn = seqColorScale(["#FCDDBB", "#EA5D00", "#611F00"]);
18008
+ var scaleSeqBlu = seqColorScale(["#DDE9FE", "#3B76B3", "#343F4D"]);
18009
+ var scaleSeqRed = seqColorScale(["#FEECEC", "#CC6171", "#4D353A"]);
18010
+ var scaleSeqGrn = seqColorScale(["#D2DFDE", "#4A807C", "#2C3C3F"]);
18011
+ var scaleSeqBrn = seqColorScale(["#E9DFD6", "#A67D5A", "#4C3735"]);
18970
18012
 
18971
18013
  function divColorScale(colors) {
18972
18014
  return function () {
@@ -18975,10 +18017,10 @@ var sszvis = createCommonjsModule(function (module, exports) {
18975
18017
  };
18976
18018
  }
18977
18019
 
18978
- var scaleDivVal = divColorScale(["#782600", "#FFFFFF", "#2F2ABB"]);
18979
- var scaleDivValGry = divColorScale(["#782600", "#F3F3F3", "#2F2ABB"]);
18980
- var scaleDivNtr = divColorScale(["#A30059", "#FFFFFF", "#10652A"]);
18981
- var scaleDivNtrGry = divColorScale(["#A30059", "#F3F3F3", "#10652A"]);
18020
+ var scaleDivVal = divColorScale(["#CC6171", "#FFFFFF", "#3B76B3"]);
18021
+ var scaleDivValGry = divColorScale(["#CC6171", "#F3F3F3", "#3B76B3"]);
18022
+ var scaleDivNtr = divColorScale(["#A67D5A", "#FFFFFF", "#4A807C"]);
18023
+ var scaleDivNtrGry = divColorScale(["#A67D5A", "#F3F3F3", "#4A807C"]);
18982
18024
 
18983
18025
  function greyColorScale(colors) {
18984
18026
  return function () {
@@ -19827,7 +18869,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
19827
18869
  * @return {sszvis.component}
19828
18870
  */
19829
18871
  function rangeRuler () {
19830
- 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) {
18872
+ 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) {
19831
18873
  var selection = d3.select(this);
19832
18874
  var props = selection.props();
19833
18875
  var crispX = compose(halfPixel, props.x);
@@ -19866,11 +18908,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
19866
18908
  .style("text-anchor", function (d) {
19867
18909
  return props.flip(d) ? "end" : "start";
19868
18910
  }).text(compose(formatNumber, props.label));
19869
-
19870
- if (!props.removeStroke) {
19871
- marks.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
19872
- }
19873
-
19874
18911
  var total = selection.selectAll(".sszvis-rangeRuler__total").data([last(data)]);
19875
18912
  var newTotal = total.enter().append("text").classed("sszvis-rangeRuler__total", true);
19876
18913
  total.exit().remove();
@@ -19881,10 +18918,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
19881
18918
  }).attr("y", props.top - 10).style("text-anchor", function (d) {
19882
18919
  return props.flip(d) ? "end" : "start";
19883
18920
  }).text("Total " + formatNumber(props.total));
19884
-
19885
- if (!props.removeStroke) {
19886
- total.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
19887
- }
19888
18921
  });
19889
18922
  }
19890
18923
 
@@ -20219,367 +19252,129 @@ var sszvis = createCommonjsModule(function (module, exports) {
20219
19252
  * formatTable
20220
19253
  */
20221
19254
 
20222
-
20223
- function formatTable(rows) {
20224
- var tableBody = rows.map(function (row) {
20225
- return "<tr>" + row.map(function (cell) {
20226
- return "<td>" + cell + "</td>";
20227
- }).join("") + "</tr>";
20228
- }).join("");
20229
- return '<table class="sszvis-tooltip__body__table">' + tableBody + "</table>";
20230
- }
20231
- /**
20232
- * Tooltip background generator
20233
- *
20234
- * Generates a path description with a tip on the specified side.
20235
- *
20236
- * top
20237
- * ________
20238
- * left | | right
20239
- * |___ ___|
20240
- * \/
20241
- * bottom
20242
- *
20243
- * @param {Vector} a Top-left corner of the tooltip rectangle (x, y)
20244
- * @param {Vector} b Bottom-right corner of the tooltip rectangle (x, y)
20245
- * @param {String} orientation The tip will point in this direction (top, right, bottom, left)
20246
- *
20247
- * @return {Path} SVG path description
20248
- */
20249
-
20250
-
20251
- function tooltipBackgroundGenerator(a, b, orientation, radius) {
20252
- switch (orientation) {
20253
- case "top":
20254
- a[1] = a[1] + TIP_SIZE;
20255
- break;
20256
-
20257
- case "bottom":
20258
- b[1] = b[1] - TIP_SIZE;
20259
- break;
20260
-
20261
- case "left":
20262
- a[0] = a[0] + TIP_SIZE;
20263
- break;
20264
-
20265
- case "right":
20266
- b[0] = b[0] - TIP_SIZE;
20267
- break;
20268
- }
20269
-
20270
- function x(d) {
20271
- return d[0];
20272
- }
20273
-
20274
- function y(d) {
20275
- return d[1];
20276
- }
20277
-
20278
- function side(cx, cy, x0, y0, x1, y1, showTip) {
20279
- var mx = x0 + (x1 - x0) / 2;
20280
- var my = y0 + (y1 - y0) / 2;
20281
- var corner = ["Q", cx, cy, x0, y0];
20282
- var tip = [];
20283
-
20284
- if (showTip && y0 === y1) {
20285
- if (x0 < x1) {
20286
- // Top
20287
- tip = ["L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my];
20288
- } else {
20289
- // Bottom
20290
- tip = ["L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my];
20291
- }
20292
- } else if (showTip && x0 === x1) {
20293
- if (y0 < y1) {
20294
- // Right
20295
- tip = ["L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE];
20296
- } else {
20297
- // Left
20298
- tip = ["L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE];
20299
- }
20300
- }
20301
-
20302
- var end = ["L", x1, y1];
20303
- return [].concat(corner, tip, end);
20304
- }
20305
-
20306
- return [// Start
20307
- ["M", x(a), y(a) + radius], // Top side
20308
- side(x(a), y(a), x(a) + radius, y(a), x(b) - radius, y(a), orientation === "top"), // Right side
20309
- side(x(b), y(a), x(b), y(a) + radius, x(b), y(b) - radius, orientation === "right"), // Bottom side
20310
- side(x(b), y(b), x(b) - radius, y(b), x(a) + radius, y(b), orientation === "bottom"), // Left side
20311
- side(x(a), y(b), x(a), y(b) - radius, x(a), y(a) + radius, orientation === "left")].map(function (d) {
20312
- return d.join(" ");
20313
- }).join(" ");
20314
- }
20315
- /**
20316
- * Detect whether the current browser supports SVG filters
20317
- */
20318
-
20319
-
20320
- function supportsSVGFilters() {
20321
- return window["SVGFEColorMatrixElement"] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
20322
- }
20323
-
20324
- /**
20325
- * @function sszvis.tooltipFit
20326
- *
20327
- * This is a useful default function for making a tooltip fit within a horizontal space.
20328
- * You provide a default orientation for the tooltip, but also provide the bounds of the
20329
- * space within which the tooltip should stay. When the tooltip is too close to the left
20330
- * or right edge of the bounds, it is oriented away from the edge. Otherwise the default
20331
- * is used.
20332
- *
20333
- * @param {String} defaultValue The default value for the tooltip orientation
20334
- * @param {Object} bounds The bounds object within which the tooltip should stay.
20335
- *
20336
- * @returns {Function} A function for calculating the orientation of the tooltips.
20337
- */
20338
- function fitTooltip (defaultVal, bounds) {
20339
- var lo = Math.min(bounds.innerWidth * 1 / 4, 100);
20340
- var hi = Math.max(bounds.innerWidth * 3 / 4, bounds.innerWidth - 100);
20341
- return function (d) {
20342
- var x = d.x;
20343
- return x > hi ? "right" : x < lo ? "left" : defaultVal;
20344
- };
20345
- }
20346
-
20347
- /**
20348
- * Fallback handling
20349
- *
20350
- * Defaults to rendering a fallback image with standard chart proportions.
20351
- *
20352
- * @example
20353
- * if (sszvis.fallback.unsupported()) {
20354
- * sszvis.fallback.render('#sszvis-chart', {src: '../fallback.png', height: 300});
20355
- * return;
20356
- * }
20357
- *
20358
- * @module sszvis/fallback
20359
- */
20360
- var fallbackUnsupported = function fallbackUnsupported() {
20361
- var supportsSVG = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect;
20362
- return !supportsSVG;
20363
- };
20364
- var fallbackCanvasUnsupported = function fallbackCanvasUnsupported() {
20365
- var supportsCanvas = !!document.createElement("canvas").getContext;
20366
- return !supportsCanvas;
20367
- };
20368
- var fallbackRender = function fallbackRender(selector, options) {
20369
- options || (options = {});
20370
- options.src || (options.src = "fallback.png");
20371
- var selection = isSelection(selector) ? selector : d3.select(selector);
20372
- selection.append("img").attr("class", "sszvis-fallback-image").attr("src", options.src);
20373
- };
20374
-
20375
- var nanoThrottle = function (callback, ms, trailing) {
20376
- var t = 0, call;
20377
- arguments.length < 3 && (trailing = true);
20378
- return function () {
20379
- var args = arguments;
20380
- var self = this;
20381
- call = function () {
20382
- callback.apply(self, args);
20383
- t = new Date().getTime() + ms;
20384
- call = null;
20385
- trailing && setTimeout(function () {
20386
- call && call();
20387
- }, ms);
20388
- };
20389
- if (new Date().getTime() > t) call();
20390
- }
20391
- };
20392
-
20393
- /**
20394
- * Viewport Resize watcher
20395
- *
20396
- * The resize watcher in the sszvis.viewport module can be used for alerting user code to
20397
- * changes in the browser window size. This includes window resizing on desktop computers
20398
- * and browsers, but also orientation changes on mobile browsers. Functions which listen
20399
- * to the 'resize' event of the sszvis.viewport module will be fired on window resize.
20400
- * You can add a resize listener to your application very easily:
20401
- *
20402
- * sszvis.viewport.on('resize', listenerFunction);
20403
- *
20404
- * The listener function will be called once per resize event, but at a slight delay. This is because,
20405
- * while a user is resizing their browser window, many resize events can fire very quickly. This component
20406
- * automatically throttles the rate at which the listener function is called, since you probably don't need
20407
- * to respond to every single resize event. This throttling provides for a smoother user experience as they
20408
- * resize the browser, and increases performance across the board. The listener function will always be
20409
- * called after one or more window resize events, it just won't be called as often as the window fires the
20410
- * events.
20411
- *
20412
- * @module sszvis/viewport
20413
- *
20414
- * @function {string, function} on the .on() function is used to listen to the resize event itself.
20415
- * There is only one event supported by this component at the moment, so
20416
- * the first argument to .on must be 'resize' for it to have any effect.
20417
- * Although this is somewhat redundant, it is done to keep this component's
20418
- * API clear and in line with other components.
20419
- *
20420
- * @return {Object}
20421
- */
20422
- // sszvis.viewport.on('resize', callback);
20423
- // While still enabling the user to register multiple callbacks for the 'resize'
20424
- // event. Multiple callbacks are a feature which simply returning a d3.dispatch('resize')
20425
- // object would not allow.
20426
-
20427
- var callbacks = {
20428
- resize: []
20429
- };
20430
-
20431
- if (typeof window !== "undefined") {
20432
- d3.select(window).on("resize", nanoThrottle(function () {
20433
- trigger("resize");
20434
- }, 500));
20435
- }
20436
-
20437
- var on$1 = function on(name, cb) {
20438
- if (!callbacks[name]) {
20439
- callbacks[name] = [];
20440
- }
20441
-
20442
- callbacks[name] = callbacks[name].filter(function (fn) {
20443
- return fn !== cb;
20444
- }).concat(cb);
20445
- return this;
20446
- };
20447
-
20448
- var off = function off(name, cb) {
20449
- if (!callbacks[name]) {
20450
- return this;
20451
- }
20452
-
20453
- callbacks[name] = callbacks[name].filter(function (fn) {
20454
- return fn !== cb;
20455
- });
20456
- return this;
20457
- };
20458
-
20459
- var trigger = function trigger(name) {
20460
- var evtArgs = Array.prototype.slice.call(arguments, 1);
20461
-
20462
- if (callbacks[name]) {
20463
- callbacks[name].forEach(function (fn) {
20464
- fn.apply(null, evtArgs);
20465
- });
20466
- }
20467
-
20468
- return this;
20469
- };
20470
-
20471
- var viewport = {
20472
- on: on$1,
20473
- off: off,
20474
- trigger: trigger
20475
- };
20476
-
19255
+
19256
+ function formatTable(rows) {
19257
+ var tableBody = rows.map(function (row) {
19258
+ return "<tr>" + row.map(function (cell) {
19259
+ return "<td>" + cell + "</td>";
19260
+ }).join("") + "</tr>";
19261
+ }).join("");
19262
+ return '<table class="sszvis-tooltip__body__table">' + tableBody + "</table>";
19263
+ }
20477
19264
  /**
20478
- * Application loop
20479
- *
20480
- * Creates a stateful app that can be interacted with through actions. By providing
20481
- * a structured approach, this allows us to optimize the render loop and clarifies
20482
- * the relationship between state and actions.
20483
- *
20484
- * Within an app, state can only be modified through actions. During the render phase,
20485
- * state is immutable and an error will be thrown if it is modified accidentally.
20486
- *
20487
- * Conceptually, an app works like this:
20488
- *
20489
- * init
20490
- * ⇣
20491
- * state ⭢ render
20492
- * ⮤ action ⮠
20493
- *
20494
- * The basis of an app are the following three types:
20495
- *
20496
- * Dispatch can be used to schedule an action after rendering has been completed. In the
20497
- * render function, dispatch is not directly accessible; instead, an actions object is
20498
- * provided to dispatch actions by calling them as functions.
20499
- * @typedef {(action: string, p?: Props) => void} Dispatch
20500
- *
20501
- * An effect can be returned from an action to schedule further actions using dispatch.
20502
- * @typedef {(d: Dispatch, p?: Props) => void} Effect
19265
+ * Tooltip background generator
20503
19266
  *
20504
- * An action receives an Immer.js Draft that can be mutated within the action. If further
20505
- * actions should be called after this one, an action can return an Effect.
20506
- * @typedef {(s: Draft, p?: Props) => Effect | void} Action
20507
- * @see {@link https://immerjs.github.io/immer/docs/produce/}
19267
+ * Generates a path description with a tip on the specified side.
20508
19268
  *
20509
- * The app can be configured with the following props:
19269
+ * top
19270
+ * ________
19271
+ * left | | right
19272
+ * |___ ___|
19273
+ * \/
19274
+ * bottom
20510
19275
  *
20511
- * @prop {Object} props
20512
- * @prop {(s: Draft) => Promise<Effect | void>} props.init - Asynchronously create
20513
- * the initial state and optionally schedule an action
20514
- * @prop {(s: State, as: Record<keyof props.actions, (p?: Props) => void>)} props.render - Update
20515
- * the DOM from the state and optionally dispatch actions
20516
- * @prop {Record<string, Action>} [props.actions] - Functions to transition the
20517
- * application state
20518
- * @prop {{element: string, src: string}} [props.fallback] - Render a fallback image
19276
+ * @param {Vector} a Top-left corner of the tooltip rectangle (x, y)
19277
+ * @param {Vector} b Bottom-right corner of the tooltip rectangle (x, y)
19278
+ * @param {String} orientation The tip will point in this direction (top, right, bottom, left)
20519
19279
  *
20520
- * @module sszvis/app
19280
+ * @return {Path} SVG path description
20521
19281
  */
20522
19282
 
20523
- var app = function app(_ref) {
20524
- var init = _ref.init,
20525
- render = _ref.render,
20526
- _ref$actions = _ref.actions,
20527
- actions = _ref$actions === void 0 ? {} : _ref$actions,
20528
- fallback = _ref.fallback;
20529
- var doing;
20530
- var state;
20531
- invariant(isFunction$1(init), 'An "init" function returning a Promise must be provided.');
20532
- invariant(isFunction$1(render), 'A "render" function must be provided.');
20533
- var actionDispatchers = Object.keys(actions).reduce(function (acc, key) {
20534
- acc[key] = function (args) {
20535
- dispatch(key, args);
20536
- };
20537
19283
 
20538
- return acc;
20539
- }, {});
19284
+ function tooltipBackgroundGenerator(a, b, orientation, radius) {
19285
+ switch (orientation) {
19286
+ case "top":
19287
+ a[1] = a[1] + TIP_SIZE;
19288
+ break;
20540
19289
 
20541
- function scheduleUpdate(effect) {
20542
- if (!doing) {
20543
- doing = true;
20544
- requestAnimationFrame(function () {
20545
- render(state, actionDispatchers);
20546
- doing = false;
20547
- });
20548
- }
19290
+ case "bottom":
19291
+ b[1] = b[1] - TIP_SIZE;
19292
+ break;
19293
+
19294
+ case "left":
19295
+ a[0] = a[0] + TIP_SIZE;
19296
+ break;
19297
+
19298
+ case "right":
19299
+ b[0] = b[0] - TIP_SIZE;
19300
+ break;
19301
+ }
20549
19302
 
20550
- if (isFunction$1(effect)) effect(dispatch);
19303
+ function x(d) {
19304
+ return d[0];
20551
19305
  }
20552
19306
 
20553
- function dispatch(action, props) {
20554
- invariant(actions[action] != null, "Action \"".concat(action, "\" is not defined, add it to \"actions\"."));
20555
- var draft = pn(state);
20556
- var effect = actions[action](draft, props);
20557
- state = ln(draft);
20558
- scheduleUpdate(effect);
19307
+ function y(d) {
19308
+ return d[1];
20559
19309
  }
20560
19310
 
20561
- var initialState = pn({});
20562
- init(initialState).then(function (effect) {
20563
- state = ln(initialState);
20564
- scheduleUpdate(effect);
20565
- viewport.on("resize", scheduleUpdate);
20566
- }).catch(function (err) {
20567
- invariant(false, err);
20568
- fallback && fallbackRender(fallback.element, {
20569
- src: fallback.src
20570
- });
20571
- });
20572
- }; // -----------------------------------------------------------------------------
20573
- // Helper functions
19311
+ function side(cx, cy, x0, y0, x1, y1, showTip) {
19312
+ var mx = x0 + (x1 - x0) / 2;
19313
+ var my = y0 + (y1 - y0) / 2;
19314
+ var corner = ["Q", cx, cy, x0, y0];
19315
+ var tip = [];
19316
+
19317
+ if (showTip && y0 === y1) {
19318
+ if (x0 < x1) {
19319
+ // Top
19320
+ tip = ["L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my];
19321
+ } else {
19322
+ // Bottom
19323
+ tip = ["L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my];
19324
+ }
19325
+ } else if (showTip && x0 === x1) {
19326
+ if (y0 < y1) {
19327
+ // Right
19328
+ tip = ["L", mx, my - TIP_SIZE, "L", mx + TIP_SIZE, my, "L", mx, my + TIP_SIZE];
19329
+ } else {
19330
+ // Left
19331
+ tip = ["L", mx, my + TIP_SIZE, "L", mx - TIP_SIZE, my, "L", mx, my - TIP_SIZE];
19332
+ }
19333
+ }
20574
19334
 
20575
- function invariant(condition, message) {
20576
- if (!condition) {
20577
- throw new Error("[sszvis.app] ".concat(message));
19335
+ var end = ["L", x1, y1];
19336
+ return [].concat(corner, tip, end);
20578
19337
  }
19338
+
19339
+ return [// Start
19340
+ ["M", x(a), y(a) + radius], // Top side
19341
+ side(x(a), y(a), x(a) + radius, y(a), x(b) - radius, y(a), orientation === "top"), // Right side
19342
+ side(x(b), y(a), x(b), y(a) + radius, x(b), y(b) - radius, orientation === "right"), // Bottom side
19343
+ side(x(b), y(b), x(b) - radius, y(b), x(a) + radius, y(b), orientation === "bottom"), // Left side
19344
+ side(x(a), y(b), x(a), y(b) - radius, x(a), y(a) + radius, orientation === "left")].map(function (d) {
19345
+ return d.join(" ");
19346
+ }).join(" ");
19347
+ }
19348
+ /**
19349
+ * Detect whether the current browser supports SVG filters
19350
+ */
19351
+
19352
+
19353
+ function supportsSVGFilters() {
19354
+ return window["SVGFEColorMatrixElement"] !== undefined && SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE == 2;
20579
19355
  }
20580
19356
 
20581
- function isFunction$1(x) {
20582
- return typeof x === "function";
19357
+ /**
19358
+ * @function sszvis.tooltipFit
19359
+ *
19360
+ * This is a useful default function for making a tooltip fit within a horizontal space.
19361
+ * You provide a default orientation for the tooltip, but also provide the bounds of the
19362
+ * space within which the tooltip should stay. When the tooltip is too close to the left
19363
+ * or right edge of the bounds, it is oriented away from the edge. Otherwise the default
19364
+ * is used.
19365
+ *
19366
+ * @param {String} defaultValue The default value for the tooltip orientation
19367
+ * @param {Object} bounds The bounds object within which the tooltip should stay.
19368
+ *
19369
+ * @returns {Function} A function for calculating the orientation of the tooltips.
19370
+ */
19371
+ function fitTooltip (defaultVal, bounds) {
19372
+ var lo = Math.min(bounds.innerWidth * 1 / 4, 100);
19373
+ var hi = Math.max(bounds.innerWidth * 3 / 4, bounds.innerWidth - 100);
19374
+ return function (d) {
19375
+ var x = d.x;
19376
+ return x > hi ? "right" : x < lo ? "left" : defaultVal;
19377
+ };
20583
19378
  }
20584
19379
 
20585
19380
  /**
@@ -21177,7 +19972,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
21177
19972
  *
21178
19973
  * @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.
21179
19974
  * @property {boolean} contour Specify a 'contour' background for the axis labels.
21180
- * @property {boolean} removeStroke Removes the default stroke applied to the text
21181
19975
  * @property {number} hideBorderTickThreshold Specifies the pixel distance threshold for the visible tick correction. Ticks which are closer than
21182
19976
  * this threshold to the end of the axis (i.e. a tick which is 1 or two pixels from the end) will be
21183
19977
  * hidden from view. This prevents the display of a tick very close to the ending line.
@@ -21212,7 +20006,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
21212
20006
  var axis = function axis() {
21213
20007
  // var axisDelegate = d3.axisBottom();
21214
20008
  // axisDelegate.orient = function() { return 'bottom'; };
21215
- 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
20009
+ 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
21216
20010
  .prop("titleCenter") // a boolean value - whether to center the title
21217
20011
  .prop("dxTitle") // a numeric value for the left offset of the title
21218
20012
  .prop("dyTitle") // a numeric value for the top offset of the title
@@ -21456,14 +20250,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
21456
20250
  textContour.text(textNode.textContent);
21457
20251
  });
21458
20252
  }
21459
-
21460
- if (!props.removeStroke) {
21461
- tickGroups.each(function () {
21462
- var g = d3.select(this);
21463
- var textNode = g.select("text");
21464
- textNode.attr("stroke", "white").attr("stroke-width", 0.5).attr("stroke-opacity", 0.75);
21465
- });
21466
- }
21467
20253
  }); // axisComponent.__delegate__ = axisDelegate;
21468
20254
 
21469
20255
  return axisComponent;
@@ -22856,7 +21642,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
22856
21642
  return component().prop("radius").prop("fill").prop("stroke").prop("angle", functor).render(function (data) {
22857
21643
  var selection = d3.select(this);
22858
21644
  var props = selection.props();
22859
- var stroke = props.stroke || "#FFFFFF";
22860
21645
  var angle = 0;
22861
21646
  data.forEach(function (value) {
22862
21647
  // In order for an angle transition to work correctly in d3, the transition must be done in data space.
@@ -22887,7 +21672,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
22887
21672
  data[i].a1 = d.a1;
22888
21673
  }
22889
21674
  }).data(data);
22890
- var newSegments = segments.enter().append("path").classed("sszvis-path", true).attr("transform", "translate(" + props.radius + "," + props.radius + ")").attr("fill", props.fill).attr("stroke", stroke);
21675
+ 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);
22891
21676
  segments.exit().remove();
22892
21677
  segments = segments.merge(newSegments);
22893
21678
  segments.transition(defaultTransition()).attr("transform", "translate(" + props.radius + "," + props.radius + ")").attrTween("d", function (d) {
@@ -22898,7 +21683,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
22898
21683
  d.a1 = angle1Interp(t);
22899
21684
  return arcGen(d);
22900
21685
  };
22901
- }).attr("fill", props.fill).attr("stroke", stroke);
21686
+ }).attr("fill", props.fill).attr("stroke", props.stroke);
22902
21687
  var ta = tooltipAnchor().position(function (d) {
22903
21688
  // The correction by - Math.PI / 2 is necessary because d3 automatically (and with brief, buried documentation!)
22904
21689
  // makes the same correction to svg.arc() angles :o
@@ -23259,7 +22044,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
23259
22044
  paths = paths.transition(defaultTransition());
23260
22045
  }
23261
22046
 
23262
- paths.attr("d", areaGen).attr("fill", props.fill).attr("stroke", props.stroke || "#ffffff");
22047
+ paths.attr("d", areaGen).attr("fill", props.fill).attr("stroke", props.stroke);
23263
22048
  });
23264
22049
  }
23265
22050
 
@@ -23388,7 +22173,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
23388
22173
  return component().prop("xScale", functor).prop("width", functor).prop("yScale", functor).prop("height", functor).prop("fill").prop("stroke").render(function (data) {
23389
22174
  var selection = d3.select(this);
23390
22175
  var props = selection.props();
23391
- 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");
22176
+ 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);
23392
22177
  var groups = selection.selectAll(".sszvis-stack").data(data);
23393
22178
  var newGroups = groups.enter().append("g").classed("sszvis-stack", true);
23394
22179
  groups.exit().remove();
@@ -24088,6 +22873,34 @@ var sszvis = createCommonjsModule(function (module, exports) {
24088
22873
  return viewport.merge(viewportEnter);
24089
22874
  }
24090
22875
 
22876
+ /**
22877
+ * Fallback handling
22878
+ *
22879
+ * Defaults to rendering a fallback image with standard chart proportions.
22880
+ *
22881
+ * @example
22882
+ * if (sszvis.fallback.unsupported()) {
22883
+ * sszvis.fallback.render('#sszvis-chart', {src: '../fallback.png', height: 300});
22884
+ * return;
22885
+ * }
22886
+ *
22887
+ * @module sszvis/fallback
22888
+ */
22889
+ var fallbackUnsupported = function fallbackUnsupported() {
22890
+ var supportsSVG = !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect;
22891
+ return !supportsSVG;
22892
+ };
22893
+ var fallbackCanvasUnsupported = function fallbackCanvasUnsupported() {
22894
+ var supportsCanvas = !!document.createElement("canvas").getContext;
22895
+ return !supportsCanvas;
22896
+ };
22897
+ var fallbackRender = function fallbackRender(selector, options) {
22898
+ options || (options = {});
22899
+ options.src || (options.src = "fallback.png");
22900
+ var selection = isSelection(selector) ? selector : d3.select(selector);
22901
+ selection.append("img").attr("class", "sszvis-fallback-image").attr("src", options.src);
22902
+ };
22903
+
24091
22904
  /**
24092
22905
  * Ordinal Color Scale Legend
24093
22906
  *
@@ -25530,44 +24343,44 @@ var sszvis = createCommonjsModule(function (module, exports) {
25530
24343
  *
25531
24344
  * @return {sszvis.component}
25532
24345
  */
25533
- var datumAcc = prop("datum");
24346
+ var datumAcc = prop('datum');
25534
24347
  function bubble () {
25535
- var event = d3.dispatch("over", "out", "click");
25536
- 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 () {
24348
+ var event = d3.dispatch('over', 'out', 'click');
24349
+ 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 () {
25537
24350
  var selection = d3.select(this);
25538
24351
  var props = selection.props();
25539
24352
  var radiusAcc = compose(props.radius, datumAcc);
25540
- var anchoredCircles = selection.selectGroup("anchoredCircles").selectAll(".sszvis-anchored-circle").data(props.mergedData, function (d) {
24353
+ var anchoredCircles = selection.selectGroup('anchoredCircles').selectAll('.sszvis-anchored-circle').data(props.mergedData, function (d) {
25541
24354
  return d.geoJson.id;
25542
24355
  });
25543
- anchoredCircles.enter().append("circle").attr("class", "sszvis-anchored-circle sszvis-anchored-circle--entering").attr("r", radiusAcc).on("mouseover", function (d) {
25544
- event.call("over", this, d.datum);
25545
- }).on("mouseout", function (d) {
25546
- event.call("out", this, d.datum);
25547
- }).on("click", function (d) {
25548
- event.call("click", this, d.datum);
25549
- }).merge(anchoredCircles).attr("transform", function (d) {
24356
+ anchoredCircles.enter().append('circle').attr('class', 'sszvis-anchored-circle sszvis-anchored-circle--entering').attr('r', radiusAcc).on('mouseover', function (d) {
24357
+ event.call('over', this, d.datum);
24358
+ }).on('mouseout', function (d) {
24359
+ event.call('out', this, d.datum);
24360
+ }).on('click', function (d) {
24361
+ event.call('click', this, d.datum);
24362
+ }).merge(anchoredCircles).attr('transform', function (d) {
25550
24363
  var position = props.mapPath.projection()(getGeoJsonCenter(d.geoJson));
25551
24364
  return translateString(position[0], position[1]);
25552
- }).style("fill", function (d) {
24365
+ }).style('fill', function (d) {
25553
24366
  return props.fill(d.datum);
25554
- }).style("stroke", function (d) {
24367
+ }).style('stroke', function (d) {
25555
24368
  return props.strokeColor(d.datum);
25556
- }).style("stroke-width", function (d) {
24369
+ }).style('stroke-width', function (d) {
25557
24370
  return props.strokeWidth(d.datum);
25558
24371
  }).sort(function (a, b) {
25559
24372
  return props.radius(b.datum) - props.radius(a.datum);
25560
24373
  }); // Remove the --entering modifier from the updating circles
25561
24374
 
25562
- anchoredCircles.classed("sszvis-anchored-circle--entering", false);
24375
+ anchoredCircles.classed('sszvis-anchored-circle--entering', false);
25563
24376
 
25564
24377
  if (props.transition) {
25565
24378
  var t = defaultTransition();
25566
- anchoredCircles.exit().transition(t).attr("r", 0).remove();
25567
- anchoredCircles.transition(t).attr("r", radiusAcc);
24379
+ anchoredCircles.exit().transition(t).attr('r', 0).remove();
24380
+ anchoredCircles.transition(t).attr('r', radiusAcc);
25568
24381
  } else {
25569
24382
  anchoredCircles.exit().remove();
25570
- anchoredCircles.attr("r", radiusAcc);
24383
+ anchoredCircles.attr('r', radiusAcc);
25571
24384
  }
25572
24385
  });
25573
24386
 
@@ -25602,45 +24415,45 @@ var sszvis = createCommonjsModule(function (module, exports) {
25602
24415
  * @return {sszvis.component}
25603
24416
  */
25604
24417
  function mapRendererBase () {
25605
- 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
25606
- .prop("fill", functor).fill(function () {
25607
- return "black";
24418
+ 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
24419
+ .prop('fill', functor).fill(function () {
24420
+ return 'black';
25608
24421
  }) // a function for the entity fill color. default is black
25609
- .prop("transitionColor").transitionColor(true).render(function () {
24422
+ .prop('transitionColor').transitionColor(true).render(function () {
25610
24423
  var selection = d3.select(this);
25611
24424
  var props = selection.props(); // render the missing value pattern
25612
24425
 
25613
- 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
24426
+ 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
25614
24427
 
25615
24428
  function getMapFill(d) {
25616
- return props.defined(d.datum) ? props.fill(d.datum) : "url(#missing-pattern)";
24429
+ return props.defined(d.datum) ? props.fill(d.datum) : 'url(#missing-pattern)';
25617
24430
  }
25618
24431
 
25619
- var mapAreas = selection.selectAll(".sszvis-map__area").data(props.mergedData); // add the base map paths - these are filled according to the map fill function
24432
+ var mapAreas = selection.selectAll('.sszvis-map__area').data(props.mergedData); // add the base map paths - these are filled according to the map fill function
25620
24433
 
25621
- var newMapAreas = mapAreas.enter().append("path").classed("sszvis-map__area", true).classed("sszvis-map__area--entering", true).attr("data-event-target", "").attr("fill", getMapFill);
25622
- mapAreas.classed("sszvis-map__area--entering", false);
24434
+ var newMapAreas = mapAreas.enter().append('path').classed('sszvis-map__area', true).classed('sszvis-map__area--entering', true).attr('data-event-target', '').attr('fill', getMapFill);
24435
+ mapAreas.classed('sszvis-map__area--entering', false);
25623
24436
  mapAreas.exit().remove();
25624
24437
  mapAreas = mapAreas.merge(newMapAreas);
25625
- selection.selectAll(".sszvis-map__area--undefined").attr("fill", getMapFill); // change the fill if necessary
24438
+ selection.selectAll('.sszvis-map__area--undefined').attr('fill', getMapFill); // change the fill if necessary
25626
24439
 
25627
- mapAreas.classed("sszvis-map__area--undefined", function (d) {
24440
+ mapAreas.classed('sszvis-map__area--undefined', function (d) {
25628
24441
  return !defined(d.datum) || !props.defined(d.datum);
25629
- }).attr("d", function (d) {
24442
+ }).attr('d', function (d) {
25630
24443
  return props.mapPath(d.geoJson);
25631
24444
  });
25632
24445
 
25633
24446
  if (props.transitionColor) {
25634
- mapAreas.transition().call(slowTransition).attr("fill", getMapFill);
24447
+ mapAreas.transition().call(slowTransition).attr('fill', getMapFill);
25635
24448
  } else {
25636
- mapAreas.attr("fill", getMapFill);
24449
+ mapAreas.attr('fill', getMapFill);
25637
24450
  } // the tooltip anchor generator
25638
24451
 
25639
24452
 
25640
24453
  var ta = tooltipAnchor().position(function (d) {
25641
24454
  return props.mapPath.projection()(getGeoJsonCenter(d.geoJson));
25642
24455
  });
25643
- var tooltipGroup = selection.selectGroup("tooltipAnchors").datum(props.mergedData); // attach tooltip anchors
24456
+ var tooltipGroup = selection.selectGroup('tooltipAnchors').datum(props.mergedData); // attach tooltip anchors
25644
24457
 
25645
24458
  tooltipGroup.call(ta);
25646
24459
  });
@@ -25669,12 +24482,12 @@ var sszvis = createCommonjsModule(function (module, exports) {
25669
24482
  * @return {sszvis.component}
25670
24483
  */
25671
24484
  function geojson () {
25672
- var event = d3.dispatch("over", "out", "click");
25673
- 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) {
24485
+ var event = d3.dispatch('over', 'out', 'click');
24486
+ 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) {
25674
24487
  var selection = d3.select(this);
25675
24488
  var props = selection.props(); // render the missing value pattern
25676
24489
 
25677
- ensureDefsElement(selection, "pattern", "missing-pattern").call(mapMissingValuePattern); // getDataKeyName will be called on data values. It should return a map entity id.
24490
+ ensureDefsElement(selection, 'pattern', 'missing-pattern').call(mapMissingValuePattern); // getDataKeyName will be called on data values. It should return a map entity id.
25678
24491
  // getMapKeyName will be called on the 'properties' of each map feature. It should
25679
24492
  // return a map entity id. Data values are matched with corresponding map features using
25680
24493
  // these entity ids.
@@ -25693,36 +24506,36 @@ var sszvis = createCommonjsModule(function (module, exports) {
25693
24506
  });
25694
24507
 
25695
24508
  function getMapFill(d) {
25696
- return defined(d.datum) && props.defined(d.datum) ? props.fill(d.datum) : "url(#missing-pattern)";
24509
+ return defined(d.datum) && props.defined(d.datum) ? props.fill(d.datum) : 'url(#missing-pattern)';
25697
24510
  }
25698
24511
 
25699
24512
  function getMapStroke(d) {
25700
- return defined(d.datum) && props.defined(d.datum) ? props.stroke(d.datum) : "";
24513
+ return defined(d.datum) && props.defined(d.datum) ? props.stroke(d.datum) : '';
25701
24514
  }
25702
24515
 
25703
- var geoElements = selection.selectAll(".sszvis-map__geojsonelement").data(mergedData);
25704
- var newGeoElements = geoElements.enter().append("path").classed("sszvis-map__geojsonelement", true).attr("data-event-target", "").attr("fill", getMapFill);
24516
+ var geoElements = selection.selectAll('.sszvis-map__geojsonelement').data(mergedData);
24517
+ var newGeoElements = geoElements.enter().append('path').classed('sszvis-map__geojsonelement', true).attr('data-event-target', '').attr('fill', getMapFill);
25705
24518
  geoElements.exit().remove();
25706
24519
  geoElements = geoElements.merge(newGeoElements);
25707
- selection.selectAll(".sszvis-map__geojsonelement--undefined").attr("fill", getMapFill);
25708
- geoElements.classed("sszvis-map__geojsonelement--undefined", function (d) {
24520
+ selection.selectAll('.sszvis-map__geojsonelement--undefined').attr('fill', getMapFill);
24521
+ geoElements.classed('sszvis-map__geojsonelement--undefined', function (d) {
25709
24522
  return !defined(d.datum) || !props.defined(d.datum);
25710
- }).attr("d", function (d) {
24523
+ }).attr('d', function (d) {
25711
24524
  return props.mapPath(d.geoJson);
25712
24525
  });
25713
24526
 
25714
24527
  if (props.transitionColor) {
25715
- geoElements.transition().call(slowTransition).attr("fill", getMapFill);
24528
+ geoElements.transition().call(slowTransition).attr('fill', getMapFill);
25716
24529
  } else {
25717
- geoElements.attr("fill", getMapFill);
24530
+ geoElements.attr('fill', getMapFill);
25718
24531
  }
25719
24532
 
25720
- geoElements.attr("stroke", getMapStroke).attr("stroke-width", props.strokeWidth);
25721
- selection.selectAll("[data-event-target]").on("mouseover", function (d) {
24533
+ geoElements.attr('stroke', getMapStroke).attr('stroke-width', props.strokeWidth);
24534
+ selection.selectAll('[data-event-target]').on('mouseover', function (d) {
25722
24535
  event.over(d.datum);
25723
- }).on("mouseout", function (d) {
24536
+ }).on('mouseout', function (d) {
25724
24537
  event.out(d.datum);
25725
- }).on("click", function (d) {
24538
+ }).on('click', function (d) {
25726
24539
  event.click(d.datum);
25727
24540
  }); // the tooltip anchor generator
25728
24541
 
@@ -25736,7 +24549,7 @@ var sszvis = createCommonjsModule(function (module, exports) {
25736
24549
 
25737
24550
  return props.mapPath.projection()(sphericalCentroid);
25738
24551
  });
25739
- var tooltipGroup = selection.selectGroup("tooltipAnchors").datum(mergedData); // attach tooltip anchors
24552
+ var tooltipGroup = selection.selectGroup('tooltipAnchors').datum(mergedData); // attach tooltip anchors
25740
24553
 
25741
24554
  tooltipGroup.call(ta);
25742
24555
  });
@@ -25767,13 +24580,13 @@ var sszvis = createCommonjsModule(function (module, exports) {
25767
24580
  * @return {sszvis.component}
25768
24581
  */
25769
24582
  function mapRendererHighlight () {
25770
- return component().prop("keyName").keyName(GEO_KEY_DEFAULT) // the name of the data key that identifies which map entity it belongs to
25771
- .prop("geoJson").prop("mapPath").prop("highlight").highlight([]) // an array of data values to highlight
25772
- .prop("highlightStroke", functor).highlightStroke("white") // a function for highlighted entity stroke colors (default: white)
25773
- .prop("highlightStrokeWidth", functor).highlightStrokeWidth(2).render(function () {
24583
+ return component().prop('keyName').keyName(GEO_KEY_DEFAULT) // the name of the data key that identifies which map entity it belongs to
24584
+ .prop('geoJson').prop('mapPath').prop('highlight').highlight([]) // an array of data values to highlight
24585
+ .prop('highlightStroke', functor).highlightStroke('white') // a function for highlighted entity stroke colors (default: white)
24586
+ .prop('highlightStrokeWidth', functor).highlightStrokeWidth(2).render(function () {
25774
24587
  var selection = d3.select(this);
25775
24588
  var props = selection.props();
25776
- var highlightBorders = selection.selectAll(".sszvis-map__highlight");
24589
+ var highlightBorders = selection.selectAll('.sszvis-map__highlight');
25777
24590
 
25778
24591
  if (!props.highlight.length) {
25779
24592
  highlightBorders.remove();
@@ -25796,14 +24609,14 @@ var sszvis = createCommonjsModule(function (module, exports) {
25796
24609
  return m;
25797
24610
  }, []);
25798
24611
  highlightBorders = highlightBorders.data(mergedHighlight);
25799
- var newHighlightBorders = highlightBorders.enter().append("path").classed("sszvis-map__highlight", true);
24612
+ var newHighlightBorders = highlightBorders.enter().append('path').classed('sszvis-map__highlight', true);
25800
24613
  highlightBorders.exit().remove();
25801
24614
  highlightBorders = highlightBorders.merge(newHighlightBorders);
25802
- highlightBorders.attr("d", function (d) {
24615
+ highlightBorders.attr('d', function (d) {
25803
24616
  return props.mapPath(d.geoJson);
25804
- }).style("stroke", function (d) {
24617
+ }).style('stroke', function (d) {
25805
24618
  return props.highlightStroke(d.datum);
25806
- }).style("stroke-width", function (d) {
24619
+ }).style('stroke-width', function (d) {
25807
24620
  return props.highlightStrokeWidth(d.datum);
25808
24621
  });
25809
24622
  });
@@ -25837,17 +24650,17 @@ var sszvis = createCommonjsModule(function (module, exports) {
25837
24650
  * @return {sszvis.component}
25838
24651
  */
25839
24652
  function image () {
25840
- return component().prop("projection").prop("src").prop("geoBounds").prop("opacity").opacity(1).render(function () {
24653
+ return component().prop('projection').prop('src').prop('geoBounds').prop('opacity').opacity(1).render(function () {
25841
24654
  var selection = d3.select(this);
25842
24655
  var props = selection.props();
25843
- var image = selection.selectAll(".sszvis-map__image").data([0]); // At the moment, 1 image per container
24656
+ var image = selection.selectAll('.sszvis-map__image').data([0]); // At the moment, 1 image per container
25844
24657
 
25845
- var newImage = image.enter().append("img").classed("sszvis-map__image", true);
24658
+ var newImage = image.enter().append('img').classed('sszvis-map__image', true);
25846
24659
  image.exit().remove();
25847
24660
  image = image.merge(newImage);
25848
24661
  var topLeft = props.projection(props.geoBounds[0]);
25849
24662
  var bottomRight = props.projection(props.geoBounds[1]);
25850
- 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);
24663
+ 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);
25851
24664
  });
25852
24665
  }
25853
24666
 
@@ -25869,16 +24682,16 @@ var sszvis = createCommonjsModule(function (module, exports) {
25869
24682
  * @return {sszvis.component}
25870
24683
  */
25871
24684
  function mapRendererMesh () {
25872
- 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
25873
- .prop("strokeWidth").strokeWidth(1.25).render(function () {
24685
+ 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
24686
+ .prop('strokeWidth').strokeWidth(1.25).render(function () {
25874
24687
  var selection = d3.select(this);
25875
24688
  var props = selection.props(); // add the map borders. These are rendered as one single path element
25876
24689
 
25877
- var meshLine = selection.selectAll(".sszvis-map__border").data([props.geoJson]);
25878
- var newMeshLine = meshLine.enter().append("path").classed("sszvis-map__border", true);
24690
+ var meshLine = selection.selectAll('.sszvis-map__border').data([props.geoJson]);
24691
+ var newMeshLine = meshLine.enter().append('path').classed('sszvis-map__border', true);
25879
24692
  meshLine.exit().remove();
25880
24693
  meshLine = meshLine.merge(newMeshLine);
25881
- meshLine.attr("d", props.mapPath).style("stroke", props.borderColor).style("stroke-width", props.strokeWidth);
24694
+ meshLine.attr('d', props.mapPath).style('stroke', props.borderColor).style('stroke-width', props.strokeWidth);
25882
24695
  });
25883
24696
  }
25884
24697
 
@@ -25899,41 +24712,41 @@ var sszvis = createCommonjsModule(function (module, exports) {
25899
24712
  * @return {sszvis.component}
25900
24713
  */
25901
24714
  function mapRendererPatternedLakeOverlay () {
25902
- return component().prop("mapPath").prop("lakeFeature").prop("lakeBounds").prop("lakePathColor").prop("fadeOut").fadeOut(true).render(function () {
24715
+ return component().prop('mapPath').prop('lakeFeature').prop('lakeBounds').prop('lakePathColor').prop('fadeOut').fadeOut(true).render(function () {
25903
24716
  var selection = d3.select(this);
25904
24717
  var props = selection.props(); // the lake texture
25905
24718
 
25906
- ensureDefsElement(selection, "pattern", "lake-pattern").call(mapLakePattern);
24719
+ ensureDefsElement(selection, 'pattern', 'lake-pattern').call(mapLakePattern);
25907
24720
 
25908
24721
  if (props.fadeOut) {
25909
24722
  // the fade gradient
25910
- ensureDefsElement(selection, "linearGradient", "lake-fade-gradient").call(mapLakeFadeGradient); // the mask, which uses the fade gradient
24723
+ ensureDefsElement(selection, 'linearGradient', 'lake-fade-gradient').call(mapLakeFadeGradient); // the mask, which uses the fade gradient
25911
24724
 
25912
- ensureDefsElement(selection, "mask", "lake-fade-mask").call(mapLakeGradientMask);
24725
+ ensureDefsElement(selection, 'mask', 'lake-fade-mask').call(mapLakeGradientMask);
25913
24726
  } // generate the Lake Zurich path
25914
24727
 
25915
24728
 
25916
- var zurichSee = selection.selectAll(".sszvis-map__lakezurich").data([props.lakeFeature]);
25917
- var newZurichSee = zurichSee.enter().append("path").classed("sszvis-map__lakezurich", true);
24729
+ var zurichSee = selection.selectAll('.sszvis-map__lakezurich').data([props.lakeFeature]);
24730
+ var newZurichSee = zurichSee.enter().append('path').classed('sszvis-map__lakezurich', true);
25918
24731
  zurichSee.exit().remove();
25919
24732
  zurichSee = zurichSee.merge(newZurichSee);
25920
- zurichSee.attr("d", props.mapPath).attr("fill", "url(#lake-pattern)");
24733
+ zurichSee.attr('d', props.mapPath).attr('fill', 'url(#lake-pattern)');
25921
24734
 
25922
24735
  if (props.fadeOut) {
25923
24736
  // this mask applies the fade effect
25924
- zurichSee.attr("mask", "url(#lake-fade-mask)");
24737
+ zurichSee.attr('mask', 'url(#lake-fade-mask)');
25925
24738
  } // add a path for the boundaries of map entities which extend over the lake.
25926
24739
  // This path is rendered as a dotted line over the lake shape
25927
24740
 
25928
24741
 
25929
- var lakePath = selection.selectAll(".sszvis-map__lakepath").data([props.lakeBounds]);
25930
- var newLakePath = lakePath.enter().append("path").classed("sszvis-map__lakepath", true);
24742
+ var lakePath = selection.selectAll('.sszvis-map__lakepath').data([props.lakeBounds]);
24743
+ var newLakePath = lakePath.enter().append('path').classed('sszvis-map__lakepath', true);
25931
24744
  lakePath.exit().remove();
25932
24745
  lakePath = lakePath.merge(newLakePath);
25933
- lakePath.attr("d", props.mapPath);
24746
+ lakePath.attr('d', props.mapPath);
25934
24747
 
25935
24748
  if (props.lakePathColor) {
25936
- lakePath.style("stroke", props.lakePathColor);
24749
+ lakePath.style('stroke', props.lakePathColor);
25937
24750
  }
25938
24751
  });
25939
24752
  }
@@ -25960,21 +24773,21 @@ var sszvis = createCommonjsModule(function (module, exports) {
25960
24773
  * @return {sszvis.component}
25961
24774
  */
25962
24775
  function raster () {
25963
- 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) {
24776
+ 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) {
25964
24777
  var selection = d3.select(this);
25965
24778
  var props = selection.props();
25966
- var canvas = selection.selectAll(".sszvis-map__rasterimage").data([0]);
25967
- var newCanvas = canvas.enter().append("canvas").classed("sszvis-map__rasterimage", true);
24779
+ var canvas = selection.selectAll('.sszvis-map__rasterimage').data([0]);
24780
+ var newCanvas = canvas.enter().append('canvas').classed('sszvis-map__rasterimage', true);
25968
24781
  canvas.exit().remove();
25969
24782
  canvas = canvas.merge(newCanvas);
25970
- canvas.attr("width", props.width).attr("height", props.height).style("opacity", props.opacity);
25971
- var ctx = canvas.node().getContext("2d");
24783
+ canvas.attr('width', props.width).attr('height', props.height).style('opacity', props.opacity);
24784
+ var ctx = canvas.node().getContext('2d');
25972
24785
  ctx.clearRect(0, 0, props.width, props.height);
25973
24786
 
25974
24787
  if (props.debug) {
25975
24788
  // Displays a rectangle that fills the canvas.
25976
24789
  // Useful for checking alignment with other render layers.
25977
- ctx.fillStyle = "rgba(255, 0, 0, 0.2)";
24790
+ ctx.fillStyle = 'rgba(255, 0, 0, 0.2)';
25978
24791
  ctx.fillRect(0, 0, props.width, props.height);
25979
24792
  }
25980
24793
 
@@ -26454,6 +25267,127 @@ var sszvis = createCommonjsModule(function (module, exports) {
26454
25267
  var modularTextHTML = makeTextWithFormat(formatHTML());
26455
25268
  var modularTextSVG = makeTextWithFormat(formatSVG());
26456
25269
 
25270
+ /**
25271
+ * Viewport Resize watcher
25272
+ *
25273
+ * The resize watcher in the sszvis.viewport module can be used for alerting user code to
25274
+ * changes in the browser window size. This includes window resizing on desktop computers
25275
+ * and browsers, but also orientation changes on mobile browsers. Functions which listen
25276
+ * to the 'resize' event of the sszvis.viewport module will be fired on window resize.
25277
+ * You can add a resize listener to your application very easily:
25278
+ *
25279
+ * sszvis.viewport.on('resize', listenerFunction);
25280
+ *
25281
+ * The listener function will be called once per resize event, but at a slight delay. This is because,
25282
+ * while a user is resizing their browser window, many resize events can fire very quickly. This component
25283
+ * automatically throttles the rate at which the listener function is called, since you probably don't need
25284
+ * to respond to every single resize event. This throttling provides for a smoother user experience as they
25285
+ * resize the browser, and increases performance across the board. The listener function will always be
25286
+ * called after one or more window resize events, it just won't be called as often as the window fires the
25287
+ * events.
25288
+ *
25289
+ * @module sszvis/viewport
25290
+ *
25291
+ * @function {string, function} on the .on() function is used to listen to the resize event itself.
25292
+ * There is only one event supported by this component at the moment, so
25293
+ * the first argument to .on must be 'resize' for it to have any effect.
25294
+ * Although this is somewhat redundant, it is done to keep this component's
25295
+ * API clear and in line with other components.
25296
+ *
25297
+ * @return {Object}
25298
+ */
25299
+
25300
+ function throttle(wait, func) {
25301
+ var context, args, result;
25302
+ var timeout = null;
25303
+ var previous = 0;
25304
+
25305
+ var lastCall = function lastCall() {
25306
+ previous = 0;
25307
+ result = func.apply(context, args);
25308
+ timeout = context = args = null;
25309
+ };
25310
+
25311
+ return function () {
25312
+ var now = Date.now();
25313
+ if (!previous) previous = now; // Sets up so that the function isn't called immediately
25314
+
25315
+ var remaining = wait - (now - previous);
25316
+ context = this;
25317
+ args = arguments;
25318
+
25319
+ if (remaining <= 0 || remaining > wait) {
25320
+ if (timeout) {
25321
+ clearTimeout(timeout);
25322
+ timeout = null;
25323
+ }
25324
+
25325
+ previous = now;
25326
+ result = func.apply(context, args);
25327
+ if (!timeout) context = args = null;
25328
+ } else if (!timeout) {
25329
+ timeout = setTimeout(lastCall, remaining);
25330
+ }
25331
+
25332
+ return result;
25333
+ };
25334
+ } // This rather strange set of functions is designed to support the API:
25335
+ // sszvis.viewport.on('resize', callback);
25336
+ // While still enabling the user to register multiple callbacks for the 'resize'
25337
+ // event. Multiple callbacks are a feature which simply returning a d3.dispatch('resize')
25338
+ // object would not allow.
25339
+
25340
+
25341
+ var callbacks = {
25342
+ resize: []
25343
+ };
25344
+
25345
+ if (typeof window !== "undefined") {
25346
+ d3.select(window).on("resize", throttle(500, function () {
25347
+ trigger("resize");
25348
+ }));
25349
+ }
25350
+
25351
+ var on = function on(name, cb) {
25352
+ if (!callbacks[name]) {
25353
+ callbacks[name] = [];
25354
+ }
25355
+
25356
+ callbacks[name] = callbacks[name].filter(function (fn) {
25357
+ return fn !== cb;
25358
+ }).concat(cb);
25359
+ return this;
25360
+ };
25361
+
25362
+ var off = function off(name, cb) {
25363
+ if (!callbacks[name]) {
25364
+ return this;
25365
+ }
25366
+
25367
+ callbacks[name] = callbacks[name].filter(function (fn) {
25368
+ return fn !== cb;
25369
+ });
25370
+ return this;
25371
+ };
25372
+
25373
+ var trigger = function trigger(name) {
25374
+ var evtArgs = Array.prototype.slice.call(arguments, 1);
25375
+
25376
+ if (callbacks[name]) {
25377
+ callbacks[name].forEach(function (fn) {
25378
+ fn.apply(null, evtArgs);
25379
+ });
25380
+ }
25381
+
25382
+ return this;
25383
+ };
25384
+
25385
+ var viewport = {
25386
+ on: on,
25387
+ off: off,
25388
+ trigger: trigger
25389
+ };
25390
+
26457
25391
  exports.AGGLOMERATION_2012_KEY = AGGLOMERATION_2012_KEY;
26458
25392
  exports.DEFAULT_LEGEND_COLOR_ORDINAL_ROW_HEIGHT = DEFAULT_LEGEND_COLOR_ORDINAL_ROW_HEIGHT;
26459
25393
  exports.DEFAULT_WIDTH = DEFAULT_WIDTH;
@@ -26470,7 +25404,6 @@ var sszvis = createCommonjsModule(function (module, exports) {
26470
25404
  exports.annotationRangeRuler = rangeRuler;
26471
25405
  exports.annotationRectangle = rectangle;
26472
25406
  exports.annotationRuler = ruler;
26473
- exports.app = app;
26474
25407
  exports.arity = arity;
26475
25408
  exports.aspectRatio = aspectRatio;
26476
25409
  exports.aspectRatio12to5 = aspectRatio12to5;
@@ -27152,7 +26085,7 @@ const topojson = /*#__PURE__*/Object.freeze({
27152
26085
  untransform: untransform
27153
26086
  });
27154
26087
 
27155
- 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}";
26088
+ 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}";
27156
26089
 
27157
26090
  const StzhChart$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
27158
26091
  constructor() {