@makeswift/runtime 0.11.7 → 0.11.9

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.
@@ -677,7 +677,8 @@ function ImageBackground({
677
677
  repeat = ImageBackgroundRepeat.NoRepeat,
678
678
  size = ImageBackgroundSize.Cover,
679
679
  opacity,
680
- parallax
680
+ parallax,
681
+ priority
681
682
  }) {
682
683
  const backgroundPosition = `${position.x}% ${position.y}%`;
683
684
  const containerClassName = reactPage.useStyle(containerStyle);
@@ -694,7 +695,8 @@ function ImageBackground({
694
695
  src: publicUrl,
695
696
  layout: "fill",
696
697
  objectPosition: backgroundPosition,
697
- objectFit: size
698
+ objectFit: size,
699
+ priority
698
700
  }) : /* @__PURE__ */ jsxRuntime.jsx(NextImage__default["default"], {
699
701
  src: publicUrl,
700
702
  alt: "",
@@ -703,7 +705,8 @@ function ImageBackground({
703
705
  style: {
704
706
  objectPosition: backgroundPosition,
705
707
  objectFit: size
706
- }
708
+ },
709
+ priority
707
710
  })
708
711
  }))
709
712
  });
@@ -1 +1 @@
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'\nimport { match, P } from 'ts-pattern'\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) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find(f => f && f.id === imageId)\n return (\n file && {\n ...bg,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n }\n \n if (bg.type === 'image-v1' && bg.payload != null) {\n return match(bg)\n .with(\n {\n payload: { image: { type: 'external-file', width: P.number, height: P.number } },\n },\n val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: { width: image.width, height: image.height },\n },\n }\n },\n )\n .with({ payload: { image: { type: 'external-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: null,\n },\n }\n })\n .with({ payload: { image: { type: 'makeswift-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n const file = files.find(f => f && f.id === image.id)\n return (\n file && {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n })\n .otherwise(() => null)\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 { useResponsiveGridItem } 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(useResponsiveGridItem({ 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, useRef } 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\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\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 responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\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 setElement,\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 { useResponsiveStyle } 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 = useResponsiveStyle([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} 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>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\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","match","P","isNonNullable","gridItemIdentifierClassName","grid","index","columnGap","rowGap","className","itemAnimateDuration","itemAnimateDelay","itemStaggerDuration","restOfProps","gridItemClassName","useStyle","useResponsiveGridItem","animationClassName","useItemAnimation","cx","options","isVisible","setIsVisible","useState","intersectionObserverRef","useRef","setElement","useCallback","element","observer","IntersectionObserver","entry","isIntersecting","observe","current","disconnect","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","responsiveAnimationType","responsiveDuration","responisveDelay","itemResponsiveAnimationType","useElementOnScreen","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","useEffect","replayAnimation","responsiveStagger","stagger","DEFAULT_ITEM_STAGGER_DURATION","delayFromStagger","overflow","overflowY","overflowX","ownerDocument","defaultView","getComputedStyle","test","parentElement","isScrollable","getScrollParent","strength","children","rest","container","containerScrollTop","setContainerScrollTop","lastScrollParentScrollTop","useIsomorphicLayoutEffect","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","useResponsiveStyle","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","margin","useBackgrounds","Children","only"],"mappings":"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"}
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'\nimport { match, P } from 'ts-pattern'\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) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find(f => f && f.id === imageId)\n return (\n file && {\n ...bg,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n }\n \n if (bg.type === 'image-v1' && bg.payload != null) {\n return match(bg)\n .with(\n {\n payload: { image: { type: 'external-file', width: P.number, height: P.number } },\n },\n val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: { width: image.width, height: image.height },\n },\n }\n },\n )\n .with({ payload: { image: { type: 'external-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: null,\n },\n }\n })\n .with({ payload: { image: { type: 'makeswift-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n const file = files.find(f => f && f.id === image.id)\n return (\n file && {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n })\n .otherwise(() => null)\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 { useResponsiveGridItem } 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(useResponsiveGridItem({ 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, useRef } 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\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\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 responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\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 setElement,\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 { useResponsiveStyle } 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 = useResponsiveStyle([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 priority?: boolean\n}\n\nfunction ImageBackground({\n publicUrl,\n position,\n repeat = ImageBackgroundRepeat.NoRepeat,\n size = ImageBackgroundSize.Cover,\n opacity,\n parallax,\n priority,\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 priority={priority}\n />\n ) : (\n <NextImage\n src={publicUrl}\n alt={''}\n fill\n sizes=\"100vw\"\n style={{\n objectPosition: backgroundPosition,\n objectFit: size,\n }}\n priority={priority}\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} 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>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\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","match","P","isNonNullable","gridItemIdentifierClassName","grid","index","columnGap","rowGap","className","itemAnimateDuration","itemAnimateDelay","itemStaggerDuration","restOfProps","gridItemClassName","useStyle","useResponsiveGridItem","animationClassName","useItemAnimation","cx","options","isVisible","setIsVisible","useState","intersectionObserverRef","useRef","setElement","useCallback","element","observer","IntersectionObserver","entry","isIntersecting","observe","current","disconnect","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","responsiveAnimationType","responsiveDuration","responisveDelay","itemResponsiveAnimationType","useElementOnScreen","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","useEffect","replayAnimation","responsiveStagger","stagger","DEFAULT_ITEM_STAGGER_DURATION","delayFromStagger","overflow","overflowY","overflowX","ownerDocument","defaultView","getComputedStyle","test","parentElement","isScrollable","getScrollParent","strength","children","rest","container","containerScrollTop","setContainerScrollTop","lastScrollParentScrollTop","useIsomorphicLayoutEffect","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","useResponsiveStyle","display","reverse","bg","type","payload","id","ImageBackgroundRepeat","NoRepeat","RepeatX","RepeatY","Repeat","ImageBackgroundSize","Cover","Contain","Auto","publicUrl","repeat","size","parallax","priority","backgroundPosition","x","y","containerClassName","getParallaxProps","nextMajorVersion","objectPosition","objectFit","backgroundImage","backgroundRepeat","backgroundSize","gradient","isRadial","angle","PI","getAspectRatio","margin","useBackgrounds","Children","only"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -213,7 +213,7 @@ function fetchAPIResource(resourceType, resourceId, locale) {
213
213
  break;
214
214
  }
215
215
  case APIResourceType.PagePathnameSlice:
216
- resource = await fetchJson(`/api/makeswift/page-pathname-slices/${resourceId}`);
216
+ resource = await fetchJson(`/api/makeswift/page-pathname-slices/${resourceId}?locale=${locale}`);
217
217
  break;
218
218
  case APIResourceType.Table:
219
219
  resource = await fetchJson(`/api/makeswift/tables/${resourceId}`);
@@ -263,13 +263,6 @@ const FileFragment = `
263
263
  }
264
264
  }
265
265
  `;
266
- const PagePathnameSliceFragment = `
267
- fragment PagePathnameSlice on PagePathnameSlice {
268
- __typename
269
- id
270
- pathname
271
- }
272
- `;
273
266
  const TableFragment = `
274
267
  fragment Table on Table {
275
268
  __typename
@@ -297,22 +290,17 @@ const TableFragment = `
297
290
  }
298
291
  `;
299
292
  const IntrospectedResourcesQuery = `
300
- query IntrospectedResources($fileIds: [ID!]!, $pageIds: [ID!]!, $tableIds: [ID!]!) {
293
+ query IntrospectedResources($fileIds: [ID!]!, $tableIds: [ID!]!) {
301
294
  files(ids: $fileIds) {
302
295
  ...File
303
296
  }
304
297
 
305
- pagePathnamesById(ids: $pageIds) {
306
- ...PagePathnameSlice
307
- }
308
-
309
298
  tables(ids: $tableIds) {
310
299
  ...Table
311
300
  }
312
301
  }
313
302
 
314
303
  ${FileFragment}
315
- ${PagePathnameSliceFragment}
316
304
  ${TableFragment}
317
305
  `;
318
306
  const FileQuery = `
@@ -324,15 +312,6 @@ const FileQuery = `
324
312
 
325
313
  ${FileFragment}
326
314
  `;
327
- const PagePathnamesByIdQuery = `
328
- query PagePathnamesById($pageIds: [ID!]!) {
329
- pagePathnamesById(ids: $pageIds) {
330
- ...PagePathnameSlice
331
- }
332
- }
333
-
334
- ${PagePathnameSliceFragment}
335
- `;
336
315
  const TableQuery = `
337
316
  query Table($tableId: ID!) {
338
317
  table(id: $tableId) {
@@ -423,7 +402,7 @@ class MakeswiftClient {
423
402
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.PagePathnameSlice, pageId);
424
403
  }
425
404
  async fetchPagePathnameSlice(pageId) {
426
- return await this.makeswiftApiClient.dispatch(fetchAPIResource(APIResourceType.PagePathnameSlice, pageId));
405
+ return await this.makeswiftApiClient.dispatch(fetchAPIResource(APIResourceType.PagePathnameSlice, pageId, this.locale));
427
406
  }
428
407
  readTable(tableId) {
429
408
  return getAPIResource(this.makeswiftApiClient.getState(), APIResourceType.Table, tableId);
@@ -779,6 +758,20 @@ if (window.parent !== window) {
779
758
  })]
780
759
  });
781
760
  }
761
+ const pagePathnameSlicesAPISchema = z.array(z.object({
762
+ id: z.string(),
763
+ basePageId: z.string(),
764
+ pathname: z.string(),
765
+ __typename: z.literal("PagePathnameSlice")
766
+ }).nullable());
767
+ const getPageAPISchema = z.object({
768
+ pathname: z.string(),
769
+ locale: z.string(),
770
+ alternate: z.array(z.object({
771
+ pathname: z.string(),
772
+ locale: z.string()
773
+ }))
774
+ });
782
775
  class Makeswift {
783
776
  constructor(apiKey, {
784
777
  apiOrigin = "https://api.makeswift.com",
@@ -832,6 +825,25 @@ Received "${apiKey}" instead.`);
832
825
  const json = await response.json();
833
826
  return json;
834
827
  }
828
+ async getPage(pathname, {
829
+ preview: previewOverride = false,
830
+ locale: localeInput
831
+ } = {}) {
832
+ var _a;
833
+ const siteVersion = (_a = this.siteVersion) != null ? _a : previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live;
834
+ const searchParams = new URLSearchParams();
835
+ if (localeInput)
836
+ searchParams.set("locale", localeInput);
837
+ const response = await this.fetch(`v1/pages/${encodeURIComponent(pathname)}?${searchParams.toString()}`, { headers: { "Makeswift-Site-Version": siteVersion } });
838
+ if (!response.ok) {
839
+ if (response.status === 404)
840
+ return null;
841
+ console.error("Failed to get page snapshot", await response.json());
842
+ throw new Error(`Failed to get page snapshot with error: "${response.statusText}"`);
843
+ }
844
+ const json = await response.json();
845
+ return getPageAPISchema.parse(json);
846
+ }
835
847
  async getTypographies(typographyIds, preview) {
836
848
  var _a;
837
849
  const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/typographies/bulk`, this.apiOrigin);
@@ -944,15 +956,12 @@ Received "${apiKey}" instead.`);
944
956
  swatchIds.add(swatchId);
945
957
  });
