@comet/site-nextjs 9.0.0-beta.3 → 9.0.0-beta.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 (85) hide show
  1. package/lib/blocks/DamVideoBlock.js +2 -13
  2. package/lib/blocks/InternalLinkBlock.js +2 -18
  3. package/lib/blocks/PixelImageBlock.d.ts.map +1 -1
  4. package/lib/blocks/PixelImageBlock.js +2 -69
  5. package/lib/blocks/PixelImageBlock.module.scss.js +1 -8
  6. package/lib/blocks/VimeoVideoBlock.js +2 -13
  7. package/lib/blocks/YouTubeVideoBlock.js +2 -13
  8. package/lib/blocks/factories/SeoBlock.js +5 -39
  9. package/lib/blocks/helpers/VideoPreviewImage.js +2 -9
  10. package/lib/graphQLFetch/graphQLFetch.js +1 -36
  11. package/lib/image/Image.d.ts.map +1 -1
  12. package/lib/image/Image.js +2 -10
  13. package/lib/index.d.ts +2 -5
  14. package/lib/index.d.ts.map +1 -1
  15. package/lib/index.js +1 -112
  16. package/lib/persistedQueries/webpackPersistedQueriesLoader.d.ts +2 -0
  17. package/lib/persistedQueries/webpackPersistedQueriesLoader.d.ts.map +1 -0
  18. package/lib/persistedQueries/webpackPersistedQueriesLoader.js +1 -0
  19. package/lib/server.d.ts +5 -0
  20. package/lib/server.d.ts.map +1 -0
  21. package/lib/server.js +1 -0
  22. package/lib/site-react/lib/blockLoader/blockLoader.js +1 -59
  23. package/lib/site-react/lib/blocks/DamFileDownloadLinkBlock.js +1 -27
  24. package/lib/site-react/lib/blocks/DamVideoBlock.js +3 -99
  25. package/lib/site-react/lib/blocks/DamVideoBlock.module.scss.js +1 -14
  26. package/lib/site-react/lib/blocks/EmailLinkBlock.js +1 -21
  27. package/lib/site-react/lib/blocks/ExternalLinkBlock.js +1 -47
  28. package/lib/site-react/lib/blocks/PhoneLinkBlock.js +1 -21
  29. package/lib/site-react/lib/blocks/SvgImageBlock.js +1 -30
  30. package/lib/site-react/lib/blocks/VimeoVideoBlock.js +2 -129
  31. package/lib/site-react/lib/blocks/VimeoVideoBlock.module.scss.js +1 -14
  32. package/lib/site-react/lib/blocks/YouTubeVideoBlock.js +2 -136
  33. package/lib/site-react/lib/blocks/YouTubeVideoBlock.module.scss.js +1 -14
  34. package/lib/site-react/lib/blocks/factories/BlocksBlock.js +1 -27
  35. package/lib/site-react/lib/blocks/factories/ListBlock.js +1 -13
  36. package/lib/site-react/lib/blocks/factories/OneOfBlock.js +1 -23
  37. package/lib/site-react/lib/blocks/factories/OptionalBlock.js +1 -10
  38. package/lib/site-react/lib/blocks/helpers/PlayPauseButton.js +1 -9
  39. package/lib/site-react/lib/blocks/helpers/PlayPauseButton.module.scss.js +1 -14
  40. package/lib/site-react/lib/blocks/helpers/RichTextBlockHelper.js +1 -7
  41. package/lib/site-react/lib/blocks/helpers/TipTapRichTextRenderer.js +1 -0
  42. package/lib/site-react/lib/blocks/helpers/VideoPreviewImage.js +2 -23
  43. package/lib/site-react/lib/blocks/helpers/VideoPreviewImage.module.scss.js +1 -17
  44. package/lib/site-react/lib/blocks/helpers/useIsElementInViewport.js +1 -21
  45. package/lib/site-react/lib/cookies/CookieApiContext.js +1 -18
  46. package/lib/site-react/lib/cookies/CookieSafe.js +1 -18
  47. package/lib/site-react/lib/cookies/useCookieBotCookieApi.js +1 -33
  48. package/lib/site-react/lib/cookies/useLocalStorageCookieApi.js +1 -40
  49. package/lib/site-react/lib/cookies/useOneTrustCookieApi.js +1 -45
  50. package/lib/site-react/lib/errorHandler/ErrorHandlerBoundary.js +1 -10
  51. package/lib/site-react/lib/errorHandler/ErrorHandlerBoundaryInternal.js +1 -26
  52. package/lib/site-react/lib/errorHandler/ErrorHandlerProvider.js +1 -20
  53. package/lib/site-react/lib/graphQLFetch/fetchInMemoryCache.js +1 -37
  54. package/lib/site-react/lib/graphQLFetch/graphQLFetch.js +1 -125
  55. package/lib/site-react/lib/iframebridge/IFrameBridge.js +3 -253
  56. package/lib/site-react/lib/iframebridge/IFrameBridge.module.scss.js +1 -8
  57. package/lib/site-react/lib/iframebridge/IFrameMessage.js +1 -21
  58. package/lib/site-react/lib/iframebridge/Preview.js +1 -56
  59. package/lib/site-react/lib/iframebridge/Preview.module.scss.js +1 -8
  60. package/lib/site-react/lib/iframebridge/PreviewOverlay.js +1 -28
  61. package/lib/site-react/lib/iframebridge/PreviewOverlay.module.scss.js +1 -8
  62. package/lib/site-react/lib/iframebridge/PreviewOverlayElement.js +1 -36
  63. package/lib/site-react/lib/iframebridge/PreviewOverlayElement.module.scss.js +1 -20
  64. package/lib/site-react/lib/iframebridge/useBlockPreviewFetch.js +1 -29
  65. package/lib/site-react/lib/iframebridge/useIFrameBridge.js +1 -8
  66. package/lib/site-react/lib/iframebridge/utils.js +1 -46
  67. package/lib/site-react/lib/iframebridge/withPreview.js +1 -33
  68. package/lib/site-react/lib/image/image.utils.js +1 -55
  69. package/lib/site-react/lib/jsonLd/JsonLd.js +1 -0
  70. package/lib/site-react/lib/persistedQueries/createPersistedQueryGraphQLFetch.js +1 -70
  71. package/lib/site-react/lib/persistedQueries/persistedQueryRoute.js +1 -100
  72. package/lib/site-react/lib/persistedQueries/webpackPersistedQueriesLoader.js +1 -51
  73. package/lib/site-react/lib/preview/BlockPreviewProvider.js +1 -32
  74. package/lib/site-react/lib/preview/PreviewContext.js +1 -9
  75. package/lib/site-react/lib/preview/usePreview.js +1 -41
  76. package/lib/site-react/lib/previewskeleton/PreviewSkeleton.js +4 -64
  77. package/lib/site-react/lib/previewskeleton/PreviewSkeleton.module.scss.js +1 -17
  78. package/lib/site-react/lib/sitePreview/iframebridge/SitePreviewIFrameMessage.js +1 -8
  79. package/lib/site-react/lib/sitePreview/iframebridge/sendSitePreviewIFrameMessage.js +1 -6
  80. package/lib/sitePreview/SitePreviewProvider.js +1 -40
  81. package/lib/sitePreview/appRouter/sitePreviewRoute.js +1 -27
  82. package/lib/sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler.js +1 -20
  83. package/lib/sitePreview/previewUtils.js +1 -54
  84. package/lib/style.css +1 -1
  85. package/package.json +15 -11
