@makeswift/runtime 0.4.2 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/Box.cjs.js +35 -273
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +34 -272
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +4 -4
  6. package/dist/Button.es.js +5 -5
  7. package/dist/Carousel.cjs.js +8 -7
  8. package/dist/Carousel.cjs.js.map +1 -1
  9. package/dist/Carousel.es.js +7 -6
  10. package/dist/Carousel.es.js.map +1 -1
  11. package/dist/Countdown.cjs.js +3 -3
  12. package/dist/Countdown.es.js +4 -4
  13. package/dist/Divider.cjs.js +3 -3
  14. package/dist/Divider.es.js +4 -4
  15. package/dist/Embed.cjs.js +5 -4
  16. package/dist/Embed.cjs.js.map +1 -1
  17. package/dist/Embed.es.js +5 -4
  18. package/dist/Embed.es.js.map +1 -1
  19. package/dist/Form.cjs.js +4 -4
  20. package/dist/Form.es.js +5 -5
  21. package/dist/Image.cjs.js +21 -13
  22. package/dist/Image.cjs.js.map +1 -1
  23. package/dist/Image.es.js +22 -14
  24. package/dist/Image.es.js.map +1 -1
  25. package/dist/LiveProvider.cjs.js +62 -0
  26. package/dist/LiveProvider.cjs.js.map +1 -0
  27. package/dist/LiveProvider.es.js +60 -0
  28. package/dist/LiveProvider.es.js.map +1 -0
  29. package/dist/Navigation.cjs.js +9 -6
  30. package/dist/Navigation.cjs.js.map +1 -1
  31. package/dist/Navigation.es.js +9 -6
  32. package/dist/Navigation.es.js.map +1 -1
  33. package/dist/{react-builder-preview.cjs.js → PreviewProvider.cjs.js} +43 -16
  34. package/dist/PreviewProvider.cjs.js.map +1 -0
  35. package/dist/{react-builder-preview.es.js → PreviewProvider.es.js} +47 -15
  36. package/dist/PreviewProvider.es.js.map +1 -0
  37. package/dist/Root.cjs.js +10 -8
  38. package/dist/Root.cjs.js.map +1 -1
  39. package/dist/Root.es.js +8 -6
  40. package/dist/Root.es.js.map +1 -1
  41. package/dist/SocialLinks.cjs.js +5 -5
  42. package/dist/SocialLinks.es.js +6 -6
  43. package/dist/Text.cjs.js +4 -4
  44. package/dist/Text.cjs.js.map +1 -1
  45. package/dist/Text.es.js +5 -5
  46. package/dist/Text.es.js.map +1 -1
  47. package/dist/Video.cjs.js +3 -3
  48. package/dist/Video.es.js +4 -4
  49. package/dist/actions.es.js +1 -1
  50. package/dist/components.cjs.js +15 -12
  51. package/dist/components.cjs.js.map +1 -1
  52. package/dist/components.es.js +14 -11
  53. package/dist/components.es.js.map +1 -1
  54. package/dist/index.cjs.js +70 -69
  55. package/dist/index.cjs.js.map +1 -1
  56. package/dist/index.cjs2.js +710 -92
  57. package/dist/index.cjs2.js.map +1 -1
  58. package/dist/index.cjs3.js +107 -20
  59. package/dist/index.cjs3.js.map +1 -1
  60. package/dist/index.cjs4.js +59 -0
  61. package/dist/index.cjs4.js.map +1 -0
  62. package/dist/index.es.js +65 -68
  63. package/dist/index.es.js.map +1 -1
  64. package/dist/index.es2.js +707 -93
  65. package/dist/index.es2.js.map +1 -1
  66. package/dist/index.es3.js +103 -21
  67. package/dist/index.es3.js.map +1 -1
  68. package/dist/index.es4.js +58 -0
  69. package/dist/index.es4.js.map +1 -0
  70. package/dist/next-version.cjs.js +10 -0
  71. package/dist/next-version.cjs.js.map +1 -0
  72. package/dist/next-version.es.js +5 -0
  73. package/dist/next-version.es.js.map +1 -0
  74. package/dist/next.cjs.js +3 -3
  75. package/dist/next.es.js +4 -4
  76. package/dist/react-page.es.js +1 -1
  77. package/dist/react.cjs.js +4 -4
  78. package/dist/react.es.js +4 -4
  79. package/dist/types/src/components/builtin/Box/Box.d.ts +18 -26
  80. package/dist/types/src/components/builtin/Box/Box.d.ts.map +1 -1
  81. package/dist/types/src/components/builtin/Box/animations.d.ts +13 -60
  82. package/dist/types/src/components/builtin/Box/animations.d.ts.map +1 -1
  83. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  84. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  85. package/dist/types/src/components/builtin/Image/Image.d.ts.map +1 -1
  86. package/dist/types/src/components/hooks/useMediaQuery.d.ts +1 -1
  87. package/dist/types/src/components/hooks/useMediaQuery.d.ts.map +1 -1
  88. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  89. package/dist/types/src/components/shared/BackgroundsContainer/index.d.ts +1 -254
  90. package/dist/types/src/components/shared/BackgroundsContainer/index.d.ts.map +1 -1
  91. package/dist/types/src/components/shared/Link/index.d.ts.map +1 -1
  92. package/dist/types/src/components/shared/grid-item.d.ts +9 -6
  93. package/dist/types/src/components/shared/grid-item.d.ts.map +1 -1
  94. package/dist/types/src/next/client.d.ts +1 -0
  95. package/dist/types/src/next/client.d.ts.map +1 -1
  96. package/dist/types/src/next/index.d.ts.map +1 -1
  97. package/dist/types/src/next/next-version.d.ts +3 -0
  98. package/dist/types/src/next/next-version.d.ts.map +1 -0
  99. package/dist/types/src/runtimes/react/components/LiveProvider.d.ts +11 -0
  100. package/dist/types/src/runtimes/react/components/LiveProvider.d.ts.map +1 -0
  101. package/dist/types/src/runtimes/react/components/PreviewProvider.d.ts +11 -0
  102. package/dist/types/src/runtimes/react/components/PreviewProvider.d.ts.map +1 -0
  103. package/dist/types/src/runtimes/react/index.d.ts +3 -1
  104. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  105. package/dist/types/src/state/react-builder-preview.d.ts +3 -1
  106. package/dist/types/src/state/react-builder-preview.d.ts.map +1 -1
  107. package/dist/useIsomorphicLayoutEffect.cjs.js +6 -0
  108. package/dist/useIsomorphicLayoutEffect.cjs.js.map +1 -0
  109. package/dist/useIsomorphicLayoutEffect.es.js +5 -0
  110. package/dist/useIsomorphicLayoutEffect.es.js.map +1 -0
  111. package/package.json +4 -4
  112. package/dist/grid-item.cjs.js +0 -592
  113. package/dist/grid-item.cjs.js.map +0 -1
  114. package/dist/grid-item.es.js +0 -584
  115. package/dist/grid-item.es.js.map +0 -1
  116. package/dist/react-builder-preview.cjs.js.map +0 -1
  117. package/dist/react-builder-preview.es.js.map +0 -1
  118. package/dist/useMediaQuery.cjs.js +0 -26
  119. package/dist/useMediaQuery.cjs.js.map +0 -1
  120. package/dist/useMediaQuery.es.js +0 -25
  121. package/dist/useMediaQuery.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs2.js","sources":["../src/components/shared/Link/index.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useElementId } from '../../../runtimes/react'\nimport { usePagePathnameSlice } from '../../../runtimes/react/hooks/makeswift-api'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n // We don't want to use `next/link` with relative paths because Next.js will attempt to normalize\n // it and mess up the path.\n let useNextLink: boolean | undefined\n let href: string | undefined\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) {\n useNextLink = true\n\n href = `/${page.pathname}`\n }\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n useNextLink = true\n\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n useNextLink = false\n\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n useNextLink = false\n\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n useNextLink = false\n\n href = `#${elementId ?? ''}`\n\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n if (href != null) hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && hash != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n if (useNextLink && href != null) {\n return (\n <NextLink href={href}>\n {/* eslint-disable-next-line */}\n <a {...restOfProps} ref={ref} target={target} onClick={handleClick} />\n </NextLink>\n )\n }\n\n // eslint-disable-next-line\n return <a {...restOfProps} ref={ref} href={href} target={target} onClick={handleClick} />\n})\n"],"names":["Link","forwardRef","ref","link","onClick","restOfProps","pageId","type","payload","page","usePagePathnameSlice","elementKey","elementIdConfig","elementId","useElementId","useNextLink","href","target","block","pathname","openInNewTab","url","to","subject","body","phoneNumber","RangeError","handleClick","event","defaultPrevented","currentTarget","isContentEditable","preventDefault","hash","URL","error","view","scrollIntoView","document","querySelector","behavior","location","history","pushState","NextLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeaA,MAAAA,OAAOC,MAAAA,WAAqC,eACvD,IACAC,KACA;AAFA,eAAEC;AAAAA;AAAAA,IAAMC,UAAU,MAAM;AAAA,IAAE;AAAA,MAA1B,IAA+BC,wBAA/B,IAA+BA;AAAAA,IAA7BF;AAAAA,IAAMC;AAAAA;;AAGR,QAAME,SAASH,QAAQA,KAAKI,SAAS,cAAcJ,KAAKK,QAAQF,SAAS;AACnEG,QAAAA,OAAOC,KAAAA,qBAAqBJ,0BAAU,IAAX;AACjC,QAAMK,aACJR,8BAAMI,UAAS,sBAAsBJ,YAAKK,QAAQI,oBAAbT,oBAA8BQ,aAAa;AAC5EE,QAAAA,YAAYC,kBAAaH,UAAD;AAI1BI,MAAAA;AACAC,MAAAA;AACAC,MAAAA;AACAC,MAAAA;AAEJ,MAAIf,MAAM;AACAA,YAAAA,KAAKI;AAAAA,WACN,aAAa;AAChB,YAAIE,MAAM;AACM,wBAAA;AAEdO,iBAAQ,IAAGP,KAAKU;AAAAA,QACjB;AAEQhB,iBAAAA,KAAKK,QAAQY,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,YAAY;AACD,sBAAA;AAEdJ,eAAOb,KAAKK,QAAQa;AAEXlB,iBAAAA,KAAKK,QAAQY,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,cAAc;AACH,sBAAA;AAER,cAAA;AAAA,UAAEE;AAAAA,UAAIC,UAAU;AAAA,UAAIC,OAAO;AAAA,YAAOrB,KAAKK;AAE7C,YAAIc,MAAM;AAAc,iBAAA,UAASA,cAAcC,gBAAgBC;AAE/D;AAAA,MACD;AAAA,WAEI,cAAc;AACH,sBAAA;AAEN,eAAA,OAAMrB,KAAKK,QAAQiB;AAE3B;AAAA,MACD;AAAA,WAEI,qBAAqB;AACV,sBAAA;AAEdT,eAAQ,IAAGH,gCAAa;AAExBK,gBAAQf,KAAKK,QAAQU;AAErB;AAAA,MACD;AAAA;AAGO,cAAA,IAAIQ,WAAY,sBAAsBvB,KAAaI,QAAnD;AAAA;AAAA,EAEX;AAEQoB,uBAAYC,OAAsC;AACzDxB,YAAQwB,KAAD;AAEHA,QAAAA,MAAMC;AAAkB;AAOxBD,QAAAA,MAAME,cAAcC;AAAmB,aAAOH,MAAMI;AAEpD7B,QAAAA,QAAQA,KAAKI,SAAS,qBAAqB;AACzC0B,UAAAA;AAEA,UAAA;AACF,YAAIjB,QAAQ;AAAMiB,iBAAO,IAAIC,IAAK,0BAAyBlB,MAAlC,EAA0CiB;AAAAA,eAC5DE;AACCA,gBAAAA,MAAO,+BAA8BnB,QAAQmB,KAArD;AAAA,MACD;AAEGnB,UAAAA,QAAQ,QAAQiB,QAAQ,QAAQjB,SAASiB,MAAM;AACjDL,cAAMI,eAAN;AACMI,cAAAA,OAAOR,MAAMQ;AAEnBC,gCAAAA,WAAeD,KAAKE,SAASC,cAAcN,IAA5B,GAAoC;AAAA,UACjDO,UAAU;AAAA,UACVtB;AAAAA,QAAAA,CAFY;AAKVkB,YAAAA,KAAKK,SAASR,SAASA;AAAMG,eAAKM,QAAQC,UAAU,IAAI,IAAIV,IAA/B;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEGlB,MAAAA,eAAeC,QAAQ,MAAM;AAC/B,0CACG4B,kBAAAA,YAAD;AAAA,MAAU;AAAA,MAAV,+EAESvC;QAAa;AAAA,QAAU;AAAA,QAAgB,SAASsB;AAAAA,MAAAA,EAAvD;AAAA,IAAA,CAHJ;AAAA,EAMD;AAGD,8EAActB;IAAa;AAAA,IAAU;AAAA,IAAY;AAAA,IAAgB,SAASsB;AAAAA,EAAAA,EAA1E;AACD,CAxH6B;;"}
