@blateral/b.kit 2.3.0-beta.1.3 → 2.3.0-beta.1.4

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 (206) hide show
  1. package/cjs/EventBlock-10b9d78d.js +2 -0
  2. package/cjs/EventBlock-10b9d78d.js.map +1 -0
  3. package/cjs/FileUpload-ece8bb07.js +2 -0
  4. package/cjs/FileUpload-ece8bb07.js.map +1 -0
  5. package/cjs/Filter-d6d90b8b.js +2 -0
  6. package/cjs/Filter-d6d90b8b.js.map +1 -0
  7. package/cjs/FilterField-cf9e2f16.js +2 -0
  8. package/cjs/FilterField-cf9e2f16.js.map +1 -0
  9. package/cjs/Grid-39b12e21.js +2 -0
  10. package/cjs/Grid-39b12e21.js.map +1 -0
  11. package/cjs/InfoList-577f3c57.js +2 -0
  12. package/cjs/InfoList-577f3c57.js.map +1 -0
  13. package/cjs/POICard-492bf8d0.js +2 -0
  14. package/cjs/POICard-492bf8d0.js.map +1 -0
  15. package/cjs/TableBlock-a5b16e8f.js +2 -0
  16. package/cjs/TableBlock-a5b16e8f.js.map +1 -0
  17. package/cjs/Tag-5c72cc0d.js +2 -0
  18. package/cjs/Tag-5c72cc0d.js.map +1 -0
  19. package/cjs/VideoBlock-301997a9.js +2 -0
  20. package/cjs/VideoBlock-301997a9.js.map +1 -0
  21. package/cjs/VideoCard-405b518a.js +2 -0
  22. package/cjs/VideoCard-405b518a.js.map +1 -0
  23. package/cjs/Wrapper-91748bdb.js +2 -0
  24. package/cjs/Wrapper-91748bdb.js.map +1 -0
  25. package/cjs/base.js +1 -1
  26. package/cjs/blocks.js +1 -1
  27. package/cjs/escape-1ef8dd83.js +2 -0
  28. package/cjs/escape-1ef8dd83.js.map +1 -0
  29. package/cjs/fields.js +1 -1
  30. package/cjs/fields.js.map +1 -1
  31. package/cjs/footer.js +1 -1
  32. package/cjs/footer.js.map +1 -1
  33. package/cjs/hooks.js +1 -1
  34. package/cjs/hooks.js.map +1 -1
  35. package/cjs/sections.js +1 -1
  36. package/cjs/sections.js.map +1 -1
  37. package/cjs/sections_events.js +2 -0
  38. package/cjs/sections_events.js.map +1 -0
  39. package/cjs/sections_forms.js +2 -0
  40. package/cjs/sections_forms.js.map +1 -0
  41. package/cjs/sections_jobs.js +2 -0
  42. package/cjs/sections_jobs.js.map +1 -0
  43. package/cjs/sections_news.js +1 -1
  44. package/cjs/sections_news.js.map +1 -1
  45. package/cjs/sections_pois.js +2 -0
  46. package/cjs/sections_pois.js.map +1 -0
  47. package/cjs/structuredData-0b1278a9.js +2 -0
  48. package/cjs/structuredData-0b1278a9.js.map +1 -0
  49. package/cjs/urlParams-7525f638.js +2 -0
  50. package/cjs/urlParams-7525f638.js.map +1 -0
  51. package/cjs/useEqualSheetHeight-cfd4176e.js +2 -0
  52. package/cjs/useEqualSheetHeight-cfd4176e.js.map +1 -0
  53. package/cjs/useGeolocation-d8946470.js +2 -0
  54. package/cjs/useGeolocation-d8946470.js.map +1 -0
  55. package/cjs/useLazyInput-f71c221b.js +2 -0
  56. package/cjs/useLazyInput-f71c221b.js.map +1 -0
  57. package/cjs/useLeafletMap-2e608b01.js +2 -0
  58. package/cjs/useLeafletMap-2e608b01.js.map +1 -0
  59. package/cjs/useScrollTo-fdd665da.js +2 -0
  60. package/cjs/useScrollTo-fdd665da.js.map +1 -0
  61. package/esm/{Actions-73e13c48.js → Actions-3f06c2e9.js} +3 -3
  62. package/esm/{Actions-73e13c48.js.map → Actions-3f06c2e9.js.map} +1 -1
  63. package/esm/{Bdot-30b047cc.js → Bdot-fae262fc.js} +3 -3
  64. package/esm/{Bdot-30b047cc.js.map → Bdot-fae262fc.js.map} +1 -1
  65. package/esm/{Button-678be396.js → Button-ab1a4e79.js} +3 -3
  66. package/esm/{Button-678be396.js.map → Button-ab1a4e79.js.map} +1 -1
  67. package/esm/{ButtonGhost-6673a07e.js → ButtonGhost-5b498dba.js} +3 -3
  68. package/esm/{ButtonGhost-6673a07e.js.map → ButtonGhost-5b498dba.js.map} +1 -1
  69. package/esm/{Callout-439308f6.js → Callout-389fed95.js} +4 -4
  70. package/esm/{Callout-439308f6.js.map → Callout-389fed95.js.map} +1 -1
  71. package/esm/{Checkbox-a365d733.js → Checkbox-957d8f33.js} +5 -5
  72. package/esm/{Checkbox-a365d733.js.map → Checkbox-957d8f33.js.map} +1 -1
  73. package/esm/{ClockFilled-8784ddac.js → ClockFilled-6bae80dc.js} +2 -2
  74. package/esm/{ClockFilled-8784ddac.js.map → ClockFilled-6bae80dc.js.map} +1 -1
  75. package/esm/{Control-e61c9395.js → Control-57a287dc.js} +3 -3
  76. package/esm/{Control-e61c9395.js.map → Control-57a287dc.js.map} +1 -1
  77. package/esm/{Copy-3444d005.js → Copy-fb124972.js} +4 -4
  78. package/esm/{Copy-3444d005.js.map → Copy-fb124972.js.map} +1 -1
  79. package/esm/EventBlock-0109da13.js +132 -0
  80. package/esm/EventBlock-0109da13.js.map +1 -0
  81. package/esm/{FilterField-f423b4d1.js → FileUpload-4ba0a672.js} +48 -165
  82. package/esm/FileUpload-4ba0a672.js.map +1 -0
  83. package/esm/Filter-fec6dc5c.js +32 -0
  84. package/esm/Filter-fec6dc5c.js.map +1 -0
  85. package/esm/FilterField-03097694.js +129 -0
  86. package/esm/FilterField-03097694.js.map +1 -0
  87. package/esm/{Wrapper-f4a70e30.js → Grid-151498da.js} +7 -224
  88. package/esm/Grid-151498da.js.map +1 -0
  89. package/esm/{Image-82417953.js → Image-b538f659.js} +5 -5
  90. package/esm/{Image-82417953.js.map → Image-b538f659.js.map} +1 -1
  91. package/esm/InfoList-616d17fd.js +74 -0
  92. package/esm/InfoList-616d17fd.js.map +1 -0
  93. package/esm/{LanguageSwitcher-a53094d3.js → LanguageSwitcher-058e0145.js} +5 -5
  94. package/esm/{LanguageSwitcher-a53094d3.js.map → LanguageSwitcher-058e0145.js.map} +1 -1
  95. package/esm/{LibThemeProvider-90a5375f.js → LibThemeProvider-a38c5bf1.js} +3 -3
  96. package/esm/{LibThemeProvider-90a5375f.js.map → LibThemeProvider-a38c5bf1.js.map} +1 -1
  97. package/esm/{Link-ee8a48ed.js → Link-0a1e35d6.js} +3 -3
  98. package/esm/{Link-ee8a48ed.js.map → Link-0a1e35d6.js.map} +1 -1
  99. package/esm/{Navigation-ece0ff0d.js → Navigation-13dce48c.js} +10 -10
  100. package/esm/{Navigation-ece0ff0d.js.map → Navigation-13dce48c.js.map} +1 -1
  101. package/esm/POICard-392a2c3a.js +116 -0
  102. package/esm/POICard-392a2c3a.js.map +1 -0
  103. package/esm/{Pointer-da4d0977.js → Pointer-bc68154f.js} +3 -3
  104. package/esm/{Pointer-da4d0977.js.map → Pointer-bc68154f.js.map} +1 -1
  105. package/esm/{SocialList-7c00c70e.js → SocialList-4396cad9.js} +5 -5
  106. package/esm/{SocialList-7c00c70e.js.map → SocialList-4396cad9.js.map} +1 -1
  107. package/esm/{TableBlock-0bbde956.js → TableBlock-26530c71.js} +11 -70
  108. package/esm/TableBlock-26530c71.js.map +1 -0
  109. package/esm/Tag-72424779.js +67 -0
  110. package/esm/Tag-72424779.js.map +1 -0
  111. package/esm/{POICard-d8832988.js → VideoBlock-b3f4ae27.js} +39 -332
  112. package/esm/VideoBlock-b3f4ae27.js.map +1 -0
  113. package/esm/{VideoCard-2557407b.js → VideoCard-3fd368ef.js} +8 -35
  114. package/esm/VideoCard-3fd368ef.js.map +1 -0
  115. package/esm/Wrapper-29347885.js +224 -0
  116. package/esm/Wrapper-29347885.js.map +1 -0
  117. package/esm/base.js +4 -3
  118. package/esm/base.js.map +1 -1
  119. package/esm/blocks.js +19 -15
  120. package/esm/blocks.js.map +1 -1
  121. package/esm/buttons.js +6 -6
  122. package/esm/cookies.js +8 -8
  123. package/esm/escape-cbff9c25.js +6 -0
  124. package/esm/escape-cbff9c25.js.map +1 -0
  125. package/esm/fields.js +12 -9
  126. package/esm/fields.js.map +1 -1
  127. package/esm/footer.js +10 -9
  128. package/esm/footer.js.map +1 -1
  129. package/esm/hooks.js +13 -9
  130. package/esm/hooks.js.map +1 -1
  131. package/esm/icons.js +1 -1
  132. package/esm/index.js +3 -3
  133. package/esm/{navigation-49280321.js → navigation-a2998143.js} +2 -2
  134. package/esm/{navigation-49280321.js.map → navigation-a2998143.js.map} +1 -1
  135. package/esm/navigation.js +12 -12
  136. package/esm/sections.js +2595 -5807
  137. package/esm/sections.js.map +1 -1
  138. package/esm/sections_events.js +573 -0
  139. package/esm/sections_events.js.map +1 -0
  140. package/esm/sections_forms.js +1405 -0
  141. package/esm/sections_forms.js.map +1 -0
  142. package/esm/sections_jobs.js +508 -0
  143. package/esm/sections_jobs.js.map +1 -0
  144. package/esm/sections_news.js +102 -97
  145. package/esm/sections_news.js.map +1 -1
  146. package/esm/sections_pois.js +719 -0
  147. package/esm/sections_pois.js.map +1 -0
  148. package/esm/structuredData-87423414.js +117 -0
  149. package/esm/structuredData-87423414.js.map +1 -0
  150. package/esm/{styles-5f78e59d.js → styles-f6c54818.js} +2 -2
  151. package/esm/{styles-5f78e59d.js.map → styles-f6c54818.js.map} +1 -1
  152. package/esm/typography.js +6 -6
  153. package/esm/urlParams-9cfdaf71.js +51 -0
  154. package/esm/urlParams-9cfdaf71.js.map +1 -0
  155. package/esm/{useCookieConsent-db86e5cb.js → useCookieConsent-8caef116.js} +2 -2
  156. package/esm/{useCookieConsent-db86e5cb.js.map → useCookieConsent-8caef116.js.map} +1 -1
  157. package/esm/{urlParams-882563ce.js → useEqualSheetHeight-c18cebd3.js} +4 -105
  158. package/esm/useEqualSheetHeight-c18cebd3.js.map +1 -0
  159. package/esm/useGeolocation-f9f073cc.js +95 -0
  160. package/esm/useGeolocation-f9f073cc.js.map +1 -0
  161. package/esm/useLazyInput-e66fc5be.js +85 -0
  162. package/esm/useLazyInput-e66fc5be.js.map +1 -0
  163. package/esm/{useGeolocation-c81e3efc.js → useLeafletMap-6dea7a8e.js} +4 -175
  164. package/esm/useLeafletMap-6dea7a8e.js.map +1 -0
  165. package/esm/{useMediaQuery-43629cbb.js → useMediaQuery-0d473a9c.js} +2 -2
  166. package/esm/{useMediaQuery-43629cbb.js.map → useMediaQuery-0d473a9c.js.map} +1 -1
  167. package/esm/useScrollTo-70af34bf.js +57 -0
  168. package/esm/useScrollTo-70af34bf.js.map +1 -0
  169. package/package.json +1 -1
  170. package/sections/events/package.json +7 -0
  171. package/sections/forms/package.json +7 -0
  172. package/sections/jobs/package.json +7 -0
  173. package/sections/pois/package.json +7 -0
  174. package/types/sections.d.ts +0 -10
  175. package/types/sections.d.ts.map +1 -1
  176. package/types/sections_events.d.ts +4 -0
  177. package/types/sections_events.d.ts.map +1 -0
  178. package/types/sections_forms.d.ts +3 -0
  179. package/types/sections_forms.d.ts.map +1 -0
  180. package/types/sections_jobs.d.ts +3 -0
  181. package/types/sections_jobs.d.ts.map +1 -0
  182. package/types/sections_news.d.ts +2 -2
  183. package/types/sections_news.d.ts.map +1 -1
  184. package/types/sections_pois.d.ts +4 -0
  185. package/types/sections_pois.d.ts.map +1 -0
  186. package/cjs/FilterField-497e998f.js +0 -2
  187. package/cjs/FilterField-497e998f.js.map +0 -1
  188. package/cjs/POICard-9911980e.js +0 -2
  189. package/cjs/POICard-9911980e.js.map +0 -1
  190. package/cjs/TableBlock-080c9c2e.js +0 -2
  191. package/cjs/TableBlock-080c9c2e.js.map +0 -1
  192. package/cjs/VideoCard-1fa209fc.js +0 -2
  193. package/cjs/VideoCard-1fa209fc.js.map +0 -1
  194. package/cjs/Wrapper-3b9c9e89.js +0 -2
  195. package/cjs/Wrapper-3b9c9e89.js.map +0 -1
  196. package/cjs/urlParams-1d03b5a6.js +0 -2
  197. package/cjs/urlParams-1d03b5a6.js.map +0 -1
  198. package/cjs/useGeolocation-4d38150b.js +0 -2
  199. package/cjs/useGeolocation-4d38150b.js.map +0 -1
  200. package/esm/FilterField-f423b4d1.js.map +0 -1
  201. package/esm/POICard-d8832988.js.map +0 -1
  202. package/esm/TableBlock-0bbde956.js.map +0 -1
  203. package/esm/VideoCard-2557407b.js.map +0 -1
  204. package/esm/Wrapper-f4a70e30.js.map +0 -1
  205. package/esm/urlParams-882563ce.js.map +0 -1
  206. package/esm/useGeolocation-c81e3efc.js.map +0 -1