@@ -1,9 +1 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import clsx from "clsx";
3
- import styles from "./PlayPauseButton.module.scss.js";
4
- const PlayPauseButton = ({ isPlaying, onClick, ariaLabelPlay, ariaLabelPause }) => {
5
- return /* @__PURE__ */ jsx("button", { className: clsx(styles.button), onClick, "aria-label": isPlaying ? ariaLabelPause ?? "Pause" : ariaLabelPlay ?? "Play", children: /* @__PURE__ */ jsx("div", { className: clsx(styles.animatedPlayPause, isPlaying && styles.animatedPlayPausePaused) }) });
6
- };
7
- export {
8
- PlayPauseButton
9
- };
1
+ import{jsx as a}from"react/jsx-runtime";import s from"clsx";import e from"./PlayPauseButton.module.scss.js";const l=({isPlaying:l,onClick:t,ariaLabelPlay:i,ariaLabelPause:o})=>/* @__PURE__ */a("button",{className:s(e.button),onClick:t,"aria-label":l?o??"Pause":i??"Play",children:/* @__PURE__ */a("div",{className:s(e.animatedPlayPause,l&&e.animatedPlayPausePaused)})});export{l as PlayPauseButton};
@@ -1,14 +1 @@
1
- const button = "_button_4r8gs_1";
2
- const animatedPlayPause = "_animatedPlayPause_4r8gs_23";
3
- const animatedPlayPausePaused = "_animatedPlayPausePaused_4r8gs_32";
4
- const styles = {
5
- button,
6
- animatedPlayPause,
7
- animatedPlayPausePaused
8
- };
9
- export {
10
- animatedPlayPause,
11
- animatedPlayPausePaused,
12
- button,
13
- styles as default
14
- };
1
+ const a="_button_4r8gs_1",e="_animatedPlayPause_4r8gs_23",s="_animatedPlayPausePaused_4r8gs_32",t={button:a,animatedPlayPause:e,animatedPlayPausePaused:s};export{e as animatedPlayPause,s as animatedPlayPausePaused,a as button,t as default};
@@ -1,7 +1 @@
1
- const hasRichTextBlockContent = (data) => {
2
- const draftContent = data.draftContent;
3
- return !(draftContent.blocks.length === 0 || draftContent.blocks.length === 1 && draftContent.blocks[0].text === "");
4
- };
5
- export {
6
- hasRichTextBlockContent
7
- };
1
+ const t=t=>{const n=t.draftContent;return!(0===n.blocks.length||1===n.blocks.length&&""===n.blocks[0].text)};export{t as hasRichTextBlockContent};
@@ -0,0 +1 @@
1
+ import{jsx as r,Fragment as e}from"react/jsx-runtime";import{isValidElement as n,cloneElement as t}from"react";const i=String.fromCodePoint(160),c=String.fromCodePoint(173),o={paragraph:({children:e})=>/* @__PURE__ */r("p",{children:e}),heading:({node:e,children:n})=>{const t=e.attrs?.level??1;return r(`h${t}`,{children:n})},bulletList:({children:e})=>/* @__PURE__ */r("ul",{children:e}),orderedList:({children:e})=>/* @__PURE__ */r("ol",{children:e}),listItem:({children:e})=>/* @__PURE__ */r("li",{children:e}),hardBreak:()=>/* @__PURE__ */r("br",{}),nonBreakingSpace:()=>i,softHyphen:()=>c},d={bold:({children:e})=>/* @__PURE__ */r("strong",{children:e}),italic:({children:e})=>/* @__PURE__ */r("em",{children:e}),strike:({children:e})=>/* @__PURE__ */r("s",{children:e}),superscript:({children:e})=>/* @__PURE__ */r("sup",{children:e}),subscript:({children:e})=>/* @__PURE__ */r("sub",{children:e})};function l({content:i,nodeMapping:c,markMapping:l}){const h={...o,...c},a={...d,...l},s=(r,e)=>{if(!e.marks||0===e.marks.length)return r;let n=r;for(const t of e.marks){const r=a[t.type];r&&(n=r({mark:t,node:e,children:n}))}return n},p=(i,c)=>{if("text"===i.type)return s(i.text??"",i);const o=i.content?.map((r,e)=>{const c=p(r,i);return n(c)?t(c,{key:e}):c});if("doc"===i.type)return r(e,{children:o});const d=h[i.type],l=d?d({node:i,parent:c,children:o}):/* @__PURE__ */r(e,{children:o});return s(l,i)};return p(i,void 0)}function h(r){return!(!r?.content||!Array.isArray(r.content))&&r.content.some(r=>"paragraph"!==r.type||Array.isArray(r.content)&&r.content.length>0)}export{h as hasTipTapRichTextContent,l as renderTipTapRichText};
@@ -1,23 +1,2 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import clsx from "clsx";
3
- import styles from "./VideoPreviewImage.module.scss.js";
4
- const VideoPreviewImage = ({
5
- onPlay,
6
- image,
7
- aspectRatio,
8
- sizes = "100vw",
9
- fill,
10
- playButtonAriaLabel = "Play video",
11
- icon = /* @__PURE__ */ jsx(PlayIcon, { playButtonAriaLabel }),
12
- className,
13
- renderImage
14
- }) => {
15
- return /* @__PURE__ */ jsxs("div", { className: clsx(styles.root, fill && styles.fill, className), children: [
16
- renderImage({ data: image, aspectRatio, sizes, fill }),
17
- /* @__PURE__ */ jsx("button", { className: styles.iconWrapper, onClick: onPlay, children: icon })
18
- ] });
19
- };
20
- const PlayIcon = ({ playButtonAriaLabel }) => /* @__PURE__ */ jsx("span", { className: styles.playIcon, "aria-label": playButtonAriaLabel });
21
- export {
22
- VideoPreviewImage
23
- };
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import i from"clsx";import l from"./VideoPreviewImage.module.scss.js";const o=({onPlay:o,image:r,aspectRatio:t,sizes:c="100vw",fill:m,playButtonAriaLabel:n="Play video",icon:p=/* @__PURE__ */e(s,{playButtonAriaLabel:n}),className:d,renderImage:f})=>/* @__PURE__ */a("div",{className:i(l.root,m&&l.fill,d),children:[f({data:r,aspectRatio:t,sizes:c,fill:m}),
2
+ /* @__PURE__ */e("button",{className:l.iconWrapper,onClick:o,children:p})]}),s=({playButtonAriaLabel:a})=>/* @__PURE__ */e("span",{className:l.playIcon,"aria-label":a});export{o as VideoPreviewImage};
@@ -1,17 +1 @@
1
- const root = "_root_1k5a5_1";
2
- const fill = "_fill_1k5a5_6";
3
- const iconWrapper = "_iconWrapper_1k5a5_10";
4
- const playIcon = "_playIcon_1k5a5_26";
5
- const styles = {
6
- root,
7
- fill,
8
- iconWrapper,
9
- playIcon
10
- };
11
- export {
12
- styles as default,
13
- fill,
14
- iconWrapper,
15
- playIcon,
16
- root
17
- };
1
+ const a="_root_1k5a5_1",o="_fill_1k5a5_6",_="_iconWrapper_1k5a5_10",l="_playIcon_1k5a5_26",p={root:a,fill:o,iconWrapper:_,playIcon:l};export{p as default,o as fill,_ as iconWrapper,l as playIcon,a as root};
@@ -1,22 +1,2 @@
1
1
  "use client";