1
+ {"version":3,"file":"index.cjs2.js","sources":["../src/components/hooks/useBackgrounds.ts","../src/components/shared/grid-item.tsx","../src/components/builtin/Box/animations.tsx","../src/utils/clamp.ts","../src/components/shared/BackgroundsContainer/components/Parallax/index.tsx","../src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.tsx","../src/components/shared/BackgroundsContainer/components/Backgrounds/index.tsx","../src/components/shared/BackgroundsContainer/index.tsx"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { ColorValue as Color } from '../utils/types'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport { BackgroundsValue as ResponsiveBackgroundsValue } from '../../prop-controllers/descriptors'\nimport { useFiles, useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport {\n getBackgroundsFileIds,\n getBackgroundsSwatchIds,\n} from '../../prop-controllers/introspection'\n\ntype BackgroundColorData = Color\n\ntype BackgroundGradientStopData = {\n id: string\n location: number\n color: Color | null | undefined\n}\n\ntype BackgroundGradientData = {\n angle?: number\n isRadial?: boolean\n stops: Array<BackgroundGradientStopData>\n}\n\ntype BackgroundImageData = {\n publicUrl?: string\n dimensions?: { width: number; height: number } | null\n position: {\n x: number\n y: number\n }\n size?: 'cover' | 'contain' | 'auto'\n repeat?: 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat'\n opacity?: number\n parallax?: number\n}\n\ntype BackgroundVideoData = {\n url?: string\n maskColor: Color | null | undefined\n aspectRatio?: 'wide' | 'standard'\n opacity?: number\n zoom?: number\n parallax?: number\n}\n\ntype BackgroundData =\n | { id: string; type: 'color'; payload: BackgroundColorData | null | undefined }\n | { id: string; type: 'image'; payload: BackgroundImageData | null | undefined }\n | { id: string; type: 'gradient'; payload: BackgroundGradientData | null | undefined }\n | { id: string; type: 'video'; payload: BackgroundVideoData | null | undefined }\n\nexport type BackgroundsData = Array<BackgroundData>\n\nexport type BackgroundsPropControllerData = ResponsiveValue<BackgroundsData>\n\nexport function useBackgrounds(\n value: ResponsiveBackgroundsValue | null | undefined,\n): BackgroundsPropControllerData | null | undefined {\n const fileIds = getBackgroundsFileIds(value)\n const files = useFiles(fileIds)\n const swatchIds = getBackgroundsSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n return useMemo(() => {\n if (value == null) return null\n\n return value.map(({ value: backgrounds, ...restOfValue }) => ({\n ...restOfValue,\n value: backgrounds\n .map((bg): BackgroundData | null | undefined => {\n if (bg.type === 'image' && bg.payload != null && bg.payload.imageId != null) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find(f => f && f.id === imageId)\n\n return (\n file && {\n id: bg.id,\n type: 'image',\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n }\n\n if (bg.type === 'color' && bg.payload != null) {\n const { swatchId, alpha } = bg.payload\n const swatch = swatches.filter(isNonNullable).find(s => s && s.id === swatchId)\n\n return { id: bg.id, type: 'color', payload: { swatch, alpha } }\n }\n\n if (bg.type === 'gradient' && bg.payload != null && bg.payload.stops.length > 0) {\n return {\n id: bg.id,\n type: 'gradient',\n payload: {\n angle: bg.payload.angle,\n isRadial: bg.payload.isRadial,\n stops: bg.payload.stops.map(({ color, ...restOfStop }) => ({\n ...restOfStop,\n color: color && {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n },\n })),\n },\n }\n }\n\n if (bg.type === 'video' && bg.payload != null) {\n const { maskColor, ...restOfPayload } = bg.payload\n const swatch = maskColor && swatches.find(s => s && s.id === maskColor.swatchId)\n\n return {\n id: bg.id,\n type: 'video',\n payload: {\n ...restOfPayload,\n maskColor: swatch && maskColor && { swatch, alpha: maskColor.alpha },\n },\n }\n }\n\n return null\n })\n .filter(isNonNullable),\n }))\n }, [files, swatches, value])\n}\n","import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport {\n ResponsiveValue,\n Length as LengthValue,\n ResponsiveNumberValue,\n} from '../../prop-controllers'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { useItemAnimation } from '../builtin/Box/animations'\nimport { responsiveGridItem } from '../utils/responsive-style'\n\ntype BaseProps = {\n className?: string\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport const gridItemIdentifierClassName = 'grid-item'\n\nexport function GridItem({\n grid,\n index,\n columnGap,\n rowGap,\n className,\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n ...restOfProps\n}: Props) {\n const gridItemClassName = useStyle(responsiveGridItem({ grid, index, columnGap, rowGap }))\n const animationClassName = useItemAnimation(\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n index,\n )\n\n return (\n <div\n {...restOfProps}\n className={cx(gridItemClassName, className, animationClassName, gridItemIdentifierClassName)}\n />\n )\n}\n","import { CSSObject } from '@emotion/css'\nimport { useState, useEffect, useCallback } from 'react'\nimport {\n ResponsiveNumberValue,\n ResponsiveSelectValue,\n ResponsiveValue,\n} from '../../../prop-controllers'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useMediaQuery } from '../../hooks'\nimport { gridItemIdentifierClassName } from '../../shared/grid-item'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_BOX_ANIMATE_TYPE,\n DEFAULT_ITEM_ANIMATE_TYPE,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\n\nconst useElementOnScreen = (element: HTMLElement | null, options: IntersectionObserverInit) => {\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n const observer = new IntersectionObserver(intersectionCallback, options)\n\n if (element) observer.observe(element)\n\n return () => {\n if (element) observer.unobserve(element)\n }\n\n function intersectionCallback([entry]: IntersectionObserverEntry[]) {\n if (entry?.isIntersecting) {\n setIsVisible(true)\n }\n }\n }, [element, options])\n\n return isVisible\n}\n\nexport type BoxAnimationProps = {\n boxAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n boxAnimateDuration?: ResponsiveNumberValue\n boxAnimateDelay?: ResponsiveNumberValue\n itemAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\nfunction compareResponsiveValues<T>(a?: ResponsiveValue<T>, b?: ResponsiveValue<T>) {\n if (a == null && b == null) {\n return true\n }\n if (a != null && b != null) {\n let isEqual = true\n a.forEach((currentA, index) => {\n const currentB = b.at(index)\n if (currentB == null) {\n isEqual = false\n return\n }\n\n if (currentA.deviceId != currentB?.deviceId || currentA.value != currentB.value) {\n isEqual = false\n }\n })\n return isEqual\n }\n\n return false\n}\n\nexport function areBoxAnimationPropsEqual(prevProps: BoxAnimationProps, props: BoxAnimationProps) {\n return (\n compareResponsiveValues(prevProps.boxAnimateType, props.boxAnimateType) &&\n compareResponsiveValues(prevProps.boxAnimateDuration, props.boxAnimateDuration) &&\n compareResponsiveValues(prevProps.boxAnimateDelay, props.boxAnimateDelay) &&\n compareResponsiveValues(prevProps.itemAnimateType, props.itemAnimateType) &&\n compareResponsiveValues(prevProps.itemAnimateDuration, props.itemAnimateDuration) &&\n compareResponsiveValues(prevProps.itemAnimateDelay, props.itemAnimateDelay) &&\n compareResponsiveValues(prevProps.itemStaggerDuration, props.itemStaggerDuration)\n )\n}\n\nconst exitedBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 0 },\n fadeLeft: { transform: 'translate3d(60px,0,0)', opacity: 0 },\n fadeRight: { transform: 'translate3d(-60px,0,0)', opacity: 0 },\n fadeDown: { transform: 'translate3d(0,-80px,0)', opacity: 0 },\n fadeUp: { transform: 'translate3d(0,80px,0)', opacity: 0 },\n blurIn: { filter: 'blur(20px)', opacity: 0 },\n scaleDown: {\n transform: 'scale(1.2)',\n opacity: 0,\n },\n scaleUp: {\n transform: 'scale(.75)',\n opacity: 0,\n },\n}\n\nconst enteredBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 1 },\n fadeLeft: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeRight: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeDown: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n fadeUp: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n blurIn: { filter: 'blur(0px)', opacity: 1 },\n scaleDown: {\n transform: 'scale(1)',\n opacity: 1,\n },\n scaleUp: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nexport function useBoxAnimation(\n boxElement: HTMLElement | null,\n responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void] {\n const isVisible = useElementOnScreen(boxElement, {\n root: null,\n rootMargin: `0px 0px -10% 0px`,\n threshold: 0.2,\n })\n const animationType = useMediaQuery(responsiveAnimationType) || DEFAULT_BOX_ANIMATE_TYPE\n const itemAnimationType = useMediaQuery(itemResponsiveAnimationType) || DEFAULT_ITEM_ANIMATE_TYPE\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const actualDelay = delay * 1000\n const actualDuration = duration * 1000\n\n const entered = {\n ...enteredBoxAnimationProperties[animationType],\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...enteredBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const exited = {\n ...exitedBoxAnimationProperties[animationType],\n transition: `all 0ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...exitedBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const [isEntered, setEntered] = useState(false)\n\n useEffect(() => {\n if (isVisible && !isEntered) setEntered(true)\n }, [isVisible, entered])\n\n const replayAnimation = useCallback(() => {\n setEntered(false)\n }, [])\n\n return [\n useStyle({\n '@media (prefers-reduced-motion: no-preference)': isEntered ? entered : exited,\n }),\n replayAnimation,\n ]\n}\n\nexport function useItemAnimation(\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n responsiveStagger: ResponsiveValue<number> | undefined,\n index: number,\n) {\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const stagger = useMediaQuery(responsiveStagger) || DEFAULT_ITEM_STAGGER_DURATION\n const delayFromStagger = responsiveStagger == null || index == null ? 0 : stagger * index\n const actualDelay = (delay + delayFromStagger) * 1000\n const actualDuration = duration * 1000\n\n return useStyle({\n '@media (prefers-reduced-motion: no-preference)': {\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n },\n })\n}\n","const clamp = (min: number, val: number, max: number): number => Math.min(Math.max(min, val), max)\n\nexport default clamp\n","import { useState, useRef, useCallback, ReactNode, CSSProperties } from 'react'\nimport clamp from '../../../../../utils/clamp'\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\n\nfunction isScrollable(element: HTMLElement) {\n const { overflow, overflowY, overflowX } =\n element.ownerDocument.defaultView!.getComputedStyle(element)\n\n return /(auto|scroll)/.test(overflow + overflowX + overflowY)\n}\n\nfunction getScrollParent(element: HTMLElement): HTMLElement {\n const { parentElement } = element\n\n if (!element || !parentElement) return element\n\n if (isScrollable(element)) return element\n\n return getScrollParent(parentElement)\n}\n\ntype Props = {\n strength: number | null | undefined\n children: (\n getParallaxProps: <P extends { style?: CSSProperties; [key: string]: unknown }>(props: P) => P,\n ) => ReactNode\n}\n\nexport default function Parallax({ strength, children, ...rest }: Props): JSX.Element {\n const container = useRef<HTMLDivElement>(null)\n const [containerScrollTop, setContainerScrollTop] = useState(strength == null ? 0 : strength)\n const lastScrollParentScrollTop = useRef(0)\n\n useIsomorphicLayoutEffect(() => {\n if (!container.current || strength == null || strength === 0) return undefined\n\n const containerDocument = container.current.ownerDocument\n const scrollParent = getScrollParent(container.current)\n const eventTarget =\n containerDocument.documentElement === scrollParent\n ? containerDocument.defaultView!\n : scrollParent\n\n lastScrollParentScrollTop.current = scrollParent.scrollTop\n setContainerScrollTop(strength)\n\n function handleScroll() {\n containerDocument.defaultView!.requestAnimationFrame(() => {\n if (!container.current) return\n\n const { top: containerTop, bottom: containerBottom } =\n container.current.getBoundingClientRect()\n const { top: scrollParentTop, bottom: scrollParentBottom } =\n scrollParent === containerDocument.documentElement\n ? { top: 0, bottom: containerDocument.defaultView!.innerHeight }\n : scrollParent.getBoundingClientRect()\n const { scrollTop: scrollParentScrollTop } =\n scrollParent === containerDocument.documentElement\n ? { scrollTop: containerDocument.defaultView!.pageYOffset }\n : scrollParent\n const scrollParentHeight = scrollParentBottom - scrollParentTop\n const scrollParentScrollDelta = scrollParentScrollTop - lastScrollParentScrollTop.current\n\n lastScrollParentScrollTop.current = scrollParentScrollTop\n\n setContainerScrollTop(scrollTop => {\n const isContainerVisible =\n containerTop < scrollParentTop + scrollParentHeight && containerBottom > scrollParentTop\n const containerScrollRemaining =\n scrollParentScrollDelta > 0 ? 2 * strength! - scrollTop : scrollTop\n const scrollParentScrollRemaining =\n scrollParentScrollDelta > 0\n ? scrollParentTop + containerBottom\n : scrollParentHeight - containerTop\n const parallaxRatio = containerScrollRemaining / scrollParentScrollRemaining\n const containerScrollDelta = isContainerVisible\n ? parallaxRatio * scrollParentScrollDelta\n : 0\n\n return clamp(0, scrollTop + containerScrollDelta, strength! * 2)\n })\n })\n }\n\n eventTarget.addEventListener('scroll', handleScroll)\n\n return () => eventTarget.removeEventListener('scroll', handleScroll)\n }, [strength])\n\n const getProps = useCallback(\n ({ style, ...restOfChildrenProps }: any) => ({\n ...restOfChildrenProps,\n style: {\n ...style,\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n ...(strength == null || strength === 0\n ? {}\n : {\n top: -strength,\n bottom: -strength,\n transform: `translate3d(0, ${containerScrollTop - strength}px, 0)`,\n }),\n },\n }),\n [strength, containerScrollTop],\n )\n\n return (\n <div\n {...rest}\n ref={container}\n style={{ position: 'absolute', top: 0, left: 0, right: 0, bottom: 0 }}\n >\n {children(getProps)}\n </div>\n )\n}\n","import { cx } from '@emotion/css'\nimport { useState, useRef, ComponentPropsWithoutRef, ForwardedRef, forwardRef } from 'react'\nimport ReactPlayer from 'react-player'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\n\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\n\nconst Container = forwardRef(function Container(\n { className, ...restOfProps }: ComponentPropsWithoutRef<'div'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n pointerEvents: 'none',\n overflow: 'hidden',\n }),\n className,\n )}\n />\n )\n})\n\nfunction Mask({\n backgroundColor,\n visible,\n}: {\n backgroundColor: string | undefined\n visible: boolean\n}) {\n return (\n <div\n className={useStyle({\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: backgroundColor,\n opacity: visible ? 1 : 0,\n transition: 'opacity 1s',\n })}\n />\n )\n}\n\nconst getScale = (element: HTMLElement, aspectRatio: number, zoom: number) => {\n const { offsetWidth: width, offsetHeight: height } = element\n const computedAspectRatio = width / height\n\n return Math.max(aspectRatio / computedAspectRatio, computedAspectRatio / aspectRatio) * zoom\n}\n\ntype Props = {\n url?: string\n aspectRatio?: number\n zoom?: number\n opacity?: number\n maskColor?: string\n}\n\nexport default function BackgroundVideo({\n url = '',\n aspectRatio = 16 / 9,\n zoom = 1,\n maskColor,\n opacity,\n}: Props): JSX.Element {\n const [ready, setReady] = useState(false)\n const [scale, setScale] = useState(1)\n const container = useRef<HTMLDivElement>(null)\n\n useIsomorphicLayoutEffect(() => {\n const { current: containerEl } = container\n\n if (!containerEl) return undefined\n\n const { defaultView } = containerEl.ownerDocument\n const handleResize = () => setScale(getScale(containerEl, aspectRatio, zoom))\n\n handleResize()\n\n defaultView!.addEventListener('resize', handleResize)\n\n return () => defaultView!.removeEventListener('resize', handleResize)\n }, [aspectRatio, zoom])\n\n if (!ReactPlayer.canPlay(url)) return <></>\n\n return (\n <Container ref={container}>\n {container.current && (\n <ReactPlayer\n url={url}\n config={{\n vimeo: { playerOptions: { background: true } },\n youtube: {\n playerVars: {\n origin: container.current.ownerDocument.defaultView?.location.origin,\n },\n },\n wistia: {\n options: {\n endVideoBehavior: 'loop',\n playbackRateControl: false,\n playbar: false,\n playButton: false,\n volumeControl: false,\n fullscreenButton: false,\n muted: true,\n },\n },\n }}\n playing\n loop\n muted\n controls={false}\n onReady={() => setReady(true)}\n style={{\n transform: `scale3d(${scale}, ${scale}, 1)`,\n opacity,\n }}\n width=\"100%\"\n height=\"100%\"\n />\n )}\n <Mask backgroundColor={maskColor} visible={!ready} />\n </Container>\n )\n}\n","import NextImage from 'next/image'\nimport type NextLegacyImageType from 'next/legacy/image'\n\nimport { BackgroundsPropControllerData, BackgroundsData } from '../../../../hooks'\nimport { ResponsiveValue } from '../../../../../prop-controllers'\nimport { ColorValue as Color } from '../../../../utils/types'\nimport { colorToString } from '../../../../utils/colorToString'\nimport Parallax from '../Parallax'\nimport BackgroundVideo from '../BackgroundVideo'\nimport { CSSObject } from '@emotion/css'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { responsiveStyle } from '../../../../utils/responsive-style'\nimport { major as nextMajorVersion } from '../../../../../next/next-version'\n\nconst NextLegacyImage = NextImage as typeof NextLegacyImageType\n\nfunction getColor(color: Color | null | undefined) {\n if (color == null) return 'black'\n\n if (color.swatch == null) {\n return colorToString({ ...color, swatch: { hue: 0, saturation: 0, lightness: 0 } })\n }\n\n return colorToString(color)\n}\n\ntype GradientStop = { color: Color | null | undefined; location: number }\n\nconst getStopsStyle = (stops: GradientStop[]) =>\n stops.map(({ color, location }) => `${getColor(color)} ${location}%`).join(',')\n\nconst absoluteFillStyle: CSSObject = {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n}\n\nconst containerStyle: CSSObject = {\n ...absoluteFillStyle,\n borderRadius: 'inherit',\n}\n\ntype Props = { backgrounds: BackgroundsPropControllerData | null | undefined }\n\nexport default function Backgrounds({ backgrounds }: Props): JSX.Element {\n if (backgrounds == null) return <></>\n\n return (\n <>\n {backgrounds.map(({ value, deviceId }) => {\n const visibility = backgrounds.map(v => ({\n deviceId: v.deviceId,\n value: v.deviceId === deviceId,\n }))\n\n return <BackgroundDeviceLayer key={deviceId} layer={value} visibility={visibility} />\n })}\n </>\n )\n}\n\ntype BackgroundLayerProps = {\n layer: BackgroundsData\n visibility: ResponsiveValue<boolean>\n}\n\nfunction BackgroundDeviceLayer({ layer, visibility }: BackgroundLayerProps) {\n const visibilityStyle = responsiveStyle([visibility], ([v]) => ({\n display: v === true ? 'block' : 'none',\n }))\n\n return (\n <div className={useStyle({ ...containerStyle, ...visibilityStyle, overflow: 'hidden' })}>\n {[...layer].reverse().map(bg => {\n if (bg.type === 'color') {\n return <ColorBackground key={bg.id} color={getColor(bg.payload)} />\n }\n\n if (bg.type === 'image' && bg.payload) {\n return <ImageBackground {...bg.payload} key={bg.id} />\n }\n\n if (bg.type === 'gradient' && bg.payload) {\n return (\n <GradientBackground\n {...bg.payload}\n key={bg.id}\n gradient={getStopsStyle(bg.payload.stops)}\n />\n )\n }\n\n if (bg.type === 'video' && bg.payload) {\n return (\n <VideoBackground\n {...bg.payload}\n key={bg.id}\n maskColor={getColor(bg.payload.maskColor)}\n />\n )\n }\n\n return null\n })}\n </div>\n )\n}\n\ntype ColorBackgroundProps = { color: string }\n\nfunction ColorBackground({ color }: ColorBackgroundProps) {\n return <div className={useStyle({ ...containerStyle, backgroundColor: color })} />\n}\n\nconst ImageBackgroundRepeat = {\n NoRepeat: 'no-repeat',\n RepeatX: 'repeat-x',\n RepeatY: 'repeat-y',\n Repeat: 'repeat',\n} as const\n\ntype ImageBackgroundRepeat = typeof ImageBackgroundRepeat[keyof typeof ImageBackgroundRepeat]\n\nconst ImageBackgroundSize = {\n Cover: 'cover',\n Contain: 'contain',\n Auto: 'auto',\n} as const\n\ntype ImageBackgroundSize = typeof ImageBackgroundSize[keyof typeof ImageBackgroundSize]\n\ntype ImageBackgroundProps = {\n publicUrl?: string\n position: { x: number; y: number }\n repeat?: ImageBackgroundRepeat\n size?: ImageBackgroundSize\n opacity?: number\n parallax?: number\n}\n\nfunction ImageBackground({\n publicUrl,\n position,\n repeat = ImageBackgroundRepeat.NoRepeat,\n size = ImageBackgroundSize.Cover,\n opacity,\n parallax,\n}: ImageBackgroundProps) {\n const backgroundPosition = `${position.x}% ${position.y}%`\n const containerClassName = useStyle(containerStyle)\n\n if (repeat === 'no-repeat' && size !== 'auto' && publicUrl != null) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ style: { opacity, overflow: 'hidden' } })}>\n {nextMajorVersion < 13 ? (\n <NextLegacyImage\n src={publicUrl}\n layout=\"fill\"\n objectPosition={backgroundPosition}\n objectFit={size}\n />\n ) : (\n <NextImage\n src={publicUrl}\n alt={''}\n fill\n sizes=\"100vw\"\n style={{\n objectPosition: backgroundPosition,\n objectFit: size,\n }}\n />\n )}\n </div>\n )}\n </Parallax>\n )\n }\n\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div\n className={containerClassName}\n {...getParallaxProps({\n style: {\n backgroundImage: publicUrl != null ? `url('${publicUrl}')` : undefined,\n backgroundPosition,\n backgroundRepeat: repeat,\n backgroundSize: size,\n opacity,\n },\n })}\n />\n )}\n </Parallax>\n )\n}\n\ntype GradientBackgroundProps = {\n gradient: string\n angle?: number\n isRadial?: boolean\n}\n\nfunction GradientBackground({\n gradient,\n isRadial = false,\n angle = Math.PI,\n}: GradientBackgroundProps) {\n return (\n <div\n className={useStyle({\n ...containerStyle,\n background: isRadial\n ? `radial-gradient(${gradient})`\n : `linear-gradient(${angle}rad, ${gradient})`,\n })}\n />\n )\n}\n\nconst BackgroundVideoAspectRatio = {\n Wide: 'wide',\n Standard: 'standard',\n} as const\n\ntype BackgroundVideoAspectRatio =\n typeof BackgroundVideoAspectRatio[keyof typeof BackgroundVideoAspectRatio]\n\nfunction getAspectRatio(aspectRatio: BackgroundVideoAspectRatio | null | undefined): number {\n switch (aspectRatio) {\n case 'wide':\n return 16 / 9\n\n case 'standard':\n return 4 / 3\n\n default:\n return 16 / 9\n }\n}\n\ntype VideoBackgroundProps = {\n url?: string\n aspectRatio?: BackgroundVideoAspectRatio\n maskColor: string\n zoom?: number\n opacity?: number\n parallax?: number\n}\n\nfunction VideoBackground({\n url,\n aspectRatio,\n maskColor,\n zoom,\n opacity,\n parallax,\n}: VideoBackgroundProps) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ className: useStyle(containerStyle) })}>\n <BackgroundVideo\n url={url}\n zoom={zoom}\n opacity={opacity}\n aspectRatio={getAspectRatio(aspectRatio)}\n maskColor={maskColor}\n />\n </div>\n )}\n </Parallax>\n )\n}\n","import { cx } from '@emotion/css'\nimport {\n Children,\n ComponentPropsWithoutRef,\n ElementType,\n forwardRef,\n ReactElement,\n Ref,\n useImperativeHandle,\n useState,\n} from 'react'\nimport { BackgroundsValue as BackgroundsPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useBackgrounds } from '../../hooks'\nimport Backgrounds from './components/Backgrounds'\n\ntype BaseProps = {\n backgrounds: BackgroundsPropControllerValue | null | undefined\n children: ReactElement<ElementType>\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport default forwardRef<HTMLDivElement | null, Props>(function BackgroundsContainer(\n { backgrounds, children, className, ...restOfProps }: Props,\n ref: Ref<HTMLDivElement | null>,\n) {\n const [handle, setHandle] = useState<HTMLDivElement | null>(null)\n\n useImperativeHandle(ref, () => handle, [handle])\n\n return (\n <div\n {...restOfProps}\n ref={setHandle}\n className={cx(\n useStyle({\n position: 'relative',\n width: '100%',\n margin: '0 auto',\n '> *': {\n borderRadius: 'inherit',\n height: 'inherit',\n },\n '> :last-child': {\n position: 'relative',\n },\n }),\n className,\n )}\n >\n <Backgrounds backgrounds={useBackgrounds(backgrounds)} />\n {Children.only(children)}\n </div>\n )\n})\n"],"names":["getBackgroundsFileIds","useFiles","getBackgroundsSwatchIds","useSwatches","useMemo","isNonNullable","gridItemIdentifierClassName","grid","index","columnGap","rowGap","className","itemAnimateDuration","itemAnimateDelay","itemStaggerDuration","restOfProps","gridItemClassName","useStyle","responsiveGridItem","animationClassName","useItemAnimation","cx","useElementOnScreen","element","options","isVisible","setIsVisible","useState","useEffect","observer","IntersectionObserver","intersectionCallback","observe","unobserve","entry","isIntersecting","a","b","isEqual","forEach","currentA","currentB","at","deviceId","value","prevProps","props","compareResponsiveValues","boxAnimateType","boxAnimateDuration","boxAnimateDelay","itemAnimateType","exitedBoxAnimationProperties","none","opacity","fadeIn","fadeLeft","transform","fadeRight","fadeDown","fadeUp","blurIn","filter","scaleDown","scaleUp","enteredBoxAnimationProperties","boxElement","responsiveAnimationType","responsiveDuration","responisveDelay","itemResponsiveAnimationType","root","rootMargin","threshold","animationType","useMediaQuery","DEFAULT_BOX_ANIMATE_TYPE","itemAnimationType","DEFAULT_ITEM_ANIMATE_TYPE","duration","DEFAULT_BOX_ANIMATE_DURATION","delay","DEFAULT_BOX_ANIMATE_DELAY","actualDelay","actualDuration","entered","transition","exited","isEntered","setEntered","replayAnimation","useCallback","responsiveStagger","stagger","DEFAULT_ITEM_STAGGER_DURATION","delayFromStagger","overflow","overflowY","overflowX","ownerDocument","defaultView","getComputedStyle","test","parentElement","isScrollable","getScrollParent","strength","children","rest","container","useRef","containerScrollTop","setContainerScrollTop","lastScrollParentScrollTop","useIsomorphicLayoutEffect","current","undefined","containerDocument","scrollParent","eventTarget","documentElement","scrollTop","requestAnimationFrame","top","containerTop","bottom","containerBottom","getBoundingClientRect","scrollParentTop","scrollParentBottom","innerHeight","scrollParentScrollTop","pageYOffset","scrollParentHeight","scrollParentScrollDelta","isContainerVisible","containerScrollRemaining","scrollParentScrollRemaining","parallaxRatio","containerScrollDelta","clamp","addEventListener","handleScroll","removeEventListener","getProps","style","restOfChildrenProps","position","left","right","Container","forwardRef","ref","pointerEvents","backgroundColor","visible","background","getScale","aspectRatio","zoom","offsetWidth","width","offsetHeight","height","computedAspectRatio","Math","max","url","maskColor","ready","setReady","scale","setScale","containerEl","handleResize","ReactPlayer","canPlay","_jsx","_Fragment","vimeo","playerOptions","youtube","playerVars","origin","location","wistia","endVideoBehavior","playbackRateControl","playbar","playButton","volumeControl","fullscreenButton","muted","NextLegacyImage","NextImage","color","swatch","colorToString","hue","saturation","lightness","getStopsStyle","stops","map","getColor","join","absoluteFillStyle","containerStyle","borderRadius","backgrounds","visibility","v","layer","visibilityStyle","responsiveStyle","display","reverse","bg","type","payload","id","ImageBackgroundRepeat","NoRepeat","RepeatX","RepeatY","Repeat","ImageBackgroundSize","Cover","Contain","Auto","publicUrl","repeat","size","parallax","backgroundPosition","x","y","containerClassName","getParallaxProps","nextMajorVersion","objectPosition","objectFit","backgroundImage","backgroundRepeat","backgroundSize","gradient","isRadial","angle","PI","getAspectRatio","handle","setHandle","useImperativeHandle","margin","useBackgrounds","Children","only"],"mappings":"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"}
@@ -30,30 +30,117 @@ var __objRest = (source, exclude) => {
30
30
  }
31
31
  return target;
32
32
  };
33
- var css = require("@emotion/css");
33
+ var React = require("react");
34
+ var scrollIntoView = require("scroll-into-view-if-needed");
35
+ var NextLink = require("next/link");
34
36
  var next = require("./index.cjs.js");
35
37
  var jsxRuntime = require("react/jsx-runtime");
36
- function GutterContainer(_a) {
38
+ function _interopDefaultLegacy(e) {
39
+ return e && typeof e === "object" && "default" in e ? e : { "default": e };
40
+ }
41
+ var scrollIntoView__default = /* @__PURE__ */ _interopDefaultLegacy(scrollIntoView);
42
+ var NextLink__default = /* @__PURE__ */ _interopDefaultLegacy(NextLink);
43
+ const Link = React.forwardRef(function Link2(_a, ref) {
37
44
  var _b = _a, {
38
- className,
39
- gutter,
40
- first,
41
- last
45
+ link,
46
+ onClick = () => {
47
+ }
42
48
  } = _b, restOfProps = __objRest(_b, [
43
- "className",
44
- "gutter",
45
- "first",
46
- "last"
49
+ "link",
50
+ "onClick"
47
51
  ]);
48
- return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadProps(__spreadValues({}, restOfProps), {
49
- className: css.cx(next.useStyle(next.responsiveStyle([gutter], ([gutter2 = {
50
- value: 0,
51
- unit: "px"
52
- }]) => ({
53
- paddingLeft: first ? "0px" : `${gutter2.value / 2}${gutter2.unit}`,
54
- paddingRight: last ? "0px" : `${gutter2.value / 2}${gutter2.unit}`
55
- }))), className)
52
+ var _a2;
53
+ const pageId = link && link.type === "OPEN_PAGE" ? link.payload.pageId : null;
54
+ const page = next.usePagePathnameSlice(pageId != null ? pageId : null);
55
+ const elementKey = (link == null ? void 0 : link.type) === "SCROLL_TO_ELEMENT" ? (_a2 = link.payload.elementIdConfig) == null ? void 0 : _a2.elementKey : null;
56
+ const elementId = next.useElementId(elementKey);
57
+ let useNextLink;
58
+ let href;
59
+ let target;
60
+ let block;
61
+ if (link) {
62
+ switch (link.type) {
63
+ case "OPEN_PAGE": {
64
+ if (page) {
65
+ useNextLink = true;
66
+ href = `/${page.pathname}`;
67
+ }
68
+ target = link.payload.openInNewTab ? "_blank" : "_self";
69
+ break;
70
+ }
71
+ case "OPEN_URL": {
72
+ useNextLink = true;
73
+ href = link.payload.url;
74
+ target = link.payload.openInNewTab ? "_blank" : "_self";
75
+ break;
76
+ }
77
+ case "SEND_EMAIL": {
78
+ useNextLink = false;
79
+ const {
80
+ to,
81
+ subject = "",
82
+ body = ""
83
+ } = link.payload;
84
+ if (to != null)
85
+ href = `mailto:${to}?subject=${subject}&body=${body}`;
86
+ break;
87
+ }
88
+ case "CALL_PHONE": {
89
+ useNextLink = false;
90
+ href = `tel:${link.payload.phoneNumber}`;
91
+ break;
92
+ }
93
+ case "SCROLL_TO_ELEMENT": {
94
+ useNextLink = false;
95
+ href = `#${elementId != null ? elementId : ""}`;
96
+ block = link.payload.block;
97
+ break;
98
+ }
99
+ default:
100
+ throw new RangeError(`Invalid link type "${link.type}."`);
101
+ }
102
+ }
103
+ function handleClick(event) {
104
+ onClick(event);
105
+ if (event.defaultPrevented)
106
+ return;
107
+ if (event.currentTarget.isContentEditable)
108
+ return event.preventDefault();
109
+ if (link && link.type === "SCROLL_TO_ELEMENT") {
110
+ let hash;
111
+ try {
112
+ if (href != null)
113
+ hash = new URL(`http://www.example.com/${href}`).hash;
114
+ } catch (error) {
115
+ console.error(`Link received invalid href: ${href}`, error);
116
+ }
117
+ if (href != null && hash != null && href === hash) {
118
+ event.preventDefault();
119
+ const view = event.view;
120
+ scrollIntoView__default["default"](view.document.querySelector(hash), {
121
+ behavior: "smooth",
122
+ block
123
+ });
124
+ if (view.location.hash !== hash)
125
+ view.history.pushState({}, "", hash);
126
+ }
127
+ }
128
+ }
129
+ if (useNextLink && href != null) {
130
+ return /* @__PURE__ */ jsxRuntime.jsx(NextLink__default["default"], __spreadProps(__spreadValues({}, restOfProps), {
131
+ ref,
132
+ target,
133
+ onClick: handleClick,
134
+ href,
135
+ legacyBehavior: false
136
+ }));
137
+ }
138
+ return /* @__PURE__ */ jsxRuntime.jsx("a", __spreadProps(__spreadValues({}, restOfProps), {
139
+ ref,
140
+ href,
141
+ target,
142
+ onClick: handleClick
56
143
  }));
57
- }
58
- exports.GutterContainer = GutterContainer;
144
+ });
145
+ exports.Link = Link;
59
146
  //# sourceMappingURL=index.cjs3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs3.js","sources":["../src/components/shared/GutterContainer/index.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { ResponsiveValue, Length } from '../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { responsiveStyle } from '../../utils/responsive-style'\n\ntype BaseProps = {\n className?: string\n gutter?: ResponsiveValue<Length>\n first: boolean\n last: boolean\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport default function GutterContainer({ className, gutter, first, last, ...restOfProps }: Props) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle(\n responsiveStyle([gutter] as const, ([gutter = { value: 0, unit: 'px' }]) => ({\n paddingLeft: first ? '0px' : `${gutter.value / 2}${gutter.unit}`,\n paddingRight: last ? '0px' : `${gutter.value / 2}${gutter.unit}`,\n })),\n ),\n className,\n )}\n />\n )\n}\n"],"names":["className","gutter","first","last","restOfProps","cx","useStyle","responsiveStyle","value","unit","paddingLeft","paddingRight"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAewC,yBAAA,IAA2D;AAA3D,eAAEA;AAAAA;AAAAA,IAAWC;AAAAA,IAAQC;AAAAA,IAAOC;AAAAA,MAA5B,IAAqCC,wBAArC,IAAqCA;AAAAA,IAAnCJ;AAAAA,IAAWC;AAAAA,IAAQC;AAAAA,IAAOC;AAAAA;AAClE,gFAEQC;IACJ,WAAWC,OACTC,cACEC,KAAAA,gBAAgB,CAACN,MAAD,GAAmB,CAAC,CAACA,UAAS;AAAA,MAAEO,OAAO;AAAA,MAAGC,MAAM;AAAA,IAAA,OAAa;AAAA,MAC3EC,aAAaR,QAAQ,QAAS,GAAED,QAAOO,QAAQ,IAAIP,QAAOQ;AAAAA,MAC1DE,cAAcR,OAAO,QAAS,GAAEF,QAAOO,QAAQ,IAAIP,QAAOQ;AAAAA,IAAAA,EAF7C,CADT,GAMRT,SAPW;AAAA,EAAA,EAHjB;AAcD;;"}
1
+ {"version":3,"file":"index.cjs3.js","sources":["../src/components/shared/Link/index.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useElementId } from '../../../runtimes/react'\nimport { usePagePathnameSlice } from '../../../runtimes/react/hooks/makeswift-api'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n // We don't want to use `next/link` with relative paths because Next.js will attempt to normalize\n // it and mess up the path.\n let useNextLink: boolean | undefined\n let href: string | undefined\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) {\n useNextLink = true\n\n href = `/${page.pathname}`\n }\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n useNextLink = true\n\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n useNextLink = false\n\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n useNextLink = false\n\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n useNextLink = false\n\n href = `#${elementId ?? ''}`\n\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n if (href != null) hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && hash != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n if (useNextLink && href != null) {\n return (\n <NextLink\n {...restOfProps}\n ref={ref}\n target={target}\n onClick={handleClick}\n href={href}\n // Next.js v12 has legacyBehavior set to true by default\n legacyBehavior={false}\n />\n )\n }\n\n // eslint-disable-next-line\n return <a {...restOfProps} ref={ref} href={href} target={target} onClick={handleClick} />\n})\n"],"names":["Link","forwardRef","ref","link","onClick","restOfProps","pageId","type","payload","page","usePagePathnameSlice","elementKey","elementIdConfig","elementId","useElementId","useNextLink","href","target","block","pathname","openInNewTab","url","to","subject","body","phoneNumber","RangeError","handleClick","event","defaultPrevented","currentTarget","isContentEditable","preventDefault","hash","URL","error","view","scrollIntoView","document","querySelector","behavior","location","history","pushState","NextLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeaA,MAAAA,OAAOC,MAAAA,WAAqC,eACvD,IACAC,KACA;AAFA,eAAEC;AAAAA;AAAAA,IAAMC,UAAU,MAAM;AAAA,IAAE;AAAA,MAA1B,IAA+BC,wBAA/B,IAA+BA;AAAAA,IAA7BF;AAAAA,IAAMC;AAAAA;;AAGR,QAAME,SAASH,QAAQA,KAAKI,SAAS,cAAcJ,KAAKK,QAAQF,SAAS;AACnEG,QAAAA,OAAOC,KAAAA,qBAAqBJ,0BAAU,IAAX;AACjC,QAAMK,aACJR,8BAAMI,UAAS,sBAAsBJ,YAAKK,QAAQI,oBAAbT,oBAA8BQ,aAAa;AAC5EE,QAAAA,YAAYC,kBAAaH,UAAD;AAI1BI,MAAAA;AACAC,MAAAA;AACAC,MAAAA;AACAC,MAAAA;AAEJ,MAAIf,MAAM;AACAA,YAAAA,KAAKI;AAAAA,WACN,aAAa;AAChB,YAAIE,MAAM;AACM,wBAAA;AAEdO,iBAAQ,IAAGP,KAAKU;AAAAA,QACjB;AAEQhB,iBAAAA,KAAKK,QAAQY,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,YAAY;AACD,sBAAA;AAEdJ,eAAOb,KAAKK,QAAQa;AAEXlB,iBAAAA,KAAKK,QAAQY,eAAe,WAAW;AAEhD;AAAA,MACD;AAAA,WAEI,cAAc;AACH,sBAAA;AAER,cAAA;AAAA,UAAEE;AAAAA,UAAIC,UAAU;AAAA,UAAIC,OAAO;AAAA,YAAOrB,KAAKK;AAE7C,YAAIc,MAAM;AAAc,iBAAA,UAASA,cAAcC,gBAAgBC;AAE/D;AAAA,MACD;AAAA,WAEI,cAAc;AACH,sBAAA;AAEN,eAAA,OAAMrB,KAAKK,QAAQiB;AAE3B;AAAA,MACD;AAAA,WAEI,qBAAqB;AACV,sBAAA;AAEdT,eAAQ,IAAGH,gCAAa;AAExBK,gBAAQf,KAAKK,QAAQU;AAErB;AAAA,MACD;AAAA;AAGO,cAAA,IAAIQ,WAAY,sBAAsBvB,KAAaI,QAAnD;AAAA;AAAA,EAEX;AAEQoB,uBAAYC,OAAsC;AACzDxB,YAAQwB,KAAD;AAEHA,QAAAA,MAAMC;AAAkB;AAOxBD,QAAAA,MAAME,cAAcC;AAAmB,aAAOH,MAAMI;AAEpD7B,QAAAA,QAAQA,KAAKI,SAAS,qBAAqB;AACzC0B,UAAAA;AAEA,UAAA;AACF,YAAIjB,QAAQ;AAAMiB,iBAAO,IAAIC,IAAK,0BAAyBlB,MAAlC,EAA0CiB;AAAAA,eAC5DE;AACCA,gBAAAA,MAAO,+BAA8BnB,QAAQmB,KAArD;AAAA,MACD;AAEGnB,UAAAA,QAAQ,QAAQiB,QAAQ,QAAQjB,SAASiB,MAAM;AACjDL,cAAMI,eAAN;AACMI,cAAAA,OAAOR,MAAMQ;AAEnBC,gCAAAA,WAAeD,KAAKE,SAASC,cAAcN,IAA5B,GAAoC;AAAA,UACjDO,UAAU;AAAA,UACVtB;AAAAA,QAAAA,CAFY;AAKVkB,YAAAA,KAAKK,SAASR,SAASA;AAAMG,eAAKM,QAAQC,UAAU,IAAI,IAAIV,IAA/B;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEGlB,MAAAA,eAAeC,QAAQ,MAAM;AAE7B,0CAAC4B,kBAAAA,YAAD,iCACMvC,cADN;AAAA,MAEE;AAAA,MACA;AAAA,MACA,SAASsB;AAAAA,MACT;AAAA,MAEA,gBAAgB;AAAA,IAAA,EARpB;AAAA,EAWD;AAGD,8EAActB;IAAa;AAAA,IAAU;AAAA,IAAY;AAAA,IAAgB,SAASsB;AAAAA,EAAAA,EAA1E;AACD,CA7H6B;;"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
33
+ var css = require("@emotion/css");
34
+ var next = require("./index.cjs.js");
35
+ var jsxRuntime = require("react/jsx-runtime");
36
+ function GutterContainer(_a) {
37
+ var _b = _a, {
38
+ className,
39
+ gutter,
40
+ first,
41
+ last
42
+ } = _b, restOfProps = __objRest(_b, [
43
+ "className",
44
+ "gutter",
45
+ "first",
46
+ "last"
47
+ ]);
48
+ return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadProps(__spreadValues({}, restOfProps), {
49
+ className: css.cx(next.useStyle(next.responsiveStyle([gutter], ([gutter2 = {
50
+ value: 0,
51
+ unit: "px"
52
+ }]) => ({
53
+ paddingLeft: first ? "0px" : `${gutter2.value / 2}${gutter2.unit}`,
54
+ paddingRight: last ? "0px" : `${gutter2.value / 2}${gutter2.unit}`
55
+ }))), className)
56
+ }));
57
+ }
58
+ exports.GutterContainer = GutterContainer;
59
+ //# sourceMappingURL=index.cjs4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs4.js","sources":["../src/components/shared/GutterContainer/index.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { ResponsiveValue, Length } from '../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { responsiveStyle } from '../../utils/responsive-style'\n\ntype BaseProps = {\n className?: string\n gutter?: ResponsiveValue<Length>\n first: boolean\n last: boolean\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport default function GutterContainer({ className, gutter, first, last, ...restOfProps }: Props) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle(\n responsiveStyle([gutter] as const, ([gutter = { value: 0, unit: 'px' }]) => ({\n paddingLeft: first ? '0px' : `${gutter.value / 2}${gutter.unit}`,\n paddingRight: last ? '0px' : `${gutter.value / 2}${gutter.unit}`,\n })),\n ),\n className,\n )}\n />\n )\n}\n"],"names":["className","gutter","first","last","restOfProps","cx","useStyle","responsiveStyle","value","unit","paddingLeft","paddingRight"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAewC,yBAAA,IAA2D;AAA3D,eAAEA;AAAAA;AAAAA,IAAWC;AAAAA,IAAQC;AAAAA,IAAOC;AAAAA,MAA5B,IAAqCC,wBAArC,IAAqCA;AAAAA,IAAnCJ;AAAAA,IAAWC;AAAAA,IAAQC;AAAAA,IAAOC;AAAAA;AAClE,gFAEQC;IACJ,WAAWC,OACTC,cACEC,KAAAA,gBAAgB,CAACN,MAAD,GAAmB,CAAC,CAACA,UAAS;AAAA,MAAEO,OAAO;AAAA,MAAGC,MAAM;AAAA,IAAA,OAAa;AAAA,MAC3EC,aAAaR,QAAQ,QAAS,GAAED,QAAOO,QAAQ,IAAIP,QAAOQ;AAAAA,MAC1DE,cAAcR,OAAO,QAAS,GAAEF,QAAOO,QAAQ,IAAIP,QAAOQ;AAAAA,IAAAA,EAF7C,CADT,GAMRT,SAPW;AAAA,EAAA,EAHjB;AAcD;;"}
package/dist/index.es.js CHANGED
@@ -36,22 +36,22 @@ var __publicField = (obj, key, value) => {
36
36
  };
37
37
  var _c;
38
38
  import * as React from "react";
39
- import { useEffect, createContext, useContext, useState, useMemo, useRef, Children, createElement, forwardRef, memo, useLayoutEffect, useCallback, Component, useImperativeHandle, Suspense } from "react";
39
+ import { useEffect, createContext, useContext, useState, useMemo, useRef, Children, createElement, forwardRef, memo, useCallback, Component, useImperativeHandle, Suspense } from "react";
40
40
  import { useSyncExternalStoreWithSelector } from "use-sync-external-store/shim/with-selector";
41
- import { g as getPropControllerDescriptors, i as isElementReference, a as getElementSwatchIds, b as getFileIds, d as getTypographyIds, e as getTableIds, f as getPageIds, h as getElementChildren, j as createDocumentReference, k as getBorderSwatchIds, l as isNonNullable, m as getBoxShadowsSwatchIds, n as getResponsiveColorSwatchIds, o as getComponentPropControllerDescriptors, p as getPropControllers, q as configureStore$1, r as getDocument, s as getElementId, t as getIsInBuilder, u as copyElementTree, c as createDocument, v as getReactComponent } from "./react-page.es.js";
42
- import { A as ActionTypes, f as introspectedResourcesFulfilled, g as apiResourceFulfilled, t as typographiesFulfilled, h as restoreAPIResourcesCache, j as registerDocumentEffect, k as registerComponentHandleEffect, l as mountComponentEffect, n as registerComponentEffect, o as registerReactComponentEffect } from "./actions.es.js";
43
41
  import dynamic from "next/dynamic";
44
- import { KeyUtils } from "slate";
42
+ import { g as getPropControllerDescriptors, i as isElementReference, a as getElementSwatchIds, b as getFileIds, d as getTypographyIds, e as getTableIds, f as getPageIds, h as getElementChildren, j as createDocumentReference, k as getBorderSwatchIds, l as isNonNullable, m as getBoxShadowsSwatchIds, n as getResponsiveColorSwatchIds, o as getComponentPropControllerDescriptors, p as getPropControllers, q as configureStore$1, r as getDocument, s as getElementId, t as getIsInBuilder, u as copyElementTree, v as getReactComponent } from "./react-page.es.js";
43
+ import { A as ActionTypes, f as introspectedResourcesFulfilled, g as apiResourceFulfilled, t as typographiesFulfilled, h as restoreAPIResourcesCache, j as registerComponentHandleEffect, k as mountComponentEffect, l as registerComponentEffect, n as registerReactComponentEffect } from "./actions.es.js";
44
+ import { cache, cx } from "@emotion/css";
45
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
45
46
  import { T as Types, E as ElementID, B as Backgrounds, W as Width, h as ResponsiveIconRadioGroup, M as Margin, P as Padding, i as Border, j as BorderRadius, k as Shadows, G as GapY, l as GapX, m as ResponsiveSelect, n as ResponsiveNumber, o as Checkbox, p as Grid, q as TextInput, L as Link, r as ResponsiveColor, s as TextStyle, t as Images, N as Number$1, D as Date$1, F as Font, u as ResponsiveLength, v as TextArea, w as Table, x as TableFormFields, y as Image, z as ResponsiveOpacity, A as NavigationLinks, H as SocialLinks, J as RichText, V as Video, K as StyleControlProperty, O as ImageControlValueFormat, I as ImageControlType, C as ColorControlType, Q as BorderPropControllerFormat, U as ShadowsPropControllerFormat, X as BorderRadiusPropControllerFormat, Y as MarginPropControllerFormat, Z as PaddingPropControllerFormat, _ as WidthPropControllerFormat, S as SlotControlType, a as StyleControlType } from "./slot.es.js";
47
+ import { S as SelectControlType, T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
48
+ import { C as ComboboxControlType } from "./combobox.es.js";
46
49
  import { S as ShapeControlType, L as ListControlType, b as LinkControlType } from "./control.es.js";
50
+ import { useSyncExternalStore } from "use-sync-external-store/shim";
51
+ import { KeyUtils } from "slate";
47
52
  import { createStore, applyMiddleware } from "redux";
48
53
  import thunk from "redux-thunk";
49
54
  import { A as APIResourceType } from "./types.es.js";
50
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
51
- import { cache, cx } from "@emotion/css";
52
- import { S as SelectControlType, T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
53
- import { C as ComboboxControlType } from "./combobox.es.js";
54
- import { useSyncExternalStore } from "use-sync-external-store/shim";
55
55
  import ColorHelper from "color";
56
56
  import scrollIntoView from "scroll-into-view-if-needed";
57
57
  import { g as getBox } from "./box-models.es.js";
@@ -647,17 +647,17 @@ class MakeswiftClient {
647
647
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.Snippet, snippetId);
648
648
  }
649
649
  }
650
- const Context$2 = createContext(new MakeswiftClient({
650
+ const Context$1 = createContext(new MakeswiftClient({
651
651
  uri: "https://api.makeswift.com/graphql"
652
652
  }));
653
653
  function useMakeswiftClient() {
654
- return useContext(Context$2);
654
+ return useContext(Context$1);
655
655
  }
656
656
  function MakeswiftProvider({
657
657
  client,
658
658
  children
659
659
  }) {
660
- return /* @__PURE__ */ jsx(Context$2.Provider, {
660
+ return /* @__PURE__ */ jsx(Context$1.Provider, {
661
661
  value: client,
662
662
  children
663
663
  });
@@ -929,10 +929,10 @@ Received "${apiKey}" instead.`);
929
929
  const json = await response.json();
930
930
  return json;
931
931
  }
932
- async createSnapshot(document2) {
932
+ async createSnapshot(document2, preview) {
933
933
  const client = new MakeswiftClient({ uri: new URL("graphql", this.apiOrigin).href });
934
934
  const cacheData = await client.prefetch(document2.data);
935
- return { document: document2, apiOrigin: this.apiOrigin.href, cacheData };
935
+ return { document: document2, apiOrigin: this.apiOrigin.href, cacheData, preview };
936
936
  }
937
937
  async getPageSnapshotByPageId(pageId, { preview = false } = {}) {
938
938
  const searchParams = new URLSearchParams({ preview: String(preview) });
@@ -943,7 +943,7 @@ Received "${apiKey}" instead.`);
943
943
  throw new Error(`Failed to get snapshot with error: "${response.statusText}"`);
944
944
  }
945
945
  const document2 = await response.json();
946
- return await this.createSnapshot(document2);
946
+ return await this.createSnapshot(document2, preview);
947
947
  }
948
948
  async getPageSnapshot(path, { preview } = {}) {
949
949
  const [page] = await this.getPages({ path });
@@ -1050,7 +1050,7 @@ class Document$1 extends NextDocument {
1050
1050
  });
1051
1051
  }
1052
1052
  }
1053
- const version = "0.4.2";
1053
+ const version = "0.5.1";
1054
1054
  function isErrorWithMessage(error) {
1055
1055
  return typeof error === "object" && error !== null && "message" in error && typeof error.message === "string";
1056
1056
  }
@@ -1068,7 +1068,7 @@ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com",
1068
1068
  Received "${apiKey}" instead.`);
1069
1069
  }
1070
1070
  return async function makeswiftApiHandler(req, res) {
1071
- var _a, _b;
1071
+ var _a;
1072
1072
  await new Promise((resolve2, reject) => {
1073
1073
  cors(req, res, (err) => {
1074
1074
  if (err instanceof Error)
@@ -1100,7 +1100,7 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
1100
1100
  if (typeof req.query.path !== "string") {
1101
1101
  return res.status(400).json({ message: "Bad Request" });
1102
1102
  }
1103
- const revalidate = (_a = res.revalidate) != null ? _a : res.unstable_revalidate;
1103
+ const revalidate = res.revalidate;
1104
1104
  if (typeof revalidate !== "function") {
1105
1105
  const message = `Cannot revalidate path "${req.query.path}" because \`revalidate\` function does not exist in API handler response. Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.
1106
1106
  Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable`;
@@ -1147,7 +1147,7 @@ Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-r
1147
1147
  }));
1148
1148
  }
1149
1149
  case "fonts": {
1150
- const fonts = (_b = await (getFonts == null ? void 0 : getFonts())) != null ? _b : [];
1150
+ const fonts = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1151
1151
  return res.json(fonts);
1152
1152
  }
1153
1153
  case "element-tree": {
@@ -1294,6 +1294,7 @@ const Page = memo(({
1294
1294
  return /* @__PURE__ */ jsx(RuntimeProvider, {
1295
1295
  client,
1296
1296
  rootElements: /* @__PURE__ */ new Map([[snapshot.document.id, snapshot.document.data]]),
1297
+ preview: snapshot.preview,
1297
1298
  children: /* @__PURE__ */ jsx(Page$1, {
1298
1299
  document: snapshot.document
1299
1300
  })
@@ -1838,11 +1839,11 @@ const Contrasts = Object.freeze({
1838
1839
  LIGHT: "light",
1839
1840
  DARK: "dark"
1840
1841
  });
1841
- const Context$1 = createContext({});
1842
+ const Context = createContext({});
1842
1843
  function useFormContext() {
1843
- return useContext(Context$1);
1844
+ return useContext(Context);
1844
1845
  }
1845
- const { Provider } = Context$1;
1846
+ const { Provider } = Context;
1846
1847
  function registerComponent$6(runtime) {
1847
1848
  return runtime.registerComponent(forwardNextDynamicRef((patch) => dynamic(() => patch(import("./Form.es.js")))), {
1848
1849
  type: MakeswiftComponentType.Form,
@@ -2819,8 +2820,35 @@ function useResponsiveColor(color) {
2819
2820
  return swatch == null ? null : __spreadProps(__spreadValues({}, rest), { value: { swatch, alpha } });
2820
2821
  }).filter(isNonNullable);
2821
2822
  }
2822
- const isSSR = typeof window === "undefined" || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);
2823
- const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;
2823
+ const DEVICE_QUERIES = DEVICES.map((device) => ({
2824
+ id: device.id,
2825
+ query: getDeviceMediaQuery(device).replace("@media", "")
2826
+ }));
2827
+ function subscribe(notify) {
2828
+ const cleanUpFns = DEVICE_QUERIES.map((q) => {
2829
+ const mediaQueryList = window.matchMedia(q.query);
2830
+ mediaQueryList.addEventListener("change", notify);
2831
+ return () => mediaQueryList.removeEventListener("change", notify);
2832
+ });
2833
+ return () => cleanUpFns.forEach((fn) => fn());
2834
+ }
2835
+ function useMediaQuery(responsiveValue) {
2836
+ const getServerSnapshot = () => {
2837
+ var _a;
2838
+ return (_a = findDeviceOverride(responsiveValue, DEVICES[0].id)) == null ? void 0 : _a.value;
2839
+ };
2840
+ function getSnapshot() {
2841
+ var _a;
2842
+ const deviceId = DEVICE_QUERIES.reduce((matchedDevice, deviceQueries) => {
2843
+ if (window.matchMedia(deviceQueries.query).matches) {
2844
+ return deviceQueries.id;
2845
+ }
2846
+ return matchedDevice;
2847
+ }, DEVICE_QUERIES[0].id);
2848
+ return (_a = findDeviceOverride(responsiveValue, deviceId)) == null ? void 0 : _a.value;
2849
+ }
2850
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
2851
+ }
2824
2852
  const getIndexes = (spans, index) => {
2825
2853
  const flattened = spans.reduce((a, s) => a.concat(s), []);
2826
2854
  if (index < 0 || index > flattened.length)
@@ -3726,47 +3754,16 @@ function createReactRuntime(store) {
3726
3754
  }
3727
3755
  const ReactRuntime = createReactRuntime(storeContextDefaultValue);
3728
3756
  registerBuiltinComponents(ReactRuntime);
3729
- const Context = createContext(storeContextDefaultValue);
3730
- function RuntimeProvider({
3731
- client,
3732
- children,
3733
- rootElements
3734
- }) {
3735
- const [store, setStore] = useState(() => {
3736
- const store2 = configureStore$1({
3737
- preloadedState: storeContextDefaultValue.getState(),
3738
- rootElements
3739
- });
3740
- return store2;
3741
- });
3742
- useEffect(() => {
3743
- var _a;
3744
- const unregisterDocuments = Array.from((_a = rootElements == null ? void 0 : rootElements.entries()) != null ? _a : []).map(([documentKey, rootElement]) => store.dispatch(registerDocumentEffect(createDocument(documentKey, rootElement))));
3745
- return () => {
3746
- unregisterDocuments.forEach((unregisterDocument) => {
3747
- unregisterDocument();
3748
- });
3749
- };
3750
- }, [store, rootElements]);
3751
- useEffect(() => {
3752
- const isInBuilder = window.parent !== window;
3753
- if (isInBuilder)
3754
- setReactBuilderPreviewStore();
3755
- async function setReactBuilderPreviewStore() {
3756
- const ReactBuilderPreview = await import("./react-builder-preview.es.js");
3757
- setStore((store2) => ReactBuilderPreview.configureStore({
3758
- preloadedState: store2.getState(),
3759
- client
3760
- }));
3761
- }
3762
- }, [client]);
3763
- return /* @__PURE__ */ jsx(Context.Provider, {
3764
- value: store,
3765
- children: /* @__PURE__ */ jsx(MakeswiftProvider, {
3766
- client,
3767
- children
3768
- })
3769
- });
3757
+ const StoreContext = createContext(storeContextDefaultValue);
3758
+ const PreviewProvider = dynamic(() => import("./PreviewProvider.es.js"));
3759
+ const LiveProvider = dynamic(() => import("./LiveProvider.es.js"));
3760
+ function RuntimeProvider(_j) {
3761
+ var _k = _j, {
3762
+ preview
3763
+ } = _k, props = __objRest(_k, [
3764
+ "preview"
3765
+ ]);
3766
+ return preview ? /* @__PURE__ */ jsx(PreviewProvider, __spreadValues({}, props)) : /* @__PURE__ */ jsx(LiveProvider, __spreadValues({}, props));
3770
3767
  }
3771
3768
  const PageContext = createContext(null);
3772
3769
  function usePageIdOrNull() {
@@ -3792,7 +3789,7 @@ function useDocumentKey() {
3792
3789
  return useContext(DocumentContext);
3793
3790
  }
3794
3791
  function useStore() {
3795
- return useContext(Context);
3792
+ return useContext(StoreContext);
3796
3793
  }
3797
3794
  function useSelector(selector) {
3798
3795
  const store = useStore();
@@ -3812,7 +3809,7 @@ function useIsInBuilder() {
3812
3809
  return useSelector((state) => getIsInBuilder(state));
3813
3810
  }
3814
3811
  function useDispatch() {
3815
- const store = useContext(Context);
3812
+ const store = useContext(StoreContext);
3816
3813
  return store.dispatch;
3817
3814
  }
3818
3815
  const originalError = console.error;
@@ -3932,5 +3929,5 @@ const DocumentReference = memo(forwardRef(function DocumentReference2({
3932
3929
  document: document2
3933
3930
  });
3934
3931
  }));
3935
- export { PreviewModeScript as $, Alignments as A, useFile as B, Contrasts as C, DocumentReference as D, Element as E, DEVICES as F, findDeviceOverride as G, serializeStyles as H, insertStyles as I, useTypography as J, useSwatches as K, shallowMergeFallbacks as L, MakeswiftComponentType as M, useFiles as N, getDeviceMediaQuery as O, PageProvider as P, usePagePathnameSlice as Q, RuntimeProvider as R, Shapes as S, useElementId as T, deepEqual as U, MakeswiftClient as V, getStaticPaths as W, getStaticProps as X, getServerSideProps as Y, Page as Z, Makeswift as _, ReactRuntime as a, Document$1 as a0, MakeswiftApiHandler as a1, forwardNextDynamicRef as a2, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useStyle as n, responsiveWidth as o, responsiveTextStyle as p, colorToString as q, responsiveStyle as r, useIsomorphicLayoutEffect as s, Sizes as t, useIsInBuilder as u, useFormContext as v, responsiveGridItem as w, useTable as x, useMakeswiftClient as y, Provider as z };
3932
+ export { Page as $, Alignments as A, useFile as B, Contrasts as C, DocumentReference as D, Element as E, DEVICES as F, findDeviceOverride as G, serializeStyles as H, insertStyles as I, useTypography as J, useSwatches as K, shallowMergeFallbacks as L, MakeswiftComponentType as M, useFiles as N, usePagePathnameSlice as O, PageProvider as P, useElementId as Q, RuntimeProvider as R, Shapes as S, deepEqual as T, storeContextDefaultValue as U, StoreContext as V, MakeswiftProvider as W, MakeswiftClient as X, getStaticPaths as Y, getStaticProps as Z, getServerSideProps as _, ReactRuntime as a, Makeswift as a0, PreviewModeScript as a1, Document$1 as a2, MakeswiftApiHandler as a3, forwardNextDynamicRef as a4, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, useMediaQuery as m, Page$1 as n, useStyle as o, responsiveWidth as p, responsiveTextStyle as q, responsiveStyle as r, colorToString as s, Sizes as t, useIsInBuilder as u, useFormContext as v, responsiveGridItem as w, useTable as x, useMakeswiftClient as y, Provider as z };
3936
3933
  //# sourceMappingURL=index.es.js.map