@makeswift/runtime 0.2.2 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es2.js","sources":["../src/components/hooks/useBackgrounds.ts","../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 { FILES_BY_ID, SWATCHES_BY_ID } from '../utils/queries'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport { BackgroundsValue as ResponsiveBackgroundsValue } from '../../prop-controllers/descriptors'\nimport { useQuery } from '../../api/react'\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\ntype 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 =\n value == null\n ? []\n : value\n .map(({ value: backgrounds }) =>\n backgrounds\n .map(background =>\n background.type === 'image' && background.payload != null\n ? background.payload.imageId\n : null,\n )\n .filter(isNonNullable)\n .reduce((a, b) => a.concat(b), [] as string[]),\n )\n .reduce((a, b) => a.concat(b), [])\n const swatchIds =\n value == null\n ? []\n : value\n .map(({ value: backgrounds }) =>\n backgrounds\n .map(background => {\n if (background.type === 'color' && background.payload != null) {\n return [background.payload.swatchId]\n }\n\n if (background.type === 'gradient' && background.payload != null) {\n return background.payload.stops\n .map(stop => stop.color && stop.color.swatchId)\n .filter(isNonNullable)\n }\n\n if (background.type === 'video' && background.payload != null) {\n return [background.payload.maskColor && background.payload.maskColor.swatchId]\n }\n\n return null\n })\n .filter(isNonNullable)\n .reduce((a, b) => a.concat(b), []),\n )\n .reduce((a, b) => a.concat(b), [])\n .filter(isNonNullable)\n const skip = value == null\n const filesResult = useQuery(FILES_BY_ID, {\n skip: skip || fileIds.length === 0,\n variables: { ids: fileIds },\n })\n const swatchesResult = useQuery(SWATCHES_BY_ID, {\n skip: skip || swatchIds.length === 0,\n variables: { ids: swatchIds },\n })\n\n return useMemo(() => {\n const { data: filesData = {} } = filesResult\n const { data: swatchesData = {} } = swatchesResult\n\n if (value == null || filesResult.error != null || swatchesResult.error != null) {\n return null\n }\n\n const { files = [] } = filesData\n const { swatches = [] } = swatchesData\n\n return value.map(({ value: backgrounds, ...restOfValue }) => ({\n ...restOfValue,\n value: backgrounds\n .map(bg => {\n if (bg.type === 'image' && bg.payload != null && bg.payload.imageId != null) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find((f: any) => 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.find((s: any) => 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.find((s: any) => 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: any) => 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(Boolean),\n }))\n }, [filesResult, swatchesResult, value])\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 }) => ({\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 { useState, useRef } from 'react'\nimport ReactPlayer from 'react-player'\nimport styled from 'styled-components'\n\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\n\nconst Container = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n overflow: hidden;\n`\n\nconst Mask = styled.div<{ backgroundColor: string | undefined; visible: boolean }>`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: ${props => props.backgroundColor};\n opacity: ${props => (props.visible ? 1 : 0)};\n transition: opacity 1s;\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 styled, { css } from 'styled-components'\nimport NextImage from 'next/image'\n\nimport { cssMediaRules } from '../../../../utils/cssMediaRules'\nimport { BackgroundsPropControllerData } 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'\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\ntype AspectRatio = 'wide' | 'standard'\n\nconst getAspectRatio = (aspectRatio: AspectRatio) => {\n switch (aspectRatio) {\n case 'wide':\n return 16 / 9\n case 'standard':\n return 4 / 3\n default:\n return 16 / 9\n }\n}\n\nconst AbsoluteFill = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n`\n\nconst Container = styled(AbsoluteFill)`\n border-radius: inherit;\n`\n\nconst BackgroundsContainer = styled(Container)<{ visibility: ResponsiveValue<boolean> }>`\n overflow: hidden;\n ${p =>\n cssMediaRules(\n [p.visibility],\n ([visibility]) => css`\n display: ${visibility === true ? 'block' : 'none'};\n `,\n )}\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 (\n <BackgroundsContainer key={deviceId} visibility={visibility}>\n {[...value].reverse().map(bg => {\n if (bg.type === 'color') {\n return (\n <Container\n key={bg.id}\n style={{\n backgroundColor: getColor(bg.payload),\n }}\n />\n )\n }\n\n if (bg.type === 'image' && bg.payload) {\n const {\n publicUrl,\n position,\n repeat = 'no-repeat',\n size = 'cover',\n opacity,\n parallax,\n } = bg.payload\n const backgroundPosition = `${position.x}% ${position.y}%`\n\n if (repeat === 'no-repeat' && size !== 'auto' && publicUrl != null) {\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ style: { opacity, overflow: 'hidden' } })}>\n <NextImage\n src={publicUrl}\n layout=\"fill\"\n objectPosition={backgroundPosition}\n objectFit={size}\n />\n </div>\n )}\n </Parallax>\n )\n }\n\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <Container\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\n if (bg.type === 'gradient' && bg.payload) {\n const { angle, stops, isRadial } = bg.payload\n const gradient = `${getStopsStyle(stops)}`\n\n return (\n <Container\n key={bg.id}\n style={{\n background: isRadial\n ? `radial-gradient(${gradient})`\n : `linear-gradient(${angle}rad, ${gradient})`,\n }}\n />\n )\n }\n\n if (bg.type === 'video' && bg.payload) {\n const { url, aspectRatio, maskColor, zoom, opacity, parallax } = bg.payload\n\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <Container {...getParallaxProps({})}>\n <BackgroundVideo\n url={url}\n zoom={zoom}\n opacity={opacity}\n aspectRatio={getAspectRatio(aspectRatio)}\n maskColor={getColor(maskColor)}\n />\n </Container>\n )}\n </Parallax>\n )\n }\n\n return null\n })}\n </BackgroundsContainer>\n )\n })}\n </>\n )\n}\n","import {\n ReactElement,\n ElementType,\n forwardRef,\n Children,\n ComponentPropsWithoutRef,\n useImperativeHandle,\n useState,\n} from 'react'\nimport styled from 'styled-components'\nimport { motion } from 'framer-motion'\n\nimport Backgrounds from './components/Backgrounds'\nimport { BackgroundsValue as BackgroundsPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useBackgrounds } from '../../hooks'\nimport { Ref } from 'react'\n\nconst OuterContainer = styled(motion.div)`\n position: relative;\n width: 100%;\n margin: 0 auto;\n\n > * {\n border-radius: inherit;\n height: inherit;\n }\n\n > :last-child {\n position: relative;\n }\n`\n\ntype BaseProps = {\n backgrounds: BackgroundsPropControllerValue | null | undefined\n children: ReactElement<ElementType>\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<typeof OuterContainer>, keyof BaseProps>\n\nexport default forwardRef<HTMLDivElement | null, Props>(function BackgroundsContainer(\n { backgrounds, children, ...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 <OuterContainer {...restOfProps} ref={setHandle}>\n <Backgrounds backgrounds={useBackgrounds(backgrounds)} />\n {Children.only(children)}\n </OuterContainer>\n )\n})\n"],"names":["element","overflow","overflowY","overflowX","ownerDocument","defaultView","getComputedStyle","test","parentElement","isScrollable","getScrollParent","strength","children","rest","container","useRef","containerScrollTop","setContainerScrollTop","useState","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","useCallback","style","restOfChildrenProps","position","left","right","transform","Container","styled","div","Mask","props","backgroundColor","visible","getScale","aspectRatio","zoom","offsetWidth","width","offsetHeight","height","computedAspectRatio","Math","max","url","maskColor","opacity","ready","setReady","scale","setScale","containerEl","handleResize","ReactPlayer","canPlay","_jsx","_Fragment","vimeo","playerOptions","background","youtube","playerVars","origin","location","wistia","options","endVideoBehavior","playbackRateControl","playbar","playButton","volumeControl","fullscreenButton","muted","color","swatch","colorToString","hue","saturation","lightness","getStopsStyle","stops","map","getColor","join","getAspectRatio","AbsoluteFill","BackgroundsContainer","p","cssMediaRules","visibility","css","backgrounds","value","deviceId","v","reverse","bg","type","payload","id","publicUrl","repeat","size","parallax","backgroundPosition","x","y","getParallaxProps","backgroundImage","backgroundRepeat","backgroundSize","angle","isRadial","gradient","OuterContainer","motion","forwardRef","ref","restOfProps","handle","setHandle","useImperativeHandle","useBackgrounds","Children","only"],"mappings":"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"}
1
+ {"version":3,"file":"index.es2.js","sources":["../src/components/hooks/useBackgrounds.ts","../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 { FILES_BY_ID, SWATCHES_BY_ID } from '../utils/queries'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport { BackgroundsValue as ResponsiveBackgroundsValue } from '../../prop-controllers/descriptors'\nimport { useQuery } from '../../api/react'\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\ntype 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 =\n value == null\n ? []\n : value\n .map(({ value: backgrounds }) =>\n backgrounds\n .map(background =>\n background.type === 'image' && background.payload != null\n ? background.payload.imageId\n : null,\n )\n .filter(isNonNullable)\n .reduce((a, b) => a.concat(b), [] as string[]),\n )\n .reduce((a, b) => a.concat(b), [])\n const swatchIds =\n value == null\n ? []\n : value\n .map(({ value: backgrounds }) =>\n backgrounds\n .map(background => {\n if (background.type === 'color' && background.payload != null) {\n return [background.payload.swatchId]\n }\n\n if (background.type === 'gradient' && background.payload != null) {\n return background.payload.stops\n .map(stop => stop.color && stop.color.swatchId)\n .filter(isNonNullable)\n }\n\n if (background.type === 'video' && background.payload != null) {\n return [background.payload.maskColor && background.payload.maskColor.swatchId]\n }\n\n return null\n })\n .filter(isNonNullable)\n .reduce((a, b) => a.concat(b), []),\n )\n .reduce((a, b) => a.concat(b), [])\n .filter(isNonNullable)\n const skip = value == null\n const filesResult = useQuery(FILES_BY_ID, {\n skip: skip || fileIds.length === 0,\n variables: { ids: fileIds },\n })\n const swatchesResult = useQuery(SWATCHES_BY_ID, {\n skip: skip || swatchIds.length === 0,\n variables: { ids: swatchIds },\n })\n\n return useMemo(() => {\n const { data: filesData = {} } = filesResult\n const { data: swatchesData = {} } = swatchesResult\n\n if (value == null || filesResult.error != null || swatchesResult.error != null) {\n return null\n }\n\n const { files = [] } = filesData\n const { swatches = [] } = swatchesData\n\n return value.map(({ value: backgrounds, ...restOfValue }) => ({\n ...restOfValue,\n value: backgrounds\n .map(bg => {\n if (bg.type === 'image' && bg.payload != null && bg.payload.imageId != null) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find((f: any) => 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.find((s: any) => 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.find((s: any) => 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: any) => 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(Boolean),\n }))\n }, [filesResult, swatchesResult, value])\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 { useState, useRef } from 'react'\nimport ReactPlayer from 'react-player'\nimport styled from 'styled-components'\n\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\n\nconst Container = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n overflow: hidden;\n`\n\nconst Mask = styled.div<{ backgroundColor: string | undefined; visible: boolean }>`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: ${props => props.backgroundColor};\n opacity: ${props => (props.visible ? 1 : 0)};\n transition: opacity 1s;\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 styled, { css } from 'styled-components'\nimport NextImage from 'next/image'\n\nimport { cssMediaRules } from '../../../../utils/cssMediaRules'\nimport { BackgroundsPropControllerData } 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'\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\ntype AspectRatio = 'wide' | 'standard'\n\nconst getAspectRatio = (aspectRatio: AspectRatio) => {\n switch (aspectRatio) {\n case 'wide':\n return 16 / 9\n case 'standard':\n return 4 / 3\n default:\n return 16 / 9\n }\n}\n\nconst AbsoluteFill = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n`\n\nconst Container = styled(AbsoluteFill)`\n border-radius: inherit;\n`\n\nconst BackgroundsContainer = styled(Container)<{ visibility: ResponsiveValue<boolean> }>`\n overflow: hidden;\n ${p =>\n cssMediaRules(\n [p.visibility],\n ([visibility]) => css`\n display: ${visibility === true ? 'block' : 'none'};\n `,\n )}\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 (\n <BackgroundsContainer key={deviceId} visibility={visibility}>\n {[...value].reverse().map(bg => {\n if (bg.type === 'color') {\n return (\n <Container\n key={bg.id}\n style={{\n backgroundColor: getColor(bg.payload),\n }}\n />\n )\n }\n\n if (bg.type === 'image' && bg.payload) {\n const {\n publicUrl,\n position,\n repeat = 'no-repeat',\n size = 'cover',\n opacity,\n parallax,\n } = bg.payload\n const backgroundPosition = `${position.x}% ${position.y}%`\n\n if (repeat === 'no-repeat' && size !== 'auto' && publicUrl != null) {\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ style: { opacity, overflow: 'hidden' } })}>\n <NextImage\n src={publicUrl}\n layout=\"fill\"\n objectPosition={backgroundPosition}\n objectFit={size}\n />\n </div>\n )}\n </Parallax>\n )\n }\n\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <Container\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\n if (bg.type === 'gradient' && bg.payload) {\n const { angle, stops, isRadial } = bg.payload\n const gradient = `${getStopsStyle(stops)}`\n\n return (\n <Container\n key={bg.id}\n style={{\n background: isRadial\n ? `radial-gradient(${gradient})`\n : `linear-gradient(${angle}rad, ${gradient})`,\n }}\n />\n )\n }\n\n if (bg.type === 'video' && bg.payload) {\n const { url, aspectRatio, maskColor, zoom, opacity, parallax } = bg.payload\n\n return (\n <Parallax key={bg.id} strength={parallax}>\n {getParallaxProps => (\n <Container {...getParallaxProps({})}>\n <BackgroundVideo\n url={url}\n zoom={zoom}\n opacity={opacity}\n aspectRatio={getAspectRatio(aspectRatio)}\n maskColor={getColor(maskColor)}\n />\n </Container>\n )}\n </Parallax>\n )\n }\n\n return null\n })}\n </BackgroundsContainer>\n )\n })}\n </>\n )\n}\n","import {\n ReactElement,\n ElementType,\n forwardRef,\n Children,\n ComponentPropsWithoutRef,\n useImperativeHandle,\n useState,\n} from 'react'\nimport styled from 'styled-components'\nimport { motion } from 'framer-motion'\n\nimport Backgrounds from './components/Backgrounds'\nimport { BackgroundsValue as BackgroundsPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useBackgrounds } from '../../hooks'\nimport { Ref } from 'react'\n\nconst OuterContainer = styled(motion.div)`\n position: relative;\n width: 100%;\n margin: 0 auto;\n\n > * {\n border-radius: inherit;\n height: inherit;\n }\n\n > :last-child {\n position: relative;\n }\n`\n\ntype BaseProps = {\n backgrounds: BackgroundsPropControllerValue | null | undefined\n children: ReactElement<ElementType>\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<typeof OuterContainer>, keyof BaseProps>\n\nexport default forwardRef<HTMLDivElement | null, Props>(function BackgroundsContainer(\n { backgrounds, children, ...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 <OuterContainer {...restOfProps} ref={setHandle}>\n <Backgrounds backgrounds={useBackgrounds(backgrounds)} />\n {Children.only(children)}\n </OuterContainer>\n )\n})\n"],"names":["element","overflow","overflowY","overflowX","ownerDocument","defaultView","getComputedStyle","test","parentElement","isScrollable","getScrollParent","strength","children","rest","container","useRef","containerScrollTop","setContainerScrollTop","useState","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","useCallback","style","restOfChildrenProps","position","left","right","transform","Container","styled","div","Mask","props","backgroundColor","visible","getScale","aspectRatio","zoom","offsetWidth","width","offsetHeight","height","computedAspectRatio","Math","max","url","maskColor","opacity","ready","setReady","scale","setScale","containerEl","handleResize","ReactPlayer","canPlay","_jsx","_Fragment","vimeo","playerOptions","background","youtube","playerVars","origin","location","wistia","options","endVideoBehavior","playbackRateControl","playbar","playButton","volumeControl","fullscreenButton","muted","color","swatch","colorToString","hue","saturation","lightness","getStopsStyle","stops","map","getColor","join","getAspectRatio","AbsoluteFill","BackgroundsContainer","p","cssMediaRules","visibility","css","backgrounds","value","deviceId","v","reverse","bg","type","payload","id","publicUrl","repeat","size","parallax","backgroundPosition","x","y","getParallaxProps","backgroundImage","backgroundRepeat","backgroundSize","angle","isRadial","gradient","OuterContainer","motion","forwardRef","ref","restOfProps","handle","setHandle","useImperativeHandle","useBackgrounds","Children","only"],"mappings":"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"}
package/dist/next.cjs.js CHANGED
@@ -218,8 +218,8 @@ class Document extends NextDocument__default["default"] {
218
218
  });
219
219
  }
220
220
  }
221
- const version = "0.2.2";
222
- function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" } = {}) {
221
+ const version = "0.2.3";
222
+ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com", getFonts } = {}) {
223
223
  const cors = Cors__default["default"]({ origin: appOrigin });
224
224
  const previewModeProxy = httpProxy.createProxyServer();
225
225
  previewModeProxy.on("proxyReq", (proxyReq) => {
@@ -233,7 +233,7 @@ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" }
233
233
  Received "${apiKey}" instead.`);
234
234
  }
235
235
  return async function makeswiftApiHandler(req, res) {
236
- var _a;
236
+ var _a, _b;
237
237
  await new Promise((resolve, reject) => {
238
238
  cors(req, res, (err) => {
239
239
  if (err instanceof Error)
@@ -305,6 +305,10 @@ Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-r
305
305
  resolve();
306
306
  }));
307
307
  }
308
+ case "fonts": {
309
+ const fonts = (_b = await (getFonts == null ? void 0 : getFonts())) != null ? _b : [];
310
+ return res.json(fonts);
311
+ }
308
312
  default:
309
313
  return res.status(404).json({ message: "Not Found" });
310
314
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next.cjs.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n }\n\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com' }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["MakeswiftClient","isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","Html","_jsx","Head","_jsxs","Main","NextScript","Cors","createProxyServer","cookie","parse","serialize","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","uri","href","cacheData","useEffect","updateCacheData","RuntimeProvider","Map","document","id","data","PageMeta"],"mappings":"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"}
1
+ {"version":3,"file":"next.cjs.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n }\n\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n case 'fonts': {\n const fonts = (await getFonts?.()) ?? []\n return res.json(fonts)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["MakeswiftClient","isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","Html","_jsx","Head","_jsxs","Main","NextScript","Cors","createProxyServer","cookie","parse","serialize","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","uri","href","cacheData","useEffect","updateCacheData","RuntimeProvider","Map","document","id","data","PageMeta"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDO,MAAM,UAAU;AAAA,EAIrB,YAAY,QAAgB,EAAE,YAAY,gCAAiD,CAAA,GAAI;AAHvF;AACA;AAGF,QAAA,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI,MACR;AAAA,YAEe,kBACjB;AAAA,IACF;AAEA,SAAK,SAAS;AAEV,QAAA;AACG,WAAA,YAAY,IAAI,IAAI,SAAS;AAAA,IAAA,QAClC;AACM,YAAA,IAAI,MACR,sEAAsE,aACxE;AAAA,IACF;AAAA,EACF;AAAA,QAEc,MAAM,MAAc,MAAuC;AACjE,UAAA,WAAW,MAAM,MAAM,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,YAAY,iCAClE,OADkE;AAAA,MAErE,SAAS,iCAAK,6BAAM,UAAX,GAAqB,cAAc,KAAK,OAAO;AAAA,IAAA,EACzD;AAEM,WAAA;AAAA,EACT;AAAA,QAEM,SAAS,SAA4B,IAA8B;AACjE,UAAA,eAAe,IAAI,gBAAgB,MAAM;AAC/C,UAAM,WAAW,MAAM,KAAK,MAAM,aAAa,cAAc;AAEzD,QAAA,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,oCAAoC,SAAS,aAAa;AAAA,IAC5E;AAEM,UAAA,OAAO,MAAM,SAAS;AAErB,WAAA;AAAA,EACT;AAAA,QAEc,eAAe,UAAiE;AAC5F,UAAM,SAAS,IAAIA,sBAAgB,EAAE,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE,KAAM,CAAA;AACnF,UAAM,YAAY,MAAM,OAAO,SAAS,SAAS,IAAI;AAErD,WAAO,EAAE,UAAU,WAAW,KAAK,UAAU,MAAM;EACrD;AAAA,QAEc,wBACZ,QACA,EAAE,UAAU,UAAiC,CAAA,GACN;AACjC,UAAA,eAAe,IAAI,gBAAgB,EAAE,SAAS,OAAO,OAAO,GAAG;AACrE,UAAM,WAAW,MAAM,KAAK,MAAM,aAAa,mBAAmB,cAAc;AAE5E,QAAA,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW;AAAY,eAAA;AAEpC,YAAM,IAAI,MAAM,uCAAuC,SAAS,aAAa;AAAA,IAC/E;AAEM,UAAA,WAAkC,MAAM,SAAS;AAEhD,WAAA,MAAM,KAAK,eAAe,QAAQ;AAAA,EAC3C;AAAA,QAEM,gBACJ,MACA,EAAE,YAAmC,CAAA,GACE;AACvC,UAAM,CAAC,QAAQ,MAAM,KAAK,SAAS,EAAE,MAAM;AAE3C,QAAI,QAAQ;AAAa,aAAA;AAEzB,UAAM,WAAW,KAAK,wBAAwB,KAAK,IAAI,EAAE,SAAS;AAE3D,WAAA;AAAA,EACT;AACF;ACnIkC,2BAAA;AAAA,EAChCC,YAAY;AAAA,EACZC,YAAY;AAAA,GACJ;AACR,QAAMC,SAAU;AAAA,oBACEF;AAAAA,qBACCC,UAAUE,QAAQ,KAAK,KAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCZ,wCAAA,UAAA;AAAA,IAAQ,IAAG;AAAA,IAAyB,MAAK;AAAA,IAAS,yBAAyB;AAAA,MAAED;AAAAA,IAAF;AAAA,EAAA,CAAlF;AACD;ACvCM,MAAME,iBAAiBC,sBAAAA,WAAa;AAAA,eAC5BC,gBAAgBC,KAAqD;AAC1EC,UAAAA,QAAQ,IAAIC,OAAAA;AAClB,UAAMC,qBAAqBH,IAAII;AAE3B,QAAA;AACEA,UAAAA,aAAa,MACfD,mBAAmB;AAAA,QACjBE,YAAYC,CAAOC,QAAAA,CAAAA,UAASN,MAAMO,6CAAe,KAAQD,mBAAAA,MAA7B,CAAA;AAAA,MAAA,CADZ;AAIdE,YAAAA,eAAe,MAAMX,sBAAAA,WAAaC,gBAAgBC,GAA7B;AAE3BU,YAAAA,SAASC,eAAT;AAEM,YAAA;AAAA,QAAEC;AAAAA,UAAoBC,6BAAAA,WAAoBC,IAAAA,KAAD;AACzC,YAAA;AAAA,QAAEC;AAAAA,QAAAA,KAAKC;AAAAA,UAAQJ,gBAAgBH,aAAaQ,IAAd;AAE7B,aAAA,iCACFR,eADE;AAAA,QAELS,wCACEC,qBAAA;AAAA,UACGV,UAAAA,CAAAA,aAAaS,QACbjB,MAAMmB,kDACP,SAAA;AAAA,YACE,gBAAe,OAAML,IAAIM,KAAK,GAAT;AAAA,YACrB,yBAAyB;AAAA,cAAE1B,QAAQqB;AAAAA,YAAV;AAAA,UAAA,CAL7B,CAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAAA,IAHJ,UAaQ;AACRf,YAAMqB,KAAN;AAAA,IACD;AAAA,EACF;AAAA,EAEDC,SAAS;AACD,UAAA;AAAA,MAAE9B;AAAAA,QAAc,KAAKc,MAAMiB;AAEjC,2CACGC,aAAAA,MAAD;AAAA,MAAA,UAAA,CACEC,2BAAA,IAACC,mBAAD;AAAA,QAAA,yCACG,mBAAD;AAAA,UAAmB;AAAA,QAAA,CAAnB;AAAA,MAAA,CADF,GAGAC,2BAAA,KAAA,QAAA;AAAA,QAAA,UAAA,CACEF,2BAAA,IAACG,mBAAD,CAAA,CAAA,GACCH,+BAAAI,aAAAA,YAFH,CAAA,CAAA,CAAA;AAAA,MAAA,CAJF,CAAA;AAAA,IAAA,CADF;AAAA,EAWD;AAlDwC;;ACoBpC,6BACL,QACA,EAAE,YAAY,6BAA6B,aAAwC,IACtC;AAC7C,QAAM,OAAOC,cAAA,WAAK,EAAE,QAAQ,UAAW,CAAA;AACvC,QAAM,mBAAmBC,UAAAA;AAER,mBAAA,GAAG,YAAY,CAAY,aAAA;AAC1C,aAAS,aAAa,0BAA0B;AAEhD,UAAM,MAAM,IAAI,IAAI,SAAS,MAAM,UAAU;AAEzC,QAAA,aAAa,OAAO,0BAA0B;AAEzC,aAAA,OAAO,IAAI,WAAW,IAAI;AAAA,EAAA,CACpC;AAEG,MAAA,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI,MACR;AAAA,YAEe,kBACjB;AAAA,EACF;AAEO,SAAA,mCAAmC,KAAK,KAAK;;AAClD,UAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AACtC,WAAA,KAAK,KAAK,CAAO,QAAA;AACpB,YAAI,eAAe;AAAO,iBAAO,GAAG;AAAA;AACvB;MAAA,CACd;AAAA,IAAA,CACF;AAEK,UAAA,EAAE,cAAc,IAAI;AAE1B,QAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,YAAM,IAAI,MACR;AAAA,YACe;AAAA,+GAEjB;AAAA,IACF;AAEM,UAAA,SAAS,UAAU,KAAK,GAAG;AAEzB,YAAA;AAAA,WACD,YAAY;AACX,YAAA,IAAI,MAAM,WAAW;AAAe,iBAAA,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,gBAAgB;AAExF,eAAO,IAAI,KAAK;AAAA,UACd;AAAA,UACA,aAAa;AAAA,QAAA,CACd;AAAA,MACH;AAAA,WAEK,cAAc;AACb,YAAA,IAAI,MAAM,WAAW,QAAQ;AACxB,iBAAA,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,gBAAgB;AAAA,QACzD;AAEA,YAAI,OAAO,IAAI,MAAM,SAAS,UAAU;AAC/B,iBAAA,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,eAAe;AAAA,QACxD;AAEM,cAAA,aAAa,UAAI,eAAJ,YAAkB,IAAI;AAErC,YAAA,OAAO,eAAe,YAAY;AAC9B,gBAAA,UACJ,2BAA2B,IAAI,MAAM;AAAA;AAIvC,kBAAQ,KAAK,OAAO;AAEpB,iBAAO,IAAI,KAAK,EAAE,aAAa,MAAO,CAAA;AAAA,QACxC;AAEI,YAAA;AACI,gBAAA,WAAW,IAAI,MAAM,IAAI;AAE/B,iBAAO,IAAI,KAAK,EAAE,aAAa,KAAM,CAAA;AAAA,iBAC9B;AACA,iBAAA,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,sBAAsB;AAAA,QAC/D;AAAA,MACF;AAAA,WAEK,sBAAsB;AACrB,YAAA,IAAI,MAAM,WAAW;AAAQ,iBAAO,IAAI,OAAO,GAAG,EAAE,KAAK,cAAc;AAErE,cAAA,OAAO,IAAI,QAAQ;AAEzB,YAAI,QAAQ;AAAM,iBAAO,IAAI,OAAO,GAAG,EAAE,KAAK,aAAa;AAErD,cAAA,iBAAiB,IAAI,QAAQ;AAEnC,cAAM,QAAQ,OAAO,mBAAmB,WAAW,iBAAiB;AAChE,YAAA,SAAS,GAAG,WAAW;AASvB,YAAA,QAAQ,IAAI,gBAAgB,cAAc;AACtC,gBAAA,OAAO,IAAI,OAAO;AAExB,cAAI,QAAQ;AAAM,qBAAS,oBAAoB;AAAA,QACjD;AAEM,cAAA,YAAY,IAAI,eAAe,EAAE,WAAW,MAAM,EAAE,UAAU,YAAY;AAChF,YAAI,aAAa,YAAY;AAEzB,YAAA,CAAC,MAAM,QAAQ,SAAS;AAAG,iBAAO,IAAI,OAAO,GAAG,EAAE,KAAK,uBAAuB;AAElF,cAAMC,WAASC,gBAAAA,MAAM,SAAS,EAC3B,IAAI,CAAU,YAAAC,OAAA,UAAU,QAAO,MAAM,QAAO,OAAO,OAAgC,CAAC,EACpF,KAAK,GAAG;AAEX,eAAO,MAAM,IAAI,QAAc,CAAC,SAAS,WACvC,iBAAiB,IAAI,KAAK,KAAK,EAAE,QAAQ,SAAS,EAAEF,QAAAA,SAAO,EAAA,GAAK,CAAO,QAAA;AACjE,cAAA;AAAK,mBAAO,GAAG;AAAA;AACN;QACd,CAAA,CACH;AAAA,MACF;AAAA,WAEK,SAAS;AACZ,cAAM,QAAS,YAAM,6CAAN,YAAuB;AAC/B,eAAA,IAAI,KAAK,KAAK;AAAA,MACvB;AAAA;AAGS,eAAA,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,aAAa;AAAA;AAAA,EAAA;AAG5D;ACpJA,wBAAgC;;AACxBG,QAAAA,kBAAkBC,cAAQ,OAAOC,uBAAfD,YAAqC;AAEzD,MAAA;AACIE,UAAAA,MAAM,IAAIC,IAAIJ,eAAR;AAELG,WAAAA,IAAIE;AAAAA,WACJC;AACP,UAAMC,eACJ,4IAC6EP;AAEzE,UAAA,IAAIQ,MAAMD,YAAV;AAAA,EACP;AACF;AAED,MAAME,aACJ;AAEF,qBAA6B;AACrBC,QAAAA,SAAST,QAAQ,OAAOU;AAE1BD,MAAAA,UAAU,MAAM;AAClB,UAAMH,eACJ;AAII,UAAA,IAAIC,MAAMD,YAAV;AAAA,EACP;AAED,MAAI,CAACE,WAAWG,KAAKF,MAAhB,GAAyB;AACtBG,UAAAA,eACH,mCAAkCH;AAI/B,UAAA,IAAIF,MAAMK,YAAV;AAAA,EACP;AAEMH,SAAAA;AACR;AAID,4BAA4BI,YAA0B;AACpD,QAAMC,iBACH,SAAQD;AAGPb,MAAAA,QAAQe,IAAI,gBAAgB;AAAcC,YAAQC,KAAKH,cAAb;AAC/C;AAEqF,gCAAA;AACpFI,qBAAmB,gBAAD;AAElB,QAAMC,YAAY,IAAIC,UAAUC,aAAa;AAAA,IAAEC,WAAWC,aAAY;AAAA,EAAA,CAApD;AACZC,QAAAA,QAAQ,MAAML,UAAUM;AAEvB,SAAA;AAAA,IACLC,OAAOF,MAAMG,IAAIC,CAAS,SAAA;AAAA,MACxBC,QAAQ;AAAA,QAAEC,MAAMF,KAAKE,KAAKC,MAAM,GAAhB,EAAqBC,OAAOC,CAAWA,YAAAA,YAAY,EAAnD;AAAA,MAAR;AAAA,IAAA,EADH;AAAA,IAGPC,UAAU;AAAA,EAAA;AAEb;AAED,MAAMC,qBAAqB;AAE3B,8BACExE,KAC0C;;AAC1CuD,qBAAmB,gBAAD;AAElB,QAAMC,YAAY,IAAIC,UAAUC,aAAa;AAAA,IAAEC,WAAWC,aAAY;AAAA,EAAA,CAApD;AACZO,QAAAA,OAAO,MAAWD,iBAAAA,WAAAA,mBAAQC,SAARD,YAAgB,CAArB,GAAyB7C,KAAK,GAA9B;AACboD,QAAAA,WAAW,MAAMjB,UAAUkB,gBAAgBP,MAAM;AAAA,IACrDQ,SAAS3E,WAAI4E,gBAAJ5E,mBAAiBwD,eAAc;AAAA,EAAA,CADnB;AAIvB,MAAIiB,YAAY;AAAa,WAAA;AAAA,MAAEI,UAAU;AAAA,MAAMC,YAAYN;AAAAA,IAAAA;AAEpD,SAAA;AAAA,IAAEjE,OAAO;AAAA,MAAEkE;AAAAA,IAAX;AAAA,IAAuBK,YAAYN;AAAAA,EAAAA;AAC3C;AAED,kCACExE,KAC8C;;AAC9CuD,qBAAmB,oBAAD;AAElB,QAAMC,YAAY,IAAIC,UAAUC,aAAa;AAAA,IAAEC,WAAWC,aAAY;AAAA,EAAA,CAApD;AACZO,QAAAA,OAAO,MAAWD,iBAAAA,WAAAA,mBAAQC,SAARD,YAAgB,CAArB,GAAyB7C,KAAK,GAA9B;AACboD,QAAAA,WAAW,MAAMjB,UAAUkB,gBAAgBP,MAAM;AAAA,IAAEQ,SAAS;AAAA,EAAA,CAA3C;AAEvB,MAAIF,YAAY;AAAa,WAAA;AAAA,MAAEI,UAAU;AAAA,IAAA;AAElC,SAAA;AAAA,IAAEtE,OAAO;AAAA,MAAEkE;AAAAA,IAAF;AAAA,EAAA;AACjB;AAEoB,cAAA;AAAA,EAAEA;AAAAA,GAAuB;AACtC,QAAA,CAACM,UAAUC,eACf,MACE,IAAIxF,MAAAA,gBAAgB;AAAA,IAClByF,KAAK,IAAIzC,IAAI,WAAWiC,SAASd,SAA5B,EAAuCuB;AAAAA,IAC5CC,WAAWV,SAASU;AAAAA,EAFtB,CAAA,CAFqB;AAQzBC,QAAAA,UAAU,MAAM;AACPC,WAAAA,gBAAgBZ,SAASU,SAAhC;AAAA,EAAA,GACC,CAACJ,QAAQN,QAAT,CAFM;AAIT,wCACGa,MAAAA,iBAAD;AAAA,IACE;AAAA,IACA,cAAc,oBAAIC,IAAI,CAAC,CAACd,SAASe,SAASC,IAAIhB,SAASe,SAASE,IAAzC,CAAD,CAAR;AAAA,IAFhB,yCAIGC,YAAD;AAAA,MAAU,UAAUlB,SAASe;AAAAA,IAAAA,CAA7B;AAAA,EAAA,CALJ;AAQD;;;;;;;;;;;"}
package/dist/next.es.js CHANGED
@@ -211,8 +211,8 @@ class Document extends NextDocument {
211
211
  });
212
212
  }
213
213
  }
214
- const version = "0.2.2";
215
- function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" } = {}) {
214
+ const version = "0.2.3";
215
+ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com", getFonts } = {}) {
216
216
  const cors = Cors({ origin: appOrigin });
217
217
  const previewModeProxy = createProxyServer();
218
218
  previewModeProxy.on("proxyReq", (proxyReq) => {
@@ -226,7 +226,7 @@ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" }
226
226
  Received "${apiKey}" instead.`);
227
227
  }
228
228
  return async function makeswiftApiHandler(req, res) {
229
- var _a;
229
+ var _a, _b;
230
230
  await new Promise((resolve, reject) => {
231
231
  cors(req, res, (err) => {
232
232
  if (err instanceof Error)
@@ -298,6 +298,10 @@ Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-r
298
298
  resolve();
299
299
  }));
300
300
  }
301
+ case "fonts": {
302
+ const fonts = (_b = await (getFonts == null ? void 0 : getFonts())) != null ? _b : [];
303
+ return res.json(fonts);
304
+ }
301
305
  default:
302
306
  return res.status(404).json({ message: "Not Found" });
303
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next.es.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n }\n\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com' }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","_jsx","_jsxs","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","MakeswiftClient","uri","href","cacheData","useEffect","updateCacheData","Map","document","id","data","PageMeta"],"mappings":"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"}
1
+ {"version":3,"file":"next.es.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n }\n\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n case 'fonts': {\n const fonts = (await getFonts?.()) ?? []\n return res.json(fonts)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","_jsx","_jsxs","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","MakeswiftClient","uri","href","cacheData","useEffect","updateCacheData","Map","document","id","data","PageMeta"],"mappings":"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"}
@@ -1,7 +1,31 @@
1
1
  import { NextApiHandler } from 'next';