2
- import { useEffect } from "react";
3
- const useIsElementInViewport = (ref, callback) => {
4
- useEffect(() => {
5
- if (!ref.current) {
6
- return;
7
- }
8
- const observer = new IntersectionObserver(
9
- ([entry]) => {
10
- callback(entry.isIntersecting);
11
- },
12
- { threshold: 0.5 }
13
- );
14
- observer.observe(ref.current);
15
- return () => {
16
- observer.disconnect();
17
- };
18
- }, [ref, callback]);
19
- };
20
- export {
21
- useIsElementInViewport
22
- };
2
+ import{useEffect as e}from"react";const r=(r,t)=>{e(()=>{if(!r.current)return;const e=new IntersectionObserver(([e])=>{t(e.isIntersecting)},{threshold:.5});return e.observe(r.current),()=>{e.disconnect()}},[r,t])};export{r as useIsElementInViewport};
@@ -1,19 +1,2 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { useContext, createContext } from "react";
4
- const CookieApiContext = createContext(void 0);
5
- const CookieApiProvider = ({ api: useCookieApi2, children }) => {
6
- const api = useCookieApi2();
7
- return /* @__PURE__ */ jsx(CookieApiContext.Provider, { value: api, children });
8
- };
9
- const useCookieApi = () => {
10
- const cookieApi = useContext(CookieApiContext);
11
- if (!cookieApi) {
12
- throw new Error("Can only be used inside CookieApiProvider.");
13
- }
14
- return cookieApi;
15
- };
16
- export {
17
- CookieApiProvider,
18
- useCookieApi
19
- };
2
+ import{jsx as r}from"react/jsx-runtime";import{useContext as o,createContext as e}from"react";const i=e(void 0),n=({api:o,children:e})=>{const n=o();return r(i.Provider,{value:n,children:e})},t=()=>{const r=o(i);if(!r)throw new Error("Can only be used inside CookieApiProvider.");return r};export{n as CookieApiProvider,t as useCookieApi};
@@ -1,19 +1,2 @@
1
1
  "use client";
