@blateral/b.kit 2.8.4 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/cjs/Actions-2590a7b9.js +2 -0
  2. package/cjs/{Actions-c52a14e4.js.map → Actions-2590a7b9.js.map} +1 -1
  3. package/cjs/Bdot-35350767.js +2 -0
  4. package/cjs/{Bdot-62c8e349.js.map → Bdot-35350767.js.map} +1 -1
  5. package/cjs/Button-ddcdefd5.js +2 -0
  6. package/cjs/Button-ddcdefd5.js.map +1 -0
  7. package/cjs/ButtonGhost-22501467.js +2 -0
  8. package/cjs/ButtonGhost-22501467.js.map +1 -0
  9. package/cjs/ButtonLeft-7e1f216a.js +2 -0
  10. package/cjs/ButtonLeft-7e1f216a.js.map +1 -0
  11. package/cjs/Callout-86a61040.js +2 -0
  12. package/cjs/Callout-86a61040.js.map +1 -0
  13. package/cjs/Checkbox-d27880f4.js +2 -0
  14. package/cjs/Checkbox-d27880f4.js.map +1 -0
  15. package/cjs/Control-40e6d4ed.js +2 -0
  16. package/cjs/Control-40e6d4ed.js.map +1 -0
  17. package/cjs/Copy-1b9e33ba.js +2 -0
  18. package/cjs/Copy-1b9e33ba.js.map +1 -0
  19. package/cjs/EventBlock-7dde179c.js +2 -0
  20. package/cjs/EventBlock-7dde179c.js.map +1 -0
  21. package/cjs/FilterBar-238c2290.js +2 -0
  22. package/cjs/FilterBar-238c2290.js.map +1 -0
  23. package/cjs/FilterField-c8dc9450.js +2 -0
  24. package/cjs/{FilterField-d204feb1.js.map → FilterField-c8dc9450.js.map} +1 -1
  25. package/cjs/Grid-dab3343f.js +2 -0
  26. package/cjs/Grid-dab3343f.js.map +1 -0
  27. package/cjs/Image-14b2cb93.js +2 -0
  28. package/cjs/Image-14b2cb93.js.map +1 -0
  29. package/cjs/InfoList-b4f39949.js +2 -0
  30. package/cjs/InfoList-b4f39949.js.map +1 -0
  31. package/cjs/LanguageSwitcher-3ee77117.js +2 -0
  32. package/cjs/{LanguageSwitcher-c6fd04df.js.map → LanguageSwitcher-3ee77117.js.map} +1 -1
  33. package/cjs/LibThemeProvider-878ed68c.js +2 -0
  34. package/cjs/{LibThemeProvider-69109901.js.map → LibThemeProvider-878ed68c.js.map} +1 -1
  35. package/cjs/Link-6e728957.js +2 -0
  36. package/cjs/Link-6e728957.js.map +1 -0
  37. package/cjs/MultiselectDropdown-54cd988f.js +2 -0
  38. package/cjs/MultiselectDropdown-54cd988f.js.map +1 -0
  39. package/cjs/Navigation-2d3590a0.js +2 -0
  40. package/cjs/{Navigation-6c5d9dee.js.map → Navigation-2d3590a0.js.map} +1 -1
  41. package/cjs/PickerAction-ed288096.js +2 -0
  42. package/cjs/PickerAction-ed288096.js.map +1 -0
  43. package/cjs/Pointer-b8875387.js +2 -0
  44. package/cjs/Pointer-b8875387.js.map +1 -0
  45. package/cjs/Section-89240e41.js +2 -0
  46. package/cjs/Section-89240e41.js.map +1 -0
  47. package/cjs/SocialList-f2aca9d8.js +2 -0
  48. package/cjs/{SocialList-73af56b5.js.map → SocialList-f2aca9d8.js.map} +1 -1
  49. package/cjs/TableBlock-8f87c278.js +2 -0
  50. package/cjs/TableBlock-8f87c278.js.map +1 -0
  51. package/cjs/Tag-430477d0.js +2 -0
  52. package/cjs/Tag-430477d0.js.map +1 -0
  53. package/cjs/Textarea-51bea7d0.js +2 -0
  54. package/cjs/Textarea-51bea7d0.js.map +1 -0
  55. package/cjs/Textfield-4ff93649.js +2 -0
  56. package/cjs/Textfield-4ff93649.js.map +1 -0
  57. package/cjs/VideoBlock-087d79b8.js +2 -0
  58. package/cjs/{VideoBlock-0cae22f0.js.map → VideoBlock-087d79b8.js.map} +1 -1
  59. package/cjs/VideoCard-6e2ae7c1.js +2 -0
  60. package/cjs/VideoCard-6e2ae7c1.js.map +1 -0
  61. package/cjs/Wrapper-c755d727.js +2 -0
  62. package/cjs/{Wrapper-bca9463e.js.map → Wrapper-c755d727.js.map} +1 -1
  63. package/cjs/base.js +1 -1
  64. package/cjs/blocks.js +1 -1
  65. package/cjs/buttons.js +1 -1
  66. package/cjs/concat-8bd71a50.js +2 -0
  67. package/cjs/{concat-f387d848.js.map → concat-8bd71a50.js.map} +1 -1
  68. package/cjs/cookies.js +1 -1
  69. package/cjs/cookies.js.map +1 -1
  70. package/cjs/fields.js +1 -1
  71. package/cjs/fields.js.map +1 -1
  72. package/cjs/footer.js +1 -1
  73. package/cjs/footer.js.map +1 -1
  74. package/cjs/formFieldText-fcf0452b.js +2 -0
  75. package/cjs/formFieldText-fcf0452b.js.map +1 -0
  76. package/cjs/headers.js +1 -1
  77. package/cjs/headers.js.map +1 -1
  78. package/cjs/hooks.js +1 -1
  79. package/cjs/hooks.js.map +1 -1
  80. package/cjs/icons.js +1 -1
  81. package/cjs/index.js +1 -1
  82. package/cjs/navigation-ec5cddfc.js +2 -0
  83. package/cjs/{navigation-3f9d4ac4.js.map → navigation-ec5cddfc.js.map} +1 -1
  84. package/cjs/navigation.js +1 -1
  85. package/cjs/navigation.js.map +1 -1
  86. package/cjs/sections.dynamicform.js +1 -1
  87. package/cjs/sections.dynamicform.js.map +1 -1
  88. package/cjs/sections.events.js +1 -1
  89. package/cjs/sections.events.js.map +1 -1
  90. package/cjs/sections.forms.js +1 -1
  91. package/cjs/sections.forms.js.map +1 -1
  92. package/cjs/sections.jobs.js +1 -1
  93. package/cjs/sections.jobs.js.map +1 -1
  94. package/cjs/sections.js +1 -1
  95. package/cjs/sections.js.map +1 -1
  96. package/cjs/sections.news.js +1 -1
  97. package/cjs/sections.news.js.map +1 -1
  98. package/cjs/sections.pois.js +1 -1
  99. package/cjs/sections.pois.js.map +1 -1
  100. package/cjs/structuredData-7c33a463.js +2 -0
  101. package/cjs/structuredData-7c33a463.js.map +1 -0
  102. package/cjs/styles-271afb02.js +2 -0
  103. package/cjs/styles-271afb02.js.map +1 -0
  104. package/cjs/typography.js +1 -1
  105. package/cjs/{urlParams-7525f638.js → urlParams-c412d937.js} +2 -2
  106. package/cjs/{urlParams-7525f638.js.map → urlParams-c412d937.js.map} +1 -1
  107. package/cjs/useCookieConsent-674d004d.js +2 -0
  108. package/cjs/{useCookieConsent-665d91cf.js.map → useCookieConsent-674d004d.js.map} +1 -1
  109. package/cjs/useEqualSheetHeight-7eb7f276.js +2 -0
  110. package/cjs/{useEqualSheetHeight-f1c10ec5.js.map → useEqualSheetHeight-7eb7f276.js.map} +1 -1
  111. package/cjs/useLazyInput-1481445a.js +2 -0
  112. package/cjs/{useLazyInput-911b8eda.js.map → useLazyInput-1481445a.js.map} +1 -1
  113. package/cjs/useLeafletMap-145217ee.js +2 -0
  114. package/cjs/{useLeafletMap-514304b6.js.map → useLeafletMap-145217ee.js.map} +1 -1
  115. package/cjs/useMediaQuery-dd367f98.js +2 -0
  116. package/cjs/{useMediaQuery-619d7203.js.map → useMediaQuery-dd367f98.js.map} +1 -1
  117. package/esm/{Actions-e29b5e75.js → Actions-6859c932.js} +3 -3
  118. package/esm/{Actions-e29b5e75.js.map → Actions-6859c932.js.map} +1 -1
  119. package/esm/{Bdot-5e798e7e.js → Bdot-9e215df7.js} +3 -3
  120. package/esm/{Bdot-5e798e7e.js.map → Bdot-9e215df7.js.map} +1 -1
  121. package/esm/Button-1f634865.js +146 -0
  122. package/esm/Button-1f634865.js.map +1 -0
  123. package/esm/ButtonGhost-476c3826.js +146 -0
  124. package/esm/ButtonGhost-476c3826.js.map +1 -0
  125. package/esm/{Filter-19220970.js → ButtonLeft-a9a132f5.js} +362 -246
  126. package/esm/ButtonLeft-a9a132f5.js.map +1 -0
  127. package/esm/{Callout-46f0bef0.js → Callout-6436d270.js} +8 -6
  128. package/esm/Callout-6436d270.js.map +1 -0
  129. package/esm/{Checkbox-962fea67.js → Checkbox-e7fc7d28.js} +21 -11
  130. package/esm/Checkbox-e7fc7d28.js.map +1 -0
  131. package/esm/Control-84268468.js +44 -0
  132. package/esm/Control-84268468.js.map +1 -0
  133. package/esm/{Copy-fd9e25c0.js → Copy-5a18e01f.js} +27 -9
  134. package/esm/Copy-5a18e01f.js.map +1 -0
  135. package/esm/{EventBlock-12361860.js → EventBlock-0d010725.js} +62 -27
  136. package/esm/EventBlock-0d010725.js.map +1 -0
  137. package/esm/{FilterBar-8c258534.js → FilterBar-d6c1ef40.js} +38 -24
  138. package/esm/FilterBar-d6c1ef40.js.map +1 -0
  139. package/esm/{FilterField-8e64b355.js → FilterField-251b4dad.js} +5 -5
  140. package/esm/{FilterField-8e64b355.js.map → FilterField-251b4dad.js.map} +1 -1
  141. package/esm/{Grid-7b33e271.js → Grid-cbd5e68c.js} +19 -12
  142. package/esm/Grid-cbd5e68c.js.map +1 -0
  143. package/esm/{Image-c67870d4.js → Image-e2018d39.js} +15 -10
  144. package/esm/Image-e2018d39.js.map +1 -0
  145. package/esm/{InfoList-d853db58.js → InfoList-1be2ff46.js} +14 -7
  146. package/esm/InfoList-1be2ff46.js.map +1 -0
  147. package/esm/{LanguageSwitcher-c9aa594a.js → LanguageSwitcher-19482399.js} +5 -5
  148. package/esm/{LanguageSwitcher-c9aa594a.js.map → LanguageSwitcher-19482399.js.map} +1 -1
  149. package/esm/{LibThemeProvider-fb1d35ac.js → LibThemeProvider-48cad3e8.js} +3 -3
  150. package/esm/{LibThemeProvider-fb1d35ac.js.map → LibThemeProvider-48cad3e8.js.map} +1 -1
  151. package/esm/{Link-6067a27f.js → Link-d4a291af.js} +15 -8
  152. package/esm/Link-d4a291af.js.map +1 -0
  153. package/esm/{MultiselectDropdown-61a5a1a6.js → MultiselectDropdown-20b33522.js} +33 -13
  154. package/esm/MultiselectDropdown-20b33522.js.map +1 -0
  155. package/esm/{Navigation-6581bcdf.js → Navigation-d7e14d09.js} +10 -10
  156. package/esm/{Navigation-6581bcdf.js.map → Navigation-d7e14d09.js.map} +1 -1
  157. package/esm/PickerAction-704f2992.js +65 -0
  158. package/esm/PickerAction-704f2992.js.map +1 -0
  159. package/esm/Pointer-41c10bba.js +144 -0
  160. package/esm/Pointer-41c10bba.js.map +1 -0
  161. package/esm/{Section-bd61eb2f.js → Section-ca6daed2.js} +9 -5
  162. package/esm/Section-ca6daed2.js.map +1 -0
  163. package/esm/{SocialList-abaf970d.js → SocialList-d5adb772.js} +5 -5
  164. package/esm/{SocialList-abaf970d.js.map → SocialList-d5adb772.js.map} +1 -1
  165. package/esm/{TableBlock-a65315ca.js → TableBlock-5aad5dd2.js} +63 -115
  166. package/esm/TableBlock-5aad5dd2.js.map +1 -0
  167. package/esm/{Tag-217cd89b.js → Tag-f3f23d9b.js} +9 -13
  168. package/esm/Tag-f3f23d9b.js.map +1 -0
  169. package/esm/{Textarea-60503eb7.js → Textarea-af789d6e.js} +341 -252
  170. package/esm/Textarea-af789d6e.js.map +1 -0
  171. package/esm/{Textfield-e8f48b5f.js → Textfield-1f1ae077.js} +18 -6
  172. package/esm/Textfield-1f1ae077.js.map +1 -0
  173. package/esm/{VideoBlock-3f150172.js → VideoBlock-3c99c5fc.js} +12 -8
  174. package/esm/VideoBlock-3c99c5fc.js.map +1 -0
  175. package/esm/{VideoCard-aa60fbe5.js → VideoCard-dc103fce.js} +29 -24
  176. package/esm/VideoCard-dc103fce.js.map +1 -0
  177. package/esm/{Wrapper-95108115.js → Wrapper-06db8e79.js} +3 -3
  178. package/esm/{Wrapper-95108115.js.map → Wrapper-06db8e79.js.map} +1 -1
  179. package/esm/base.js +6 -6
  180. package/esm/blocks.js +22 -22
  181. package/esm/buttons.js +7 -6
  182. package/esm/buttons.js.map +1 -1
  183. package/esm/{concat-ab3c66f2.js → concat-b6d6d978.js} +2 -2
  184. package/esm/concat-b6d6d978.js.map +1 -0
  185. package/esm/cookies.js +57 -46
  186. package/esm/cookies.js.map +1 -1
  187. package/esm/fields.js +56 -123
  188. package/esm/fields.js.map +1 -1
  189. package/esm/footer.js +15 -13
  190. package/esm/footer.js.map +1 -1
  191. package/esm/{formFieldText-c6fcd370.js → formFieldText-af2106f9.js} +14 -8
  192. package/esm/formFieldText-af2106f9.js.map +1 -0
  193. package/esm/headers.js +21 -17
  194. package/esm/headers.js.map +1 -1
  195. package/esm/hooks.js +12 -12
  196. package/esm/icons.js +5 -2
  197. package/esm/icons.js.map +1 -1
  198. package/esm/index.js +3 -3
  199. package/esm/{navigation-5216dbad.js → navigation-d3d2bf2e.js} +2 -2
  200. package/esm/{navigation-5216dbad.js.map → navigation-d3d2bf2e.js.map} +1 -1
  201. package/esm/navigation.js +12 -12
  202. package/esm/sections.dynamicform.js +29 -33
  203. package/esm/sections.dynamicform.js.map +1 -1
  204. package/esm/sections.events.js +48 -30
  205. package/esm/sections.events.js.map +1 -1
  206. package/esm/sections.forms.js +11 -11
  207. package/esm/sections.jobs.js +99 -45
  208. package/esm/sections.jobs.js.map +1 -1
  209. package/esm/sections.js +537 -259
  210. package/esm/sections.js.map +1 -1
  211. package/esm/sections.news.js +155 -81
  212. package/esm/sections.news.js.map +1 -1
  213. package/esm/sections.pois.js +39 -34
  214. package/esm/sections.pois.js.map +1 -1
  215. package/esm/{structuredData-abf610d8.js → structuredData-73bcbf07.js} +32 -2
  216. package/esm/structuredData-73bcbf07.js.map +1 -0
  217. package/esm/{styles-1f1841ef.js → styles-f3ba5bae.js} +3 -2
  218. package/esm/styles-f3ba5bae.js.map +1 -0
  219. package/esm/typography.js +6 -6
  220. package/esm/{urlParams-9cfdaf71.js → urlParams-e7114d3e.js} +2 -2
  221. package/esm/{urlParams-9cfdaf71.js.map → urlParams-e7114d3e.js.map} +1 -1
  222. package/esm/{useCookieConsent-6661d419.js → useCookieConsent-4b667d40.js} +2 -2
  223. package/esm/{useCookieConsent-6661d419.js.map → useCookieConsent-4b667d40.js.map} +1 -1
  224. package/esm/{useEqualSheetHeight-60ff9de7.js → useEqualSheetHeight-80704864.js} +4 -4
  225. package/esm/{useEqualSheetHeight-60ff9de7.js.map → useEqualSheetHeight-80704864.js.map} +1 -1
  226. package/esm/{useLazyInput-0b6932aa.js → useLazyInput-08ee63f4.js} +2 -2
  227. package/esm/{useLazyInput-0b6932aa.js.map → useLazyInput-08ee63f4.js.map} +1 -1
  228. package/esm/{useLeafletMap-fa0ab7d4.js → useLeafletMap-f9050715.js} +2 -2
  229. package/esm/{useLeafletMap-fa0ab7d4.js.map → useLeafletMap-f9050715.js.map} +1 -1
  230. package/esm/{useMediaQuery-4c1b1fa6.js → useMediaQuery-c9fa1339.js} +3 -3
  231. package/esm/{useMediaQuery-4c1b1fa6.js.map → useMediaQuery-c9fa1339.js.map} +1 -1
  232. package/package.json +1 -1
  233. package/types/buttons.d.ts +1 -0
  234. package/types/buttons.d.ts.map +1 -1
  235. package/types/components/base/Grid.d.ts +3 -0
  236. package/types/components/base/Grid.d.ts.map +1 -1
  237. package/types/components/base/Section.d.ts +3 -1
  238. package/types/components/base/Section.d.ts.map +1 -1
  239. package/types/components/base/icons/ButtonLeft.d.ts +1 -2
  240. package/types/components/base/icons/ButtonLeft.d.ts.map +1 -1
  241. package/types/components/base/icons/ButtonRight.d.ts +1 -2
  242. package/types/components/base/icons/ButtonRight.d.ts.map +1 -1
  243. package/types/components/base/icons/CircleX.d.ts +10 -0
  244. package/types/components/base/icons/CircleX.d.ts.map +1 -0
  245. package/types/components/base/icons/Icons.d.ts +3 -0
  246. package/types/components/base/icons/Icons.d.ts.map +1 -1
  247. package/types/components/blocks/Alert.d.ts.map +1 -1
  248. package/types/components/blocks/CookieConsent.d.ts.map +1 -1
  249. package/types/components/blocks/EventBlock.d.ts +18 -11
  250. package/types/components/blocks/EventBlock.d.ts.map +1 -1
  251. package/types/components/blocks/Feature.d.ts +6 -2
  252. package/types/components/blocks/Feature.d.ts.map +1 -1
  253. package/types/components/blocks/Image.d.ts +2 -0
  254. package/types/components/blocks/Image.d.ts.map +1 -1
  255. package/types/components/blocks/InfoList.d.ts +5 -1
  256. package/types/components/blocks/InfoList.d.ts.map +1 -1
  257. package/types/components/blocks/JobCard.d.ts +4 -0
  258. package/types/components/blocks/JobCard.d.ts.map +1 -1
  259. package/types/components/blocks/NavBlock.d.ts.map +1 -1
  260. package/types/components/blocks/NewsCard.d.ts +20 -9
  261. package/types/components/blocks/NewsCard.d.ts.map +1 -1
  262. package/types/components/blocks/POICard.d.ts +7 -1
  263. package/types/components/blocks/POICard.d.ts.map +1 -1
  264. package/types/components/blocks/POIFacts.d.ts +1 -0
  265. package/types/components/blocks/POIFacts.d.ts.map +1 -1
  266. package/types/components/blocks/PriceTag.d.ts +9 -4
  267. package/types/components/blocks/PriceTag.d.ts.map +1 -1
  268. package/types/components/blocks/PromotionCard.d.ts +2 -2
  269. package/types/components/blocks/PromotionCard.d.ts.map +1 -1
  270. package/types/components/blocks/TableBlock.d.ts +2 -0
  271. package/types/components/blocks/TableBlock.d.ts.map +1 -1
  272. package/types/components/blocks/Tag.d.ts +1 -0
  273. package/types/components/blocks/Tag.d.ts.map +1 -1
  274. package/types/components/blocks/Title.d.ts +5 -0
  275. package/types/components/blocks/Title.d.ts.map +1 -1
  276. package/types/components/blocks/VideoBlock.d.ts +2 -0
  277. package/types/components/blocks/VideoBlock.d.ts.map +1 -1
  278. package/types/components/blocks/VideoCard.d.ts +2 -0
  279. package/types/components/blocks/VideoCard.d.ts.map +1 -1
  280. package/types/components/buttons/Button.d.ts +6 -1
  281. package/types/components/buttons/Button.d.ts.map +1 -1
  282. package/types/components/buttons/ButtonGhost.d.ts +6 -1
  283. package/types/components/buttons/ButtonGhost.d.ts.map +1 -1
  284. package/types/components/buttons/Control.d.ts.map +1 -1
  285. package/types/components/buttons/PickerAction.d.ts +14 -0
  286. package/types/components/buttons/PickerAction.d.ts.map +1 -0
  287. package/types/components/buttons/Pointer.d.ts +6 -2
  288. package/types/components/buttons/Pointer.d.ts.map +1 -1
  289. package/types/components/fields/Checkbox.d.ts +0 -1
  290. package/types/components/fields/Checkbox.d.ts.map +1 -1
  291. package/types/components/fields/CompactForm.d.ts.map +1 -1
  292. package/types/components/fields/Datepicker.d.ts +31 -13
  293. package/types/components/fields/Datepicker.d.ts.map +1 -1
  294. package/types/components/fields/FileUpload.d.ts.map +1 -1
  295. package/types/components/fields/FormField.d.ts +4 -1
  296. package/types/components/fields/FormField.d.ts.map +1 -1
  297. package/types/components/fields/LocationField.d.ts +1 -0
  298. package/types/components/fields/LocationField.d.ts.map +1 -1
  299. package/types/components/fields/MultiselectDropdown.d.ts.map +1 -1
  300. package/types/components/fields/Radio.d.ts +0 -1
  301. package/types/components/fields/Radio.d.ts.map +1 -1
  302. package/types/components/fields/SelectDropdown.d.ts.map +1 -1
  303. package/types/components/fields/Textarea.d.ts.map +1 -1
  304. package/types/components/fields/Textfield.d.ts.map +1 -1
  305. package/types/components/sections/Accordion.d.ts +6 -6
  306. package/types/components/sections/Accordion.d.ts.map +1 -1
  307. package/types/components/sections/AlertList.d.ts +10 -6
  308. package/types/components/sections/AlertList.d.ts.map +1 -1
  309. package/types/components/sections/CallToAction.d.ts +14 -9
  310. package/types/components/sections/CallToAction.d.ts.map +1 -1
  311. package/types/components/sections/CardList.d.ts +19 -14
  312. package/types/components/sections/CardList.d.ts.map +1 -1
  313. package/types/components/sections/ComparisonSlider.d.ts.map +1 -1
  314. package/types/components/sections/CrossPromotion.d.ts +11 -12
  315. package/types/components/sections/CrossPromotion.d.ts.map +1 -1
  316. package/types/components/sections/FactGrid.d.ts +4 -0
  317. package/types/components/sections/FactGrid.d.ts.map +1 -1
  318. package/types/components/sections/FactList.d.ts +13 -0
  319. package/types/components/sections/FactList.d.ts.map +1 -1
  320. package/types/components/sections/FeatureList.d.ts +4 -0
  321. package/types/components/sections/FeatureList.d.ts.map +1 -1
  322. package/types/components/sections/Gallery.d.ts +2 -0
  323. package/types/components/sections/Gallery.d.ts.map +1 -1
  324. package/types/components/sections/IconList.d.ts +4 -0
  325. package/types/components/sections/IconList.d.ts.map +1 -1
  326. package/types/components/sections/IndexList.d.ts +2 -0
  327. package/types/components/sections/IndexList.d.ts.map +1 -1
  328. package/types/components/sections/Map.d.ts +11 -24
  329. package/types/components/sections/Map.d.ts.map +1 -1
  330. package/types/components/sections/NavList.d.ts +2 -0
  331. package/types/components/sections/NavList.d.ts.map +1 -1
  332. package/types/components/sections/NumberList.d.ts +4 -0
  333. package/types/components/sections/NumberList.d.ts.map +1 -1
  334. package/types/components/sections/ParallaxBackground.d.ts.map +1 -1
  335. package/types/components/sections/PriceList.d.ts +18 -0
  336. package/types/components/sections/PriceList.d.ts.map +1 -1
  337. package/types/components/sections/PriceTable.d.ts +6 -2
  338. package/types/components/sections/PriceTable.d.ts.map +1 -1
  339. package/types/components/sections/Quote.d.ts.map +1 -1
  340. package/types/components/sections/RawVideo.d.ts +4 -0
  341. package/types/components/sections/RawVideo.d.ts.map +1 -1
  342. package/types/components/sections/SocialWall.d.ts +13 -12
  343. package/types/components/sections/SocialWall.d.ts.map +1 -1
  344. package/types/components/sections/Table.d.ts +11 -2
  345. package/types/components/sections/Table.d.ts.map +1 -1
  346. package/types/components/sections/Teaser.d.ts.map +1 -1
  347. package/types/components/sections/TeaserWide.d.ts.map +1 -1
  348. package/types/components/sections/Video.d.ts +2 -0
  349. package/types/components/sections/Video.d.ts.map +1 -1
  350. package/types/components/sections/events/EventDetail.d.ts +14 -14
  351. package/types/components/sections/events/EventDetail.d.ts.map +1 -1
  352. package/types/components/sections/events/EventList.d.ts +3 -16
  353. package/types/components/sections/events/EventList.d.ts.map +1 -1
  354. package/types/components/sections/events/EventOverview.d.ts +3 -15
  355. package/types/components/sections/events/EventOverview.d.ts.map +1 -1
  356. package/types/components/sections/form/DynamicForm.d.ts +9 -9
  357. package/types/components/sections/form/DynamicForm.d.ts.map +1 -1
  358. package/types/components/sections/form/renderer/datepickerRenderer.d.ts.map +1 -1
  359. package/types/components/sections/header/HeaderKenBurns.d.ts.map +1 -1
  360. package/types/components/sections/header/HeaderPoster.d.ts.map +1 -1
  361. package/types/components/sections/header/HeaderVideo.d.ts.map +1 -1
  362. package/types/components/sections/jobs/JobArticle.d.ts +4 -0
  363. package/types/components/sections/jobs/JobArticle.d.ts.map +1 -1
  364. package/types/components/sections/jobs/JobList.d.ts +8 -0
  365. package/types/components/sections/jobs/JobList.d.ts.map +1 -1
  366. package/types/components/sections/news/NewsAuthorCard.d.ts.map +1 -1
  367. package/types/components/sections/news/NewsFooter.d.ts +3 -16
  368. package/types/components/sections/news/NewsFooter.d.ts.map +1 -1
  369. package/types/components/sections/news/NewsImages.d.ts.map +1 -1
  370. package/types/components/sections/news/NewsIntro.d.ts.map +1 -1
  371. package/types/components/sections/news/NewsList.d.ts +3 -16
  372. package/types/components/sections/news/NewsList.d.ts.map +1 -1
  373. package/types/components/sections/news/NewsOverview.d.ts +3 -15
  374. package/types/components/sections/news/NewsOverview.d.ts.map +1 -1
  375. package/types/components/sections/news/NewsTable.d.ts +8 -0
  376. package/types/components/sections/news/NewsTable.d.ts.map +1 -1
  377. package/types/components/sections/news/NewsVideo.d.ts +4 -0
  378. package/types/components/sections/news/NewsVideo.d.ts.map +1 -1
  379. package/types/components/sections/pois/PointOfInterestOverview.d.ts +13 -12
  380. package/types/components/sections/pois/PointOfInterestOverview.d.ts.map +1 -1
  381. package/types/components/typography/Callout.d.ts +1 -0
  382. package/types/components/typography/Callout.d.ts.map +1 -1
  383. package/types/components/typography/Copy.d.ts +7 -1
  384. package/types/components/typography/Copy.d.ts.map +1 -1
  385. package/types/components/typography/Heading.d.ts +1 -0
  386. package/types/components/typography/Heading.d.ts.map +1 -1
  387. package/types/components/typography/Link.d.ts +3 -0
  388. package/types/components/typography/Link.d.ts.map +1 -1
  389. package/types/fields.d.ts +0 -1
  390. package/types/fields.d.ts.map +1 -1
  391. package/types/utils/structuredData.d.ts +14 -0
  392. package/types/utils/structuredData.d.ts.map +1 -1
  393. package/types/utils/styles.d.ts +1 -0
  394. package/types/utils/styles.d.ts.map +1 -1
  395. package/cjs/Actions-c52a14e4.js +0 -2
  396. package/cjs/Bdot-62c8e349.js +0 -2
  397. package/cjs/Button-1adf99b8.js +0 -2
  398. package/cjs/Button-1adf99b8.js.map +0 -1
  399. package/cjs/ButtonGhost-fbab8769.js +0 -2
  400. package/cjs/ButtonGhost-fbab8769.js.map +0 -1
  401. package/cjs/Callout-d84ca60b.js +0 -2
  402. package/cjs/Callout-d84ca60b.js.map +0 -1
  403. package/cjs/Checkbox-ddc9a87d.js +0 -2
  404. package/cjs/Checkbox-ddc9a87d.js.map +0 -1
  405. package/cjs/Control-e15e1572.js +0 -2
  406. package/cjs/Control-e15e1572.js.map +0 -1
  407. package/cjs/Copy-2a9d4b5d.js +0 -2
  408. package/cjs/Copy-2a9d4b5d.js.map +0 -1
  409. package/cjs/EventBlock-0b0f0dd3.js +0 -2
  410. package/cjs/EventBlock-0b0f0dd3.js.map +0 -1
  411. package/cjs/Filter-89286db9.js +0 -2
  412. package/cjs/Filter-89286db9.js.map +0 -1
  413. package/cjs/FilterBar-bfd9db6e.js +0 -2
  414. package/cjs/FilterBar-bfd9db6e.js.map +0 -1
  415. package/cjs/FilterField-d204feb1.js +0 -2
  416. package/cjs/Grid-1acefee9.js +0 -2
  417. package/cjs/Grid-1acefee9.js.map +0 -1
  418. package/cjs/Image-69a9c116.js +0 -2
  419. package/cjs/Image-69a9c116.js.map +0 -1
  420. package/cjs/InfoList-f040b8fb.js +0 -2
  421. package/cjs/InfoList-f040b8fb.js.map +0 -1
  422. package/cjs/LanguageSwitcher-c6fd04df.js +0 -2
  423. package/cjs/LibThemeProvider-69109901.js +0 -2
  424. package/cjs/Link-8951180c.js +0 -2
  425. package/cjs/Link-8951180c.js.map +0 -1
  426. package/cjs/MultiselectDropdown-d46ae36f.js +0 -2
  427. package/cjs/MultiselectDropdown-d46ae36f.js.map +0 -1
  428. package/cjs/Navigation-6c5d9dee.js +0 -2
  429. package/cjs/Pointer-0f69256f.js +0 -2
  430. package/cjs/Pointer-0f69256f.js.map +0 -1
  431. package/cjs/Section-c9a16ccc.js +0 -2
  432. package/cjs/Section-c9a16ccc.js.map +0 -1
  433. package/cjs/SocialList-73af56b5.js +0 -2
  434. package/cjs/TableBlock-532c7e1e.js +0 -2
  435. package/cjs/TableBlock-532c7e1e.js.map +0 -1
  436. package/cjs/Tag-232f7aa9.js +0 -2
  437. package/cjs/Tag-232f7aa9.js.map +0 -1
  438. package/cjs/Textarea-d30682bd.js +0 -2
  439. package/cjs/Textarea-d30682bd.js.map +0 -1
  440. package/cjs/Textfield-b3769184.js +0 -2
  441. package/cjs/Textfield-b3769184.js.map +0 -1
  442. package/cjs/VideoBlock-0cae22f0.js +0 -2
  443. package/cjs/VideoCard-c9d4f46a.js +0 -2
  444. package/cjs/VideoCard-c9d4f46a.js.map +0 -1
  445. package/cjs/Wrapper-bca9463e.js +0 -2
  446. package/cjs/concat-f387d848.js +0 -2
  447. package/cjs/formFieldText-21f5f620.js +0 -2
  448. package/cjs/formFieldText-21f5f620.js.map +0 -1
  449. package/cjs/navigation-3f9d4ac4.js +0 -2
  450. package/cjs/structuredData-0b1278a9.js +0 -2
  451. package/cjs/structuredData-0b1278a9.js.map +0 -1
  452. package/cjs/styles-13e5d9ac.js +0 -2
  453. package/cjs/styles-13e5d9ac.js.map +0 -1
  454. package/cjs/useCookieConsent-665d91cf.js +0 -2
  455. package/cjs/useEqualSheetHeight-f1c10ec5.js +0 -2
  456. package/cjs/useLazyInput-911b8eda.js +0 -2
  457. package/cjs/useLeafletMap-514304b6.js +0 -2
  458. package/cjs/useMediaQuery-619d7203.js +0 -2
  459. package/esm/Button-9a0dd9aa.js +0 -115
  460. package/esm/Button-9a0dd9aa.js.map +0 -1
  461. package/esm/ButtonGhost-fc9e7a75.js +0 -112
  462. package/esm/ButtonGhost-fc9e7a75.js.map +0 -1
  463. package/esm/Callout-46f0bef0.js.map +0 -1
  464. package/esm/Checkbox-962fea67.js.map +0 -1
  465. package/esm/Control-56ec7872.js +0 -52
  466. package/esm/Control-56ec7872.js.map +0 -1
  467. package/esm/Copy-fd9e25c0.js.map +0 -1
  468. package/esm/EventBlock-12361860.js.map +0 -1
  469. package/esm/Filter-19220970.js.map +0 -1
  470. package/esm/FilterBar-8c258534.js.map +0 -1
  471. package/esm/Grid-7b33e271.js.map +0 -1
  472. package/esm/Image-c67870d4.js.map +0 -1
  473. package/esm/InfoList-d853db58.js.map +0 -1
  474. package/esm/Link-6067a27f.js.map +0 -1
  475. package/esm/MultiselectDropdown-61a5a1a6.js.map +0 -1
  476. package/esm/Pointer-3e965d7b.js +0 -111
  477. package/esm/Pointer-3e965d7b.js.map +0 -1
  478. package/esm/Section-bd61eb2f.js.map +0 -1
  479. package/esm/TableBlock-a65315ca.js.map +0 -1
  480. package/esm/Tag-217cd89b.js.map +0 -1
  481. package/esm/Textarea-60503eb7.js.map +0 -1
  482. package/esm/Textfield-e8f48b5f.js.map +0 -1
  483. package/esm/VideoBlock-3f150172.js.map +0 -1
  484. package/esm/VideoCard-aa60fbe5.js.map +0 -1
  485. package/esm/concat-ab3c66f2.js.map +0 -1
  486. package/esm/formFieldText-c6fcd370.js.map +0 -1
  487. package/esm/structuredData-abf610d8.js.map +0 -1
  488. package/esm/styles-1f1841ef.js.map +0 -1
  489. package/types/components/fields/SearchInput.d.ts +0 -16
  490. package/types/components/fields/SearchInput.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useCookieConsent-665d91cf.js","sources":["../src/utils/cookie-consent/cookie.ts","../src/utils/cookie-consent/useCookieConsent.tsx","../src/utils/cookie-consent/mutations.ts"],"sourcesContent":["export interface Cookie<T extends object> {\n name: string;\n data: T;\n}\n\nexport const setCookie = <T extends object>({\n name,\n data,\n days = -1,\n path = '/',\n}: {\n name: string;\n data: T;\n days?: number;\n path?: string;\n}) => {\n let cookieString = `${name}=`;\n\n try {\n const stringifiedData = JSON.stringify(data);\n cookieString += encodeURIComponent(stringifiedData);\n } catch (err) {\n console.warn('Cannot save data to cookie!');\n }\n\n // specify path\n cookieString += `; path=${path};`;\n\n // check if cookie should have lifetime\n if (days >= 0) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n cookieString += ` expires=${date.toUTCString()};`;\n }\n document.cookie = cookieString;\n};\n\nexport const getCookie = <T extends object>(\n name: string\n): Cookie<T> | undefined => {\n let cookie = undefined;\n\n try {\n // get cookie value\n const b = document.cookie.match(\n '(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)'\n );\n let cookieValue = b ? b.pop() : '';\n cookieValue = cookieValue ? decodeURIComponent(cookieValue) : '';\n\n if (!cookieValue) return;\n\n cookie = {\n name: name,\n data: JSON.parse(cookieValue) as T,\n } as Cookie<T>;\n } catch (err) {\n console.warn(err);\n }\n\n return cookie;\n};\n\nexport const deleteCookie = (name: string) => {\n setCookie<any>({ name, data: {} });\n};\n","import React, { useEffect, useState, useMemo, useCallback } from 'react';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Cookie, getCookie, setCookie } from './cookie';\nimport { activateTrackingScripts, updateConsentStatus } from './mutations';\n\nexport interface CookieType {\n label: string;\n isAccepted: boolean;\n isEditable: boolean;\n}\n\nexport interface CookieTypes {\n [key: string]: CookieType;\n}\n\nexport interface CookieConsentData {\n types: Record<string, boolean>;\n updatedAt: number;\n}\n\nexport interface CookieConsentSettings {\n cookieName?: string;\n initialCookieTypes?: CookieTypes;\n lifetime?: number;\n}\n\nexport const selectors = {\n buttons: {\n class: 'cookie-consent-button',\n attribute: 'data-consent-button',\n },\n status: {\n class: 'cookie-consent-status',\n attribute: 'data-consent-status',\n },\n script: (key: string) => `cookie-consent-script-${key}`,\n};\n\nconst useCookieConsent = (\n props: CookieConsentSettings,\n onSubmit?: () => void,\n statusRenderer?: (props: {\n updatedAt: number;\n state: CookieTypes;\n }) => React.ReactElement\n) => {\n const settings: Required<CookieConsentSettings> = useMemo(() => {\n return {\n cookieName: 'cookie-consent-v2',\n lifetime: 365,\n initialCookieTypes: {\n essentials: {\n isEditable: false,\n isAccepted: true,\n label: 'Essential functionalities',\n },\n },\n ...props,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [cookieTypes, setCookieTypes] = useState<CookieTypes>(\n settings.initialCookieTypes\n );\n\n const updateStatus = useCallback(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n let statusMsg = '-';\n\n if (cookie && cookie.data) {\n const statusHtml = statusRenderer?.({\n updatedAt: cookie.data.updatedAt,\n state: cookieTypes,\n });\n if (statusHtml) {\n statusMsg = ReactDOMServer.renderToStaticMarkup(statusHtml);\n }\n }\n\n updateConsentStatus(statusMsg, [\n `[${selectors.status.attribute}]`,\n `.${selectors.status.class}`,\n ]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [settings.cookieName]);\n\n useEffect(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n if (cookie && cookie.data?.types) {\n setCookieTypes((prev) => {\n const cPrev = { ...prev };\n for (const key in cPrev) {\n if (!cookie.data.types[key]) continue;\n cPrev[key].isAccepted = cookie.data.types[key];\n }\n\n handleScriptActivation(cPrev);\n\n return cPrev;\n });\n }\n updateStatus();\n }, [settings, settings.cookieName, updateStatus]);\n\n const mapToCookieData = (types: CookieTypes): Record<string, boolean> => {\n const data = {};\n if (!types) return data;\n\n for (const key in types) {\n data[key] = types[key].isAccepted;\n }\n\n return data;\n };\n\n /** Accept all types of cookies */\n const acceptAll = useCallback(() => {\n console.info('Accept all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = true;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Decline all types of cookies (except required ones) */\n const declineAll = useCallback(() => {\n console.info('Decline all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = false;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Accept selected types of cookies */\n const acceptSelected = useCallback(() => {\n console.info('Accept selected cookie types');\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(cookieTypes),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(cookieTypes);\n onSubmit?.();\n }, [\n cookieTypes,\n onSubmit,\n settings.cookieName,\n settings.lifetime,\n updateStatus,\n ]);\n\n const handleScriptActivation = (types: CookieTypes) => {\n if (!types) return;\n\n // activate scripts from cookie types\n const acceptedKeys = Object.keys(types).filter(\n (key) => types[key].isAccepted\n );\n activateTrackingScripts(\n acceptedKeys.map((key) => selectors.script(key))\n );\n };\n\n /** Set or toggle consent status of cookie type */\n const setConsent = (type: keyof CookieTypes, isAccepted?: boolean) => {\n setCookieTypes((prev) => {\n const types = { ...prev };\n if (!types[type] || !types[type].isEditable) return types;\n\n if (isAccepted !== undefined) {\n types[type].isAccepted = isAccepted;\n } else {\n types[type].isAccepted = !types[type].isAccepted;\n }\n\n return types;\n });\n };\n\n const getCookieValue = (): Cookie<CookieConsentData> | undefined => {\n return getCookie(settings.cookieName) as Cookie<CookieConsentData>;\n };\n\n return {\n cookieTypes,\n acceptAll,\n acceptSelected,\n declineAll,\n setConsent,\n getCookieValue,\n };\n};\n\nexport default useCookieConsent;\n","export const isUrlInWhitelist = (\n urlString: string,\n whitelist: string[] = []\n) => {\n let isInWhiteList = false;\n for (let i = 0; i < whitelist.length; i++) {\n if (urlString.indexOf(whitelist[i]) > -1) {\n isInWhiteList = true;\n break;\n }\n }\n return isInWhiteList;\n};\n\nexport const bindConsentButtons = (\n callback: () => void,\n selectors: string[] = []\n) => {\n const allConsentButtons = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = allConsentButtons.length; i < len; i++) {\n allConsentButtons[i].addEventListener('click', callback);\n }\n};\n\nexport const activateTrackingScripts = (scriptTypeSelectors: string[] = []) => {\n const selectors = scriptTypeSelectors\n .filter((selector) => selector)\n .map((selector) => `script[type='text/${selector}']`)\n .join(', ');\n\n const scriptElements = selectors\n ? document.querySelectorAll(selectors)\n : [];\n\n let i = scriptElements.length;\n const newScriptElements: HTMLScriptElement[] = [];\n while (i--) {\n // create new script element to call it\n const newScriptElement = document.createElement('script');\n newScriptElement.type = 'text/javascript';\n\n if (scriptElements[i].hasAttribute('src')) {\n newScriptElement.src = scriptElements[i].getAttribute('src')!;\n newScriptElement.async = true;\n } else {\n newScriptElement.innerHTML = scriptElements[i].innerHTML;\n }\n\n // add new script tags to list\n newScriptElements.push(newScriptElement);\n\n // delete old helper element\n if (scriptElements[i].parentNode) {\n // eslint-disable-next-line no-unused-expressions\n scriptElements[i].parentNode?.removeChild(scriptElements[i]);\n }\n }\n\n // append new script tags\n i = newScriptElements.length;\n while (i--) {\n // append / activate script\n document.body.appendChild(newScriptElements[i]);\n }\n};\n\nexport const updateConsentStatus = (\n content: string,\n selectors: string[] = []\n) => {\n if (!content) return;\n const statusElements = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = statusElements.length; i < len; i++) {\n statusElements[i].innerHTML = content;\n }\n};\n"],"names":["setCookie","_a","name","data","_b","days","_c","path","cookieString","concat","stringifiedData","JSON","stringify","encodeURIComponent","err","console","warn","date","Date","setTime","getTime","toUTCString","document","cookie","getCookie","undefined","b","match","cookieValue","pop","decodeURIComponent","parse","selectors","buttons","class","attribute","status","script","key","callback","allConsentButtons","querySelectorAll","join","i","len","length","addEventListener","urlString","whitelist","isInWhiteList","indexOf","props","onSubmit","statusRenderer","settings","useMemo","__assign","cookieName","lifetime","initialCookieTypes","essentials","isEditable","isAccepted","label","useState","cookieTypes","setCookieTypes","updateStatus","useCallback","statusMsg","statusHtml","updatedAt","state","ReactDOMServer","renderToStaticMarkup","content","statusElements","innerHTML","updateConsentStatus","useEffect","types","prev","cPrev","handleScriptActivation","mapToCookieData","acceptAll","info","declineAll","acceptSelected","scriptTypeSelectors","filter","selector","map","scriptElements","newScriptElements","newScriptElement","createElement","type","hasAttribute","src","getAttribute","async","push","parentNode","removeChild","body","appendChild","activateTrackingScripts","Object","keys","setConsent","getCookieValue"],"mappings":"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"}
1
+ {"version":3,"file":"useCookieConsent-674d004d.js","sources":["../src/utils/cookie-consent/cookie.ts","../src/utils/cookie-consent/useCookieConsent.tsx","../src/utils/cookie-consent/mutations.ts"],"sourcesContent":["export interface Cookie<T extends object> {\n name: string;\n data: T;\n}\n\nexport const setCookie = <T extends object>({\n name,\n data,\n days = -1,\n path = '/',\n}: {\n name: string;\n data: T;\n days?: number;\n path?: string;\n}) => {\n let cookieString = `${name}=`;\n\n try {\n const stringifiedData = JSON.stringify(data);\n cookieString += encodeURIComponent(stringifiedData);\n } catch (err) {\n console.warn('Cannot save data to cookie!');\n }\n\n // specify path\n cookieString += `; path=${path};`;\n\n // check if cookie should have lifetime\n if (days >= 0) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n cookieString += ` expires=${date.toUTCString()};`;\n }\n document.cookie = cookieString;\n};\n\nexport const getCookie = <T extends object>(\n name: string\n): Cookie<T> | undefined => {\n let cookie = undefined;\n\n try {\n // get cookie value\n const b = document.cookie.match(\n '(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)'\n );\n let cookieValue = b ? b.pop() : '';\n cookieValue = cookieValue ? decodeURIComponent(cookieValue) : '';\n\n if (!cookieValue) return;\n\n cookie = {\n name: name,\n data: JSON.parse(cookieValue) as T,\n } as Cookie<T>;\n } catch (err) {\n console.warn(err);\n }\n\n return cookie;\n};\n\nexport const deleteCookie = (name: string) => {\n setCookie<any>({ name, data: {} });\n};\n","import React, { useEffect, useState, useMemo, useCallback } from 'react';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { Cookie, getCookie, setCookie } from './cookie';\nimport { activateTrackingScripts, updateConsentStatus } from './mutations';\n\nexport interface CookieType {\n label: string;\n isAccepted: boolean;\n isEditable: boolean;\n}\n\nexport interface CookieTypes {\n [key: string]: CookieType;\n}\n\nexport interface CookieConsentData {\n types: Record<string, boolean>;\n updatedAt: number;\n}\n\nexport interface CookieConsentSettings {\n cookieName?: string;\n initialCookieTypes?: CookieTypes;\n lifetime?: number;\n}\n\nexport const selectors = {\n buttons: {\n class: 'cookie-consent-button',\n attribute: 'data-consent-button',\n },\n status: {\n class: 'cookie-consent-status',\n attribute: 'data-consent-status',\n },\n script: (key: string) => `cookie-consent-script-${key}`,\n};\n\nconst useCookieConsent = (\n props: CookieConsentSettings,\n onSubmit?: () => void,\n statusRenderer?: (props: {\n updatedAt: number;\n state: CookieTypes;\n }) => React.ReactElement\n) => {\n const settings: Required<CookieConsentSettings> = useMemo(() => {\n return {\n cookieName: 'cookie-consent-v2',\n lifetime: 365,\n initialCookieTypes: {\n essentials: {\n isEditable: false,\n isAccepted: true,\n label: 'Essential functionalities',\n },\n },\n ...props,\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [cookieTypes, setCookieTypes] = useState<CookieTypes>(\n settings.initialCookieTypes\n );\n\n const updateStatus = useCallback(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n let statusMsg = '-';\n\n if (cookie && cookie.data) {\n const statusHtml = statusRenderer?.({\n updatedAt: cookie.data.updatedAt,\n state: cookieTypes,\n });\n if (statusHtml) {\n statusMsg = ReactDOMServer.renderToStaticMarkup(statusHtml);\n }\n }\n\n updateConsentStatus(statusMsg, [\n `[${selectors.status.attribute}]`,\n `.${selectors.status.class}`,\n ]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [settings.cookieName]);\n\n useEffect(() => {\n const cookie = getCookie(\n settings.cookieName\n ) as Cookie<CookieConsentData>;\n\n if (cookie && cookie.data?.types) {\n setCookieTypes((prev) => {\n const cPrev = { ...prev };\n for (const key in cPrev) {\n if (!cookie.data.types[key]) continue;\n cPrev[key].isAccepted = cookie.data.types[key];\n }\n\n handleScriptActivation(cPrev);\n\n return cPrev;\n });\n }\n updateStatus();\n }, [settings, settings.cookieName, updateStatus]);\n\n const mapToCookieData = (types: CookieTypes): Record<string, boolean> => {\n const data = {};\n if (!types) return data;\n\n for (const key in types) {\n data[key] = types[key].isAccepted;\n }\n\n return data;\n };\n\n /** Accept all types of cookies */\n const acceptAll = useCallback(() => {\n console.info('Accept all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = true;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Decline all types of cookies (except required ones) */\n const declineAll = useCallback(() => {\n console.info('Decline all cookie types');\n\n setCookieTypes((prev) => {\n const types = { ...prev };\n for (const key in types) {\n if (!types[key].isEditable) continue;\n types[key].isAccepted = false;\n }\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(types),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(types);\n return types;\n });\n onSubmit?.();\n }, [onSubmit, settings.cookieName, settings.lifetime, updateStatus]);\n\n /** Accept selected types of cookies */\n const acceptSelected = useCallback(() => {\n console.info('Accept selected cookie types');\n\n setCookie<CookieConsentData>({\n name: settings.cookieName,\n data: {\n types: mapToCookieData(cookieTypes),\n updatedAt: new Date().getTime(),\n },\n days: settings.lifetime,\n });\n\n updateStatus();\n handleScriptActivation(cookieTypes);\n onSubmit?.();\n }, [\n cookieTypes,\n onSubmit,\n settings.cookieName,\n settings.lifetime,\n updateStatus,\n ]);\n\n const handleScriptActivation = (types: CookieTypes) => {\n if (!types) return;\n\n // activate scripts from cookie types\n const acceptedKeys = Object.keys(types).filter(\n (key) => types[key].isAccepted\n );\n activateTrackingScripts(\n acceptedKeys.map((key) => selectors.script(key))\n );\n };\n\n /** Set or toggle consent status of cookie type */\n const setConsent = (type: keyof CookieTypes, isAccepted?: boolean) => {\n setCookieTypes((prev) => {\n const types = { ...prev };\n if (!types[type] || !types[type].isEditable) return types;\n\n if (isAccepted !== undefined) {\n types[type].isAccepted = isAccepted;\n } else {\n types[type].isAccepted = !types[type].isAccepted;\n }\n\n return types;\n });\n };\n\n const getCookieValue = (): Cookie<CookieConsentData> | undefined => {\n return getCookie(settings.cookieName) as Cookie<CookieConsentData>;\n };\n\n return {\n cookieTypes,\n acceptAll,\n acceptSelected,\n declineAll,\n setConsent,\n getCookieValue,\n };\n};\n\nexport default useCookieConsent;\n","export const isUrlInWhitelist = (\n urlString: string,\n whitelist: string[] = []\n) => {\n let isInWhiteList = false;\n for (let i = 0; i < whitelist.length; i++) {\n if (urlString.indexOf(whitelist[i]) > -1) {\n isInWhiteList = true;\n break;\n }\n }\n return isInWhiteList;\n};\n\nexport const bindConsentButtons = (\n callback: () => void,\n selectors: string[] = []\n) => {\n const allConsentButtons = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = allConsentButtons.length; i < len; i++) {\n allConsentButtons[i].addEventListener('click', callback);\n }\n};\n\nexport const activateTrackingScripts = (scriptTypeSelectors: string[] = []) => {\n const selectors = scriptTypeSelectors\n .filter((selector) => selector)\n .map((selector) => `script[type='text/${selector}']`)\n .join(', ');\n\n const scriptElements = selectors\n ? document.querySelectorAll(selectors)\n : [];\n\n let i = scriptElements.length;\n const newScriptElements: HTMLScriptElement[] = [];\n while (i--) {\n // create new script element to call it\n const newScriptElement = document.createElement('script');\n newScriptElement.type = 'text/javascript';\n\n if (scriptElements[i].hasAttribute('src')) {\n newScriptElement.src = scriptElements[i].getAttribute('src')!;\n newScriptElement.async = true;\n } else {\n newScriptElement.innerHTML = scriptElements[i].innerHTML;\n }\n\n // add new script tags to list\n newScriptElements.push(newScriptElement);\n\n // delete old helper element\n if (scriptElements[i].parentNode) {\n // eslint-disable-next-line no-unused-expressions\n scriptElements[i].parentNode?.removeChild(scriptElements[i]);\n }\n }\n\n // append new script tags\n i = newScriptElements.length;\n while (i--) {\n // append / activate script\n document.body.appendChild(newScriptElements[i]);\n }\n};\n\nexport const updateConsentStatus = (\n content: string,\n selectors: string[] = []\n) => {\n if (!content) return;\n const statusElements = document.querySelectorAll(selectors.join(', '));\n\n for (let i = 0, len = statusElements.length; i < len; i++) {\n statusElements[i].innerHTML = content;\n }\n};\n"],"names":["setCookie","_a","name","data","_b","days","_c","path","cookieString","concat","stringifiedData","JSON","stringify","encodeURIComponent","err","console","warn","date","Date","setTime","getTime","toUTCString","document","cookie","getCookie","undefined","b","match","cookieValue","pop","decodeURIComponent","parse","selectors","buttons","class","attribute","status","script","key","callback","allConsentButtons","querySelectorAll","join","i","len","length","addEventListener","urlString","whitelist","isInWhiteList","indexOf","props","onSubmit","statusRenderer","settings","useMemo","__assign","cookieName","lifetime","initialCookieTypes","essentials","isEditable","isAccepted","label","useState","cookieTypes","setCookieTypes","updateStatus","useCallback","statusMsg","statusHtml","updatedAt","state","ReactDOMServer","renderToStaticMarkup","content","statusElements","innerHTML","updateConsentStatus","useEffect","types","prev","cPrev","handleScriptActivation","mapToCookieData","acceptAll","info","declineAll","acceptSelected","scriptTypeSelectors","filter","selector","map","scriptElements","newScriptElements","newScriptElement","createElement","type","hasAttribute","src","getAttribute","async","push","parentNode","removeChild","body","appendChild","activateTrackingScripts","Object","keys","setConsent","getCookieValue"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./ButtonLeft-7e1f216a.js"),t=require("react"),n=require("./useMediaQuery-dd367f98.js"),r=require("./styles-271afb02.js"),i=function(){var e=t.useState(!1),n=e[0],r=e[1];return t.useEffect((function(){void 0===document.fonts?r(void 0):function(){var e,t;null===(t=null===(e=null===document||void 0===document?void 0:document.fonts)||void 0===e?void 0:e.ready)||void 0===t||t.then((function(){r(!0)}))}()}),[]),n},u=function(e,n){void 0===e&&(e=0);var r=t.useState(null),i=r[0],u=r[1],o=t.useRef(-1),c=t.useRef({clientWidth:0,clientHeight:0,innerHeight:0,innerWidth:0}),f=function(){"undefined"!=typeof window&&"undefined"!=typeof document&&(c.current={clientWidth:document.documentElement.clientWidth,clientHeight:document.documentElement.clientHeight,innerHeight:window.innerHeight,innerWidth:window.innerWidth})};return t.useEffect((function(){if("undefined"!=typeof window){var t=function(){f(),-1===o.current&&(o.current=window.setTimeout((function(){null==n||n(c.current),u(c.current),o.current=-1}),e))};return f(),null==n||n(c.current),u(c.current),window.addEventListener("resize",t),function(){window.removeEventListener("resize",t)}}}),[n,e]),i};exports.useEqualSheetHeight=function(o){var c=e.__assign({small:1,medium:1,semilarge:2,large:3,xlarge:3},o.responsive),f=n.useDynamicMediaQueries(o.customMediaQueries||r.mq),s=c[Object.keys(f).reduce((function(e,t){return f[t]?t:e}),"small")],l=t.useState([]),d=l[0],a=l[1],h=i(),v=t.useCallback((function(e,t,n){e.reduce((function(e,t,n,r){return n%s==0&&e.push(r.slice(n,n+s)),e}),[]).forEach((function(e,r){var i=e.filter((function(e){return null!==e})).slice().sort((function(e,t){return e&&t?e>t?-1:1:0}))[0];if(e.length>1&&i)for(var u=0;u<e.length;u++){var o=n[u+r*s].current.querySelector(t);null==o||o.setAttribute("style","height: ".concat(i,"px"))}}))}),[s]),m=u(void 0!==o.resizeThrottleTimeout?o.resizeThrottleTimeout:400);t.useEffect((function(){var t,n=(t=d,function(){for(var n=new Map,r=0;r<o.identifiers.length;r++)n.set(o.identifiers[r],[]);t.filter((function(e){return e.current})).forEach((function(t){var r=t.current;o.identifiers.forEach((function(t){var i=r.querySelector(t),u=n.get(t),o=null;i&&(i.removeAttribute("style"),o=i.getBoundingClientRect().height),u&&n.set(t,e.__spreadArray(e.__spreadArray([],u,!0),[o],!1))}))})),n.forEach((function(e,n){v(e,n,t)}))});n()}),[o.identifiers,m,v,d,h]);var g=t.useCallback((function(){a((function(e){return Array(o.listLength).fill(null).map((function(n,r){return e[r]||t.createRef()}))}))}),[o.listLength]);return t.useEffect((function(){a((function(e){return Array(o.listLength).fill(null).map((function(n,r){return e[r]||t.createRef()}))}))}),[o.listLength]),{sheetRefs:d,triggerCalculation:g}},exports.useFontsLoaded=i,exports.useResizeThrottle=u;
2
+ //# sourceMappingURL=useEqualSheetHeight-7eb7f276.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEqualSheetHeight-f1c10ec5.js","sources":["../src/utils/useFontsLoaded.ts","../src/utils/useResizeThrottle.ts","../src/utils/useEqualSheetHeight.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useFontsLoaded = () => {\n const [allFontsLoaded, setFontLoaded] = useState<boolean | undefined>(\n false\n );\n\n useEffect(() => {\n const waitForFonts = () => {\n (document as any)?.fonts?.ready?.then(() => {\n setFontLoaded(true);\n });\n };\n\n if ((document as any).fonts === undefined) setFontLoaded(undefined);\n else waitForFonts();\n }, []);\n\n return allFontsLoaded;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface ResizeState {\n clientWidth: number;\n clientHeight: number;\n innerHeight: number;\n innerWidth: number;\n}\n\nconst useResizeThrottle = (\n timeout = 0,\n callback?: (state: ResizeState) => void\n) => {\n const [throttledState, setThrottledState] =\n useState<ResizeState | null>(null);\n\n const timeoutRef = useRef<number>(-1);\n const lastState = useRef<ResizeState>({\n clientWidth: 0,\n clientHeight: 0,\n innerHeight: 0,\n innerWidth: 0,\n });\n\n const updateResizeState = () => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return;\n }\n\n lastState.current = {\n clientWidth: document.documentElement.clientWidth,\n clientHeight: document.documentElement.clientHeight,\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n };\n };\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n updateResizeState();\n\n if (timeoutRef.current === -1) {\n timeoutRef.current = window.setTimeout(() => {\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n timeoutRef.current = -1;\n }, timeout);\n }\n };\n\n updateResizeState();\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [callback, timeout]);\n\n return throttledState;\n};\n\nexport default useResizeThrottle;\n","import {\n useEffect,\n useState,\n MutableRefObject,\n createRef,\n useCallback,\n} from 'react';\nimport { useDynamicMediaQueries } from './useMediaQuery';\nimport { useFontsLoaded } from 'utils/useFontsLoaded';\nimport useResizeThrottle from './useResizeThrottle';\nimport { MediaQueryType, mq } from './styles';\n\ninterface ItemsPerRow {\n small?: number;\n medium?: number;\n semilarge?: number;\n large?: number;\n xlarge?: number;\n}\n\ntype Mq = keyof ItemsPerRow;\n\n// ********************\n// useEqualSheetHeight\n// ********************\n\nexport const useEqualSheetHeight = <T extends HTMLElement>(props: {\n listLength: number;\n identifiers: string[];\n responsive?: ItemsPerRow;\n /** Throttle timeout for resize events. Default: 400ms */\n resizeThrottleTimeout?: number;\n customMediaQueries?: { [key in Exclude<Mq, 'small'>]: string };\n}) => {\n const defaultResponsive = {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n ...props.responsive,\n } as Record<MediaQueryType, number>;\n\n const queries = useDynamicMediaQueries(props.customMediaQueries || mq);\n const currentMq = Object.keys(queries).reduce<Mq>(\n (acc, key) => (queries[key] ? key : acc) as Mq,\n 'small'\n );\n const itemsPerRow = defaultResponsive[currentMq];\n\n const [sheetRefs, setSheetRefs] = useState<MutableRefObject<T>[]>([]);\n const fontsLoaded = useFontsLoaded();\n\n const setHeights = useCallback(\n (\n heights: (number | null)[],\n selector: string,\n refs: MutableRefObject<T>[]\n ) => {\n const makeRows = (\n result: Array<number | null>[],\n _: number,\n index: number,\n arr: Array<number | null>\n ) => {\n // make new row after 3 items\n if (index % itemsPerRow === 0) {\n result.push(\n arr.slice(index, index + itemsPerRow) as Array<number>\n );\n }\n return result;\n };\n\n // put item heights in 2-dimensional array to sort them in rows\n const heightsInRows = heights.reduce(makeRows, []);\n\n heightsInRows.forEach((rowHeights, y) => {\n const validHeights = rowHeights.filter(\n (height) => height !== null\n ) as number[];\n\n const highest = validHeights.slice().sort((vA, vB) => {\n if (vA && vB) {\n if (vA > vB) return -1;\n return 1;\n } else return 0;\n })[0];\n\n // set height of all items in row to the highest value\n if (rowHeights.length > 1 && highest) {\n for (let x = 0; x < rowHeights.length; x++) {\n const index = x + y * itemsPerRow;\n const el = refs[index].current.querySelector(selector);\n\n el?.setAttribute('style', `height: ${highest}px`);\n }\n }\n });\n },\n [itemsPerRow]\n );\n\n // Throttle viewport resize event for performance\n const resizeState = useResizeThrottle(\n props.resizeThrottleTimeout !== undefined\n ? props.resizeThrottleTimeout\n : 400\n );\n\n useEffect(() => {\n const resize = (refs: MutableRefObject<T>[]) => () => {\n const identifierSizes = new Map<string, Array<number | null>>();\n\n // create identifier map\n for (let i = 0; i < props.identifiers.length; i++) {\n identifierSizes.set(props.identifiers[i], []);\n }\n\n // set height values\n refs.filter((ref) => ref.current).forEach(({ current }) => {\n // get height for each element\n props.identifiers.forEach((id) => {\n const element = current.querySelector(id);\n const prevHeights = identifierSizes.get(id);\n let height: number | null = null;\n\n if (element) {\n element.removeAttribute('style');\n height = element.getBoundingClientRect().height;\n }\n\n if (prevHeights) {\n identifierSizes.set(id, [...prevHeights, height]);\n }\n });\n });\n\n // set heights for each identifier\n identifierSizes.forEach((value, key) => {\n setHeights(value, key, refs);\n });\n };\n\n const resizeHandler = resize(sheetRefs);\n resizeHandler();\n }, [props.identifiers, resizeState, setHeights, sheetRefs, fontsLoaded]);\n\n const triggerCalculation = useCallback(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n useEffect(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n return {\n sheetRefs,\n triggerCalculation,\n };\n};\n"],"names":["useFontsLoaded","_a","useState","allFontsLoaded","setFontLoaded","useEffect","undefined","document","fonts","_b","ready","then","waitForFonts","useResizeThrottle","timeout","callback","throttledState","setThrottledState","timeoutRef","useRef","lastState","clientWidth","clientHeight","innerHeight","innerWidth","updateResizeState","window","current","documentElement","handleResize","setTimeout","addEventListener","removeEventListener","props","defaultResponsive","__assign","small","medium","semilarge","large","xlarge","responsive","queries","useDynamicMediaQueries","customMediaQueries","mq","itemsPerRow","Object","keys","reduce","acc","key","sheetRefs","setSheetRefs","fontsLoaded","setHeights","useCallback","heights","selector","refs","result","_","index","arr","push","slice","forEach","rowHeights","y","validHeights","highest","filter","height","sort","vA","vB","length","x","el","querySelector","setAttribute","concat","resizeState","resizeThrottleTimeout","resizeHandler","identifierSizes","Map","i","identifiers","set","ref","id","element","prevHeights","get","removeAttribute","getBoundingClientRect","value","triggerCalculation","prev","Array","listLength","fill","map","createRef"],"mappings":"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"}
1
+ {"version":3,"file":"useEqualSheetHeight-7eb7f276.js","sources":["../src/utils/useFontsLoaded.ts","../src/utils/useResizeThrottle.ts","../src/utils/useEqualSheetHeight.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport const useFontsLoaded = () => {\n const [allFontsLoaded, setFontLoaded] = useState<boolean | undefined>(\n false\n );\n\n useEffect(() => {\n const waitForFonts = () => {\n (document as any)?.fonts?.ready?.then(() => {\n setFontLoaded(true);\n });\n };\n\n if ((document as any).fonts === undefined) setFontLoaded(undefined);\n else waitForFonts();\n }, []);\n\n return allFontsLoaded;\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport interface ResizeState {\n clientWidth: number;\n clientHeight: number;\n innerHeight: number;\n innerWidth: number;\n}\n\nconst useResizeThrottle = (\n timeout = 0,\n callback?: (state: ResizeState) => void\n) => {\n const [throttledState, setThrottledState] =\n useState<ResizeState | null>(null);\n\n const timeoutRef = useRef<number>(-1);\n const lastState = useRef<ResizeState>({\n clientWidth: 0,\n clientHeight: 0,\n innerHeight: 0,\n innerWidth: 0,\n });\n\n const updateResizeState = () => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return;\n }\n\n lastState.current = {\n clientWidth: document.documentElement.clientWidth,\n clientHeight: document.documentElement.clientHeight,\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n };\n };\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n updateResizeState();\n\n if (timeoutRef.current === -1) {\n timeoutRef.current = window.setTimeout(() => {\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n timeoutRef.current = -1;\n }, timeout);\n }\n };\n\n updateResizeState();\n callback?.(lastState.current);\n setThrottledState(lastState.current);\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [callback, timeout]);\n\n return throttledState;\n};\n\nexport default useResizeThrottle;\n","import {\n useEffect,\n useState,\n MutableRefObject,\n createRef,\n useCallback,\n} from 'react';\nimport { useDynamicMediaQueries } from './useMediaQuery';\nimport { useFontsLoaded } from 'utils/useFontsLoaded';\nimport useResizeThrottle from './useResizeThrottle';\nimport { MediaQueryType, mq } from './styles';\n\ninterface ItemsPerRow {\n small?: number;\n medium?: number;\n semilarge?: number;\n large?: number;\n xlarge?: number;\n}\n\ntype Mq = keyof ItemsPerRow;\n\n// ********************\n// useEqualSheetHeight\n// ********************\n\nexport const useEqualSheetHeight = <T extends HTMLElement>(props: {\n listLength: number;\n identifiers: string[];\n responsive?: ItemsPerRow;\n /** Throttle timeout for resize events. Default: 400ms */\n resizeThrottleTimeout?: number;\n customMediaQueries?: { [key in Exclude<Mq, 'small'>]: string };\n}) => {\n const defaultResponsive = {\n small: 1,\n medium: 1,\n semilarge: 2,\n large: 3,\n xlarge: 3,\n ...props.responsive,\n } as Record<MediaQueryType, number>;\n\n const queries = useDynamicMediaQueries(props.customMediaQueries || mq);\n const currentMq = Object.keys(queries).reduce<Mq>(\n (acc, key) => (queries[key] ? key : acc) as Mq,\n 'small'\n );\n const itemsPerRow = defaultResponsive[currentMq];\n\n const [sheetRefs, setSheetRefs] = useState<MutableRefObject<T>[]>([]);\n const fontsLoaded = useFontsLoaded();\n\n const setHeights = useCallback(\n (\n heights: (number | null)[],\n selector: string,\n refs: MutableRefObject<T>[]\n ) => {\n const makeRows = (\n result: Array<number | null>[],\n _: number,\n index: number,\n arr: Array<number | null>\n ) => {\n // make new row after 3 items\n if (index % itemsPerRow === 0) {\n result.push(\n arr.slice(index, index + itemsPerRow) as Array<number>\n );\n }\n return result;\n };\n\n // put item heights in 2-dimensional array to sort them in rows\n const heightsInRows = heights.reduce(makeRows, []);\n\n heightsInRows.forEach((rowHeights, y) => {\n const validHeights = rowHeights.filter(\n (height) => height !== null\n ) as number[];\n\n const highest = validHeights.slice().sort((vA, vB) => {\n if (vA && vB) {\n if (vA > vB) return -1;\n return 1;\n } else return 0;\n })[0];\n\n // set height of all items in row to the highest value\n if (rowHeights.length > 1 && highest) {\n for (let x = 0; x < rowHeights.length; x++) {\n const index = x + y * itemsPerRow;\n const el = refs[index].current.querySelector(selector);\n\n el?.setAttribute('style', `height: ${highest}px`);\n }\n }\n });\n },\n [itemsPerRow]\n );\n\n // Throttle viewport resize event for performance\n const resizeState = useResizeThrottle(\n props.resizeThrottleTimeout !== undefined\n ? props.resizeThrottleTimeout\n : 400\n );\n\n useEffect(() => {\n const resize = (refs: MutableRefObject<T>[]) => () => {\n const identifierSizes = new Map<string, Array<number | null>>();\n\n // create identifier map\n for (let i = 0; i < props.identifiers.length; i++) {\n identifierSizes.set(props.identifiers[i], []);\n }\n\n // set height values\n refs.filter((ref) => ref.current).forEach(({ current }) => {\n // get height for each element\n props.identifiers.forEach((id) => {\n const element = current.querySelector(id);\n const prevHeights = identifierSizes.get(id);\n let height: number | null = null;\n\n if (element) {\n element.removeAttribute('style');\n height = element.getBoundingClientRect().height;\n }\n\n if (prevHeights) {\n identifierSizes.set(id, [...prevHeights, height]);\n }\n });\n });\n\n // set heights for each identifier\n identifierSizes.forEach((value, key) => {\n setHeights(value, key, refs);\n });\n };\n\n const resizeHandler = resize(sheetRefs);\n resizeHandler();\n }, [props.identifiers, resizeState, setHeights, sheetRefs, fontsLoaded]);\n\n const triggerCalculation = useCallback(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n useEffect(() => {\n setSheetRefs((prev) =>\n Array(props.listLength)\n .fill(null)\n .map((_, i) => prev[i] || createRef())\n );\n }, [props.listLength]);\n\n return {\n sheetRefs,\n triggerCalculation,\n };\n};\n"],"names":["useFontsLoaded","_a","useState","allFontsLoaded","setFontLoaded","useEffect","undefined","document","fonts","_b","ready","then","waitForFonts","useResizeThrottle","timeout","callback","throttledState","setThrottledState","timeoutRef","useRef","lastState","clientWidth","clientHeight","innerHeight","innerWidth","updateResizeState","window","current","documentElement","handleResize","setTimeout","addEventListener","removeEventListener","props","defaultResponsive","__assign","small","medium","semilarge","large","xlarge","responsive","queries","useDynamicMediaQueries","customMediaQueries","mq","itemsPerRow","Object","keys","reduce","acc","key","sheetRefs","setSheetRefs","fontsLoaded","setHeights","useCallback","heights","selector","refs","result","_","index","arr","push","slice","forEach","rowHeights","y","validHeights","highest","filter","height","sort","vA","vB","length","x","el","querySelector","setAttribute","concat","resizeState","resizeThrottleTimeout","resizeHandler","identifierSizes","Map","i","identifiers","set","ref","id","element","prevHeights","get","removeAttribute","getBoundingClientRect","value","triggerCalculation","prev","Array","listLength","fill","map","createRef"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react"),r=require("./ButtonLeft-7e1f216a.js"),u=function(r,u){var t=e.useRef(r),n=e.useRef();e.useEffect((function(){t.current=r}),[r]);var c=e.useCallback((function(){n.current=window.setTimeout((function(){var e;return null===(e=t.current)||void 0===e?void 0:e.call(t)}),u)}),[u]),a=e.useCallback((function(){n.current&&window.clearTimeout(n.current)}),[]);e.useEffect((function(){return c(),a}),[u,c,a]);var o=e.useCallback((function(){a(),c()}),[a,c]);return{clear:a,reset:o}},t=function(t,n,c){var a=u(t,n),o=a.clear,s=a.reset;return e.useEffect(s,r.__spreadArray(r.__spreadArray([],c,!0),[s],!1)),e.useEffect(o,[]),{clear:o,reset:s}};exports.useDebounce=t,exports.useLazyInput=function(r,u,n){void 0===n&&(n=600);var c=e.useState(u),a=c[0],o=c[1],s=t((function(){return null==r?void 0:r(a)}),n,[a]).clear,l=e.useCallback((function(e,u){void 0===u&&(u=!1),o(e),u&&(s(),null==r||r(e))}),[]),f=e.useCallback((function(){s(),null==r||r(a)}),[r,s,a]);return{update:l,value:a,forceUpdate:f}},exports.useTimeout=u;
2
+ //# sourceMappingURL=useLazyInput-1481445a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLazyInput-911b8eda.js","sources":["../src/utils/useTimeout.ts","../src/utils/useDebounce.ts","../src/utils/useLazyInput.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nconst useTimeout = (callback: () => void, delay: number) => {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<number>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n timeoutRef.current = window.setTimeout(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n timeoutRef.current && window.clearTimeout(timeoutRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { clear, reset };\n};\n\nexport default useTimeout;\n","import { DependencyList, useEffect } from 'react';\nimport useTimeout from './useTimeout';\n\nconst useDebounce = (\n callback: () => void,\n delay: number,\n deps: DependencyList\n) => {\n const { clear, reset } = useTimeout(callback, delay);\n\n useEffect(reset, [...deps, reset]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(clear, []);\n\n return {\n clear,\n reset,\n };\n};\n\nexport default useDebounce;\n","import { useCallback, useState } from 'react';\nimport useDebounce from './useDebounce';\n\nconst useLazyInput = (\n callback: (value: string) => void,\n initial: string,\n delay = 600\n) => {\n const [value, setValue] = useState<string>(initial);\n const { clear } = useDebounce(() => callback?.(value), delay, [value]);\n\n const update = useCallback((value: string, withoutDelay = false) => {\n setValue(value);\n if (withoutDelay) {\n clear();\n callback?.(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const forceUpdate = useCallback(() => {\n clear();\n callback?.(value);\n }, [callback, clear, value]);\n\n return {\n update,\n value,\n forceUpdate,\n };\n};\n\nexport default useLazyInput;\n"],"names":["useTimeout","callback","delay","callbackRef","useRef","timeoutRef","useEffect","current","set","useCallback","window","setTimeout","_a","call","clear","clearTimeout","reset","useDebounce","deps","__spreadArray","initial","useState","value","setValue","update","withoutDelay","forceUpdate"],"mappings":"sEAEMA,EAAa,SAACC,EAAsBC,GACtC,IAAMC,EAAcC,SAAOH,GACrBI,EAAaD,EAAAA,SAEnBE,EAAAA,WAAU,WACNH,EAAYI,QAAUN,IACvB,CAACA,IAEJ,IAAMO,EAAMC,EAAAA,aAAY,WACpBJ,EAAWE,QAAUG,OAAOC,YACxB,WAAM,IAAAC,EAAA,OAAuB,UAAvBT,EAAYI,eAAW,IAAAK,OAAA,EAAAA,EAAAC,KAAAV,KAC7BD,KAEL,CAACA,IAEEY,EAAQL,EAAAA,aAAY,WACtBJ,EAAWE,SAAWG,OAAOK,aAAaV,EAAWE,WACtD,IAEHD,EAAAA,WAAU,WAEN,OADAE,IACOM,IACR,CAACZ,EAAOM,EAAKM,IAEhB,IAAME,EAAQP,EAAAA,aAAY,WACtBK,IACAN,MACD,CAACM,EAAON,IAEJ,MAAA,CAAEM,MAAKA,EAAEE,MAAKA,IC5BnBC,EAAc,SAChBhB,EACAC,EACAgB,GAEM,IAAAN,EAAmBZ,EAAWC,EAAUC,GAAtCY,EAAKF,EAAAE,MAAEE,UAOR,OALPV,EAAAA,UAAUU,EAAKG,gBAAAA,EAAAA,cAAA,GAAMD,GAAM,GAAA,CAAAF,QAG3BV,YAAUQ,EAAO,IAEV,CACHA,MAAKA,EACLE,MAAKA,+CCdQ,SACjBf,EACAmB,EACAlB,QAAA,IAAAA,IAAAA,EAAW,KAEL,IAAAU,EAAoBS,EAAQA,SAASD,GAApCE,EAAKV,EAAA,GAAEW,EAAQX,EAAA,GACdE,EAAUG,GAAY,WAAM,OAAAhB,MAAAA,OAAQ,EAARA,EAAWqB,KAAQpB,EAAO,CAACoB,IAAOR,MAEhEU,EAASf,EAAAA,aAAY,SAACa,EAAeG,QAAA,IAAAA,IAAAA,GAAoB,GAC3DF,EAASD,GACLG,IACAX,IACAb,MAAAA,GAAAA,EAAWqB,MAGhB,IAEGI,EAAcjB,EAAAA,aAAY,WAC5BK,IACAb,MAAAA,GAAAA,EAAWqB,KACZ,CAACrB,EAAUa,EAAOQ,IAEd,MAAA,CACHE,OAAMA,EACNF,MAAKA,EACLI,YAAWA"}
1
+ {"version":3,"file":"useLazyInput-1481445a.js","sources":["../src/utils/useTimeout.ts","../src/utils/useDebounce.ts","../src/utils/useLazyInput.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nconst useTimeout = (callback: () => void, delay: number) => {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<number>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n timeoutRef.current = window.setTimeout(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n timeoutRef.current && window.clearTimeout(timeoutRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { clear, reset };\n};\n\nexport default useTimeout;\n","import { DependencyList, useEffect } from 'react';\nimport useTimeout from './useTimeout';\n\nconst useDebounce = (\n callback: () => void,\n delay: number,\n deps: DependencyList\n) => {\n const { clear, reset } = useTimeout(callback, delay);\n\n useEffect(reset, [...deps, reset]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(clear, []);\n\n return {\n clear,\n reset,\n };\n};\n\nexport default useDebounce;\n","import { useCallback, useState } from 'react';\nimport useDebounce from './useDebounce';\n\nconst useLazyInput = (\n callback: (value: string) => void,\n initial: string,\n delay = 600\n) => {\n const [value, setValue] = useState<string>(initial);\n const { clear } = useDebounce(() => callback?.(value), delay, [value]);\n\n const update = useCallback((value: string, withoutDelay = false) => {\n setValue(value);\n if (withoutDelay) {\n clear();\n callback?.(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const forceUpdate = useCallback(() => {\n clear();\n callback?.(value);\n }, [callback, clear, value]);\n\n return {\n update,\n value,\n forceUpdate,\n };\n};\n\nexport default useLazyInput;\n"],"names":["useTimeout","callback","delay","callbackRef","useRef","timeoutRef","useEffect","current","set","useCallback","window","setTimeout","_a","call","clear","clearTimeout","reset","useDebounce","deps","__spreadArray","initial","useState","value","setValue","update","withoutDelay","forceUpdate"],"mappings":"0EAEMA,EAAa,SAACC,EAAsBC,GACtC,IAAMC,EAAcC,SAAOH,GACrBI,EAAaD,EAAAA,SAEnBE,EAAAA,WAAU,WACNH,EAAYI,QAAUN,IACvB,CAACA,IAEJ,IAAMO,EAAMC,EAAAA,aAAY,WACpBJ,EAAWE,QAAUG,OAAOC,YACxB,WAAM,IAAAC,EAAA,OAAuB,UAAvBT,EAAYI,eAAW,IAAAK,OAAA,EAAAA,EAAAC,KAAAV,KAC7BD,KAEL,CAACA,IAEEY,EAAQL,EAAAA,aAAY,WACtBJ,EAAWE,SAAWG,OAAOK,aAAaV,EAAWE,WACtD,IAEHD,EAAAA,WAAU,WAEN,OADAE,IACOM,IACR,CAACZ,EAAOM,EAAKM,IAEhB,IAAME,EAAQP,EAAAA,aAAY,WACtBK,IACAN,MACD,CAACM,EAAON,IAEJ,MAAA,CAAEM,MAAKA,EAAEE,MAAKA,IC5BnBC,EAAc,SAChBhB,EACAC,EACAgB,GAEM,IAAAN,EAAmBZ,EAAWC,EAAUC,GAAtCY,EAAKF,EAAAE,MAAEE,UAOR,OALPV,EAAAA,UAAUU,EAAKG,gBAAAA,EAAAA,cAAA,GAAMD,GAAM,GAAA,CAAAF,QAG3BV,YAAUQ,EAAO,IAEV,CACHA,MAAKA,EACLE,MAAKA,+CCdQ,SACjBf,EACAmB,EACAlB,QAAA,IAAAA,IAAAA,EAAW,KAEL,IAAAU,EAAoBS,EAAQA,SAASD,GAApCE,EAAKV,EAAA,GAAEW,EAAQX,EAAA,GACdE,EAAUG,GAAY,WAAM,OAAAhB,MAAAA,OAAQ,EAARA,EAAWqB,KAAQpB,EAAO,CAACoB,IAAOR,MAEhEU,EAASf,EAAAA,aAAY,SAACa,EAAeG,QAAA,IAAAA,IAAAA,GAAoB,GAC3DF,EAASD,GACLG,IACAX,IACAb,MAAAA,GAAAA,EAAWqB,MAGhB,IAEGI,EAAcjB,EAAAA,aAAY,WAC5BK,IACAb,MAAAA,GAAAA,EAAWqB,KACZ,CAACrB,EAAUa,EAAOQ,IAEd,MAAA,CACHE,OAAMA,EACNF,MAAKA,EACLI,YAAWA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var o=require("./ButtonLeft-7e1f216a.js"),e=require("react");function n(o){if(o&&o.__esModule)return o;var e=Object.create(null);return o&&Object.keys(o).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(o,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return o[n]}})}})),e.default=o,Object.freeze(e)}exports.useLeafletMap=function(r){var t=e.useState(null),l=t[0],i=t[1],a=e.useState(null),u=a[0],c=a[1],s=e.useState(null),d=s[0],f=s[1],v=e.useState(null),m=v[0],g=v[1],k=e.useRef(null),h=e.useState(!1),p=h[0],b=h[1],z=e.useRef(!1),y=e.useRef(null),M=e.useMemo((function(){return Object.keys(r).forEach((function(o){void 0===r[o]&&delete r[o]})),o.__assign({center:[0,0],zoom:2.5,touchZoom:!0,scrollWheelZoom:!1,showZoomControls:!0,zoomControlPosition:"topleft",onlyScrollOnFocus:!0,url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",attribution:'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',markers:[],fitBoundsPadding:[20,20]},r)}),[r]);e.useEffect((function(){if(l){o.__awaiter(void 0,void 0,void 0,(function(){var e,r,t;return o.__generator(this,(function(o){switch(o.label){case 0:return u||!l||z.current?[2]:(z.current=!0,[4,Promise.resolve().then((function(){return n(require("leaflet"))}))]);case 1:return(e=o.sent())?(c(e),r=e.map(l,{center:M.center,zoom:M.zoom,touchZoom:M.touchZoom,scrollWheelZoom:M.scrollWheelZoom,zoomControl:!1,minZoom:M.minZoom,maxZoom:M.maxZoom}),M.showZoomControls&&e.control.zoom({position:M.zoomControlPosition}).addTo(r),r.once("focus",(function(){M.onlyScrollOnFocus&&r.scrollWheelZoom.enable()})),r.once("blur",(function(){M.onlyScrollOnFocus&&r.scrollWheelZoom.disable()})),r.on("click",(function(o){var e;null===(e=M.onClick)||void 0===e||e.call(M,o,r.getZoom())})),f(r),e.tileLayer(M.url,{attribution:M.attribution}).addTo(r),(t=new e.FeatureGroup).addTo(r),g(t),[2]):[2]}}))}))}}),[u,l,M,M.attribution,M.center,M.onlyScrollOnFocus,M.scrollWheelZoom,M.touchZoom,M.url,M.zoom]),e.useEffect((function(){var o;if(d&&m){m.clearLayers(),null===(o=M.markers)||void 0===o||o.forEach((function(o){var e,n,r=o.position,t=o.icon,l=o.id,i=o.isInteractive;if((null==t?void 0:t.url)&&(null==t?void 0:t.size)&&r){var a=l===M.activeMarkerId,c=u.icon({iconUrl:t.url,iconSize:a?t.sizeActive:t.size,iconAnchor:a?t.anchorActive:null==t?void 0:t.anchor}),s=u.marker(u.latLng(r[0],r[1]),{icon:c,riseOnHover:!0,interactive:i}).addTo(d);i&&s.on("click",(function(){var o;null===(o=M.onMarkerClick)||void 0===o||o.call(M,l)})),m.addLayer(s),u&&d&&m&&(p?M.activeMarkerId&&M.activeMarkerId!==(null==k?void 0:k.current)&&(k.current=M.activeMarkerId,null===(n=M.onActiveMarkerChanged)||void 0===n||n.call(M,{markerId:M.activeMarkerId})):(null===(e=M.onReady)||void 0===e||e.call(M),b(!0),M.activeMarkerId&&(k.current=M.activeMarkerId)))}}));var e=function(){var o,e,n;if(d&&M.restrictToMarkersArea){var r=null===(o=null==m?void 0:m.getBounds())||void 0===o?void 0:o.pad(.3);if(r&&r.isValid()){var t=r.getNorth(),l=r.getEast(),i=r.getSouth(),a=r.getWest(),u=d.getCenter(),c=null,s=null;(u.lat<i||u.lat>t)&&y.current&&(c=null===(e=y.current)||void 0===e?void 0:e.lat),(u.lng<a||u.lng>l)&&y.current&&(s=null===(n=y.current)||void 0===n?void 0:n.lng),null===s&&null===c||(null!==s&&(u.lng=s),null!==c&&(u.lat=c),d.panTo(u,{animate:!1})),y.current=u}}};if(M.restrictToMarkersArea)(null==m?void 0:m.getBounds()).isValid()&&d.on("drag",e);return function(){y.current=null,null==d||d.off("drag",e)}}}),[u,p,d,M,M.markers,m]);var Z=e.useCallback((function(){try{d&&m&&d.fitBounds(m.getBounds(),{padding:u.point(M.fitBoundsPadding)})}catch(o){console.log(o)}}),[u,d,M.fitBoundsPadding,m]),C=e.useCallback((function(o){var e,n=o||M.zoom,r=null===(e=M.markers)||void 0===e?void 0:e.find((function(o){return o.id===M.activeMarkerId}));r&&(null==d||d.flyTo(r.position,n))}),[d,M.activeMarkerId,M.markers,M.zoom]),S=e.useCallback((function(o,e){var n=e||M.zoom;o?null==d||d.flyTo(o,n):C(n)}),[C,d,M.zoom]),O=e.useCallback((function(o){o&&(null==d||d.panTo(o))}),[d]),T=e.useCallback((function(){null==d||d.invalidateSize()}),[d]),I=e.useCallback((function(){return(null==d?void 0:d.getZoom())||M.zoom}),[d,M.zoom]);return{setContainer:i,flyToActive:C,flyToPosition:S,panToPosition:O,showAllMarkers:Z,recalculateMapSize:T,getCurrentZoom:I,isLoaded:p}};
2
+ //# sourceMappingURL=useLeafletMap-145217ee.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLeafletMap-514304b6.js","sources":["../src/utils/useLeafletMap.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FeatureGroup,\n LatLng,\n LeafletMouseEvent,\n Map,\n Marker,\n MarkerOptions,\n} from 'leaflet';\n\nexport interface LeafletMapSettings {\n center: [number, number];\n zoom: number;\n minZoom?: number;\n maxZoom?: number;\n touchZoom: boolean;\n scrollWheelZoom: boolean;\n onlyScrollOnFocus: boolean;\n url: string;\n attribution: string;\n markers: Array<LeafletMapMarker>;\n activeMarkerId?: string;\n fitBoundsPadding: [number, number];\n restrictToMarkersArea?: boolean;\n showZoomControls?: boolean;\n zoomControlPosition?: 'bottomleft' | 'bottomright' | 'topleft' | 'topright';\n onMarkerClick?: (markerId: string) => void;\n onActiveMarkerChanged?: (props: { markerId: string }) => void;\n onReady?: () => void;\n onClick?: (ev: LeafletMouseEvent, currentZoom: number) => void;\n}\n\nexport interface LeafletMapMarker {\n id: string;\n position: [number, number];\n isInteractive?: boolean;\n icon?: {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n };\n popup?: {\n text: string;\n };\n}\n\nconst useLeafletMap = (settings: Partial<LeafletMapSettings>) => {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [L, setLeaflet] = useState<any>(null);\n const [map, setMap] = useState<Map | null>(null);\n const [markersLayerGroup, setMarkersLayerGroup] =\n useState<FeatureGroup<any> | null>(null);\n const prevMarkerId = useRef<string | null>(null);\n const [isLoaded, setLoaded] = useState<boolean>(false);\n const isRenderedRef = useRef<boolean>(false);\n\n const lastValidCenter = useRef<LatLng | null>(null);\n\n const mapSettings: LeafletMapSettings = useMemo(() => {\n // removing undefined keys\n Object.keys(settings).forEach((key) => {\n if (settings[key] === undefined) {\n delete settings[key];\n }\n });\n\n return {\n center: [0, 0],\n zoom: 2.5,\n touchZoom: true,\n scrollWheelZoom: false,\n showZoomControls: true,\n zoomControlPosition: 'topleft',\n onlyScrollOnFocus: true,\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n attribution:\n '&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors',\n markers: [],\n fitBoundsPadding: [20, 20], // 0 = TopLeft, 1 = BottomRight\n ...settings,\n };\n }, [settings]);\n\n useEffect(() => {\n if (!container) return;\n\n const init = async () => {\n if (L || !container || isRenderedRef.current) return;\n isRenderedRef.current = true;\n\n // init leaflet\n const leaflet = await import('leaflet');\n if (!leaflet) return;\n\n // set leaflet state\n setLeaflet(leaflet);\n\n // setup map\n const map = leaflet.map(container, {\n center: mapSettings.center,\n zoom: mapSettings.zoom,\n touchZoom: mapSettings.touchZoom,\n scrollWheelZoom: mapSettings.scrollWheelZoom,\n zoomControl: false,\n minZoom: mapSettings.minZoom,\n maxZoom: mapSettings.maxZoom,\n });\n\n if (mapSettings.showZoomControls) {\n leaflet.control\n .zoom({\n position: mapSettings.zoomControlPosition,\n })\n .addTo(map);\n }\n\n // activate map scrolling on focus\n map.once('focus', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.enable();\n }\n });\n\n // deactivate map scrolling on focus is lost\n map.once('blur', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.disable();\n }\n });\n\n map.on('click', (ev) => {\n mapSettings.onClick?.(ev as LeafletMouseEvent, map.getZoom());\n });\n\n // set map state\n setMap(map);\n\n // add map layer from map provider\n leaflet\n .tileLayer(mapSettings.url, {\n attribution: mapSettings.attribution,\n })\n .addTo(map);\n\n // setup layer for markers\n const group = new leaflet.FeatureGroup();\n group.addTo(map);\n\n setMarkersLayerGroup(group);\n };\n\n init();\n }, [\n L,\n container,\n mapSettings,\n mapSettings.attribution,\n mapSettings.center,\n mapSettings.onlyScrollOnFocus,\n mapSettings.scrollWheelZoom,\n mapSettings.touchZoom,\n mapSettings.url,\n mapSettings.zoom,\n ]);\n\n useEffect(() => {\n if (!map || !markersLayerGroup) return;\n\n markersLayerGroup.clearLayers();\n mapSettings.markers?.forEach(\n ({ position, icon, id, isInteractive }) => {\n if (!icon?.url || !icon?.size || !position) return;\n const isActive = id === mapSettings.activeMarkerId;\n\n const markerIcon = L.icon({\n iconUrl: icon.url,\n\n iconSize: isActive ? icon.sizeActive : icon.size, // size of the icon\n // shadowSize: [50, 64], // size of the shadow\n iconAnchor: isActive ? icon.anchorActive : icon?.anchor, // point of the icon which will correspond to marker's location\n // shadowAnchor: [4, 62], // the same for the shadow\n // popupAnchor: [0, -16], // point from which the popup should open relative to the iconAnchor\n });\n\n const marker: Marker = L.marker(\n L.latLng(position[0], position[1]),\n {\n icon: markerIcon,\n riseOnHover: true,\n interactive: isInteractive,\n } as MarkerOptions\n ).addTo(map);\n\n if (isInteractive) {\n marker.on('click', () => {\n mapSettings.onMarkerClick?.(id);\n });\n }\n\n // add marker to markers layer\n markersLayerGroup.addLayer(marker);\n\n if (L && map && markersLayerGroup) {\n if (!isLoaded) {\n // on first load\n mapSettings.onReady?.();\n setLoaded(true);\n if (mapSettings.activeMarkerId) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n }\n } else {\n // check if active marker changed\n if (\n mapSettings.activeMarkerId &&\n mapSettings.activeMarkerId !== prevMarkerId?.current\n ) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n\n mapSettings.onActiveMarkerChanged?.({\n markerId: mapSettings.activeMarkerId,\n });\n }\n }\n }\n }\n );\n\n const handleMapMove = () => {\n if (!map) return;\n if (!mapSettings.restrictToMarkersArea) return;\n\n const markersBounds = markersLayerGroup?.getBounds()?.pad(0.3);\n if (!markersBounds || !markersBounds.isValid()) return;\n\n const northEdge = markersBounds.getNorth();\n const eastEdge = markersBounds.getEast();\n const southEdge = markersBounds.getSouth();\n const westEdge = markersBounds.getWest();\n\n const center = map.getCenter();\n let newLat: number | null = null;\n let newLng: number | null = null;\n\n // on latitude overshoot\n if (\n (center.lat < southEdge || center.lat > northEdge) &&\n lastValidCenter.current\n ) {\n newLat = lastValidCenter.current?.lat;\n }\n\n // on longitude overshoot\n if (\n (center.lng < westEdge || center.lng > eastEdge) &&\n lastValidCenter.current\n ) {\n newLng = lastValidCenter.current?.lng;\n }\n\n if (newLng !== null || newLat !== null) {\n if (newLng !== null) center.lng = newLng;\n if (newLat !== null) center.lat = newLat;\n\n map.panTo(center, { animate: false });\n }\n\n lastValidCenter.current = center;\n };\n\n // if set restrict map movement to markers\n if (mapSettings.restrictToMarkersArea) {\n const markersBounds = markersLayerGroup?.getBounds();\n\n if (markersBounds.isValid()) {\n map.on('drag', handleMapMove);\n }\n }\n\n return () => {\n lastValidCenter.current = null;\n map?.off('drag', handleMapMove);\n };\n }, [L, isLoaded, map, mapSettings, mapSettings.markers, markersLayerGroup]);\n\n /**\n * Adjust zoom to show all markers\n */\n const showAllMarkers = useCallback(() => {\n try {\n if (map && markersLayerGroup) {\n map.fitBounds(markersLayerGroup.getBounds(), {\n padding: L.point(mapSettings.fitBoundsPadding),\n });\n }\n } catch (err) {\n console.log(err);\n }\n }, [L, map, mapSettings.fitBoundsPadding, markersLayerGroup]);\n\n /**\n * Pan and zoom to active marker position on map\n * @param zoom\n */\n const flyToActive = useCallback(\n (zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n const marker = mapSettings.markers?.find(\n (m) => m.id === mapSettings.activeMarkerId\n );\n if (marker) map?.flyTo(marker.position, mapZoom);\n },\n [map, mapSettings.activeMarkerId, mapSettings.markers, mapSettings.zoom]\n );\n\n /**\n * Pan and zoom to marker position on map\n * @param position\n * @param zoom\n */\n const flyToPosition = useCallback(\n (position?: [number, number], zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n\n if (position) map?.flyTo(position, mapZoom);\n else flyToActive(mapZoom);\n },\n [flyToActive, map, mapSettings.zoom]\n );\n\n /**\n * Pan to marker position on map\n * @param position\n */\n const panToPosition = useCallback(\n (position?: [number, number]) => {\n if (position) map?.panTo(position);\n },\n [map]\n );\n\n /** Recalculate map size */\n const recalculateMapSize = useCallback(() => {\n map?.invalidateSize();\n }, [map]);\n\n const getCurrentZoom = useCallback(() => {\n return map?.getZoom() || mapSettings.zoom;\n }, [map, mapSettings.zoom]);\n\n return {\n setContainer,\n flyToActive,\n flyToPosition,\n panToPosition,\n showAllMarkers,\n recalculateMapSize,\n getCurrentZoom,\n isLoaded,\n };\n};\n\nexport default useLeafletMap;\n"],"names":["settings","_a","useState","container","setContainer","_b","L","setLeaflet","_c","map","setMap","_d","markersLayerGroup","setMarkersLayerGroup","prevMarkerId","useRef","_e","isLoaded","setLoaded","isRenderedRef","lastValidCenter","mapSettings","useMemo","Object","keys","forEach","key","undefined","__assign","center","zoom","touchZoom","scrollWheelZoom","showZoomControls","zoomControlPosition","onlyScrollOnFocus","url","attribution","markers","fitBoundsPadding","useEffect","__awaiter","current","Promise","resolve","then","_interopNamespace","require","leaflet","sent","zoomControl","minZoom","maxZoom","control","position","addTo","once","enable","disable","on","ev","onClick","call","getZoom","tileLayer","group","FeatureGroup","clearLayers","icon","id","isInteractive","size","isActive","activeMarkerId","markerIcon","iconUrl","iconSize","sizeActive","iconAnchor","anchorActive","anchor","marker","latLng","riseOnHover","interactive","onMarkerClick","addLayer","onActiveMarkerChanged","markerId","onReady","handleMapMove","restrictToMarkersArea","markersBounds","getBounds","pad","isValid","northEdge","getNorth","eastEdge","getEast","southEdge","getSouth","westEdge","getWest","getCenter","newLat","newLng","lat","lng","panTo","animate","off","showAllMarkers","useCallback","fitBounds","padding","point","err","console","log","flyToActive","mapZoom","find","m","flyTo","flyToPosition","panToPosition","recalculateMapSize","invalidateSize","getCurrentZoom"],"mappings":"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"}
1
+ {"version":3,"file":"useLeafletMap-145217ee.js","sources":["../src/utils/useLeafletMap.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FeatureGroup,\n LatLng,\n LeafletMouseEvent,\n Map,\n Marker,\n MarkerOptions,\n} from 'leaflet';\n\nexport interface LeafletMapSettings {\n center: [number, number];\n zoom: number;\n minZoom?: number;\n maxZoom?: number;\n touchZoom: boolean;\n scrollWheelZoom: boolean;\n onlyScrollOnFocus: boolean;\n url: string;\n attribution: string;\n markers: Array<LeafletMapMarker>;\n activeMarkerId?: string;\n fitBoundsPadding: [number, number];\n restrictToMarkersArea?: boolean;\n showZoomControls?: boolean;\n zoomControlPosition?: 'bottomleft' | 'bottomright' | 'topleft' | 'topright';\n onMarkerClick?: (markerId: string) => void;\n onActiveMarkerChanged?: (props: { markerId: string }) => void;\n onReady?: () => void;\n onClick?: (ev: LeafletMouseEvent, currentZoom: number) => void;\n}\n\nexport interface LeafletMapMarker {\n id: string;\n position: [number, number];\n isInteractive?: boolean;\n icon?: {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n };\n popup?: {\n text: string;\n };\n}\n\nconst useLeafletMap = (settings: Partial<LeafletMapSettings>) => {\n const [container, setContainer] = useState<HTMLElement | null>(null);\n const [L, setLeaflet] = useState<any>(null);\n const [map, setMap] = useState<Map | null>(null);\n const [markersLayerGroup, setMarkersLayerGroup] =\n useState<FeatureGroup<any> | null>(null);\n const prevMarkerId = useRef<string | null>(null);\n const [isLoaded, setLoaded] = useState<boolean>(false);\n const isRenderedRef = useRef<boolean>(false);\n\n const lastValidCenter = useRef<LatLng | null>(null);\n\n const mapSettings: LeafletMapSettings = useMemo(() => {\n // removing undefined keys\n Object.keys(settings).forEach((key) => {\n if (settings[key] === undefined) {\n delete settings[key];\n }\n });\n\n return {\n center: [0, 0],\n zoom: 2.5,\n touchZoom: true,\n scrollWheelZoom: false,\n showZoomControls: true,\n zoomControlPosition: 'topleft',\n onlyScrollOnFocus: true,\n url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n attribution:\n '&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors',\n markers: [],\n fitBoundsPadding: [20, 20], // 0 = TopLeft, 1 = BottomRight\n ...settings,\n };\n }, [settings]);\n\n useEffect(() => {\n if (!container) return;\n\n const init = async () => {\n if (L || !container || isRenderedRef.current) return;\n isRenderedRef.current = true;\n\n // init leaflet\n const leaflet = await import('leaflet');\n if (!leaflet) return;\n\n // set leaflet state\n setLeaflet(leaflet);\n\n // setup map\n const map = leaflet.map(container, {\n center: mapSettings.center,\n zoom: mapSettings.zoom,\n touchZoom: mapSettings.touchZoom,\n scrollWheelZoom: mapSettings.scrollWheelZoom,\n zoomControl: false,\n minZoom: mapSettings.minZoom,\n maxZoom: mapSettings.maxZoom,\n });\n\n if (mapSettings.showZoomControls) {\n leaflet.control\n .zoom({\n position: mapSettings.zoomControlPosition,\n })\n .addTo(map);\n }\n\n // activate map scrolling on focus\n map.once('focus', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.enable();\n }\n });\n\n // deactivate map scrolling on focus is lost\n map.once('blur', () => {\n if (mapSettings.onlyScrollOnFocus) {\n map.scrollWheelZoom.disable();\n }\n });\n\n map.on('click', (ev) => {\n mapSettings.onClick?.(ev as LeafletMouseEvent, map.getZoom());\n });\n\n // set map state\n setMap(map);\n\n // add map layer from map provider\n leaflet\n .tileLayer(mapSettings.url, {\n attribution: mapSettings.attribution,\n })\n .addTo(map);\n\n // setup layer for markers\n const group = new leaflet.FeatureGroup();\n group.addTo(map);\n\n setMarkersLayerGroup(group);\n };\n\n init();\n }, [\n L,\n container,\n mapSettings,\n mapSettings.attribution,\n mapSettings.center,\n mapSettings.onlyScrollOnFocus,\n mapSettings.scrollWheelZoom,\n mapSettings.touchZoom,\n mapSettings.url,\n mapSettings.zoom,\n ]);\n\n useEffect(() => {\n if (!map || !markersLayerGroup) return;\n\n markersLayerGroup.clearLayers();\n mapSettings.markers?.forEach(\n ({ position, icon, id, isInteractive }) => {\n if (!icon?.url || !icon?.size || !position) return;\n const isActive = id === mapSettings.activeMarkerId;\n\n const markerIcon = L.icon({\n iconUrl: icon.url,\n\n iconSize: isActive ? icon.sizeActive : icon.size, // size of the icon\n // shadowSize: [50, 64], // size of the shadow\n iconAnchor: isActive ? icon.anchorActive : icon?.anchor, // point of the icon which will correspond to marker's location\n // shadowAnchor: [4, 62], // the same for the shadow\n // popupAnchor: [0, -16], // point from which the popup should open relative to the iconAnchor\n });\n\n const marker: Marker = L.marker(\n L.latLng(position[0], position[1]),\n {\n icon: markerIcon,\n riseOnHover: true,\n interactive: isInteractive,\n } as MarkerOptions\n ).addTo(map);\n\n if (isInteractive) {\n marker.on('click', () => {\n mapSettings.onMarkerClick?.(id);\n });\n }\n\n // add marker to markers layer\n markersLayerGroup.addLayer(marker);\n\n if (L && map && markersLayerGroup) {\n if (!isLoaded) {\n // on first load\n mapSettings.onReady?.();\n setLoaded(true);\n if (mapSettings.activeMarkerId) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n }\n } else {\n // check if active marker changed\n if (\n mapSettings.activeMarkerId &&\n mapSettings.activeMarkerId !== prevMarkerId?.current\n ) {\n prevMarkerId.current = mapSettings.activeMarkerId;\n\n mapSettings.onActiveMarkerChanged?.({\n markerId: mapSettings.activeMarkerId,\n });\n }\n }\n }\n }\n );\n\n const handleMapMove = () => {\n if (!map) return;\n if (!mapSettings.restrictToMarkersArea) return;\n\n const markersBounds = markersLayerGroup?.getBounds()?.pad(0.3);\n if (!markersBounds || !markersBounds.isValid()) return;\n\n const northEdge = markersBounds.getNorth();\n const eastEdge = markersBounds.getEast();\n const southEdge = markersBounds.getSouth();\n const westEdge = markersBounds.getWest();\n\n const center = map.getCenter();\n let newLat: number | null = null;\n let newLng: number | null = null;\n\n // on latitude overshoot\n if (\n (center.lat < southEdge || center.lat > northEdge) &&\n lastValidCenter.current\n ) {\n newLat = lastValidCenter.current?.lat;\n }\n\n // on longitude overshoot\n if (\n (center.lng < westEdge || center.lng > eastEdge) &&\n lastValidCenter.current\n ) {\n newLng = lastValidCenter.current?.lng;\n }\n\n if (newLng !== null || newLat !== null) {\n if (newLng !== null) center.lng = newLng;\n if (newLat !== null) center.lat = newLat;\n\n map.panTo(center, { animate: false });\n }\n\n lastValidCenter.current = center;\n };\n\n // if set restrict map movement to markers\n if (mapSettings.restrictToMarkersArea) {\n const markersBounds = markersLayerGroup?.getBounds();\n\n if (markersBounds.isValid()) {\n map.on('drag', handleMapMove);\n }\n }\n\n return () => {\n lastValidCenter.current = null;\n map?.off('drag', handleMapMove);\n };\n }, [L, isLoaded, map, mapSettings, mapSettings.markers, markersLayerGroup]);\n\n /**\n * Adjust zoom to show all markers\n */\n const showAllMarkers = useCallback(() => {\n try {\n if (map && markersLayerGroup) {\n map.fitBounds(markersLayerGroup.getBounds(), {\n padding: L.point(mapSettings.fitBoundsPadding),\n });\n }\n } catch (err) {\n console.log(err);\n }\n }, [L, map, mapSettings.fitBoundsPadding, markersLayerGroup]);\n\n /**\n * Pan and zoom to active marker position on map\n * @param zoom\n */\n const flyToActive = useCallback(\n (zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n const marker = mapSettings.markers?.find(\n (m) => m.id === mapSettings.activeMarkerId\n );\n if (marker) map?.flyTo(marker.position, mapZoom);\n },\n [map, mapSettings.activeMarkerId, mapSettings.markers, mapSettings.zoom]\n );\n\n /**\n * Pan and zoom to marker position on map\n * @param position\n * @param zoom\n */\n const flyToPosition = useCallback(\n (position?: [number, number], zoom?: number) => {\n const mapZoom = zoom || mapSettings.zoom;\n\n if (position) map?.flyTo(position, mapZoom);\n else flyToActive(mapZoom);\n },\n [flyToActive, map, mapSettings.zoom]\n );\n\n /**\n * Pan to marker position on map\n * @param position\n */\n const panToPosition = useCallback(\n (position?: [number, number]) => {\n if (position) map?.panTo(position);\n },\n [map]\n );\n\n /** Recalculate map size */\n const recalculateMapSize = useCallback(() => {\n map?.invalidateSize();\n }, [map]);\n\n const getCurrentZoom = useCallback(() => {\n return map?.getZoom() || mapSettings.zoom;\n }, [map, mapSettings.zoom]);\n\n return {\n setContainer,\n flyToActive,\n flyToPosition,\n panToPosition,\n showAllMarkers,\n recalculateMapSize,\n getCurrentZoom,\n isLoaded,\n };\n};\n\nexport default useLeafletMap;\n"],"names":["settings","_a","useState","container","setContainer","_b","L","setLeaflet","_c","map","setMap","_d","markersLayerGroup","setMarkersLayerGroup","prevMarkerId","useRef","_e","isLoaded","setLoaded","isRenderedRef","lastValidCenter","mapSettings","useMemo","Object","keys","forEach","key","undefined","__assign","center","zoom","touchZoom","scrollWheelZoom","showZoomControls","zoomControlPosition","onlyScrollOnFocus","url","attribution","markers","fitBoundsPadding","useEffect","__awaiter","current","Promise","resolve","then","_interopNamespace","require","leaflet","sent","zoomControl","minZoom","maxZoom","control","position","addTo","once","enable","disable","on","ev","onClick","call","getZoom","tileLayer","group","FeatureGroup","clearLayers","icon","id","isInteractive","size","isActive","activeMarkerId","markerIcon","iconUrl","iconSize","sizeActive","iconAnchor","anchorActive","anchor","marker","latLng","riseOnHover","interactive","onMarkerClick","addLayer","onActiveMarkerChanged","markerId","onReady","handleMapMove","restrictToMarkersArea","markersBounds","getBounds","pad","isValid","northEdge","getNorth","eastEdge","getEast","southEdge","getSouth","westEdge","getWest","getCenter","newLat","newLng","lat","lng","panTo","animate","off","showAllMarkers","useCallback","fitBounds","padding","point","err","console","log","flyToActive","mapZoom","find","m","flyTo","flyToPosition","panToPosition","recalculateMapSize","invalidateSize","getCurrentZoom"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./ButtonLeft-7e1f216a.js"),r=require("react"),n=require("./styles-271afb02.js"),t="undefined"!=typeof window&&void 0!==window.document,i=function(e,r){return t&&(r.length<=0||r.indexOf(e)>-1)&&("small"===e||window.matchMedia(n.mq[e]).matches)},a=function(e){return i("xxlarge",e)?"xxlarge":i("xlarge",e)?"xlarge":i("large",e)?"large":i("semilarge",e)?"semilarge":i("medium",e)?"medium":"small"},u=function(){return{small:!0,medium:window.matchMedia(n.mq.medium).matches,semilarge:window.matchMedia(n.mq.semilarge).matches,large:window.matchMedia(n.mq.large).matches,xlarge:window.matchMedia(n.mq.xlarge).matches,xxlarge:window.matchMedia(n.mq.xxlarge).matches}};exports.getMediaQuery=a,exports.isBrowser=t,exports.useDynamicMediaQueries=function(n){var t=r.useState((function(){return Object.keys(n).reduce((function(r,n){var t=e.__assign({},r);return t[n]=!1,t}),{})})),i=t[0],a=t[1];return r.useEffect((function(){var e=function(){var e={};for(var r in n)e[r]=window.matchMedia(n[r]).matches;return e},r=function(e){a((function(r){for(var n in e){if(void 0===r[n])return e;if(e[n]!==r[n])return e}return r}))},t=function(){r(e())};return window.addEventListener("resize",t),r(e()),function(){return window.removeEventListener("resize",t)}}),[n,i]),i},exports.useMediaQueries=function(){var e=r.useState({small:!0,medium:!1,semilarge:!1,large:!1,xlarge:!1,xxlarge:!1}),t=e[0],i=e[1];return r.useEffect((function(){var e=function(){var e=u();i((function(r){return function(e,r){var t=!1;for(var i in n.mq)if(e[i]!==r[i]){t=!0;break}return!t}(r,e)?r:e}))};return window.addEventListener("resize",e),i(u()),function(){return window.removeEventListener("resize",e)}}),[]),t},exports.useMediaQuery=function(e){var n=r.useMemo((function(){return e||[]}),[e]),t=r.useState(),i=t[0],u=t[1];return r.useEffect((function(){var e=function(){var e=a(n);e!==i&&u(e)};return window.addEventListener("resize",e),u(a(n)),function(){return window.removeEventListener("resize",e)}}),[n,i]),i};
2
+ //# sourceMappingURL=useMediaQuery-dd367f98.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaQuery-619d7203.js","sources":["../src/utils/useMediaQuery.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { MediaQueryType, mq } from './styles';\n\nexport const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// *****************\n// useBreakpoint\n// *****************\nconst checkMq = (cmq: MediaQueryType, checkMqs: MediaQueryType[]) => {\n return (\n isBrowser &&\n (checkMqs.length <= 0 || checkMqs.indexOf(cmq) > -1) &&\n (cmq !== 'small' ? window.matchMedia(mq[cmq]).matches : true)\n );\n};\n\nexport const getMediaQuery = (checkMqs: MediaQueryType[]): MediaQueryType => {\n if (checkMq('xxlarge', checkMqs)) {\n return 'xxlarge';\n } else if (checkMq('xlarge', checkMqs)) {\n return 'xlarge';\n } else if (checkMq('large', checkMqs)) {\n return 'large';\n } else if (checkMq('semilarge', checkMqs)) {\n return 'semilarge';\n } else if (checkMq('medium', checkMqs)) {\n return 'medium';\n } else {\n return 'small';\n }\n};\n\nexport const getMediaQueries = (): { [key in MediaQueryType]: boolean } => {\n return {\n small: true,\n medium: window.matchMedia(mq['medium']).matches,\n semilarge: window.matchMedia(mq['semilarge']).matches,\n large: window.matchMedia(mq['large']).matches,\n xlarge: window.matchMedia(mq['xlarge']).matches,\n xxlarge: window.matchMedia(mq['xxlarge']).matches,\n };\n};\n\nconst isEqual = (\n currentMqs: { [key in MediaQueryType]: boolean },\n newMqs: { [key in MediaQueryType]: boolean }\n) => {\n let isDifferent = false;\n\n for (const key in mq) {\n if (currentMqs[key] !== newMqs[key]) {\n isDifferent = true;\n break;\n }\n }\n\n return !isDifferent;\n};\n\nexport const useMediaQueries = () => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in MediaQueryType]: boolean }\n >({\n small: true,\n medium: false,\n semilarge: false,\n large: false,\n xlarge: false,\n xxlarge: false,\n });\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQueries = getMediaQueries();\n setMediaQueries((prev) => {\n if (!isEqual(prev, newMediaQueries)) {\n return newMediaQueries;\n } else return prev;\n });\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQueries(getMediaQueries());\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return mediaQueries;\n};\n\nexport const useMediaQuery = (mqs?: MediaQueryType[]) => {\n const checkMqs = useMemo(() => mqs || [], [mqs]);\n const [mediaQuery, setMediaQuery] = useState<MediaQueryType | undefined>();\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQuery = getMediaQuery(checkMqs);\n\n if (newMediaQuery !== mediaQuery) {\n setMediaQuery(newMediaQuery);\n }\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQuery(getMediaQuery(checkMqs));\n\n return () => window.removeEventListener('resize', handleResize);\n }, [checkMqs, mediaQuery]);\n\n return mediaQuery;\n};\n\nexport interface MediaQueries {\n [key: string]: string;\n}\n\nexport const useDynamicMediaQueries = <QueryMap extends MediaQueries>(\n mq: QueryMap\n) => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in keyof QueryMap]: boolean }\n >(() => {\n return Object.keys(mq).reduce((acc, current) => {\n const copy = { ...acc };\n copy[current] = false;\n return copy;\n }, {}) as Record<keyof QueryMap, boolean>;\n });\n\n useEffect(() => {\n const getMq = () => {\n const newQueryState = {};\n\n for (const key in mq) {\n newQueryState[key as string] = window.matchMedia(\n mq[key]\n ).matches;\n }\n return newQueryState as Record<keyof QueryMap, boolean>;\n };\n\n const setQueries = (newQueries: Record<keyof QueryMap, boolean>) => {\n setMediaQueries((prev) => {\n for (const key in newQueries) {\n if (prev[key] === undefined) return newQueries;\n if (newQueries[key] !== prev[key]) {\n return newQueries;\n }\n }\n return prev;\n });\n };\n\n const handleResize = () => {\n setQueries(getMq());\n };\n\n window.addEventListener('resize', handleResize);\n setQueries(getMq());\n\n return () => window.removeEventListener('resize', handleResize);\n }, [mq, mediaQueries]);\n\n return mediaQueries;\n};\n"],"names":["isBrowser","window","document","checkMq","cmq","checkMqs","length","indexOf","matchMedia","mq","matches","getMediaQuery","getMediaQueries","small","medium","semilarge","large","xlarge","xxlarge","_a","useState","Object","keys","reduce","acc","current","copy","__assign","mediaQueries","setMediaQueries","useEffect","getMq","newQueryState","key","setQueries","newQueries","prev","undefined","handleResize","addEventListener","removeEventListener","newMediaQueries","currentMqs","newMqs","isDifferent","isEqual","mqs","useMemo","mediaQuery","setMediaQuery","newMediaQuery"],"mappings":"wGAGaA,EACS,oBAAXC,aAAqD,IAApBA,OAAOC,SAK7CC,EAAU,SAACC,EAAqBC,GAClC,OACIL,IACCK,EAASC,QAAU,GAAKD,EAASE,QAAQH,IAAQ,KACzC,UAARA,GAAkBH,OAAOO,WAAWC,EAAAA,GAAGL,IAAMM,UAIzCC,EAAgB,SAACN,GAC1B,OAAIF,EAAQ,UAAWE,GACZ,UACAF,EAAQ,SAAUE,GAClB,SACAF,EAAQ,QAASE,GACjB,QACAF,EAAQ,YAAaE,GACrB,YACAF,EAAQ,SAAUE,GAClB,SAEA,SAIFO,EAAkB,WACpB,MAAA,CACHC,OAAO,EACPC,OAAQb,OAAOO,WAAWC,EAAEA,GAAA,QAAYC,QACxCK,UAAWd,OAAOO,WAAWC,EAAEA,GAAA,WAAeC,QAC9CM,MAAOf,OAAOO,WAAWC,EAAEA,GAAA,OAAWC,QACtCO,OAAQhB,OAAOO,WAAWC,EAAEA,GAAA,QAAYC,QACxCQ,QAASjB,OAAOO,WAAWC,EAAEA,GAAA,SAAaC,qFA6EZ,SAClCD,GAEM,IAAAU,EAAkCC,EAAAA,UAEtC,WACE,OAAOC,OAAOC,KAAKb,GAAIc,QAAO,SAACC,EAAKC,GAChC,IAAMC,EAAIC,EAAAA,SAAA,GAAQH,GAElB,OADAE,EAAKD,IAAW,EACTC,IACR,OAPAE,OAAcC,OA4CrB,OAlCAC,EAAAA,WAAU,WACAC,IAAAA,EAAQ,WACJC,IAAAA,EAAgB,GAEtB,IAAK,IAAMC,KAAOxB,EACduB,EAAcC,GAAiBhC,OAAOO,WAClCC,EAAGwB,IACLvB,QAEN,OAAOsB,GAGLE,EAAa,SAACC,GAChBN,GAAgB,SAACO,GACb,IAAK,IAAMH,KAAOE,EAAY,CACtBC,QAAcC,IAAdD,EAAKH,GAAoB,OAAOE,EAChCA,GAAAA,EAAWF,KAASG,EAAKH,GACzB,OAAOE,EAGf,OAAOC,MAITE,EAAe,WACjBJ,EAAWH,MAMf,OAHA9B,OAAOsC,iBAAiB,SAAUD,GAClCJ,EAAWH,KAEJ,WAAM,OAAA9B,OAAOuC,oBAAoB,SAAUF,MACnD,CAAC7B,EAAImB,IAEDA,2BAxGoB,WACrBT,IAAAA,EAAkCC,EAAAA,SAEtC,CACEP,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,QAAQ,EACRC,SAAS,IARNU,EAAYT,EAAA,GAAEU,OA2BrB,OAhBAC,EAAAA,WAAU,WACAQ,IAAAA,EAAe,WACXG,IAAAA,EAAkB7B,IACxBiB,GAAgB,SAACO,GACb,OAhCA,SACZM,EACAC,GAEIC,IAAAA,GAAc,EAElB,IAAK,IAAMX,KAAOxB,KACViC,GAAAA,EAAWT,KAASU,EAAOV,GAAM,CACjCW,GAAc,EACd,MAIR,OAAQA,EAmBSC,CAAQT,EAAMK,GAELL,EADHK,MAQnB,OAHAxC,OAAOsC,iBAAiB,SAAUD,GAClCT,EAAgBjB,KAET,WAAM,OAAAX,OAAOuC,oBAAoB,SAAUF,MACnD,IAEIV,yBAGkB,SAACkB,GAC1B,IAAMzC,EAAW0C,EAAAA,SAAQ,WAAMD,OAAAA,GAAO,KAAI,CAACA,IACrC3B,EAA8BC,EAAAA,WAA7B4B,EAAU7B,EAAA,GAAE8B,EAAa9B,EAAA,GAiBhC,OAfAW,EAAAA,WAAU,WACAQ,IAAAA,EAAe,WACjB,IAAMY,EAAgBvC,EAAcN,GAEhC6C,IAAkBF,GAClBC,EAAcC,IAOtB,OAHAjD,OAAOsC,iBAAiB,SAAUD,GAClCW,EAActC,EAAcN,IAErB,WAAM,OAAAJ,OAAOuC,oBAAoB,SAAUF,MACnD,CAACjC,EAAU2C,IAEPA"}
1
+ {"version":3,"file":"useMediaQuery-dd367f98.js","sources":["../src/utils/useMediaQuery.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\nimport { MediaQueryType, mq } from './styles';\n\nexport const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// *****************\n// useBreakpoint\n// *****************\nconst checkMq = (cmq: MediaQueryType, checkMqs: MediaQueryType[]) => {\n return (\n isBrowser &&\n (checkMqs.length <= 0 || checkMqs.indexOf(cmq) > -1) &&\n (cmq !== 'small' ? window.matchMedia(mq[cmq]).matches : true)\n );\n};\n\nexport const getMediaQuery = (checkMqs: MediaQueryType[]): MediaQueryType => {\n if (checkMq('xxlarge', checkMqs)) {\n return 'xxlarge';\n } else if (checkMq('xlarge', checkMqs)) {\n return 'xlarge';\n } else if (checkMq('large', checkMqs)) {\n return 'large';\n } else if (checkMq('semilarge', checkMqs)) {\n return 'semilarge';\n } else if (checkMq('medium', checkMqs)) {\n return 'medium';\n } else {\n return 'small';\n }\n};\n\nexport const getMediaQueries = (): { [key in MediaQueryType]: boolean } => {\n return {\n small: true,\n medium: window.matchMedia(mq['medium']).matches,\n semilarge: window.matchMedia(mq['semilarge']).matches,\n large: window.matchMedia(mq['large']).matches,\n xlarge: window.matchMedia(mq['xlarge']).matches,\n xxlarge: window.matchMedia(mq['xxlarge']).matches,\n };\n};\n\nconst isEqual = (\n currentMqs: { [key in MediaQueryType]: boolean },\n newMqs: { [key in MediaQueryType]: boolean }\n) => {\n let isDifferent = false;\n\n for (const key in mq) {\n if (currentMqs[key] !== newMqs[key]) {\n isDifferent = true;\n break;\n }\n }\n\n return !isDifferent;\n};\n\nexport const useMediaQueries = () => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in MediaQueryType]: boolean }\n >({\n small: true,\n medium: false,\n semilarge: false,\n large: false,\n xlarge: false,\n xxlarge: false,\n });\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQueries = getMediaQueries();\n setMediaQueries((prev) => {\n if (!isEqual(prev, newMediaQueries)) {\n return newMediaQueries;\n } else return prev;\n });\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQueries(getMediaQueries());\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return mediaQueries;\n};\n\nexport const useMediaQuery = (mqs?: MediaQueryType[]) => {\n const checkMqs = useMemo(() => mqs || [], [mqs]);\n const [mediaQuery, setMediaQuery] = useState<MediaQueryType | undefined>();\n\n useEffect(() => {\n const handleResize = () => {\n const newMediaQuery = getMediaQuery(checkMqs);\n\n if (newMediaQuery !== mediaQuery) {\n setMediaQuery(newMediaQuery);\n }\n };\n\n window.addEventListener('resize', handleResize);\n setMediaQuery(getMediaQuery(checkMqs));\n\n return () => window.removeEventListener('resize', handleResize);\n }, [checkMqs, mediaQuery]);\n\n return mediaQuery;\n};\n\nexport interface MediaQueries {\n [key: string]: string;\n}\n\nexport const useDynamicMediaQueries = <QueryMap extends MediaQueries>(\n mq: QueryMap\n) => {\n const [mediaQueries, setMediaQueries] = useState<\n { [key in keyof QueryMap]: boolean }\n >(() => {\n return Object.keys(mq).reduce((acc, current) => {\n const copy = { ...acc };\n copy[current] = false;\n return copy;\n }, {}) as Record<keyof QueryMap, boolean>;\n });\n\n useEffect(() => {\n const getMq = () => {\n const newQueryState = {};\n\n for (const key in mq) {\n newQueryState[key as string] = window.matchMedia(\n mq[key]\n ).matches;\n }\n return newQueryState as Record<keyof QueryMap, boolean>;\n };\n\n const setQueries = (newQueries: Record<keyof QueryMap, boolean>) => {\n setMediaQueries((prev) => {\n for (const key in newQueries) {\n if (prev[key] === undefined) return newQueries;\n if (newQueries[key] !== prev[key]) {\n return newQueries;\n }\n }\n return prev;\n });\n };\n\n const handleResize = () => {\n setQueries(getMq());\n };\n\n window.addEventListener('resize', handleResize);\n setQueries(getMq());\n\n return () => window.removeEventListener('resize', handleResize);\n }, [mq, mediaQueries]);\n\n return mediaQueries;\n};\n"],"names":["isBrowser","window","document","checkMq","cmq","checkMqs","length","indexOf","matchMedia","mq","matches","getMediaQuery","getMediaQueries","small","medium","semilarge","large","xlarge","xxlarge","_a","useState","Object","keys","reduce","acc","current","copy","__assign","mediaQueries","setMediaQueries","useEffect","getMq","newQueryState","key","setQueries","newQueries","prev","undefined","handleResize","addEventListener","removeEventListener","newMediaQueries","currentMqs","newMqs","isDifferent","isEqual","mqs","useMemo","mediaQuery","setMediaQuery","newMediaQuery"],"mappings":"4GAGaA,EACS,oBAAXC,aAAqD,IAApBA,OAAOC,SAK7CC,EAAU,SAACC,EAAqBC,GAClC,OACIL,IACCK,EAASC,QAAU,GAAKD,EAASE,QAAQH,IAAQ,KACzC,UAARA,GAAkBH,OAAOO,WAAWC,EAAAA,GAAGL,IAAMM,UAIzCC,EAAgB,SAACN,GAC1B,OAAIF,EAAQ,UAAWE,GACZ,UACAF,EAAQ,SAAUE,GAClB,SACAF,EAAQ,QAASE,GACjB,QACAF,EAAQ,YAAaE,GACrB,YACAF,EAAQ,SAAUE,GAClB,SAEA,SAIFO,EAAkB,WACpB,MAAA,CACHC,OAAO,EACPC,OAAQb,OAAOO,WAAWC,EAAEA,GAAA,QAAYC,QACxCK,UAAWd,OAAOO,WAAWC,EAAEA,GAAA,WAAeC,QAC9CM,MAAOf,OAAOO,WAAWC,EAAEA,GAAA,OAAWC,QACtCO,OAAQhB,OAAOO,WAAWC,EAAEA,GAAA,QAAYC,QACxCQ,QAASjB,OAAOO,WAAWC,EAAEA,GAAA,SAAaC,qFA6EZ,SAClCD,GAEM,IAAAU,EAAkCC,EAAAA,UAEtC,WACE,OAAOC,OAAOC,KAAKb,GAAIc,QAAO,SAACC,EAAKC,GAChC,IAAMC,EAAIC,EAAAA,SAAA,GAAQH,GAElB,OADAE,EAAKD,IAAW,EACTC,IACR,OAPAE,OAAcC,OA4CrB,OAlCAC,EAAAA,WAAU,WACAC,IAAAA,EAAQ,WACJC,IAAAA,EAAgB,GAEtB,IAAK,IAAMC,KAAOxB,EACduB,EAAcC,GAAiBhC,OAAOO,WAClCC,EAAGwB,IACLvB,QAEN,OAAOsB,GAGLE,EAAa,SAACC,GAChBN,GAAgB,SAACO,GACb,IAAK,IAAMH,KAAOE,EAAY,CACtBC,QAAcC,IAAdD,EAAKH,GAAoB,OAAOE,EAChCA,GAAAA,EAAWF,KAASG,EAAKH,GACzB,OAAOE,EAGf,OAAOC,MAITE,EAAe,WACjBJ,EAAWH,MAMf,OAHA9B,OAAOsC,iBAAiB,SAAUD,GAClCJ,EAAWH,KAEJ,WAAM,OAAA9B,OAAOuC,oBAAoB,SAAUF,MACnD,CAAC7B,EAAImB,IAEDA,2BAxGoB,WACrBT,IAAAA,EAAkCC,EAAAA,SAEtC,CACEP,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,QAAQ,EACRC,SAAS,IARNU,EAAYT,EAAA,GAAEU,OA2BrB,OAhBAC,EAAAA,WAAU,WACAQ,IAAAA,EAAe,WACXG,IAAAA,EAAkB7B,IACxBiB,GAAgB,SAACO,GACb,OAhCA,SACZM,EACAC,GAEIC,IAAAA,GAAc,EAElB,IAAK,IAAMX,KAAOxB,KACViC,GAAAA,EAAWT,KAASU,EAAOV,GAAM,CACjCW,GAAc,EACd,MAIR,OAAQA,EAmBSC,CAAQT,EAAMK,GAELL,EADHK,MAQnB,OAHAxC,OAAOsC,iBAAiB,SAAUD,GAClCT,EAAgBjB,KAET,WAAM,OAAAX,OAAOuC,oBAAoB,SAAUF,MACnD,IAEIV,yBAGkB,SAACkB,GAC1B,IAAMzC,EAAW0C,EAAAA,SAAQ,WAAMD,OAAAA,GAAO,KAAI,CAACA,IACrC3B,EAA8BC,EAAAA,WAA7B4B,EAAU7B,EAAA,GAAE8B,EAAa9B,EAAA,GAiBhC,OAfAW,EAAAA,WAAU,WACAQ,IAAAA,EAAe,WACjB,IAAMY,EAAgBvC,EAAcN,GAEhC6C,IAAkBF,GAClBC,EAAcC,IAOtB,OAHAjD,OAAOsC,iBAAiB,SAAUD,GAClCW,EAActC,EAAcN,IAErB,WAAM,OAAAJ,OAAOuC,oBAAoB,SAAUF,MACnD,CAACjC,EAAU2C,IAEPA"}
@@ -1,7 +1,7 @@
1
- import { a as __makeTemplateObject } from './Filter-19220970.js';
1
+ import { a as __makeTemplateObject } from './ButtonLeft-a9a132f5.js';
2
2
  import React__default from 'react';
3
3
  import styled from 'styled-components';
4
- import { m as mq, s as spacings } from './styles-1f1841ef.js';
4
+ import { m as mq, s as spacings } from './styles-f3ba5bae.js';
5
5
 
6
6
  var View = styled.div.withConfig({
7
7
  displayName: "Actions__View",
@@ -54,4 +54,4 @@ var Actions = function (_a) {
54
54
  var templateObject_1, templateObject_2, templateObject_3;
55
55
 
56
56
  export { Actions as A };
57
- //# sourceMappingURL=Actions-e29b5e75.js.map
57
+ //# sourceMappingURL=Actions-6859c932.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions-e29b5e75.js","sources":["../src/components/blocks/Actions.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{ isCovered?: boolean }>`\n display: block;\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'block' : 'inline-block')};\n }\n`;\n\nconst Content = styled.div<{\n isMirrored?: boolean;\n isCovered?: boolean;\n}>`\n display: flex;\n flex-wrap: wrap;\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'column-reverse' : 'column'};\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.spacer}px;\n\n &&& > * {\n /* flex: 1 1 ${({ isCovered }) => (isCovered ? '100%' : '0px')}; */\n margin-top: ${spacings.nudge * 2}px;\n margin-left: ${spacings.spacer}px;\n\n /* min-width: ${({ isCovered }) => isCovered && '0px'}; */\n }\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'flex' : 'inline-flex')};\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'row-reverse' : 'row'};\n align-items: stretch;\n width: auto;\n }\n`;\n\nconst TertiaryWrapper = styled.div`\n align-self: flex-start;\n\n @media ${mq.medium} {\n align-self: center;\n }\n`;\n\nexport type ActionMode = 'wrap' | 'cover';\n\nconst Actions: FC<{\n /** Behaviour of content wrapping. If set to cover the action container always tries to fill full width */\n mode?: ActionMode;\n /** Switch order of primary and secondary action */\n isMirrored?: boolean;\n /** React node of primary action */\n primary?: React.ReactNode;\n /** React node of secondary action */\n secondary?: React.ReactNode;\n /** React node of tertiary action */\n tertiary?: React.ReactNode;\n className?: string;\n}> = ({\n mode = 'wrap',\n isMirrored = false,\n primary,\n secondary,\n tertiary,\n className,\n}) => {\n return (\n <View isCovered={mode === 'cover'} className={className}>\n <Content isCovered={mode === 'cover'} isMirrored={isMirrored}>\n {primary && primary}\n {secondary && secondary}\n {tertiary && <TertiaryWrapper>{tertiary}</TertiaryWrapper>}\n </Content>\n </View>\n );\n};\n\nexport default Actions;\n"],"names":["View","styled","div","mq","medium","_a","isCovered","Content","templateObject_2","__makeTemplateObject","isMirrored","spacings","nudge","spacer","TertiaryWrapper","templateObject_3","Actions","_b","mode","_c","primary","secondary","tertiary","className","React","createElement"],"mappings":"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"}
1
+ {"version":3,"file":"Actions-6859c932.js","sources":["../src/components/blocks/Actions.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{ isCovered?: boolean }>`\n display: block;\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'block' : 'inline-block')};\n }\n`;\n\nconst Content = styled.div<{\n isMirrored?: boolean;\n isCovered?: boolean;\n}>`\n display: flex;\n flex-wrap: wrap;\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'column-reverse' : 'column'};\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.spacer}px;\n\n &&& > * {\n /* flex: 1 1 ${({ isCovered }) => (isCovered ? '100%' : '0px')}; */\n margin-top: ${spacings.nudge * 2}px;\n margin-left: ${spacings.spacer}px;\n\n /* min-width: ${({ isCovered }) => isCovered && '0px'}; */\n }\n\n @media ${mq.medium} {\n display: ${({ isCovered }) => (isCovered ? 'flex' : 'inline-flex')};\n flex-direction: ${({ isMirrored }) =>\n isMirrored ? 'row-reverse' : 'row'};\n align-items: stretch;\n width: auto;\n }\n`;\n\nconst TertiaryWrapper = styled.div`\n align-self: flex-start;\n\n @media ${mq.medium} {\n align-self: center;\n }\n`;\n\nexport type ActionMode = 'wrap' | 'cover';\n\nconst Actions: FC<{\n /** Behaviour of content wrapping. If set to cover the action container always tries to fill full width */\n mode?: ActionMode;\n /** Switch order of primary and secondary action */\n isMirrored?: boolean;\n /** React node of primary action */\n primary?: React.ReactNode;\n /** React node of secondary action */\n secondary?: React.ReactNode;\n /** React node of tertiary action */\n tertiary?: React.ReactNode;\n className?: string;\n}> = ({\n mode = 'wrap',\n isMirrored = false,\n primary,\n secondary,\n tertiary,\n className,\n}) => {\n return (\n <View isCovered={mode === 'cover'} className={className}>\n <Content isCovered={mode === 'cover'} isMirrored={isMirrored}>\n {primary && primary}\n {secondary && secondary}\n {tertiary && <TertiaryWrapper>{tertiary}</TertiaryWrapper>}\n </Content>\n </View>\n );\n};\n\nexport default Actions;\n"],"names":["View","styled","div","mq","medium","_a","isCovered","Content","templateObject_2","__makeTemplateObject","isMirrored","spacings","nudge","spacer","TertiaryWrapper","templateObject_3","Actions","_b","mode","_c","primary","secondary","tertiary","className","React","createElement"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { a as __makeTemplateObject } from './Filter-19220970.js';
1
+ import { a as __makeTemplateObject } from './ButtonLeft-a9a132f5.js';
2
2
  import * as React from 'react';
3
3
  import styled from 'styled-components';
4
- import { L as Link } from './Link-6067a27f.js';
4
+ import { L as Link } from './Link-d4a291af.js';
5
5
 
6
6
  var bdotColor = '#1fc2f4';
7
7
  var Dot = styled(Link).withConfig({
@@ -21,4 +21,4 @@ var Bdot = function (_a) {
21
21
  var templateObject_1;
22
22
 
23
23
  export { Bdot as B };
24
- //# sourceMappingURL=Bdot-5e798e7e.js.map
24
+ //# sourceMappingURL=Bdot-9e215df7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Bdot-5e798e7e.js","sources":["../src/components/blocks/Bdot.tsx"],"sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport Link from 'components/typography/Link';\n\nconst bdotColor = '#1fc2f4';\n\nconst Dot = styled(Link)`\n width: 14px;\n height: 14px;\n\n display: inline-block;\n vertical-align: middle;\n border-radius: 50%;\n\n background: ${bdotColor};\n color: ${bdotColor};\n text-decoration: none;\n\n span {\n visibility: hidden;\n font-size: 0;\n color: transparent;\n }\n`;\n\nconst Bdot: React.FC<{ className?: string }> = ({ className }) => {\n return (\n <Dot\n ariaLabel=\"b.lateral - creative agency\"\n className={className}\n href=\"https://blateral.com\"\n isExternal\n >\n <span>b.lateral - creative agency</span>\n </Dot>\n );\n};\n\nexport default Bdot;\n"],"names":["bdotColor","Dot","styled","Link","templateObject_1","__makeTemplateObject","Bdot","_a","className","React","createElement","ariaLabel","href","isExternal"],"mappings":";;;;;AAIA,IAAMA,SAAS,GAAG,SAAlB,CAAA;AAEA,IAAMC,GAAG,GAAGC,MAAM,CAACC,IAAD,CAAT,CAAA,UAAA,CAAA;AAAA,EAAA,WAAA,EAAA,WAAA;AAAA,EAAA,WAAA,EAAA,aAAA;AAAA,CAAeC,CAAAA,CAAAA,gBAAA,KAAAA,gBAAA,GAAAC,oBAAA,CAAA,CAAA,+IAAA,EAAA,gBAAA,EAAA,uIAAA,CAAA,EAAA,CAAA,+IAAA,EAQG,gBARH,EASF,uIATE,CAAA,CAAA,CAAf,EAQSL,SART,EASIA,SATJ,CAAT,CAAA;;AAmBA,IAAMM,IAAI,GAAqC,UAACC,EAAD,EAAc;AAAX,EAAA,IAAAC,SAAS,GAAAD,EAAA,CAAAC,SAAT,CAAA;AAC9C,EAAA,OACIC,KAAC,CAAAC,aAAD,CAACT,GAAD,EACI;AAAAU,IAAAA,SAAS,EAAC,6BAAV;AACAH,IAAAA,SAAS,EAAEA,SADX;AAEAI,IAAAA,IAAI,EAAC,sBAFL;AAGAC,IAAAA,UAAU,EAAA,IAAA;AAHV,GADJ,EAMIJ,KAAwC,CAAAC,aAAxC,CAAwC,MAAxC,EAAwC,IAAxC,EAAwC,6BAAxC,CANJ,CADJ,CAAA;AAUH,EAXD;;;;;"}
1
+ {"version":3,"file":"Bdot-9e215df7.js","sources":["../src/components/blocks/Bdot.tsx"],"sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport Link from 'components/typography/Link';\n\nconst bdotColor = '#1fc2f4';\n\nconst Dot = styled(Link)`\n width: 14px;\n height: 14px;\n\n display: inline-block;\n vertical-align: middle;\n border-radius: 50%;\n\n background: ${bdotColor};\n color: ${bdotColor};\n text-decoration: none;\n\n span {\n visibility: hidden;\n font-size: 0;\n color: transparent;\n }\n`;\n\nconst Bdot: React.FC<{ className?: string }> = ({ className }) => {\n return (\n <Dot\n ariaLabel=\"b.lateral - creative agency\"\n className={className}\n href=\"https://blateral.com\"\n isExternal\n >\n <span>b.lateral - creative agency</span>\n </Dot>\n );\n};\n\nexport default Bdot;\n"],"names":["bdotColor","Dot","styled","Link","templateObject_1","__makeTemplateObject","Bdot","_a","className","React","createElement","ariaLabel","href","isExternal"],"mappings":";;;;;AAIA,IAAMA,SAAS,GAAG,SAAlB,CAAA;AAEA,IAAMC,GAAG,GAAGC,MAAM,CAACC,IAAD,CAAT,CAAA,UAAA,CAAA;AAAA,EAAA,WAAA,EAAA,WAAA;AAAA,EAAA,WAAA,EAAA,aAAA;AAAA,CAAeC,CAAAA,CAAAA,gBAAA,KAAAA,gBAAA,GAAAC,oBAAA,CAAA,CAAA,+IAAA,EAAA,gBAAA,EAAA,uIAAA,CAAA,EAAA,CAAA,+IAAA,EAQG,gBARH,EASF,uIATE,CAAA,CAAA,CAAf,EAQSL,SART,EASIA,SATJ,CAAT,CAAA;;AAmBA,IAAMM,IAAI,GAAqC,UAACC,EAAD,EAAc;AAAX,EAAA,IAAAC,SAAS,GAAAD,EAAA,CAAAC,SAAT,CAAA;AAC9C,EAAA,OACIC,KAAC,CAAAC,aAAD,CAACT,GAAD,EACI;AAAAU,IAAAA,SAAS,EAAC,6BAAV;AACAH,IAAAA,SAAS,EAAEA,SADX;AAEAI,IAAAA,IAAI,EAAC,sBAFL;AAGAC,IAAAA,UAAU,EAAA,IAAA;AAHV,GADJ,EAMIJ,KAAwC,CAAAC,aAAxC,CAAwC,MAAxC,EAAwC,IAAxC,EAAwC,6BAAxC,CANJ,CADJ,CAAA;AAUH,EAXD;;;;;"}
@@ -0,0 +1,146 @@
1
+ import { a as __makeTemplateObject, d as __rest, _ as __assign } from './ButtonLeft-a9a132f5.js';
2
+ import React__default from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { h as hexToRgba } from './hexRgbConverter-edb91624.js';
5
+ import { s as spacings, a as getFonts, w as withRange, c as getGlobals, g as getColors, m as mq } from './styles-f3ba5bae.js';
6
+
7
+ var View = styled.a.withConfig({
8
+ displayName: "Button__View",
9
+ componentId: "sc-2gssup-0"
10
+ })(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n min-height: 3em;\n height: ", ";\n min-width: ", ";\n padding: 0.1em 1.2em;\n\n max-width: calc(100% - ", "px);\n\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n\n vertical-align: middle;\n\n font-family: ", ";\n ", "\n font-weight: ", ";\n line-height: 1;\n letter-spacing: ", ";\n text-decoration: none;\n\n outline: none;\n border: 1px solid transparent;\n border-radius: ", ";\n user-select: none;\n cursor: pointer;\n\n pointer-events: ", ";\n\n background-color: ", ";\n color: ", ";\n text-align: left;\n\n transition: color ease-in-out 0.2s, background-color ease-in-out 0.2s;\n\n & > * {\n color: ", ";\n }\n\n & > * + * {\n margin-left: ", "px;\n }\n & > *[data-btn-desktop] + *[data-btn-mobile] {\n margin-left: 0;\n }\n & > *[data-btn-mobile] + *[data-btn-desktop] {\n margin-left: 0;\n }\n & > *[data-btn-desktop] {\n display: none;\n }\n & > *:not([data-btn-desktop]) + * {\n margin-left: 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background-color: ", ";\n }\n }\n\n ", "\n\n @media ", " {\n & > *[data-btn-desktop='true'] {\n display: inherit;\n }\n & > *[data-btn-mobile='true'] {\n display: none;\n }\n & > *:not([data-btn-mobile='true']) + * {\n margin-left: 0;\n }\n }\n"], ["\n min-height: 3em;\n height: ", ";\n min-width: ", ";\n padding: 0.1em 1.2em;\n\n max-width: calc(100% - ", "px);\n\n display: inline-flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n\n vertical-align: middle;\n\n font-family: ", ";\n ", "\n font-weight: ", ";\n line-height: 1;\n letter-spacing: ", ";\n text-decoration: none;\n\n outline: none;\n border: 1px solid transparent;\n border-radius: ", ";\n user-select: none;\n cursor: pointer;\n\n pointer-events: ", ";\n\n background-color: ", ";\n color: ", ";\n text-align: left;\n\n transition: color ease-in-out 0.2s, background-color ease-in-out 0.2s;\n\n & > * {\n color: ", ";\n }\n\n & > * + * {\n margin-left: ", "px;\n }\n & > *[data-btn-desktop] + *[data-btn-mobile] {\n margin-left: 0;\n }\n & > *[data-btn-mobile] + *[data-btn-desktop] {\n margin-left: 0;\n }\n & > *[data-btn-desktop] {\n display: none;\n }\n & > *:not([data-btn-desktop]) + * {\n margin-left: 0;\n }\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n background-color: ", ";\n }\n }\n\n ", "\n\n @media ", " {\n & > *[data-btn-desktop='true'] {\n display: inherit;\n }\n & > *[data-btn-mobile='true'] {\n display: none;\n }\n & > *:not([data-btn-mobile='true']) + * {\n margin-left: 0;\n }\n }\n"])), function (_a) {
11
+ var size = _a.size;
12
+ return size === 'default' ? '3.5em' : '3em';
13
+ }, function (_a) {
14
+ var size = _a.size;
15
+ return size === 'default' ? '200px' : '120px';
16
+ }, spacings.spacer, function (_a) {
17
+ var theme = _a.theme;
18
+ return getFonts(theme).copy.medium.family;
19
+ }, function (_a) {
20
+ var theme = _a.theme;
21
+ return withRange(getFonts(theme).copy.medium.size, 'font-size');
22
+ }, function (_a) {
23
+ var theme = _a.theme;
24
+ return getFonts(theme).copy.medium.weight;
25
+ }, function (_a) {
26
+ var theme = _a.theme;
27
+ return getFonts(theme).copy.medium.letterSpacing;
28
+ }, function (_a) {
29
+ var theme = _a.theme;
30
+ return getGlobals(theme).sections.edgeRadius;
31
+ }, function (_a) {
32
+ var isDisabled = _a.isDisabled;
33
+ return isDisabled ? 'none' : 'all';
34
+ }, function (_a) {
35
+ var theme = _a.theme,
36
+ inverted = _a.inverted,
37
+ isDisabled = _a.isDisabled;
38
+ return isDisabled ? getColors(theme).elementBg.medium : inverted ? getColors(theme).primary.inverted : getColors(theme).primary.default;
39
+ }, function (_a) {
40
+ var theme = _a.theme,
41
+ inverted = _a.inverted,
42
+ isDisabled = _a.isDisabled;
43
+ return isDisabled ? hexToRgba(getColors(theme).text.default, 0.4) : !inverted ? getColors(theme).text.inverted : getColors(theme).text.default;
44
+ }, function (_a) {
45
+ var theme = _a.theme,
46
+ inverted = _a.inverted,
47
+ isDisabled = _a.isDisabled;
48
+ return isDisabled ? hexToRgba(getColors(theme).text.default, 0.4) : !inverted ? getColors(theme).text.inverted : getColors(theme).text.default;
49
+ }, spacings.nudge, function (_a) {
50
+ var theme = _a.theme,
51
+ isDisabled = _a.isDisabled,
52
+ inverted = _a.inverted;
53
+ return isDisabled ? getColors(theme).elementBg.medium : inverted ? getColors(theme).primary.invertedHover : getColors(theme).primary.hover;
54
+ }, function (_a) {
55
+ var isDisabled = _a.isDisabled,
56
+ inverted = _a.inverted,
57
+ theme = _a.theme;
58
+ return !isDisabled && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n &:focus-visible {\n outline: 2px solid\n ", ";\n\n outline-offset: 2px;\n }\n\n @media (hover: none) {\n &:active:not(:focus-visible) {\n text-decoration: none;\n outline: none;\n\n background-color: ", ";\n\n transition: 0.2s background-color ease-in-out;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-tap-highlight-color: transparent;\n }\n }\n "], ["\n &:focus-visible {\n outline: 2px solid\n ", ";\n\n outline-offset: 2px;\n }\n\n @media (hover: none) {\n &:active:not(:focus-visible) {\n text-decoration: none;\n outline: none;\n\n background-color: ", ";\n\n transition: 0.2s background-color ease-in-out;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n -webkit-tap-highlight-color: transparent;\n }\n }\n "])), isDisabled ? getColors(theme).elementBg.medium : inverted ? getColors(theme).primary.inverted : getColors(theme).primary.default, inverted ? getColors(theme).primary.invertedHover : getColors(theme).primary.hover);
59
+ }, mq.semilarge);
60
+ var Button = React__default.forwardRef(function (_a, ref) {
61
+ var _b = _a.as,
62
+ as = _b === void 0 ? 'a' : _b,
63
+ _c = _a.size,
64
+ size = _c === void 0 ? 'default' : _c,
65
+ isInverted = _a.isInverted,
66
+ isDisabled = _a.isDisabled,
67
+ ariaLabel = _a.ariaLabel,
68
+ onClick = _a.onClick,
69
+ className = _a.className,
70
+ children = _a.children,
71
+ rest = __rest(_a, ["as", "size", "isInverted", "isDisabled", "ariaLabel", "onClick", "className", "children"]);
72
+
73
+ switch (as) {
74
+ case 'button':
75
+ {
76
+ return React__default.createElement(View, __assign({
77
+ ref: ref,
78
+ as: "button",
79
+ tabIndex: isDisabled ? -1 : 0,
80
+ size: size,
81
+ inverted: isInverted,
82
+ "aria-label": ariaLabel,
83
+ disabled: isDisabled,
84
+ isDisabled: isDisabled,
85
+ onClick: onClick,
86
+ className: className
87
+ }, rest), children);
88
+ }
89
+
90
+ case 'a':
91
+ {
92
+ return React__default.createElement(View, __assign({
93
+ ref: ref,
94
+ as: as,
95
+ tabIndex: isDisabled ? -1 : 0,
96
+ "aria-disabled": isDisabled,
97
+ "aria-label": ariaLabel,
98
+ size: size,
99
+ href: rest.href,
100
+ target: rest.isExternal ? '_blank' : undefined,
101
+ rel: rest.isExternal ? 'noopener' : undefined,
102
+ inverted: isInverted,
103
+ isDisabled: isDisabled,
104
+ onClick: onClick,
105
+ className: className
106
+ }, rest), children);
107
+ }
108
+
109
+ default:
110
+ {
111
+ return React__default.createElement(View, __assign({
112
+ ref: ref,
113
+ as: "span",
114
+ tabIndex: isDisabled ? -1 : 0,
115
+ size: size,
116
+ inverted: isInverted,
117
+ isDisabled: isDisabled,
118
+ "aria-disabled": isDisabled,
119
+ "aria-label": ariaLabel,
120
+ onClick: onClick,
121
+ className: className
122
+ }, rest), children);
123
+ }
124
+ }
125
+ });
126
+ Button.displayName = 'Button';
127
+ var Icon = styled.div.withConfig({
128
+ displayName: "Button__Icon",
129
+ componentId: "sc-2gssup-1"
130
+ })(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 35px;\n height: 35px;\n\n color: ", ";\n\n transition: transform 0.2s ease-in-out;\n\n ", ":hover > & {\n transform: translateX(3px);\n }\n"], ["\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n width: 35px;\n height: 35px;\n\n color: ", ";\n\n transition: transform 0.2s ease-in-out;\n\n ", ":hover > & {\n transform: translateX(3px);\n }\n"])), function (_a) {
131
+ var iconColor = _a.iconColor;
132
+ return iconColor || 'inherit';
133
+ }, View);
134
+ var Label = styled.span.withConfig({
135
+ displayName: "Button__Label",
136
+ componentId: "sc-2gssup-2"
137
+ })(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-block;\n\n max-width: 100%;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n"], ["\n display: inline-block;\n\n max-width: 100%;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n"])));
138
+ var Button$1 = {
139
+ View: Button,
140
+ Label: Label,
141
+ Icon: Icon
142
+ };
143
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
144
+
145
+ export { Button$1 as B };
146
+ //# sourceMappingURL=Button-1f634865.js.map