2
+ declare type Fonts = Font[];
3
+ declare type Font = {
4
+ family: string;
5
+ variants: FontVariant[];
6
+ };
7
+ declare type FontVariant = {
8
+ weight: string;
9
+ style: 'italic' | 'normal';
10
+ src?: string;
11
+ };
2
12
  declare type MakeswiftApiHandlerConfig = {
3
13
  appOrigin?: string;
14
+ getFonts?: () => Fonts | Promise<Fonts>;
15
+ };
16
+ export declare type MakeswiftApiHandlerErrorResponse = {
17
+ message: string;
18
+ };
19
+ export declare type MakeswiftApiHandlerRevalidateErrorResponse = string;
20
+ export declare type MakeswiftApiHandlerRevalidateResponse = {
21
+ revalidated: boolean;
22
+ };
23
+ export declare type MakeswiftApiHandlerManifestResponse = {
24
+ version: string;
25
+ previewMode: boolean;
4
26
  };
5
- export declare function MakeswiftApiHandler(apiKey: string, { appOrigin }?: MakeswiftApiHandlerConfig): NextApiHandler;
27
+ export declare type MakeswiftApiHandlerFontsResponse = Fonts;
28
+ export declare type MakeswiftApiHandlerResponse = MakeswiftApiHandlerErrorResponse | MakeswiftApiHandlerRevalidateErrorResponse | MakeswiftApiHandlerRevalidateResponse | MakeswiftApiHandlerManifestResponse | MakeswiftApiHandlerFontsResponse;
29
+ export declare function MakeswiftApiHandler(apiKey: string, { appOrigin, getFonts }?: MakeswiftApiHandlerConfig): NextApiHandler<MakeswiftApiHandlerResponse>;
6
30
  export {};