2
- import { jsx, Fragment } from "react/jsx-runtime";
3
- import { usePreview } from "../preview/usePreview.js";
4
- import { useCookieApi } from "./CookieApiContext.js";
5
- const CookieSafe = ({ consented, fallback, loading, children }) => {
6
- const { initialized } = useCookieApi();
7
- const { previewType } = usePreview();
8
- const isInPreview = previewType !== "NoPreview";
9
- if (initialized && consented || isInPreview) {
10
- return /* @__PURE__ */ jsx(Fragment, { children });
11
- }
12
- if (!initialized) {
13
- return /* @__PURE__ */ jsx(Fragment, { children: loading });
14
- }
15
- return /* @__PURE__ */ jsx(Fragment, { children: fallback });
16
- };
17
- export {
18
- CookieSafe
19
- };
2
+ import{jsx as e,Fragment as i}from"react/jsx-runtime";import{usePreview as r}from"../preview/usePreview.js";import{useCookieApi as o}from"./CookieApiContext.js";const n=({consented:n,fallback:t,loading:s,children:a})=>{const{initialized:c}=o(),{previewType:p}=r();return e(i,c&&n||"NoPreview"!==p?{children:a}:c?{children:t}:{children:s})};export{n as CookieSafe};
@@ -1,34 +1,2 @@
1
1
  "use client";