package/cjs/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../src/utils/useScroll.ts","../src/utils/usePoster.ts","../src/utils/useTouch.ts","../src/utils/useParams.ts","../src/utils/backgroundImage.ts","../src/utils/getLinkIcon.ts","../src/utils/fontLoading.tsx","../src/utils/useArray.ts","../src/utils/useImgPreload.ts","../src/utils/useInterval.ts","../src/utils/useItemHeight.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport enum ScrollDirection {\n UP,\n DOWN,\n}\n\nexport const useScroll = ({\n initialTopOffset = 0,\n onLeftOffset,\n onEnterOffset,\n}: {\n initialTopOffset?: number;\n onLeftOffset?: () => void;\n onEnterOffset?: () => void;\n}) => {\n const [topOffset, setTopOffset] = useState<number>(initialTopOffset);\n const [isTop, setIsTop] = useState<boolean>(true);\n const [isInOffset, setIsInOffset] = useState<boolean>(true);\n const [scrollDirection, setScrollDirection] = useState<ScrollDirection>(\n ScrollDirection.DOWN\n );\n const lastScrollPos = useRef<number>(0);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const handleScroll = () => {\n setIsTop(window.pageYOffset <= 1);\n setIsInOffset(window.pageYOffset <= 1 + topOffset);\n\n if (lastScrollPos.current) {\n // check if top offset is left\n if (\n window.pageYOffset > 1 + topOffset &&\n lastScrollPos.current <= 1 + topOffset\n ) {\n onLeftOffset && onLeftOffset();\n }\n\n // check if top offset was joined\n if (\n window.pageYOffset <= 1 + topOffset &&\n lastScrollPos.current > 1 + topOffset\n ) {\n onEnterOffset && onEnterOffset();\n }\n\n setScrollDirection((prev) => {\n if (window.pageYOffset <= 1) return ScrollDirection.DOWN;\n return window.pageYOffset > lastScrollPos.current\n ? ScrollDirection.DOWN\n : window.pageYOffset < lastScrollPos.current\n ? ScrollDirection.UP\n : prev;\n });\n }\n lastScrollPos.current = window.pageYOffset;\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [\n lastScrollPos,\n onLeftOffset,\n onEnterOffset,\n scrollDirection,\n topOffset,\n ]);\n\n return {\n isTop,\n isInOffset,\n scrollDirection,\n setTopOffset,\n topOffset,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { isBrowser, useMediaQuery } from './useMediaQuery';\n\n// *****************\n// usePoster\n// *****************\n\ninterface PosterImage {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n}\n\nexport const canUseWebP = () => {\n if (!isBrowser) return false;\n\n const elem = document.createElement('canvas');\n\n if (!(elem.getContext && elem.getContext('2d'))) {\n // was able or not to get WebP representation\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0;\n }\n\n // very old browser like IE 8, canvas not supported\n return false;\n};\n\nexport type PosterMq = 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge';\n\nexport const usePoster = (\n posterImage: PosterImage & {\n webp?: PosterImage;\n },\n mqs?: PosterMq[]\n) => {\n const [currentImage, setCurrentImage] = useState<string | undefined>();\n\n const workingImage =\n posterImage.webp && canUseWebP() ? posterImage.webp : posterImage;\n const currentMq = useMediaQuery(\n mqs || ['small', 'medium', 'semilarge', 'large', 'xlarge']\n ) as PosterMq | undefined;\n\n useEffect(() => {\n if (\n currentMq &&\n workingImage[currentMq] &&\n workingImage[currentMq] !== currentImage\n ) {\n setCurrentImage(workingImage[currentMq]);\n }\n }, [currentImage, currentMq, workingImage]);\n\n return currentImage;\n};\n","import { useState, useEffect } from 'react';\n\nconst useTouch = () => {\n const [canTouch, setCanTouch] = useState(false);\n\n useEffect(() => {\n setCanTouch(\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n (navigator as any).msMaxTouchPoints > 0\n );\n }, []);\n return canTouch;\n};\n\nexport default useTouch;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst isSupported =\n typeof window !== 'undefined' && 'URLSearchParams' in window;\n\nconst getParamsObj = (params?: URLSearchParams) => {\n const obj: Record<string, string> = {};\n\n const paramsObj = Object.fromEntries(\n params || new URLSearchParams(window.location.search)\n );\n\n for (const param in paramsObj) {\n let value = paramsObj[param];\n if (typeof value === 'string') {\n value = decodeURIComponent(value);\n }\n obj[param] = value;\n }\n\n return obj;\n};\n\nconst useParams = () => {\n const [params, setParams] = useState<Record<string, string>>({});\n\n useEffect(() => {\n if (!isSupported) return;\n\n setParams(getParamsObj());\n }, []);\n\n const update = useCallback(\n (key: string, value: string) => {\n if (!isSupported) return;\n\n const newParams = { ...params };\n newParams[key] = value;\n\n const currentParams = new URLSearchParams(window.location.search);\n for (const param in newParams) {\n currentParams.set(param, encodeURIComponent(newParams[param]));\n }\n\n setParams(getParamsObj(currentParams));\n\n window.history.replaceState(\n {},\n '',\n `${location.pathname}?${\n currentParams.toString() + location.hash\n }`\n );\n },\n [params]\n );\n\n return { params, update };\n};\n\nexport default useParams;\n","export const getBgImage = (\n bgImage: {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n },\n mq?: 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge'\n): string => {\n switch (mq) {\n default:\n case 'small':\n return bgImage.small;\n\n case 'medium':\n return (\n bgImage.medium ||\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.small\n );\n\n case 'semilarge':\n return (\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'large':\n return (\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'xlarge':\n return (\n bgImage.xlarge ||\n bgImage.large ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n }\n};\n","import { DefaultTheme } from 'styled-components';\nimport { getGlobals as global } from 'utils/styles';\n\nexport const getLinkIcon = (\n theme: DefaultTheme,\n href: string,\n isInverted?: boolean\n): string => {\n const linkIcons = global(theme).icons.linkIcons;\n\n const fileExtension = `.${href?.split('.').pop() || ''}`;\n const result = linkIcons.find((icon) => {\n return icon.patterns?.find((pattern) => pattern.match(fileExtension));\n });\n\n return result?.iconChar || result?.iconUrl?.(isInverted) || '';\n};\n","import React from 'react';\n\ninterface FontFallback {\n name: string;\n altFont: string;\n sizeAdjust: string;\n}\n\nexport interface Font {\n rootPath: string;\n sourcePath: string;\n fallbacks?: FontFallback[];\n}\n\nexport const importFonts = (fonts: Font[]) => {\n return (\n <React.Fragment>\n {fonts && fonts.length > 0 && (\n <style\n dangerouslySetInnerHTML={{\n __html: fonts?.reduce((acc, current) => {\n if (current?.fallbacks) {\n acc += current?.fallbacks?.reduce(\n (fallAcc, f) => {\n fallAcc += `@font-face { font-family: '${f.name}'; size-adjust: ${f.sizeAdjust}; src: local('${f.altFont}'); } `;\n return fallAcc;\n },\n\n ''\n );\n return acc;\n } else return acc;\n }, ''),\n }}\n />\n )}\n\n {fonts?.map((font, i) => (\n <link\n key={i}\n rel=\"preconnect\"\n href={font.rootPath}\n crossOrigin=\"true\"\n />\n ))}\n {fonts?.map((font, i) => (\n <link key={i} rel=\"preload\" as=\"style\" href={font.sourcePath} />\n ))}\n\n <style\n dangerouslySetInnerHTML={{\n __html: `</style>${fonts?.reduce<string>(\n (prev, current) => {\n return (prev += `\n <link rel=\"stylesheet\" href=\"${current.sourcePath}\" media=\"print\" onload=\"this.media='all'\" />`);\n },\n ''\n )}<style>`,\n }}\n />\n\n <noscript>\n {fonts?.map((font, i) => (\n <link key={i} rel=\"stylesheet\" href={font.sourcePath} />\n ))}\n </noscript>\n </React.Fragment>\n );\n};\n","import { useState } from 'react';\n\nconst useArray = <T>(defaultValue?: Array<T>) => {\n const [array, setArray] = useState<Array<T>>(defaultValue || []);\n\n const push = (element: T | T[]) => {\n if (Array.isArray(element)) {\n setArray((prev) => [...prev, ...element]);\n } else {\n setArray((prev) => [...prev, element]);\n }\n };\n\n const pop = () => {\n let lastEl: T | undefined;\n\n setArray((prev) => {\n const copy = [...prev];\n lastEl = copy.pop();\n return copy;\n });\n return lastEl;\n };\n\n const filter = (\n callback: (value: T, index: number, array: T[]) => void\n ) => {\n setArray((prev) => prev.filter(callback));\n };\n\n const update = (index: number, newEl: T) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n newEl,\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const remove = (index: number) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const clear = () => {\n setArray([]);\n };\n\n return {\n array,\n set: setArray,\n push,\n filter,\n update,\n remove,\n clear,\n pop,\n };\n};\n\nexport default useArray;\n","import { ImageProps } from 'components/blocks/Image';\nimport { useEffect, useState } from 'react';\nimport { MediaQueryType } from './styles';\nimport { useMediaQuery } from './useMediaQuery';\n\nexport const useImgPreload = (\n imageUrls: ImageProps[],\n mqs: MediaQueryType[] = ['semilarge', 'large']\n) => {\n const [isReady, setReady] = useState(false);\n const [isLoaded, setLoaded] = useState(false);\n const currentMq = useMediaQuery(mqs as MediaQueryType[]);\n const [loadedImages, setLoadedImages] = useState<{\n [key: string]: { id: number | string; image: string }[];\n }>({\n small: [],\n medium: [],\n semilarge: [],\n large: [],\n xlarge: [],\n xxlarge: [],\n xxxLarge: [],\n });\n\n const preloadImages = (imageUrls: (string | undefined)[]) => {\n const images = (imageUrls.filter((img) => img) as string[]).map(\n (src, i) => {\n return new Promise((res) => {\n const img = new window.Image();\n img.src = src;\n img.onload = () => res({ url: src, i });\n });\n }\n );\n\n return images;\n };\n\n useEffect(() => {\n if (isReady && loadedImages && currentMq) {\n const loadedForMq = loadedImages[currentMq];\n\n if (loadedForMq.length < imageUrls.length && imageUrls.length > 0) {\n const requestedImages = imageUrls.map((img) => img[currentMq]);\n\n const resolve = async (items: any) => {\n for (const item of items) {\n const x = await item;\n\n setLoadedImages((prev) => {\n // check if image id already exists in array\n if (!prev[currentMq].find((e) => e.id === x.i)) {\n return {\n ...prev,\n [currentMq]: [\n ...prev[currentMq],\n {\n id: x.i,\n image: x.url,\n },\n ],\n };\n } else return prev;\n });\n }\n };\n\n resolve(preloadImages(requestedImages));\n }\n }\n }, [currentMq, imageUrls, isReady, loadedImages]);\n\n useEffect(() => {\n if (loadedImages && currentMq) {\n const imgCount = imageUrls.filter((img) => img[currentMq]).length;\n setLoaded(loadedImages[currentMq].length >= imgCount);\n }\n }, [currentMq, imageUrls, loadedImages]);\n\n return {\n loadedImages: currentMq && loadedImages[currentMq],\n isLoaded,\n setReady,\n };\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport default function useInterval(callback: () => void, delay: number) {\n const callbackRef = useRef(callback);\n const intervalRef = useRef<number>();\n\n // Remember the latest callback.\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n intervalRef.current = window.setInterval(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n intervalRef.current && window.clearTimeout(intervalRef.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","import { useEffect, useState } from 'react';\n\nexport const useItemHeight = () => {\n const [element, setElement] = useState<HTMLElement | null>(null);\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n const calcHeight = () => {\n if (element) setHeight(element.offsetHeight);\n };\n\n if (element) {\n calcHeight();\n window.addEventListener('resize', calcHeight);\n }\n\n return () => {\n window.removeEventListener('resize', calcHeight);\n };\n }, [element]);\n\n return {\n setElement,\n height,\n };\n};\n"],"names":["ScrollDirection","useScroll","canUseWebP","isBrowser","elem","document","createElement","getContext","toDataURL","indexOf","useTouch","isSupported","window","getParamsObj","params","obj","paramsObj","Object","fromEntries","URLSearchParams","location","search","param","value","decodeURIComponent","bgImage","mq","small","medium","semilarge","large","xlarge","theme","href","isInverted","linkIcons","global","getGlobals","icons","fileExtension","concat","split","pop","result","find","icon","_a","patterns","pattern","match","iconChar","iconUrl","call","fonts","React","Fragment","length","dangerouslySetInnerHTML","__html","reduce","acc","current","fallbacks","fallAcc","f","name","sizeAdjust","altFont","map","font","i","key","rel","rootPath","crossOrigin","as","sourcePath","prev","defaultValue","useState","array","setArray","set","push","element","Array","isArray","__spreadArray","filter","callback","update","index","newEl","slice","remove","clear","lastEl","copy","imageUrls","mqs","isReady","setReady","_b","isLoaded","setLoaded","currentMq","useMediaQuery","_c","xxlarge","xxxLarge","loadedImages","setLoadedImages","useEffect","items","requestedImages","img","src","Promise","res","Image","onload","url","preloadImages","__awaiter","item","x","sent","e","id","__assign","image","_i","items_1","imgCount","delay","callbackRef","useRef","intervalRef","useCallback","setInterval","clearTimeout","reset","setElement","height","setHeight","calcHeight","offsetHeight","addEventListener","removeEventListener","setParams","newParams","currentParams","encodeURIComponent","history","replaceState","pathname","toString","hash","posterImage","currentImage","setCurrentImage","workingImage","webp","initialTopOffset","onLeftOffset","onEnterOffset","topOffset","setTopOffset","_d","isTop","setIsTop","_e","isInOffset","setIsInOffset","_f","DOWN","scrollDirection","setScrollDirection","lastScrollPos","handleScroll","pageYOffset","UP","canTouch","setCanTouch","navigator","maxTouchPoints","msMaxTouchPoints"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sources":["../src/utils/useScroll.ts","../src/utils/usePoster.ts","../src/utils/useTouch.ts","../src/utils/useParams.ts","../src/utils/backgroundImage.ts","../src/utils/getLinkIcon.ts","../src/utils/fontLoading.tsx","../src/utils/useArray.ts","../src/utils/useImgPreload.ts","../src/utils/useInterval.ts","../src/utils/useItemHeight.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport enum ScrollDirection {\n UP,\n DOWN,\n}\n\nexport const useScroll = ({\n initialTopOffset = 0,\n onLeftOffset,\n onEnterOffset,\n}: {\n initialTopOffset?: number;\n onLeftOffset?: () => void;\n onEnterOffset?: () => void;\n}) => {\n const [topOffset, setTopOffset] = useState<number>(initialTopOffset);\n const [isTop, setIsTop] = useState<boolean>(true);\n const [isInOffset, setIsInOffset] = useState<boolean>(true);\n const [scrollDirection, setScrollDirection] = useState<ScrollDirection>(\n ScrollDirection.DOWN\n );\n const lastScrollPos = useRef<number>(0);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const handleScroll = () => {\n setIsTop(window.pageYOffset <= 1);\n setIsInOffset(window.pageYOffset <= 1 + topOffset);\n\n if (lastScrollPos.current) {\n // check if top offset is left\n if (\n window.pageYOffset > 1 + topOffset &&\n lastScrollPos.current <= 1 + topOffset\n ) {\n onLeftOffset && onLeftOffset();\n }\n\n // check if top offset was joined\n if (\n window.pageYOffset <= 1 + topOffset &&\n lastScrollPos.current > 1 + topOffset\n ) {\n onEnterOffset && onEnterOffset();\n }\n\n setScrollDirection((prev) => {\n if (window.pageYOffset <= 1) return ScrollDirection.DOWN;\n return window.pageYOffset > lastScrollPos.current\n ? ScrollDirection.DOWN\n : window.pageYOffset < lastScrollPos.current\n ? ScrollDirection.UP\n : prev;\n });\n }\n lastScrollPos.current = window.pageYOffset;\n };\n\n handleScroll();\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [\n lastScrollPos,\n onLeftOffset,\n onEnterOffset,\n scrollDirection,\n topOffset,\n ]);\n\n return {\n isTop,\n isInOffset,\n scrollDirection,\n setTopOffset,\n topOffset,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { isBrowser, useMediaQuery } from './useMediaQuery';\n\n// *****************\n// usePoster\n// *****************\n\ninterface PosterImage {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n}\n\nexport const canUseWebP = () => {\n if (!isBrowser) return false;\n\n const elem = document.createElement('canvas');\n\n if (!(elem.getContext && elem.getContext('2d'))) {\n // was able or not to get WebP representation\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0;\n }\n\n // very old browser like IE 8, canvas not supported\n return false;\n};\n\nexport type PosterMq = 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge';\n\nexport const usePoster = (\n posterImage: PosterImage & {\n webp?: PosterImage;\n },\n mqs?: PosterMq[]\n) => {\n const [currentImage, setCurrentImage] = useState<string | undefined>();\n\n const workingImage =\n posterImage.webp && canUseWebP() ? posterImage.webp : posterImage;\n const currentMq = useMediaQuery(\n mqs || ['small', 'medium', 'semilarge', 'large', 'xlarge']\n ) as PosterMq | undefined;\n\n useEffect(() => {\n if (\n currentMq &&\n workingImage[currentMq] &&\n workingImage[currentMq] !== currentImage\n ) {\n setCurrentImage(workingImage[currentMq]);\n }\n }, [currentImage, currentMq, workingImage]);\n\n return currentImage;\n};\n","import { useState, useEffect } from 'react';\n\nconst useTouch = () => {\n const [canTouch, setCanTouch] = useState(false);\n\n useEffect(() => {\n setCanTouch(\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n (navigator as any).msMaxTouchPoints > 0\n );\n }, []);\n return canTouch;\n};\n\nexport default useTouch;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst isSupported =\n typeof window !== 'undefined' && 'URLSearchParams' in window;\n\nconst getParamsObj = (params?: URLSearchParams) => {\n const obj: Record<string, string> = {};\n\n const paramsObj = Object.fromEntries(\n params || new URLSearchParams(window.location.search)\n );\n\n for (const param in paramsObj) {\n let value = paramsObj[param];\n if (typeof value === 'string') {\n value = decodeURIComponent(value);\n }\n obj[param] = value;\n }\n\n return obj;\n};\n\nconst useParams = () => {\n const [params, setParams] = useState<Record<string, string>>({});\n\n useEffect(() => {\n if (!isSupported) return;\n\n setParams(getParamsObj());\n }, []);\n\n const update = useCallback(\n (key: string, value: string) => {\n if (!isSupported) return;\n\n const newParams = { ...params };\n newParams[key] = value;\n\n const currentParams = new URLSearchParams(window.location.search);\n for (const param in newParams) {\n currentParams.set(param, encodeURIComponent(newParams[param]));\n }\n\n setParams(getParamsObj(currentParams));\n\n window.history.replaceState(\n {},\n '',\n `${location.pathname}?${\n currentParams.toString() + location.hash\n }`\n );\n },\n [params]\n );\n\n return { params, update };\n};\n\nexport default useParams;\n","export const getBgImage = (\n bgImage: {\n small: string;\n medium?: string;\n semilarge?: string;\n large?: string;\n xlarge?: string;\n },\n mq?: 'small' | 'medium' | 'semilarge' | 'large' | 'xlarge'\n): string => {\n switch (mq) {\n default:\n case 'small':\n return bgImage.small;\n\n case 'medium':\n return (\n bgImage.medium ||\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.small\n );\n\n case 'semilarge':\n return (\n bgImage.semilarge ||\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'large':\n return (\n bgImage.large ||\n bgImage.xlarge ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n\n case 'xlarge':\n return (\n bgImage.xlarge ||\n bgImage.large ||\n bgImage.semilarge ||\n bgImage.medium ||\n bgImage.small\n );\n }\n};\n","import { DefaultTheme } from 'styled-components';\nimport { getGlobals as global } from 'utils/styles';\n\nexport const getLinkIcon = (\n theme: DefaultTheme,\n href: string,\n isInverted?: boolean\n): string => {\n const linkIcons = global(theme).icons.linkIcons;\n\n const fileExtension = `.${href?.split('.').pop() || ''}`;\n const result = linkIcons.find((icon) => {\n return icon.patterns?.find((pattern) => pattern.match(fileExtension));\n });\n\n return result?.iconChar || result?.iconUrl?.(isInverted) || '';\n};\n","import React from 'react';\n\ninterface FontFallback {\n name: string;\n altFont: string;\n sizeAdjust: string;\n}\n\nexport interface Font {\n rootPath: string;\n sourcePath: string;\n fallbacks?: FontFallback[];\n}\n\nexport const importFonts = (fonts: Font[]) => {\n return (\n <React.Fragment>\n {fonts && fonts.length > 0 && (\n <style\n dangerouslySetInnerHTML={{\n __html: fonts?.reduce((acc, current) => {\n if (current?.fallbacks) {\n acc += current?.fallbacks?.reduce(\n (fallAcc, f) => {\n fallAcc += `@font-face { font-family: '${f.name}'; size-adjust: ${f.sizeAdjust}; src: local('${f.altFont}'); } `;\n return fallAcc;\n },\n\n ''\n );\n return acc;\n } else return acc;\n }, ''),\n }}\n />\n )}\n\n {fonts?.map((font, i) => (\n <link\n key={i}\n rel=\"preconnect\"\n href={font.rootPath}\n crossOrigin=\"true\"\n />\n ))}\n {fonts?.map((font, i) => (\n <link key={i} rel=\"preload\" as=\"style\" href={font.sourcePath} />\n ))}\n\n <style\n dangerouslySetInnerHTML={{\n __html: `</style>${fonts?.reduce<string>(\n (prev, current) => {\n return (prev += `\n <link rel=\"stylesheet\" href=\"${current.sourcePath}\" media=\"print\" onload=\"this.media='all'\" />`);\n },\n ''\n )}<style>`,\n }}\n />\n\n <noscript>\n {fonts?.map((font, i) => (\n <link key={i} rel=\"stylesheet\" href={font.sourcePath} />\n ))}\n </noscript>\n </React.Fragment>\n );\n};\n","import { useState } from 'react';\n\nconst useArray = <T>(defaultValue?: Array<T>) => {\n const [array, setArray] = useState<Array<T>>(defaultValue || []);\n\n const push = (element: T | T[]) => {\n if (Array.isArray(element)) {\n setArray((prev) => [...prev, ...element]);\n } else {\n setArray((prev) => [...prev, element]);\n }\n };\n\n const pop = () => {\n let lastEl: T | undefined;\n\n setArray((prev) => {\n const copy = [...prev];\n lastEl = copy.pop();\n return copy;\n });\n return lastEl;\n };\n\n const filter = (\n callback: (value: T, index: number, array: T[]) => void\n ) => {\n setArray((prev) => prev.filter(callback));\n };\n\n const update = (index: number, newEl: T) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n newEl,\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const remove = (index: number) => {\n setArray((prev) => [\n ...prev.slice(0, index),\n ...prev.slice(index + 1, prev.length),\n ]);\n };\n\n const clear = () => {\n setArray([]);\n };\n\n return {\n array,\n set: setArray,\n push,\n filter,\n update,\n remove,\n clear,\n pop,\n };\n};\n\nexport default useArray;\n","import { ImageProps } from 'components/blocks/Image';\nimport { useEffect, useState } from 'react';\nimport { MediaQueryType } from './styles';\nimport { useMediaQuery } from './useMediaQuery';\n\nexport const useImgPreload = (\n imageUrls: ImageProps[],\n mqs: MediaQueryType[] = ['semilarge', 'large']\n) => {\n const [isReady, setReady] = useState(false);\n const [isLoaded, setLoaded] = useState(false);\n const currentMq = useMediaQuery(mqs as MediaQueryType[]);\n const [loadedImages, setLoadedImages] = useState<{\n [key: string]: { id: number | string; image: string }[];\n }>({\n small: [],\n medium: [],\n semilarge: [],\n large: [],\n xlarge: [],\n xxlarge: [],\n xxxLarge: [],\n });\n\n const preloadImages = (imageUrls: (string | undefined)[]) => {\n const images = (imageUrls.filter((img) => img) as string[]).map(\n (src, i) => {\n return new Promise((res) => {\n const img = new window.Image();\n img.src = src;\n img.onload = () => res({ url: src, i });\n });\n }\n );\n\n return images;\n };\n\n useEffect(() => {\n if (isReady && loadedImages && currentMq) {\n const loadedForMq = loadedImages[currentMq];\n\n if (loadedForMq.length < imageUrls.length && imageUrls.length > 0) {\n const requestedImages = imageUrls.map((img) => img[currentMq]);\n\n const resolve = async (items: any) => {\n for (const item of items) {\n const x = await item;\n\n setLoadedImages((prev) => {\n // check if image id already exists in array\n if (!prev[currentMq].find((e) => e.id === x.i)) {\n return {\n ...prev,\n [currentMq]: [\n ...prev[currentMq],\n {\n id: x.i,\n image: x.url,\n },\n ],\n };\n } else return prev;\n });\n }\n };\n\n resolve(preloadImages(requestedImages));\n }\n }\n }, [currentMq, imageUrls, isReady, loadedImages]);\n\n useEffect(() => {\n if (loadedImages && currentMq) {\n const imgCount = imageUrls.filter((img) => img[currentMq]).length;\n setLoaded(loadedImages[currentMq].length >= imgCount);\n }\n }, [currentMq, imageUrls, loadedImages]);\n\n return {\n loadedImages: currentMq && loadedImages[currentMq],\n isLoaded,\n setReady,\n };\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport default function useInterval(callback: () => void, delay: number) {\n const callbackRef = useRef(callback);\n const intervalRef = useRef<number>();\n\n // Remember the latest callback.\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n intervalRef.current = window.setInterval(\n () => callbackRef.current?.(),\n delay\n );\n }, [delay]);\n\n const clear = useCallback(() => {\n intervalRef.current && window.clearTimeout(intervalRef.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","import { useEffect, useState } from 'react';\n\nexport const useItemHeight = () => {\n const [element, setElement] = useState<HTMLElement | null>(null);\n const [height, setHeight] = useState<number>(0);\n\n useEffect(() => {\n const calcHeight = () => {\n if (element) setHeight(element.offsetHeight);\n };\n\n if (element) {\n calcHeight();\n window.addEventListener('resize', calcHeight);\n }\n\n return () => {\n window.removeEventListener('resize', calcHeight);\n };\n }, [element]);\n\n return {\n setElement,\n height,\n };\n};\n"],"names":["ScrollDirection","useScroll","canUseWebP","isBrowser","elem","document","createElement","getContext","toDataURL","indexOf","useTouch","isSupported","window","getParamsObj","params","obj","paramsObj","Object","fromEntries","URLSearchParams","location","search","param","value","decodeURIComponent","bgImage","mq","small","medium","semilarge","large","xlarge","theme","href","isInverted","linkIcons","global","getGlobals","icons","fileExtension","concat","split","pop","result","find","icon","_a","patterns","pattern","match","iconChar","iconUrl","call","fonts","React","Fragment","length","dangerouslySetInnerHTML","__html","reduce","acc","current","fallbacks","fallAcc","f","name","sizeAdjust","altFont","map","font","i","key","rel","rootPath","crossOrigin","as","sourcePath","prev","defaultValue","useState","array","setArray","set","push","element","Array","isArray","__spreadArray","filter","callback","update","index","newEl","slice","remove","clear","lastEl","copy","imageUrls","mqs","isReady","setReady","_b","isLoaded","setLoaded","currentMq","useMediaQuery","_c","xxlarge","xxxLarge","loadedImages","setLoadedImages","useEffect","items","requestedImages","img","src","Promise","res","Image","onload","url","preloadImages","__awaiter","item","x","sent","e","id","__assign","image","_i","items_1","imgCount","delay","callbackRef","useRef","intervalRef","useCallback","setInterval","clearTimeout","reset","setElement","height","setHeight","calcHeight","offsetHeight","addEventListener","removeEventListener","setParams","newParams","currentParams","encodeURIComponent","history","replaceState","pathname","toString","hash","posterImage","currentImage","setCurrentImage","workingImage","webp","initialTopOffset","onLeftOffset","onEnterOffset","topOffset","setTopOffset","_d","isTop","setIsTop","_e","isInOffset","setIsInOffset","_f","DOWN","scrollDirection","setScrollDirection","lastScrollPos","handleScroll","pageYOffset","UP","canTouch","setCanTouch","navigator","maxTouchPoints","msMaxTouchPoints"],"mappings":"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"}