7
31
  //# sourceMappingURL=api-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAIrC,aAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,SAAuC,EAAE,GAAE,yBAA8B,GAC1E,cAAc,CAiIhB"}
1
+ {"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAIrC,aAAK,KAAK,GAAG,IAAI,EAAE,CAAA;AAEnB,aAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AAED,aAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/E,aAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;CACxC,CAAA;AAED,oBAAY,gCAAgC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAClE,oBAAY,0CAA0C,GAAG,MAAM,CAAA;AAC/D,oBAAY,qCAAqC,GAAG;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAAA;AAC5E,oBAAY,mCAAmC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3F,oBAAY,gCAAgC,GAAG,KAAK,CAAA;AAEpD,oBAAY,2BAA2B,GACnC,gCAAgC,GAChC,0CAA0C,GAC1C,qCAAqC,GACrC,mCAAmC,GACnC,gCAAgC,CAAA;AAEpC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,SAAuC,EAAE,QAAQ,EAAE,GAAE,yBAA8B,GACpF,cAAc,CAAC,2BAA2B,CAAC,CAsI7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-style.d.ts","sourceRoot":"","sources":["../../../../../src/runtimes/react/use-style.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,cAAc,CAAA;AAS/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYjD"}
1
+ {"version":3,"file":"use-style.d.ts","sourceRoot":"","sources":["../../../../../src/runtimes/react/use-style.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makeswift/runtime",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "license": "MIT",
5
5
  "main": "dist/main.cjs",
6
6
  "module": "dist/main.es",
@@ -108,8 +108,8 @@
108
108
  "@types/cookie": "^0.5.1",
109
109
  "@types/http-proxy": "^1.17.9",
110
110
  "@types/is-hotkey": "^0.1.7",
111
- "@types/react": "^17.0.3",
112
- "@types/react-dom": "^17.0.2",
111
+ "@types/react": "^18.0.21",
112
+ "@types/react-dom": "^18.0.6",
113
113
  "@types/set-cookie-parser": "^2.4.2",
114
114
  "@types/slate": "0.47.11",
115
115
  "@types/slate-react": "^0.22.9",