@dextinity/site-nextjs 2.0.0-canary-20260729062014

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 (119) hide show
  1. package/LICENSE +24 -0
  2. package/lib/blocks/DamVideoBlock.d.ts +7 -0
  3. package/lib/blocks/DamVideoBlock.d.ts.map +1 -0
  4. package/lib/blocks/DamVideoBlock.js +2 -0
  5. package/lib/blocks/InternalLinkBlock.d.ts +14 -0
  6. package/lib/blocks/InternalLinkBlock.d.ts.map +1 -0
  7. package/lib/blocks/InternalLinkBlock.js +3 -0
  8. package/lib/blocks/PixelImageBlock.d.ts +20 -0
  9. package/lib/blocks/PixelImageBlock.d.ts.map +1 -0
  10. package/lib/blocks/PixelImageBlock.js +3 -0
  11. package/lib/blocks/PixelImageBlock.module.scss.js +1 -0
  12. package/lib/blocks/VimeoVideoBlock.d.ts +7 -0
  13. package/lib/blocks/VimeoVideoBlock.d.ts.map +1 -0
  14. package/lib/blocks/VimeoVideoBlock.js +2 -0
  15. package/lib/blocks/YouTubeVideoBlock.d.ts +7 -0
  16. package/lib/blocks/YouTubeVideoBlock.d.ts.map +1 -0
  17. package/lib/blocks/YouTubeVideoBlock.js +2 -0
  18. package/lib/blocks/factories/SeoBlock.d.ts +20 -0
  19. package/lib/blocks/factories/SeoBlock.d.ts.map +1 -0
  20. package/lib/blocks/factories/SeoBlock.js +5 -0
  21. package/lib/blocks/helpers/VideoPreviewImage.d.ts +5 -0
  22. package/lib/blocks/helpers/VideoPreviewImage.d.ts.map +1 -0
  23. package/lib/blocks/helpers/VideoPreviewImage.js +2 -0
  24. package/lib/blocks.generated.d.ts +200 -0
  25. package/lib/blocks.generated.d.ts.map +1 -0
  26. package/lib/graphQLFetch/graphQLFetch.d.ts +8 -0
  27. package/lib/graphQLFetch/graphQLFetch.d.ts.map +1 -0
  28. package/lib/graphQLFetch/graphQLFetch.js +1 -0
  29. package/lib/image/Image.d.ts +7 -0
  30. package/lib/image/Image.d.ts.map +1 -0
  31. package/lib/image/Image.js +2 -0
  32. package/lib/index.d.ts +14 -0
  33. package/lib/index.d.ts.map +1 -0
  34. package/lib/index.js +1 -0
  35. package/lib/persistedQueries/webpackPersistedQueriesLoader.d.ts +2 -0
  36. package/lib/persistedQueries/webpackPersistedQueriesLoader.d.ts.map +1 -0
  37. package/lib/persistedQueries/webpackPersistedQueriesLoader.js +1 -0
  38. package/lib/server.d.ts +5 -0
  39. package/lib/server.d.ts.map +1 -0
  40. package/lib/server.js +1 -0
  41. package/lib/site-react/lib/aiContentDisclosure/AiContentDisclosure.js +1 -0
  42. package/lib/site-react/lib/aiContentDisclosure/AiContentDisclosure.module.scss.js +1 -0
  43. package/lib/site-react/lib/aiContentDisclosure/getAiContentAltTextWithPrefix.js +1 -0
  44. package/lib/site-react/lib/aiContentDisclosure/icons/AiGeneratedBlackIcon.js +15 -0
  45. package/lib/site-react/lib/aiContentDisclosure/icons/AiGeneratedWhiteIcon.js +15 -0
  46. package/lib/site-react/lib/aiContentDisclosure/icons/AiModifiedBlackIcon.js +14 -0
  47. package/lib/site-react/lib/aiContentDisclosure/icons/AiModifiedWhiteIcon.js +14 -0
  48. package/lib/site-react/lib/blockLoader/blockLoader.js +1 -0
  49. package/lib/site-react/lib/blocks/DamFileDownloadLinkBlock.js +2 -0
  50. package/lib/site-react/lib/blocks/DamVideoBlock.js +4 -0
  51. package/lib/site-react/lib/blocks/DamVideoBlock.module.scss.js +1 -0
  52. package/lib/site-react/lib/blocks/EmailLinkBlock.js +1 -0
  53. package/lib/site-react/lib/blocks/ExternalLinkBlock.js +2 -0
  54. package/lib/site-react/lib/blocks/PhoneLinkBlock.js +1 -0
  55. package/lib/site-react/lib/blocks/SvgImageBlock.js +2 -0
  56. package/lib/site-react/lib/blocks/VimeoVideoBlock.js +3 -0
  57. package/lib/site-react/lib/blocks/VimeoVideoBlock.module.scss.js +1 -0
  58. package/lib/site-react/lib/blocks/YouTubeVideoBlock.js +3 -0
  59. package/lib/site-react/lib/blocks/YouTubeVideoBlock.module.scss.js +1 -0
  60. package/lib/site-react/lib/blocks/factories/BlocksBlock.js +1 -0
  61. package/lib/site-react/lib/blocks/factories/ListBlock.js +1 -0
  62. package/lib/site-react/lib/blocks/factories/OneOfBlock.js +1 -0
  63. package/lib/site-react/lib/blocks/factories/OptionalBlock.js +1 -0
  64. package/lib/site-react/lib/blocks/helpers/PlayPauseButton.js +1 -0
  65. package/lib/site-react/lib/blocks/helpers/PlayPauseButton.module.scss.js +1 -0
  66. package/lib/site-react/lib/blocks/helpers/RichTextBlockHelper.js +1 -0
  67. package/lib/site-react/lib/blocks/helpers/TipTapRichTextRenderer.js +1 -0
  68. package/lib/site-react/lib/blocks/helpers/VideoPreviewImage.js +2 -0
  69. package/lib/site-react/lib/blocks/helpers/VideoPreviewImage.module.scss.js +1 -0
  70. package/lib/site-react/lib/blocks/helpers/useIsElementInViewport.js +2 -0
  71. package/lib/site-react/lib/cookies/CookieApiContext.js +2 -0
  72. package/lib/site-react/lib/cookies/CookieSafe.js +2 -0
  73. package/lib/site-react/lib/cookies/useCookieBotCookieApi.js +2 -0
  74. package/lib/site-react/lib/cookies/useLocalStorageCookieApi.js +2 -0
  75. package/lib/site-react/lib/cookies/useOneTrustCookieApi.js +2 -0
  76. package/lib/site-react/lib/errorHandler/ErrorHandlerBoundary.js +1 -0
  77. package/lib/site-react/lib/errorHandler/ErrorHandlerBoundaryInternal.js +2 -0
  78. package/lib/site-react/lib/errorHandler/ErrorHandlerProvider.js +2 -0
  79. package/lib/site-react/lib/graphQLFetch/fetchInMemoryCache.js +1 -0
  80. package/lib/site-react/lib/graphQLFetch/graphQLFetch.js +1 -0
  81. package/lib/site-react/lib/iframebridge/IFrameBridge.js +4 -0
  82. package/lib/site-react/lib/iframebridge/IFrameBridge.module.scss.js +1 -0
  83. package/lib/site-react/lib/iframebridge/IFrameMessage.js +1 -0
  84. package/lib/site-react/lib/iframebridge/Preview.js +2 -0
  85. package/lib/site-react/lib/iframebridge/Preview.module.scss.js +1 -0
  86. package/lib/site-react/lib/iframebridge/PreviewOverlay.js +1 -0
  87. package/lib/site-react/lib/iframebridge/PreviewOverlay.module.scss.js +1 -0
  88. package/lib/site-react/lib/iframebridge/PreviewOverlayElement.js +1 -0
  89. package/lib/site-react/lib/iframebridge/PreviewOverlayElement.module.scss.js +1 -0
  90. package/lib/site-react/lib/iframebridge/useBlockPreviewFetch.js +2 -0
  91. package/lib/site-react/lib/iframebridge/useIFrameBridge.js +1 -0
  92. package/lib/site-react/lib/iframebridge/utils.js +1 -0
  93. package/lib/site-react/lib/iframebridge/withPreview.js +2 -0
  94. package/lib/site-react/lib/image/image.utils.js +1 -0
  95. package/lib/site-react/lib/jsonLd/JsonLd.js +1 -0
  96. package/lib/site-react/lib/persistedQueries/createPersistedQueryGraphQLFetch.js +1 -0
  97. package/lib/site-react/lib/persistedQueries/persistedQueryRoute.js +1 -0
  98. package/lib/site-react/lib/persistedQueries/webpackPersistedQueriesLoader.js +1 -0
  99. package/lib/site-react/lib/preview/BlockPreviewProvider.js +2 -0
  100. package/lib/site-react/lib/preview/PreviewContext.js +2 -0
  101. package/lib/site-react/lib/preview/usePreview.js +1 -0
  102. package/lib/site-react/lib/previewskeleton/PreviewSkeleton.js +5 -0
  103. package/lib/site-react/lib/previewskeleton/PreviewSkeleton.module.scss.js +1 -0
  104. package/lib/site-react/lib/sitePreview/iframebridge/SitePreviewIFrameMessage.js +1 -0
  105. package/lib/site-react/lib/sitePreview/iframebridge/sendSitePreviewIFrameMessage.js +1 -0
  106. package/lib/sitePreview/SitePreviewProvider.d.ts +3 -0
  107. package/lib/sitePreview/SitePreviewProvider.d.ts.map +1 -0
  108. package/lib/sitePreview/SitePreviewProvider.js +2 -0
  109. package/lib/sitePreview/appRouter/sitePreviewRoute.d.ts +5 -0
  110. package/lib/sitePreview/appRouter/sitePreviewRoute.d.ts.map +1 -0
  111. package/lib/sitePreview/appRouter/sitePreviewRoute.js +1 -0
  112. package/lib/sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler.d.ts +4 -0
  113. package/lib/sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler.d.ts.map +1 -0
  114. package/lib/sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler.js +1 -0
  115. package/lib/sitePreview/previewUtils.d.ts +25 -0
  116. package/lib/sitePreview/previewUtils.d.ts.map +1 -0
  117. package/lib/sitePreview/previewUtils.js +1 -0
  118. package/lib/style.css +1 -0
  119. package/package.json +88 -0