946
958
  });
947
- const { swatches, files, tables, pagePathnamesById } = await this.getIntrospectedResources({
959
+ const pagePathnames = await this.getPagePathnameSlices([...pageIds], { preview, locale });
960
+ const { swatches, files, tables } = await this.getIntrospectedResources({
948
961
  swatchIds: [...swatchIds],
949
962
  fileIds: [...fileIds],
950
- tableIds: [...tableIds],
951
- pageIds: [...pageIds]
963
+ tableIds: [...tableIds]
952
964
  }, preview);
953
- const pagePathnameSlices = pagePathnamesById.map((pagePathnameSlice) => pagePathnameSlice && __spreadProps(__spreadValues({}, pagePathnameSlice), {
954
- id: Buffer.from(`Page:${pagePathnameSlice.id}`).toString("base64")
955
- }));
956
965
  const cacheData = {
957
966
  [APIResourceType.Swatch]: [...swatchIds].map((id) => {
958
967
  var _a2;
@@ -986,7 +995,7 @@ Received "${apiKey}" instead.`);
986
995
  var _a2;
987
996
  return {
988
997
  id,
989
- value: (_a2 = pagePathnameSlices.find((pagePathnameSlice) => (pagePathnameSlice == null ? void 0 : pagePathnameSlice.id) === id)) != null ? _a2 : null
998
+ value: (_a2 = pagePathnames.find((pagePathnameSlice) => (pagePathnameSlice == null ? void 0 : pagePathnameSlice.id) === id)) != null ? _a2 : null
990
999
  };
991
1000
  }),
992
1001
  [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({
@@ -1078,10 +1087,37 @@ Received "${apiKey}" instead.`);
1078
1087
  const localizedGlobalElement = await response.json();
1079
1088
  return localizedGlobalElement;
1080
1089
  }
1081
- async getPagePathnameSlice(pageId) {
1090
+ async getPagePathnameSlices(pageIds, { preview: previewOverride = false, locale } = {}) {
1091
+ var _a;
1092
+ const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/page-pathname-slices/bulk`, this.apiOrigin);
1093
+ pageIds.forEach((id) => url.searchParams.append("ids", id));
1094
+ if (locale != null)
1095
+ url.searchParams.set("locale", locale);
1096
+ const response = await this.fetch(url.pathname + url.search, {
1097
+ headers: {
1098
+ "Makeswift-Site-Version": (_a = this.siteVersion) != null ? _a : previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live
1099
+ }
1100
+ });
1101
+ if (!response.ok) {
1102
+ console.error("Failed to get page pathname slices", await response.json());
1103
+ return [];
1104
+ }
1105
+ const json = await response.json();
1106
+ const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json);
1107
+ return pagePathnameSlices.map((pagePathnameSlice) => {
1108
+ if (pagePathnameSlice == null)
1109
+ return null;
1110
+ return {
1111
+ id: pagePathnameSlice.basePageId,
1112
+ pathname: pagePathnameSlice.pathname,
1113
+ __typename: pagePathnameSlice.__typename
1114
+ };
1115
+ });
1116
+ }
1117
+ async getPagePathnameSlice(pageId, { preview = false, locale } = {}) {
1082
1118
  var _a;
1083
- const result = await this.graphqlClient.request(PagePathnamesByIdQuery, { pageIds: [pageId] });
1084
- return (_a = result.pagePathnamesById.at(0)) != null ? _a : null;
1119
+ const pagePathnameSlices = await this.getPagePathnameSlices([pageId], { preview, locale });
1120
+ return (_a = pagePathnameSlices.at(0)) != null ? _a : null;
1085
1121
  }
1086
1122
  async getTable(tableId) {
1087
1123
  const result = await this.graphqlClient.request(TableQuery, { tableId });
@@ -1170,7 +1206,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1170
1206
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1171
1207
  return res.json(fonts2);
1172
1208
  }
1173
- const version = "0.11.7";
1209
+ const version = "0.11.9";
1174
1210
  async function handler(req, res, { apiKey, siteVersions }) {
1175
1211
  if (req.query.secret !== apiKey) {
1176
1212
  return res.status(401).json({ message: "Unauthorized" });
@@ -1359,7 +1395,8 @@ Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/d
1359
1395
  return client.getLocalizedGlobalElement(m.params.globalElementId, m.params.locale).then((resource) => resource === null ? res.json({ message: "Not Found" }) : res.json(resource));
1360
1396
  }
1361
1397
  if (m = matches("/page-pathname-slices/:id")) {
1362
- return client.getPagePathnameSlice(m.params.id).then(handleResource);
1398
+ const locale = typeof req.query.locale === "string" ? req.query.locale : void 0;
1399
+ return client.getPagePathnameSlice(m.params.id, { locale }).then(handleResource);
1363
1400
  }
1364
1401
  if (m = matches("/tables/:id")) {
1365
1402
  return client.getTable(m.params.id).then(handleResource);
@@ -2119,7 +2156,8 @@ function registerComponent$5(runtime) {
2119
2156
  border: Border({ format: Border.Format.ClassName }),
2120
2157
  borderRadius: BorderRadius({ format: BorderRadius.Format.ClassName }),
2121
2158
  boxShadow: Shadows({ format: Shadows.Format.ClassName }),
2122
- opacity: ResponsiveOpacity()
2159
+ opacity: ResponsiveOpacity(),
2160
+ priority: Checkbox({ label: "Priority" })
2123
2161
  }
2124
2162
  });
2125
2163
  }