2
- import { useState, useEffect } from "react";
3
- const isWindowWithCookiebot = (window2) => {
4
- return "Cookiebot" in window2;
5
- };
6
- const useCookieBotCookieApi = () => {
7
- const [consentedCookies, setConsentedCookies] = useState([]);
8
- const [initialized, setInitialized] = useState(false);
9
- useEffect(() => {
10
- const handleCookieUpdated = () => {
11
- if (isWindowWithCookiebot(window)) {
12
- setInitialized(true);
13
- const consentedList = window.Cookiebot.consent;
14
- setConsentedCookies(Object.keys(consentedList).filter((key) => consentedList[key]));
15
- }
16
- };
17
- window.addEventListener("CookiebotOnConsentReady", handleCookieUpdated);
18
- return () => {
19
- window.removeEventListener("CookiebotOnConsentReady", handleCookieUpdated);
20
- };
21
- }, []);
22
- return {
23
- initialized,
24
- consentedCookies,
25
- openCookieSettings: () => {
26
- if (isWindowWithCookiebot(window)) {
27
- window.Cookiebot.renew();
28
- }
29
- }
30
- };
31
- };
32
- export {
33
- useCookieBotCookieApi
34
- };
2
+ import{useState as o,useEffect as e}from"react";const n=o=>"Cookiebot"in o,t=()=>{const[t,i]=o([]),[s,r]=o(!1);return e(()=>{const o=()=>{if(n(window)){r(!0);const o=window.Cookiebot.consent;i(Object.keys(o).filter(e=>o[e]))}};return window.addEventListener("CookiebotOnConsentReady",o),()=>{window.removeEventListener("CookiebotOnConsentReady",o)}},[]),{initialized:s,consentedCookies:t,openCookieSettings:()=>{n(window)&&window.Cookiebot.renew()}}};export{t as useCookieBotCookieApi};
@@ -1,41 +1,2 @@
1
1
  "use client";
2
- import { useState, useCallback, useEffect } from "react";
3
- import { useLocalStorage } from "usehooks-ts";
4
- const localStorageCookieApiKey = "comet-dev-cookie-api-consented-cookies";
5
- const useLocalStorageCookieApi = () => {
6
- const [consentedCookies, setConsentedCookies] = useLocalStorage(localStorageCookieApiKey, []);
7
- const [initialized, setInitialized] = useState(false);
8
- const openCookieSettings = useCallback(() => {
9
- const cookies = prompt('Define consented cookies (separated by ","):', consentedCookies.join(",")) ?? "";
10
- const cookiesList = cookies.split(",").map((cookie) => cookie.trim());
11
- setConsentedCookies(cookiesList);
12
- logCookieUpdate(cookiesList);
13
- }, [consentedCookies, setConsentedCookies]);
14
- useEffect(() => {
15
- const storedCookies = window.localStorage.getItem(localStorageCookieApiKey);
16
- const cookiesList = JSON.parse(storedCookies ?? "[]");
17
- logCookieUpdate(cookiesList);
18
- const simulateLoadingTimeout = setTimeout(() => {
19
- setInitialized(true);
20
- window.cometLocalStorageCookieApi = {
21
- initialized: true,
22
- consentedCookies,
23
- openCookieSettings
24
- };
25
- }, 1e3);
26
- return () => {
27
- clearTimeout(simulateLoadingTimeout);
28
- };
29
- }, [consentedCookies, openCookieSettings]);
30
- return {
31
- initialized,
32
- consentedCookies,
33
- openCookieSettings
34
- };
35
- };
36
- const logCookieUpdate = (cookies) => {
37
- console.info("Consented cookies updated:", cookies);
38
- };
39
- export {
40
- useLocalStorageCookieApi
41
- };
2
+ import{useState as o,useCallback as e,useEffect as t}from"react";import{useLocalStorage as i}from"usehooks-ts";const n="comet-dev-cookie-api-consented-cookies",s=()=>{const[s,r]=i(n,[]),[a,p]=o(!1),d=e(()=>{const o=(prompt('Define consented cookies (separated by ","):',s.join(","))??"").split(",").map(o=>o.trim());r(o),c(o)},[s,r]);return t(()=>{const o=window.localStorage.getItem(n),e=JSON.parse(o??"[]");c(e);const t=setTimeout(()=>{p(!0),window.cometLocalStorageCookieApi={initialized:!0,consentedCookies:s,openCookieSettings:d}},1e3);return()=>{clearTimeout(t)}},[s,d]),{initialized:a,consentedCookies:s,openCookieSettings:d}},c=o=>{console.info("Consented cookies updated:",o)};export{s as useLocalStorageCookieApi};
@@ -1,46 +1,2 @@
1
1
  "use client";