@@ -0,0 +1,14 @@
1
+ import{jsxs as c,jsx as h}from"react/jsx-runtime";const d=d=>/* @__PURE__ */c("svg",{viewBox:"0 0 1700.79 566.93",xmlns:"http://www.w3.org/2000/svg",...d,children:[
2
+ /* @__PURE__ */h("path",{fill:"#fff",fillRule:"evenodd",d:"M376.65,410.77h939.48c85.55,0,145.54-59.94,145.54-133.2h0c0-73.27-59.99-133.21-145.54-133.21H381.65c-85.55,0-150.54,59.94-150.54,133.2h0c0,73.26,64.99,133.2,150.54,133.2"}),
3
+ /* @__PURE__ */c("g",{children:[
4
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M626.46,325.63c-.92,0-1.72-.32-2.4-.96-.69-.64-1.03-1.46-1.03-2.47v-89.25c0-1.01.34-1.83,1.03-2.47.69-.64,1.49-.96,2.4-.96h12.77c1.37,0,2.4.37,3.09,1.1.69.73,1.17,1.28,1.44,1.65l25.27,46.55,25.54-46.55c.18-.37.62-.91,1.3-1.65.69-.73,1.72-1.1,3.09-1.1h12.77c1.01,0,1.83.32,2.47.96.64.64.96,1.46.96,2.47v89.25c0,1.01-.32,1.83-.96,2.47-.64.64-1.47.96-2.47.96h-14.01c-.92,0-1.69-.32-2.33-.96-.64-.64-.96-1.46-.96-2.47v-55.47l-17.44,32.68c-.46.82-1.05,1.56-1.79,2.2-.73.64-1.69.96-2.88.96h-6.45c-1.19,0-2.15-.32-2.88-.96-.73-.64-1.33-1.37-1.79-2.2l-17.44-32.68v55.47c0,1.01-.32,1.83-.96,2.47-.64.64-1.42.96-2.33.96h-14.01Z"}),
5
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M784.28,327c-8.33,0-15.52-1.37-21.56-4.12-6.04-2.75-10.76-6.89-14.14-12.43-3.39-5.54-5.22-12.52-5.49-20.94-.09-3.93-.14-7.85-.14-11.74s.04-7.85.14-11.88c.27-8.24,2.13-15.17,5.56-20.8,3.43-5.63,8.19-9.86,14.28-12.7,6.09-2.84,13.2-4.26,21.35-4.26s15.13,1.42,21.21,4.26c6.09,2.84,10.87,7.07,14.35,12.7,3.48,5.63,5.31,12.56,5.49,20.8.18,4.03.28,7.99.28,11.88s-.09,7.81-.28,11.74c-.27,8.42-2.11,15.4-5.49,20.94-3.39,5.54-8.1,9.68-14.14,12.43-6.04,2.75-13.18,4.12-21.42,4.12ZM784.28,309.29c5.31,0,9.68-1.62,13.11-4.88,3.43-3.25,5.24-8.44,5.42-15.58.18-4.03.27-7.8.27-11.33s-.09-7.25-.27-11.19c-.09-4.76-.96-8.65-2.61-11.67-1.65-3.02-3.82-5.24-6.52-6.66-2.7-1.42-5.84-2.13-9.41-2.13s-6.73.71-9.47,2.13c-2.75,1.42-4.92,3.64-6.52,6.66-1.6,3.02-2.5,6.91-2.68,11.67-.09,3.94-.14,7.67-.14,11.19s.04,7.3.14,11.33c.27,7.14,2.1,12.34,5.49,15.58,3.39,3.25,7.78,4.88,13.18,4.88Z"}),
6
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M856.69,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h34.47c9.15,0,16.8,1.44,22.93,4.33,6.13,2.88,10.82,7.09,14.07,12.63,3.25,5.54,4.96,12.38,5.15,20.53.09,4.03.14,7.55.14,10.57s-.05,6.5-.14,10.44c-.27,8.51-1.97,15.56-5.08,21.15-3.11,5.58-7.69,9.73-13.73,12.43-6.04,2.7-13.59,4.05-22.66,4.05h-35.15ZM875.09,307.92h16.07c4.58,0,8.33-.69,11.26-2.06,2.93-1.37,5.1-3.55,6.52-6.52,1.42-2.97,2.17-6.84,2.27-11.6.09-2.65.16-5.03.21-7.14.04-2.11.04-4.21,0-6.32-.05-2.1-.12-4.44-.21-7-.18-6.87-1.95-11.92-5.29-15.17-3.34-3.25-8.49-4.88-15.45-4.88h-15.38v60.69Z"}),
7
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M964.67,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h15.52c1.01,0,1.83.32,2.47.96.64.64.96,1.46.96,2.47v89.25c0,1.01-.32,1.83-.96,2.47-.64.64-1.46.96-2.47.96h-15.52Z"}),
8
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M1018,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h61.24c1.01,0,1.83.32,2.47.96.64.64.96,1.46.96,2.47v11.67c0,1.01-.32,1.83-.96,2.47-.64.64-1.47.96-2.47.96h-43.25v23.21h40.51c1.01,0,1.83.32,2.47.96.64.64.96,1.47.96,2.47v11.67c0,.92-.32,1.7-.96,2.33s-1.46.96-2.47.96h-40.51v32.54c0,1.01-.32,1.83-.96,2.47-.64.64-1.46.96-2.47.96h-14.56Z"}),
9
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M1112.25,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h15.52c1.01,0,1.83.32,2.47.96.64.64.96,1.46.96,2.47v89.25c0,1.01-.32,1.83-.96,2.47-.64.64-1.46.96-2.47.96h-15.52Z"}),
10
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M1165.57,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h62.2c1.01,0,1.83.32,2.47.96.64.64.96,1.46.96,2.47v10.99c0,.92-.32,1.69-.96,2.33s-1.47.96-2.47.96h-44.49v21.56h41.47c1.01,0,1.83.32,2.47.96.64.64.96,1.47.96,2.47v10.16c0,.92-.32,1.7-.96,2.33-.64.64-1.47.96-2.47.96h-41.47v22.25h45.59c1.01,0,1.83.32,2.47.96.64.64.96,1.47.96,2.47v10.85c0,1.01-.32,1.83-.96,2.47-.64.64-1.47.96-2.47.96h-63.3Z"}),
11
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M1262.7,325.63c-1.01,0-1.83-.32-2.47-.96-.64-.64-.96-1.46-.96-2.47v-89.25c0-1.01.32-1.83.96-2.47.64-.64,1.46-.96,2.47-.96h34.47c9.15,0,16.8,1.44,22.93,4.33,6.13,2.88,10.82,7.09,14.07,12.63,3.25,5.54,4.96,12.38,5.15,20.53.09,4.03.14,7.55.14,10.57s-.05,6.5-.14,10.44c-.27,8.51-1.97,15.56-5.08,21.15-3.11,5.58-7.69,9.73-13.73,12.43-6.04,2.7-13.59,4.05-22.66,4.05h-35.15ZM1281.1,307.92h16.07c4.58,0,8.33-.69,11.26-2.06,2.93-1.37,5.1-3.55,6.52-6.52,1.42-2.97,2.17-6.84,2.27-11.6.09-2.65.16-5.03.21-7.14.04-2.11.04-4.21,0-6.32-.05-2.1-.12-4.44-.21-7-.18-6.87-1.95-11.92-5.29-15.17-3.34-3.25-8.49-4.88-15.45-4.88h-15.38v60.69Z"})]}),
12
+ /* @__PURE__ */c("g",{children:[
13
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M349.9,341c-.98,0-1.87-.4-2.66-1.19-.8-.79-1.19-1.68-1.19-2.66,0-.61.06-1.16.18-1.65l43.18-117.96c.37-1.35,1.13-2.54,2.3-3.58,1.16-1.04,2.78-1.56,4.87-1.56h27.19c2.08,0,3.7.52,4.87,1.56,1.16,1.04,1.93,2.24,2.3,3.58l42.99,117.96c.24.49.37,1.04.37,1.65,0,.98-.4,1.87-1.19,2.66-.8.8-1.75,1.19-2.85,1.19h-22.6c-1.84,0-3.22-.46-4.13-1.38-.92-.92-1.5-1.75-1.75-2.48l-7.17-18.74h-49.06l-6.98,18.74c-.25.74-.8,1.56-1.65,2.48-.86.92-2.33,1.38-4.41,1.38h-22.6ZM393.08,291.94h34.18l-17.27-48.51-16.9,48.51Z"}),
14
+ /* @__PURE__ */h("path",{fill:"#1d1d1b",d:"M493.39,341c-1.35,0-2.45-.43-3.31-1.29-.86-.86-1.29-1.96-1.29-3.31v-119.43c0-1.35.43-2.45,1.29-3.31s1.96-1.29,3.31-1.29h24.62c1.35,0,2.45.43,3.31,1.29.86.86,1.29,1.96,1.29,3.31v119.43c0,1.35-.43,2.45-1.29,3.31s-1.96,1.29-3.31,1.29h-24.62Z"})]})]});export{d as AiModifiedWhiteIcon};
@@ -0,0 +1 @@
1
+ async function e({blockType:e,blockData:o,blocksMeta:t,loaders:a,...n}){function c(e,o){if(!e||"object"!=typeof e)return e;let t=e;const a="cmsBlock"===e.type||"cmsInlineBlock"===e.type?e.attrs?.blockType:void 0;return a&&o[a]&&(t={...t,attrs:{...t.attrs,data:r({blockType:o[a],blockData:t.attrs.data})}}),Array.isArray(t.content)&&(t={...t,content:t.content.map(e=>c(e,o))}),t}function l(e,o){const t={...o};for(const a of e.fields)if(t[a.name])if("NestedObjectList"==a.kind)t[a.name]=t[a.name].map(e=>l(a.object,e));else if("NestedObject"==a.kind)t[a.name]=l(a.object,t[a.name]);else if("OneOfBlocks"==a.kind){const e=a.blocks[t.type];if(!e)throw new Error("invalid blockType");t[a.name]=r({blockType:e,blockData:t[a.name]})}else"Block"==a.kind?t[a.name]=r({blockType:a.block,blockData:t[a.name]}):"TipTapRichTextBlock"==a.kind&&(t[a.name]=c(t[a.name],a.childBlocks));return t}const i=[];function r({blockType:e,blockData:o}){const c=t.find(o=>o.name===e);if(!c)throw new Error("invalid blockType");const r=l(c,o);return a[e]&&(r.loaded=a[e]({blockData:o,...n}),i.push(r)),r}const s=r({blockType:e,blockData:o});await Promise.all(i.map(e=>e.loaded));for(const k of i)k.loaded=await k.loaded;return s}export{e as recursivelyLoadBlockData};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{cloneElement as r}from"react";import{withPreview as a}from"../iframebridge/withPreview.js";const i=a(({data:{file:a,openFileType:i},children:t,legacyBehavior:l,...o})=>{if(!a)return l?t:/* @__PURE__ */e("span",{className:o.className,children:t});const n=a.fileUrl,m="NewTab"===i?"_blank":o.target;return l?r(t,{...o,href:n,target:m}):/* @__PURE__ */e("a",{...o,href:n,target:m,children:t})},{label:"DamFileDownloadLink"});export{i as DamFileDownloadLinkBlock};
@@ -0,0 +1,4 @@
1
+ "use client";
2
+ import{jsx as e,Fragment as t,jsxs as i}from"react/jsx-runtime";import a from"clsx";import{useState as o,useCallback as r}from"react";import{AiContentDisclosure as s}from"../aiContentDisclosure/AiContentDisclosure.js";import{getAiContentAltTextWithPrefix as l}from"../aiContentDisclosure/getAiContentAltTextWithPrefix.js";import{withPreview as n}from"../iframebridge/withPreview.js";import{PreviewSkeleton as p}from"../previewskeleton/PreviewSkeleton.js";import m from"./DamVideoBlock.module.scss.js";import{PlayPauseButton as c}from"./helpers/PlayPauseButton.js";import{useIsElementInViewport as u}from"./helpers/useIsElementInViewport.js";const d=n(({data:{damFile:n,autoplay:d,loop:y,showControls:f,previewImage:P},aspectRatio:C="16x9",previewImageSizes:v,renderPreviewImage:w,fill:g,previewImageIcon:x,playButtonAriaLabel:h,pauseButtonAriaLabel:b,playPauseButton:A,aiContentDisclosureProps:I,aiContentDisclosure:k,aiContentAltTextPrefixLabels:B})=>{if(void 0===n)return e(p,{type:"media",hasContent:!1,aspectRatio:C});const T=l({aiContentType:n?.aiContentType,description:n?.altText,prefixLabels:B}),[j,D]=o(!0),[L,V]=o(d??!1),[R,S]=o(!1),z=Boolean(P&&P.damFile),[E,F]=o(null),N=r(e=>{F(e),e&&z&&!j&&e.paused&&e.play()},[z,j]),U=r(e=>{!R&&E&&(e&&d?(E.play(),V(!0)):(E.pause(),V(!1)))},[d,R,E]);u({current:E},U);const W=()=>{L?(V(!1),S(!0),E?.pause()):(V(!0),E?.play())};return e(t,{children:z&&j?w({onPlay:()=>{D(!1),V(!0),S(!0)},image:P,aspectRatio:C,sizes:v,fill:g,icon:x,playButtonAriaLabel:h}):/* @__PURE__ */i("div",{className:m.root,children:[
3
+ /* @__PURE__ */i("video",{autoPlay:d,controls:f,loop:y,playsInline:!0,muted:d,ref:N,"aria-label":n.aiContentType?T:void 0,className:a(m.video,g&&m.fill),style:g?void 0:{"--aspect-ratio":C.replace("x"," / ")},children:[n.captions?.map(t=>/* @__PURE__ */e("track",{src:t.fileUrl,kind:"captions",srcLang:t.language},t.id)),
4
+ /* @__PURE__ */e("source",{src:n.fileUrl,type:n.mimetype})]}),!f&&(A?/* @__PURE__ */e(A,{isPlaying:L,onClick:W}):/* @__PURE__ */e(c,{isPlaying:L,onClick:W,ariaLabelPlay:h,ariaLabelPause:b})),n.aiContentType&&(void 0!==k?k:/* @__PURE__ */e(s,{type:n.aiContentType,...I}))]})})},{label:"Video"});export{d as DamVideoBlock};
@@ -0,0 +1 @@
1
+ const o="_root_1jlho_1",l="_video_1jlho_6",_="_fill_1jlho_12",i={root:o,video:l,fill:_};export{i as default,_ as fill,o as root,l as video};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{cloneElement as a}from"react";const e=({data:{email:e},children:i,legacyBehavior:t,...c})=>{if(!e)return t?i:/* @__PURE__ */r("span",{className:c.className,children:i});const l=`mailto:${e}`;return t?a(i,{...c,href:l}):/* @__PURE__ */r("a",{...c,href:l,children:i})};export{e as EmailLinkBlock};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{cloneElement as r}from"react";import{usePreview as i}from"../preview/usePreview.js";import{sendSitePreviewIFrameMessage as t}from"../sitePreview/iframebridge/sendSitePreviewIFrameMessage.js";import{SitePreviewIFrameMessageType as o}from"../sitePreview/iframebridge/SitePreviewIFrameMessage.js";function a({data:{targetUrl:a,openInNewWindow:n,noFollow:s},children:l,legacyBehavior:w,...m}){const p=i();if("SitePreview"===p.previewType||"BlockPreview"===p.previewType){const i=e=>{e.preventDefault(),"SitePreview"===p.previewType&&t({cometType:o.OpenLink,data:{link:{openInNewWindow:n,targetUrl:a,noFollow:s}}})};return w?r(l,{...m,href:"#",onClick:i}):/* @__PURE__ */e("a",{...m,href:"#",onClick:i,children:l})}{if(!a)return w?l:/* @__PURE__ */e("span",{className:m.className,children:l});const i=a,t=n?"_blank":m.target,o=[m.rel,s?"nofollow":void 0].filter(Boolean).join(" ")||void 0;return w?r(l,{...m,href:i,target:t,rel:o}):/* @__PURE__ */e("a",{...m,href:i,target:t,rel:o,children:l})}}export{a as ExternalLinkBlock};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{cloneElement as r}from"react";const a=({data:{phone:a},children:n,legacyBehavior:t,...c})=>{if(!a)return t?n:/* @__PURE__ */e("span",{className:c.className,children:n});const o=`tel:${a}`;return t?r(n,{...c,href:o}):/* @__PURE__ */e("a",{...c,href:o,children:n})};export{a as PhoneLinkBlock};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{withPreview as t}from"../iframebridge/withPreview.js";import{PreviewSkeleton as i}from"../previewskeleton/PreviewSkeleton.js";const o=t(({data:{damFile:t},width:o="100%",height:a="auto",...r})=>t?/* @__PURE__ */e("img",{src:t.fileUrl,width:"auto"===o?void 0:o,height:"auto"===a?void 0:a,alt:t.altText??"",title:t.title??"",...r}):/* @__PURE__ */e(i,{type:"media",hasContent:!1,height:"auto"===a?void 0:a}),{label:"SvgImage"});export{o as SvgImageBlock};
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,Fragment as o,jsxs as t}from"react/jsx-runtime";import a from"clsx";import{useState as i,useRef as r,useCallback as s}from"react";import{withPreview as n}from"../iframebridge/withPreview.js";import{PreviewSkeleton as l}from"../previewskeleton/PreviewSkeleton.js";import{PlayPauseButton as p}from"./helpers/PlayPauseButton.js";import{useIsElementInViewport as m}from"./helpers/useIsElementInViewport.js";import c from"./VimeoVideoBlock.module.scss.js";const d=n(({data:{vimeoIdentifier:n,autoplay:d,loop:u,showControls:w,previewImage:v},aspectRatio:y="16x9",previewImageSizes:f,renderPreviewImage:h,fill:g,previewImageIcon:P,playButtonAriaLabel:S,pauseButtonAriaLabel:I,playPauseButton:b})=>{const[B,k]=i(!0),L=!(!v||!v.damFile),V=r(null),[j,C]=i(null),N=C,[x,R]=i(d??!1),[z,A]=i(!1),$=s(()=>{j?.contentWindow?.postMessage(JSON.stringify({method:"pause"}),"https://player.vimeo.com")},[j]),E=s(()=>{j?.contentWindow?.postMessage(JSON.stringify({method:"play"}),"https://player.vimeo.com")},[j]),F=s(e=>{z||(e&&d?(E(),R(!0)):($(),R(!1)))},[d,z,E,$]);if(m(V,F),!n)return e(l,{type:"media",hasContent:!1,aspectRatio:y});const J=function(e){const o=e.match(/^(https?:\/\/)?((www\.|player\.)?vimeo\.com\/?(showcase\/)*([0-9a-z]*\/)*([0-9]{6,11})[?]?.*)$/),t=e.match(/^([0-9]{6,11})$/);if(o||t)return o?o[6]:t?t[1]:void 0}(n),M=new URLSearchParams;(d||L&&!B)&&M.append("autoplay","1"),d&&M.append("muted","1"),void 0!==u&&M.append("loop",Number(u).toString()),void 0!==w&&M.append("controls",Number(w).toString()),M.append("dnt","1");const O=new URL(`https://player.vimeo.com/video/${J??""}`);O.search=M.toString();const U=()=>{x?(R(!1),A(!0),$()):(R(!0),E())};return e(o,{children:L&&B?h({onPlay:()=>{k(!1),R(!0),A(!0)},image:v,aspectRatio:y,sizes:f,fill:g,icon:P,playButtonAriaLabel:S}):/* @__PURE__ */t("div",{ref:V,className:a(c.videoContainer,g&&c.fill),style:g?void 0:{"--aspect-ratio":y.replace("x","/")},children:[
3
+ /* @__PURE__ */e("iframe",{ref:N,className:c.vimeoContainer,src:O.toString(),allow:"autoplay",allowFullScreen:!0,loading:"lazy"}),!w&&(b?/* @__PURE__ */e(b,{isPlaying:x,onClick:U}):/* @__PURE__ */e(p,{isPlaying:x,onClick:U,ariaLabelPlay:S,ariaLabelPause:I}))]})})},{label:"Video"});export{d as VimeoVideoBlock};
@@ -0,0 +1 @@
1
+ const i="_videoContainer_1flq1_1",e="_fill_1flq1_7",o="_vimeoContainer_1flq1_12",n={videoContainer:i,fill:e,vimeoContainer:o};export{n as default,e as fill,i as videoContainer,o as vimeoContainer};
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import{jsx as e,Fragment as o,jsxs as t}from"react/jsx-runtime";import a from"clsx";import{useState as i,useRef as n,useCallback as r}from"react";import{withPreview as s}from"../iframebridge/withPreview.js";import{PreviewSkeleton as l}from"../previewskeleton/PreviewSkeleton.js";import{PlayPauseButton as p}from"./helpers/PlayPauseButton.js";import{useIsElementInViewport as u}from"./helpers/useIsElementInViewport.js";import m from"./YouTubeVideoBlock.module.scss.js";const c=s(({data:{youtubeIdentifier:s,autoplay:c,loop:d,showControls:w,previewImage:y},aspectRatio:b="16x9",previewImageSizes:g,renderPreviewImage:v,fill:f,previewImageIcon:h,playButtonAriaLabel:P,pauseButtonAriaLabel:k,playPauseButton:I})=>{const[B,S]=i(!0),[j,L]=i(c??!1),[V,C]=i(!1),x=!(!y||!y.damFile),[R,A]=i(null),N=A,z=n(null),E=r(()=>{R?.contentWindow?.postMessage('{"event":"command","func":"pauseVideo","args":""}',"https://www.youtube-nocookie.com")},[R]),M=r(()=>{R?.contentWindow?.postMessage('{"event":"command","func":"playVideo","args":""}',"https://www.youtube-nocookie.com")},[R]),T=r(e=>{V||(e&&c?(M(),L(!0)):(E(),L(!1)))},[c,V,M,E]);if(u(z,T),!s)return e(l,{type:"media",hasContent:!1,aspectRatio:b});const U=(e=>{const o=e.match(/(https?:\/\/)?(((m|www)\.)?(youtube(-nocookie)?|youtube.googleapis)\.com.*(v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/)|youtu\.be\/)([_0-9a-zA-Z-]+)/);return(11===e.length?e:o&&11===o[8].length?o[8]:null)??void 0})(s),W=new URLSearchParams;W.append("modestbranding","1"),W.append("rel","0"),W.append("enablejsapi","1"),x&&!B&&W.append("autoplay","1"),c&&W.append("mute","1"),void 0!==w&&W.append("controls",Number(w).toString()),void 0!==d&&W.append("loop",Number(d).toString()),d&&U&&W.append("playlist",U);const Y=new URL(`https://www.youtube-nocookie.com/embed/${U??""}`);Y.search=W.toString();const F=()=>{j?(L(!1),C(!0),E()):(L(!0),M())};return e(o,{children:x&&B?v({onPlay:()=>{S(!1),L(!0),C(!0)},image:y,aspectRatio:b,sizes:g,fill:f,icon:h,playButtonAriaLabel:P}):/* @__PURE__ */t("div",{ref:z,className:a(m.videoContainer,f&&m.fill),style:f?void 0:{"--aspect-ratio":b.replace("x","/")},children:[!w&&(I?/* @__PURE__ */e(I,{isPlaying:j,onClick:F}):/* @__PURE__ */e(p,{isPlaying:j,onClick:F,ariaLabelPlay:P,ariaLabelPause:k})),
3
+ /* @__PURE__ */e("iframe",{ref:N,className:m.youtubeContainer,allow:"autoplay",referrerPolicy:"strict-origin-when-cross-origin",src:Y.toString()})]})})},{label:"Video"});export{c as YouTubeVideoBlock};
@@ -0,0 +1 @@
1
+ const e="_videoContainer_bhmhr_1",o="_fill_bhmhr_7",n="_youtubeContainer_bhmhr_12",i={videoContainer:e,fill:o,youtubeContainer:n};export{i as default,o as fill,e as videoContainer,n as youtubeContainer};
@@ -0,0 +1 @@
1
+ import{jsx as r,Fragment as e,jsxs as o}from"react/jsx-runtime";import{Fragment as n}from"react";import{ErrorHandlerBoundary as t}from"../../errorHandler/ErrorHandlerBoundary.js";import{PreviewSkeleton as s}from"../../previewskeleton/PreviewSkeleton.js";const p=({supportedBlocks:p,data:{blocks:l}})=>0===l.length?/* @__PURE__ */r(s,{hasContent:!1}):/* @__PURE__ */r(e,{children:l.map(e=>{const s=p[e.type];return s?/* @__PURE__ */r(n,{children:/* @__PURE__ */r(t,{children:s(e.props)})},e.key):"development"===process.env.NODE_ENV?/* @__PURE__ */o("pre",{children:["Unknown type (",e.type,"): ",JSON.stringify(e.props)]},e.key):null})});export{p as BlocksBlock};
@@ -0,0 +1 @@
1
+ import{jsx as r,Fragment as e}from"react/jsx-runtime";import{Fragment as o}from"react";import{ErrorHandlerBoundary as t}from"../../errorHandler/ErrorHandlerBoundary.js";import{PreviewSkeleton as n}from"../../previewskeleton/PreviewSkeleton.js";const a=({block:a,data:{blocks:l}})=>0===l.length?/* @__PURE__ */r(n,{hasContent:!1}):/* @__PURE__ */r(e,{children:l.map(e=>/* @__PURE__ */r(o,{children:/* @__PURE__ */r(t,{children:a(e.props)})},e.key))});export{a as ListBlock};
@@ -0,0 +1 @@
1
+ import{jsx as r,jsxs as e}from"react/jsx-runtime";import{ErrorHandlerBoundary as n}from"../../errorHandler/ErrorHandlerBoundary.js";const o=({data:{block:o,...l},supportedBlocks:s,children:t,className:p})=>{if(!o)return null;const a=s[o.type];return a?/* @__PURE__ */r(n,{children:a({...o.props,...l,children:t,className:p})}):"development"===process.env.NODE_ENV?/* @__PURE__ */e("pre",{children:["Unknown type (",o.type,"): ",JSON.stringify(o.props)]}):null};export{o as OneOfBlock};
@@ -0,0 +1 @@
1
+ import{jsx as l,Fragment as c}from"react/jsx-runtime";const i=({block:i,data:{visible:o,block:r},children:e})=>o&&r?/* @__PURE__ */l(c,{children:i({...r,children:e})}):null;export{i as OptionalBlock};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1,2 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{useState as o,useEffect as e}from"react";const n=o=>"Cookiebot"in o,t=()=>{const[t,i]=o([]),[r,s]=o(!1);return e(()=>{const o=()=>{if(n(window)){const o=window.Cookiebot.consent;if(!o)return;s(!0),i(Object.keys(o).filter(e=>o[e]))}};return window.addEventListener("CookiebotOnConsentReady",o),o(),()=>{window.removeEventListener("CookiebotOnConsentReady",o)}},[]),{initialized:r,consentedCookies:t,openCookieSettings:()=>{n(window)&&window.Cookiebot.renew()}}};export{t as useCookieBotCookieApi};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1,2 @@
1
+ "use client";
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1,4 @@
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{decodeJwt as o}from"jose";import n from"lodash.isequal";import{useState as r,useRef as i,useCallback as s,useEffect as a,useMemo as d,createContext as c}from"react";import{useDebounceCallback as m}from"usehooks-ts";import l from"./IFrameBridge.module.scss.js";import{AdminMessageType as p,IFrameMessageType as h}from"./IFrameMessage.js";import{PreviewOverlay as u}from"./PreviewOverlay.js";import{getRecursiveChildrenOfPreviewElement as v,getCombinedPositioningOfElements as w,PREVIEW_ELEMENT_SCROLLED_INTO_VIEW_EVENT as f}from"./utils.js";const g=c({hasBridge:!1,showOutlines:!1,showOnlyVisible:!1,sendSelectComponent:()=>{},sendHoverComponent:()=>{},sendMessage:()=>{},contentScope:void 0,contentScopeJwt:"",graphQLApiUrl:void 0,previewElementsData:[],removePreviewElement:()=>{},addPreviewElement:()=>{}}),b=({children:c})=>{const[b,E]=r(void 0),[y,O]=r(!1),[R,S]=r(void 0),[C,L]=r(null),[P,I]=r(!1),[T,M]=r(void 0),[k,A]=r(""),[J,V]=r(""),[j,x]=r([]),[B,F]=r([]),N=i(null),W=N.current?.offsetWidth,_=s(()=>{if(!W)return;const e=j.map(e=>{const t=v(e.element),o=w(t);if(o.left>W)return{adminRoute:e.adminRoute,label:e.label,position:{top:o.top,left:o.left,width:0,height:o.height}};const n=o.left+o.width-W,r=n>0?n:0;return{adminRoute:e.adminRoute,label:e.label,position:{top:o.top,left:o.left,width:o.width-r,height:o.height}}}).filter(e=>0!==e.position.width).sort((e,t)=>{const o=e.position.width*e.position.height;return t.position.width*t.position.height-o}).map((e,t)=>({...e,position:{...e.position,zIndex:t+1}}));F(t=>n(t,e)?t:e)},[j,W]);a(()=>{if(N.current){const e=new MutationObserver(()=>{_()}),t=new ResizeObserver(()=>{_()});return e.observe(N.current,{childList:!0,subtree:!0,attributes:!0}),t.observe(N.current),()=>{e.disconnect(),t.disconnect()}}},[_]),a(()=>(j.forEach(e=>{e.element.addEventListener(f,_)}),()=>{j.forEach(e=>{e.element.removeEventListener(f,_)})}),[j,_]);const H=s(e=>{window.parent.postMessage(JSON.stringify(e),"*")},[]),Q=m(()=>{I(!1)},2500),U=s(e=>{switch(e.cometType){case p.Block:E(e.data.block);break;case p.ShowOnlyVisible:O(e.data.showOnlyVisible);break;case p.SelectComponent:S(e.data.adminRoute.lastIndexOf("#")>0?e.data.adminRoute.substr(0,e.data.adminRoute.lastIndexOf("#")):e.data.adminRoute);break;case p.HoverComponent:L(e.data.adminRoute),I(!0),Q();break;case p.ContentScope:M(function(e){try{return o(e).scope}catch(t){return void console.error("Failed to parse content scope JWT",t)}}(e.data.contentScopeJwt)),A(e.data.contentScopeJwt);break;case p.GraphQLApiUrl:V(e.data.graphQLApiUrl)}},[Q]);a(()=>{if("undefined"==typeof window)return;const e=e=>{try{const t=JSON.parse(e.data);t.hasOwnProperty("cometType")&&U(t)}catch{}};return window.addEventListener("message",e,!1),H({cometType:h.Ready}),()=>{window.removeEventListener("message",e,!1)}},[U,H]);const D=s(e=>{x(t=>[...t,e])},[x]),z=s(e=>{x(t=>t.filter(t=>t.adminRoute!==e.adminRoute))},[x]),q=d(()=>({showOutlines:P,hasBridge:!0,block:b,showOnlyVisible:y,selectedAdminRoute:R,hoveredAdminRoute:C,sendSelectComponent:e=>{S(e),H({cometType:h.SelectComponent,data:{adminRoute:e}})},sendHoverComponent:e=>{H({cometType:h.HoverComponent,data:{route:e}})},sendMessage:H,contentScope:T,contentScopeJwt:k,graphQLApiUrl:J,previewElementsData:B,addPreviewElement:D,removePreviewElement:z}),[P,b,y,R,C,H,T,k,J,B,D,z]);return e(g.Provider,{value:q,children:/* @__PURE__ */t("div",{onMouseMove:()=>{I(!0),Q()},children:[
3
+ /* @__PURE__ */e(u,{}),
4
+ /* @__PURE__ */e("div",{ref:N,className:l.childrenWrapper,children:c})]})})};export{g as IFrameBridgeContext,b as IFrameBridgeProvider};
@@ -0,0 +1 @@
1
+ const r="_childrenWrapper_qguhx_1",e={childrenWrapper:r};export{r as childrenWrapper,e as default};
@@ -0,0 +1 @@
1
+ var e=/* @__PURE__ */(e=>(e.Ready="Ready",e.SelectComponent="SelectComponent",e.HoverComponent="HoverComponent",e.OpenLink="OpenLink",e.SitePreviewLocation="SitePreviewLocation",e))(e||{}),o=/* @__PURE__ */(e=>(e.Block="Block",e.ShowOnlyVisible="ShowOnlyVisible",e.SelectComponent="SelectComponent",e.HoverComponent="HoverComponent",e.ContentScope="ContentScope",e.GraphQLApiUrl="GraphQLApiUrl",e))(o||{});export{o as AdminMessageType,e as IFrameMessageType};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e,Fragment as r}from"react/jsx-runtime";import{useRef as t,useEffect as i}from"react";import n from"scroll-into-view-if-needed";import o from"./Preview.module.scss.js";import{useIFrameBridge as l}from"./useIFrameBridge.js";import{PREVIEW_ELEMENT_SCROLLED_INTO_VIEW_EVENT as m,BLOCK_PREVIEW_CONTAINER_DATA_ATTRIBUTE as s}from"./utils.js";const d=({adminRoute:d,children:c,label:u,enabledAutoScrolling:a=!0})=>{const{addPreviewElement:E,removePreviewElement:f,...v}=l(),T=d===v.selectedAdminRoute,h=d===v.hoveredAdminRoute,p=t(null);return i(()=>{const e=p.current?{label:u,adminRoute:d,element:p.current}:null;if(e)return E(e),()=>{f(e)}},[u,d,E,f]),i(()=>{const e=setTimeout(()=>{a&&(h||T)&&p.current?.firstElementChild&&(n(p.current.firstElementChild,{scrollMode:"if-needed",block:"center",inline:"nearest",behavior:"smooth"}),setTimeout(()=>{p.current?.dispatchEvent(new Event(m))},600))},500);return()=>{clearTimeout(e)}},[a,h,T]),v.hasBridge?/* @__PURE__ */e("div",{ref:p,className:o.previewElementContainer,[s]:"",children:c}):/* @__PURE__ */e(r,{children:c})};export{d as Preview};
@@ -0,0 +1 @@
1
+ const e="_previewElementContainer_nwhl6_1",n={previewElementContainer:e};export{n as default,e as previewElementContainer};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import t from"./PreviewOverlay.module.scss.js";import{PreviewOverlayElement as r}from"./PreviewOverlayElement.js";import{useIFrameBridge as i}from"./useIFrameBridge.js";let o="";const s=()=>{const s=i();let m=0;return s.previewElementsData.forEach(e=>{if(e.position.zIndex>1)return;const t=e.position.top+e.position.height;t>m&&(m=t)}),/* @__PURE__ */e("div",{className:t.root,style:{"--height":`${m}px`},children:s.previewElementsData.map((t,i)=>(t.adminRoute===s.selectedAdminRoute&&o!==t.adminRoute&&(o=t.adminRoute),/* @__PURE__ */e(r,{element:t},i)))})};export{s as PreviewOverlay};
@@ -0,0 +1 @@
1
+ const o="_root_v4248_1",t={root:o};export{t as default,o as root};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import o from"clsx";import t from"./PreviewOverlayElement.module.scss.js";import{useIFrameBridge as n}from"./useIFrameBridge.js";const s=({element:s})=>{const l=n(),r=s.adminRoute===l.selectedAdminRoute,i=s.adminRoute===l.hoveredAdminRoute;return e("div",{className:o(t.root,l.showOutlines&&!i&&t.showBlockOutlines,r&&t.blockIsSelected,i&&t.isHoveredInBlockList),title:s.label,onClick:()=>{l.sendSelectComponent(s.adminRoute)},onMouseEnter:()=>{l.sendHoverComponent(s.adminRoute)},onMouseLeave:()=>{l.sendHoverComponent(null)},style:s.position,children:/* @__PURE__ */e("div",{className:t.label,children:s.label})},s.adminRoute)};export{s as PreviewOverlayElement};
@@ -0,0 +1 @@
1
+ const e="_root_1ya0k_1",o="_isHoveredInBlockList_1ya0k_24",l="_showBlockOutlines_1ya0k_32",s="_blockIsSelected_1ya0k_37",a="_label_1ya0k_40",t={root:e,isHoveredInBlockList:o,showBlockOutlines:l,blockIsSelected:s,label:a};export{s as blockIsSelected,t as default,o as isHoveredInBlockList,a as label,e as root,l as showBlockOutlines};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{useState as e,useEffect as r}from"react";import{createFetchInMemoryCache as t}from"../graphQLFetch/fetchInMemoryCache.js";import{createGraphQLFetch as a,createFetchWithDefaults as c,convertPreviewDataToHeaders as h}from"../graphQLFetch/graphQLFetch.js";import{useIFrameBridge as s}from"./useIFrameBridge.js";const i=t(fetch);function o(t){const{showOnlyVisible:a,graphQLApiUrl:c}=s(),[h,o]=e(()=>t?n(t,!a):void 0);return r(()=>{c&&o(()=>n(c,!a))},[a,c]),{graphQLFetch:h,fetch:i}}function n(e,r){return a(c(i,{headers:h({includeInvisible:r}),credentials:"include"}),e)}export{o as useBlockPreviewFetch};
@@ -0,0 +1 @@
1
+ import{useContext as r}from"react";import{IFrameBridgeContext as e}from"./IFrameBridge.js";function t(){return r(e)}export{t as useIFrameBridge};
@@ -0,0 +1 @@
1
+ const t="data-comet-block-preview-container",e="comet-preview-element-scrolled-into-view",o=e=>{const n=[];return e.childNodes.forEach(e=>{e instanceof Element&&(e.hasAttribute(t)?n.push(...o(e)):n.push(e))}),n},n=t=>{const e=[],o=[];t.forEach(t=>{const{top:n,left:i,bottom:s,right:c}=t.getBoundingClientRect();e.push(n+window.scrollY),o.push(i+window.scrollX)});const n=Math.min(...e),i=Math.min(...o),s=[],c=[];return t.forEach(t=>{const{right:e,bottom:o}=t.getBoundingClientRect();s.push(e-i),c.push(o-n+window.scrollY)}),{top:n,left:i,width:Math.max(...s),height:Math.max(...c)}};export{t as BLOCK_PREVIEW_CONTAINER_DATA_ATTRIBUTE,e as PREVIEW_ELEMENT_SCROLLED_INTO_VIEW_EVENT,n as getCombinedPositioningOfElements,o as getRecursiveChildrenOfPreviewElement};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{useContext as t,createContext as a}from"react";import{Preview as r}from"./Preview.js";function n(e){return void 0!==e.adminMeta}const o=a({parentRoute:"",parentEnabledAutoScrolling:!0}),i=(a,{label:n="No type",enabledChildrenAutoScrolling:i=!0})=>({...l})=>{const{parentRoute:d,parentEnabledAutoScrolling:u}=t(o);return l.data?.adminMeta&&l.data?.adminMeta.route!==d?/* @__PURE__ */e(o.Provider,{value:{parentRoute:l.data?.adminMeta.route,parentEnabledAutoScrolling:!!u&&i},children:/* @__PURE__ */e(r,{adminRoute:l.data?.adminMeta.route,label:n,enabledAutoScrolling:u,children:/* @__PURE__ */e(a,{...l})})}):/* @__PURE__ */e(a,{...l})};export{n as isWithPreviewPropsData,i as withPreview};
@@ -0,0 +1 @@
1
+ function t(t){let i,e;if("string"==typeof t?([i,e]=t.split(/[x/:]/).map(t=>{let i=parseFloat(t);return isNaN(i)&&(i=void 0),i}),i&&!e&&(e=1)):(i=t,e=1),!i||!e)throw Error(`An error occurred while parsing the aspect ratio: ${t}`);return i/e}function i(t,i){let e,r;return i<1?(e=Math.min(t.height*i,t.width),r=e/i):(r=Math.min(t.width/i,t.height),e=r*i),{width:e,height:r}}function e(t,i){if("SMART"===i.focalPoint)return t.width/t.height;if(void 0===i.width||void 0===i.height)throw new Error("Missing crop dimensions");return i.width*t.width/100/(i.height*t.height/100)}function r({src:t,width:i},e){return t.replace("$resizeWidth",String(i)).replace("$resizeHeight",String(Math.ceil(i/e)))}export{e as calculateInheritAspectRatio,r as generateImageUrl,i as getMaxDimensionsFromArea,t as parseAspectRatio};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";const t=({data:t})=>{return r("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:(e=JSON.stringify(t),e.replace(/</g,"\\u003c"))}});var e};export{t as JsonLd};
@@ -0,0 +1 @@
1
+ function e(e,r){return async function(s,a,t){if("string"==typeof s)throw new Error("at runtime only hashed queries are supported");const n=s.hash;let o;if("GET"===t?.method){const s=new URL(r,window.location.origin);s.searchParams.append("extensions.persistedQuery.sha256Hash",n),s.searchParams.append("variables",JSON.stringify(a)),o=await e(s,{...t,headers:{"Apollo-Require-Preflight":"true",...t.headers}})}else o=await e(r,{method:"POST",...t,headers:{"Content-Type":"application/json",...t?.headers},body:JSON.stringify({extensions:{persistedQuery:{version:1,sha256Hash:n}},variables:a})});if(!o.ok){let e=`Network response was not ok. Status: ${o.status}`;const r=await o.text();try{const s=JSON.parse(r),{errors:a}=s;a&&(e+=`\n\nGraphQL error(s):\n- ${a.map(e=>e.message).join("\n- ")}`)}catch{e+=`\n${r}`}throw new Error(e)}const{data:i,errors:h}=await o.json();if(h)throw new Error(`GraphQL error(s):\n- ${h.map(e=>e.message).join("\n- ")}`);return i}}export{e as createPersistedQueryGraphQLFetch};
@@ -0,0 +1 @@
1
+ import{readFile as e}from"fs/promises";let s,t;async function r(r,{graphqlTarget:o,headers:n,persistedQueriesPath:a=".persisted-queries.json",cacheMaxAge:i}){let c,l;if(s||await async function(r){const o=await e(r,{encoding:"utf-8"});s=JSON.parse(o.toString()),t={};for(const[,e]of Object.entries(s)){const s=e.match(/^\s*fragment\s+(\w+)\s+on\s+\w+/m);if(s){const r=s[1];t[r]=e.replace(/\${.*?}/g,"")}}}(a),"POST"===r.method){const e=await r.json();c=e.extensions?.persistedQuery?.sha256Hash,l=e.variables}else{if("GET"!==r.method)return Response.json({error:"MethodNotAllowed"},{status:405});{const e=new URL(r.url);c=e.searchParams.get("extensions.persistedQuery.sha256Hash");const s=e.searchParams.get("variables");l=s?JSON.parse(s):void 0}}if(!c)return Response.json({error:"OnlyPersistedQueriesAllowed"},{status:400});let d=s[c];if(!d)return Response.json({error:"PersistedQueryNotFound",hash:c},{status:400});if(d=function(e){e=e.replace(/\${.*?}/g,"");const s=/* @__PURE__ */new Set;for(const t of e.matchAll(/^\s*fragment\s+(\w+)\s+on\s+\w+/gm))s.add(t[1]);return e=function e(r){const o=Array.from(r.matchAll(/\.\.\.(\w+)/g)).map(e=>e[1]);let n=r;for(const a of o)!s.has(a)&&t[a]&&(s.add(a),n+=`\n${e(t[a])}`);return n}(e)}(d),"GET"===r.method&&"true"!==r.headers.get("Apollo-Require-Preflight"))return Response.json({error:"CSRFProtection",message:"Missing Apollo-Require-Preflight header"},{status:403});const u=new Headers(n);u.set("Content-Type","application/json");for(const e of["x-include-invisible-content","x-preview-dam-urls"]){const s=r.headers.get(e);null!==s&&u.set(e,s)}const h=await fetch(o,{method:"POST",headers:u,body:JSON.stringify({query:d,variables:l})}),p={"Content-Type":"application/json"};return"GET"===r.method&&h.ok&&void 0!==i&&(p["Cache-Control"]=`public, max-age=${i}`),new Response(h.body,{headers:p})}export{r as persistedQueryRoute};
@@ -0,0 +1 @@
1
+ import{createHash as e}from"crypto";import*as t from"fs";function n(t){return e("sha256").update(t).digest("hex")}const s=/gql`([\s\S]*?)`/gm,r=function(e){const r=(this.getOptions()||{}).persistedQueriesPath||".persisted-queries.json",a=(i=r,t.existsSync(i)?JSON.parse(t.readFileSync(i,"utf-8")):{});var i;const l=[];let o;for(;null!==(o=s.exec(e));){const e=o[1],t=n(e);a[t]=e;const s=Array.from(e.matchAll(/\${.*?}/g)??[]).map(e=>e[0]).join(" ");e.match(/^\s*fragment\s+(\w+)\s+on\s+\w+/)?l.push({start:o.index,end:o.index+o[0].length,replacement:`{ fragment: true, fragmentVariables: \`${s}\` }`}):l.push({start:o.index,end:o.index+o[0].length,replacement:`{ hash: "${t}", fragmentVariables: \`${s}\` }`})}let c=e;for(let t=l.length-1;t>=0;t--){const{start:e,end:n,replacement:s}=l[t];c=c.slice(0,e)+s+c.slice(n)}return m=r,f=a,t.writeFileSync(m,JSON.stringify(f,null,2)),c;var m,f};export{r as default};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{useIFrameBridge as r}from"../iframebridge/useIFrameBridge.js";import{PreviewContext as o}from"./PreviewContext.js";let t=null;if("undefined"!=typeof window){const e=window.fetch;window.fetch=async(r,o={})=>{const i=new Headers(o.headers);return new URL("string"==typeof r?r:r.toString(),window.location.origin).host===window.location.host&&t&&i.set("X-Block-Preview",t),e(r,{...o,headers:i})}}const i=({children:i})=>{const{contentScopeJwt:n}=r();return t=n,/* @__PURE__ */e(o.Provider,{value:{previewType:"BlockPreview",showPreviewSkeletons:!0},children:i})};export{i as BlockPreviewProvider};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{createContext as e}from"react";const o=e({previewType:"NoPreview",showPreviewSkeletons:!1});export{o as PreviewContext};
@@ -0,0 +1 @@
1
+ import{useCallback as e,useContext as t}from"react";import{useIFrameBridge as r}from"../iframebridge/useIFrameBridge.js";import{PreviewContext as o}from"./PreviewContext.js";function i(){const i=r();return{...t(o),isSelected:e((e,t)=>!!i.selectedAdminRoute&&(t?.exactMatch??1?e===i.selectedAdminRoute:i.selectedAdminRoute?.startsWith(e)),[i.selectedAdminRoute]),isHovered:e((e,t)=>!!i.hoveredAdminRoute&&(t?.exactMatch??1?e===i.hoveredAdminRoute:i.hoveredAdminRoute?.startsWith(e)),[i.hoveredAdminRoute])}}export{i as usePreview};
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ import{jsx as e,Fragment as r,jsxs as o}from"react/jsx-runtime";import{usePreview as t}from"../preview/usePreview.js";import i from"./PreviewSkeleton.module.scss.js";const l=({children:l,customContainer:s,title:c,type:a="bar",aspectRatio:d,height:u,hasContent:m,color:h="#A8A7A8",backgroundColor:f=("media"===a?"#efefef":"#E0DDE0"),fill:w=!1})=>{const k=t(),v=n(d);if(k.showPreviewSkeletons&&!m){if(s)return e(r,{children:s});if("bar"===a)return e("div",{className:i.barSkeleton,style:{"--background-color":f,"--color":h},children:c});if("rows"===a)return o("div",{className:i.rowsContainer,children:[
3
+ /* @__PURE__ */e("div",{className:i.rowSkeleton,style:{"--width":"75%","--background-color":f,"--color":h},children:c}),
4
+ /* @__PURE__ */e("div",{className:i.rowSkeleton,style:{"--width":"100%","--background-color":f,"--color":h}}),
5
+ /* @__PURE__ */e("div",{className:i.rowSkeleton,style:{"--width":"50%","--background-color":f,"--color":h}})]});if("media"===a){const r=w?"100%":u??300;return e("div",{className:i.imageContainer,style:{"--background-color":f,"--color":h,...void 0===v||w?{"--height":"string"==typeof r?r:`${r}px`}:{"--aspect-ratio":v}},children:c})}}return m?/* @__PURE__ */e(r,{children:l}):null},n=e=>{if("inherit"!==e&&"auto"!==e)return"string"==typeof e?e.replace("x","/"):e};export{l as PreviewSkeleton};
@@ -0,0 +1 @@
1
+ const o="_barSkeleton_zomv4_1",e="_rowsContainer_zomv4_9",n="_rowSkeleton_zomv4_14",a="_imageContainer_zomv4_22",r={barSkeleton:o,rowsContainer:e,rowSkeleton:n,imageContainer:a};export{o as barSkeleton,r as default,a as imageContainer,n as rowSkeleton,e as rowsContainer};
@@ -0,0 +1 @@
1
+ var e=/* @__PURE__ */(e=>(e.OpenLink="OpenLink",e.SitePreviewLocation="SitePreviewLocation",e))(e||{});export{e as SitePreviewIFrameMessageType};
@@ -0,0 +1 @@
1
+ function e(e){window.parent.postMessage(JSON.stringify(e),"*")}export{e as sendSitePreviewIFrameMessage};
@@ -0,0 +1,3 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export declare const SitePreviewProvider: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SitePreviewProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SitePreviewProvider.d.ts","sourceRoot":"","sources":["../../src/sitePreview/SitePreviewProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAiC1D,eAAO,MAAM,mBAAmB,GAAI,cAAc,iBAAiB,4CAElE,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import{PreviewContext as r}from"../site-react/lib/preview/PreviewContext.js";import{sendSitePreviewIFrameMessage as i}from"../site-react/lib/sitePreview/iframebridge/sendSitePreviewIFrameMessage.js";import{SitePreviewIFrameMessageType as t}from"../site-react/lib/sitePreview/iframebridge/SitePreviewIFrameMessage.js";import{usePathname as o,useSearchParams as a}from"next/navigation";import{useEffect as s}from"react";const n=({children:n})=>{const m=o(),v=a();return s(()=>{function e(){const e={cometType:t.SitePreviewLocation,data:{search:v.toString(),pathname:m}};i(e)}return e(),window.addEventListener("load",e),()=>{window.removeEventListener("load",e)}},[m,v]),/* @__PURE__ */e(r.Provider,{value:{previewType:"SitePreview",showPreviewSkeletons:!1},children:n})},m=({children:r})=>/* @__PURE__ */e(n,{children:r});export{m as SitePreviewProvider};
@@ -0,0 +1,5 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ export declare function sitePreviewRoute(request: NextRequest): Promise<NextResponse<{
3
+ error: string;
4
+ }>>;
5
+ //# sourceMappingURL=sitePreviewRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sitePreviewRoute.d.ts","sourceRoot":"","sources":["../../../src/sitePreview/appRouter/sitePreviewRoute.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI7D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW;;IAuB1D"}
@@ -0,0 +1 @@
1
+ import"server-only";import{redirect as t}from"next/navigation";import{NextResponse as r}from"next/server";import{verifyJwt as e,setSitePreviewParams as a}from"../previewUtils.js";async function s(s){const i=s.nextUrl.searchParams.get("jwt");if(!i)return r.json({error:"JWT-Parameter is missing."},{status:400});const o=await e(i);return o?(await a({scope:o.scope,previewData:o.previewData,userId:o.userId}),!o.path.startsWith("/")||o.path.startsWith("//")?r.json({error:`Redirect to ${o.path} disallowed: only relative paths are valid.`},{status:400}):t(o.path)):r.json({error:"JWT-validation failed."},{status:400})}export{s as sitePreviewRoute};
@@ -0,0 +1,4 @@
1
+ import { NextApiRequest, NextApiResponse } from 'next';
2
+ declare function legacyPagesRouterSitePreviewApiHandler(req: NextApiRequest, res: NextApiResponse): Promise<void>;
3
+ export { legacyPagesRouterSitePreviewApiHandler };
4
+ //# sourceMappingURL=legacyPagesRouterSitePreviewApiHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacyPagesRouterSitePreviewApiHandler.d.ts","sourceRoot":"","sources":["../../../src/sitePreview/pagesRouter/legacyPagesRouterSitePreviewApiHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAI5D,iBAAe,sCAAsC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,iBAmB9F;AAED,OAAO,EAAE,sCAAsC,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ import{verifyJwt as t}from"../previewUtils.js";async function r(r,s){const a=r.query.jwt;if("string"!=typeof a)return s.status(400).json({error:"JWT-Parameter is missing."});const e=await t(a);return e?!e.path.startsWith("/")||e.path.startsWith("//")?s.status(400).json({error:`Redirect to ${e.path} disallowed: only relative paths are valid.`}):(s.setPreviewData(e),void s.redirect(e.path)):s.status(400).json({error:"JWT-validation failed."})}export{r as legacyPagesRouterSitePreviewApiHandler};
@@ -0,0 +1,25 @@
1
+ import { PreviewData } from '@dextinity/site-react';
2
+ import { NextApiRequest } from 'next';
3
+ type PreviewParams = {
4
+ scope: Record<string, any>;
5
+ previewData?: PreviewData;
6
+ };
7
+ export type SitePreviewParams = PreviewParams & {
8
+ userId: string;
9
+ };
10
+ export type SitePreviewJwtPayload = SitePreviewParams & {
11
+ path: string;
12
+ };
13
+ export declare function verifyJwt<T>(jwt: string): Promise<T | null>;
14
+ export declare function setSitePreviewParams(payload: SitePreviewParams): Promise<void>;
15
+ /**
16
+ * Helper for SitePreview
17
+ * @param options.skipDraftModeCheck Allows skipping the draft mode check, only required when called from proxy.ts (see https://github.com/vercel/next.js/issues/52080)
18
+ * @return If SitePreview is active the current preview settings
19
+ */
20
+ export declare function previewParams(options?: {
21
+ skipDraftModeCheck: boolean;
22
+ }): Promise<PreviewParams | null>;
23
+ export declare function legacyPagesRouterPreviewParams(req: NextApiRequest): Promise<PreviewParams | null>;
24
+ export {};
25
+ //# sourceMappingURL=previewUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewUtils.d.ts","sourceRoot":"","sources":["../../src/sitePreview/previewUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAI3C,KAAK,aAAa,GAAG;IAEjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AAGF,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAajE;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,iBAOpE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,kBAAkB,EAAE,OAAO,CAAA;CAAkC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqB3I;AAED,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CASvG"}
@@ -0,0 +1 @@
1
+ import{jwtVerify as e,errors as t,SignJWT as r}from"jose";import{headers as n,draftMode as a,cookies as i}from"next/headers";async function o(r){if(!process.env.SITE_PREVIEW_SECRET)throw new Error("SITE_PREVIEW_SECRET environment variable is required.");try{return(await e(r,(new TextEncoder).encode(process.env.SITE_PREVIEW_SECRET))).payload}catch(n){if(n instanceof t.JOSEError)return null;throw n}}async function c(e){const t=await new r(e).setProtectedHeader({alg:"HS256"}).setExpirationTime("1 day").sign((new TextEncoder).encode(process.env.SITE_PREVIEW_SECRET));(await i()).set("__comet_site_preview",t,{httpOnly:!0,sameSite:"lax"}),(await a()).enable()}async function s(e={skipDraftModeCheck:!1}){if(e.skipDraftModeCheck){const e=await n();if(e.has("x-block-preview"))return o(e.get("x-block-preview")||"")}if(!e.skipDraftModeCheck&&!(await a()).isEnabled)return null;const t=(await i()).get("__comet_site_preview");return t?o(t.value):null}async function E(e){return e.headers["x-block-preview"]?o(e.headers["x-block-preview"].toString()):e.previewData?e.previewData:null}export{E as legacyPagesRouterPreviewParams,s as previewParams,c as setSitePreviewParams,o as verifyJwt};
package/lib/style.css ADDED
@@ -0,0 +1 @@
1
+ ._root_3o74i_1{display:inline-flex;pointer-events:none}._overlay_3o74i_6{position:absolute;z-index:1}._bottomLeft_3o74i_11{bottom:0;left:0}._topRight_3o74i_16{top:0;right:0}._icon_3o74i_21{display:block;height:var(--ai-content-disclosure-icon-size, 28px);width:auto}._black_3o74i_27 ._icon_3o74i_21{filter:drop-shadow(0 0 2px rgba(100,100,100,.7)) drop-shadow(0 0 5px rgba(100,100,100,.5))}._white_3o74i_31 ._icon_3o74i_21{filter:drop-shadow(0 0 2px rgba(0,0,0,.7)) drop-shadow(0 0 5px rgba(0,0,0,.5))}._previewElementContainer_nwhl6_1{display:contents}._childrenWrapper_qguhx_1{position:relative;z-index:1}._root_v4248_1{position:absolute;z-index:2;top:0;left:0;right:0;min-height:100vh;height:var(--height)}._root_1ya0k_1{position:absolute;cursor:pointer;outline:1px solid transparent;outline-offset:-1px}._root_1ya0k_1:after{content:"";position:absolute;inset:0;opacity:.25}._root_1ya0k_1:hover{outline-color:#29b6f6;outline-style:solid}._root_1ya0k_1:hover:after{background-color:#29b6f6}._isHoveredInBlockList_1ya0k_24{outline-color:#29b6f6;outline-style:solid}._isHoveredInBlockList_1ya0k_24:after{background-color:#29b6f6}._showBlockOutlines_1ya0k_32:not(:hover){outline-color:#d9d9d9;outline-style:dashed}._blockIsSelected_1ya0k_37{outline-color:#29b6f6}._blockIsSelected_1ya0k_37 ._label_1ya0k_40{display:inline-block}._label_1ya0k_40{position:absolute;padding:2px;background-color:#57b0eb;line-height:16px;color:#fff;top:1px;right:1px;font-size:12px;display:none}._barSkeleton_zomv4_1{min-height:20px;margin-bottom:5px;margin-right:5px;background-color:var(--background-color);color:var(--color)}._rowsContainer_zomv4_9{width:100%;min-width:300px}._rowSkeleton_zomv4_14{margin-bottom:10px;min-height:20px;width:var(--width);background-color:var(--background-color);color:var(--color)}._imageContainer_zomv4_22{width:100%;aspect-ratio:var(--aspect-ratio);height:var(--height);background-color:var(--background-color);color:var(--color)}._root_1jlho_1{position:relative;height:100%}._video_1jlho_6{width:100%;object-fit:cover;aspect-ratio:var(--aspect-ratio)}._fill_1jlho_12{height:100%}._button_4r8gs_1{position:absolute;left:8px;bottom:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background-color:#000000b3;z-index:10}._button_4r8gs_1:hover,._button_4r8gs_1:active{background-color:#9e9e9e}._button_4r8gs_1:focus{border-radius:6px}._animatedPlayPause_4r8gs_23{box-sizing:border-box;height:12px;border-color:transparent transparent transparent #fff;cursor:pointer;border-style:solid;border-width:6px 0 6px 9px;transition:border-width .1s ease,border-style .1s ease}._animatedPlayPausePaused_4r8gs_32{border-style:double;border-width:0 0 0 9px}._root_1k5a5_1{position:relative;width:100%}._fill_1k5a5_6{height:100%}._iconWrapper_1k5a5_10{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:#000;opacity:.5;appearance:none;border:none;padding:0;cursor:pointer}._iconWrapper_1k5a5_10:focus ._playIcon_1k5a5_26{outline:4px solid white;outline-offset:10px;border-radius:2px}._playIcon_1k5a5_26{width:64px;height:64px;box-sizing:border-box;border-style:solid;border-width:32px 0 32px 64px;border-color:transparent transparent transparent white}._videoContainer_1flq1_1{overflow:hidden;position:relative;aspect-ratio:var(--aspect-ratio)}._fill_1flq1_7{width:100%;height:100%}._vimeoContainer_1flq1_12{position:absolute;border:0;top:0;left:0;width:100%;height:100%}._videoContainer_bhmhr_1{overflow:hidden;position:relative;aspect-ratio:var(--aspect-ratio)}._fill_bhmhr_7{width:100%;height:100%}._youtubeContainer_bhmhr_12{position:absolute;border:0;top:0;left:0;width:100%;height:100%}._imageContainer_ecpdr_1{position:relative;width:100%;aspect-ratio:var(--aspect-ratio)}
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@dextinity/site-nextjs",
3
+ "version": "2.0.0-canary-20260729062014",
4
+ "description": "Comet Site Next.js package",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/vivid-planet/comet",
8
+ "directory": "packages/site/site-nextjs"
9
+ },
10
+ "license": "BSD-2-Clause",
11
+ "sideEffects": [
12
+ "**/*.css"
13
+ ],
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./lib/index.d.ts",
18
+ "import": "./lib/index.js"
19
+ },
20
+ "./css": "./lib/style.css",
21
+ "./server": {
22
+ "types": "./lib/server.d.ts",
23
+ "import": "./lib/server.js"
24
+ },
25
+ "./webpackPersistedQueriesLoader": "./lib/persistedQueries/webpackPersistedQueriesLoader.js"
26
+ },
27
+ "files": [
28
+ "lib/*"
29
+ ],
30
+ "dependencies": {
31
+ "jose": "^5.10.0",
32
+ "server-only": "^0.0.1",
33
+ "@dextinity/site-react": "2.0.0-canary-20260729062014"
34
+ },
35
+ "devDependencies": {
36
+ "@types/react": "^19.2.15",
37
+ "@types/react-dom": "^19.2.3",
38
+ "@vitejs/plugin-react": "^4.7.0",
39
+ "chokidar-cli": "^3.0.0",
40
+ "eslint": "^9.39.4",
41
+ "jsdom": "^28.1.0",
42
+ "next": "^16.2.10",
43
+ "npm-run-all2": "^8.0.4",
44
+ "prettier": "^3.6.2",
45
+ "react": "^19.2.6",
46
+ "react-dom": "^19.2.6",
47
+ "rimraf": "^6.1.2",
48
+ "rollup": "^4.44.2",
49
+ "rollup-plugin-preserve-directives": "^0.4.0",
50
+ "sass": "^1.89.2",
51
+ "typescript": "^5.9.3",
52
+ "vite": "^7.2.4",
53
+ "vite-plugin-dts": "^4.5.4",
54
+ "vitest": "^4.1.8",
55
+ "@dextinity/cli": "2.0.0-canary-20260729062014",
56
+ "@dextinity/eslint-config": "2.0.0-canary-20260729062014"
57
+ },
58
+ "peerDependencies": {
59
+ "next": "^14.2.0 || ^15.0.0 || ^16.0.0",
60
+ "react": "^18.0.0 || ^19.0.0",
61
+ "react-dom": "^18.0.0 || ^19.0.0"
62
+ },
63
+ "engines": {
64
+ "node": ">=18.0.0"
65
+ },
66
+ "publishConfig": {
67
+ "access": "public",
68
+ "registry": "https://registry.npmjs.org"
69
+ },
70
+ "scripts": {
71
+ "build": "pnpm run clean && pnpm run generate-block-types && vite build",
72
+ "clean": "rimraf lib 'src/**/*.generated.ts'",
73
+ "dev": "pnpm run clean && pnpm run generate-block-types && vite build --watch",
74
+ "generate-block-types": "comet generate-block-types",
75
+ "generate-block-types:watch": "chokidar -s \"block-meta.json\" -c \"pnpm run generate-block-types\"",
76
+ "lint": "pnpm run generate-block-types && run-p lint:prettier lint:eslint lint:tsc",
77
+ "lint:ci": "pnpm run lint",
78
+ "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored",
79
+ "lint:fix": "run-p lint:fix:eslint lint:fix:prettier",
80
+ "lint:fix:eslint": "pnpm run lint:eslint --fix",
81
+ "lint:fix:prettier": "pnpm run lint:prettier --write",
82
+ "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'",
83
+ "lint:tsc": "tsc --noEmit",
84
+ "test": "pnpm run test:unit",
85
+ "test:unit": "vitest --run",
86
+ "test:watch": "vitest --watch"
87
+ }
88
+ }