@blateral/b.kit 2.6.0 → 2.7.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.
- package/cjs/hooks.js +1 -1
- package/cjs/hooks.js.map +1 -1
- package/cjs/sections.js +1 -1
- package/cjs/sections.js.map +1 -1
- package/esm/hooks.js +1 -1
- package/esm/hooks.js.map +1 -1
- package/esm/sections.js +23 -1
- package/esm/sections.js.map +1 -1
- package/package.json +1 -1
- package/types/components/sections/HtmlCode.d.ts +21 -0
- package/types/components/sections/HtmlCode.d.ts.map +1 -0
- package/types/sections.d.ts +1 -0
- package/types/sections.d.ts.map +1 -1
package/cjs/hooks.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./useEqualSheetHeight-501f4c5f.js"),r=require("./useIE-aef9decc.js"),t=require("react"),n=require("./useMediaQuery-3d1054e5.js"),a=require("./useScrollTo-fdd665da.js"),s=require("./useUpdateEffect-4d233e2c.js"),o=require("./useMounted-0bba9869.js"),u=require("./useLazyInput-f71c221b.js"),i=require("./navigation-bf154e6e.js"),l=require("./ClockFilled-2483aa4a.js"),c=require("./hexRgbConverter-91b28aea.js"),f=require("./clamp-bd21d587.js"),d=require("./arrays-c272ed59.js"),p=require("./concat-f387d848.js"),m=require("./styles-3a495a2d.js"),g=require("./useLeafletMap-2e608b01.js"),v=require("./useGeolocation-d8946470.js"),x=require("./useObserverSupport-5ab320dd.js"),h=require("./urlParams-7525f638.js"),w=require("./useCookieConsent-aa9f1104.js");function y(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("styled-components"),require("react-dom/server");var _,S=y(t);exports.ScrollDirection=void 0,(_=exports.ScrollDirection||(exports.ScrollDirection={}))[_.UP=0]="UP",_[_.DOWN=1]="DOWN";var b=function(){if(!n.isBrowser)return!1;var e=document.createElement("canvas");return(!e.getContext||!e.getContext("2d"))&&0==e.toDataURL("image/webp").indexOf("data:image/webp")};var E="undefined"!=typeof window&&"URLSearchParams"in window,P=function(e){var r={},t=Object.fromEntries(e||new URLSearchParams(window.location.search));for(var n in t){var a=t[n];"string"==typeof a&&(a=decodeURIComponent(a)),r[n]=a}return r};exports.useEqualSheetHeight=e.useEqualSheetHeight,exports.useFontsLoaded=e.useFontsLoaded,exports.useResizeThrottle=e.useResizeThrottle,exports.useIE=r.useIE,exports.getMediaQuery=n.getMediaQuery,exports.isBrowser=n.isBrowser,exports.useDynamicMediaQueries=n.useDynamicMediaQueries,exports.useMediaQueries=n.useMediaQueries,exports.useMediaQuery=n.useMediaQuery,exports.useScrollTo=a.useScrollTo,exports.useUpdateEffect=s.useUpdateEffect,exports.useMounted=o.useMounted,exports.useDebounce=u.useDebounce,exports.useLazyInput=u.useLazyInput,exports.useTimeout=u.useTimeout,exports.getCurrentNavItem=i.getCurrentNavItem,exports.getCurrentNavPath=i.getCurrentNavPath,exports.useScrollThrottle=i.useScrollThrottle,exports.hexToRgba=c.hexToRgba,exports.clampValue=f.clampValue,exports.isEmptyArray=d.isEmptyArray,exports.isValidArray=d.isValidArray,exports.concat=p.concat,exports.printAnchorTag=p.printAnchorTag,exports.getSVGDataImg=m.getSVGDataImg,exports.useLeafletMap=g.useLeafletMap,exports.useGeolocation=v.useGeolocation,exports.useObserverSupport=x.useObserverSupport,exports.deleteUrlParam=h.deleteUrlParam,exports.getUrlParams=h.getUrlParams,exports.setUrlParam=h.setUrlParam,exports.selectors=w.selectors,exports.useCookieConsent=w.useCookieConsent,exports.canUseWebP=b,exports.getBgImage=function(e,r){switch(r){default:case"small":return e.small;case"medium":return e.medium||e.semilarge||e.large||e.xlarge||e.small;case"semilarge":return e.semilarge||e.large||e.xlarge||e.medium||e.small;case"large":return e.large||e.xlarge||e.semilarge||e.medium||e.small;case"xlarge":return e.xlarge||e.large||e.semilarge||e.medium||e.small}},exports.getLinkIcon=function(e,r,t){var n,a=m.getGlobals(e).icons.linkIcons,s=".".concat((null==r?void 0:r.split(".").pop())||""),o=a.find((function(e){var r;return null===(r=e.patterns)||void 0===r?void 0:r.find((function(e){return e.match(s)}))}));return(null==o?void 0:o.iconChar)||(null===(n=null==o?void 0:o.iconUrl)||void 0===n?void 0:n.call(o,t))||""},exports.importFonts=function(e){return S.default.createElement(S.default.Fragment,null,e&&e.length>0&&S.default.createElement("style",{dangerouslySetInnerHTML:{__html:null==e?void 0:e.reduce((function(e,r){var t;return(null==r?void 0:r.fallbacks)?e+=null===(t=null==r?void 0:r.fallbacks)||void 0===t?void 0:t.reduce((function(e,r){return e+="@font-face { font-family: '".concat(r.name,"'; size-adjust: ").concat(r.sizeAdjust,"; src: local('").concat(r.altFont,"'); } ")}),""):e}),"")}}),null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"preconnect",href:e.rootPath,crossOrigin:"true"})})),null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"preload",as:"style",href:e.sourcePath})})),S.default.createElement("style",{dangerouslySetInnerHTML:{__html:"</style>".concat(null==e?void 0:e.reduce((function(e,r){return e+'\n <link rel="stylesheet" href="'.concat(r.sourcePath,'" media="print" onload="this.media=\'all\'" />')}),""),"<style>")}}),S.default.createElement("noscript",null,null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"stylesheet",href:e.sourcePath})}))))},exports.useArray=function(e){var r=t.useState(e||[]),n=r[0],a=r[1];return{array:n,set:a,push:function(e){Array.isArray(e)?a((function(r){return l.__spreadArray(l.__spreadArray([],r,!0),e,!0)})):a((function(r){return l.__spreadArray(l.__spreadArray([],r,!0),[e],!1)}))},filter:function(e){a((function(r){return r.filter(e)}))},update:function(e,r){a((function(t){return l.__spreadArray(l.__spreadArray(l.__spreadArray([],t.slice(0,e),!0),[r],!1),t.slice(e+1,t.length),!0)}))},remove:function(e){a((function(r){return l.__spreadArray(l.__spreadArray([],r.slice(0,e),!0),r.slice(e+1,r.length),!0)}))},clear:function(){a([])},pop:function(){var e;return a((function(r){var t=l.__spreadArray([],r,!0);return e=t.pop(),t})),e}}},exports.useImgPreload=function(e,r){void 0===r&&(r=["semilarge","large"]);var a=t.useState(!1),s=a[0],o=a[1],u=t.useState(!1),i=u[0],c=u[1],f=n.useMediaQuery(r),d=t.useState({small:[],medium:[],semilarge:[],large:[],xlarge:[],xxlarge:[],xxxLarge:[]}),p=d[0],m=d[1];return t.useEffect((function(){var r;if(s&&p&&f&&(p[f].length<e.length&&e.length>0)){var t=e.map((function(e){return e[f]}));r=function(e){return e.filter((function(e){return e})).map((function(e,r){return new Promise((function(t){var n=new window.Image;n.src=e,n.onload=function(){return t({url:e,i:r})}}))}))}(t),l.__awaiter(void 0,void 0,void 0,(function(){var e,t,n,a;return l.__generator(this,(function(s){switch(s.label){case 0:e=function(e){var r;return l.__generator(this,(function(t){switch(t.label){case 0:return[4,e];case 1:return r=t.sent(),m((function(e){var t;return e[f].find((function(e){return e.id===r.i}))?e:l.__assign(l.__assign({},e),((t={})[f]=l.__spreadArray(l.__spreadArray([],e[f],!0),[{id:r.i,image:r.url}],!1),t))})),[2]}}))},t=0,n=r,s.label=1;case 1:return t<n.length?(a=n[t],[5,e(a)]):[3,4];case 2:s.sent(),s.label=3;case 3:return t++,[3,1];case 4:return[2]}}))}))}}),[f,e,s,p]),t.useEffect((function(){if(p&&f){var r=e.filter((function(e){return e[f]})).length;c(p[f].length>=r)}}),[f,e,p]),{loadedImages:f&&p[f],isLoaded:i,setReady:o}},exports.useInterval=function(e,r){var n=t.useRef(e),a=t.useRef();t.useEffect((function(){n.current=e}),[e]);var s=t.useCallback((function(){a.current=window.setInterval((function(){var e;return null===(e=n.current)||void 0===e?void 0:e.call(n)}),r)}),[r]),o=t.useCallback((function(){a.current&&window.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./useEqualSheetHeight-501f4c5f.js"),r=require("./useIE-aef9decc.js"),t=require("react"),n=require("./useMediaQuery-3d1054e5.js"),a=require("./useScrollTo-fdd665da.js"),s=require("./useUpdateEffect-4d233e2c.js"),o=require("./useMounted-0bba9869.js"),u=require("./useLazyInput-f71c221b.js"),i=require("./navigation-bf154e6e.js"),l=require("./ClockFilled-2483aa4a.js"),c=require("./hexRgbConverter-91b28aea.js"),f=require("./clamp-bd21d587.js"),d=require("./arrays-c272ed59.js"),p=require("./concat-f387d848.js"),m=require("./styles-3a495a2d.js"),g=require("./useLeafletMap-2e608b01.js"),v=require("./useGeolocation-d8946470.js"),x=require("./useObserverSupport-5ab320dd.js"),h=require("./urlParams-7525f638.js"),w=require("./useCookieConsent-aa9f1104.js");function y(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("styled-components"),require("react-dom/server");var _,S=y(t);exports.ScrollDirection=void 0,(_=exports.ScrollDirection||(exports.ScrollDirection={}))[_.UP=0]="UP",_[_.DOWN=1]="DOWN";var b=function(){if(!n.isBrowser)return!1;var e=document.createElement("canvas");return(!e.getContext||!e.getContext("2d"))&&0==e.toDataURL("image/webp").indexOf("data:image/webp")};var E="undefined"!=typeof window&&"URLSearchParams"in window,P=function(e){var r={},t=Object.fromEntries(e||new URLSearchParams(window.location.search));for(var n in t){var a=t[n];"string"==typeof a&&(a=decodeURIComponent(a)),r[n]=a}return r};exports.useEqualSheetHeight=e.useEqualSheetHeight,exports.useFontsLoaded=e.useFontsLoaded,exports.useResizeThrottle=e.useResizeThrottle,exports.useIE=r.useIE,exports.getMediaQuery=n.getMediaQuery,exports.isBrowser=n.isBrowser,exports.useDynamicMediaQueries=n.useDynamicMediaQueries,exports.useMediaQueries=n.useMediaQueries,exports.useMediaQuery=n.useMediaQuery,exports.useScrollTo=a.useScrollTo,exports.useUpdateEffect=s.useUpdateEffect,exports.useMounted=o.useMounted,exports.useDebounce=u.useDebounce,exports.useLazyInput=u.useLazyInput,exports.useTimeout=u.useTimeout,exports.getCurrentNavItem=i.getCurrentNavItem,exports.getCurrentNavPath=i.getCurrentNavPath,exports.useScrollThrottle=i.useScrollThrottle,exports.hexToRgba=c.hexToRgba,exports.clampValue=f.clampValue,exports.isEmptyArray=d.isEmptyArray,exports.isValidArray=d.isValidArray,exports.concat=p.concat,exports.printAnchorTag=p.printAnchorTag,exports.getSVGDataImg=m.getSVGDataImg,exports.useLeafletMap=g.useLeafletMap,exports.useGeolocation=v.useGeolocation,exports.useObserverSupport=x.useObserverSupport,exports.deleteUrlParam=h.deleteUrlParam,exports.getUrlParams=h.getUrlParams,exports.setUrlParam=h.setUrlParam,exports.selectors=w.selectors,exports.useCookieConsent=w.useCookieConsent,exports.canUseWebP=b,exports.getBgImage=function(e,r){switch(r){default:case"small":return e.small;case"medium":return e.medium||e.semilarge||e.large||e.xlarge||e.small;case"semilarge":return e.semilarge||e.large||e.xlarge||e.medium||e.small;case"large":return e.large||e.xlarge||e.semilarge||e.medium||e.small;case"xlarge":return e.xlarge||e.large||e.semilarge||e.medium||e.small}},exports.getLinkIcon=function(e,r,t){var n,a=m.getGlobals(e).icons.linkIcons,s=".".concat((null==r?void 0:r.split(".").pop())||""),o=a.find((function(e){var r;return null===(r=e.patterns)||void 0===r?void 0:r.find((function(e){return e.match(s)}))}));return(null==o?void 0:o.iconChar)||(null===(n=null==o?void 0:o.iconUrl)||void 0===n?void 0:n.call(o,t))||""},exports.importFonts=function(e){return S.default.createElement(S.default.Fragment,null,e&&e.length>0&&S.default.createElement("style",{dangerouslySetInnerHTML:{__html:null==e?void 0:e.reduce((function(e,r){var t;return(null==r?void 0:r.fallbacks)?e+=null===(t=null==r?void 0:r.fallbacks)||void 0===t?void 0:t.reduce((function(e,r){return e+="@font-face { font-family: '".concat(r.name,"'; size-adjust: ").concat(r.sizeAdjust,"; src: local('").concat(r.altFont,"'); } ")}),""):e}),"")}}),null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"preconnect",href:e.rootPath,crossOrigin:"true"})})),null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"preload",as:"style",href:e.sourcePath})})),S.default.createElement("style",{dangerouslySetInnerHTML:{__html:"</style>".concat(null==e?void 0:e.reduce((function(e,r){return e+'\n <link rel="stylesheet" href="'.concat(r.sourcePath,'" media="print" onload="this.media=\'all\'" />')}),""),"<style>")}}),S.default.createElement("noscript",null,null==e?void 0:e.map((function(e,r){return S.default.createElement("link",{key:r,rel:"stylesheet",href:e.sourcePath})}))))},exports.useArray=function(e){var r=t.useState(e||[]),n=r[0],a=r[1];return{array:n,set:a,push:function(e){Array.isArray(e)?a((function(r){return l.__spreadArray(l.__spreadArray([],r,!0),e,!0)})):a((function(r){return l.__spreadArray(l.__spreadArray([],r,!0),[e],!1)}))},filter:function(e){a((function(r){return r.filter(e)}))},update:function(e,r){a((function(t){return l.__spreadArray(l.__spreadArray(l.__spreadArray([],t.slice(0,e),!0),[r],!1),t.slice(e+1,t.length),!0)}))},remove:function(e){a((function(r){return l.__spreadArray(l.__spreadArray([],r.slice(0,e),!0),r.slice(e+1,r.length),!0)}))},clear:function(){a([])},pop:function(){var e;return a((function(r){var t=l.__spreadArray([],r,!0);return e=t.pop(),t})),e}}},exports.useImgPreload=function(e,r){void 0===r&&(r=["semilarge","large"]);var a=t.useState(!1),s=a[0],o=a[1],u=t.useState(!1),i=u[0],c=u[1],f=n.useMediaQuery(r),d=t.useState({small:[],medium:[],semilarge:[],large:[],xlarge:[],xxlarge:[],xxxLarge:[]}),p=d[0],m=d[1];return t.useEffect((function(){var r;if(s&&p&&f&&(p[f].length<e.length&&e.length>0)){var t=e.map((function(e){return e[f]}));r=function(e){return e.filter((function(e){return e})).map((function(e,r){return new Promise((function(t){var n=new window.Image;n.src=e,n.onload=function(){return t({url:e,i:r})}}))}))}(t),l.__awaiter(void 0,void 0,void 0,(function(){var e,t,n,a;return l.__generator(this,(function(s){switch(s.label){case 0:e=function(e){var r;return l.__generator(this,(function(t){switch(t.label){case 0:return[4,e];case 1:return r=t.sent(),m((function(e){var t;return e[f].find((function(e){return e.id===r.i}))?e:l.__assign(l.__assign({},e),((t={})[f]=l.__spreadArray(l.__spreadArray([],e[f],!0),[{id:r.i,image:r.url}],!1),t))})),[2]}}))},t=0,n=r,s.label=1;case 1:return t<n.length?(a=n[t],[5,e(a)]):[3,4];case 2:s.sent(),s.label=3;case 3:return t++,[3,1];case 4:return[2]}}))}))}}),[f,e,s,p]),t.useEffect((function(){if(p&&f){var r=e.filter((function(e){return e[f]})).length;c(p[f].length>=r)}}),[f,e,p]),{loadedImages:f&&p[f],isLoaded:i,setReady:o}},exports.useInterval=function(e,r){var n=t.useRef(e),a=t.useRef();t.useEffect((function(){n.current=e}),[e]);var s=t.useCallback((function(){a.current=window.setInterval((function(){var e;return null===(e=n.current)||void 0===e?void 0:e.call(n)}),r)}),[r]),o=t.useCallback((function(){a.current&&window.clearInterval(a.current)}),[]);t.useEffect((function(){return s(),o}),[r,s,o]);var u=t.useCallback((function(){o(),s()}),[o,s]);return{clear:o,reset:u}},exports.useItemHeight=function(){var e=t.useState(null),r=e[0],n=e[1],a=t.useState(0),s=a[0],o=a[1];return t.useEffect((function(){var e=function(){r&&o(r.offsetHeight)};return r&&(e(),window.addEventListener("resize",e)),function(){window.removeEventListener("resize",e)}}),[r]),{setElement:n,height:s}},exports.useParams=function(){var e=t.useState({}),r=e[0],n=e[1];t.useEffect((function(){E&&n(P())}),[]);var a=t.useCallback((function(e,t){if(E){var a=l.__assign({},r);a[e]=t;var s=new URLSearchParams(window.location.search);for(var o in a)s.set(o,encodeURIComponent(a[o]));n(P(s)),window.history.replaceState({},"","".concat(location.pathname,"?").concat(s.toString()+location.hash))}}),[r]);return{params:r,update:a}},exports.usePoster=function(e,r){var a=t.useState(),s=a[0],o=a[1],u=e.webp&&b()?e.webp:e,i=n.useMediaQuery(r||["small","medium","semilarge","large","xlarge"]);return t.useEffect((function(){i&&u[i]&&u[i]!==s&&o(u[i])}),[s,i,u]),s},exports.useScroll=function(e){var r=e.initialTopOffset,n=void 0===r?0:r,a=e.onLeftOffset,s=e.onEnterOffset,o=t.useState(n),u=o[0],i=o[1],l=t.useState(!0),c=l[0],f=l[1],d=t.useState(!0),p=d[0],m=d[1],g=t.useState(exports.ScrollDirection.DOWN),v=g[0],x=g[1],h=t.useRef(0);return t.useEffect((function(){if("undefined"!=typeof window){var e=function(){f(window.pageYOffset<=1),m(window.pageYOffset<=1+u),h.current&&(window.pageYOffset>1+u&&h.current<=1+u&&a&&a(),window.pageYOffset<=1+u&&h.current>1+u&&s&&s(),x((function(e){return window.pageYOffset<=1||window.pageYOffset>h.current?exports.ScrollDirection.DOWN:window.pageYOffset<h.current?exports.ScrollDirection.UP:e}))),h.current=window.pageYOffset};return e(),window.addEventListener("scroll",e),function(){window.removeEventListener("scroll",e)}}}),[h,a,s,v,u]),{isTop:c,isInOffset:p,scrollDirection:v,setTopOffset:i,topOffset:u}},exports.useTouch=function(){var e=t.useState(!1),r=e[0],n=e[1];return t.useEffect((function(){n("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0)}),[]),r};
|
|
2
2
|
//# sourceMappingURL=hooks.js.map
|
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":"08BAEYA,SAAAA,QAAZA,qBAAA,GAAYA,EAAAA,0BAAAA,QAAAA,gBAGX,KAFGA,EAAA,GAAA,GAAA,KACAA,EAAAA,EAAA,KAAA,GAAA,OAGSC,ICQAC,EAAa,WACtB,IAAKC,EAAAA,UAAW,OAAO,EAEvB,IAAMC,EAAOC,SAASC,cAAc,UAEpC,QAAMF,EAAKG,aAAcH,EAAKG,WAAW,QAE6B,GAA3DH,EAAKI,UAAU,cAAcC,QAAQ,oBCpB9CC,ICAAC,EACgB,oBAAXC,QAA0B,oBAAqBA,OAEpDC,EAAe,SAACC,GACZC,IAAAA,EAA8B,GAE9BC,EAAYC,OAAOC,YACrBJ,GAAU,IAAIK,gBAAgBP,OAAOQ,SAASC,SAGlD,IAAK,IAAMC,KAASN,EAAW,CAC3B,IAAIO,EAAQP,EAAUM,GACD,iBAAVC,IACPA,EAAQC,mBAAmBD,IAE/BR,EAAIO,GAASC,EAGjB,OAAOR,mxCCpBe,SACtBU,EAOAC,GAEA,OAAQA,GACJ,QACA,IAAK,QACMD,OAAAA,EAAQE,MAEnB,IAAK,SACD,OACIF,EAAQG,QACRH,EAAQI,WACRJ,EAAQK,OACRL,EAAQM,QACRN,EAAQE,MAGhB,IAAK,YACD,OACIF,EAAQI,WACRJ,EAAQK,OACRL,EAAQM,QACRN,EAAQG,QACRH,EAAQE,MAGhB,IAAK,QACD,OACIF,EAAQK,OACRL,EAAQM,QACRN,EAAQI,WACRJ,EAAQG,QACRH,EAAQE,MAGhB,IAAK,SACD,OACIF,EAAQM,QACRN,EAAQK,OACRL,EAAQI,WACRJ,EAAQG,QACRH,EAAQE,4BC7CG,SACvBK,EACAC,EACAC,SAEMC,EAAYC,EAAMC,WAACL,GAAOM,MAAMH,UAEhCI,EAAgB,IAAAC,QAAIP,MAAAA,OAAA,EAAAA,EAAMQ,MAAM,KAAKC,QAAS,IAC9CC,EAASR,EAAUS,MAAK,SAACC,SACpB,eAAAC,EAAAD,EAAKE,+BAAUH,MAAK,SAACI,GAAY,OAAAA,EAAQC,MAAMV,SAGnD,OAAAI,MAAAA,SAAAA,EAAQO,YAA2B,QAAfJ,EAAAH,MAAAA,OAAM,EAANA,EAAQQ,eAAO,IAAAL,OAAA,EAAAA,EAAAM,KAAAT,EAAGT,KAAe,wBCDrC,SAACmB,GAEpBC,OAAAA,EAAA,QAAAhD,cAACgD,UAAMC,SAAQ,KACVF,GAASA,EAAMG,OAAS,GACrBF,UACIhD,cAAA,QAAA,CAAAmD,wBAAyB,CACrBC,OAAQL,MAAAA,OAAA,EAAAA,EAAOM,QAAO,SAACC,EAAKC,SACxB,OAAIA,MAAAA,SAAAA,EAASC,WACTF,WAAOd,EAAAe,MAAAA,OAAA,EAAAA,EAASC,gCAAWH,QACvB,SAACI,EAASC,GAEN,OADAD,GAAW,8BAAAvB,OAA8BwB,EAAEC,KAAuB,oBAAAzB,OAAAwB,EAAEE,WAA2B,kBAAA1B,OAAAwB,EAAEG,oBAIrG,IAGMP,IACf,OAKdP,MAAAA,OAAK,EAALA,EAAOe,KAAI,SAACC,EAAMC,GAAM,OACrBhB,gCACIiB,IAAKD,EACLE,IAAI,aACJvC,KAAMoC,EAAKI,SACXC,YAAY,YAGnBrB,MAAAA,OAAK,EAALA,EAAOe,KAAI,SAACC,EAAMC,GAAM,OACrBhB,EAAA,QAAAhD,cAAA,OAAA,CAAMiE,IAAKD,EAAGE,IAAI,UAAUG,GAAG,QAAQ1C,KAAMoC,EAAKO,gBAGtDtB,EAAAA,QAAAhD,cAAA,QAAA,CACImD,wBAAyB,CACrBC,OAAQ,WAAAlB,OAAWa,MAAAA,OAAK,EAALA,EAAOM,QACtB,SAACkB,EAAMhB,GACKgB,OAAAA,EAAQ,kEAAArC,OACmBqB,EAAQe,WAAwD,oDAEvG,IACM,cAIlBtB,EAAA,QAAAhD,cAAA,WAAA,KACK+C,MAAAA,OAAA,EAAAA,EAAOe,KAAI,SAACC,EAAMC,GAAM,OACrBhB,gCAAMiB,IAAKD,EAAGE,IAAI,aAAavC,KAAMoC,EAAKO,oCC7D7C,SAAIE,GACX,IAAAhC,EAAoBiC,EAAAA,SAAmBD,GAAgB,IAAtDE,EAAKlC,EAAA,GAAEmC,OA8CP,MAAA,CACHD,MAAKA,EACLE,IAAKD,EACLE,KA/CS,SAACC,GACNC,MAAMC,QAAQF,GACdH,GAAS,SAACJ,GAAS,OAAAU,EAAAA,cAAAA,EAAAA,cAAA,GAAIV,GAAI,GAAKO,GAAO,MAEvCH,GAAS,SAACJ,GAAS,OAAAU,EAAAA,cAAAA,gBAAA,GAAIV,GAAI,GAAA,CAAEO,IAAO,OA4CxCI,OA7BW,SACXC,GAEAR,GAAS,SAACJ,GAAS,OAAAA,EAAKW,OAAOC,OA2B/BC,OAxBW,SAACC,EAAeC,GAC3BX,GAAS,SAACJ,GAAS,OACZU,EAAAA,cAAAA,gBAAAA,EAAAA,cAAA,GAAAV,EAAKgB,MAAM,EAAGF,IAAM,GAAA,CACvBC,IACG,GAAAf,EAAKgB,MAAMF,EAAQ,EAAGd,EAAKrB,SAHf,OAwBnBsC,OAjBW,SAACH,GACZV,GAAS,SAACJ,GAAS,OACZU,EAAAA,cAAAA,EAAAA,cAAA,GAAAV,EAAKgB,MAAM,EAAGF,IAAM,GACpBd,EAAKgB,MAAMF,EAAQ,EAAGd,EAAKrB,SAFf,OAiBnBuC,MAXU,WACVd,EAAS,KAWTvC,IA5CQ,WACR,IAAIsD,EAOJ,OALAf,GAAS,SAACJ,GACAoB,IAAAA,EAAIV,EAAAA,cAAA,GAAOV,GAAI,GAErB,OADAmB,EAASC,EAAKvD,MACPuD,KAEJD,2BChBc,SACzBE,EACAC,QAAA,IAAAA,IAAAA,EAAA,CAAyB,YAAa,UAEhC,IAAArD,EAAsBiC,EAAQA,UAAC,GAA9BqB,EAAOtD,EAAA,GAAEuD,EAAQvD,EAAA,GAClBwD,EAAwBvB,EAAQA,UAAC,GAAhCwB,EAAQD,EAAA,GAAEE,EAASF,EAAA,GACpBG,EAAYC,gBAAcP,GAC1BQ,EAAkC5B,EAAAA,SAErC,CACCpD,MAAO,GACPC,OAAQ,GACRC,UAAW,GACXC,MAAO,GACPC,OAAQ,GACR6E,QAAS,GACTC,SAAU,KATPC,EAAYH,EAAA,GAAEI,OAmEd,OAzCPC,EAAAA,WAAU,WAEF,IAK2BC,EAN/B,GAAIb,GAAWU,GAAgBL,IACPK,EAAaL,GAEjBjD,OAAS0C,EAAU1C,QAAU0C,EAAU1C,OAAS,GAAG,CACzD0D,IAAAA,EAAkBhB,EAAU9B,KAAI,SAAC+C,GAAQA,OAAAA,EAAIV,MAE5BQ,EArBb,SAACf,GAWnB,OAVgBA,EAAUV,QAAO,SAAC2B,GAAQ,OAAAA,KAAkB/C,KACxD,SAACgD,EAAK9C,GACF,OAAO,IAAI+C,SAAQ,SAACC,GAChB,IAAMH,EAAM,IAAIvG,OAAO2G,MACvBJ,EAAIC,IAAMA,EACVD,EAAIK,OAAS,WAAM,OAAAF,EAAI,CAAEG,IAAKL,EAAK9C,EAACA,WAqChCoD,CAAcR,GAtBWS,EAAAA,eAAA,OAAA,OAAA,GAAA,gGAClBC,gEACG,KAAA,EAAA,MAAA,CAAA,EAAMA,iBAAVC,EAAIvB,EAAUwB,OAEpBf,GAAgB,SAAClC,SAET,OAACA,EAAK4B,GAAW7D,MAAK,SAACmF,GAAM,OAAAA,EAAEC,KAAOH,EAAEvD,KAW9BO,EAVVoD,EAAAA,SAAAA,EAAAA,SAAA,GACOpD,KACF/B,EAAA,IAAA2D,sCACM5B,EAAK4B,IAAU,GAAA,CAClB,CACIuB,GAAIH,EAAEvD,EACN4D,MAAOL,EAAEJ,OAGnB,GAAA3E,gBAfUqF,EAAA,EAALC,EAAKnB,mBAAL,OAAAkB,YAARP,EAAIQ,EAAAD,QAAJP,KAAa,CAAA,EAAA,2CAALO,qCAwBhC,CAAC1B,EAAWP,EAAWE,EAASU,IAEnCE,EAAAA,WAAU,WACFF,GAAAA,GAAgBL,EAAW,CACrB4B,IAAAA,EAAWnC,EAAUV,QAAO,SAAC2B,GAAQA,OAAAA,EAAIV,MAAYjD,OAC3DgD,EAAUM,EAAaL,GAAWjD,QAAU6E,MAEjD,CAAC5B,EAAWP,EAAWY,IAEnB,CACHA,aAAcL,GAAaK,EAAaL,GACxCF,SAAQA,EACRF,SAAQA,wBChFF,SAAsBZ,EAAsB6C,GACtD,IAAMC,EAAcC,SAAO/C,GACrBgD,EAAcD,EAAAA,SAGpBxB,EAAAA,WAAU,WACNuB,EAAY1E,QAAU4B,IACvB,CAACA,IAEJ,IAAMP,EAAMwD,EAAAA,aAAY,WACpBD,EAAY5E,QAAUjD,OAAO+H,aACzB,WAAM,IAAA7F,EAAA,OAAuB,UAAvByF,EAAY1E,eAAW,IAAAf,OAAA,EAAAA,EAAAM,KAAAmF,KAC7BD,KAEL,CAACA,IAEEvC,EAAQ2C,EAAAA,aAAY,WACtBD,EAAY5E,SAAWjD,OAAOgI,aAAaH,EAAY5E,WACxD,IAEHmD,EAAAA,WAAU,WAEN,OADA9B,IACOa,IACR,CAACuC,EAAOpD,EAAKa,IAEhB,IAAM8C,EAAQH,EAAAA,aAAY,WACtB3C,IACAb,MACD,CAACa,EAAOb,IAEJ,MAAA,CAAEa,MAAKA,EAAE8C,MAAKA,0BC9BI,WACnB,IAAA/F,EAAwBiC,EAAQA,SAAqB,MAApDK,EAAOtC,EAAA,GAAEgG,EAAUhG,EAAA,GACpBwD,EAAsBvB,EAAQA,SAAS,GAAtCgE,EAAMzC,EAAA,GAAE0C,EAAS1C,EAAA,GAiBjB,OAfPU,EAAAA,WAAU,WACAiC,IAAAA,EAAa,WACX7D,GAAS4D,EAAU5D,EAAQ8D,eAQnC,OALI9D,IACA6D,IACArI,OAAOuI,iBAAiB,SAAUF,IAG/B,WACHrI,OAAOwI,oBAAoB,SAAUH,MAE1C,CAAC7D,IAEG,CACH0D,WAAUA,EACVC,OAAMA,sBPAI,WACR,IAAAjG,EAAsBiC,EAAQA,SAAyB,IAAtDjE,EAAMgC,EAAA,GAAEuG,EAASvG,EAAA,GAExBkE,EAAAA,WAAU,WACDrG,GAEL0I,EAAUxI,OACX,IAEG6E,IAAAA,EAASgD,EAAAA,aACX,SAACnE,EAAahD,GACN,GAACZ,EAAD,CAEJ,IAAM2I,EAASrB,EAAAA,SAAA,GAAQnH,GACvBwI,EAAU/E,GAAOhD,EAEXgI,IAAAA,EAAgB,IAAIpI,gBAAgBP,OAAOQ,SAASC,QAC1D,IAAK,IAAMC,KAASgI,EAChBC,EAAcrE,IAAI5D,EAAOkI,mBAAmBF,EAAUhI,KAG1D+H,EAAUxI,EAAa0I,IAEvB3I,OAAO6I,QAAQC,aACX,GACA,GACA,GAAAlH,OAAGpB,SAASuI,SACR,KAAAnH,OAAA+G,EAAcK,WAAaxI,SAASyI,UAIhD,CAAC/I,IAGE,MAAA,CAAEA,OAAMA,EAAE4E,OAAMA,sBF1BF,SACrBoE,EAGA3D,GAEMrD,IAAAA,EAAkCiC,EAAAA,WAAjCgF,EAAYjH,EAAA,GAAEkH,EAAelH,EAAA,GAE9BmH,EACFH,EAAYI,MAAQhK,IAAe4J,EAAYI,KAAOJ,EACpDrD,EAAYC,gBACdP,GAAO,CAAC,QAAS,SAAU,YAAa,QAAS,WAarD,OAVAa,EAAAA,WAAU,WAEFP,GACAwD,EAAaxD,IACbwD,EAAaxD,KAAesD,GAE5BC,EAAgBC,EAAaxD,MAElC,CAACsD,EAActD,EAAWwD,IAEtBF,qBDhDc,SAACjH,OACtBwD,EAAoBxD,EAAAqH,iBAApBA,OAAgB,IAAA7D,EAAG,EAACA,EACpB8D,EAAYtH,EAAAsH,aACZC,EAAavH,EAAAuH,cAMP1D,EAA4B5B,EAAQA,SAASoF,GAA5CG,EAAS3D,EAAA,GAAE4D,EAAY5D,EAAA,GACxB6D,EAAoBzF,EAAQA,UAAU,GAArC0F,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAChBG,EAA8B5F,EAAQA,UAAU,GAA/C6F,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAC1BG,EAAwC/F,EAAAA,SAC1C/E,QAAeA,gBAAC+K,MADbC,EAAeF,EAAA,GAAEG,OAGlBC,EAAgB1C,SAAe,GAmD9B,OAjDPxB,EAAAA,WAAU,WACN,GAAsB,oBAAXpG,OAAX,CACMuK,IAAAA,EAAe,WACjBT,EAAS9J,OAAOwK,aAAe,GAC/BP,EAAcjK,OAAOwK,aAAe,EAAId,GAEpCY,EAAcrH,UAGVjD,OAAOwK,YAAc,EAAId,GACzBY,EAAcrH,SAAW,EAAIyG,GAE7BF,GAAgBA,IAKhBxJ,OAAOwK,aAAe,EAAId,GAC1BY,EAAcrH,QAAU,EAAIyG,GAE5BD,GAAiBA,IAGrBY,GAAmB,SAACpG,GACZjE,OAAAA,OAAOwK,aAAe,GACnBxK,OAAOwK,YAAcF,EAAcrH,QADN7D,QAAAA,gBAAgB+K,KAG9CnK,OAAOwK,YAAcF,EAAcrH,QACnC7D,QAAAA,gBAAgBqL,GAChBxG,MAGdqG,EAAcrH,QAAUjD,OAAOwK,aAMnC,OAHAD,IACAvK,OAAOuI,iBAAiB,SAAUgC,GAE3B,WACHvK,OAAOwI,oBAAoB,SAAU+B,OAE1C,CACCD,EACAd,EACAC,EACAW,EACAV,IAGG,CACHG,MAAKA,EACLG,WAAUA,EACVI,gBAAeA,EACfT,aAAYA,EACZD,UAASA,qBE5EA,WACP,IAAAxH,EAA0BiC,EAAQA,UAAC,GAAlCuG,EAAQxI,EAAA,GAAEyI,EAAWzI,EAAA,GAS5B,OAPAkE,EAAAA,WAAU,WACNuE,EACI,iBAAkB3K,QACd4K,UAAUC,eAAiB,GAC1BD,UAAkBE,iBAAmB,KAE/C,IACIJ"}
|
|
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.clearInterval(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","clearInterval","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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"}
|