2
- import { useState, useEffect } from "react";
3
- const isWindowWithOneTrust = (window2) => {
4
- return "OneTrust" in window2;
5
- };
6
- const useOneTrustCookieApi = () => {
7
- const [consentedCookies, setConsentedCookies] = useState([]);
8
- const [initialized, setInitialized] = useState(false);
9
- useEffect(() => {
10
- const startListeningForConsentChanges = (window2) => {
11
- const oneTrust = window2.OneTrust;
12
- const initialCookieConsent = [];
13
- if (window2.OnetrustActiveGroups) {
14
- initialCookieConsent.push(
15
- ...window2.OnetrustActiveGroups.split(",").map((groupId) => groupId.trim()).filter(Boolean)
16
- );
17
- }
18
- setConsentedCookies(initialCookieConsent);
19
- oneTrust.OnConsentChanged((event) => {
20
- setConsentedCookies(event.detail);
21
- });
22
- };
23
- const tryToAccessOneTrustInterval = setInterval(() => {
24
- if (isWindowWithOneTrust(window)) {
25
- setInitialized(true);
26
- clearInterval(tryToAccessOneTrustInterval);
27
- startListeningForConsentChanges(window);
28
- }
29
- }, 200);
30
- return () => {
31
- clearInterval(tryToAccessOneTrustInterval);
32
- };
33
- }, []);
34
- return {
35
- initialized,
36
- consentedCookies,
37
- openCookieSettings: () => {
38
- if (isWindowWithOneTrust(window)) {
39
- window.OneTrust.ToggleInfoDisplay();
40
- }
41
- }
42
- };
43
- };
44
- export {
45
- useOneTrustCookieApi
46
- };
2
+ import{useState as e,useEffect as t}from"react";const n=e=>"OneTrust"in e,o=()=>{const[o,r]=e([]),[i,s]=e(!1);return t(()=>{const e=setInterval(()=>{n(window)&&(s(!0),clearInterval(e),(e=>{const t=e.OneTrust,n=[];e.OnetrustActiveGroups&&n.push(...e.OnetrustActiveGroups.split(",").map(e=>e.trim()).filter(Boolean)),r(n),t.OnConsentChanged(e=>{r(e.detail)})})(window))},200);return()=>{clearInterval(e)}},[]),{initialized:i,consentedCookies:o,openCookieSettings:()=>{n(window)&&window.OneTrust.ToggleInfoDisplay()}}};export{o as useOneTrustCookieApi};
@@ -1,10 +1 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { ErrorHandlerBoundaryInternal } from "./ErrorHandlerBoundaryInternal.js";
3
- import { useErrorHandler } from "./ErrorHandlerProvider.js";
4
- function ErrorHandlerBoundary({ children }) {
5
- const { onError } = useErrorHandler();
6
- return /* @__PURE__ */ jsx(ErrorHandlerBoundaryInternal, { onError, children });
7
- }
8
- export {
9
- ErrorHandlerBoundary
10
- };
1
+ import{jsx as r}from"react/jsx-runtime";import{ErrorHandlerBoundaryInternal as o}from"./ErrorHandlerBoundaryInternal.js";import{useErrorHandler as n}from"./ErrorHandlerProvider.js";function e({children:e}){const{onError:a}=n();return r(o,{onError:a,children:e})}export{e as ErrorHandlerBoundary};
@@ -1,27 +1,2 @@
1
1
  "use client";
2
- import { Component } from "react";
3
- class ErrorHandlerBoundaryInternal extends Component {
4
- constructor(props) {
5
- super(props);
6
- this.state = { hasError: false };
7
- }
8
- static getDerivedStateFromError() {
9
- return { hasError: true };
10
- }
11
- componentDidCatch(error, errorInfo) {
12
- console.error(error);
13
- if (this.props.onError) {
14
- this.props.onError(error, errorInfo);
15
- }
16
- }
17
- render() {
18
- var _a;
19
- if ((_a = this.state) == null ? void 0 : _a.hasError) {
20
- return null;
21
- }
22
- return this.props.children;
23
- }
24
- }
25
- export {
26
- ErrorHandlerBoundaryInternal
27
- };
2
+ import{Component as r}from"react";class t extends r{constructor(r){super(r),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(r,t){console.error(r),this.props.onError&&this.props.onError(r,t)}render(){return this.state?.hasError?null:this.props.children}}export{t as ErrorHandlerBoundaryInternal};
@@ -1,21 +1,2 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { useContext, createContext } from "react";
4
- const ErrorHandlerContext = createContext({
5
- onError: (error, errorInfo) => {
6
- if (process.env.NODE_ENV === "development") {
7
- console.error("Error caught by error handler", error, errorInfo.componentStack);
8
- throw error;
9
- }
10
- }
11
- });
12
- function ErrorHandlerProvider({ children, onError }) {
13
- return /* @__PURE__ */ jsx(ErrorHandlerContext.Provider, { value: { onError }, children });
14
- }
15
- const useErrorHandler = () => {
16
- return useContext(ErrorHandlerContext);
17
- };
18
- export {
19
- ErrorHandlerProvider,
20
- useErrorHandler
21
- };
2
+ import{jsx as r}from"react/jsx-runtime";import{useContext as o,createContext as e}from"react";const n=e({onError:(r,o)=>{if("development"===process.env.NODE_ENV)throw console.error("Error caught by error handler",r,o.componentStack),r}});function t({children:o,onError:e}){return r(n.Provider,{value:{onError:e},children:o})}const c=()=>o(n);export{t as ErrorHandlerProvider,c as useErrorHandler};
@@ -1,37 +1 @@
1
- const cache = {};
2
- function createFetchInMemoryCache(fetch) {
3
- return async function(input, init) {
4
- var _a, _b;
5
- let cacheKey;
6
- if ((init == null ? void 0 : init.cache) === "no-store") ;
7
- else if (((_a = init == null ? void 0 : init.method) == null ? void 0 : _a.toUpperCase()) === "GET") {
8
- cacheKey = input.toString();
9
- } else if (init == null ? void 0 : init.body) {
10
- const bodyString = init.body.toString();
11
- if (bodyString.startsWith("{")) {
12
- try {
13
- const body = JSON.parse(init.body.toString());
14
- if ((body.query || ((_b = body.extensions) == null ? void 0 : _b.persistedQuery)) && body.variables) {
15
- cacheKey = `${input.toString()}#${init.body.toString()}`;
16
- }
17
- } catch {
18
- }
19
- }
20
- }
21
- if (!cacheKey) {
22
- return fetch(input, init);
23
- }
24
- const cachedResponse = cache[cacheKey];
25
- if (cachedResponse) {
26
- return cachedResponse.clone();
27
- } else {
28
- const fetchPromise = fetch(input, init);
29
- const response = await fetchPromise;
30
- cache[cacheKey] = response.clone();
31
- return fetchPromise;
32
- }
33
- };
34
- }
35
- export {
36
- createFetchInMemoryCache
37
- };
1
+ const t={};function e(e){return async function(r,n){let o;if("no-store"===n?.cache);else if("GET"===n?.method?.toUpperCase())o=r.toString();else if(n?.body&&n.body.toString().startsWith("{"))try{const t=JSON.parse(n.body.toString());(t.query||t.extensions?.persistedQuery)&&t.variables&&(o=`${r.toString()}#${n.body.toString()}`)}catch{}if(!o)return e(r,n);const s=t[o];if(s)return s.clone();{const s=e(r,n),i=await s;return t[o]=i.clone(),s}}}export{e as createFetchInMemoryCache};
@@ -1,125 +1 @@
1
- function convertPreviewDataToHeaders(previewData) {
2
- const { includeInvisibleBlocks, includeInvisiblePages } = {
3
- includeInvisiblePages: !!previewData,
4
- includeInvisibleBlocks: previewData && previewData.includeInvisible
5
- };
6
- const headers = {};
7
- const includeInvisibleContentHeaderEntries = [];
8
- if (includeInvisiblePages) {
9
- includeInvisibleContentHeaderEntries.push("Pages:Unpublished");
10
- }
11
- if (includeInvisibleBlocks) {
12
- includeInvisibleContentHeaderEntries.push("Blocks:Invisible");
13
- }
14
- if (includeInvisibleContentHeaderEntries.length > 0) {
15
- headers["x-include-invisible-content"] = includeInvisibleContentHeaderEntries.join(",");
16
- headers["x-preview-dam-urls"] = "1";
17
- }
18
- return headers;
19
- }
20
- const gql = (chunks, ...variables) => {
21
- return chunks.reduce((acc, chunk, index) => {
22
- let variable;
23
- if (index in variables) {
24
- if (typeof variables[index] !== "string") {
25
- let errorMessage = `Non-string variable in the GraphQL document
26
-
27
- This is most likely due to importing a GraphQL document from a React Client Component.
28
- All GraphQL documents need to be imported from React Server Components (i.e. no "use client" notation).`;
29
- if (chunk.trim().length > 0) {
30
- errorMessage += `
31
-
32
- The error occurred in the following GraphQL document:
33
- ${chunk}`;
34
- }
35
- throw new Error(errorMessage);
36
- } else {
37
- variable = variables[index];
38
- }
39
- } else {
40
- variable = "";
41
- }
42
- return `${acc}${chunk}${variable}`;
43
- }, ``);
44
- };
45
- function createFetchWithPreviewHeaders(fetch, previewData) {
46
- const defaultHeaders = convertPreviewDataToHeaders(previewData);
47
- return createFetchWithDefaults(fetch, { headers: defaultHeaders });
48
- }
49
- function createFetchWithDefaults(fetch, defaults) {
50
- return async function(input, init) {
51
- return fetch(input, {
52
- ...defaults,
53
- ...init,
54
- headers: {
55
- ...defaults.headers,
56
- ...init == null ? void 0 : init.headers
57
- }
58
- });
59
- };
60
- }
61
- function createGraphQLFetch(fetch, url) {
62
- return async function(query, variables, init) {
63
- let response;
64
- if ((init == null ? void 0 : init.method) === "GET") {
65
- const fetchUrl = new URL(url);
66
- fetchUrl.searchParams.append("query", query);
67
- fetchUrl.searchParams.append("variables", JSON.stringify(variables));
68
- response = await fetch(fetchUrl, {
69
- ...init,
70
- headers: {
71
- /**
72
- * It's recommended to add the `Apollo-Require-Preflight` header to GET requests, running on an Apollo Server 4.
73
- *
74
- * If this header is missing, Apollo Server 4 will return: This operation has been blocked as a potential Cross-Site Request Forgery (CSRF).
75
- *
76
- * see: https://www.apollographql.com/docs/graphos/routing/security/csrf#enable-csrf-prevention
77
- */
78
- "Apollo-Require-Preflight": "true",
79
- ...init.headers
80
- }
81
- });
82
- } else {
83
- response = await fetch(url, {
84
- method: "POST",
85
- ...init,
86
- headers: { "Content-Type": "application/json", ...init == null ? void 0 : init.headers },
87
- body: JSON.stringify({
88
- query,
89
- variables
90
- })
91
- });
92
- }
93
- if (!response.ok) {
94
- let errorMessage = `Network response was not ok. Status: ${response.status}`;
95
- const body = await response.text();
96
- try {
97
- const json = JSON.parse(body);
98
- const { errors: errors2 } = json;
99
- if (errors2) {
100
- errorMessage += `
101
-
102
- GraphQL error(s):
103
- - ${errors2.map((error) => error.message).join("\n- ")}`;
104
- }
105
- } catch {
106
- errorMessage += `
107
- ${body}`;
108
- }
109
- throw new Error(errorMessage);
110
- }
111
- const { data, errors } = await response.json();
112
- if (errors) {
113
- throw new Error(`GraphQL error(s):
114
- - ${errors.map((error) => error.message).join("\n- ")}`);
115
- }
116
- return data;
117
- };
118
- }
119
- export {
120
- convertPreviewDataToHeaders,
121
- createFetchWithDefaults,
122
- createFetchWithPreviewHeaders,
123
- createGraphQLFetch,
124
- gql
125
- };
1
+ function e(e){const{includeInvisibleBlocks:n,includeInvisiblePages:r}={includeInvisiblePages:!!e,includeInvisibleBlocks:e&&e.includeInvisible},t={},s=[];return r&&s.push("Pages:Unpublished"),n&&s.push("Blocks:Invisible"),s.length>0&&(t["x-include-invisible-content"]=s.join(","),t["x-preview-dam-urls"]="1"),t}const n=(e,...n)=>e.reduce((e,r,t)=>{let s;if(t in n){if("string"!=typeof n[t]){let e='Non-string variable in the GraphQL document\n\nThis is most likely due to importing a GraphQL document from a React Client Component.\nAll GraphQL documents need to be imported from React Server Components (i.e. no "use client" notation).';throw r.trim().length>0&&(e+=`\n\nThe error occurred in the following GraphQL document:\n${r}`),new Error(e)}s=n[t]}else s="";return`${e}${r}${s}`},"");function r(n,r){return t(n,{headers:e(r)})}function t(e,n){return async function(r,t){return e(r,{...n,...t,headers:{...n.headers,...t?.headers}})}}function s(e,n){return async function(r,t,s){let a;if("GET"===s?.method){const i=new URL(n);i.searchParams.append("query",r),i.searchParams.append("variables",JSON.stringify(t)),a=await e(i,{...s,headers:{"Apollo-Require-Preflight":"true",...s.headers}})}else a=await e(n,{method:"POST",...s,headers:{"Content-Type":"application/json",...s?.headers},body:JSON.stringify({query:r,variables:t})});if(!a.ok){let e=`Network response was not ok. Status: ${a.status}`;const n=await a.text();try{const r=JSON.parse(n),{errors:t}=r;t&&(e+=`\n\nGraphQL error(s):\n- ${t.map(e=>e.message).join("\n- ")}`)}catch{e+=`\n${n}`}throw new Error(e)}const{data:i,errors:o}=await a.json();if(o)throw new Error(`GraphQL error(s):\n- ${o.map(e=>e.message).join("\n- ")}`);return i}}export{e as convertPreviewDataToHeaders,t as createFetchWithDefaults,r as createFetchWithPreviewHeaders,s as createGraphQLFetch,n as gql};