@makeswift/runtime 0.7.11 → 0.7.13
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.
- package/dist/Box.cjs.js +1 -0
- package/dist/Box.cjs.js.map +1 -1
- package/dist/Box.es.js +1 -0
- package/dist/Box.es.js.map +1 -1
- package/dist/Button.cjs.js +1 -0
- package/dist/Button.cjs.js.map +1 -1
- package/dist/Button.es.js +1 -0
- package/dist/Button.es.js.map +1 -1
- package/dist/Carousel.cjs.js +1 -0
- package/dist/Carousel.cjs.js.map +1 -1
- package/dist/Carousel.es.js +1 -0
- package/dist/Carousel.es.js.map +1 -1
- package/dist/Countdown.cjs.js +1 -0
- package/dist/Countdown.cjs.js.map +1 -1
- package/dist/Countdown.es.js +1 -0
- package/dist/Countdown.es.js.map +1 -1
- package/dist/Divider.cjs.js +1 -0
- package/dist/Divider.cjs.js.map +1 -1
- package/dist/Divider.es.js +1 -0
- package/dist/Divider.es.js.map +1 -1
- package/dist/Embed.cjs.js +1 -0
- package/dist/Embed.cjs.js.map +1 -1
- package/dist/Embed.es.js +1 -0
- package/dist/Embed.es.js.map +1 -1
- package/dist/Form.cjs.js +1 -0
- package/dist/Form.cjs.js.map +1 -1
- package/dist/Form.es.js +1 -0
- package/dist/Form.es.js.map +1 -1
- package/dist/Image.cjs.js +1 -0
- package/dist/Image.cjs.js.map +1 -1
- package/dist/Image.es.js +1 -0
- package/dist/Image.es.js.map +1 -1
- package/dist/LiveProvider.cjs.js +1 -0
- package/dist/LiveProvider.cjs.js.map +1 -1
- package/dist/LiveProvider.es.js +2 -1
- package/dist/LiveProvider.es.js.map +1 -1
- package/dist/Navigation.cjs.js +1 -0
- package/dist/Navigation.cjs.js.map +1 -1
- package/dist/Navigation.es.js +1 -0
- package/dist/Navigation.es.js.map +1 -1
- package/dist/PreviewProvider.cjs.js +1 -0
- package/dist/PreviewProvider.cjs.js.map +1 -1
- package/dist/PreviewProvider.es.js +2 -1
- package/dist/PreviewProvider.es.js.map +1 -1
- package/dist/ReadOnlyText.cjs.js +1 -0
- package/dist/ReadOnlyText.cjs.js.map +1 -1
- package/dist/ReadOnlyText.es.js +1 -0
- package/dist/ReadOnlyText.es.js.map +1 -1
- package/dist/Root.cjs.js +1 -0
- package/dist/Root.cjs.js.map +1 -1
- package/dist/Root.es.js +1 -0
- package/dist/Root.es.js.map +1 -1
- package/dist/SocialLinks.cjs.js +1 -0
- package/dist/SocialLinks.cjs.js.map +1 -1
- package/dist/SocialLinks.es.js +1 -0
- package/dist/SocialLinks.es.js.map +1 -1
- package/dist/Text.cjs.js +1 -0
- package/dist/Text.cjs.js.map +1 -1
- package/dist/Text.es.js +1 -0
- package/dist/Text.es.js.map +1 -1
- package/dist/Video.cjs.js +1 -0
- package/dist/Video.cjs.js.map +1 -1
- package/dist/Video.es.js +1 -0
- package/dist/Video.es.js.map +1 -1
- package/dist/components.cjs.js +1 -0
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +1 -0
- package/dist/components.es.js.map +1 -1
- package/dist/constants.cjs.js +3 -313
- package/dist/constants.cjs.js.map +1 -1
- package/dist/constants.es.js +3 -300
- package/dist/constants.es.js.map +1 -1
- package/dist/controls.es.js +1 -1
- package/dist/index.cjs.js +14 -13
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs2.js +6 -6
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs5.js +1 -0
- package/dist/index.cjs5.js.map +1 -1
- package/dist/index.cjs6.js +3 -2
- package/dist/index.cjs6.js.map +1 -1
- package/dist/index.es.js +4 -3
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +1 -1
- package/dist/index.es5.js +1 -0
- package/dist/index.es5.js.map +1 -1
- package/dist/index.es6.js +3 -2
- package/dist/index.es6.js.map +1 -1
- package/dist/introspection.cjs.js +332 -0
- package/dist/introspection.cjs.js.map +1 -0
- package/dist/introspection.es.js +317 -0
- package/dist/introspection.es.js.map +1 -0
- package/dist/main.cjs.js +1 -0
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +1 -0
- package/dist/main.es.js.map +1 -1
- package/dist/next.cjs.js +1 -0
- package/dist/next.cjs.js.map +1 -1
- package/dist/next.es.js +1 -0
- package/dist/next.es.js.map +1 -1
- package/dist/prop-controllers.cjs.js +2 -0
- package/dist/prop-controllers.cjs.js.map +1 -1
- package/dist/prop-controllers.es.js +1 -0
- package/dist/prop-controllers.es.js.map +1 -1
- package/dist/react.cjs.js +1 -0
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.es.js +1 -0
- package/dist/react.es.js.map +1 -1
- package/dist/rich-text.es.js +1 -1
- package/dist/types/src/prop-controllers/index.d.ts +1 -0
- package/dist/types/src/prop-controllers/index.d.ts.map +1 -1
- package/dist/typography.cjs.js +4 -4
- package/dist/typography.cjs.js.map +1 -1
- package/dist/typography.es.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/components/page/BodySnippet.tsx","../src/api/introspection.ts","../src/next/snapshots.ts","../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/api-resources.ts","../src/api/graphql/documents/fragments.ts","../src/api/graphql/documents/queries.ts","../src/state/makeswift-api-client.ts","../src/api/graphql/client.ts","../src/api/react.tsx","../src/components/page/Page.tsx","../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/utils/isErrorWithMessage.ts","../src/next/api-handler.ts","../src/next/dynamic.tsx","../src/next/index.tsx","../src/utils/keys.ts","../src/utils/coalesce.ts","../src/utils/shallowMerge.ts","../src/components/utils/devices.ts","../src/components/builtin/Box/constants.ts","../src/components/builtin/Box/register.ts","../src/components/builtin/Button/register.ts","../src/components/builtin/Carousel/register.ts","../src/components/builtin/Countdown/register.ts","../src/components/builtin/Divider/register.ts","../src/components/builtin/Embed/register.ts","../src/components/builtin/Form/context/FormContext.ts","../src/components/builtin/Form/register.ts","../src/components/builtin/Image/register.ts","../src/components/builtin/Navigation/register.ts","../src/components/builtin/Root/register.ts","../src/components/builtin/SocialLinks/register.ts","../src/components/builtin/Text/register.ts","../src/components/builtin/Video/register.ts","../src/components/builtin/register.ts","../src/runtimes/react/use-style.ts","../src/components/icons/warning-20.svg","../src/components/shared/FallbackComponent/FallbackComponent.tsx","../src/runtimes/react/hooks/makeswift-api.ts","../src/components/hooks/useBorder.ts","../src/components/hooks/useBoxShadow.ts","../src/components/hooks/useResponsiveColor.ts","../src/components/hooks/useMediaQuery.ts","../src/components/utils/columns.ts","../src/css/length.ts","../src/css/padding.ts","../src/css/margin.ts","../src/css/length-percentage.ts","../src/css/border-radius.ts","../src/components/utils/colorToString.ts","../src/css/border.ts","../src/components/utils/responsive-style.ts","../src/runtimes/react/controls/style.ts","../src/runtimes/react/components/render-hook.ts","../src/runtimes/react/controls/checkbox.ts","../src/runtimes/react/controls/color.ts","../src/runtimes/react/controls/combobox.ts","../src/runtimes/react/controls/image.ts","../src/runtimes/react/controls/link.ts","../src/runtimes/react/controls/list.tsx","../src/runtimes/react/controls/number.ts","../src/runtimes/react/controls/select.ts","../src/runtimes/react/controls/shape.tsx","../src/runtimes/react/poll-box-model.ts","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls/rich-text.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../src/runtimes/react/element-imperative-handle.ts","../src/runtimes/react/index.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import {\n getElementChildren,\n getElementSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport {\n Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Store,\n} from '../state/react-page'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport { ListControlData, ListControlType, ShapeControlData, ShapeControlType } from '../controls'\nimport { ListValue, ShapeValue, Types } from '../prop-controllers/descriptors'\nimport { MakeswiftClient } from './react'\n\nexport type IntrospectedResourceIds = {\n swatchIds: string[]\n fileIds: string[]\n typographyIds: string[]\n tableIds: string[]\n pageIds: string[]\n}\n\nexport async function introspect(\n element: Element,\n client: MakeswiftClient,\n store: Store,\n): Promise<IntrospectedResourceIds> {\n const descriptors = getPropControllerDescriptors(store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElement = await client.fetchGlobalElement(current.value)\n const elementData = globalElement?.data\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getElementSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n\n if (descriptor.type === ShapeControlType) {\n const prop = props[propName] as ShapeControlData\n\n if (prop == null) return\n\n getResourcesFromElementDescriptors(descriptor.config.type, prop)\n }\n\n if (descriptor.type === ListControlType) {\n const prop = props[propName] as ListControlData\n\n if (prop == null) return\n\n prop.forEach(item => {\n getResourcesFromElementDescriptors(\n { propName: descriptor.config.type },\n { propName: item.value },\n )\n })\n }\n\n if (descriptor.type === Types.Shape) {\n const prop = props[propName] as ShapeValue\n\n if (prop == null) return\n\n getResourcesFromElementDescriptors(descriptor.options.type, prop)\n }\n\n if (descriptor.type === Types.List) {\n const prop = props[propName] as ListValue\n\n if (prop == null) return\n\n prop.forEach(item => {\n getResourcesFromElementDescriptors(\n { propName: descriptor.options.type },\n { propName: item.value },\n )\n })\n }\n })\n }\n }\n\n const typographies = await client.fetchTypographies([...typographyIds])\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n return {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n typographyIds: [...typographyIds],\n tableIds: [...tableIds],\n pageIds: [...pageIds],\n }\n}\n","import { File } from '../api'\n\n/*\n * @note(Alex): DO NOT tie this to SerializedState.\n *\n * This data format is inherently unchangeable. Once we create snapshots, we will have snapshots in our db\n * with resources in this format. We can only add nullable fields to this.\n *\n * That's why I'm going to pretty great lengths to keep this independent.\n *\n * We will maintain mappings from `MakeswiftResources` to other data formats, like `SerializedState`.\n */\nexport type IdSpecified<T> = {\n id: string\n value: T\n}\nexport type MakeswiftSnapshotResources = {\n swatches: IdSpecified<SwatchResource>[]\n typographies: IdSpecified<TypographyResource>[]\n files: IdSpecified<FileSnapshot>[]\n tables: IdSpecified<TableResource>[]\n pagePathnameSlices: IdSpecified<PathPathnameSliceResource>[]\n globalElements: IdSpecified<GlobalElementResource>[]\n snippets: IdSpecified<SnippetResource>[]\n // will use family as id to simplify\n fonts: IdSpecified<FontResource>[]\n pageMetadata: {\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 pageSeo: {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n }\n}\n\ntype SwatchResource = {\n id: string\n hue: number\n saturation: number\n lightness: number\n}\n\ntype TypographyResource = {\n id: string\n name: string\n style: Array<{\n deviceId: string\n value: {\n fontFamily: string | null\n lineHeight: number | null\n letterSpacing: number | null\n fontWeight: number | null\n textAlign: string | null\n uppercase: boolean | null\n underline: boolean | null\n strikethrough: boolean | null\n italic: boolean | null\n fontSize: { value: number | null; unit: string | null } | null\n color: { swatchId: string | null; alpha: number | null } | null\n }\n }>\n}\n\ntype FileSnapshot = {\n id: string\n name: string\n publicUrl: string\n extension: string | null\n dimensions: { width: number; height: number } | null\n}\n\ntype TableResource = {\n id: string\n name: string\n columns: Array<\n | { __typename: 'CheckboxTableColumn'; id: string; name: string }\n | { __typename: 'EmailTableColumn'; id: string; name: string }\n | { __typename: 'LongTextTableColumn'; id: string; name: string }\n | {\n __typename: 'MultipleSelectTableColumn'\n id: string\n name: string\n options: Array<{ id: string; name: string }>\n }\n | { __typename: 'NumberTableColumn'; id: string; name: string }\n | { __typename: 'PhoneNumberTableColumn'; id: string; name: string }\n | { __typename: 'SingleLineTextTableColumn'; id: string; name: string }\n | {\n __typename: 'SingleSelectTableColumn'\n id: string\n name: string\n options: Array<{ id: string; name: string }>\n }\n | { __typename: 'URLTableColumn'; id: string; name: string }\n >\n}\n\ntype PathPathnameSliceResource = {\n id: string\n pathname: string\n}\ntype Json = null | boolean | number | string | Json[] | { [key: string]: Json }\ntype GlobalElementResource = {\n id: string\n data: Json\n}\ntype SnippetResource = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype FontResource = { family: string; variants: string[] }\n\nexport function normalizeToMakeswiftResources(\n partialResources?: Partial<MakeswiftSnapshotResources>,\n): MakeswiftSnapshotResources {\n const resources: MakeswiftSnapshotResources = {\n swatches: partialResources?.swatches || [],\n typographies: partialResources?.typographies || [],\n files: partialResources?.files || [],\n tables: partialResources?.tables || [],\n pagePathnameSlices: partialResources?.pagePathnameSlices || [],\n globalElements: partialResources?.globalElements || [],\n snippets: partialResources?.snippets || [],\n fonts: partialResources?.fonts || [],\n pageMetadata: partialResources?.pageMetadata || {},\n pageSeo: partialResources?.pageSeo || {},\n }\n return resources\n}\n\nexport function fileToFileSnapshot(file: File): FileSnapshot {\n return file\n}\n","export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","import {\n APIResource,\n APIResourceType,\n Swatch,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n Table,\n} from '../../api'\nimport { fileToFileSnapshot, IdSpecified, MakeswiftSnapshotResources } from '../../next/snapshots'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]: { id: string; value: APIResource }[]\n}\n\nfunction isNonNullable<T>(value: T): value is NonNullable<T> {\n return value != null\n}\n\n// If we change SerializedState, update this function as well\nexport function getSnapshotResourcesFromSerializedState(\n serializedState: SerializedState,\n): Partial<MakeswiftSnapshotResources> {\n // @note: remember TS is structurally typed, so extra parameters will come into the\n // objects coming out of this function. That's fine.\n const resources: Partial<MakeswiftSnapshotResources> = {\n swatches: serializedState.Swatch.filter((_): _ is IdSpecified<Swatch> => true),\n typographies: serializedState.Typography.filter((_): _ is IdSpecified<Typography> => true),\n files: serializedState.File.map(({ id, value }) =>\n value.__typename === APIResourceType.File ? { id, value: fileToFileSnapshot(value) } : null,\n ).filter(isNonNullable),\n tables: serializedState.Table.filter((_): _ is IdSpecified<Table> => true),\n pagePathnameSlices: serializedState.PagePathnameSlice.filter(\n (_): _ is IdSpecified<PagePathnameSlice> => true,\n ),\n globalElements: serializedState.GlobalElement.filter(\n (_): _ is IdSpecified<GlobalElement> => true,\n ),\n }\n\n return resources\n}\n\n// @todo: write the reverse function, going from `MakeswiftSnapshotResources` to `SerializedState`\n// it is critical that the two are untied from each other, otherwise\n// we can no longer change `SerializedState`\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(\n ([apiResourceType, resources]) =>\n [\n apiResourceType,\n new Map(resources.map(({ id, value }) => [id, value] as [string, APIResource])),\n ] as [APIResourceType, Map<string, APIResource>],\n ),\n )\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any }[] = []\n\n Array.from(resources.entries()).forEach(([id, value]) => {\n if (value != null) {\n particularResourceMap.push({ id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return state.get(resourceType)?.has(resourceId) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(resourceId)\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource } = action.payload\n\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(resourceId, resource),\n )\n }\n\n case ActionTypes.INTROSPECTED_RESOURCES_FULFILLED: {\n const { introspectedResourceIds, introspectedResources } = action.payload\n const swatches = new Map(state.get(APIResourceType.Swatch)!)\n const files = new Map(state.get(APIResourceType.File)!)\n const typographies = new Map(state.get(APIResourceType.Typography)!)\n const pagePathnameSlices = new Map(state.get(APIResourceType.PagePathnameSlice)!)\n const tables = new Map(state.get(APIResourceType.Table)!)\n\n introspectedResourceIds.swatchIds.forEach((swatchId, idx) => {\n swatches.set(swatchId, introspectedResources.swatches[idx])\n })\n introspectedResourceIds.fileIds.forEach((fileId, idx) => {\n files.set(fileId, introspectedResources.files[idx])\n })\n introspectedResourceIds.typographyIds.forEach((typographyId, idx) => {\n typographies.set(typographyId, introspectedResources.typographies[idx])\n })\n introspectedResourceIds.pageIds.forEach((pageId, idx) => {\n const pagePathnameSlice = introspectedResources.pagePathnamesById[idx]\n\n if (pagePathnameSlice == null) {\n pagePathnameSlices.set(pageId, pagePathnameSlice)\n } else {\n // We're doing this because the API return the id without turning it to nodeId:\n // '87237bda-e775-48d8-92cc-399c65577bb7' vs 'UGFnZTo4NzIzN2JkYS1lNzc1LTQ4ZDgtOTJjYy0zOTljNjU1NzdiYjc='\n const nodeId = Buffer.from(`Page:${pagePathnameSlice.id}`).toString('base64')\n\n pagePathnameSlices.set(nodeId, { ...pagePathnameSlice, id: nodeId })\n }\n })\n introspectedResourceIds.tableIds.forEach((tableId, idx) => {\n tables.set(tableId, introspectedResources.tables[idx])\n })\n\n return new Map(state)\n .set(APIResourceType.Swatch, swatches)\n .set(APIResourceType.File, files)\n .set(APIResourceType.Typography, typographies)\n .set(APIResourceType.PagePathnameSlice, pagePathnameSlices)\n .set(APIResourceType.Table, tables)\n }\n\n case ActionTypes.TYPOGRAPHIES_FULFILLED: {\n const typographies = new Map(state.get(APIResourceType.Typography)!)\n\n action.payload.typographyIds.forEach((typographyId, idx) => {\n typographies.set(typographyId, action.payload.typographies[idx])\n })\n\n return new Map(state).set(APIResourceType.Typography, typographies)\n }\n\n case ActionTypes.CHANGE_API_RESOURCE: {\n const existingApiResource = getAPIResource(\n state,\n action.payload.resource.__typename,\n action.payload.resource.id,\n )\n\n if (deepEqual(existingApiResource, action.payload.resource)) return state\n\n return new Map(state).set(\n action.payload.resource.__typename,\n new Map(state.get(action.payload.resource.__typename)!).set(\n action.payload.resource.id,\n action.payload.resource,\n ),\n )\n }\n\n case ActionTypes.EVICT_API_RESOURCE: {\n const [resourceType, resourceId] = action.payload.id.split(':')\n\n if (!(resourceType in APIResourceType)) return state\n\n const resources = new Map(state.get(resourceType as APIResourceType)!)\n\n const deleted = resources.delete(resourceId)\n\n return deleted ? new Map(state).set(resourceType as APIResourceType, resources) : state\n }\n\n default:\n return state\n }\n}\n","/**\n * We _cannot_ interpolate fragments into other fragments. Doing so results in a document with\n * multiple fragment definitions, which is ambiguous when attempting to read a fragment from the\n * cache. This ambiguity results in an error being thrown by `@apollo/client` in the Makeswift\n * builder when attempting to send API resources to the host's runtime.\n */\n\nexport const SwatchFragment = /* GraphQL */ `\n fragment Swatch on Swatch {\n __typename\n id\n hue\n saturation\n lightness\n }\n`\n\nexport const FileFragment = /* GraphQL */ `\n fragment File on File {\n __typename\n id\n name\n publicUrl: publicUrlV2\n extension\n dimensions {\n width\n height\n }\n }\n`\n\nexport const TypographyFragment = /* GraphQL */ `\n fragment Typography on Typography {\n __typename\n id\n name\n style {\n deviceId\n value {\n fontFamily\n fontSize {\n value\n unit\n }\n color {\n swatchId\n alpha\n }\n lineHeight\n letterSpacing\n fontWeight\n textAlign\n uppercase\n underline\n strikethrough\n italic\n }\n }\n }\n`\n\nexport const PagePathnameSliceFragment = /* GraphQL */ `\n fragment PagePathnameSlice on PagePathnameSlice {\n __typename\n id\n pathname\n }\n`\n\nexport const GlobalElementFragment = /* GraphQL */ `\n fragment GlobalElement on GlobalElement {\n __typename\n id\n data\n }\n`\n\nexport const TableFragment = /* GraphQL */ `\n fragment Table on Table {\n __typename\n id\n name\n columns {\n __typename\n id\n name\n\n ... on MultipleSelectTableColumn {\n options {\n id\n name\n }\n }\n\n ... on SingleSelectTableColumn {\n options {\n id\n name\n }\n }\n }\n }\n`\n\nexport const SnippetFragment = /* GraphQL */ `\n fragment Snippet on Snippet {\n __typename\n id\n name\n code\n cleanup\n location\n shouldAddToNewPages\n liveEnabled\n builderEnabled\n }\n`\n\nexport const PageFragment = /* GraphQL */ `\n fragment Page on Page {\n __typename\n id\n snippets {\n __typename\n id\n name\n code\n cleanup\n location\n shouldAddToNewPages\n liveEnabled\n builderEnabled\n }\n }\n`\n\nexport const SiteFragment = /* GraphQL */ `\n fragment Site on Site {\n __typename\n id\n googleFonts {\n edges {\n activeVariants {\n specifier\n }\n node {\n family\n variants {\n specifier\n }\n }\n }\n }\n }\n`\n","import {\n FileFragment,\n GlobalElementFragment,\n PageFragment,\n PagePathnameSliceFragment,\n SiteFragment,\n SwatchFragment,\n TableFragment,\n TypographyFragment,\n} from './fragments'\n\nexport const IntrospectedResourcesQuery = /* GraphQL */ `\n query IntrospectedResources(\n $swatchIds: [ID!]!\n $fileIds: [ID!]!\n $typographyIds: [ID!]!\n $pageIds: [ID!]!\n $tableIds: [ID!]!\n ) {\n swatches(ids: $swatchIds) {\n ...Swatch\n }\n\n files(ids: $fileIds) {\n ...File\n }\n\n typographies(ids: $typographyIds) {\n ...Typography\n }\n\n pagePathnamesById(ids: $pageIds) {\n ...PagePathnameSlice\n }\n\n tables(ids: $tableIds) {\n ...Table\n }\n }\n\n ${SwatchFragment}\n ${FileFragment}\n ${TypographyFragment}\n ${PagePathnameSliceFragment}\n ${TableFragment}\n`\n\nexport const SwatchQuery = /* GraphQL */ `\n query Swatch($swatchId: ID!) {\n swatch(id: $swatchId) {\n ...Swatch\n }\n }\n\n ${SwatchFragment}\n`\n\nexport const FileQuery = /* GraphQL */ `\n query File($fileId: ID!) {\n file(id: $fileId) {\n ...File\n }\n }\n\n ${FileFragment}\n`\n\nexport const TypographyQuery = /* GraphQL */ `\n query Typography($typographyId: ID!) {\n typography(id: $typographyId) {\n ...Typography\n }\n }\n\n ${TypographyFragment}\n`\n\nexport const PagePathnamesByIdQuery = /* GraphQL */ `\n query PagePathnamesById($pageIds: [ID!]!) {\n pagePathnamesById(ids: $pageIds) {\n ...PagePathnameSlice\n }\n }\n\n ${PagePathnameSliceFragment}\n`\n\nexport const TableQuery = /* GraphQL */ `\n query Table($tableId: ID!) {\n table(id: $tableId) {\n ...Table\n }\n }\n\n ${TableFragment}\n`\n\nexport const TypographiesQuery = /* GraphQL */ `\n query Typographies($typographyIds: [ID!]!) {\n typographies(ids: $typographyIds) {\n ...Typography\n }\n }\n\n ${TypographyFragment}\n`\n\nexport const GlobalElementQuery = /* GraphQL */ `\n query GlobalElement($globalElementId: ID!) {\n globalElement(id: $globalElementId) {\n ...GlobalElement\n }\n }\n\n ${GlobalElementFragment}\n`\n\nexport const CreateTableRecordMutation = /* GraphQL */ `\n mutation CreateTableRecord($input: CreateTableRecordInput!) {\n createTableRecord(input: $input) {\n tableRecord {\n id\n }\n }\n }\n`\n\nexport const SiteQuery = /* GraphQL */ `\n query Site($siteId: ID!) {\n site(id: $siteId) {\n ...Site\n }\n }\n\n ${SiteFragment}\n`\n\nexport const PageQuery = /* GraphQL */ `\n query Page($pageId: ID!) {\n page(id: $pageId) {\n ...Page\n }\n }\n\n ${PageFragment}\n`\n","import { applyMiddleware, createStore, Store as ReduxStore } from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport * as APIResources from './modules/api-resources'\nimport {\n Action,\n apiResourceFulfilled,\n typographiesFulfilled,\n introspectedResourcesFulfilled,\n} from './actions'\nimport { APIResource, APIResourceType, Typography } from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { IntrospectedResourceIds } from '../api/introspection'\nimport {\n FileQuery,\n GlobalElementQuery,\n IntrospectedResourcesQuery,\n PagePathnamesByIdQuery,\n SwatchQuery,\n TableQuery,\n TypographiesQuery,\n TypographyQuery,\n} from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n GlobalElementQueryResult,\n GlobalElementQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n PagePathnamesByIdQueryResult,\n PagePathnamesByIdQueryVariables,\n SwatchQueryResult,\n SwatchQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n TypographiesQueryResult,\n TypographiesQueryVariables,\n TypographyQueryResult,\n TypographyQueryVariables,\n} from '../api/graphql/generated/types'\n\nconst reducer = APIResources.reducer\n\nexport type State = ReturnType<typeof reducer>\n\nexport type SerializedState = APIResources.SerializedState\n\nexport function getSerializedState(state: State): SerializedState {\n return APIResources.getSerializedState(state)\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return APIResources.getHasAPIResource(state, resourceType, resourceId)\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n return APIResources.getAPIResource(state, resourceType, resourceId)\n}\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, GraphQLClient, Action>\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState, client) => {\n const state = getState()\n\n if (getHasAPIResource(state, resourceType, resourceId)) {\n return getAPIResource(state, resourceType, resourceId)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n resource = (\n await client.request<SwatchQueryResult, SwatchQueryVariables>(SwatchQuery, {\n swatchId: resourceId,\n })\n ).swatch\n break\n\n case APIResourceType.File:\n resource = (\n await client.request<FileQueryResult, FileQueryVariables>(FileQuery, {\n fileId: resourceId,\n })\n ).file\n break\n\n case APIResourceType.Typography:\n resource = (\n await client.request<TypographyQueryResult, TypographyQueryVariables>(TypographyQuery, {\n typographyId: resourceId,\n })\n ).typography\n break\n\n case APIResourceType.GlobalElement:\n resource = (\n await client.request<GlobalElementQueryResult, GlobalElementQueryVariables>(\n GlobalElementQuery,\n { globalElementId: resourceId },\n )\n ).globalElement\n break\n\n case APIResourceType.PagePathnameSlice:\n resource =\n (\n await client.request<PagePathnamesByIdQueryResult, PagePathnamesByIdQueryVariables>(\n PagePathnamesByIdQuery,\n { pageIds: [resourceId] },\n )\n ).pagePathnamesById[0] ?? null\n break\n\n case APIResourceType.Table:\n resource = (\n await client.request<TableQueryResult, TableQueryVariables>(TableQuery, {\n tableId: resourceId,\n })\n ).table\n break\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource))\n\n return resource as Extract<APIResource, { __typename: T }> | null\n }\n}\n\nexport function fetchIntrospectedResources(\n introspectedResourceIds: IntrospectedResourceIds,\n): Thunk<Promise<void>> {\n return async (dispatch, _getState, client) => {\n const introspectedResources = await client.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n\n dispatch(introspectedResourcesFulfilled(introspectedResourceIds, introspectedResources))\n }\n}\n\nexport function fetchTypographies(typographyIds: string[]): Thunk<Promise<(Typography | null)[]>> {\n return async (dispatch, getState, client) => {\n const state = getState()\n\n if (\n typographyIds.every(typographyId =>\n getHasAPIResource(state, APIResourceType.Typography, typographyId),\n )\n ) {\n return typographyIds.map(typographyId =>\n getAPIResource(state, APIResourceType.Typography, typographyId),\n )\n }\n\n const { typographies } = await client.request<\n TypographiesQueryResult,\n TypographiesQueryVariables\n >(TypographiesQuery, { typographyIds })\n\n dispatch(typographiesFulfilled(typographyIds, typographies))\n\n return typographies\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, GraphQLClient, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n graphqlClient,\n serializedState,\n}: {\n graphqlClient: GraphQLClient\n serializedState?: SerializedState\n}): Store {\n return createStore(\n reducer,\n APIResources.getInitialState(serializedState),\n applyMiddleware(thunk.withExtraArgument(graphqlClient)),\n )\n}\n","export class GraphQLClient {\n private endpoint: string\n\n constructor(endpoint: string) {\n this.endpoint = endpoint\n }\n\n async request<TData, TVariables = Record<string, never>>(\n query: string,\n variables: TVariables = {} as TVariables,\n ): Promise<TData> {\n const response = await fetch(this.endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query, variables }),\n })\n\n if (!response.ok && response.status !== 400) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const body = await response.json()\n\n if (body.errors != null) {\n console.error(body)\n\n throw new Error('GraphQL response contains errors, check the console.')\n }\n\n return body.data\n }\n}\n","import { createContext, ReactNode, useContext } from 'react'\n\nimport { Element } from '../state/react-page'\nimport { storeContextDefaultValue } from '../runtimes/react'\nimport { introspect } from './introspection'\nimport * as MakeswiftApiClient from '../state/makeswift-api-client'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n Page,\n PagePathnameSlice,\n Site,\n Snippet,\n Swatch,\n Table,\n Typography,\n} from './graphql/types'\nimport { GraphQLClient } from './graphql/client'\nimport { CreateTableRecordMutation } from './graphql/documents'\nimport {\n CreateTableRecordMutationResult,\n CreateTableRecordMutationVariables,\n} from './graphql/generated/types'\n\nexport type CacheData = MakeswiftApiClient.SerializedState\n\nexport type MakeswiftClientOptions = {\n uri: string\n cacheData?: CacheData\n}\n\n/**\n * NOTE(miguel): This \"client\" is used to fetch Makeswift API resources needed for the host. For\n * example, swatches, files, typographies, etc. Ideally it's internal to the runtime and is only\n * used by controls to transform API references to API resources.\n *\n * Moreover, it's use should be reserved for the builder only, since for live pages all Makeswift\n * API resources should be embedded in the \"page snapshot\". In the builder, this client serves the\n * purpose of sending requests for API resources and keeping a cache so that changes that happen in\n * the builder, like modifying a swatch, can be sent via `postMessage` to the host and the cache can\n * immediately update the value and re-render.\n *\n * Furthermore, the API resources requested shouldn't be requested directly from the Makeswift API\n * as that would require those resources to not be authenticated since the requests come from the\n * browser when running the host. Instead, the requests should go to the host directly, at the\n * Makeswift API endpoint (i.g., `/api/makeswift/[...makeswift]` dynamic route) where the host's\n * API key can be used, securely, in the server. For this reason, this client should really be a\n * client of the host's API, not Makeswift's, intended to build and continuously maintain a realtime\n * snapshot for use in the builder, not the lives pages.\n */\nexport class MakeswiftClient {\n graphqlClient: GraphQLClient\n makeswiftApiClient: MakeswiftApiClient.Store\n subscribe: MakeswiftApiClient.Store['subscribe']\n\n constructor({ uri, cacheData }: MakeswiftClientOptions) {\n this.graphqlClient = new GraphQLClient(uri)\n this.makeswiftApiClient = MakeswiftApiClient.configureStore({\n graphqlClient: this.graphqlClient,\n serializedState: cacheData,\n })\n this.subscribe = this.makeswiftApiClient.subscribe\n }\n\n async prefetch(element: Element): Promise<CacheData> {\n const introspectionData = await introspect(element, this, storeContextDefaultValue)\n\n await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchIntrospectedResources(introspectionData),\n )\n\n return MakeswiftApiClient.getSerializedState(this.makeswiftApiClient.getState())\n }\n\n readSwatch(swatchId: string): Swatch | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Swatch,\n swatchId,\n )\n }\n\n async fetchSwatch(swatchId: string): Promise<Swatch | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Swatch, swatchId),\n )\n }\n\n readFile(fileId: string): File | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.File,\n fileId,\n )\n }\n\n async fetchFile(fileId: string): Promise<File | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.File, fileId),\n )\n }\n\n readTypography(typographyId: string): Typography | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Typography,\n typographyId,\n )\n }\n\n async fetchTypography(typographyId: string): Promise<Typography | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Typography, typographyId),\n )\n }\n\n async fetchTypographies(typographyIds: string[]): Promise<(Typography | null)[]> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchTypographies(typographyIds),\n )\n }\n\n readGlobalElement(globalElementId: string): GlobalElement | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.GlobalElement,\n globalElementId,\n )\n }\n\n async fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.GlobalElement, globalElementId),\n )\n }\n\n readPagePathnameSlice(pageId: string): PagePathnameSlice | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.PagePathnameSlice,\n pageId,\n )\n }\n\n async fetchPagePathnameSlice(pageId: string): Promise<PagePathnameSlice | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.PagePathnameSlice, pageId),\n )\n }\n\n readTable(tableId: string): Table | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Table,\n tableId,\n )\n }\n\n async fetchTable(tableId: string): Promise<Table | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Table, tableId),\n )\n }\n\n async createTableRecord(tableId: string, columns: any): Promise<void> {\n await this.graphqlClient.request<\n CreateTableRecordMutationResult,\n CreateTableRecordMutationVariables\n >(CreateTableRecordMutation, { input: { data: { tableId, columns } } })\n }\n\n readSite(siteId: string): Site | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Site,\n siteId,\n )\n }\n\n readPage(pageId: string): Page | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Page,\n pageId,\n )\n }\n\n readSnippet(snippetId: string): Snippet | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Snippet,\n snippetId,\n )\n }\n}\n\nconst Context = createContext(new MakeswiftClient({ uri: 'https://api.makeswift.com/graphql' }))\n\nexport function useMakeswiftClient(): MakeswiftClient {\n return useContext(Context)\n}\n\ntype MakeswiftProviderProps = {\n client: MakeswiftClient\n children: ReactNode\n}\n\nexport function MakeswiftProvider({ client, children }: MakeswiftProviderProps) {\n return <Context.Provider value={client}>{children}</Context.Provider>\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef, useState } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\nimport { useMakeswiftClient } from '../../api/react'\nimport { useIsInBuilder } from '../../react'\nimport deepEqual from '../../utils/deepEqual'\nimport { MakeswiftPageDocument } from '../../next'\nimport { Page as PageType, Site } from '../../api'\n\nconst SnippetLocation = {\n Body: 'BODY',\n Head: 'HEAD',\n} as const\n\ntype SnippetLocation = typeof SnippetLocation[keyof typeof SnippetLocation]\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\nconst filterUsedSnippetProperties = ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n}: Snippet) => ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n})\n\ntype Props = {\n document: MakeswiftPageDocument\n}\n\nexport function Page({ document: page }: Props): JSX.Element {\n const isInBuilder = useIsInBuilder()\n const [snippets, setSnippets] = useState(page.snippets)\n // We're using cached results here for page snippets and site fonts so that anytime the user\n // changes the snippets or fonts on the builder, the change would be reflected here.\n // See this PR for discussions and things we can do to improve it in the future:\n // https://github.com/makeswift/makeswift/pull/77\n const cachedPage = useCachedPage(isInBuilder ? page.id : null)\n useEffect(() => {\n if (cachedPage == null) return\n\n const oldSnippets = snippets.map(filterUsedSnippetProperties)\n const newSnippets = cachedPage.snippets.map(filterUsedSnippetProperties)\n\n if (deepEqual(newSnippets, oldSnippets)) return\n\n setSnippets(cachedPage.snippets)\n }, [cachedPage])\n const site = useCachedSite(isInBuilder ? page.site.id : null)\n\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const { canonicalUrl, isIndexingBlocked } = page.seo\n\n const fontFamilyParamValue = useMemo(() => {\n if (site == null) {\n return page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n }\n\n return site.googleFonts.edges\n .filter((edge): edge is NonNullable<typeof edge> => edge != null)\n .map(({ activeVariants, node: { family, variants } }) => {\n const activeVariantSpecifiers = variants\n .filter(variant =>\n activeVariants.some(activeVariant => activeVariant.specifier === variant.specifier),\n )\n .map(variant => variant.specifier)\n .join()\n\n return `${family.replace(/ /g, '+')}:${activeVariantSpecifiers}`\n })\n .join('|')\n }, [site, page])\n\n const filteredSnippets = useMemo(\n () => snippets.filter(snippet => (isInBuilder ? snippet.builderEnabled : snippet.liveEnabled)),\n [snippets, isInBuilder],\n )\n const headSnippets = useMemo(\n () => filteredSnippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [filteredSnippets],\n )\n\n const previousHeadSnippets = useRef<MakeswiftPageDocument['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {canonicalUrl && <link rel=\"canonical\" href={canonicalUrl} />}\n\n {isIndexingBlocked && <meta name=\"robots\" content=\"noindex\" />}\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.mimetype} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {filteredSnippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n\nfunction useCachedPage(pageId: string | null): PageType | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (pageId == null ? null : client.readPage(pageId))\n\n const page = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return page\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n const site = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return site\n}\n","import { version as runtimeVersion } from '../../package.json'\nimport { CacheData, MakeswiftClient } from '../api/react'\nimport { getSnapshotResourcesFromSerializedState } from '../state/modules/api-resources'\nimport { Element } from '../state/react-page'\nimport { MakeswiftSnapshotResources, normalizeToMakeswiftResources } from './snapshots'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageData = {\n pageId: string\n siteId: string\n snapshot: unstable_Snapshot\n options: { preview: boolean; apiOrigin: string }\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype 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}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\nexport type unstable_Snapshot = {\n resources: MakeswiftSnapshotResources\n elementTree: Element\n runtimeVersion: string\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(\n document: MakeswiftPageDocument,\n preview: boolean,\n ): 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, preview }\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, preview)\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 async unstable_getPageData(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageData | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const document = await this.getDocumentForPage(page.id)\n const snapshot = await this.unstable_createSnapshotOnDemand({ document, pageId: page.id })\n\n return {\n pageId: page.id,\n siteId: document.site.id,\n snapshot,\n options: { preview: preview || false, apiOrigin: this.apiOrigin.href },\n }\n }\n\n private async getDocumentForPage(pageId: string): Promise<MakeswiftPageDocument> {\n const response = await this.fetch(`/v1/pages/${pageId}/document?preview=false`)\n\n if (!response.ok) {\n if (response.status === 404) throw Error('Document not found.')\n\n throw new Error(`Failed to create snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return document\n }\n\n private async unstable_createSnapshotOnDemand({\n document,\n pageId,\n }: {\n document?: MakeswiftPageDocument\n pageId: string\n }): Promise<unstable_Snapshot> {\n let fetchedDocument = document\n\n if (fetchedDocument == null) {\n const response = await this.fetch(`/v1/pages/${pageId}/document?preview=false`)\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error('Not found')\n }\n\n throw new Error(`Failed to create snapshot with error: \"${response.statusText}\"`)\n }\n\n fetchedDocument = await response.json()\n }\n\n if (fetchedDocument == null) {\n throw Error('fetchedDocument should never be null')\n }\n\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const prefetchedResources = await client.prefetch(fetchedDocument.data)\n\n const resources = normalizeToMakeswiftResources(\n getSnapshotResourcesFromSerializedState(prefetchedResources),\n )\n\n resources.snippets = fetchedDocument.snippets.map(snippet => ({\n id: snippet.id,\n value: snippet,\n }))\n resources.pageMetadata = fetchedDocument.meta\n resources.pageSeo = fetchedDocument.seo\n resources.fonts = fetchedDocument.fonts.map(font => ({ id: font.family, value: font }))\n\n return { resources, elementTree: fetchedDocument.data, runtimeVersion }\n }\n\n async unstable_createSnapshot({\n publishedResources,\n deletedResources,\n publishedElementTree,\n currentSnapshot,\n }: {\n publishedResources?: Partial<MakeswiftSnapshotResources>\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n publishedElementTree?: Element\n currentSnapshot?: unstable_Snapshot\n }): Promise<unstable_Snapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n\n function mergeResources({\n resourcesFromPublishedElementTree,\n resourcesFromCurrentSnapshot,\n publishedResources,\n deletedResources,\n }: {\n resourcesFromPublishedElementTree: MakeswiftSnapshotResources\n resourcesFromCurrentSnapshot: MakeswiftSnapshotResources\n publishedResources: MakeswiftSnapshotResources\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n tables?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n }) {\n // chooses the last set value per id\n function mergeIdSpecifiedResource<T>(\n resourceSet: { id: string; value: T }[],\n deletedResources?: string[],\n ): { id: string; value: T }[] {\n const map = new Map(resourceSet.map(({ id, value }) => [id, value] as [string, T]))\n\n deletedResources?.forEach(id => map.delete(id))\n\n const finalResourceSet: { id: string; value: any }[] = []\n Array.from(map.entries()).forEach(([id, value]) => {\n if (value != null) {\n finalResourceSet.push({ id, value })\n }\n })\n\n return finalResourceSet\n }\n\n const resources: MakeswiftSnapshotResources = {\n swatches: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.swatches,\n ...resourcesFromCurrentSnapshot.swatches,\n ...publishedResources.swatches,\n ],\n deletedResources?.swatches,\n ),\n files: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.files,\n ...resourcesFromCurrentSnapshot.files,\n ...publishedResources.files,\n ],\n deletedResources?.files,\n ),\n tables: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.tables,\n ...resourcesFromCurrentSnapshot.tables,\n ...publishedResources.tables,\n ],\n deletedResources?.tables,\n ),\n typographies: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.typographies,\n ...resourcesFromCurrentSnapshot.typographies,\n ...publishedResources.typographies,\n ],\n deletedResources?.typographies,\n ),\n pagePathnameSlices: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.pagePathnameSlices,\n ...resourcesFromCurrentSnapshot.pagePathnameSlices,\n ...publishedResources.pagePathnameSlices,\n ],\n deletedResources?.pagePathnameSlices,\n ),\n globalElements: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.globalElements,\n ...resourcesFromCurrentSnapshot.globalElements,\n ...publishedResources.globalElements,\n ],\n deletedResources?.globalElements,\n ),\n snippets: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.snippets,\n ...resourcesFromCurrentSnapshot.snippets,\n ...publishedResources.snippets,\n ],\n deletedResources?.snippets,\n ),\n fonts: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.fonts,\n ...resourcesFromCurrentSnapshot.fonts,\n ...publishedResources.fonts,\n ],\n deletedResources?.fonts,\n ),\n pageMetadata: {\n ...resourcesFromCurrentSnapshot.pageMetadata,\n ...publishedResources.pageMetadata,\n },\n pageSeo: { ...resourcesFromCurrentSnapshot.pageSeo, ...publishedResources.pageSeo },\n }\n\n return resources\n }\n\n const resourcesFromPublishedElementTree =\n publishedElementTree != null\n ? normalizeToMakeswiftResources(\n getSnapshotResourcesFromSerializedState(await client.prefetch(publishedElementTree)),\n )\n : normalizeToMakeswiftResources({})\n\n const resourcesFromCurrentSnapshot = normalizeToMakeswiftResources(\n currentSnapshot?.resources || {},\n )\n const resources = mergeResources({\n resourcesFromPublishedElementTree,\n resourcesFromCurrentSnapshot,\n publishedResources: normalizeToMakeswiftResources(publishedResources),\n deletedResources,\n })\n\n const elementTree = publishedElementTree || currentSnapshot?.elementTree\n if (elementTree == null) {\n throw Error('elementTree should not be null; something went wrong.')\n }\n\n return {\n resources,\n elementTree,\n runtimeVersion,\n }\n }\n\n unstable_getSnapshotResourceMapping(snapshot: unstable_Snapshot): string[] {\n const resources = snapshot.resources\n\n function parseResourceIds({ id }: { id: string }): string {\n return id\n }\n\n return [\n ...resources.swatches.map(parseResourceIds),\n ...resources.files.map(parseResourceIds),\n ...resources.tables.map(parseResourceIds),\n ...resources.typographies.map(parseResourceIds),\n ...resources.pagePathnameSlices.map(parseResourceIds),\n ...resources.globalElements.map(parseResourceIds),\n ...resources.snippets.map(parseResourceIds),\n ]\n }\n}\n","import { ActionTypes } from '../react'\n\ntype 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 previewModeScript = `\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(resource, options) {\n const request = new Request(resource, options)\n\n if (new URL(request.url).origin !== window.location.origin) {\n return originalFetch.call(this, resource, options)\n }\n\n return originalFetch.call(\n this,\n new Request(request, { 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 const makeswiftConnectionCheckScript = `\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (\n event.origin === appOrigin && \n event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'\n ) {\n setInterval(() => {\n window.parent.postMessage({ \n type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',\n payload: { \n currentUrl: window.location.href \n }\n }, appOrigin)\n }, 20)\n }\n })\n\n window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)\n}\n`\n\n return (\n <>\n <script\n id=\"makeswift-preview-mode\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: previewModeScript }}\n />\n <script\n id=\"makeswift-connection-check\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: makeswiftConnectionCheckScript }}\n />\n </>\n )\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 { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\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 <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\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","type ErrorWithMessage = {\n message: string\n}\n\nexport default function isErrorWithMessage(error: unknown): error is ErrorWithMessage {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof (error as Record<string, unknown>).message === 'string'\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'\nimport { MakeswiftClient } from '../api/react'\nimport { ReactRuntime } from '../react'\nimport { Element } from '../state/react-page'\nimport isErrorWithMessage from '../utils/isErrorWithMessage'\nimport { Makeswift, MakeswiftPageDocument, unstable_Snapshot } from './client'\nimport { fileToFileSnapshot, MakeswiftSnapshotResources } from './snapshots'\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 apiOrigin?: 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 = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n}\nexport type MakeswiftApiHandlerFontsResponse = Fonts\nexport type MakeswiftApiHandlerElementTreeResponse = { elementTree: any }\nexport type MakeswiftApiHandlerCreateSnapshotResponse = {\n pageId: string\n snapshot: unstable_Snapshot\n livePageChanges?: {\n online?: boolean\n pathname?: string\n }\n usedResources: string[]\n}\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n | MakeswiftApiHandlerElementTreeResponse\n | MakeswiftApiHandlerCreateSnapshotResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n }: 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 interactionMode: true,\n clientSideNavigation: true,\n elementFromPoint: false,\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\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 if (isErrorWithMessage(error)) {\n return res.status(500).json({ message: error.message })\n }\n\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 const isForwardedProtoHttps =\n typeof forwardedProto === 'string' && forwardedProto === 'https'\n\n const forwardedSSL = req.headers['x-forwarded-ssl']\n const isForwardedSSL = typeof forwardedSSL === 'string' && forwardedSSL === 'on'\n\n const proto = isForwardedProtoHttps || isForwardedSSL ? 'https' : '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 case 'element-tree': {\n const elementTree = req.body.elementTree\n const replacementContext = req.body.replacementContext\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n if (replacementContext == null) {\n return res.status(400).json({ message: 'replacementContext must be defined' })\n }\n\n const generatedElementTree = ReactRuntime.copyElementTree(elementTree, replacementContext)\n\n const response = { elementTree: generatedElementTree }\n return res.json(response)\n }\n\n case 'snapshot': {\n type PublishedResources = {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n tables?: string[]\n // @todo: I think this should be removed, and only derived from the element tree\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n // @todo: add a font test case\n fonts?: string[]\n pageMetadata?: {\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 pageSeo?: {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n }\n }\n type CreateSnapshotBody = {\n pageId: string\n publishedResources?: PublishedResources\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n publishedElementTree?: Element\n currentSnapshot?: unstable_Snapshot\n livePageChanges: {\n online?: boolean\n pathname?: string\n }\n }\n function validateBody(body: CreateSnapshotBody) {\n if (body.pageId == null) {\n return res.status(400).json({ message: 'Must define pageId.' })\n }\n if (body.currentSnapshot == null && body.publishedElementTree == null) {\n return res\n .status(400)\n .json({ message: 'Either currentSnapshot or publishedElementTree must be defined.' })\n }\n }\n\n const body: CreateSnapshotBody = req.body\n validateBody(body)\n\n const client = new Makeswift(apiKey, {\n apiOrigin,\n })\n const makeswiftApiClient = new MakeswiftClient({ uri: new URL('graphql', apiOrigin).href })\n\n async function formMakeswiftResources(\n publishedResources?: PublishedResources,\n ): Promise<Partial<MakeswiftSnapshotResources>> {\n const publishedResourcesInMakeswiftSnapshotFormat: Partial<MakeswiftSnapshotResources> = {\n swatches: [],\n typographies: [],\n files: [],\n tables: [],\n pagePathnameSlices: [],\n globalElements: [],\n snippets: [],\n fonts: [],\n pageMetadata: publishedResources?.pageMetadata,\n pageSeo: publishedResources?.pageSeo,\n }\n\n if (publishedResources == null) {\n return publishedResourcesInMakeswiftSnapshotFormat\n }\n\n // swatches\n for await (const swatchId of publishedResources.swatches || []) {\n const swatch = await makeswiftApiClient.fetchSwatch(swatchId)\n if (swatch != null) {\n publishedResourcesInMakeswiftSnapshotFormat.swatches?.push({\n id: swatchId,\n value: swatch,\n })\n }\n }\n\n // typographies\n for await (const typographyId of publishedResources.typographies || []) {\n const typography = await makeswiftApiClient.fetchTypography(typographyId)\n if (typography != null) {\n publishedResourcesInMakeswiftSnapshotFormat.typographies?.push({\n id: typographyId,\n value: typography,\n })\n }\n }\n\n // files\n for await (const fileId of publishedResources.files || []) {\n const file = await makeswiftApiClient.fetchFile(fileId)\n if (file != null) {\n publishedResourcesInMakeswiftSnapshotFormat.files?.push({\n id: fileId,\n value: fileToFileSnapshot(file),\n })\n }\n }\n\n // tables\n for await (const tableId of publishedResources.tables || []) {\n const table = await makeswiftApiClient.fetchTable(tableId)\n if (table != null) {\n publishedResourcesInMakeswiftSnapshotFormat.tables?.push({\n id: tableId,\n value: table,\n })\n }\n }\n\n // pagePathnameSlices\n for await (const pageId of publishedResources.pagePathnameSlices || []) {\n const pagePathnameSlice = await makeswiftApiClient.fetchPagePathnameSlice(pageId)\n if (pagePathnameSlice != null) {\n publishedResourcesInMakeswiftSnapshotFormat.pagePathnameSlices?.push({\n id: pageId,\n value: pagePathnameSlice,\n })\n }\n }\n\n // globalElements\n for await (const globalElementId of publishedResources.globalElements || []) {\n const globalElement = await makeswiftApiClient.fetchGlobalElement(globalElementId)\n if (globalElement != null) {\n publishedResourcesInMakeswiftSnapshotFormat.globalElements?.push({\n id: globalElementId,\n value: globalElement,\n })\n }\n }\n\n // @todo: create a cleaner pattern for snippets and fonts\n if (publishedResources.snippets != null || publishedResources.fonts != null) {\n // @fixme: this will fail for creating the first snapshot\n const response = await fetch(\n new URL(`/v1/pages/${body.pageId}/document?preview=false`, apiOrigin).toString(),\n {\n headers: { ['X-API-Key']: apiKey },\n },\n )\n\n if (!response.ok) {\n throw new Error(`Failed to hit live page endpoint: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n const availableSnippets = document.snippets\n const availableFonts = document.fonts\n\n // snippets\n for await (const snippetId of publishedResources.snippets || []) {\n const snippet = availableSnippets.find(\n availableSnippet => availableSnippet.id === snippetId,\n )\n if (snippet != null) {\n publishedResourcesInMakeswiftSnapshotFormat.snippets?.push({\n id: snippetId,\n value: snippet,\n })\n }\n }\n\n // fonts\n for await (const family of publishedResources.fonts || []) {\n const font = availableFonts.find(availableFont => availableFont.family === family)\n if (font != null) {\n publishedResourcesInMakeswiftSnapshotFormat.fonts?.push({\n id: family,\n value: font,\n })\n }\n }\n }\n\n return publishedResourcesInMakeswiftSnapshotFormat\n }\n\n const snapshot = await client.unstable_createSnapshot({\n publishedResources: await formMakeswiftResources(body.publishedResources),\n deletedResources: body.deletedResources,\n publishedElementTree: body.publishedElementTree,\n currentSnapshot: body.currentSnapshot,\n })\n\n const usedResources = client.unstable_getSnapshotResourceMapping(snapshot)\n const response = {\n pageId: body.pageId,\n snapshot,\n livePageChanges: body.livePageChanges,\n usedResources,\n }\n\n return res.json(response)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import {\n ComponentType,\n createElement,\n ForwardedRef,\n forwardRef,\n ForwardRefExoticComponent,\n PropsWithoutRef,\n RefAttributes,\n} from 'react'\n\nconst FORWARDED_NEXT_DYNAMIC_REF_KEY = '__forwarded_next_dynamic_ref__'\n\ntype WithSavedForwardedRef<P, T> = P & {\n [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ForwardedRef<T>\n}\n\nfunction saveForwardedRef<P, T>(props: P, ref: ForwardedRef<T>): WithSavedForwardedRef<P, T> {\n return { ...props, [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ref }\n}\n\ntype WithLoadedForwardedRef<P, T> = Omit<P, typeof FORWARDED_NEXT_DYNAMIC_REF_KEY> & {\n ref: ForwardedRef<T>\n}\n\nfunction loadForwardedRef<P, T>({\n [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ref,\n ...props\n}: WithSavedForwardedRef<P, T>): WithLoadedForwardedRef<P, T> {\n return { ...props, ref }\n}\n\ntype LoaderComponent<P> = Promise<ComponentType<P> | { default: ComponentType<P> }>\n\nfunction resolve(obj: any) {\n return obj && obj.__esModule ? obj.default : obj\n}\n\ntype PatchedLoaderComponent<P, T> = LoaderComponent<WithSavedForwardedRef<P, T>>\n\ntype PatchLoaderComponent = <P, T>(\n loaderComponent: LoaderComponent<P>,\n) => PatchedLoaderComponent<P, T>\n\nexport function forwardNextDynamicRef<T, P>(\n nextDynamicThunk: (patch: PatchLoaderComponent) => ComponentType<WithSavedForwardedRef<P, T>>,\n): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>> {\n const Dynamic = nextDynamicThunk(loaderComponent =>\n loaderComponent.then(moduleOrComponent => ({\n __esModule: true,\n default: props => createElement(resolve(moduleOrComponent), loadForwardedRef(props)),\n })),\n )\n\n return forwardRef<T, P>((props, ref) => <Dynamic {...saveForwardedRef(props, ref)} />)\n}\n","import { memo, useMemo } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageData, MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\nexport type unstable_PageProps = {\n pageData: MakeswiftPageData\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 const Page = memo(({ snapshot }: PageProps) => {\n const client = useMemo(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n [snapshot],\n )\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n preview={snapshot.preview}\n >\n {/* We use a key here to reset the Snippets state in the PageMeta component */}\n <PageMeta key={snapshot.document.data.key} 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","const keys = <O extends { [key: string]: unknown }>(o: O): (keyof O)[] => Object.keys(o)\n\nexport default keys\n","const coalesce = <T>(...args: Array<T>): T => {\n let i: number\n\n for (i = 0; i < args.length - 1; i += 1) {\n if (args[i] != null) return args[i]\n }\n\n return args[i]\n}\n\nexport default coalesce\n","import keys from './keys'\nimport coalesce from './coalesce'\n\nexport default function shallowMerge<\n A extends Record<string, unknown>,\n B extends Record<string, unknown>,\n>(a: A, b: B): A & B {\n const bKeys = keys(b)\n const merged = { ...a } as A & B\n\n bKeys.forEach(key => {\n // @ts-expect-error: `coalesce` returns `null | undefined` regardless of input guarantees.\n merged[key] = coalesce(merged[key], b[key])\n })\n\n return merged\n}\n","import type { Device as DeviceID, DeviceOverride, ResponsiveValue } from '../../prop-controllers'\nimport shallowMerge from '../../utils/shallowMerge'\n\nexport type Device = {\n id: DeviceID\n minWidth?: number\n maxWidth?: number\n}\n\nexport const DEVICES: Array<Device> = [\n { id: 'desktop', minWidth: 769 },\n { id: 'tablet', minWidth: 576, maxWidth: 768 },\n { id: 'mobile', maxWidth: 575 },\n]\n\nexport const getDevice = (deviceId: DeviceID): Device => {\n const device = DEVICES.find(({ id }) => id === deviceId)\n\n if (device == null) throw new Error(`Unrecognized device ID: \"${deviceId}\".`)\n\n return device\n}\n\nexport type FallbackStrategy<V> = (\n arg0: DeviceOverride<V> | undefined,\n arg1: ResponsiveValue<V>,\n) => DeviceOverride<V> | undefined\n\nfunction defaultStrategy<V>(\n value: DeviceOverride<V> | undefined,\n fallbacks: ResponsiveValue<V>,\n): DeviceOverride<V> | undefined {\n return value || fallbacks[0]\n}\n\nexport function shallowMergeFallbacks<V extends Record<string, unknown>>(\n value: DeviceOverride<V> | undefined,\n fallbacks: ResponsiveValue<V>,\n): DeviceOverride<V> | undefined {\n return [value, ...fallbacks]\n .filter((override): override is DeviceOverride<V> => Boolean(override))\n .reduce((a, b) => ({\n deviceId: a.deviceId || b.deviceId,\n value: shallowMerge(a.value, b.value),\n }))\n}\n\nexport function findDeviceOverride<S>(\n values: ResponsiveValue<S> = [],\n deviceId: string,\n strategy: FallbackStrategy<S> = defaultStrategy,\n): DeviceOverride<S> | undefined {\n const value = values.find(({ deviceId: d }) => d === deviceId)\n const fallbacks = DEVICES.slice(0, DEVICES.findIndex(d => d.id === deviceId) + 1)\n .reverse()\n .map(d => values.find(v => v.deviceId === d.id))\n .filter((override): override is DeviceOverride<S> => Boolean(override))\n\n return value != null || fallbacks.length > 0 ? strategy(value, fallbacks) : undefined\n}\n\nexport type ExtractResponsiveValue<T> = T extends ResponsiveValue<infer V> ? V : never\n\nexport function join<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, R>(\n responsiveValues: A,\n joinFn: (values: { [I in keyof A]: ExtractResponsiveValue<A[I]> | undefined }) => R,\n strategy?: FallbackStrategy<V>,\n): ResponsiveValue<R> {\n return DEVICES.map(({ id }) => id)\n .map(deviceId => {\n const value = joinFn(\n responsiveValues.map(responsiveValue => {\n const deviceValue =\n responsiveValue && findDeviceOverride(responsiveValue, deviceId, strategy)\n\n return deviceValue == null ? undefined : deviceValue.value\n }) as unknown as { [I in keyof A]: ExtractResponsiveValue<A[I] | undefined> },\n )\n\n if (value == null) return null\n\n return { deviceId, value }\n })\n .filter((override): override is DeviceOverride<R> => Boolean(override))\n}\n\nexport const getDeviceMediaQuery = (device: Device): string => {\n const parts = ['@media only screen']\n\n if (device.minWidth != null) {\n parts.push(`(min-width: ${device.minWidth}px)`)\n }\n\n if (device.maxWidth != null) {\n parts.push(`(max-width: ${device.maxWidth}px)`)\n }\n\n return parts.join(' and ')\n}\n","export type BoxAnimateIn =\n | 'none'\n | 'fadeIn'\n | 'fadeUp'\n | 'fadeDown'\n | 'fadeLeft'\n | 'fadeRight'\n | 'blurIn'\n | 'scaleUp'\n | 'scaleDown'\n\nexport const DEFAULT_BOX_ANIMATE_TYPE = 'none'\nexport const DEFAULT_BOX_ANIMATE_DELAY = 0.0\nexport const DEFAULT_BOX_ANIMATE_DURATION = 0.75\nexport const DEFAULT_ITEM_ANIMATE_TYPE = 'none'\nexport const DEFAULT_ITEM_ANIMATE_DELAY = 0.0\nexport const DEFAULT_ITEM_ANIMATE_DURATION = 0.75\nexport const DEFAULT_ITEM_STAGGER_DURATION = 0.0\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_ITEM_ANIMATE_DELAY,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n function isHiddenBasedOnAnimationType(\n props: Record<string, unknown>,\n deviceId: string,\n property: 'boxAnimateType' | 'itemAnimateType',\n ): boolean {\n const animateIn = props[property] as ResponsiveValue<BoxAnimateIn>\n return (findDeviceOverride<BoxAnimateIn>(animateIn, deviceId)?.value ?? 'none') === 'none'\n }\n const isHiddenBasedOnBoxAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'boxAnimateType')\n const isHiddenBasedOnItemAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'itemAnimateType')\n\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Box')))),\n {\n type: MakeswiftComponentType.Box,\n label: 'Box',\n props: {\n id: Props.ElementID(),\n backgrounds: Props.Backgrounds(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n height: Props.ResponsiveIconRadioGroup({\n label: 'Height',\n options: [\n { value: 'auto', label: 'Auto', icon: 'HeightAuto16' },\n { value: 'stretch', label: 'Stretch', icon: 'HeightMatch16' },\n ],\n defaultValue: 'auto',\n }),\n verticalAlign: Props.ResponsiveIconRadioGroup({\n label: 'Align items',\n options: [\n { value: 'flex-start', label: 'Top', icon: 'VerticalAlignStart16' },\n { value: 'center', label: 'Middle', icon: 'VerticalAlignMiddle16' },\n { value: 'flex-end', label: 'Bottom', icon: 'VerticalAlignEnd16' },\n {\n value: 'space-between',\n label: 'Space between',\n icon: 'VerticalAlignSpaceBetween16',\n },\n ],\n defaultValue: 'flex-start',\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({\n format: Props.Padding.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n paddingTop: { value: 10, unit: 'px' },\n paddingRight: { value: 10, unit: 'px' },\n paddingBottom: { value: 10, unit: 'px' },\n paddingLeft: { value: 10, unit: 'px' },\n },\n },\n ],\n }),\n border: Props.Border({ format: Props.Border.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n boxShadow: Props.Shadows({ format: Props.Shadows.Format.ClassName }),\n rowGap: Props.GapY(props => ({\n hidden: props.children == null,\n })),\n columnGap: Props.GapX(props => ({\n hidden: props.children == null,\n })),\n boxAnimateType: Props.ResponsiveSelect({\n label: 'Animate box in',\n labelOrientation: 'vertical',\n options: [\n { value: 'none', label: 'None' },\n { value: 'fadeIn', label: 'Fade in' },\n { value: 'fadeRight', label: 'Fade right' },\n { value: 'fadeDown', label: 'Fade down' },\n { value: 'fadeLeft', label: 'Fade left' },\n { value: 'fadeUp', label: 'Fade up' },\n { value: 'blurIn', label: 'Blur in' },\n { value: 'scaleUp', label: 'Scale up' },\n { value: 'scaleDown', label: 'Scale down' },\n ],\n defaultValue: 'none',\n }),\n boxAnimateDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Box duration',\n defaultValue: DEFAULT_BOX_ANIMATE_DURATION,\n min: 0.1,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnBoxAnimation(props, device),\n })),\n boxAnimateDelay: Props.ResponsiveNumber((props, device) => ({\n label: 'Box delay',\n defaultValue: DEFAULT_BOX_ANIMATE_DELAY,\n min: 0,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnBoxAnimation(props, device),\n })),\n itemAnimateType: Props.ResponsiveSelect({\n label: 'Animate items in',\n labelOrientation: 'vertical',\n options: [\n { value: 'none', label: 'None' },\n { value: 'fadeIn', label: 'Fade in' },\n { value: 'fadeRight', label: 'Fade right' },\n { value: 'fadeDown', label: 'Fade down' },\n { value: 'fadeLeft', label: 'Fade left' },\n { value: 'fadeUp', label: 'Fade up' },\n { value: 'blurIn', label: 'Blur in' },\n { value: 'scaleUp', label: 'Scale up' },\n { value: 'scaleDown', label: 'Scale down' },\n ],\n defaultValue: 'none',\n }),\n itemAnimateDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Items duration',\n defaultValue: DEFAULT_BOX_ANIMATE_DURATION,\n min: 0.1,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n itemAnimateDelay: Props.ResponsiveNumber((props, device) => ({\n label: 'Items delay',\n defaultValue: DEFAULT_ITEM_ANIMATE_DELAY,\n min: 0,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n itemStaggerDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Stagger',\n min: 0,\n step: 0.05,\n suffix: 's',\n defaultValue: DEFAULT_ITEM_STAGGER_DURATION,\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n hidePlaceholder: Props.Checkbox(props => ({\n label: 'Hide placeholder',\n hidden: props.children != null,\n })),\n children: Props.Grid(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport { ButtonVariant } from './contants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Button')))),\n {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n id: Props.ElementID(),\n children: Props.TextInput({ placeholder: 'Button text' }),\n link: Props.Link({\n defaultValue: {\n type: 'OPEN_PAGE',\n payload: {\n pageId: null,\n openInNewTab: false,\n },\n },\n }),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n color: Props.ResponsiveColor((props, device) => {\n const variant = props.variant as ResponsiveValue<ButtonVariant>\n const hidden = findDeviceOverride<ButtonVariant>(variant, device)?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { v4 as uuid } from 'uuid'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Carousel')))),\n {\n type: MakeswiftComponentType.Carousel,\n label: 'Carousel',\n icon: 'Carousel40',\n props: {\n id: Props.ElementID(),\n images: Props.Images({\n preset: [\n { key: uuid(), props: {} },\n { key: uuid(), props: {} },\n { key: uuid(), props: {} },\n ],\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 400, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n pageSize: Props.ResponsiveNumber(props => {\n const images = props.images as unknown[]\n const imagesLength = images?.length ?? 0\n\n return {\n label: 'Images shown',\n defaultValue: 1,\n min: 1,\n max: imagesLength,\n step: 1,\n }\n }),\n step: Props.ResponsiveNumber((props, device) => {\n const pageSize = props.pageSize as ResponsiveValue<number>\n const pageSizeValue = findDeviceOverride(pageSize, device)?.value ?? 1\n\n return {\n label: 'Step',\n defaultValue: 1,\n min: 1,\n max: pageSizeValue,\n step: 1,\n }\n }),\n slideAlignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'Top', value: 'flex-start', icon: 'VerticalAlignStart16' },\n { label: 'Middle', value: 'center', icon: 'VerticalAlignMiddle16' },\n { label: 'Bottom', value: 'flex-end', icon: 'VerticalAlignEnd16' },\n ],\n defaultValue: 'center',\n }),\n gap: Props.GapX({\n label: 'Gap',\n step: 5,\n defaultValue: { value: 0, unit: 'px' },\n }),\n autoplay: Props.Checkbox({ label: 'Autoplay' }),\n delay: Props.Number(props => ({\n label: 'Delay',\n preset: 5,\n min: 1,\n step: 0.1,\n suffix: 'seconds',\n hidden: !props.autoplay,\n })),\n showArrows: Props.Checkbox({ preset: true, label: 'Show arrows' }),\n arrowPosition: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Arrow position',\n options: [\n { label: 'Inside', value: 'inside', icon: 'ArrowInside16' },\n { label: 'Center', value: 'center', icon: 'ArrowCenter16' },\n { label: 'Outside', value: 'outside', icon: 'ArrowOutside16' },\n ],\n defaultValue: 'inside',\n hidden: props.showArrows === false,\n })),\n arrowColor: Props.ResponsiveColor(props => ({\n label: 'Arrow color',\n placeholder: 'black',\n hidden: props.showArrows === false,\n })),\n arrowBackground: Props.ResponsiveColor(props => ({\n label: 'Arrow background',\n placeholder: 'white',\n hidden: props.showArrows === false,\n })),\n showDots: Props.Checkbox({ preset: true, label: 'Show dots' }),\n dotColor: Props.ResponsiveColor(props => ({\n label: 'Dot color',\n placeholder: 'black',\n hidden: props.showDots === false,\n })),\n slideBorder: Props.Border({ format: Props.Border.Format.ClassName }),\n slideBorderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Countdown')))),\n {\n type: MakeswiftComponentType.Countdown,\n label: 'Countdown',\n icon: 'Countdown40',\n props: {\n id: Props.ElementID(),\n date: Props.Date(() => ({\n preset: new Date(Date.now() + 1000 * 60 * 60 * 24 * 2).toISOString(),\n })),\n variant: Props.ResponsiveIconRadioGroup({\n label: 'Style',\n options: [\n { label: 'Filled', value: 'filled', icon: 'CountdownSolid16' },\n {\n label: 'Filled split',\n value: 'filled-split',\n icon: 'CountdownSolidSplit16',\n },\n { label: 'Outline', value: 'outline', icon: 'CountdownOutline16' },\n {\n label: 'Outline split',\n value: 'outline-split',\n icon: 'CountdownOutlineSplit16',\n },\n { label: 'Clear', value: 'clear', icon: 'CountdownNaked16' },\n ],\n defaultValue: 'filled',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n gap: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Gap',\n step: 1,\n min: 0,\n max: 100,\n defaultValue: { value: 0, unit: 'px' },\n }),\n numberFont: Props.Font({ label: 'Number font' }),\n numberColor: Props.ResponsiveColor({\n label: 'Number color',\n placeholder: 'white',\n }),\n blockColor: Props.ResponsiveColor({\n label: 'Block color',\n placeholder: 'black',\n }),\n labelFont: Props.Font({ label: 'Label font' }),\n labelColor: Props.ResponsiveColor({\n label: 'Label color',\n placeholder: 'black',\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n daysLabel: Props.TextInput({ label: 'Days label', placeholder: 'Days' }),\n hoursLabel: Props.TextInput({ label: 'Hours label', placeholder: 'Hours' }),\n minutesLabel: Props.TextInput({\n label: 'Minutes label',\n placeholder: 'Minutes',\n }),\n secondsLabel: Props.TextInput({\n label: 'Seconds label',\n placeholder: 'Seconds',\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Divider')))),\n {\n type: MakeswiftComponentType.Divider,\n label: 'Divider',\n icon: 'Divider40',\n props: {\n id: Props.ElementID(),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'solid', label: 'Solid' },\n { value: 'dashed', label: 'Dashed' },\n { value: 'dotted', label: 'Dotted' },\n { value: 'blended', label: 'Blended' },\n ],\n defaultValue: 'solid',\n }),\n thickness: Props.ResponsiveLength({\n label: 'Height',\n defaultValue: { value: 1, unit: 'px' },\n options: [{ value: 'px', label: 'Pixels', icon: 'Px16' }],\n }),\n color: Props.ResponsiveColor({ placeholder: 'black' }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Embed')))),\n {\n type: MakeswiftComponentType.Embed,\n label: 'Embed',\n icon: 'Code40',\n props: {\n id: Props.ElementID(),\n html: Props.TextArea({ label: 'Code', rows: 20 }),\n width: Props.Width({ format: Props.Width.Format.ClassName }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import { createContext, useContext } from 'react'\n\nimport { ResponsiveValue, TextStyleValue } from '../../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../../runtimes/react/controls'\nimport { ColorValue } from '../../../utils/types'\n\nexport const Alignments = {\n LEFT: 'left',\n CENTER: 'center',\n RIGHT: 'right',\n} as const\n\nexport type Alignment = typeof Alignments[keyof typeof Alignments]\n\nexport const Shapes = Object.freeze({\n SQUARE: 'square',\n ROUNDED: 'rounded',\n PILL: 'pill',\n} as const)\n\nexport type Shape = typeof Shapes[keyof typeof Shapes]\n\nexport const Sizes = Object.freeze({\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const)\n\nexport type Size = typeof Sizes[keyof typeof Sizes]\n\nexport const Contrasts = Object.freeze({\n LIGHT: 'light',\n DARK: 'dark',\n} as const)\n\nexport type Contrast = typeof Contrasts[keyof typeof Contrasts]\n\nexport type Value = {\n shape: ResponsiveValue<Shape> | null | undefined\n size: ResponsiveValue<Size> | null | undefined\n contrast: ResponsiveValue<Contrast> | null | undefined\n brandColor: ResponsiveValue<ColorValue> | null | undefined\n labelTextStyle?: TextStyleValue\n labelTextColor?: ResponsiveColor | null\n}\n\nconst Context = createContext<Value>({} as Value)\n\nexport function useFormContext(): Value {\n return useContext(Context)\n}\n\nconst { Provider } = Context\n\nexport { Provider }\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport { Alignments, Contrast, Contrasts, Shapes, Sizes } from './context/FormContext'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Form')))),\n {\n type: MakeswiftComponentType.Form,\n label: 'Form',\n icon: 'Form40',\n props: {\n id: Props.ElementID(),\n tableId: Props.Table(),\n fields: Props.TableFormFields(),\n submitLink: Props.Link(props => ({\n label: 'Redirect to',\n // TODO: This option is hardcoded. We should import it from LinkPanelOptions\n options: [\n { value: 'OPEN_PAGE', label: 'Open page' },\n { value: 'OPEN_URL', label: 'Open URL' },\n ],\n hidden: props.tableId == null,\n })),\n gap: Props.GapY(props => ({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Gap',\n defaultValue: { value: 0, unit: 'px' },\n hidden: props.tableId == null,\n })),\n shape: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Shape',\n options: [\n { label: 'Pill', value: Shapes.PILL, icon: 'ButtonPill16' },\n { label: 'Rounded', value: Shapes.ROUNDED, icon: 'ButtonRounded16' },\n { label: 'Square', value: Shapes.SQUARE, icon: 'ButtonSquare16' },\n ],\n defaultValue: Shapes.ROUNDED,\n hidden: props.tableId == null,\n })),\n size: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Size',\n options: [\n { label: 'Small', value: Sizes.SMALL, icon: 'SizeSmall16' },\n { label: 'Medium', value: Sizes.MEDIUM, icon: 'SizeMedium16' },\n { label: 'Large', value: Sizes.LARGE, icon: 'SizeLarge16' },\n ],\n defaultValue: Sizes.MEDIUM,\n hidden: props?.tableId == null,\n })),\n contrast: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Color',\n options: [\n { label: 'Light mode', value: Contrasts.LIGHT, icon: 'Sun16' },\n { label: 'Dark mode', value: Contrasts.DARK, icon: 'Moon16' },\n ],\n defaultValue: Contrasts.LIGHT,\n hidden: props.tableId == null,\n })),\n labelTextStyle: Props.TextStyle({ label: 'Label text style' }),\n labelTextColor: Props.ResponsiveColor((props, device) => {\n const hidden = props.tableId == null\n const responsiveContrast = props.contrast as ResponsiveValue<Contrast>\n const contrast = findDeviceOverride<Contrast>(responsiveContrast, device)\n\n return {\n hidden,\n label: 'Label text color',\n placeholder:\n contrast?.value === Contrasts.DARK ? 'rgba(255,255,255,0.95)' : 'rgba(0,0,0,0.8)',\n }\n }),\n submitTextStyle: Props.TextStyle({ label: 'Button text style' }),\n brandColor: Props.ResponsiveColor(props => ({\n label: 'Button color',\n placeholder: 'black',\n hidden: props.tableId == null,\n // TODO: Add hideAlphaSlider\n })),\n submitTextColor: Props.ResponsiveColor(props => ({\n label: 'Button text color',\n placeholder: 'white',\n hidden: props.tableId == null,\n })),\n submitLabel: Props.TextInput(props => ({\n label: 'Button label',\n placeholder: 'Submit',\n hidden: props.tableId == null,\n })),\n submitVariant: Props.ResponsiveSelect(props => ({\n label: 'Button style',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n hidden: props.tableId == null,\n })),\n submitWidth: Props.ResponsiveLength(props => ({\n label: 'Button width',\n hidden: props.tableId == null,\n // TODO: Add placeholder: { value: 'auto' }\n })),\n submitAlignment: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Button alignment',\n options: [\n { label: 'Left', value: Alignments.LEFT, icon: 'AlignLeft16' },\n { label: 'Center', value: Alignments.CENTER, icon: 'AlignCenter16' },\n { label: 'Right', value: Alignments.RIGHT, icon: 'AlignRight16' },\n ],\n defaultValue: Alignments.CENTER,\n hidden: props.tableId == null,\n })),\n width: Props.Width({\n preset: [{ deviceId: 'desktop', value: { value: 550, unit: 'px' } }],\n defaultValue: { value: 100, unit: '%' },\n format: Props.Width.Format.ClassName,\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Image')))),\n {\n type: MakeswiftComponentType.Image,\n label: 'Image',\n props: {\n id: Props.ElementID(),\n file: Props.Image(),\n altText: Props.TextInput({ label: 'Alt text' }),\n link: Props.Link({ label: 'On click' }),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({ format: Props.Padding.Format.ClassName }),\n border: Props.Border({ format: Props.Border.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n boxShadow: Props.Shadows({ format: Props.Shadows.Format.ClassName }),\n opacity: Props.ResponsiveOpacity(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { NavigationLinksValue, ResponsiveValue } from '../../../prop-controllers/descriptors'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Navigation')))),\n {\n type: MakeswiftComponentType.Navigation,\n label: 'Navigation',\n icon: 'Navigation40',\n props: {\n id: Props.ElementID(),\n links: Props.NavigationLinks(),\n linkTextStyle: Props.TextStyle(props => {\n const links = props.links as NavigationLinksValue\n\n return {\n label: 'Link text style',\n hidden: links == null || links.length === 0,\n }\n }),\n showLogo: Props.Checkbox({ preset: true, label: 'Show logo' }),\n logoFile: Props.Image(props => ({\n label: 'Logo',\n hidden: props.showLogo === false,\n })),\n logoWidth: Props.ResponsiveLength(props => ({\n preset: [{ deviceId: 'desktop', value: { value: 100, unit: 'px' } }],\n label: 'Logo width',\n min: 0,\n max: 1000,\n // TODO: This is hardcoded value, import it from LengthInputOptions\n options: [{ value: 'px', label: 'Pixels', icon: 'Px16' }],\n hidden: props.showLogo === false,\n })),\n logoAltText: Props.TextInput(props => ({\n label: 'Logo alt text',\n hidden: props.showLogo === false,\n })),\n logoLink: Props.Link(props => ({\n label: 'Logo on click',\n hidden: props.showLogo === false,\n })),\n alignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'flex-start', icon: 'AlignLeft16' },\n { label: 'Center', value: 'center', icon: 'AlignCenter16' },\n { label: 'End', value: 'flex-end', icon: 'AlignRight16' },\n ],\n defaultValue: 'flex-end',\n }),\n gutter: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Link gap',\n min: 0,\n max: 100,\n step: 1,\n defaultValue: { value: 0, unit: 'px' },\n }),\n mobileMenuAnimation: Props.ResponsiveSelect({\n label: 'Mobile menu',\n options: [\n { value: 'coverRight', label: 'Cover from right' },\n { value: 'coverLeft', label: 'Cover from left' },\n ],\n }),\n mobileMenuOpenIconColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Open icon color',\n placeholder: 'rgba(161, 168, 194, 0.5)',\n hidden,\n }\n }),\n mobileMenuCloseIconColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Close icon color',\n placeholder: 'rgba(161, 168, 194, 0.5)',\n hidden,\n }\n }),\n mobileMenuBackgroundColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Menu BG color',\n placeholder: 'black',\n hidden,\n }\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Root')))),\n {\n type: MakeswiftComponentType.Root,\n label: 'Page',\n hidden: true,\n props: {\n children: Props.Grid(),\n backgrounds: Props.Backgrounds(),\n rowGap: Props.GapY(),\n columnGap: Props.GapX(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { SocialLinksValue } from '../../../prop-controllers/descriptors'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./SocialLinks')))),\n {\n type: MakeswiftComponentType.SocialLinks,\n label: 'Social Links',\n icon: 'SocialLinks40',\n props: {\n id: Props.ElementID(),\n links: Props.SocialLinks({\n preset: {\n links: [\n {\n id: 'facebook',\n payload: { type: 'facebook', url: 'https://www.facebook.com' },\n },\n {\n id: 'instagram',\n payload: { type: 'instagram', url: 'https://www.instagram.com' },\n },\n {\n id: 'twitter',\n payload: { type: 'twitter', url: 'https://www.twitter.com' },\n },\n ],\n openInNewTab: false,\n },\n }),\n shape: Props.ResponsiveIconRadioGroup(props => {\n const links = props.links as SocialLinksValue\n\n return {\n label: 'Shape',\n options: [\n { label: 'Naked', value: 'naked', icon: 'Star16' },\n { label: 'Circle', value: 'circle', icon: 'StarCircle16' },\n { label: 'Rounded', value: 'rounded', icon: 'StarRoundedSquare16' },\n { label: 'Square', value: 'square', icon: 'StarSquare16' },\n ],\n defaultValue: 'naked',\n hidden: links == null || links.links.length === 0,\n }\n }),\n size: Props.ResponsiveIconRadioGroup(props => {\n const links = props.links as SocialLinksValue\n\n return {\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n hidden: links == null || links.links.length === 0,\n }\n }),\n hoverStyle: Props.ResponsiveSelect(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'On hover',\n options: [\n { value: 'none', label: 'None' },\n { value: 'grow', label: 'Grow' },\n { value: 'shrink', label: 'Shrink' },\n { value: 'fade', label: 'Fade' },\n ],\n defaultValue: 'none',\n labelOrientation: 'horizontal',\n hidden,\n }\n }),\n fill: Props.ResponsiveColor(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'Icon color',\n hidden,\n }\n }),\n backgroundColor: Props.ResponsiveColor(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'Shape color',\n hidden,\n }\n }),\n alignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'flex-start', value: 'flex-start', icon: 'AlignLeft16' },\n { label: 'center', value: 'center', icon: 'AlignCenter16' },\n { label: 'flex-end', value: 'flex-end', icon: 'AlignRight16' },\n ],\n defaultValue: 'center',\n }),\n gutter: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Link gap',\n min: 0,\n max: 100,\n step: 1,\n defaultValue: { value: 0, unit: 'px' },\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: { value: 10, unit: 'px' },\n marginRight: 'auto',\n marginBottom: { value: 10, unit: 'px' },\n marginLeft: 'auto',\n },\n },\n ],\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Text')))),\n {\n type: MakeswiftComponentType.Text,\n label: 'Text',\n props: {\n id: Props.ElementID(),\n text: Props.RichText(() => ({\n preset: {\n document: {\n object: 'document',\n nodes: [\n {\n object: 'block',\n type: 'paragraph',\n nodes: [\n {\n object: 'text',\n text: ipsum(3),\n marks: [\n {\n object: 'mark',\n type: 'typography',\n data: {\n value: {\n id: null,\n style: [\n {\n deviceId: 'mobile',\n value: { fontSize: { value: 16, unit: 'px' } },\n },\n {\n deviceId: 'desktop',\n value: {\n fontWeight: 400,\n fontSize: { value: 18, unit: 'px' },\n lineHeight: 1.5,\n },\n },\n ],\n },\n },\n },\n ],\n },\n ],\n },\n ],\n },\n },\n })),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n preset: [{ deviceId: 'desktop', value: { value: 700, unit: 'px' } }],\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: null,\n marginRight: 'auto',\n marginBottom: { value: 20, unit: 'px' },\n marginLeft: 'auto',\n },\n },\n ],\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Video')))),\n {\n type: MakeswiftComponentType.Video,\n label: 'Video',\n icon: 'Video40',\n props: {\n id: Props.ElementID(),\n video: Props.Video({ preset: { controls: true } }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import { ReactRuntime } from '../../runtimes/react'\nimport { registerComponent as registerBoxComponent } from './Box/register'\nimport { registerComponent as registerButtonComponent } from './Button/register'\nimport { registerComponent as registerCarouselComponent } from './Carousel/register'\nimport { registerComponent as registerCountdownComponent } from './Countdown/register'\nimport { registerComponent as registerDividerComponent } from './Divider/register'\nimport { registerComponent as registerEmbedComponent } from './Embed/register'\nimport { registerComponent as registerFormComponent } from './Form/register'\nimport { registerComponent as registerImageComponent } from './Image/register'\nimport { registerComponent as registerNavigationComponent } from './Navigation/register'\nimport { registerComponent as registerRootComponent } from './Root/register'\nimport { registerComponent as registerSocialLinksComponent } from './SocialLinks/register'\nimport { registerComponent as registerTextComponent } from './Text/register'\nimport { registerComponent as registerVideoComponent } from './Video/register'\n\nexport function registerBuiltinComponents(runtime: ReactRuntime) {\n const unregisterBoxComponent = registerBoxComponent(runtime)\n const unregisterButtonComponent = registerButtonComponent(runtime)\n const unregisterCarouselComponent = registerCarouselComponent(runtime)\n const unregisterCountdownComponent = registerCountdownComponent(runtime)\n const unregisterDividerComponent = registerDividerComponent(runtime)\n const unregisterEmbedComponent = registerEmbedComponent(runtime)\n const unregisterFormComponent = registerFormComponent(runtime)\n const unregisterImageComponent = registerImageComponent(runtime)\n const unregisterNavigationComponent = registerNavigationComponent(runtime)\n const unregisterRootComponent = registerRootComponent(runtime)\n const unregisterSocialLinksComponent = registerSocialLinksComponent(runtime)\n const unregisterTextComponent = registerTextComponent(runtime)\n const unregisterVideoComponent = registerVideoComponent(runtime)\n\n return () => {\n unregisterBoxComponent()\n unregisterButtonComponent()\n unregisterCarouselComponent()\n unregisterCountdownComponent()\n unregisterDividerComponent()\n unregisterEmbedComponent()\n unregisterFormComponent()\n unregisterImageComponent()\n unregisterNavigationComponent()\n unregisterRootComponent()\n unregisterSocialLinksComponent()\n unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","import * as React from 'react'\nimport { cache, CSSObject } from '@emotion/css'\nimport { serializeStyles } from '@emotion/serialize'\nimport { registerStyles, insertStyles } from '@emotion/utils'\n\nconst isServer = typeof window === 'undefined'\nconst useInsertionEffectSpecifier = 'useInsertionEffect'\nconst useInsertionEffect = React[useInsertionEffectSpecifier] ?? React.useLayoutEffect\n\nexport function useStyle(style: CSSObject): string {\n const serialized = serializeStyles([style], cache.registered)\n\n registerStyles(cache, serialized, false)\n\n useInsertionEffect(() => {\n insertStyles(cache, serialized, false)\n })\n\n if (isServer) insertStyles(cache, serialized, false)\n\n return `${cache.key}-${serialized.name}`\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjg5ODY0IDE4SDE3LjEwMTRDMTguNDE4MyAxOCAxOS4yNjMzIDE2LjYwMDMgMTguNjUgMTUuNDM0OUwxMS41NDg2IDEuOTQyMzZDMTAuODkyNSAwLjY5NTc3IDkuMTA3NDkgMC42OTU3NjYgOC40NTEzOSAxLjk0MjM2TDEuMzUwMDMgMTUuNDM0OUMwLjczNjY5MiAxNi42MDAzIDEuNTgxNzQgMTggMi44OTg2NCAxOFpNOSA2QzkgNS40NDc3MiA5LjQ0NzcxIDUgMTAgNUMxMC41NTIzIDUgMTEgNS40NDc3MiAxMSA2VjExQzExIDExLjU1MjMgMTAuNTUyMyAxMiAxMCAxMkM5LjQ0NzcxIDEyIDkgMTEuNTUyMyA5IDExVjZaTTExLjI1IDE0Ljc1QzExLjI1IDE1LjQ0MDQgMTAuNjkwNCAxNiAxMCAxNkM5LjMwOTY0IDE2IDguNzUgMTUuNDQwNCA4Ljc1IDE0Ljc1QzguNzUgMTQuMDU5NiA5LjMwOTY0IDEzLjUgMTAgMTMuNUMxMC42OTA0IDEzLjUgMTEuMjUgMTQuMDU5NiAxMS4yNSAxNC43NVoiIC8+Cjwvc3ZnPgo=\"","import { forwardRef, Ref } from 'react'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { ReactComponent as Warning20 } from '../../icons/warning-20.svg'\n\ntype Props = {\n text: string\n}\n\nexport const FallbackComponent = forwardRef(function FallbackComponent(\n { text }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <div\n ref={ref}\n className={useStyle({\n width: '100%',\n height: 54,\n backgroundColor: '#fcedf2',\n borderRadius: 6,\n padding: 16,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n color: '#c73e6d',\n fill: 'currentColor',\n fontFamily: 'Heebo, sans-serif',\n fontSize: 16,\n })}\n >\n <Warning20 />\n <span>{text}</span>\n </div>\n )\n})\n","import { useEffect, useRef } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport { File, GlobalElement, PagePathnameSlice, Swatch, Table, Typography } from '../../../api'\nimport { useMakeswiftClient } from '../../../api/react'\n\nexport function useSwatch(swatchId: string | null): Swatch | null {\n const client = useMakeswiftClient()\n const readSwatch = () => (swatchId == null ? null : client.readSwatch(swatchId))\n const swatch = useSyncExternalStore(client.subscribe, readSwatch, readSwatch)\n\n useEffect(() => {\n if (swatchId != null) client.fetchSwatch(swatchId).catch(console.error)\n }, [client, swatchId])\n\n return swatch\n}\n\nexport function useSwatches(swatchIds: string[]): (Swatch | null)[] {\n const client = useMakeswiftClient()\n const lastSnapshot = useRef<(Swatch | null)[]>()\n\n function getSnapshot() {\n const swatches = swatchIds.map(swatchId => client.readSwatch(swatchId))\n\n if (\n lastSnapshot.current != null &&\n lastSnapshot.current.length === swatches.length &&\n lastSnapshot.current.every((swatch, idx) => swatches[idx] === swatch)\n ) {\n return lastSnapshot.current\n }\n\n return (lastSnapshot.current = swatches)\n }\n\n const swatches = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n useEffect(() => {\n Promise.all(swatchIds.map(swatchId => client.fetchSwatch(swatchId))).catch(console.error)\n }, [client, swatchIds])\n\n return swatches\n}\n\nexport function useFile(fileId: string | null): File | null {\n const client = useMakeswiftClient()\n const readFile = () => (fileId == null ? null : client.readFile(fileId))\n const file = useSyncExternalStore(client.subscribe, readFile, readFile)\n\n useEffect(() => {\n if (fileId != null) client.fetchFile(fileId)\n }, [client, fileId])\n\n return file\n}\n\nexport function useFiles(fileIds: string[]): (File | null)[] {\n const client = useMakeswiftClient()\n const lastSnapshot = useRef<(File | null)[]>()\n\n function getSnapshot() {\n const files = fileIds.map(fileId => client.readFile(fileId))\n\n if (\n lastSnapshot.current != null &&\n lastSnapshot.current.length === files.length &&\n lastSnapshot.current.every((file, idx) => files[idx] === file)\n ) {\n return lastSnapshot.current\n }\n\n return (lastSnapshot.current = files)\n }\n\n const files = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n useEffect(() => {\n Promise.all(fileIds.map(fileId => client.fetchFile(fileId))).catch(console.error)\n }, [client, fileIds])\n\n return files\n}\n\nexport function useTypography(typographyId: string | null): Typography | null {\n const client = useMakeswiftClient()\n const readTypography = () => (typographyId == null ? null : client.readTypography(typographyId))\n const typography = useSyncExternalStore(client.subscribe, readTypography, readTypography)\n\n useEffect(() => {\n if (typographyId != null) client.fetchTypography(typographyId).catch(console.error)\n }, [client, typographyId])\n\n return typography\n}\n\nexport function useGlobalElement(globalElementId: string | null): GlobalElement | null {\n const client = useMakeswiftClient()\n const readGlobalElement = () =>\n globalElementId == null ? null : client.readGlobalElement(globalElementId)\n const globalElement = useSyncExternalStore(client.subscribe, readGlobalElement, readGlobalElement)\n\n useEffect(() => {\n if (globalElementId != null) client.fetchGlobalElement(globalElementId).catch(console.error)\n }, [client, globalElementId])\n\n return globalElement\n}\n\nexport function usePagePathnameSlice(pageId: string | null): PagePathnameSlice | null {\n const client = useMakeswiftClient()\n const readPagePathnameSlice = () => (pageId == null ? null : client.readPagePathnameSlice(pageId))\n const pagePathnameSlice = useSyncExternalStore(\n client.subscribe,\n readPagePathnameSlice,\n readPagePathnameSlice,\n )\n\n useEffect(() => {\n if (pageId != null) client.fetchPagePathnameSlice(pageId).catch(console.error)\n }, [client, pageId])\n\n return pagePathnameSlice\n}\n\nexport function useTable(tableId: string | null): Table | null {\n const client = useMakeswiftClient()\n const readTable = () => (tableId == null ? null : client.readTable(tableId))\n const table = useSyncExternalStore(client.subscribe, readTable, readTable)\n\n useEffect(() => {\n if (tableId != null) client.fetchTable(tableId).catch(console.error)\n }, [client, tableId])\n\n return table\n}\n","import { BorderStyleProperty } from 'csstype'\n\nimport type { ColorValue as Color } from '../utils/types'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport {\n BorderValue as ResponsiveBorderValue,\n BorderSide as BorderValueSide,\n} from '../../prop-controllers/descriptors'\nimport { getBorderSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { Swatch } from '../../api'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nfunction mapSideColor(swatches: (Swatch | null)[], { color, ...restOfSide }: BorderValueSide) {\n return {\n ...restOfSide,\n color: color && {\n alpha: color.alpha,\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n },\n }\n}\n\nexport type BorderSide = {\n width: number | null | undefined\n style: BorderStyleProperty\n color: Color | null | undefined\n}\n\ntype BorderData = {\n borderTop: BorderSide | null | undefined\n borderRight: BorderSide | null | undefined\n borderBottom: BorderSide | null | undefined\n borderLeft: BorderSide | null | undefined\n}\n\nexport type BorderPropControllerData = ResponsiveValue<BorderData>\n\nexport function useBorder(\n value: ResponsiveBorderValue | null | undefined,\n): BorderPropControllerData | null | undefined {\n const swatchIds = getBorderSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return null\n\n return value.map(({ value: { borderTop, borderBottom, borderLeft, borderRight }, ...rest }) => ({\n ...rest,\n value: {\n borderTop: borderTop && mapSideColor(swatches, borderTop),\n borderBottom: borderBottom && mapSideColor(swatches, borderBottom),\n borderLeft: borderLeft && mapSideColor(swatches, borderLeft),\n borderRight: borderRight && mapSideColor(swatches, borderRight),\n },\n }))\n}\n","import { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport type { ResponsiveValue } from '../../prop-controllers'\nimport type { ShadowsValue as ResponsiveShadowsValue } from '../../prop-controllers/descriptors'\nimport { getBoxShadowsSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\n\ntype ShadowData = {\n id: string\n payload: {\n inset: boolean\n offsetX: number\n offsetY: number\n blurRadius: number\n spreadRadius: number\n color: Color | null | undefined\n }\n}\n\nconst ShadowDefaultValue = {\n inset: false,\n offsetX: 0,\n offsetY: 2,\n blurRadius: 4,\n spreadRadius: 0,\n color: null,\n} as const\n\nexport type BoxShadowData = Array<ShadowData>\n\nexport type BoxShadowPropControllerData = ResponsiveValue<BoxShadowData>\n\nexport function useBoxShadow(\n value: ResponsiveShadowsValue | null | undefined,\n): BoxShadowPropControllerData | null | undefined {\n const swatchIds = getBoxShadowsSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return null\n\n return value.map(({ value: shadows, ...restOfValue }) => ({\n ...restOfValue,\n value: shadows.map(\n ({\n payload: { color, inset, offsetX, offsetY, blurRadius, spreadRadius },\n ...restOfShadow\n }) => ({\n ...restOfShadow,\n payload: {\n color:\n color != null\n ? {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n }\n : null,\n inset: inset ?? ShadowDefaultValue.inset,\n offsetX: offsetX ?? ShadowDefaultValue.offsetX,\n offsetY: offsetY ?? ShadowDefaultValue.offsetY,\n blurRadius: blurRadius ?? ShadowDefaultValue.blurRadius,\n spreadRadius: spreadRadius ?? ShadowDefaultValue.spreadRadius,\n },\n }),\n ),\n }))\n}\n","import type { ResponsiveValue } from '../../prop-controllers'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport { getResponsiveColorSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\n\nexport function useResponsiveColor(\n color:\n | ResponsiveValue<{\n swatchId: string\n alpha: number\n }>\n | null\n | undefined,\n): ResponsiveValue<Color> | null | undefined {\n const swatchIds = getResponsiveColorSwatchIds(color)\n const swatches = useSwatches(swatchIds)\n\n if (color == null) return null\n\n return color\n .map(({ value: v, ...rest }) => {\n const { swatchId, alpha } = v\n const swatch = swatches.find(s => s && s.id === swatchId)\n\n return swatch == null ? null : { ...rest, value: { swatch, alpha } }\n })\n .filter(isNonNullable)\n}\n","import { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport { DeviceOverride } from '../../prop-controllers'\nimport { DEVICES, findDeviceOverride, getDeviceMediaQuery } from '../utils/devices'\n\nconst DEVICE_QUERIES = DEVICES.map(device => ({\n id: device.id,\n query: getDeviceMediaQuery(device).replace('@media', ''),\n}))\n\nfunction subscribe(notify: () => void) {\n const cleanUpFns = DEVICE_QUERIES.map(q => {\n const mediaQueryList = window.matchMedia(q.query)\n mediaQueryList.addEventListener('change', notify)\n return () => mediaQueryList.removeEventListener('change', notify)\n })\n return () => cleanUpFns.forEach(fn => fn())\n}\n\nexport function useMediaQuery<S>(responsiveValue?: Array<DeviceOverride<S>>): S | undefined {\n const getServerSnapshot = () => findDeviceOverride(responsiveValue, DEVICES[0].id)?.value\n\n function getSnapshot() {\n const deviceId: string = DEVICE_QUERIES.reduce((matchedDevice, deviceQueries) => {\n if (window.matchMedia(deviceQueries.query).matches) {\n return deviceQueries.id\n }\n return matchedDevice\n }, DEVICE_QUERIES[0].id)\n return findDeviceOverride(responsiveValue, deviceId)?.value\n }\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/length\n *\n * @todos\n * - Add additional units\n * - Rename `value` field to `amount` or a more descriptive name representative of the \"distance\"\n * represented by a CSS length\n */\nexport type LengthData = { value: number; unit: 'px' } | string | number\n\nexport function lengthDataToString(data: LengthData): string {\n if (typeof data === 'object') return `${data.value}${data.unit}`\n\n if (typeof data === 'number') return `${data}px`\n\n return data\n}\n","import { CSSObject } from '@emotion/css'\nimport { LengthData, lengthDataToString } from './length'\nimport {\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n} from 'csstype'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/padding#constituent_properties */\nexport type PaddingLonghandPropertyData = LengthData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/padding\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type PaddingPropertyData = {\n paddingTop: PaddingLonghandPropertyData | PaddingTopProperty<number | string> | null | undefined\n paddingRight:\n | PaddingLonghandPropertyData\n | PaddingRightProperty<number | string>\n | null\n | undefined\n paddingBottom:\n | PaddingLonghandPropertyData\n | PaddingBottomProperty<number | string>\n | null\n | undefined\n paddingLeft: PaddingLonghandPropertyData | PaddingLeftProperty<number | string> | null | undefined\n}\n\nexport function paddingPropertyDataToStyle(\n data: PaddingPropertyData,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n const paddingTop = data.paddingTop ?? defaultValue.paddingTop\n const paddingRight = data.paddingRight ?? defaultValue.paddingRight\n const paddingBottom = data.paddingBottom ?? defaultValue.paddingBottom\n const paddingLeft = data.paddingLeft ?? defaultValue.paddingLeft\n const style: CSSObject = {}\n\n if (paddingTop != null) style.paddingTop = lengthDataToString(paddingTop)\n if (paddingRight != null) style.paddingRight = lengthDataToString(paddingRight)\n if (paddingBottom != null) style.paddingBottom = lengthDataToString(paddingBottom)\n if (paddingLeft != null) style.paddingLeft = lengthDataToString(paddingLeft)\n\n return style\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n MarginBottomProperty,\n MarginLeftProperty,\n MarginRightProperty,\n MarginTopProperty,\n} from 'csstype'\nimport { LengthData, lengthDataToString } from './length'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/margin#constituent_properties */\nexport type MarginLonghandPropertyData = LengthData | 'auto'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/margin\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type MarginPropertyData = {\n marginTop: MarginLonghandPropertyData | MarginTopProperty<string | number> | null | undefined\n marginRight: MarginLonghandPropertyData | MarginRightProperty<string | number> | null | undefined\n marginBottom:\n | MarginLonghandPropertyData\n | MarginBottomProperty<string | number>\n | null\n | undefined\n marginLeft: MarginLonghandPropertyData | MarginLeftProperty<string | number> | null | undefined\n}\n\nexport function marginPropertyDataToStyle(\n data: MarginPropertyData,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n const marginTop = data.marginTop ?? defaultValue.marginTop\n const marginRight = data.marginRight ?? defaultValue.marginRight\n const marginBottom = data.marginBottom ?? defaultValue.marginBottom\n const marginLeft = data.marginLeft ?? defaultValue.marginLeft\n const style: CSSObject = {}\n\n if (marginTop != null) style.marginTop = lengthDataToString(marginTop)\n if (marginRight != null) style.marginRight = lengthDataToString(marginRight)\n if (marginBottom != null) style.marginBottom = lengthDataToString(marginBottom)\n if (marginLeft != null) style.marginLeft = lengthDataToString(marginLeft)\n\n return style\n}\n","import type { LengthData } from './length'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/percentage */\nexport type PercentageData = { value: number; unit: '%' }\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/length-percentage */\nexport type LengthPercentageData = LengthData | PercentageData | number | string\n\nexport function lengthPercentageDataToString(data: LengthPercentageData): string {\n if (typeof data === 'object') return `${data.value}${data.unit}`\n\n if (typeof data === 'number') return `${data}px`\n\n return data\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n} from 'csstype'\nimport { LengthPercentageData, lengthPercentageDataToString } from './length-percentage'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius#constituent_properties */\nexport type BorderRadiusLonghandPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderRadiusPropertyData = {\n borderTopLeftRadius?:\n | LengthPercentageData\n | BorderTopLeftRadiusProperty<string | number>\n | null\n | undefined\n borderTopRightRadius?:\n | LengthPercentageData\n | BorderTopRightRadiusProperty<string | number>\n | null\n | undefined\n borderBottomRightRadius?:\n | LengthPercentageData\n | BorderBottomRightRadiusProperty<string | number>\n | null\n | undefined\n borderBottomLeftRadius?:\n | LengthPercentageData\n | BorderBottomLeftRadiusProperty<string | number>\n | null\n | undefined\n}\n\nexport function borderRadiusPropertyDataToStyle(\n data: BorderRadiusPropertyData,\n defaultValue: BorderRadiusPropertyData = {},\n): CSSObject {\n const borderTopLeftRadius = data.borderTopLeftRadius ?? defaultValue.borderTopLeftRadius\n const borderTopRightRadius = data.borderTopRightRadius ?? defaultValue.borderTopRightRadius\n const borderBottomRightRadius =\n data.borderBottomRightRadius ?? defaultValue.borderBottomRightRadius\n const borderBottomLeftRadius = data.borderBottomLeftRadius ?? defaultValue.borderBottomLeftRadius\n const style: CSSObject = {}\n\n if (borderTopLeftRadius != null) {\n style.borderTopLeftRadius = lengthPercentageDataToString(borderTopLeftRadius)\n }\n\n if (borderTopRightRadius != null) {\n style.borderTopRightRadius = lengthPercentageDataToString(borderTopRightRadius)\n }\n\n if (borderBottomRightRadius != null) {\n style.borderBottomRightRadius = lengthPercentageDataToString(borderBottomRightRadius)\n }\n\n if (borderBottomLeftRadius != null) {\n style.borderBottomLeftRadius = lengthPercentageDataToString(borderBottomLeftRadius)\n }\n\n return style\n}\n","import type { ColorValue as Color } from './types'\n\nexport function colorToString(color?: Color): string {\n return color && color.swatch\n ? `hsla(${color.swatch.hue},${color.swatch.saturation}%,${color.swatch.lightness}%,${color.alpha})`\n : ''\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n BorderBottomProperty,\n BorderLeftProperty,\n BorderProperty,\n BorderRightProperty,\n BorderStyleProperty,\n BorderTopProperty,\n} from 'csstype'\nimport { colorToString } from '../components/utils/colorToString'\nimport { ColorValue } from '../components/utils/types'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyleProperty\n color?: ColorValue | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop?:\n | BorderSideShorthandPropertyData\n | BorderTopProperty<string | number>\n | null\n | undefined\n borderRight?:\n | BorderSideShorthandPropertyData\n | BorderRightProperty<string | number>\n | null\n | undefined\n borderBottom?:\n | BorderSideShorthandPropertyData\n | BorderBottomProperty<string | number>\n | null\n | undefined\n borderLeft?:\n | BorderSideShorthandPropertyData\n | BorderLeftProperty<string | number>\n | null\n | undefined\n}\n\nexport function borderPropertyDataToStyle(\n data: BorderPropertyData,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n const borderTop = data.borderTop ?? defaultValue.borderTop\n const borderRight = data.borderRight ?? defaultValue.borderRight\n const borderBottom = data.borderBottom ?? defaultValue.borderBottom\n const borderLeft = data.borderLeft ?? defaultValue.borderLeft\n const style: CSSObject = {}\n\n if (borderTop != null) style.borderTop = borderSideToString(borderTop)\n if (borderRight != null) style.borderRight = borderSideToString(borderRight)\n if (borderBottom != null) style.borderBottom = borderSideToString(borderBottom)\n if (borderLeft != null) style.borderLeft = borderSideToString(borderLeft)\n\n return style\n}\n\nfunction borderSideToString(\n borderSide: BorderSideShorthandPropertyData | BorderProperty<string | number>,\n): string {\n if (typeof borderSide === 'string') return borderSide\n\n if (typeof borderSide === 'number') return `${borderSide}px`\n\n const { width, color, style } = borderSide\n\n return `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n}\n","import { WidthProperty } from 'csstype'\nimport { CSSObject } from '@emotion/css'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n WidthValue,\n PaddingValue,\n MarginValue,\n BorderRadiusValue,\n TextStyleValue,\n} from '../../prop-controllers/descriptors'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport { PaddingPropertyData, paddingPropertyDataToStyle } from '../../css/padding'\nimport { MarginPropertyData, marginPropertyDataToStyle } from '../../css/margin'\nimport { BorderRadiusPropertyData, borderRadiusPropertyDataToStyle } from '../../css/border-radius'\nimport { BorderPropertyData, borderPropertyDataToStyle } from '../../css/border'\nimport { BorderPropControllerData } from '../hooks/useBorder'\nimport { colorToString } from './colorToString'\nimport { BoxShadowData, BoxShadowPropControllerData } from '../hooks'\n\nexport function responsiveStyle<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>>(\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return joinResponsiveValues(responsiveValues, join, strategy).reduce(\n (acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return {\n ...acc,\n [mediaQuery]: {\n ...(acc[mediaQuery] as CSSObject),\n ...value,\n },\n }\n },\n {} as CSSObject,\n )\n}\n\nexport function responsiveWidth(\n widthData: WidthValue | undefined,\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): CSSObject {\n return {\n maxWidth: '100%',\n ...responsiveStyle([widthData], ([width = defaultValue]) => ({\n width: typeof width === 'object' ? `${width.value}${width.unit}` : width,\n })),\n }\n}\n\nexport function responsivePadding(\n paddingData: PaddingValue | undefined,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n return responsiveStyle([paddingData], ([padding = {} as PaddingPropertyData]) =>\n paddingPropertyDataToStyle(\n padding,\n Object.assign(\n { paddingTop: 0, paddingRight: 0, paddingBottom: 0, paddingLeft: 0 },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveMargin(\n marginData: MarginValue | undefined,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n return responsiveStyle([marginData], ([margin = {} as MarginPropertyData]) =>\n marginPropertyDataToStyle(\n margin,\n Object.assign(\n { marginTop: 0, marginRight: 'auto', marginBottom: 0, marginLeft: 'auto' },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveBorderRadius(\n borderRadiusData: BorderRadiusValue | undefined,\n defaultValue: BorderRadiusPropertyData = {} as BorderRadiusPropertyData,\n): CSSObject {\n return responsiveStyle([borderRadiusData], ([borderRadius = {}]) =>\n borderRadiusPropertyDataToStyle(\n borderRadius,\n Object.assign(\n {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0,\n },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveBorder(\n borderData: BorderPropControllerData | undefined,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n return responsiveStyle([borderData], ([border = {}]) =>\n borderPropertyDataToStyle(\n border,\n Object.assign(\n {\n borderTop: '0px solid black',\n borderRight: '0px solid black',\n borderBottom: '0px solid black',\n borderLeft: '0px solid black',\n },\n defaultValue,\n ),\n ),\n )\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function responsiveGridItem(props: {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}): CSSObject {\n return {\n display: 'flex',\n ...responsiveStyle(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n ),\n }\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function responsiveShadow(value: BoxShadowPropControllerData | undefined): CSSObject {\n return responsiveStyle([value], ([shadow = []]) => ({\n boxShadow: getBoxShadow(shadow),\n }))\n}\n\nexport function responsiveTextStyle(value: TextStyleValue | undefined): CSSObject {\n return responsiveStyle(\n [value],\n ([\n textStyle = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n ]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return {\n ...(fontFamily == null ? {} : { fontFamily: `\"${fontFamily}\"` }),\n ...(fontWeight == null ? {} : { fontWeight }),\n ...(letterSpacing == null ? {} : { letterSpacing }),\n ...(fontSize == null ? {} : { fontSize: `${fontSize.value}${fontSize.unit}` }),\n ...(textTransform.includes('uppercase') ? { textTransform: 'uppercase' } : {}),\n ...(fontStyle.includes('italic') ? { fontStyle: 'italic' } : {}),\n }\n },\n )\n}\n","import { CSSObject } from '@emotion/css'\n\nimport { useBorder, BorderSide } from '../../../components/hooks'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\n\nimport {\n FontSizePropertyData,\n StyleControlData,\n StyleControlDefinition,\n StyleControlProperty,\n WidthPropertyData,\n} from '../../../controls'\nimport { useStyle } from '../use-style'\nimport { BorderRadiusLonghandPropertyData } from '../../../css/border-radius'\nimport { lengthPercentageDataToString } from '../../../css/length-percentage'\nimport { marginPropertyDataToStyle } from '../../../css/margin'\nimport { paddingPropertyDataToStyle } from '../../../css/padding'\n\nconst defaultMargin = {\n marginTop: 0,\n marginRight: 'auto',\n marginBottom: 0,\n marginLeft: 'auto',\n}\n\nconst defaultPadding = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n}\n\nfunction useStyleControlCssObject(\n style: StyleControlData | undefined,\n controlDefinition: StyleControlDefinition,\n): CSSObject {\n const { properties } = controlDefinition.config\n\n return {\n ...(properties.includes(StyleControlProperty.Width) && {\n maxWidth: '100%',\n }),\n ...responsiveStyle(\n [\n style?.width,\n style?.margin,\n style?.padding,\n useBorder(style?.border),\n style?.borderRadius,\n style?.textStyle,\n ] as const,\n ([width, margin, padding, border, borderRadius, textStyle]) => ({\n ...(properties.includes(StyleControlProperty.Width) && {\n width: widthToString(width) ?? '100%',\n }),\n ...(properties.includes(StyleControlProperty.Margin) &&\n marginPropertyDataToStyle(margin ?? defaultMargin, defaultMargin)),\n ...(properties.includes(StyleControlProperty.Padding) &&\n paddingPropertyDataToStyle(padding ?? defaultPadding, defaultPadding)),\n ...(properties.includes(StyleControlProperty.Border) && {\n borderTop: borderSideToString(border?.borderTop) ?? '0 solid black',\n borderRight: borderSideToString(border?.borderRight) ?? '0 solid black',\n borderBottom: borderSideToString(border?.borderBottom) ?? '0 solid black',\n borderLeft: borderSideToString(border?.borderLeft) ?? '0 solid black',\n }),\n ...(properties.includes(StyleControlProperty.BorderRadius) && {\n borderTopLeftRadius: borderRadiusToString(borderRadius?.borderTopLeftRadius) ?? 0,\n borderTopRightRadius: borderRadiusToString(borderRadius?.borderTopRightRadius) ?? 0,\n borderBottomRightRadius: borderRadiusToString(borderRadius?.borderBottomRightRadius) ?? 0,\n borderBottomLeftRadius: borderRadiusToString(borderRadius?.borderBottomLeftRadius) ?? 0,\n }),\n ...(properties.includes(StyleControlProperty.TextStyle) && {\n ...(textStyle?.fontFamily && { fontFamily: `\"${textStyle.fontFamily}\"` }),\n ...(textStyle?.letterSpacing && { letterSpacing: textStyle.letterSpacing }),\n ...(textStyle?.fontSize && { fontSize: fontSizeToString(textStyle.fontSize) }),\n ...(textStyle?.fontWeight && { fontWeight: textStyle.fontWeight }),\n textTransform: textStyle?.textTransform ?? [],\n fontStyle: textStyle?.fontStyle ?? [],\n }),\n }),\n ),\n }\n\n function widthToString(widthProperty: WidthPropertyData | undefined): string | null {\n if (widthProperty == null) return null\n\n return lengthPercentageDataToString(widthProperty)\n }\n\n function borderSideToString(borderSide: BorderSide | null | undefined): string | null {\n if (borderSide == null) return null\n\n const { width, color, style } = borderSide\n return `${width != null ? width : 0}px ${style} ${\n color != null ? colorToString(color) : 'black'\n }`\n }\n\n function borderRadiusToString(\n borderRadius: BorderRadiusLonghandPropertyData | null | undefined,\n ): string | null {\n if (borderRadius == null) return null\n\n return lengthPercentageDataToString(borderRadius)\n }\n\n function fontSizeToString(fontSize: NonNullable<FontSizePropertyData>) {\n return `${fontSize.value}${fontSize.unit}`\n }\n}\n\nexport type StyleControlFormattedValue = string\n\nexport function useFormattedStyle(\n styleControlData: StyleControlData | undefined,\n controlDefinition: StyleControlDefinition,\n): StyleControlFormattedValue {\n const style = useStyleControlCssObject(styleControlData, controlDefinition)\n\n return useStyle(style)\n}\n","type Props<H extends (...args: any[]) => any> = {\n /**\n * `<RenderHook>` requires key that changes whenever the `hook` prop changes to ensure the rules of\n * hooks are followed.\n */\n key: string\n\n hook: H\n parameters: Parameters<H>\n children(result: ReturnType<H>): JSX.Element\n}\n\nexport function RenderHook<H extends (...args: any[]) => any>({\n hook: useHook,\n parameters,\n children,\n}: Props<H>) {\n return children(useHook(...parameters))\n}\n","import { CheckboxControlData, CheckboxControlDefinition } from '../../../controls'\n\nexport type CheckboxControlValue<T extends CheckboxControlDefinition> =\n undefined extends T['config']['defaultValue'] ? boolean | undefined : boolean\n\nexport function useCheckboxControlValue<T extends CheckboxControlDefinition>(\n data: CheckboxControlData | undefined,\n definition: T,\n): CheckboxControlValue<T> {\n return (data ?? definition.config.defaultValue) as CheckboxControlValue<T>\n}\n","import Color from 'color'\nimport { ColorControlData, ColorControlDefinition } from '../../../controls/color'\nimport { useSwatch } from '../hooks/makeswift-api'\n\nexport type ColorControlValue<T extends ColorControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useColorValue<T extends ColorControlDefinition>(\n data: ColorControlData | undefined,\n definition: T,\n): ColorControlValue<any> {\n const swatchId = data?.swatchId ?? null\n const swatch = useSwatch(swatchId)\n const alpha = data?.alpha ?? 1\n\n if (swatch == null) {\n const { defaultValue } = definition.config\n\n if (defaultValue === undefined) return undefined as ColorControlValue<T>\n\n let defaultColor\n try {\n defaultColor = Color(definition.config.defaultValue)\n } catch {\n defaultColor = Color()\n }\n\n return defaultColor.rgb().string()\n }\n\n return Color({ h: swatch.hue, s: swatch.saturation, l: swatch.lightness })\n .alpha(alpha)\n .rgb()\n .string()\n}\n","import {\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlDefinitionOption,\n} from '../../../controls'\n\nexport type ComboboxControlValue<T extends ComboboxControlDefinition> =\n | ComboboxControlDefinitionOption<T>\n | undefined\n\nexport function useComboboxControlValue<T extends ComboboxControlDefinition>(\n data: ComboboxControlData<T> | undefined,\n): ComboboxControlValue<T> {\n return data?.value\n}\n","import {\n ControlDefinition,\n ImageControlData,\n ImageControlDefinition,\n ImageControlValueFormat,\n} from '../../../controls'\nimport { useFile } from '../hooks/makeswift-api'\n\ntype ImageWithDimensions = {\n url: string\n dimensions: { width: number; height: number }\n}\n\nexport type ImageControlValue = string | ImageWithDimensions | undefined\n\nexport function useImageControlValue(\n data: ImageControlData | undefined,\n definition: ImageControlDefinition,\n): ImageControlValue {\n const format = definition.config.format ?? ImageControlValueFormat.URL\n const fileId = data ?? null\n const file = useFile(fileId)\n\n if (format === ImageControlValueFormat.URL) {\n return file?.publicUrl\n }\n\n if (file == null || file.dimensions == null) return undefined\n\n return {\n url: file.publicUrl,\n dimensions: { width: file.dimensions.width, height: file.dimensions.height },\n }\n}\n\nexport type ResolveImageControlValue<T extends ControlDefinition> = T extends ImageControlDefinition\n ? undefined extends T['config']['format']\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.URL\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.WithDimensions\n ? ImageWithDimensions | undefined\n : never\n : never\n","import { MouseEvent, useCallback, useMemo } from 'react'\n\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport { useElementId } from '../'\nimport { LinkControlData, LinkControlDefinition } from '../../../controls'\nimport { usePagePathnameSlice } from '../hooks/makeswift-api'\n\ntype LinkValue = {\n href: string\n target: '_blank' | '_self' | undefined\n onClick: (event: MouseEvent<HTMLElement>) => void\n}\n\nexport type LinkControlValue<_T extends LinkControlDefinition> = LinkValue | undefined\n\nexport function useLinkControlValue<T extends LinkControlDefinition>(\n link: LinkControlData | undefined,\n _definition: T,\n): LinkControlValue<T> {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (event.defaultPrevented) return\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n },\n [link, href, block],\n )\n\n const res = useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick])\n\n return res\n}\n","import { useEffect, useState } from 'react'\nimport { ListControl, ListControlData, ListControlDefinition } from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\ntype ListControlItemValue<T extends ListControlDefinition> = ControlDefinitionValue<\n T['config']['type']\n>\n\nexport type ListControlValue<T extends ListControlDefinition> = ListControlItemValue<T>[]\n\ntype ListControlValueProps<T extends ListControlDefinition> = {\n definition: T\n data: ListControlData<T> | undefined\n children(value: ListControlValue<T>): JSX.Element\n control: ListControl\n}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ListControlValueProps<T>): JSX.Element {\n const [controls, setControls] = useState<Map<string, AnyPropController> | undefined>(new Map())\n\n useEffect(() => {\n if (control == null || data == null) return\n\n // This is not ideal because we're setting the itemsControl from the ListControlValue.\n // This is because right now we don't have a subscribeToValue function inside the control.\n // We can improve this by adding the subscribeToValue to createPropController and by\n // moving the setItemsControl to the control itself.\n setControls(control.setItemsControl(data))\n }, [data, control])\n\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue\n definition={definition.config.type}\n data={item.value}\n control={controls?.get(item.id)}\n >\n {value => renderFn([value as ListControlItemValue<T>, ...listControlValue])}\n </ControlValue>\n ),\n children,\n )([])\n}\n","import { NumberControlData, NumberControlDefinition } from '../../../controls'\n\nexport type NumberControlValue<T extends NumberControlDefinition> =\n undefined extends T['config']['defaultValue'] ? NumberControlData | undefined : NumberControlData\n\nexport function useNumber<T extends NumberControlDefinition>(\n numberControlData: number | undefined,\n controlDefinition: T,\n): NumberControlValue<T> {\n return (numberControlData ?? controlDefinition.config.defaultValue) as NumberControlValue<T>\n}\n","import {\n SelectControlData,\n SelectControlDefinition,\n SelectControlDefinitionOption,\n} from '../../../controls'\n\nexport type SelectControlValue<T extends SelectControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? SelectControlDefinitionOption<T> | undefined\n : SelectControlDefinitionOption<T>\n\nexport function useSelectControlValue<T extends SelectControlDefinition>(\n data: SelectControlData<T> | undefined,\n definition: T,\n): SelectControlValue<T> {\n return (data ?? definition?.config.defaultValue) as SelectControlValue<T>\n}\n","import { ShapeControl, ShapeControlData, ShapeControlDefinition } from '../../../controls/shape'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\nexport type ShapeControlValue<T extends ShapeControlDefinition> = {\n [K in keyof T['config']['type']]: ControlDefinitionValue<T['config']['type'][K]>\n}\n\ntype ShapeControlValueProps<T extends ShapeControlDefinition> = {\n definition: T\n data: ShapeControlData<T> | undefined\n children(value: ShapeControlValue<T>): JSX.Element\n control: ShapeControl\n}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue\n definition={controlDefinition}\n data={data?.[key]}\n control={control?.controls.get(key)}\n >\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\n}\n","import { BoxModel, getBox } from '../../state/modules/box-models'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function pollBoxModel({\n element,\n onBoxModelChange,\n}: {\n element: Element\n onBoxModelChange(boxModel: BoxModel | null): void\n}): () => void {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n const measuredBoxModel = getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n onBoxModelChange(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n onBoxModelChange(null)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { Element } from '../../../runtimes/react'\nimport { getIndexes } from '../../../components/utils/columns'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\nimport { useStyle } from '../use-style'\nimport { cx } from '@emotion/css'\nimport { pollBoxModel } from '../poll-box-model'\n\nexport type SlotControlValue = ReactNode\n\nexport function useSlot(data: SlotControlData, control: SlotControl | null) {\n // TODO(miguel): While the UI shouldn't allow the state, we should probably check that at least\n // one element is visible.\n if (data == null || data.elements.length === 0) {\n return <Slot.Placeholder control={control} />\n }\n\n return (\n <Slot control={control}>\n {data.elements.map((element, i) => (\n <Slot.Item key={element.key} control={control} grid={data.columns} index={i}>\n <Element element={element} />\n </Slot.Item>\n ))}\n </Slot>\n )\n}\n\ntype SlotProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n children?: ReactNode\n className?: string\n}\n\nexport function Slot<T extends ElementType = 'div'>({\n as,\n control,\n children,\n className,\n ...restOfProps\n}: SlotProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotProps<T>>) {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\nSlot.Placeholder = SlotPlaceholder\n\nSlot.Item = SlotItem\n\ntype SlotItemProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n grid: SlotControlData['columns']\n index: number\n children?: ReactNode\n className?: string\n}\n\nfunction SlotItem<T extends ElementType = 'div'>({\n as,\n control,\n grid,\n index,\n children,\n className,\n ...restOfProps\n}: SlotItemProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotItemProps<T>>): JSX.Element {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n ...responsiveStyle([grid], ([{ count = 12, spans = [[12]] } = {}]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, index)\n const span = spans[rowIndex][columnIndex]\n const flexBasis = `calc(100% * ${(span / count).toFixed(5)})`\n\n return span === 0 ? { display: 'none' } : { flexBasis, minWidth: flexBasis }\n }),\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeItemBoxModel(index, boxModel),\n })\n }, [element, control, index])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\ntype SlotPlaceholderProps = {\n control: SlotControl | null\n}\n\nfunction SlotPlaceholder({ control }: SlotPlaceholderProps): JSX.Element {\n const [element, setElement] = useState<Element | null>(null)\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <div\n ref={setElement}\n className={useStyle({\n width: '100%',\n background: 'rgba(161, 168, 194, 0.18)',\n height: '80px',\n })}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n height=\"100%\"\n className={useStyle({ overflow: 'visible', padding: 8 })}\n >\n <rect\n x={0}\n y={0}\n width=\"100%\"\n height=\"100%\"\n strokeWidth={2}\n strokeDasharray=\"4 2\"\n fill=\"none\"\n stroke=\"rgba(161, 168, 194, 0.40)\"\n rx=\"4\"\n ry=\"4\"\n />\n </svg>\n </div>\n )\n}\n","import { TextAreaControlData, TextAreaControlDefinition } from '../../../controls'\n\nexport type TextAreaControlValue<T extends TextAreaControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextAreaValue<T extends TextAreaControlDefinition>(\n data: TextAreaControlData | undefined,\n definition: T,\n): TextAreaControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextAreaControlValue<T>\n}\n","import { TextInputControlData, TextInputControlDefinition } from '../../../controls'\n\nexport type TextInputControlValue<T extends TextInputControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextInputValue<T extends TextInputControlDefinition>(\n data: TextInputControlData | undefined,\n definition: T,\n): TextInputControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextInputControlValue<T>\n}\n","import {\n CheckboxControlData,\n CheckboxControlDefinition,\n CheckboxControlType,\n ColorControlData,\n ColorControlDefinition,\n ColorControlType,\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlType,\n ControlDefinition,\n ControlDefinitionData,\n ImageControlData,\n ImageControlDefinition,\n ImageControlType,\n LinkControlData,\n LinkControlDefinition,\n LinkControlType,\n ListControl,\n ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControl,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n SlotControl,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { RenderHook } from '../components'\nimport { CheckboxControlValue, useCheckboxControlValue } from './checkbox'\nimport { ColorControlValue, useColorValue } from './color'\nimport { ComboboxControlValue, useComboboxControlValue } from './combobox'\nimport { ResolveImageControlValue, useImageControlValue } from './image'\nimport { LinkControlValue, useLinkControlValue } from './link'\nimport { ListControlValue } from './list'\nimport { NumberControlValue, useNumber } from './number'\nimport { SelectControlValue, useSelectControlValue } from './select'\nimport { ShapeControlValue } from './shape'\nimport { SlotControlValue, useSlot } from './slot'\nimport { TextAreaControlValue, useTextAreaValue } from './text-area'\nimport { TextInputControlValue, useTextInputValue } from './text-input'\n\nexport type ControlDefinitionValue<T extends ControlDefinition> =\n T extends CheckboxControlDefinition\n ? CheckboxControlValue<T>\n : T extends NumberControlDefinition\n ? NumberControlValue<T>\n : T extends TextInputControlDefinition\n ? TextInputControlValue<T>\n : T extends TextAreaControlDefinition\n ? TextAreaControlValue<T>\n : T extends SelectControlDefinition\n ? SelectControlValue<T>\n : T extends ColorControlDefinition\n ? ColorControlValue<T>\n : T extends ImageControlDefinition\n ? ResolveImageControlValue<T>\n : T extends LinkControlDefinition\n ? LinkControlValue<T>\n : T extends ComboboxControlDefinition\n ? ComboboxControlValue<T>\n : T extends ShapeControlDefinition\n ? ShapeControlValue<T>\n : T extends ListControlDefinition\n ? ListControlValue<T>\n : T extends SlotControlDefinition\n ? SlotControlValue\n : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n control?: AnyPropController\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\n control,\n}: ControlValueProps<T>): JSX.Element {\n switch (definition.type) {\n case CheckboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useCheckboxControlValue}\n parameters={[data as CheckboxControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case NumberControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useNumber}\n parameters={[data as NumberControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextInputControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextInputValue}\n parameters={[data as TextInputControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextAreaControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextAreaValue}\n parameters={[data as TextAreaControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case SelectControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSelectControlValue}\n parameters={[data as SelectControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ColorControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useColorValue}\n parameters={[data as ColorControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ImageControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useImageControlValue}\n parameters={[data as ImageControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case LinkControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useLinkControlValue}\n parameters={[data as LinkControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ComboboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useComboboxControlValue}\n parameters={[data as ComboboxControlData]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ShapeControlType:\n return (\n <ShapeControlValue\n definition={definition}\n data={data as ShapeControlData}\n control={control as ShapeControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue\n definition={definition}\n data={data as ListControlData}\n control={control as ListControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n case SlotControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSlot}\n parameters={[data as unknown as SlotControlData, control as SlotControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import dynamic from 'next/dynamic'\nimport { ReactNode, useCallback } from 'react'\nimport {\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n} from '../../../controls/rich-text'\nimport { forwardNextDynamicRef } from '../../../next'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../state/modules/prop-controller-handles'\n\nconst Text = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('../../../components/builtin/Text'))),\n)\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextControlDefinition }\n\nexport function useRichText(data: RichTextControlData, control: RichTextControl | null) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n return <Text text={data} ref={textCallbackRef} />\n}\n","import { useRef } from 'react'\n\nimport { useDocumentKey, useSelector, useStore } from '.'\nimport * as ReactPage from '../../state/react-page'\nimport { Props } from '../../prop-controllers'\nimport {\n BorderDescriptor,\n BorderPropControllerFormat,\n BorderRadiusDescriptor,\n BorderRadiusPropControllerFormat,\n BorderRadiusValue,\n BorderValue,\n Descriptor,\n MarginDescriptor,\n MarginPropControllerFormat,\n MarginValue,\n PaddingDescriptor,\n PaddingPropControllerFormat,\n PaddingValue,\n ResolveOptions,\n ResponsiveValue,\n ShadowsDescriptor,\n ShadowsPropControllerFormat,\n ShadowsValue,\n WidthPropControllerFormat,\n WidthDescriptor,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport {\n useBoxShadow,\n useResponsiveColor,\n useBorder as useBorderData,\n} from '../../components/hooks'\nimport type { ColorValue } from '../../components/utils/types'\nimport {\n responsiveBorder,\n responsiveBorderRadius,\n responsiveMargin,\n responsivePadding,\n responsiveShadow,\n responsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(responsiveWidth(value, descriptor.options.defaultValue))\n}\n\nexport type ResolveWidthControlValue<T extends Descriptor> = T extends WidthDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? WidthValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof WidthPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof WidthPropControllerFormat.ResponsiveValue\n ? WidthValue | undefined\n : never\n : never\n\nfunction usePaddingStyle(value: PaddingValue | undefined): string {\n return useStyle(responsivePadding(value))\n}\n\nexport type ResolvePaddingControlValue<T extends Descriptor> = T extends PaddingDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? PaddingValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof PaddingPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof PaddingPropControllerFormat.ResponsiveValue\n ? PaddingValue | undefined\n : never\n : never\n\nfunction useMarginStyle(value: MarginValue | undefined): string {\n return useStyle(responsiveMargin(value))\n}\n\nexport type ResolveMarginControlValue<T extends Descriptor> = T extends MarginDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? MarginValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof MarginPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof MarginPropControllerFormat.ResponsiveValue\n ? MarginValue | undefined\n : never\n : never\n\nexport function useBorderRadiusStyle(value: BorderRadiusValue | undefined): string {\n return useStyle(responsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(responsiveShadow(shadowValue ?? undefined))\n}\n\nexport type ResolveBorderRadiusControlValue<T extends Descriptor> = T extends BorderRadiusDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderRadiusValue | undefined\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ResponsiveValue\n ? BorderRadiusValue | undefined\n : never\n : never\n\nexport function useBorderStyle(value: BorderValue | undefined): string | BorderValue | undefined {\n const borderData = useBorderData(value)\n\n return useStyle(responsiveBorder(borderData ?? undefined))\n}\nexport type ResolveShadowsControlValue<T extends Descriptor> = T extends ShadowsDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? ShadowsValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof ShadowsPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof ShadowsPropControllerFormat.ResponsiveValue\n ? ShadowsValue | undefined\n : never\n : never\n\nexport type ResolveBorderControlValue<T extends Descriptor> = T extends BorderDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof BorderPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderPropControllerFormat.ResponsiveValue\n ? BorderValue | undefined\n : never\n : never\n\ntype PropsValueProps = {\n element: ReactPage.ElementData\n children(props: Record<string, unknown>): JSX.Element\n}\n\nexport function PropsValue({ element, children }: PropsValueProps): JSX.Element {\n const store = useStore()\n const propControllerDescriptorsRef = useRef(\n ReactPage.getComponentPropControllerDescriptors(store.getState(), element.type) ?? {},\n )\n const props = element.props as Record<string, any>\n const documentKey = useDocumentKey()\n\n const propControllers = useSelector(state => {\n if (documentKey == null) return null\n\n return ReactPage.getPropControllers(state, documentKey, element.key)\n })\n\n return Object.entries(propControllerDescriptorsRef.current).reduceRight(\n (renderFn, [propName, descriptor]) =>\n propsValue => {\n switch (descriptor.type) {\n case CheckboxControlType:\n case NumberControlType:\n case TextInputControlType:\n case TextAreaControlType:\n case SelectControlType:\n case ColorControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n case RichTextControlType:\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n case SlotControlType: {\n const control = (propControllers?.[propName] ?? null) as SlotControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useSlot}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case Props.Types.Width:\n switch (descriptor.options.format) {\n case WidthPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useWidthStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Padding:\n switch (descriptor.options.format) {\n case PaddingPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={usePaddingStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Margin:\n switch (descriptor.options.format) {\n case MarginPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useMarginStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.BorderRadius:\n switch (descriptor.options.format) {\n case BorderRadiusPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderRadiusStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Shadows:\n switch (descriptor.options.format) {\n case ShadowsPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useShadowsStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Border:\n switch (descriptor.options.format) {\n case BorderPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.ResponsiveColor:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useResponsiveColor}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n },\n children,\n )({})\n}\n","import { MutableRefObject, useImperativeHandle, useRef } from 'react'\nimport { ReactInstance } from 'react'\nimport { forwardRef } from 'react'\nimport { Component, ReactNode } from 'react'\nimport { findDOMNode } from 'react-dom'\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberReconciler.new.js#L179-L244\n */\nfunction suppressWarningAndFindDomNode(\n instance: ReactInstance | null | undefined,\n): Element | Text | null {\n const error = console.error\n\n console.error = (...args) => {\n if (typeof args[0] === 'string' && args[0].includes('%s is deprecated in StrictMode.')) return\n\n return error.apply(console, args)\n }\n\n const foundDomNode = findDOMNode(instance)\n\n console.error = error\n\n return foundDomNode\n}\n\ntype FindDomNodeClassComponentProps = {\n innerRef: MutableRefObject<(() => Element | Text | null) | null>\n children?: ReactNode\n}\n\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n constructor(props: FindDomNodeClassComponentProps) {\n super(props)\n\n this.props.innerRef.current = () => suppressWarningAndFindDomNode(this)\n }\n\n render() {\n return <>{this.props.children}</>\n }\n}\n\ntype FindDomNodeProps = {\n children?: ReactNode\n}\n\nexport const FindDomNode = forwardRef<() => Element | Text | null, FindDomNodeProps>(\n function FindDomNode(props, ref) {\n const findDomNodeRef = useRef<() => Element | Text | null>(null)\n\n useImperativeHandle(ref, () => () => findDomNodeRef.current?.() ?? null, [])\n\n return <FindDomNodeClassComponent {...props} innerRef={findDomNodeRef} />\n },\n)\n","import { BoxModel, BoxModelHandle } from '../../box-model'\nimport { Descriptor } from '../../prop-controllers/descriptors'\nimport { DescriptorsPropControllers } from '../../prop-controllers/instances'\nimport { isMeasurable, measure } from '../../state/modules/box-models'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../state/modules/prop-controller-handles'\n\nexport class ElementImperativeHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> implements BoxModelHandle, PropControllersHandle<T>\n{\n private getCurrent: () => unknown = () => null\n private lastPropControllers: DescriptorsPropControllers<T> | null = null\n\n callback(getCurrent: () => unknown) {\n const current = this.getCurrent()\n\n if (current === null) this.setPropControllers(null)\n\n this.getCurrent = getCurrent\n\n if (this.lastPropControllers !== null) this.setPropControllers(this.lastPropControllers)\n }\n\n getBoxModel(): BoxModel | null {\n const current = this.getCurrent()\n\n return isMeasurable(current) ? measure(current) : null\n }\n\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void {\n const current = this.getCurrent()\n\n if (isPropControllersHandle(current)) current.setPropControllers(propControllers)\n\n this.lastPropControllers = propControllers\n }\n\n getDomNode(): Element | null {\n const current = this.getCurrent()\n\n if (isDomNodeHandle(current)) return current.getDomNode()\n\n return current instanceof Element ? current : null\n }\n}\n\ntype DomNodeHandle = {\n getDomNode(): Element | null\n}\n\nexport function isDomNodeHandle(value: unknown): value is DomNodeHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'getDomNode' in value &&\n typeof (value as { getDomNode: unknown }).getDomNode === 'function'\n ) {\n return true\n }\n\n return false\n}\n","import {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useMemo,\n} from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector'\nimport dynamic from 'next/dynamic'\n\nimport * as ReactPage from '../../state/react-page'\nimport type * as ReactBuilderPreview from '../../state/react-builder-preview'\nimport {\n mountComponentEffect,\n registerComponentEffect,\n registerComponentHandleEffect,\n registerReactComponentEffect,\n} from '../../state/actions'\nimport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from '../../prop-controllers'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport { registerBuiltinComponents } from '../../components/builtin/register'\nimport { MakeswiftClient } from '../../api/react'\nimport { FallbackComponent } from '../../components/shared/FallbackComponent'\nimport { PropsValue } from './controls'\nimport { FindDomNode } from './find-dom-node'\nimport { useGlobalElement } from './hooks/makeswift-api'\nimport { ElementImperativeHandle } from './element-imperative-handle'\nimport { BuilderEditMode } from '../../state/modules/builder-edit-mode'\n\nexport const storeContextDefaultValue = ReactPage.configureStore()\n\nexport interface ReactRuntime {\n registerComponent<\n P extends Record<string, PropControllerDescriptor>,\n C extends ReactPage.ComponentType<{ [K in keyof P]: PropControllerDescriptorValueType<P[K]> }>,\n >(\n component: C,\n meta: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void\n copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ): ReactPage.Element\n}\n\nfunction createReactRuntime(store: ReactPage.Store): ReactRuntime {\n return {\n registerComponent(component, { type, label, icon = 'Cube40', hidden = false, props }) {\n const unregisterComponent = store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = store.dispatch(\n registerReactComponentEffect(type, component as unknown as ReactPage.ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n },\n copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ) {\n return ReactPage.copyElementTree(store.getState(), elementTree, replacementContext)\n },\n }\n}\n\nexport const ReactRuntime = createReactRuntime(storeContextDefaultValue)\n\nregisterBuiltinComponents(ReactRuntime)\n\nexport const StoreContext = createContext(storeContextDefaultValue)\n\ntype RuntimeProviderProps = {\n client: MakeswiftClient\n preview: boolean\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n}\n\nconst PreviewProvider = dynamic(() => import('./components/PreviewProvider'))\nconst LiveProvider = dynamic(() => import('./components/LiveProvider'))\n\nexport function RuntimeProvider({ preview, ...props }: RuntimeProviderProps): JSX.Element {\n return preview ? <PreviewProvider {...props} /> : <LiveProvider {...props} />\n}\n\nconst PageContext = createContext<string | null>(null)\n\nfunction usePageIdOrNull(): string | null {\n return useContext(PageContext)\n}\n\nexport function usePageId(): string {\n const pageIdOrNull = usePageIdOrNull()\n\n if (pageIdOrNull == null) throw new Error('`usePageId` must be used with `<PageProvider>`')\n\n return pageIdOrNull\n}\n\ntype PageProviderProps = {\n id: string\n children: ComponentPropsWithoutRef<typeof PageContext['Provider']>['children']\n}\n\nexport function PageProvider({ id, children }: PageProviderProps) {\n return <PageContext.Provider value={id}>{children}</PageContext.Provider>\n}\n\nconst DocumentContext = createContext<string | null>(null)\n\nexport function useDocumentKey(): string | null {\n return useContext(DocumentContext)\n}\n\n/**\n * @note Instead of leveraging `DocumentContext` to detect cycles we have to use a separate\n * construct because not all global element documents are wrapped in `DocumentContext.Provider`. The\n * reason for this is to maintain legacy behavior where we don't register the elements in a global\n * element's document so that they're not selectable. This is clearly suboptimal and the ideal\n * scenario would be to have the builder be aware of multiple documents and only show telegraphs\n * for the document that's currently \"active\".\n */\nconst DocumentCyclesContext = createContext<string[]>([])\n\ntype State = ReactPage.State | ReactBuilderPreview.State\n\nexport function useStore(): ReactPage.Store {\n return useContext(StoreContext)\n}\n\nexport function useSelector<R>(selector: (state: State) => R): R {\n const store = useStore()\n\n return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, selector)\n}\n\nfunction useComponent(type: string): ReactPage.ComponentType | null {\n return useSelector(state => ReactPage.getReactComponent(state, type))\n}\n\nexport function useElementId(elementKey: string | null | undefined): string | null {\n const documentKey = useDocumentKey()\n\n return useSelector(state =>\n documentKey == null || elementKey == null\n ? null\n : ReactPage.getElementId(state, documentKey, elementKey),\n )\n}\n\nfunction useDocument(documentKey: string): ReactPage.Document | null {\n return useSelector(state => ReactPage.getDocument(state, documentKey))\n}\n\nexport function useIsInBuilder(): boolean {\n return useSelector(state => ReactPage.getIsInBuilder(state))\n}\n\nexport function useIsPreview(): boolean {\n return useSelector(state => ReactPage.getIsPreview(state))\n}\n\nexport function useBuilderEditMode(): BuilderEditMode | null {\n return useSelector(state => ReactPage.getBuilderEditMode(state))\n}\n\ntype Dispatch = ReactPage.Dispatch & ReactBuilderPreview.Dispatch\n\nfunction useDispatch(): Dispatch {\n const store = useContext(StoreContext)\n\n return store.dispatch\n}\n\nconst originalError = console.error\nlet patched = false\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberBeginWork.new.js#L1814-L1890\n */\nfunction suppressRefWarning(ownerName: string): void {\n if (patched === false) {\n console.error = (...args) => {\n if (\n typeof args[0] === 'string' &&\n args[0].includes('Function components cannot be given refs.') &&\n args[0].includes(`Check the render method of \\`${ownerName}\\`.`)\n ) {\n return\n }\n\n return originalError(...args)\n }\n\n patched = true\n }\n}\n\ntype ElementDataProps = {\n elementData: ReactPage.ElementData\n}\n\nconst ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={ref} />}\n </PropsValue>\n </Suspense>\n )\n }),\n)\n\nconst DisableRegisterElement = createContext(false)\n\ntype ElementRefereceProps = {\n elementReference: ReactPage.ElementReference\n}\n\nconst ElementReference = memo(\n forwardRef(function ElementReference(\n { elementReference }: ElementRefereceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const globalElement = useGlobalElement(elementReference.value)\n const globalElementData = globalElement?.data as ReactPage.ElementData | undefined\n const elementReferenceDocument = useDocument(elementReference.key)\n const documentKey = elementReference.key\n const documentKeys = useContext(DocumentCyclesContext)\n const providedDocumentKeys = useMemo(\n () => [...documentKeys, documentKey],\n [documentKeys, documentKey],\n )\n\n if (globalElementData == null) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component doesn't exist\"\n />\n )\n }\n\n if (documentKeys.includes(documentKey)) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component contains itself!\"\n />\n )\n }\n\n return (\n <DocumentCyclesContext.Provider value={providedDocumentKeys}>\n {elementReferenceDocument != null ? (\n <Document document={elementReferenceDocument} ref={ref} />\n ) : (\n <DisableRegisterElement.Provider value={true}>\n <ElementData elementData={globalElementData} ref={ref} />\n </DisableRegisterElement.Provider>\n )}\n </DocumentCyclesContext.Provider>\n )\n }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: ElementProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(\n registerComponentHandleEffect(documentKey, elementKey, imperativeHandleRef.current),\n )\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return (\n <FindDomNode ref={findDomNodeCallbackRef}>\n {ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={elementCallbackRef} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={elementCallbackRef} elementData={element} />\n )}\n </FindDomNode>\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentContext.Provider value={document.key}>\n <Element ref={ref} element={document.rootElement} />\n </DocumentContext.Provider>\n )\n }),\n)\n\ntype DocumentReferenceProps = {\n documentReference: ReactPage.DocumentReference\n}\n\nexport const DocumentReference = memo(\n forwardRef(function DocumentReference(\n { documentReference }: DocumentReferenceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const document = useDocument(documentReference.key)\n\n if (document == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Document not found\" />\n }\n\n return <Document ref={ref} document={document} />\n }),\n)\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","getPropControllerDescriptors","getElementSwatchIds","getFileIds","getTypographyIds","getTableIds","getPageIds","getElementChildren","ShapeControlType","ListControlType","Types","isElementReference","hasOwnProperty","APIResourceType","ActionTypes","getAPIResource","APIResources.reducer","APIResources.getSerializedState","APIResources.getHasAPIResource","APIResources.getAPIResource","apiResourceFulfilled","introspectedResourcesFulfilled","typographiesFulfilled","createStore","APIResources.getInitialState","applyMiddleware","thunk","MakeswiftClient","constructor","uri","cacheData","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","prefetch","element","introspectionData","introspect","storeContextDefaultValue","dispatch","getState","readSwatch","swatchId","Swatch","fetchSwatch","readFile","fileId","File","fetchFile","readTypography","typographyId","Typography","fetchTypography","fetchTypographies","typographyIds","readGlobalElement","globalElementId","GlobalElement","fetchGlobalElement","readPagePathnameSlice","pageId","PagePathnameSlice","fetchPagePathnameSlice","readTable","tableId","Table","fetchTable","createTableRecord","columns","request","CreateTableRecordMutation","input","data","readSite","siteId","Site","readPage","Page","readSnippet","snippetId","Snippet","Context","createContext","useContext","client","children","_jsx","SnippetLocation","Body","Head","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","test","type","key","id","props","filterUsedSnippetProperties","builderEnabled","liveEnabled","location","page","isInBuilder","useIsInBuilder","snippets","setSnippets","useState","cachedPage","useCachedPage","oldSnippets","newSnippets","deepEqual","site","useCachedSite","favicon","meta","title","description","keywords","socialImage","canonicalUrl","isIndexingBlocked","seo","fontFamilyParamValue","useMemo","fonts","family","variants","replace","join","googleFonts","edges","filter","edge","activeVariants","activeVariantSpecifiers","variant","some","activeVariant","specifier","filteredSnippets","headSnippets","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","snippetToCleanUp","_Fragment","_jsxs","snippetToElement","child","includes","createDocumentReference","useMakeswiftClient","getSnapshot","useSyncExternalStore","runtimeVersion","isPreview","appOrigin","previewModeScript","makeswiftConnectionCheckScript","MAKESWIFT_CONNECTION_INIT","MAKESWIFT_CONNECTION_CHECK","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","Html","Main","NextScript","Cors","createProxyServer","cookie","serialize","FORWARDED_NEXT_DYNAMIC_REF_KEY","ref","obj","__esModule","default","nextDynamicThunk","Dynamic","loaderComponent","then","moduleOrComponent","resolve","loadForwardedRef","forwardRef","saveForwardedRef","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","params","path","split","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","memo","href","Map","PageMeta","dynamic","MakeswiftComponentType","Props.ElementID","Props.Backgrounds","Props.Width","Props.ResponsiveIconRadioGroup","Props.Margin","Props.Padding","Props.Border","Props.BorderRadius","Props.Shadows","Props.GapY","Props.GapX","Props.ResponsiveSelect","Props.ResponsiveNumber","Props.Checkbox","Props.Grid","Props.TextInput","Props.Link","Props.ResponsiveColor","Props.TextStyle","Props.Images","uuid","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.RichText","ipsum","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","React","serializeStyles","registerStyles","insertStyles","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","isNonNullable","getBorderSwatchIds","getBoxShadowsSwatchIds","getResponsiveColorSwatchIds","joinResponsiveValues","StyleControlProperty","Color","ImageControlValueFormat","useCallback","scrollIntoView","definition","control","controls","setControls","setItemsControl","reduce","renderFn","item","listControlValue","config","get","Object","entries","reduceRight","controlDefinition","shapeControlValue","getBox","elements","length","i","Element","as","className","restOfProps","As","setElement","baseClassName","flexWrap","pollBoxModel","onBoxModelChange","boxModel","changeContainerBoxModel","cx","Slot","Placeholder","SlotPlaceholder","Item","SlotItem","grid","index","responsiveStyle","count","spans","rowIndex","columnIndex","getIndexes","span","flexBasis","toFixed","minWidth","changeItemBoxModel","background","overflow","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","SlotControlType","useSlot","Text","forwardNextDynamicRef","patch","textCallbackRef","handle","isPropControllersHandle","setPropControllers","descriptor","responsiveWidth","options","defaultValue","responsivePadding","responsiveMargin","responsiveBorderRadius","shadowValue","useBoxShadow","responsiveShadow","undefined","borderData","useBorderData","responsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","getPropControllers","propName","propsValue","StyleControlType","useFormattedStyle","RichTextControlType","useRichText","Props","Width","format","WidthPropControllerFormat","ClassName","useWidthStyle","Padding","PaddingPropControllerFormat","usePaddingStyle","Margin","MarginPropControllerFormat","useMarginStyle","BorderRadius","BorderRadiusPropControllerFormat","useBorderRadiusStyle","Shadows","ShadowsPropControllerFormat","useShadowsStyle","Border","BorderPropControllerFormat","useBorderStyle","ResponsiveColor","useResponsiveColor","instance","args","apply","foundDomNode","findDOMNode","FindDomNodeClassComponent","Component","innerRef","suppressWarningAndFindDomNode","FindDomNode","findDomNodeRef","isMeasurable","measure","registerComponent","component","label","icon","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","ReactRuntime","createReactRuntime","registerBuiltinComponents","StoreContext","PreviewProvider","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","DocumentCyclesContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","Suspense","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","globalElementData","elementReferenceDocument","useDocument","documentKeys","providedDocumentKeys","useDispatch","useFindDomNodeRef","imperativeHandleRef","ElementImperativeHandle","findDomNodeCallbackRef","callback","elementCallbackRef","isRegisterElementDisabled","useImperativeHandle","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/components/page/BodySnippet.tsx","../src/api/introspection.ts","../src/next/snapshots.ts","../src/utils/is.ts","../src/utils/shallowEqual.ts","../src/utils/deepEqual.ts","../src/state/modules/api-resources.ts","../src/api/graphql/documents/fragments.ts","../src/api/graphql/documents/queries.ts","../src/state/makeswift-api-client.ts","../src/api/graphql/client.ts","../src/api/react.tsx","../src/components/page/Page.tsx","../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/utils/isErrorWithMessage.ts","../src/next/api-handler.ts","../src/next/dynamic.tsx","../src/next/index.tsx","../src/utils/keys.ts","../src/utils/coalesce.ts","../src/utils/shallowMerge.ts","../src/components/utils/devices.ts","../src/components/builtin/Box/constants.ts","../src/components/builtin/Box/register.ts","../src/components/builtin/Button/register.ts","../src/components/builtin/Carousel/register.ts","../src/components/builtin/Countdown/register.ts","../src/components/builtin/Divider/register.ts","../src/components/builtin/Embed/register.ts","../src/components/builtin/Form/context/FormContext.ts","../src/components/builtin/Form/register.ts","../src/components/builtin/Image/register.ts","../src/components/builtin/Navigation/register.ts","../src/components/builtin/Root/register.ts","../src/components/builtin/SocialLinks/register.ts","../src/components/builtin/Text/register.ts","../src/components/builtin/Video/register.ts","../src/components/builtin/register.ts","../src/runtimes/react/use-style.ts","../src/components/icons/warning-20.svg","../src/components/shared/FallbackComponent/FallbackComponent.tsx","../src/runtimes/react/hooks/makeswift-api.ts","../src/components/hooks/useBorder.ts","../src/components/hooks/useBoxShadow.ts","../src/components/hooks/useResponsiveColor.ts","../src/components/hooks/useMediaQuery.ts","../src/components/utils/columns.ts","../src/css/length.ts","../src/css/padding.ts","../src/css/margin.ts","../src/css/length-percentage.ts","../src/css/border-radius.ts","../src/components/utils/colorToString.ts","../src/css/border.ts","../src/components/utils/responsive-style.ts","../src/runtimes/react/controls/style.ts","../src/runtimes/react/components/render-hook.ts","../src/runtimes/react/controls/checkbox.ts","../src/runtimes/react/controls/color.ts","../src/runtimes/react/controls/combobox.ts","../src/runtimes/react/controls/image.ts","../src/runtimes/react/controls/link.ts","../src/runtimes/react/controls/list.tsx","../src/runtimes/react/controls/number.ts","../src/runtimes/react/controls/select.ts","../src/runtimes/react/controls/shape.tsx","../src/runtimes/react/poll-box-model.ts","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls/rich-text.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../src/runtimes/react/element-imperative-handle.ts","../src/runtimes/react/index.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import {\n getElementChildren,\n getElementSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport {\n Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Store,\n} from '../state/react-page'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport { ListControlData, ListControlType, ShapeControlData, ShapeControlType } from '../controls'\nimport { ListValue, ShapeValue, Types } from '../prop-controllers/descriptors'\nimport { MakeswiftClient } from './react'\n\nexport type IntrospectedResourceIds = {\n swatchIds: string[]\n fileIds: string[]\n typographyIds: string[]\n tableIds: string[]\n pageIds: string[]\n}\n\nexport async function introspect(\n element: Element,\n client: MakeswiftClient,\n store: Store,\n): Promise<IntrospectedResourceIds> {\n const descriptors = getPropControllerDescriptors(store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElement = await client.fetchGlobalElement(current.value)\n const elementData = globalElement?.data\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getElementSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n\n if (descriptor.type === ShapeControlType) {\n const prop = props[propName] as ShapeControlData\n\n if (prop == null) return\n\n getResourcesFromElementDescriptors(descriptor.config.type, prop)\n }\n\n if (descriptor.type === ListControlType) {\n const prop = props[propName] as ListControlData\n\n if (prop == null) return\n\n prop.forEach(item => {\n getResourcesFromElementDescriptors(\n { propName: descriptor.config.type },\n { propName: item.value },\n )\n })\n }\n\n if (descriptor.type === Types.Shape) {\n const prop = props[propName] as ShapeValue\n\n if (prop == null) return\n\n getResourcesFromElementDescriptors(descriptor.options.type, prop)\n }\n\n if (descriptor.type === Types.List) {\n const prop = props[propName] as ListValue\n\n if (prop == null) return\n\n prop.forEach(item => {\n getResourcesFromElementDescriptors(\n { propName: descriptor.options.type },\n { propName: item.value },\n )\n })\n }\n })\n }\n }\n\n const typographies = await client.fetchTypographies([...typographyIds])\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n return {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n typographyIds: [...typographyIds],\n tableIds: [...tableIds],\n pageIds: [...pageIds],\n }\n}\n","import { File } from '../api'\n\n/*\n * @note(Alex): DO NOT tie this to SerializedState.\n *\n * This data format is inherently unchangeable. Once we create snapshots, we will have snapshots in our db\n * with resources in this format. We can only add nullable fields to this.\n *\n * That's why I'm going to pretty great lengths to keep this independent.\n *\n * We will maintain mappings from `MakeswiftResources` to other data formats, like `SerializedState`.\n */\nexport type IdSpecified<T> = {\n id: string\n value: T\n}\nexport type MakeswiftSnapshotResources = {\n swatches: IdSpecified<SwatchResource>[]\n typographies: IdSpecified<TypographyResource>[]\n files: IdSpecified<FileSnapshot>[]\n tables: IdSpecified<TableResource>[]\n pagePathnameSlices: IdSpecified<PathPathnameSliceResource>[]\n globalElements: IdSpecified<GlobalElementResource>[]\n snippets: IdSpecified<SnippetResource>[]\n // will use family as id to simplify\n fonts: IdSpecified<FontResource>[]\n pageMetadata: {\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 pageSeo: {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n }\n}\n\ntype SwatchResource = {\n id: string\n hue: number\n saturation: number\n lightness: number\n}\n\ntype TypographyResource = {\n id: string\n name: string\n style: Array<{\n deviceId: string\n value: {\n fontFamily: string | null\n lineHeight: number | null\n letterSpacing: number | null\n fontWeight: number | null\n textAlign: string | null\n uppercase: boolean | null\n underline: boolean | null\n strikethrough: boolean | null\n italic: boolean | null\n fontSize: { value: number | null; unit: string | null } | null\n color: { swatchId: string | null; alpha: number | null } | null\n }\n }>\n}\n\ntype FileSnapshot = {\n id: string\n name: string\n publicUrl: string\n extension: string | null\n dimensions: { width: number; height: number } | null\n}\n\ntype TableResource = {\n id: string\n name: string\n columns: Array<\n | { __typename: 'CheckboxTableColumn'; id: string; name: string }\n | { __typename: 'EmailTableColumn'; id: string; name: string }\n | { __typename: 'LongTextTableColumn'; id: string; name: string }\n | {\n __typename: 'MultipleSelectTableColumn'\n id: string\n name: string\n options: Array<{ id: string; name: string }>\n }\n | { __typename: 'NumberTableColumn'; id: string; name: string }\n | { __typename: 'PhoneNumberTableColumn'; id: string; name: string }\n | { __typename: 'SingleLineTextTableColumn'; id: string; name: string }\n | {\n __typename: 'SingleSelectTableColumn'\n id: string\n name: string\n options: Array<{ id: string; name: string }>\n }\n | { __typename: 'URLTableColumn'; id: string; name: string }\n >\n}\n\ntype PathPathnameSliceResource = {\n id: string\n pathname: string\n}\ntype Json = null | boolean | number | string | Json[] | { [key: string]: Json }\ntype GlobalElementResource = {\n id: string\n data: Json\n}\ntype SnippetResource = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype FontResource = { family: string; variants: string[] }\n\nexport function normalizeToMakeswiftResources(\n partialResources?: Partial<MakeswiftSnapshotResources>,\n): MakeswiftSnapshotResources {\n const resources: MakeswiftSnapshotResources = {\n swatches: partialResources?.swatches || [],\n typographies: partialResources?.typographies || [],\n files: partialResources?.files || [],\n tables: partialResources?.tables || [],\n pagePathnameSlices: partialResources?.pagePathnameSlices || [],\n globalElements: partialResources?.globalElements || [],\n snippets: partialResources?.snippets || [],\n fonts: partialResources?.fonts || [],\n pageMetadata: partialResources?.pageMetadata || {},\n pageSeo: partialResources?.pageSeo || {},\n }\n return resources\n}\n\nexport function fileToFileSnapshot(file: File): FileSnapshot {\n return file\n}\n","export default function is(x: unknown, y: unknown): boolean {\n if (x === y) return x !== 0 || y !== 0 || 1 / x === 1 / y\n\n return x !== x && y !== y\n}\n","import is from './is'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst shallowEqual = (a: unknown, b: unknown): boolean => {\n if (is(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n // @ts-expect-error: {}[string] is OK.\n if (!hasOwnProperty.call(b, keysA[i]) || !is(a[keysA[i]], b[keysA[i]])) return false\n }\n\n return true\n}\n\nexport default shallowEqual\n","import shallowEqual from './shallowEqual'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst deepEqual = (a: unknown, b: unknown): boolean => {\n if (shallowEqual(a, b)) return true\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (let i = 0; i < keysA.length; i += 1) {\n if (\n !hasOwnProperty.call(b, keysA[i]) ||\n // @ts-expect-error: {}[string] is OK.\n !deepEqual(a[keysA[i]], b[keysA[i]])\n )\n return false\n }\n\n return true\n}\n\nexport default deepEqual\n","import {\n APIResource,\n APIResourceType,\n Swatch,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n Table,\n} from '../../api'\nimport { fileToFileSnapshot, IdSpecified, MakeswiftSnapshotResources } from '../../next/snapshots'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]: { id: string; value: APIResource }[]\n}\n\nfunction isNonNullable<T>(value: T): value is NonNullable<T> {\n return value != null\n}\n\n// If we change SerializedState, update this function as well\nexport function getSnapshotResourcesFromSerializedState(\n serializedState: SerializedState,\n): Partial<MakeswiftSnapshotResources> {\n // @note: remember TS is structurally typed, so extra parameters will come into the\n // objects coming out of this function. That's fine.\n const resources: Partial<MakeswiftSnapshotResources> = {\n swatches: serializedState.Swatch.filter((_): _ is IdSpecified<Swatch> => true),\n typographies: serializedState.Typography.filter((_): _ is IdSpecified<Typography> => true),\n files: serializedState.File.map(({ id, value }) =>\n value.__typename === APIResourceType.File ? { id, value: fileToFileSnapshot(value) } : null,\n ).filter(isNonNullable),\n tables: serializedState.Table.filter((_): _ is IdSpecified<Table> => true),\n pagePathnameSlices: serializedState.PagePathnameSlice.filter(\n (_): _ is IdSpecified<PagePathnameSlice> => true,\n ),\n globalElements: serializedState.GlobalElement.filter(\n (_): _ is IdSpecified<GlobalElement> => true,\n ),\n }\n\n return resources\n}\n\n// @todo: write the reverse function, going from `MakeswiftSnapshotResources` to `SerializedState`\n// it is critical that the two are untied from each other, otherwise\n// we can no longer change `SerializedState`\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(\n ([apiResourceType, resources]) =>\n [\n apiResourceType,\n new Map(resources.map(({ id, value }) => [id, value] as [string, APIResource])),\n ] as [APIResourceType, Map<string, APIResource>],\n ),\n )\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any }[] = []\n\n Array.from(resources.entries()).forEach(([id, value]) => {\n if (value != null) {\n particularResourceMap.push({ id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return state.get(resourceType)?.has(resourceId) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(resourceId)\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource } = action.payload\n\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(resourceId, resource),\n )\n }\n\n case ActionTypes.INTROSPECTED_RESOURCES_FULFILLED: {\n const { introspectedResourceIds, introspectedResources } = action.payload\n const swatches = new Map(state.get(APIResourceType.Swatch)!)\n const files = new Map(state.get(APIResourceType.File)!)\n const typographies = new Map(state.get(APIResourceType.Typography)!)\n const pagePathnameSlices = new Map(state.get(APIResourceType.PagePathnameSlice)!)\n const tables = new Map(state.get(APIResourceType.Table)!)\n\n introspectedResourceIds.swatchIds.forEach((swatchId, idx) => {\n swatches.set(swatchId, introspectedResources.swatches[idx])\n })\n introspectedResourceIds.fileIds.forEach((fileId, idx) => {\n files.set(fileId, introspectedResources.files[idx])\n })\n introspectedResourceIds.typographyIds.forEach((typographyId, idx) => {\n typographies.set(typographyId, introspectedResources.typographies[idx])\n })\n introspectedResourceIds.pageIds.forEach((pageId, idx) => {\n const pagePathnameSlice = introspectedResources.pagePathnamesById[idx]\n\n if (pagePathnameSlice == null) {\n pagePathnameSlices.set(pageId, pagePathnameSlice)\n } else {\n // We're doing this because the API return the id without turning it to nodeId:\n // '87237bda-e775-48d8-92cc-399c65577bb7' vs 'UGFnZTo4NzIzN2JkYS1lNzc1LTQ4ZDgtOTJjYy0zOTljNjU1NzdiYjc='\n const nodeId = Buffer.from(`Page:${pagePathnameSlice.id}`).toString('base64')\n\n pagePathnameSlices.set(nodeId, { ...pagePathnameSlice, id: nodeId })\n }\n })\n introspectedResourceIds.tableIds.forEach((tableId, idx) => {\n tables.set(tableId, introspectedResources.tables[idx])\n })\n\n return new Map(state)\n .set(APIResourceType.Swatch, swatches)\n .set(APIResourceType.File, files)\n .set(APIResourceType.Typography, typographies)\n .set(APIResourceType.PagePathnameSlice, pagePathnameSlices)\n .set(APIResourceType.Table, tables)\n }\n\n case ActionTypes.TYPOGRAPHIES_FULFILLED: {\n const typographies = new Map(state.get(APIResourceType.Typography)!)\n\n action.payload.typographyIds.forEach((typographyId, idx) => {\n typographies.set(typographyId, action.payload.typographies[idx])\n })\n\n return new Map(state).set(APIResourceType.Typography, typographies)\n }\n\n case ActionTypes.CHANGE_API_RESOURCE: {\n const existingApiResource = getAPIResource(\n state,\n action.payload.resource.__typename,\n action.payload.resource.id,\n )\n\n if (deepEqual(existingApiResource, action.payload.resource)) return state\n\n return new Map(state).set(\n action.payload.resource.__typename,\n new Map(state.get(action.payload.resource.__typename)!).set(\n action.payload.resource.id,\n action.payload.resource,\n ),\n )\n }\n\n case ActionTypes.EVICT_API_RESOURCE: {\n const [resourceType, resourceId] = action.payload.id.split(':')\n\n if (!(resourceType in APIResourceType)) return state\n\n const resources = new Map(state.get(resourceType as APIResourceType)!)\n\n const deleted = resources.delete(resourceId)\n\n return deleted ? new Map(state).set(resourceType as APIResourceType, resources) : state\n }\n\n default:\n return state\n }\n}\n","/**\n * We _cannot_ interpolate fragments into other fragments. Doing so results in a document with\n * multiple fragment definitions, which is ambiguous when attempting to read a fragment from the\n * cache. This ambiguity results in an error being thrown by `@apollo/client` in the Makeswift\n * builder when attempting to send API resources to the host's runtime.\n */\n\nexport const SwatchFragment = /* GraphQL */ `\n fragment Swatch on Swatch {\n __typename\n id\n hue\n saturation\n lightness\n }\n`\n\nexport const FileFragment = /* GraphQL */ `\n fragment File on File {\n __typename\n id\n name\n publicUrl: publicUrlV2\n extension\n dimensions {\n width\n height\n }\n }\n`\n\nexport const TypographyFragment = /* GraphQL */ `\n fragment Typography on Typography {\n __typename\n id\n name\n style {\n deviceId\n value {\n fontFamily\n fontSize {\n value\n unit\n }\n color {\n swatchId\n alpha\n }\n lineHeight\n letterSpacing\n fontWeight\n textAlign\n uppercase\n underline\n strikethrough\n italic\n }\n }\n }\n`\n\nexport const PagePathnameSliceFragment = /* GraphQL */ `\n fragment PagePathnameSlice on PagePathnameSlice {\n __typename\n id\n pathname\n }\n`\n\nexport const GlobalElementFragment = /* GraphQL */ `\n fragment GlobalElement on GlobalElement {\n __typename\n id\n data\n }\n`\n\nexport const TableFragment = /* GraphQL */ `\n fragment Table on Table {\n __typename\n id\n name\n columns {\n __typename\n id\n name\n\n ... on MultipleSelectTableColumn {\n options {\n id\n name\n }\n }\n\n ... on SingleSelectTableColumn {\n options {\n id\n name\n }\n }\n }\n }\n`\n\nexport const SnippetFragment = /* GraphQL */ `\n fragment Snippet on Snippet {\n __typename\n id\n name\n code\n cleanup\n location\n shouldAddToNewPages\n liveEnabled\n builderEnabled\n }\n`\n\nexport const PageFragment = /* GraphQL */ `\n fragment Page on Page {\n __typename\n id\n snippets {\n __typename\n id\n name\n code\n cleanup\n location\n shouldAddToNewPages\n liveEnabled\n builderEnabled\n }\n }\n`\n\nexport const SiteFragment = /* GraphQL */ `\n fragment Site on Site {\n __typename\n id\n googleFonts {\n edges {\n activeVariants {\n specifier\n }\n node {\n family\n variants {\n specifier\n }\n }\n }\n }\n }\n`\n","import {\n FileFragment,\n GlobalElementFragment,\n PageFragment,\n PagePathnameSliceFragment,\n SiteFragment,\n SwatchFragment,\n TableFragment,\n TypographyFragment,\n} from './fragments'\n\nexport const IntrospectedResourcesQuery = /* GraphQL */ `\n query IntrospectedResources(\n $swatchIds: [ID!]!\n $fileIds: [ID!]!\n $typographyIds: [ID!]!\n $pageIds: [ID!]!\n $tableIds: [ID!]!\n ) {\n swatches(ids: $swatchIds) {\n ...Swatch\n }\n\n files(ids: $fileIds) {\n ...File\n }\n\n typographies(ids: $typographyIds) {\n ...Typography\n }\n\n pagePathnamesById(ids: $pageIds) {\n ...PagePathnameSlice\n }\n\n tables(ids: $tableIds) {\n ...Table\n }\n }\n\n ${SwatchFragment}\n ${FileFragment}\n ${TypographyFragment}\n ${PagePathnameSliceFragment}\n ${TableFragment}\n`\n\nexport const SwatchQuery = /* GraphQL */ `\n query Swatch($swatchId: ID!) {\n swatch(id: $swatchId) {\n ...Swatch\n }\n }\n\n ${SwatchFragment}\n`\n\nexport const FileQuery = /* GraphQL */ `\n query File($fileId: ID!) {\n file(id: $fileId) {\n ...File\n }\n }\n\n ${FileFragment}\n`\n\nexport const TypographyQuery = /* GraphQL */ `\n query Typography($typographyId: ID!) {\n typography(id: $typographyId) {\n ...Typography\n }\n }\n\n ${TypographyFragment}\n`\n\nexport const PagePathnamesByIdQuery = /* GraphQL */ `\n query PagePathnamesById($pageIds: [ID!]!) {\n pagePathnamesById(ids: $pageIds) {\n ...PagePathnameSlice\n }\n }\n\n ${PagePathnameSliceFragment}\n`\n\nexport const TableQuery = /* GraphQL */ `\n query Table($tableId: ID!) {\n table(id: $tableId) {\n ...Table\n }\n }\n\n ${TableFragment}\n`\n\nexport const TypographiesQuery = /* GraphQL */ `\n query Typographies($typographyIds: [ID!]!) {\n typographies(ids: $typographyIds) {\n ...Typography\n }\n }\n\n ${TypographyFragment}\n`\n\nexport const GlobalElementQuery = /* GraphQL */ `\n query GlobalElement($globalElementId: ID!) {\n globalElement(id: $globalElementId) {\n ...GlobalElement\n }\n }\n\n ${GlobalElementFragment}\n`\n\nexport const CreateTableRecordMutation = /* GraphQL */ `\n mutation CreateTableRecord($input: CreateTableRecordInput!) {\n createTableRecord(input: $input) {\n tableRecord {\n id\n }\n }\n }\n`\n\nexport const SiteQuery = /* GraphQL */ `\n query Site($siteId: ID!) {\n site(id: $siteId) {\n ...Site\n }\n }\n\n ${SiteFragment}\n`\n\nexport const PageQuery = /* GraphQL */ `\n query Page($pageId: ID!) {\n page(id: $pageId) {\n ...Page\n }\n }\n\n ${PageFragment}\n`\n","import { applyMiddleware, createStore, Store as ReduxStore } from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport * as APIResources from './modules/api-resources'\nimport {\n Action,\n apiResourceFulfilled,\n typographiesFulfilled,\n introspectedResourcesFulfilled,\n} from './actions'\nimport { APIResource, APIResourceType, Typography } from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { IntrospectedResourceIds } from '../api/introspection'\nimport {\n FileQuery,\n GlobalElementQuery,\n IntrospectedResourcesQuery,\n PagePathnamesByIdQuery,\n SwatchQuery,\n TableQuery,\n TypographiesQuery,\n TypographyQuery,\n} from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n GlobalElementQueryResult,\n GlobalElementQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n PagePathnamesByIdQueryResult,\n PagePathnamesByIdQueryVariables,\n SwatchQueryResult,\n SwatchQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n TypographiesQueryResult,\n TypographiesQueryVariables,\n TypographyQueryResult,\n TypographyQueryVariables,\n} from '../api/graphql/generated/types'\n\nconst reducer = APIResources.reducer\n\nexport type State = ReturnType<typeof reducer>\n\nexport type SerializedState = APIResources.SerializedState\n\nexport function getSerializedState(state: State): SerializedState {\n return APIResources.getSerializedState(state)\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return APIResources.getHasAPIResource(state, resourceType, resourceId)\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n return APIResources.getAPIResource(state, resourceType, resourceId)\n}\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, GraphQLClient, Action>\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState, client) => {\n const state = getState()\n\n if (getHasAPIResource(state, resourceType, resourceId)) {\n return getAPIResource(state, resourceType, resourceId)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n resource = (\n await client.request<SwatchQueryResult, SwatchQueryVariables>(SwatchQuery, {\n swatchId: resourceId,\n })\n ).swatch\n break\n\n case APIResourceType.File:\n resource = (\n await client.request<FileQueryResult, FileQueryVariables>(FileQuery, {\n fileId: resourceId,\n })\n ).file\n break\n\n case APIResourceType.Typography:\n resource = (\n await client.request<TypographyQueryResult, TypographyQueryVariables>(TypographyQuery, {\n typographyId: resourceId,\n })\n ).typography\n break\n\n case APIResourceType.GlobalElement:\n resource = (\n await client.request<GlobalElementQueryResult, GlobalElementQueryVariables>(\n GlobalElementQuery,\n { globalElementId: resourceId },\n )\n ).globalElement\n break\n\n case APIResourceType.PagePathnameSlice:\n resource =\n (\n await client.request<PagePathnamesByIdQueryResult, PagePathnamesByIdQueryVariables>(\n PagePathnamesByIdQuery,\n { pageIds: [resourceId] },\n )\n ).pagePathnamesById[0] ?? null\n break\n\n case APIResourceType.Table:\n resource = (\n await client.request<TableQueryResult, TableQueryVariables>(TableQuery, {\n tableId: resourceId,\n })\n ).table\n break\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource))\n\n return resource as Extract<APIResource, { __typename: T }> | null\n }\n}\n\nexport function fetchIntrospectedResources(\n introspectedResourceIds: IntrospectedResourceIds,\n): Thunk<Promise<void>> {\n return async (dispatch, _getState, client) => {\n const introspectedResources = await client.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n\n dispatch(introspectedResourcesFulfilled(introspectedResourceIds, introspectedResources))\n }\n}\n\nexport function fetchTypographies(typographyIds: string[]): Thunk<Promise<(Typography | null)[]>> {\n return async (dispatch, getState, client) => {\n const state = getState()\n\n if (\n typographyIds.every(typographyId =>\n getHasAPIResource(state, APIResourceType.Typography, typographyId),\n )\n ) {\n return typographyIds.map(typographyId =>\n getAPIResource(state, APIResourceType.Typography, typographyId),\n )\n }\n\n const { typographies } = await client.request<\n TypographiesQueryResult,\n TypographiesQueryVariables\n >(TypographiesQuery, { typographyIds })\n\n dispatch(typographiesFulfilled(typographyIds, typographies))\n\n return typographies\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, GraphQLClient, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n graphqlClient,\n serializedState,\n}: {\n graphqlClient: GraphQLClient\n serializedState?: SerializedState\n}): Store {\n return createStore(\n reducer,\n APIResources.getInitialState(serializedState),\n applyMiddleware(thunk.withExtraArgument(graphqlClient)),\n )\n}\n","export class GraphQLClient {\n private endpoint: string\n\n constructor(endpoint: string) {\n this.endpoint = endpoint\n }\n\n async request<TData, TVariables = Record<string, never>>(\n query: string,\n variables: TVariables = {} as TVariables,\n ): Promise<TData> {\n const response = await fetch(this.endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ query, variables }),\n })\n\n if (!response.ok && response.status !== 400) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const body = await response.json()\n\n if (body.errors != null) {\n console.error(body)\n\n throw new Error('GraphQL response contains errors, check the console.')\n }\n\n return body.data\n }\n}\n","import { createContext, ReactNode, useContext } from 'react'\n\nimport { Element } from '../state/react-page'\nimport { storeContextDefaultValue } from '../runtimes/react'\nimport { introspect } from './introspection'\nimport * as MakeswiftApiClient from '../state/makeswift-api-client'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n Page,\n PagePathnameSlice,\n Site,\n Snippet,\n Swatch,\n Table,\n Typography,\n} from './graphql/types'\nimport { GraphQLClient } from './graphql/client'\nimport { CreateTableRecordMutation } from './graphql/documents'\nimport {\n CreateTableRecordMutationResult,\n CreateTableRecordMutationVariables,\n} from './graphql/generated/types'\n\nexport type CacheData = MakeswiftApiClient.SerializedState\n\nexport type MakeswiftClientOptions = {\n uri: string\n cacheData?: CacheData\n}\n\n/**\n * NOTE(miguel): This \"client\" is used to fetch Makeswift API resources needed for the host. For\n * example, swatches, files, typographies, etc. Ideally it's internal to the runtime and is only\n * used by controls to transform API references to API resources.\n *\n * Moreover, it's use should be reserved for the builder only, since for live pages all Makeswift\n * API resources should be embedded in the \"page snapshot\". In the builder, this client serves the\n * purpose of sending requests for API resources and keeping a cache so that changes that happen in\n * the builder, like modifying a swatch, can be sent via `postMessage` to the host and the cache can\n * immediately update the value and re-render.\n *\n * Furthermore, the API resources requested shouldn't be requested directly from the Makeswift API\n * as that would require those resources to not be authenticated since the requests come from the\n * browser when running the host. Instead, the requests should go to the host directly, at the\n * Makeswift API endpoint (i.g., `/api/makeswift/[...makeswift]` dynamic route) where the host's\n * API key can be used, securely, in the server. For this reason, this client should really be a\n * client of the host's API, not Makeswift's, intended to build and continuously maintain a realtime\n * snapshot for use in the builder, not the lives pages.\n */\nexport class MakeswiftClient {\n graphqlClient: GraphQLClient\n makeswiftApiClient: MakeswiftApiClient.Store\n subscribe: MakeswiftApiClient.Store['subscribe']\n\n constructor({ uri, cacheData }: MakeswiftClientOptions) {\n this.graphqlClient = new GraphQLClient(uri)\n this.makeswiftApiClient = MakeswiftApiClient.configureStore({\n graphqlClient: this.graphqlClient,\n serializedState: cacheData,\n })\n this.subscribe = this.makeswiftApiClient.subscribe\n }\n\n async prefetch(element: Element): Promise<CacheData> {\n const introspectionData = await introspect(element, this, storeContextDefaultValue)\n\n await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchIntrospectedResources(introspectionData),\n )\n\n return MakeswiftApiClient.getSerializedState(this.makeswiftApiClient.getState())\n }\n\n readSwatch(swatchId: string): Swatch | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Swatch,\n swatchId,\n )\n }\n\n async fetchSwatch(swatchId: string): Promise<Swatch | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Swatch, swatchId),\n )\n }\n\n readFile(fileId: string): File | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.File,\n fileId,\n )\n }\n\n async fetchFile(fileId: string): Promise<File | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.File, fileId),\n )\n }\n\n readTypography(typographyId: string): Typography | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Typography,\n typographyId,\n )\n }\n\n async fetchTypography(typographyId: string): Promise<Typography | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Typography, typographyId),\n )\n }\n\n async fetchTypographies(typographyIds: string[]): Promise<(Typography | null)[]> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchTypographies(typographyIds),\n )\n }\n\n readGlobalElement(globalElementId: string): GlobalElement | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.GlobalElement,\n globalElementId,\n )\n }\n\n async fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.GlobalElement, globalElementId),\n )\n }\n\n readPagePathnameSlice(pageId: string): PagePathnameSlice | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.PagePathnameSlice,\n pageId,\n )\n }\n\n async fetchPagePathnameSlice(pageId: string): Promise<PagePathnameSlice | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.PagePathnameSlice, pageId),\n )\n }\n\n readTable(tableId: string): Table | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Table,\n tableId,\n )\n }\n\n async fetchTable(tableId: string): Promise<Table | null> {\n return await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(APIResourceType.Table, tableId),\n )\n }\n\n async createTableRecord(tableId: string, columns: any): Promise<void> {\n await this.graphqlClient.request<\n CreateTableRecordMutationResult,\n CreateTableRecordMutationVariables\n >(CreateTableRecordMutation, { input: { data: { tableId, columns } } })\n }\n\n readSite(siteId: string): Site | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Site,\n siteId,\n )\n }\n\n readPage(pageId: string): Page | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Page,\n pageId,\n )\n }\n\n readSnippet(snippetId: string): Snippet | null {\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.Snippet,\n snippetId,\n )\n }\n}\n\nconst Context = createContext(new MakeswiftClient({ uri: 'https://api.makeswift.com/graphql' }))\n\nexport function useMakeswiftClient(): MakeswiftClient {\n return useContext(Context)\n}\n\ntype MakeswiftProviderProps = {\n client: MakeswiftClient\n children: ReactNode\n}\n\nexport function MakeswiftProvider({ client, children }: MakeswiftProviderProps) {\n return <Context.Provider value={client}>{children}</Context.Provider>\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef, useState } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\nimport { useMakeswiftClient } from '../../api/react'\nimport { useIsInBuilder } from '../../react'\nimport deepEqual from '../../utils/deepEqual'\nimport { MakeswiftPageDocument } from '../../next'\nimport { Page as PageType, Site } from '../../api'\n\nconst SnippetLocation = {\n Body: 'BODY',\n Head: 'HEAD',\n} as const\n\ntype SnippetLocation = typeof SnippetLocation[keyof typeof SnippetLocation]\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\nconst filterUsedSnippetProperties = ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n}: Snippet) => ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n})\n\ntype Props = {\n document: MakeswiftPageDocument\n}\n\nexport function Page({ document: page }: Props): JSX.Element {\n const isInBuilder = useIsInBuilder()\n const [snippets, setSnippets] = useState(page.snippets)\n // We're using cached results here for page snippets and site fonts so that anytime the user\n // changes the snippets or fonts on the builder, the change would be reflected here.\n // See this PR for discussions and things we can do to improve it in the future:\n // https://github.com/makeswift/makeswift/pull/77\n const cachedPage = useCachedPage(isInBuilder ? page.id : null)\n useEffect(() => {\n if (cachedPage == null) return\n\n const oldSnippets = snippets.map(filterUsedSnippetProperties)\n const newSnippets = cachedPage.snippets.map(filterUsedSnippetProperties)\n\n if (deepEqual(newSnippets, oldSnippets)) return\n\n setSnippets(cachedPage.snippets)\n }, [cachedPage])\n const site = useCachedSite(isInBuilder ? page.site.id : null)\n\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const { canonicalUrl, isIndexingBlocked } = page.seo\n\n const fontFamilyParamValue = useMemo(() => {\n if (site == null) {\n return page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n }\n\n return site.googleFonts.edges\n .filter((edge): edge is NonNullable<typeof edge> => edge != null)\n .map(({ activeVariants, node: { family, variants } }) => {\n const activeVariantSpecifiers = variants\n .filter(variant =>\n activeVariants.some(activeVariant => activeVariant.specifier === variant.specifier),\n )\n .map(variant => variant.specifier)\n .join()\n\n return `${family.replace(/ /g, '+')}:${activeVariantSpecifiers}`\n })\n .join('|')\n }, [site, page])\n\n const filteredSnippets = useMemo(\n () => snippets.filter(snippet => (isInBuilder ? snippet.builderEnabled : snippet.liveEnabled)),\n [snippets, isInBuilder],\n )\n const headSnippets = useMemo(\n () => filteredSnippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [filteredSnippets],\n )\n\n const previousHeadSnippets = useRef<MakeswiftPageDocument['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {canonicalUrl && <link rel=\"canonical\" href={canonicalUrl} />}\n\n {isIndexingBlocked && <meta name=\"robots\" content=\"noindex\" />}\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.mimetype} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {filteredSnippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n\nfunction useCachedPage(pageId: string | null): PageType | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (pageId == null ? null : client.readPage(pageId))\n\n const page = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return page\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n const site = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return site\n}\n","import { version as runtimeVersion } from '../../package.json'\nimport { CacheData, MakeswiftClient } from '../api/react'\nimport { getSnapshotResourcesFromSerializedState } from '../state/modules/api-resources'\nimport { Element } from '../state/react-page'\nimport { MakeswiftSnapshotResources, normalizeToMakeswiftResources } from './snapshots'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageData = {\n pageId: string\n siteId: string\n snapshot: unstable_Snapshot\n options: { preview: boolean; apiOrigin: string }\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype 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}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\nexport type unstable_Snapshot = {\n resources: MakeswiftSnapshotResources\n elementTree: Element\n runtimeVersion: string\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(\n document: MakeswiftPageDocument,\n preview: boolean,\n ): 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, preview }\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, preview)\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 async unstable_getPageData(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageData | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const document = await this.getDocumentForPage(page.id)\n const snapshot = await this.unstable_createSnapshotOnDemand({ document, pageId: page.id })\n\n return {\n pageId: page.id,\n siteId: document.site.id,\n snapshot,\n options: { preview: preview || false, apiOrigin: this.apiOrigin.href },\n }\n }\n\n private async getDocumentForPage(pageId: string): Promise<MakeswiftPageDocument> {\n const response = await this.fetch(`/v1/pages/${pageId}/document?preview=false`)\n\n if (!response.ok) {\n if (response.status === 404) throw Error('Document not found.')\n\n throw new Error(`Failed to create snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return document\n }\n\n private async unstable_createSnapshotOnDemand({\n document,\n pageId,\n }: {\n document?: MakeswiftPageDocument\n pageId: string\n }): Promise<unstable_Snapshot> {\n let fetchedDocument = document\n\n if (fetchedDocument == null) {\n const response = await this.fetch(`/v1/pages/${pageId}/document?preview=false`)\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error('Not found')\n }\n\n throw new Error(`Failed to create snapshot with error: \"${response.statusText}\"`)\n }\n\n fetchedDocument = await response.json()\n }\n\n if (fetchedDocument == null) {\n throw Error('fetchedDocument should never be null')\n }\n\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const prefetchedResources = await client.prefetch(fetchedDocument.data)\n\n const resources = normalizeToMakeswiftResources(\n getSnapshotResourcesFromSerializedState(prefetchedResources),\n )\n\n resources.snippets = fetchedDocument.snippets.map(snippet => ({\n id: snippet.id,\n value: snippet,\n }))\n resources.pageMetadata = fetchedDocument.meta\n resources.pageSeo = fetchedDocument.seo\n resources.fonts = fetchedDocument.fonts.map(font => ({ id: font.family, value: font }))\n\n return { resources, elementTree: fetchedDocument.data, runtimeVersion }\n }\n\n async unstable_createSnapshot({\n publishedResources,\n deletedResources,\n publishedElementTree,\n currentSnapshot,\n }: {\n publishedResources?: Partial<MakeswiftSnapshotResources>\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n publishedElementTree?: Element\n currentSnapshot?: unstable_Snapshot\n }): Promise<unstable_Snapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n\n function mergeResources({\n resourcesFromPublishedElementTree,\n resourcesFromCurrentSnapshot,\n publishedResources,\n deletedResources,\n }: {\n resourcesFromPublishedElementTree: MakeswiftSnapshotResources\n resourcesFromCurrentSnapshot: MakeswiftSnapshotResources\n publishedResources: MakeswiftSnapshotResources\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n tables?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n }) {\n // chooses the last set value per id\n function mergeIdSpecifiedResource<T>(\n resourceSet: { id: string; value: T }[],\n deletedResources?: string[],\n ): { id: string; value: T }[] {\n const map = new Map(resourceSet.map(({ id, value }) => [id, value] as [string, T]))\n\n deletedResources?.forEach(id => map.delete(id))\n\n const finalResourceSet: { id: string; value: any }[] = []\n Array.from(map.entries()).forEach(([id, value]) => {\n if (value != null) {\n finalResourceSet.push({ id, value })\n }\n })\n\n return finalResourceSet\n }\n\n const resources: MakeswiftSnapshotResources = {\n swatches: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.swatches,\n ...resourcesFromCurrentSnapshot.swatches,\n ...publishedResources.swatches,\n ],\n deletedResources?.swatches,\n ),\n files: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.files,\n ...resourcesFromCurrentSnapshot.files,\n ...publishedResources.files,\n ],\n deletedResources?.files,\n ),\n tables: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.tables,\n ...resourcesFromCurrentSnapshot.tables,\n ...publishedResources.tables,\n ],\n deletedResources?.tables,\n ),\n typographies: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.typographies,\n ...resourcesFromCurrentSnapshot.typographies,\n ...publishedResources.typographies,\n ],\n deletedResources?.typographies,\n ),\n pagePathnameSlices: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.pagePathnameSlices,\n ...resourcesFromCurrentSnapshot.pagePathnameSlices,\n ...publishedResources.pagePathnameSlices,\n ],\n deletedResources?.pagePathnameSlices,\n ),\n globalElements: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.globalElements,\n ...resourcesFromCurrentSnapshot.globalElements,\n ...publishedResources.globalElements,\n ],\n deletedResources?.globalElements,\n ),\n snippets: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.snippets,\n ...resourcesFromCurrentSnapshot.snippets,\n ...publishedResources.snippets,\n ],\n deletedResources?.snippets,\n ),\n fonts: mergeIdSpecifiedResource(\n [\n ...resourcesFromPublishedElementTree.fonts,\n ...resourcesFromCurrentSnapshot.fonts,\n ...publishedResources.fonts,\n ],\n deletedResources?.fonts,\n ),\n pageMetadata: {\n ...resourcesFromCurrentSnapshot.pageMetadata,\n ...publishedResources.pageMetadata,\n },\n pageSeo: { ...resourcesFromCurrentSnapshot.pageSeo, ...publishedResources.pageSeo },\n }\n\n return resources\n }\n\n const resourcesFromPublishedElementTree =\n publishedElementTree != null\n ? normalizeToMakeswiftResources(\n getSnapshotResourcesFromSerializedState(await client.prefetch(publishedElementTree)),\n )\n : normalizeToMakeswiftResources({})\n\n const resourcesFromCurrentSnapshot = normalizeToMakeswiftResources(\n currentSnapshot?.resources || {},\n )\n const resources = mergeResources({\n resourcesFromPublishedElementTree,\n resourcesFromCurrentSnapshot,\n publishedResources: normalizeToMakeswiftResources(publishedResources),\n deletedResources,\n })\n\n const elementTree = publishedElementTree || currentSnapshot?.elementTree\n if (elementTree == null) {\n throw Error('elementTree should not be null; something went wrong.')\n }\n\n return {\n resources,\n elementTree,\n runtimeVersion,\n }\n }\n\n unstable_getSnapshotResourceMapping(snapshot: unstable_Snapshot): string[] {\n const resources = snapshot.resources\n\n function parseResourceIds({ id }: { id: string }): string {\n return id\n }\n\n return [\n ...resources.swatches.map(parseResourceIds),\n ...resources.files.map(parseResourceIds),\n ...resources.tables.map(parseResourceIds),\n ...resources.typographies.map(parseResourceIds),\n ...resources.pagePathnameSlices.map(parseResourceIds),\n ...resources.globalElements.map(parseResourceIds),\n ...resources.snippets.map(parseResourceIds),\n ]\n }\n}\n","import { ActionTypes } from '../react'\n\ntype 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 previewModeScript = `\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(resource, options) {\n const request = new Request(resource, options)\n\n if (new URL(request.url).origin !== window.location.origin) {\n return originalFetch.call(this, resource, options)\n }\n\n return originalFetch.call(\n this,\n new Request(request, { 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 const makeswiftConnectionCheckScript = `\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (\n event.origin === appOrigin && \n event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'\n ) {\n setInterval(() => {\n window.parent.postMessage({ \n type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',\n payload: { \n currentUrl: window.location.href \n }\n }, appOrigin)\n }, 20)\n }\n })\n\n window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)\n}\n`\n\n return (\n <>\n <script\n id=\"makeswift-preview-mode\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: previewModeScript }}\n />\n <script\n id=\"makeswift-connection-check\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: makeswiftConnectionCheckScript }}\n />\n </>\n )\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 { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\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 <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\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","type ErrorWithMessage = {\n message: string\n}\n\nexport default function isErrorWithMessage(error: unknown): error is ErrorWithMessage {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof (error as Record<string, unknown>).message === 'string'\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'\nimport { MakeswiftClient } from '../api/react'\nimport { ReactRuntime } from '../react'\nimport { Element } from '../state/react-page'\nimport isErrorWithMessage from '../utils/isErrorWithMessage'\nimport { Makeswift, MakeswiftPageDocument, unstable_Snapshot } from './client'\nimport { fileToFileSnapshot, MakeswiftSnapshotResources } from './snapshots'\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 apiOrigin?: 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 = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n}\nexport type MakeswiftApiHandlerFontsResponse = Fonts\nexport type MakeswiftApiHandlerElementTreeResponse = { elementTree: any }\nexport type MakeswiftApiHandlerCreateSnapshotResponse = {\n pageId: string\n snapshot: unstable_Snapshot\n livePageChanges?: {\n online?: boolean\n pathname?: string\n }\n usedResources: string[]\n}\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n | MakeswiftApiHandlerElementTreeResponse\n | MakeswiftApiHandlerCreateSnapshotResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n }: 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 interactionMode: true,\n clientSideNavigation: true,\n elementFromPoint: false,\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\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 if (isErrorWithMessage(error)) {\n return res.status(500).json({ message: error.message })\n }\n\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 const isForwardedProtoHttps =\n typeof forwardedProto === 'string' && forwardedProto === 'https'\n\n const forwardedSSL = req.headers['x-forwarded-ssl']\n const isForwardedSSL = typeof forwardedSSL === 'string' && forwardedSSL === 'on'\n\n const proto = isForwardedProtoHttps || isForwardedSSL ? 'https' : '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 case 'element-tree': {\n const elementTree = req.body.elementTree\n const replacementContext = req.body.replacementContext\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n if (replacementContext == null) {\n return res.status(400).json({ message: 'replacementContext must be defined' })\n }\n\n const generatedElementTree = ReactRuntime.copyElementTree(elementTree, replacementContext)\n\n const response = { elementTree: generatedElementTree }\n return res.json(response)\n }\n\n case 'snapshot': {\n type PublishedResources = {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n tables?: string[]\n // @todo: I think this should be removed, and only derived from the element tree\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n // @todo: add a font test case\n fonts?: string[]\n pageMetadata?: {\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 pageSeo?: {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n }\n }\n type CreateSnapshotBody = {\n pageId: string\n publishedResources?: PublishedResources\n deletedResources?: {\n swatches?: string[]\n typographies?: string[]\n files?: string[]\n pagePathnameSlices?: string[]\n globalElements?: string[]\n snippets?: string[]\n fonts?: string[]\n }\n publishedElementTree?: Element\n currentSnapshot?: unstable_Snapshot\n livePageChanges: {\n online?: boolean\n pathname?: string\n }\n }\n function validateBody(body: CreateSnapshotBody) {\n if (body.pageId == null) {\n return res.status(400).json({ message: 'Must define pageId.' })\n }\n if (body.currentSnapshot == null && body.publishedElementTree == null) {\n return res\n .status(400)\n .json({ message: 'Either currentSnapshot or publishedElementTree must be defined.' })\n }\n }\n\n const body: CreateSnapshotBody = req.body\n validateBody(body)\n\n const client = new Makeswift(apiKey, {\n apiOrigin,\n })\n const makeswiftApiClient = new MakeswiftClient({ uri: new URL('graphql', apiOrigin).href })\n\n async function formMakeswiftResources(\n publishedResources?: PublishedResources,\n ): Promise<Partial<MakeswiftSnapshotResources>> {\n const publishedResourcesInMakeswiftSnapshotFormat: Partial<MakeswiftSnapshotResources> = {\n swatches: [],\n typographies: [],\n files: [],\n tables: [],\n pagePathnameSlices: [],\n globalElements: [],\n snippets: [],\n fonts: [],\n pageMetadata: publishedResources?.pageMetadata,\n pageSeo: publishedResources?.pageSeo,\n }\n\n if (publishedResources == null) {\n return publishedResourcesInMakeswiftSnapshotFormat\n }\n\n // swatches\n for await (const swatchId of publishedResources.swatches || []) {\n const swatch = await makeswiftApiClient.fetchSwatch(swatchId)\n if (swatch != null) {\n publishedResourcesInMakeswiftSnapshotFormat.swatches?.push({\n id: swatchId,\n value: swatch,\n })\n }\n }\n\n // typographies\n for await (const typographyId of publishedResources.typographies || []) {\n const typography = await makeswiftApiClient.fetchTypography(typographyId)\n if (typography != null) {\n publishedResourcesInMakeswiftSnapshotFormat.typographies?.push({\n id: typographyId,\n value: typography,\n })\n }\n }\n\n // files\n for await (const fileId of publishedResources.files || []) {\n const file = await makeswiftApiClient.fetchFile(fileId)\n if (file != null) {\n publishedResourcesInMakeswiftSnapshotFormat.files?.push({\n id: fileId,\n value: fileToFileSnapshot(file),\n })\n }\n }\n\n // tables\n for await (const tableId of publishedResources.tables || []) {\n const table = await makeswiftApiClient.fetchTable(tableId)\n if (table != null) {\n publishedResourcesInMakeswiftSnapshotFormat.tables?.push({\n id: tableId,\n value: table,\n })\n }\n }\n\n // pagePathnameSlices\n for await (const pageId of publishedResources.pagePathnameSlices || []) {\n const pagePathnameSlice = await makeswiftApiClient.fetchPagePathnameSlice(pageId)\n if (pagePathnameSlice != null) {\n publishedResourcesInMakeswiftSnapshotFormat.pagePathnameSlices?.push({\n id: pageId,\n value: pagePathnameSlice,\n })\n }\n }\n\n // globalElements\n for await (const globalElementId of publishedResources.globalElements || []) {\n const globalElement = await makeswiftApiClient.fetchGlobalElement(globalElementId)\n if (globalElement != null) {\n publishedResourcesInMakeswiftSnapshotFormat.globalElements?.push({\n id: globalElementId,\n value: globalElement,\n })\n }\n }\n\n // @todo: create a cleaner pattern for snippets and fonts\n if (publishedResources.snippets != null || publishedResources.fonts != null) {\n // @fixme: this will fail for creating the first snapshot\n const response = await fetch(\n new URL(`/v1/pages/${body.pageId}/document?preview=false`, apiOrigin).toString(),\n {\n headers: { ['X-API-Key']: apiKey },\n },\n )\n\n if (!response.ok) {\n throw new Error(`Failed to hit live page endpoint: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n const availableSnippets = document.snippets\n const availableFonts = document.fonts\n\n // snippets\n for await (const snippetId of publishedResources.snippets || []) {\n const snippet = availableSnippets.find(\n availableSnippet => availableSnippet.id === snippetId,\n )\n if (snippet != null) {\n publishedResourcesInMakeswiftSnapshotFormat.snippets?.push({\n id: snippetId,\n value: snippet,\n })\n }\n }\n\n // fonts\n for await (const family of publishedResources.fonts || []) {\n const font = availableFonts.find(availableFont => availableFont.family === family)\n if (font != null) {\n publishedResourcesInMakeswiftSnapshotFormat.fonts?.push({\n id: family,\n value: font,\n })\n }\n }\n }\n\n return publishedResourcesInMakeswiftSnapshotFormat\n }\n\n const snapshot = await client.unstable_createSnapshot({\n publishedResources: await formMakeswiftResources(body.publishedResources),\n deletedResources: body.deletedResources,\n publishedElementTree: body.publishedElementTree,\n currentSnapshot: body.currentSnapshot,\n })\n\n const usedResources = client.unstable_getSnapshotResourceMapping(snapshot)\n const response = {\n pageId: body.pageId,\n snapshot,\n livePageChanges: body.livePageChanges,\n usedResources,\n }\n\n return res.json(response)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import {\n ComponentType,\n createElement,\n ForwardedRef,\n forwardRef,\n ForwardRefExoticComponent,\n PropsWithoutRef,\n RefAttributes,\n} from 'react'\n\nconst FORWARDED_NEXT_DYNAMIC_REF_KEY = '__forwarded_next_dynamic_ref__'\n\ntype WithSavedForwardedRef<P, T> = P & {\n [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ForwardedRef<T>\n}\n\nfunction saveForwardedRef<P, T>(props: P, ref: ForwardedRef<T>): WithSavedForwardedRef<P, T> {\n return { ...props, [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ref }\n}\n\ntype WithLoadedForwardedRef<P, T> = Omit<P, typeof FORWARDED_NEXT_DYNAMIC_REF_KEY> & {\n ref: ForwardedRef<T>\n}\n\nfunction loadForwardedRef<P, T>({\n [FORWARDED_NEXT_DYNAMIC_REF_KEY]: ref,\n ...props\n}: WithSavedForwardedRef<P, T>): WithLoadedForwardedRef<P, T> {\n return { ...props, ref }\n}\n\ntype LoaderComponent<P> = Promise<ComponentType<P> | { default: ComponentType<P> }>\n\nfunction resolve(obj: any) {\n return obj && obj.__esModule ? obj.default : obj\n}\n\ntype PatchedLoaderComponent<P, T> = LoaderComponent<WithSavedForwardedRef<P, T>>\n\ntype PatchLoaderComponent = <P, T>(\n loaderComponent: LoaderComponent<P>,\n) => PatchedLoaderComponent<P, T>\n\nexport function forwardNextDynamicRef<T, P>(\n nextDynamicThunk: (patch: PatchLoaderComponent) => ComponentType<WithSavedForwardedRef<P, T>>,\n): ForwardRefExoticComponent<PropsWithoutRef<P> & RefAttributes<T>> {\n const Dynamic = nextDynamicThunk(loaderComponent =>\n loaderComponent.then(moduleOrComponent => ({\n __esModule: true,\n default: props => createElement(resolve(moduleOrComponent), loadForwardedRef(props)),\n })),\n )\n\n return forwardRef<T, P>((props, ref) => <Dynamic {...saveForwardedRef(props, ref)} />)\n}\n","import { memo, useMemo } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageData, MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\nexport type unstable_PageProps = {\n pageData: MakeswiftPageData\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 const Page = memo(({ snapshot }: PageProps) => {\n const client = useMemo(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n [snapshot],\n )\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n preview={snapshot.preview}\n >\n {/* We use a key here to reset the Snippets state in the PageMeta component */}\n <PageMeta key={snapshot.document.data.key} 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","const keys = <O extends { [key: string]: unknown }>(o: O): (keyof O)[] => Object.keys(o)\n\nexport default keys\n","const coalesce = <T>(...args: Array<T>): T => {\n let i: number\n\n for (i = 0; i < args.length - 1; i += 1) {\n if (args[i] != null) return args[i]\n }\n\n return args[i]\n}\n\nexport default coalesce\n","import keys from './keys'\nimport coalesce from './coalesce'\n\nexport default function shallowMerge<\n A extends Record<string, unknown>,\n B extends Record<string, unknown>,\n>(a: A, b: B): A & B {\n const bKeys = keys(b)\n const merged = { ...a } as A & B\n\n bKeys.forEach(key => {\n // @ts-expect-error: `coalesce` returns `null | undefined` regardless of input guarantees.\n merged[key] = coalesce(merged[key], b[key])\n })\n\n return merged\n}\n","import type { Device as DeviceID, DeviceOverride, ResponsiveValue } from '../../prop-controllers'\nimport shallowMerge from '../../utils/shallowMerge'\n\nexport type Device = {\n id: DeviceID\n minWidth?: number\n maxWidth?: number\n}\n\nexport const DEVICES: Array<Device> = [\n { id: 'desktop', minWidth: 769 },\n { id: 'tablet', minWidth: 576, maxWidth: 768 },\n { id: 'mobile', maxWidth: 575 },\n]\n\nexport const getDevice = (deviceId: DeviceID): Device => {\n const device = DEVICES.find(({ id }) => id === deviceId)\n\n if (device == null) throw new Error(`Unrecognized device ID: \"${deviceId}\".`)\n\n return device\n}\n\nexport type FallbackStrategy<V> = (\n arg0: DeviceOverride<V> | undefined,\n arg1: ResponsiveValue<V>,\n) => DeviceOverride<V> | undefined\n\nfunction defaultStrategy<V>(\n value: DeviceOverride<V> | undefined,\n fallbacks: ResponsiveValue<V>,\n): DeviceOverride<V> | undefined {\n return value || fallbacks[0]\n}\n\nexport function shallowMergeFallbacks<V extends Record<string, unknown>>(\n value: DeviceOverride<V> | undefined,\n fallbacks: ResponsiveValue<V>,\n): DeviceOverride<V> | undefined {\n return [value, ...fallbacks]\n .filter((override): override is DeviceOverride<V> => Boolean(override))\n .reduce((a, b) => ({\n deviceId: a.deviceId || b.deviceId,\n value: shallowMerge(a.value, b.value),\n }))\n}\n\nexport function findDeviceOverride<S>(\n values: ResponsiveValue<S> = [],\n deviceId: string,\n strategy: FallbackStrategy<S> = defaultStrategy,\n): DeviceOverride<S> | undefined {\n const value = values.find(({ deviceId: d }) => d === deviceId)\n const fallbacks = DEVICES.slice(0, DEVICES.findIndex(d => d.id === deviceId) + 1)\n .reverse()\n .map(d => values.find(v => v.deviceId === d.id))\n .filter((override): override is DeviceOverride<S> => Boolean(override))\n\n return value != null || fallbacks.length > 0 ? strategy(value, fallbacks) : undefined\n}\n\nexport type ExtractResponsiveValue<T> = T extends ResponsiveValue<infer V> ? V : never\n\nexport function join<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, R>(\n responsiveValues: A,\n joinFn: (values: { [I in keyof A]: ExtractResponsiveValue<A[I]> | undefined }) => R,\n strategy?: FallbackStrategy<V>,\n): ResponsiveValue<R> {\n return DEVICES.map(({ id }) => id)\n .map(deviceId => {\n const value = joinFn(\n responsiveValues.map(responsiveValue => {\n const deviceValue =\n responsiveValue && findDeviceOverride(responsiveValue, deviceId, strategy)\n\n return deviceValue == null ? undefined : deviceValue.value\n }) as unknown as { [I in keyof A]: ExtractResponsiveValue<A[I] | undefined> },\n )\n\n if (value == null) return null\n\n return { deviceId, value }\n })\n .filter((override): override is DeviceOverride<R> => Boolean(override))\n}\n\nexport const getDeviceMediaQuery = (device: Device): string => {\n const parts = ['@media only screen']\n\n if (device.minWidth != null) {\n parts.push(`(min-width: ${device.minWidth}px)`)\n }\n\n if (device.maxWidth != null) {\n parts.push(`(max-width: ${device.maxWidth}px)`)\n }\n\n return parts.join(' and ')\n}\n","export type BoxAnimateIn =\n | 'none'\n | 'fadeIn'\n | 'fadeUp'\n | 'fadeDown'\n | 'fadeLeft'\n | 'fadeRight'\n | 'blurIn'\n | 'scaleUp'\n | 'scaleDown'\n\nexport const DEFAULT_BOX_ANIMATE_TYPE = 'none'\nexport const DEFAULT_BOX_ANIMATE_DELAY = 0.0\nexport const DEFAULT_BOX_ANIMATE_DURATION = 0.75\nexport const DEFAULT_ITEM_ANIMATE_TYPE = 'none'\nexport const DEFAULT_ITEM_ANIMATE_DELAY = 0.0\nexport const DEFAULT_ITEM_ANIMATE_DURATION = 0.75\nexport const DEFAULT_ITEM_STAGGER_DURATION = 0.0\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_ITEM_ANIMATE_DELAY,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n function isHiddenBasedOnAnimationType(\n props: Record<string, unknown>,\n deviceId: string,\n property: 'boxAnimateType' | 'itemAnimateType',\n ): boolean {\n const animateIn = props[property] as ResponsiveValue<BoxAnimateIn>\n return (findDeviceOverride<BoxAnimateIn>(animateIn, deviceId)?.value ?? 'none') === 'none'\n }\n const isHiddenBasedOnBoxAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'boxAnimateType')\n const isHiddenBasedOnItemAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'itemAnimateType')\n\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Box')))),\n {\n type: MakeswiftComponentType.Box,\n label: 'Box',\n props: {\n id: Props.ElementID(),\n backgrounds: Props.Backgrounds(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n height: Props.ResponsiveIconRadioGroup({\n label: 'Height',\n options: [\n { value: 'auto', label: 'Auto', icon: 'HeightAuto16' },\n { value: 'stretch', label: 'Stretch', icon: 'HeightMatch16' },\n ],\n defaultValue: 'auto',\n }),\n verticalAlign: Props.ResponsiveIconRadioGroup({\n label: 'Align items',\n options: [\n { value: 'flex-start', label: 'Top', icon: 'VerticalAlignStart16' },\n { value: 'center', label: 'Middle', icon: 'VerticalAlignMiddle16' },\n { value: 'flex-end', label: 'Bottom', icon: 'VerticalAlignEnd16' },\n {\n value: 'space-between',\n label: 'Space between',\n icon: 'VerticalAlignSpaceBetween16',\n },\n ],\n defaultValue: 'flex-start',\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({\n format: Props.Padding.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n paddingTop: { value: 10, unit: 'px' },\n paddingRight: { value: 10, unit: 'px' },\n paddingBottom: { value: 10, unit: 'px' },\n paddingLeft: { value: 10, unit: 'px' },\n },\n },\n ],\n }),\n border: Props.Border({ format: Props.Border.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n boxShadow: Props.Shadows({ format: Props.Shadows.Format.ClassName }),\n rowGap: Props.GapY(props => ({\n hidden: props.children == null,\n })),\n columnGap: Props.GapX(props => ({\n hidden: props.children == null,\n })),\n boxAnimateType: Props.ResponsiveSelect({\n label: 'Animate box in',\n labelOrientation: 'vertical',\n options: [\n { value: 'none', label: 'None' },\n { value: 'fadeIn', label: 'Fade in' },\n { value: 'fadeRight', label: 'Fade right' },\n { value: 'fadeDown', label: 'Fade down' },\n { value: 'fadeLeft', label: 'Fade left' },\n { value: 'fadeUp', label: 'Fade up' },\n { value: 'blurIn', label: 'Blur in' },\n { value: 'scaleUp', label: 'Scale up' },\n { value: 'scaleDown', label: 'Scale down' },\n ],\n defaultValue: 'none',\n }),\n boxAnimateDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Box duration',\n defaultValue: DEFAULT_BOX_ANIMATE_DURATION,\n min: 0.1,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnBoxAnimation(props, device),\n })),\n boxAnimateDelay: Props.ResponsiveNumber((props, device) => ({\n label: 'Box delay',\n defaultValue: DEFAULT_BOX_ANIMATE_DELAY,\n min: 0,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnBoxAnimation(props, device),\n })),\n itemAnimateType: Props.ResponsiveSelect({\n label: 'Animate items in',\n labelOrientation: 'vertical',\n options: [\n { value: 'none', label: 'None' },\n { value: 'fadeIn', label: 'Fade in' },\n { value: 'fadeRight', label: 'Fade right' },\n { value: 'fadeDown', label: 'Fade down' },\n { value: 'fadeLeft', label: 'Fade left' },\n { value: 'fadeUp', label: 'Fade up' },\n { value: 'blurIn', label: 'Blur in' },\n { value: 'scaleUp', label: 'Scale up' },\n { value: 'scaleDown', label: 'Scale down' },\n ],\n defaultValue: 'none',\n }),\n itemAnimateDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Items duration',\n defaultValue: DEFAULT_BOX_ANIMATE_DURATION,\n min: 0.1,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n itemAnimateDelay: Props.ResponsiveNumber((props, device) => ({\n label: 'Items delay',\n defaultValue: DEFAULT_ITEM_ANIMATE_DELAY,\n min: 0,\n step: 0.05,\n suffix: 's',\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n itemStaggerDuration: Props.ResponsiveNumber((props, device) => ({\n label: 'Stagger',\n min: 0,\n step: 0.05,\n suffix: 's',\n defaultValue: DEFAULT_ITEM_STAGGER_DURATION,\n hidden: isHiddenBasedOnItemAnimation(props, device),\n })),\n hidePlaceholder: Props.Checkbox(props => ({\n label: 'Hide placeholder',\n hidden: props.children != null,\n })),\n children: Props.Grid(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport { ButtonVariant } from './contants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Button')))),\n {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n id: Props.ElementID(),\n children: Props.TextInput({ placeholder: 'Button text' }),\n link: Props.Link({\n defaultValue: {\n type: 'OPEN_PAGE',\n payload: {\n pageId: null,\n openInNewTab: false,\n },\n },\n }),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n color: Props.ResponsiveColor((props, device) => {\n const variant = props.variant as ResponsiveValue<ButtonVariant>\n const hidden = findDeviceOverride<ButtonVariant>(variant, device)?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { v4 as uuid } from 'uuid'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Carousel')))),\n {\n type: MakeswiftComponentType.Carousel,\n label: 'Carousel',\n icon: 'Carousel40',\n props: {\n id: Props.ElementID(),\n images: Props.Images({\n preset: [\n { key: uuid(), props: {} },\n { key: uuid(), props: {} },\n { key: uuid(), props: {} },\n ],\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 400, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n pageSize: Props.ResponsiveNumber(props => {\n const images = props.images as unknown[]\n const imagesLength = images?.length ?? 0\n\n return {\n label: 'Images shown',\n defaultValue: 1,\n min: 1,\n max: imagesLength,\n step: 1,\n }\n }),\n step: Props.ResponsiveNumber((props, device) => {\n const pageSize = props.pageSize as ResponsiveValue<number>\n const pageSizeValue = findDeviceOverride(pageSize, device)?.value ?? 1\n\n return {\n label: 'Step',\n defaultValue: 1,\n min: 1,\n max: pageSizeValue,\n step: 1,\n }\n }),\n slideAlignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'Top', value: 'flex-start', icon: 'VerticalAlignStart16' },\n { label: 'Middle', value: 'center', icon: 'VerticalAlignMiddle16' },\n { label: 'Bottom', value: 'flex-end', icon: 'VerticalAlignEnd16' },\n ],\n defaultValue: 'center',\n }),\n gap: Props.GapX({\n label: 'Gap',\n step: 5,\n defaultValue: { value: 0, unit: 'px' },\n }),\n autoplay: Props.Checkbox({ label: 'Autoplay' }),\n delay: Props.Number(props => ({\n label: 'Delay',\n preset: 5,\n min: 1,\n step: 0.1,\n suffix: 'seconds',\n hidden: !props.autoplay,\n })),\n showArrows: Props.Checkbox({ preset: true, label: 'Show arrows' }),\n arrowPosition: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Arrow position',\n options: [\n { label: 'Inside', value: 'inside', icon: 'ArrowInside16' },\n { label: 'Center', value: 'center', icon: 'ArrowCenter16' },\n { label: 'Outside', value: 'outside', icon: 'ArrowOutside16' },\n ],\n defaultValue: 'inside',\n hidden: props.showArrows === false,\n })),\n arrowColor: Props.ResponsiveColor(props => ({\n label: 'Arrow color',\n placeholder: 'black',\n hidden: props.showArrows === false,\n })),\n arrowBackground: Props.ResponsiveColor(props => ({\n label: 'Arrow background',\n placeholder: 'white',\n hidden: props.showArrows === false,\n })),\n showDots: Props.Checkbox({ preset: true, label: 'Show dots' }),\n dotColor: Props.ResponsiveColor(props => ({\n label: 'Dot color',\n placeholder: 'black',\n hidden: props.showDots === false,\n })),\n slideBorder: Props.Border({ format: Props.Border.Format.ClassName }),\n slideBorderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Countdown')))),\n {\n type: MakeswiftComponentType.Countdown,\n label: 'Countdown',\n icon: 'Countdown40',\n props: {\n id: Props.ElementID(),\n date: Props.Date(() => ({\n preset: new Date(Date.now() + 1000 * 60 * 60 * 24 * 2).toISOString(),\n })),\n variant: Props.ResponsiveIconRadioGroup({\n label: 'Style',\n options: [\n { label: 'Filled', value: 'filled', icon: 'CountdownSolid16' },\n {\n label: 'Filled split',\n value: 'filled-split',\n icon: 'CountdownSolidSplit16',\n },\n { label: 'Outline', value: 'outline', icon: 'CountdownOutline16' },\n {\n label: 'Outline split',\n value: 'outline-split',\n icon: 'CountdownOutlineSplit16',\n },\n { label: 'Clear', value: 'clear', icon: 'CountdownNaked16' },\n ],\n defaultValue: 'filled',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n gap: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Gap',\n step: 1,\n min: 0,\n max: 100,\n defaultValue: { value: 0, unit: 'px' },\n }),\n numberFont: Props.Font({ label: 'Number font' }),\n numberColor: Props.ResponsiveColor({\n label: 'Number color',\n placeholder: 'white',\n }),\n blockColor: Props.ResponsiveColor({\n label: 'Block color',\n placeholder: 'black',\n }),\n labelFont: Props.Font({ label: 'Label font' }),\n labelColor: Props.ResponsiveColor({\n label: 'Label color',\n placeholder: 'black',\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n daysLabel: Props.TextInput({ label: 'Days label', placeholder: 'Days' }),\n hoursLabel: Props.TextInput({ label: 'Hours label', placeholder: 'Hours' }),\n minutesLabel: Props.TextInput({\n label: 'Minutes label',\n placeholder: 'Minutes',\n }),\n secondsLabel: Props.TextInput({\n label: 'Seconds label',\n placeholder: 'Seconds',\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Divider')))),\n {\n type: MakeswiftComponentType.Divider,\n label: 'Divider',\n icon: 'Divider40',\n props: {\n id: Props.ElementID(),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'solid', label: 'Solid' },\n { value: 'dashed', label: 'Dashed' },\n { value: 'dotted', label: 'Dotted' },\n { value: 'blended', label: 'Blended' },\n ],\n defaultValue: 'solid',\n }),\n thickness: Props.ResponsiveLength({\n label: 'Height',\n defaultValue: { value: 1, unit: 'px' },\n options: [{ value: 'px', label: 'Pixels', icon: 'Px16' }],\n }),\n color: Props.ResponsiveColor({ placeholder: 'black' }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Embed')))),\n {\n type: MakeswiftComponentType.Embed,\n label: 'Embed',\n icon: 'Code40',\n props: {\n id: Props.ElementID(),\n html: Props.TextArea({ label: 'Code', rows: 20 }),\n width: Props.Width({ format: Props.Width.Format.ClassName }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import { createContext, useContext } from 'react'\n\nimport { ResponsiveValue, TextStyleValue } from '../../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../../runtimes/react/controls'\nimport { ColorValue } from '../../../utils/types'\n\nexport const Alignments = {\n LEFT: 'left',\n CENTER: 'center',\n RIGHT: 'right',\n} as const\n\nexport type Alignment = typeof Alignments[keyof typeof Alignments]\n\nexport const Shapes = Object.freeze({\n SQUARE: 'square',\n ROUNDED: 'rounded',\n PILL: 'pill',\n} as const)\n\nexport type Shape = typeof Shapes[keyof typeof Shapes]\n\nexport const Sizes = Object.freeze({\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const)\n\nexport type Size = typeof Sizes[keyof typeof Sizes]\n\nexport const Contrasts = Object.freeze({\n LIGHT: 'light',\n DARK: 'dark',\n} as const)\n\nexport type Contrast = typeof Contrasts[keyof typeof Contrasts]\n\nexport type Value = {\n shape: ResponsiveValue<Shape> | null | undefined\n size: ResponsiveValue<Size> | null | undefined\n contrast: ResponsiveValue<Contrast> | null | undefined\n brandColor: ResponsiveValue<ColorValue> | null | undefined\n labelTextStyle?: TextStyleValue\n labelTextColor?: ResponsiveColor | null\n}\n\nconst Context = createContext<Value>({} as Value)\n\nexport function useFormContext(): Value {\n return useContext(Context)\n}\n\nconst { Provider } = Context\n\nexport { Provider }\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\nimport { Alignments, Contrast, Contrasts, Shapes, Sizes } from './context/FormContext'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Form')))),\n {\n type: MakeswiftComponentType.Form,\n label: 'Form',\n icon: 'Form40',\n props: {\n id: Props.ElementID(),\n tableId: Props.Table(),\n fields: Props.TableFormFields(),\n submitLink: Props.Link(props => ({\n label: 'Redirect to',\n // TODO: This option is hardcoded. We should import it from LinkPanelOptions\n options: [\n { value: 'OPEN_PAGE', label: 'Open page' },\n { value: 'OPEN_URL', label: 'Open URL' },\n ],\n hidden: props.tableId == null,\n })),\n gap: Props.GapY(props => ({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Gap',\n defaultValue: { value: 0, unit: 'px' },\n hidden: props.tableId == null,\n })),\n shape: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Shape',\n options: [\n { label: 'Pill', value: Shapes.PILL, icon: 'ButtonPill16' },\n { label: 'Rounded', value: Shapes.ROUNDED, icon: 'ButtonRounded16' },\n { label: 'Square', value: Shapes.SQUARE, icon: 'ButtonSquare16' },\n ],\n defaultValue: Shapes.ROUNDED,\n hidden: props.tableId == null,\n })),\n size: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Size',\n options: [\n { label: 'Small', value: Sizes.SMALL, icon: 'SizeSmall16' },\n { label: 'Medium', value: Sizes.MEDIUM, icon: 'SizeMedium16' },\n { label: 'Large', value: Sizes.LARGE, icon: 'SizeLarge16' },\n ],\n defaultValue: Sizes.MEDIUM,\n hidden: props?.tableId == null,\n })),\n contrast: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Color',\n options: [\n { label: 'Light mode', value: Contrasts.LIGHT, icon: 'Sun16' },\n { label: 'Dark mode', value: Contrasts.DARK, icon: 'Moon16' },\n ],\n defaultValue: Contrasts.LIGHT,\n hidden: props.tableId == null,\n })),\n labelTextStyle: Props.TextStyle({ label: 'Label text style' }),\n labelTextColor: Props.ResponsiveColor((props, device) => {\n const hidden = props.tableId == null\n const responsiveContrast = props.contrast as ResponsiveValue<Contrast>\n const contrast = findDeviceOverride<Contrast>(responsiveContrast, device)\n\n return {\n hidden,\n label: 'Label text color',\n placeholder:\n contrast?.value === Contrasts.DARK ? 'rgba(255,255,255,0.95)' : 'rgba(0,0,0,0.8)',\n }\n }),\n submitTextStyle: Props.TextStyle({ label: 'Button text style' }),\n brandColor: Props.ResponsiveColor(props => ({\n label: 'Button color',\n placeholder: 'black',\n hidden: props.tableId == null,\n // TODO: Add hideAlphaSlider\n })),\n submitTextColor: Props.ResponsiveColor(props => ({\n label: 'Button text color',\n placeholder: 'white',\n hidden: props.tableId == null,\n })),\n submitLabel: Props.TextInput(props => ({\n label: 'Button label',\n placeholder: 'Submit',\n hidden: props.tableId == null,\n })),\n submitVariant: Props.ResponsiveSelect(props => ({\n label: 'Button style',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n hidden: props.tableId == null,\n })),\n submitWidth: Props.ResponsiveLength(props => ({\n label: 'Button width',\n hidden: props.tableId == null,\n // TODO: Add placeholder: { value: 'auto' }\n })),\n submitAlignment: Props.ResponsiveIconRadioGroup(props => ({\n label: 'Button alignment',\n options: [\n { label: 'Left', value: Alignments.LEFT, icon: 'AlignLeft16' },\n { label: 'Center', value: Alignments.CENTER, icon: 'AlignCenter16' },\n { label: 'Right', value: Alignments.RIGHT, icon: 'AlignRight16' },\n ],\n defaultValue: Alignments.CENTER,\n hidden: props.tableId == null,\n })),\n width: Props.Width({\n preset: [{ deviceId: 'desktop', value: { value: 550, unit: 'px' } }],\n defaultValue: { value: 100, unit: '%' },\n format: Props.Width.Format.ClassName,\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Image')))),\n {\n type: MakeswiftComponentType.Image,\n label: 'Image',\n props: {\n id: Props.ElementID(),\n file: Props.Image(),\n altText: Props.TextInput({ label: 'Alt text' }),\n link: Props.Link({ label: 'On click' }),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({ format: Props.Padding.Format.ClassName }),\n border: Props.Border({ format: Props.Border.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n boxShadow: Props.Shadows({ format: Props.Shadows.Format.ClassName }),\n opacity: Props.ResponsiveOpacity(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { NavigationLinksValue, ResponsiveValue } from '../../../prop-controllers/descriptors'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findDeviceOverride } from '../../utils/devices'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Navigation')))),\n {\n type: MakeswiftComponentType.Navigation,\n label: 'Navigation',\n icon: 'Navigation40',\n props: {\n id: Props.ElementID(),\n links: Props.NavigationLinks(),\n linkTextStyle: Props.TextStyle(props => {\n const links = props.links as NavigationLinksValue\n\n return {\n label: 'Link text style',\n hidden: links == null || links.length === 0,\n }\n }),\n showLogo: Props.Checkbox({ preset: true, label: 'Show logo' }),\n logoFile: Props.Image(props => ({\n label: 'Logo',\n hidden: props.showLogo === false,\n })),\n logoWidth: Props.ResponsiveLength(props => ({\n preset: [{ deviceId: 'desktop', value: { value: 100, unit: 'px' } }],\n label: 'Logo width',\n min: 0,\n max: 1000,\n // TODO: This is hardcoded value, import it from LengthInputOptions\n options: [{ value: 'px', label: 'Pixels', icon: 'Px16' }],\n hidden: props.showLogo === false,\n })),\n logoAltText: Props.TextInput(props => ({\n label: 'Logo alt text',\n hidden: props.showLogo === false,\n })),\n logoLink: Props.Link(props => ({\n label: 'Logo on click',\n hidden: props.showLogo === false,\n })),\n alignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'flex-start', icon: 'AlignLeft16' },\n { label: 'Center', value: 'center', icon: 'AlignCenter16' },\n { label: 'End', value: 'flex-end', icon: 'AlignRight16' },\n ],\n defaultValue: 'flex-end',\n }),\n gutter: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Link gap',\n min: 0,\n max: 100,\n step: 1,\n defaultValue: { value: 0, unit: 'px' },\n }),\n mobileMenuAnimation: Props.ResponsiveSelect({\n label: 'Mobile menu',\n options: [\n { value: 'coverRight', label: 'Cover from right' },\n { value: 'coverLeft', label: 'Cover from left' },\n ],\n }),\n mobileMenuOpenIconColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Open icon color',\n placeholder: 'rgba(161, 168, 194, 0.5)',\n hidden,\n }\n }),\n mobileMenuCloseIconColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Close icon color',\n placeholder: 'rgba(161, 168, 194, 0.5)',\n hidden,\n }\n }),\n mobileMenuBackgroundColor: Props.ResponsiveColor((props, device) => {\n const mobileMenuAnimation = props.mobileMenuAnimation as ResponsiveValue<string>\n const hidden = !findDeviceOverride(mobileMenuAnimation, device)\n\n return {\n label: 'Menu BG color',\n placeholder: 'black',\n hidden,\n }\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Root')))),\n {\n type: MakeswiftComponentType.Root,\n label: 'Page',\n hidden: true,\n props: {\n children: Props.Grid(),\n backgrounds: Props.Backgrounds(),\n rowGap: Props.GapY(),\n columnGap: Props.GapX(),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { SocialLinksValue } from '../../../prop-controllers/descriptors'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./SocialLinks')))),\n {\n type: MakeswiftComponentType.SocialLinks,\n label: 'Social Links',\n icon: 'SocialLinks40',\n props: {\n id: Props.ElementID(),\n links: Props.SocialLinks({\n preset: {\n links: [\n {\n id: 'facebook',\n payload: { type: 'facebook', url: 'https://www.facebook.com' },\n },\n {\n id: 'instagram',\n payload: { type: 'instagram', url: 'https://www.instagram.com' },\n },\n {\n id: 'twitter',\n payload: { type: 'twitter', url: 'https://www.twitter.com' },\n },\n ],\n openInNewTab: false,\n },\n }),\n shape: Props.ResponsiveIconRadioGroup(props => {\n const links = props.links as SocialLinksValue\n\n return {\n label: 'Shape',\n options: [\n { label: 'Naked', value: 'naked', icon: 'Star16' },\n { label: 'Circle', value: 'circle', icon: 'StarCircle16' },\n { label: 'Rounded', value: 'rounded', icon: 'StarRoundedSquare16' },\n { label: 'Square', value: 'square', icon: 'StarSquare16' },\n ],\n defaultValue: 'naked',\n hidden: links == null || links.links.length === 0,\n }\n }),\n size: Props.ResponsiveIconRadioGroup(props => {\n const links = props.links as SocialLinksValue\n\n return {\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n hidden: links == null || links.links.length === 0,\n }\n }),\n hoverStyle: Props.ResponsiveSelect(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'On hover',\n options: [\n { value: 'none', label: 'None' },\n { value: 'grow', label: 'Grow' },\n { value: 'shrink', label: 'Shrink' },\n { value: 'fade', label: 'Fade' },\n ],\n defaultValue: 'none',\n labelOrientation: 'horizontal',\n hidden,\n }\n }),\n fill: Props.ResponsiveColor(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'Icon color',\n hidden,\n }\n }),\n backgroundColor: Props.ResponsiveColor(props => {\n const links = props.links as SocialLinksValue\n const hidden = links == null || links.links.length === 0\n\n return {\n label: 'Shape color',\n hidden,\n }\n }),\n alignment: Props.ResponsiveIconRadioGroup({\n label: 'Alignment',\n options: [\n { label: 'flex-start', value: 'flex-start', icon: 'AlignLeft16' },\n { label: 'center', value: 'center', icon: 'AlignCenter16' },\n { label: 'flex-end', value: 'flex-end', icon: 'AlignRight16' },\n ],\n defaultValue: 'center',\n }),\n gutter: Props.GapX({\n preset: [{ deviceId: 'desktop', value: { value: 10, unit: 'px' } }],\n label: 'Link gap',\n min: 0,\n max: 100,\n step: 1,\n defaultValue: { value: 0, unit: 'px' },\n }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: { value: 10, unit: 'px' },\n marginRight: 'auto',\n marginBottom: { value: 10, unit: 'px' },\n marginLeft: 'auto',\n },\n },\n ],\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Text')))),\n {\n type: MakeswiftComponentType.Text,\n label: 'Text',\n props: {\n id: Props.ElementID(),\n text: Props.RichText(() => ({\n preset: {\n document: {\n object: 'document',\n nodes: [\n {\n object: 'block',\n type: 'paragraph',\n nodes: [\n {\n object: 'text',\n text: ipsum(3),\n marks: [\n {\n object: 'mark',\n type: 'typography',\n data: {\n value: {\n id: null,\n style: [\n {\n deviceId: 'mobile',\n value: { fontSize: { value: 16, unit: 'px' } },\n },\n {\n deviceId: 'desktop',\n value: {\n fontWeight: 400,\n fontSize: { value: 18, unit: 'px' },\n lineHeight: 1.5,\n },\n },\n ],\n },\n },\n },\n ],\n },\n ],\n },\n ],\n },\n },\n })),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n preset: [{ deviceId: 'desktop', value: { value: 700, unit: 'px' } }],\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: 'desktop',\n value: {\n marginTop: null,\n marginRight: 'auto',\n marginBottom: { value: 20, unit: 'px' },\n marginLeft: 'auto',\n },\n },\n ],\n }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Video')))),\n {\n type: MakeswiftComponentType.Video,\n label: 'Video',\n icon: 'Video40',\n props: {\n id: Props.ElementID(),\n video: Props.Video({ preset: { controls: true } }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import { ReactRuntime } from '../../runtimes/react'\nimport { registerComponent as registerBoxComponent } from './Box/register'\nimport { registerComponent as registerButtonComponent } from './Button/register'\nimport { registerComponent as registerCarouselComponent } from './Carousel/register'\nimport { registerComponent as registerCountdownComponent } from './Countdown/register'\nimport { registerComponent as registerDividerComponent } from './Divider/register'\nimport { registerComponent as registerEmbedComponent } from './Embed/register'\nimport { registerComponent as registerFormComponent } from './Form/register'\nimport { registerComponent as registerImageComponent } from './Image/register'\nimport { registerComponent as registerNavigationComponent } from './Navigation/register'\nimport { registerComponent as registerRootComponent } from './Root/register'\nimport { registerComponent as registerSocialLinksComponent } from './SocialLinks/register'\nimport { registerComponent as registerTextComponent } from './Text/register'\nimport { registerComponent as registerVideoComponent } from './Video/register'\n\nexport function registerBuiltinComponents(runtime: ReactRuntime) {\n const unregisterBoxComponent = registerBoxComponent(runtime)\n const unregisterButtonComponent = registerButtonComponent(runtime)\n const unregisterCarouselComponent = registerCarouselComponent(runtime)\n const unregisterCountdownComponent = registerCountdownComponent(runtime)\n const unregisterDividerComponent = registerDividerComponent(runtime)\n const unregisterEmbedComponent = registerEmbedComponent(runtime)\n const unregisterFormComponent = registerFormComponent(runtime)\n const unregisterImageComponent = registerImageComponent(runtime)\n const unregisterNavigationComponent = registerNavigationComponent(runtime)\n const unregisterRootComponent = registerRootComponent(runtime)\n const unregisterSocialLinksComponent = registerSocialLinksComponent(runtime)\n const unregisterTextComponent = registerTextComponent(runtime)\n const unregisterVideoComponent = registerVideoComponent(runtime)\n\n return () => {\n unregisterBoxComponent()\n unregisterButtonComponent()\n unregisterCarouselComponent()\n unregisterCountdownComponent()\n unregisterDividerComponent()\n unregisterEmbedComponent()\n unregisterFormComponent()\n unregisterImageComponent()\n unregisterNavigationComponent()\n unregisterRootComponent()\n unregisterSocialLinksComponent()\n unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","import * as React from 'react'\nimport { cache, CSSObject } from '@emotion/css'\nimport { serializeStyles } from '@emotion/serialize'\nimport { registerStyles, insertStyles } from '@emotion/utils'\n\nconst isServer = typeof window === 'undefined'\nconst useInsertionEffectSpecifier = 'useInsertionEffect'\nconst useInsertionEffect = React[useInsertionEffectSpecifier] ?? React.useLayoutEffect\n\nexport function useStyle(style: CSSObject): string {\n const serialized = serializeStyles([style], cache.registered)\n\n registerStyles(cache, serialized, false)\n\n useInsertionEffect(() => {\n insertStyles(cache, serialized, false)\n })\n\n if (isServer) insertStyles(cache, serialized, false)\n\n return `${cache.key}-${serialized.name}`\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjg5ODY0IDE4SDE3LjEwMTRDMTguNDE4MyAxOCAxOS4yNjMzIDE2LjYwMDMgMTguNjUgMTUuNDM0OUwxMS41NDg2IDEuOTQyMzZDMTAuODkyNSAwLjY5NTc3IDkuMTA3NDkgMC42OTU3NjYgOC40NTEzOSAxLjk0MjM2TDEuMzUwMDMgMTUuNDM0OUMwLjczNjY5MiAxNi42MDAzIDEuNTgxNzQgMTggMi44OTg2NCAxOFpNOSA2QzkgNS40NDc3MiA5LjQ0NzcxIDUgMTAgNUMxMC41NTIzIDUgMTEgNS40NDc3MiAxMSA2VjExQzExIDExLjU1MjMgMTAuNTUyMyAxMiAxMCAxMkM5LjQ0NzcxIDEyIDkgMTEuNTUyMyA5IDExVjZaTTExLjI1IDE0Ljc1QzExLjI1IDE1LjQ0MDQgMTAuNjkwNCAxNiAxMCAxNkM5LjMwOTY0IDE2IDguNzUgMTUuNDQwNCA4Ljc1IDE0Ljc1QzguNzUgMTQuMDU5NiA5LjMwOTY0IDEzLjUgMTAgMTMuNUMxMC42OTA0IDEzLjUgMTEuMjUgMTQuMDU5NiAxMS4yNSAxNC43NVoiIC8+Cjwvc3ZnPgo=\"","import { forwardRef, Ref } from 'react'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { ReactComponent as Warning20 } from '../../icons/warning-20.svg'\n\ntype Props = {\n text: string\n}\n\nexport const FallbackComponent = forwardRef(function FallbackComponent(\n { text }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <div\n ref={ref}\n className={useStyle({\n width: '100%',\n height: 54,\n backgroundColor: '#fcedf2',\n borderRadius: 6,\n padding: 16,\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n color: '#c73e6d',\n fill: 'currentColor',\n fontFamily: 'Heebo, sans-serif',\n fontSize: 16,\n })}\n >\n <Warning20 />\n <span>{text}</span>\n </div>\n )\n})\n","import { useEffect, useRef } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport { File, GlobalElement, PagePathnameSlice, Swatch, Table, Typography } from '../../../api'\nimport { useMakeswiftClient } from '../../../api/react'\n\nexport function useSwatch(swatchId: string | null): Swatch | null {\n const client = useMakeswiftClient()\n const readSwatch = () => (swatchId == null ? null : client.readSwatch(swatchId))\n const swatch = useSyncExternalStore(client.subscribe, readSwatch, readSwatch)\n\n useEffect(() => {\n if (swatchId != null) client.fetchSwatch(swatchId).catch(console.error)\n }, [client, swatchId])\n\n return swatch\n}\n\nexport function useSwatches(swatchIds: string[]): (Swatch | null)[] {\n const client = useMakeswiftClient()\n const lastSnapshot = useRef<(Swatch | null)[]>()\n\n function getSnapshot() {\n const swatches = swatchIds.map(swatchId => client.readSwatch(swatchId))\n\n if (\n lastSnapshot.current != null &&\n lastSnapshot.current.length === swatches.length &&\n lastSnapshot.current.every((swatch, idx) => swatches[idx] === swatch)\n ) {\n return lastSnapshot.current\n }\n\n return (lastSnapshot.current = swatches)\n }\n\n const swatches = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n useEffect(() => {\n Promise.all(swatchIds.map(swatchId => client.fetchSwatch(swatchId))).catch(console.error)\n }, [client, swatchIds])\n\n return swatches\n}\n\nexport function useFile(fileId: string | null): File | null {\n const client = useMakeswiftClient()\n const readFile = () => (fileId == null ? null : client.readFile(fileId))\n const file = useSyncExternalStore(client.subscribe, readFile, readFile)\n\n useEffect(() => {\n if (fileId != null) client.fetchFile(fileId)\n }, [client, fileId])\n\n return file\n}\n\nexport function useFiles(fileIds: string[]): (File | null)[] {\n const client = useMakeswiftClient()\n const lastSnapshot = useRef<(File | null)[]>()\n\n function getSnapshot() {\n const files = fileIds.map(fileId => client.readFile(fileId))\n\n if (\n lastSnapshot.current != null &&\n lastSnapshot.current.length === files.length &&\n lastSnapshot.current.every((file, idx) => files[idx] === file)\n ) {\n return lastSnapshot.current\n }\n\n return (lastSnapshot.current = files)\n }\n\n const files = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n useEffect(() => {\n Promise.all(fileIds.map(fileId => client.fetchFile(fileId))).catch(console.error)\n }, [client, fileIds])\n\n return files\n}\n\nexport function useTypography(typographyId: string | null): Typography | null {\n const client = useMakeswiftClient()\n const readTypography = () => (typographyId == null ? null : client.readTypography(typographyId))\n const typography = useSyncExternalStore(client.subscribe, readTypography, readTypography)\n\n useEffect(() => {\n if (typographyId != null) client.fetchTypography(typographyId).catch(console.error)\n }, [client, typographyId])\n\n return typography\n}\n\nexport function useGlobalElement(globalElementId: string | null): GlobalElement | null {\n const client = useMakeswiftClient()\n const readGlobalElement = () =>\n globalElementId == null ? null : client.readGlobalElement(globalElementId)\n const globalElement = useSyncExternalStore(client.subscribe, readGlobalElement, readGlobalElement)\n\n useEffect(() => {\n if (globalElementId != null) client.fetchGlobalElement(globalElementId).catch(console.error)\n }, [client, globalElementId])\n\n return globalElement\n}\n\nexport function usePagePathnameSlice(pageId: string | null): PagePathnameSlice | null {\n const client = useMakeswiftClient()\n const readPagePathnameSlice = () => (pageId == null ? null : client.readPagePathnameSlice(pageId))\n const pagePathnameSlice = useSyncExternalStore(\n client.subscribe,\n readPagePathnameSlice,\n readPagePathnameSlice,\n )\n\n useEffect(() => {\n if (pageId != null) client.fetchPagePathnameSlice(pageId).catch(console.error)\n }, [client, pageId])\n\n return pagePathnameSlice\n}\n\nexport function useTable(tableId: string | null): Table | null {\n const client = useMakeswiftClient()\n const readTable = () => (tableId == null ? null : client.readTable(tableId))\n const table = useSyncExternalStore(client.subscribe, readTable, readTable)\n\n useEffect(() => {\n if (tableId != null) client.fetchTable(tableId).catch(console.error)\n }, [client, tableId])\n\n return table\n}\n","import { BorderStyleProperty } from 'csstype'\n\nimport type { ColorValue as Color } from '../utils/types'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport {\n BorderValue as ResponsiveBorderValue,\n BorderSide as BorderValueSide,\n} from '../../prop-controllers/descriptors'\nimport { getBorderSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { Swatch } from '../../api'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nfunction mapSideColor(swatches: (Swatch | null)[], { color, ...restOfSide }: BorderValueSide) {\n return {\n ...restOfSide,\n color: color && {\n alpha: color.alpha,\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n },\n }\n}\n\nexport type BorderSide = {\n width: number | null | undefined\n style: BorderStyleProperty\n color: Color | null | undefined\n}\n\ntype BorderData = {\n borderTop: BorderSide | null | undefined\n borderRight: BorderSide | null | undefined\n borderBottom: BorderSide | null | undefined\n borderLeft: BorderSide | null | undefined\n}\n\nexport type BorderPropControllerData = ResponsiveValue<BorderData>\n\nexport function useBorder(\n value: ResponsiveBorderValue | null | undefined,\n): BorderPropControllerData | null | undefined {\n const swatchIds = getBorderSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return null\n\n return value.map(({ value: { borderTop, borderBottom, borderLeft, borderRight }, ...rest }) => ({\n ...rest,\n value: {\n borderTop: borderTop && mapSideColor(swatches, borderTop),\n borderBottom: borderBottom && mapSideColor(swatches, borderBottom),\n borderLeft: borderLeft && mapSideColor(swatches, borderLeft),\n borderRight: borderRight && mapSideColor(swatches, borderRight),\n },\n }))\n}\n","import { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport type { ResponsiveValue } from '../../prop-controllers'\nimport type { ShadowsValue as ResponsiveShadowsValue } from '../../prop-controllers/descriptors'\nimport { getBoxShadowsSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\n\ntype ShadowData = {\n id: string\n payload: {\n inset: boolean\n offsetX: number\n offsetY: number\n blurRadius: number\n spreadRadius: number\n color: Color | null | undefined\n }\n}\n\nconst ShadowDefaultValue = {\n inset: false,\n offsetX: 0,\n offsetY: 2,\n blurRadius: 4,\n spreadRadius: 0,\n color: null,\n} as const\n\nexport type BoxShadowData = Array<ShadowData>\n\nexport type BoxShadowPropControllerData = ResponsiveValue<BoxShadowData>\n\nexport function useBoxShadow(\n value: ResponsiveShadowsValue | null | undefined,\n): BoxShadowPropControllerData | null | undefined {\n const swatchIds = getBoxShadowsSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return null\n\n return value.map(({ value: shadows, ...restOfValue }) => ({\n ...restOfValue,\n value: shadows.map(\n ({\n payload: { color, inset, offsetX, offsetY, blurRadius, spreadRadius },\n ...restOfShadow\n }) => ({\n ...restOfShadow,\n payload: {\n color:\n color != null\n ? {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n }\n : null,\n inset: inset ?? ShadowDefaultValue.inset,\n offsetX: offsetX ?? ShadowDefaultValue.offsetX,\n offsetY: offsetY ?? ShadowDefaultValue.offsetY,\n blurRadius: blurRadius ?? ShadowDefaultValue.blurRadius,\n spreadRadius: spreadRadius ?? ShadowDefaultValue.spreadRadius,\n },\n }),\n ),\n }))\n}\n","import type { ResponsiveValue } from '../../prop-controllers'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport { getResponsiveColorSwatchIds } from '../../prop-controllers/introspection'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\n\nexport function useResponsiveColor(\n color:\n | ResponsiveValue<{\n swatchId: string\n alpha: number\n }>\n | null\n | undefined,\n): ResponsiveValue<Color> | null | undefined {\n const swatchIds = getResponsiveColorSwatchIds(color)\n const swatches = useSwatches(swatchIds)\n\n if (color == null) return null\n\n return color\n .map(({ value: v, ...rest }) => {\n const { swatchId, alpha } = v\n const swatch = swatches.find(s => s && s.id === swatchId)\n\n return swatch == null ? null : { ...rest, value: { swatch, alpha } }\n })\n .filter(isNonNullable)\n}\n","import { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport { DeviceOverride } from '../../prop-controllers'\nimport { DEVICES, findDeviceOverride, getDeviceMediaQuery } from '../utils/devices'\n\nconst DEVICE_QUERIES = DEVICES.map(device => ({\n id: device.id,\n query: getDeviceMediaQuery(device).replace('@media', ''),\n}))\n\nfunction subscribe(notify: () => void) {\n const cleanUpFns = DEVICE_QUERIES.map(q => {\n const mediaQueryList = window.matchMedia(q.query)\n mediaQueryList.addEventListener('change', notify)\n return () => mediaQueryList.removeEventListener('change', notify)\n })\n return () => cleanUpFns.forEach(fn => fn())\n}\n\nexport function useMediaQuery<S>(responsiveValue?: Array<DeviceOverride<S>>): S | undefined {\n const getServerSnapshot = () => findDeviceOverride(responsiveValue, DEVICES[0].id)?.value\n\n function getSnapshot() {\n const deviceId: string = DEVICE_QUERIES.reduce((matchedDevice, deviceQueries) => {\n if (window.matchMedia(deviceQueries.query).matches) {\n return deviceQueries.id\n }\n return matchedDevice\n }, DEVICE_QUERIES[0].id)\n return findDeviceOverride(responsiveValue, deviceId)?.value\n }\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/length\n *\n * @todos\n * - Add additional units\n * - Rename `value` field to `amount` or a more descriptive name representative of the \"distance\"\n * represented by a CSS length\n */\nexport type LengthData = { value: number; unit: 'px' } | string | number\n\nexport function lengthDataToString(data: LengthData): string {\n if (typeof data === 'object') return `${data.value}${data.unit}`\n\n if (typeof data === 'number') return `${data}px`\n\n return data\n}\n","import { CSSObject } from '@emotion/css'\nimport { LengthData, lengthDataToString } from './length'\nimport {\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n} from 'csstype'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/padding#constituent_properties */\nexport type PaddingLonghandPropertyData = LengthData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/padding\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type PaddingPropertyData = {\n paddingTop: PaddingLonghandPropertyData | PaddingTopProperty<number | string> | null | undefined\n paddingRight:\n | PaddingLonghandPropertyData\n | PaddingRightProperty<number | string>\n | null\n | undefined\n paddingBottom:\n | PaddingLonghandPropertyData\n | PaddingBottomProperty<number | string>\n | null\n | undefined\n paddingLeft: PaddingLonghandPropertyData | PaddingLeftProperty<number | string> | null | undefined\n}\n\nexport function paddingPropertyDataToStyle(\n data: PaddingPropertyData,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n const paddingTop = data.paddingTop ?? defaultValue.paddingTop\n const paddingRight = data.paddingRight ?? defaultValue.paddingRight\n const paddingBottom = data.paddingBottom ?? defaultValue.paddingBottom\n const paddingLeft = data.paddingLeft ?? defaultValue.paddingLeft\n const style: CSSObject = {}\n\n if (paddingTop != null) style.paddingTop = lengthDataToString(paddingTop)\n if (paddingRight != null) style.paddingRight = lengthDataToString(paddingRight)\n if (paddingBottom != null) style.paddingBottom = lengthDataToString(paddingBottom)\n if (paddingLeft != null) style.paddingLeft = lengthDataToString(paddingLeft)\n\n return style\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n MarginBottomProperty,\n MarginLeftProperty,\n MarginRightProperty,\n MarginTopProperty,\n} from 'csstype'\nimport { LengthData, lengthDataToString } from './length'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/margin#constituent_properties */\nexport type MarginLonghandPropertyData = LengthData | 'auto'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/margin\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type MarginPropertyData = {\n marginTop: MarginLonghandPropertyData | MarginTopProperty<string | number> | null | undefined\n marginRight: MarginLonghandPropertyData | MarginRightProperty<string | number> | null | undefined\n marginBottom:\n | MarginLonghandPropertyData\n | MarginBottomProperty<string | number>\n | null\n | undefined\n marginLeft: MarginLonghandPropertyData | MarginLeftProperty<string | number> | null | undefined\n}\n\nexport function marginPropertyDataToStyle(\n data: MarginPropertyData,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n const marginTop = data.marginTop ?? defaultValue.marginTop\n const marginRight = data.marginRight ?? defaultValue.marginRight\n const marginBottom = data.marginBottom ?? defaultValue.marginBottom\n const marginLeft = data.marginLeft ?? defaultValue.marginLeft\n const style: CSSObject = {}\n\n if (marginTop != null) style.marginTop = lengthDataToString(marginTop)\n if (marginRight != null) style.marginRight = lengthDataToString(marginRight)\n if (marginBottom != null) style.marginBottom = lengthDataToString(marginBottom)\n if (marginLeft != null) style.marginLeft = lengthDataToString(marginLeft)\n\n return style\n}\n","import type { LengthData } from './length'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/percentage */\nexport type PercentageData = { value: number; unit: '%' }\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/length-percentage */\nexport type LengthPercentageData = LengthData | PercentageData | number | string\n\nexport function lengthPercentageDataToString(data: LengthPercentageData): string {\n if (typeof data === 'object') return `${data.value}${data.unit}`\n\n if (typeof data === 'number') return `${data}px`\n\n return data\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n} from 'csstype'\nimport { LengthPercentageData, lengthPercentageDataToString } from './length-percentage'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius#constituent_properties */\nexport type BorderRadiusLonghandPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderRadiusPropertyData = {\n borderTopLeftRadius?:\n | LengthPercentageData\n | BorderTopLeftRadiusProperty<string | number>\n | null\n | undefined\n borderTopRightRadius?:\n | LengthPercentageData\n | BorderTopRightRadiusProperty<string | number>\n | null\n | undefined\n borderBottomRightRadius?:\n | LengthPercentageData\n | BorderBottomRightRadiusProperty<string | number>\n | null\n | undefined\n borderBottomLeftRadius?:\n | LengthPercentageData\n | BorderBottomLeftRadiusProperty<string | number>\n | null\n | undefined\n}\n\nexport function borderRadiusPropertyDataToStyle(\n data: BorderRadiusPropertyData,\n defaultValue: BorderRadiusPropertyData = {},\n): CSSObject {\n const borderTopLeftRadius = data.borderTopLeftRadius ?? defaultValue.borderTopLeftRadius\n const borderTopRightRadius = data.borderTopRightRadius ?? defaultValue.borderTopRightRadius\n const borderBottomRightRadius =\n data.borderBottomRightRadius ?? defaultValue.borderBottomRightRadius\n const borderBottomLeftRadius = data.borderBottomLeftRadius ?? defaultValue.borderBottomLeftRadius\n const style: CSSObject = {}\n\n if (borderTopLeftRadius != null) {\n style.borderTopLeftRadius = lengthPercentageDataToString(borderTopLeftRadius)\n }\n\n if (borderTopRightRadius != null) {\n style.borderTopRightRadius = lengthPercentageDataToString(borderTopRightRadius)\n }\n\n if (borderBottomRightRadius != null) {\n style.borderBottomRightRadius = lengthPercentageDataToString(borderBottomRightRadius)\n }\n\n if (borderBottomLeftRadius != null) {\n style.borderBottomLeftRadius = lengthPercentageDataToString(borderBottomLeftRadius)\n }\n\n return style\n}\n","import type { ColorValue as Color } from './types'\n\nexport function colorToString(color?: Color): string {\n return color && color.swatch\n ? `hsla(${color.swatch.hue},${color.swatch.saturation}%,${color.swatch.lightness}%,${color.alpha})`\n : ''\n}\n","import { CSSObject } from '@emotion/css'\nimport {\n BorderBottomProperty,\n BorderLeftProperty,\n BorderProperty,\n BorderRightProperty,\n BorderStyleProperty,\n BorderTopProperty,\n} from 'csstype'\nimport { colorToString } from '../components/utils/colorToString'\nimport { ColorValue } from '../components/utils/types'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyleProperty\n color?: ColorValue | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop?:\n | BorderSideShorthandPropertyData\n | BorderTopProperty<string | number>\n | null\n | undefined\n borderRight?:\n | BorderSideShorthandPropertyData\n | BorderRightProperty<string | number>\n | null\n | undefined\n borderBottom?:\n | BorderSideShorthandPropertyData\n | BorderBottomProperty<string | number>\n | null\n | undefined\n borderLeft?:\n | BorderSideShorthandPropertyData\n | BorderLeftProperty<string | number>\n | null\n | undefined\n}\n\nexport function borderPropertyDataToStyle(\n data: BorderPropertyData,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n const borderTop = data.borderTop ?? defaultValue.borderTop\n const borderRight = data.borderRight ?? defaultValue.borderRight\n const borderBottom = data.borderBottom ?? defaultValue.borderBottom\n const borderLeft = data.borderLeft ?? defaultValue.borderLeft\n const style: CSSObject = {}\n\n if (borderTop != null) style.borderTop = borderSideToString(borderTop)\n if (borderRight != null) style.borderRight = borderSideToString(borderRight)\n if (borderBottom != null) style.borderBottom = borderSideToString(borderBottom)\n if (borderLeft != null) style.borderLeft = borderSideToString(borderLeft)\n\n return style\n}\n\nfunction borderSideToString(\n borderSide: BorderSideShorthandPropertyData | BorderProperty<string | number>,\n): string {\n if (typeof borderSide === 'string') return borderSide\n\n if (typeof borderSide === 'number') return `${borderSide}px`\n\n const { width, color, style } = borderSide\n\n return `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n}\n","import { WidthProperty } from 'csstype'\nimport { CSSObject } from '@emotion/css'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n WidthValue,\n PaddingValue,\n MarginValue,\n BorderRadiusValue,\n TextStyleValue,\n} from '../../prop-controllers/descriptors'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport { PaddingPropertyData, paddingPropertyDataToStyle } from '../../css/padding'\nimport { MarginPropertyData, marginPropertyDataToStyle } from '../../css/margin'\nimport { BorderRadiusPropertyData, borderRadiusPropertyDataToStyle } from '../../css/border-radius'\nimport { BorderPropertyData, borderPropertyDataToStyle } from '../../css/border'\nimport { BorderPropControllerData } from '../hooks/useBorder'\nimport { colorToString } from './colorToString'\nimport { BoxShadowData, BoxShadowPropControllerData } from '../hooks'\n\nexport function responsiveStyle<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>>(\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return joinResponsiveValues(responsiveValues, join, strategy).reduce(\n (acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return {\n ...acc,\n [mediaQuery]: {\n ...(acc[mediaQuery] as CSSObject),\n ...value,\n },\n }\n },\n {} as CSSObject,\n )\n}\n\nexport function responsiveWidth(\n widthData: WidthValue | undefined,\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): CSSObject {\n return {\n maxWidth: '100%',\n ...responsiveStyle([widthData], ([width = defaultValue]) => ({\n width: typeof width === 'object' ? `${width.value}${width.unit}` : width,\n })),\n }\n}\n\nexport function responsivePadding(\n paddingData: PaddingValue | undefined,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n return responsiveStyle([paddingData], ([padding = {} as PaddingPropertyData]) =>\n paddingPropertyDataToStyle(\n padding,\n Object.assign(\n { paddingTop: 0, paddingRight: 0, paddingBottom: 0, paddingLeft: 0 },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveMargin(\n marginData: MarginValue | undefined,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n return responsiveStyle([marginData], ([margin = {} as MarginPropertyData]) =>\n marginPropertyDataToStyle(\n margin,\n Object.assign(\n { marginTop: 0, marginRight: 'auto', marginBottom: 0, marginLeft: 'auto' },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveBorderRadius(\n borderRadiusData: BorderRadiusValue | undefined,\n defaultValue: BorderRadiusPropertyData = {} as BorderRadiusPropertyData,\n): CSSObject {\n return responsiveStyle([borderRadiusData], ([borderRadius = {}]) =>\n borderRadiusPropertyDataToStyle(\n borderRadius,\n Object.assign(\n {\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0,\n },\n defaultValue,\n ),\n ),\n )\n}\n\nexport function responsiveBorder(\n borderData: BorderPropControllerData | undefined,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n return responsiveStyle([borderData], ([border = {}]) =>\n borderPropertyDataToStyle(\n border,\n Object.assign(\n {\n borderTop: '0px solid black',\n borderRight: '0px solid black',\n borderBottom: '0px solid black',\n borderLeft: '0px solid black',\n },\n defaultValue,\n ),\n ),\n )\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function responsiveGridItem(props: {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}): CSSObject {\n return {\n display: 'flex',\n ...responsiveStyle(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n ),\n }\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function responsiveShadow(value: BoxShadowPropControllerData | undefined): CSSObject {\n return responsiveStyle([value], ([shadow = []]) => ({\n boxShadow: getBoxShadow(shadow),\n }))\n}\n\nexport function responsiveTextStyle(value: TextStyleValue | undefined): CSSObject {\n return responsiveStyle(\n [value],\n ([\n textStyle = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n ]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return {\n ...(fontFamily == null ? {} : { fontFamily: `\"${fontFamily}\"` }),\n ...(fontWeight == null ? {} : { fontWeight }),\n ...(letterSpacing == null ? {} : { letterSpacing }),\n ...(fontSize == null ? {} : { fontSize: `${fontSize.value}${fontSize.unit}` }),\n ...(textTransform.includes('uppercase') ? { textTransform: 'uppercase' } : {}),\n ...(fontStyle.includes('italic') ? { fontStyle: 'italic' } : {}),\n }\n },\n )\n}\n","import { CSSObject } from '@emotion/css'\n\nimport { useBorder, BorderSide } from '../../../components/hooks'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\n\nimport {\n FontSizePropertyData,\n StyleControlData,\n StyleControlDefinition,\n StyleControlProperty,\n WidthPropertyData,\n} from '../../../controls'\nimport { useStyle } from '../use-style'\nimport { BorderRadiusLonghandPropertyData } from '../../../css/border-radius'\nimport { lengthPercentageDataToString } from '../../../css/length-percentage'\nimport { marginPropertyDataToStyle } from '../../../css/margin'\nimport { paddingPropertyDataToStyle } from '../../../css/padding'\n\nconst defaultMargin = {\n marginTop: 0,\n marginRight: 'auto',\n marginBottom: 0,\n marginLeft: 'auto',\n}\n\nconst defaultPadding = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n}\n\nfunction useStyleControlCssObject(\n style: StyleControlData | undefined,\n controlDefinition: StyleControlDefinition,\n): CSSObject {\n const { properties } = controlDefinition.config\n\n return {\n ...(properties.includes(StyleControlProperty.Width) && {\n maxWidth: '100%',\n }),\n ...responsiveStyle(\n [\n style?.width,\n style?.margin,\n style?.padding,\n useBorder(style?.border),\n style?.borderRadius,\n style?.textStyle,\n ] as const,\n ([width, margin, padding, border, borderRadius, textStyle]) => ({\n ...(properties.includes(StyleControlProperty.Width) && {\n width: widthToString(width) ?? '100%',\n }),\n ...(properties.includes(StyleControlProperty.Margin) &&\n marginPropertyDataToStyle(margin ?? defaultMargin, defaultMargin)),\n ...(properties.includes(StyleControlProperty.Padding) &&\n paddingPropertyDataToStyle(padding ?? defaultPadding, defaultPadding)),\n ...(properties.includes(StyleControlProperty.Border) && {\n borderTop: borderSideToString(border?.borderTop) ?? '0 solid black',\n borderRight: borderSideToString(border?.borderRight) ?? '0 solid black',\n borderBottom: borderSideToString(border?.borderBottom) ?? '0 solid black',\n borderLeft: borderSideToString(border?.borderLeft) ?? '0 solid black',\n }),\n ...(properties.includes(StyleControlProperty.BorderRadius) && {\n borderTopLeftRadius: borderRadiusToString(borderRadius?.borderTopLeftRadius) ?? 0,\n borderTopRightRadius: borderRadiusToString(borderRadius?.borderTopRightRadius) ?? 0,\n borderBottomRightRadius: borderRadiusToString(borderRadius?.borderBottomRightRadius) ?? 0,\n borderBottomLeftRadius: borderRadiusToString(borderRadius?.borderBottomLeftRadius) ?? 0,\n }),\n ...(properties.includes(StyleControlProperty.TextStyle) && {\n ...(textStyle?.fontFamily && { fontFamily: `\"${textStyle.fontFamily}\"` }),\n ...(textStyle?.letterSpacing && { letterSpacing: textStyle.letterSpacing }),\n ...(textStyle?.fontSize && { fontSize: fontSizeToString(textStyle.fontSize) }),\n ...(textStyle?.fontWeight && { fontWeight: textStyle.fontWeight }),\n textTransform: textStyle?.textTransform ?? [],\n fontStyle: textStyle?.fontStyle ?? [],\n }),\n }),\n ),\n }\n\n function widthToString(widthProperty: WidthPropertyData | undefined): string | null {\n if (widthProperty == null) return null\n\n return lengthPercentageDataToString(widthProperty)\n }\n\n function borderSideToString(borderSide: BorderSide | null | undefined): string | null {\n if (borderSide == null) return null\n\n const { width, color, style } = borderSide\n return `${width != null ? width : 0}px ${style} ${\n color != null ? colorToString(color) : 'black'\n }`\n }\n\n function borderRadiusToString(\n borderRadius: BorderRadiusLonghandPropertyData | null | undefined,\n ): string | null {\n if (borderRadius == null) return null\n\n return lengthPercentageDataToString(borderRadius)\n }\n\n function fontSizeToString(fontSize: NonNullable<FontSizePropertyData>) {\n return `${fontSize.value}${fontSize.unit}`\n }\n}\n\nexport type StyleControlFormattedValue = string\n\nexport function useFormattedStyle(\n styleControlData: StyleControlData | undefined,\n controlDefinition: StyleControlDefinition,\n): StyleControlFormattedValue {\n const style = useStyleControlCssObject(styleControlData, controlDefinition)\n\n return useStyle(style)\n}\n","type Props<H extends (...args: any[]) => any> = {\n /**\n * `<RenderHook>` requires key that changes whenever the `hook` prop changes to ensure the rules of\n * hooks are followed.\n */\n key: string\n\n hook: H\n parameters: Parameters<H>\n children(result: ReturnType<H>): JSX.Element\n}\n\nexport function RenderHook<H extends (...args: any[]) => any>({\n hook: useHook,\n parameters,\n children,\n}: Props<H>) {\n return children(useHook(...parameters))\n}\n","import { CheckboxControlData, CheckboxControlDefinition } from '../../../controls'\n\nexport type CheckboxControlValue<T extends CheckboxControlDefinition> =\n undefined extends T['config']['defaultValue'] ? boolean | undefined : boolean\n\nexport function useCheckboxControlValue<T extends CheckboxControlDefinition>(\n data: CheckboxControlData | undefined,\n definition: T,\n): CheckboxControlValue<T> {\n return (data ?? definition.config.defaultValue) as CheckboxControlValue<T>\n}\n","import Color from 'color'\nimport { ColorControlData, ColorControlDefinition } from '../../../controls/color'\nimport { useSwatch } from '../hooks/makeswift-api'\n\nexport type ColorControlValue<T extends ColorControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useColorValue<T extends ColorControlDefinition>(\n data: ColorControlData | undefined,\n definition: T,\n): ColorControlValue<any> {\n const swatchId = data?.swatchId ?? null\n const swatch = useSwatch(swatchId)\n const alpha = data?.alpha ?? 1\n\n if (swatch == null) {\n const { defaultValue } = definition.config\n\n if (defaultValue === undefined) return undefined as ColorControlValue<T>\n\n let defaultColor\n try {\n defaultColor = Color(definition.config.defaultValue)\n } catch {\n defaultColor = Color()\n }\n\n return defaultColor.rgb().string()\n }\n\n return Color({ h: swatch.hue, s: swatch.saturation, l: swatch.lightness })\n .alpha(alpha)\n .rgb()\n .string()\n}\n","import {\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlDefinitionOption,\n} from '../../../controls'\n\nexport type ComboboxControlValue<T extends ComboboxControlDefinition> =\n | ComboboxControlDefinitionOption<T>\n | undefined\n\nexport function useComboboxControlValue<T extends ComboboxControlDefinition>(\n data: ComboboxControlData<T> | undefined,\n): ComboboxControlValue<T> {\n return data?.value\n}\n","import {\n ControlDefinition,\n ImageControlData,\n ImageControlDefinition,\n ImageControlValueFormat,\n} from '../../../controls'\nimport { useFile } from '../hooks/makeswift-api'\n\ntype ImageWithDimensions = {\n url: string\n dimensions: { width: number; height: number }\n}\n\nexport type ImageControlValue = string | ImageWithDimensions | undefined\n\nexport function useImageControlValue(\n data: ImageControlData | undefined,\n definition: ImageControlDefinition,\n): ImageControlValue {\n const format = definition.config.format ?? ImageControlValueFormat.URL\n const fileId = data ?? null\n const file = useFile(fileId)\n\n if (format === ImageControlValueFormat.URL) {\n return file?.publicUrl\n }\n\n if (file == null || file.dimensions == null) return undefined\n\n return {\n url: file.publicUrl,\n dimensions: { width: file.dimensions.width, height: file.dimensions.height },\n }\n}\n\nexport type ResolveImageControlValue<T extends ControlDefinition> = T extends ImageControlDefinition\n ? undefined extends T['config']['format']\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.URL\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.WithDimensions\n ? ImageWithDimensions | undefined\n : never\n : never\n","import { MouseEvent, useCallback, useMemo } from 'react'\n\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport { useElementId } from '../'\nimport { LinkControlData, LinkControlDefinition } from '../../../controls'\nimport { usePagePathnameSlice } from '../hooks/makeswift-api'\n\ntype LinkValue = {\n href: string\n target: '_blank' | '_self' | undefined\n onClick: (event: MouseEvent<HTMLElement>) => void\n}\n\nexport type LinkControlValue<_T extends LinkControlDefinition> = LinkValue | undefined\n\nexport function useLinkControlValue<T extends LinkControlDefinition>(\n link: LinkControlData | undefined,\n _definition: T,\n): LinkControlValue<T> {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (event.defaultPrevented) return\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n },\n [link, href, block],\n )\n\n const res = useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick])\n\n return res\n}\n","import { useEffect, useState } from 'react'\nimport { ListControl, ListControlData, ListControlDefinition } from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\ntype ListControlItemValue<T extends ListControlDefinition> = ControlDefinitionValue<\n T['config']['type']\n>\n\nexport type ListControlValue<T extends ListControlDefinition> = ListControlItemValue<T>[]\n\ntype ListControlValueProps<T extends ListControlDefinition> = {\n definition: T\n data: ListControlData<T> | undefined\n children(value: ListControlValue<T>): JSX.Element\n control: ListControl\n}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ListControlValueProps<T>): JSX.Element {\n const [controls, setControls] = useState<Map<string, AnyPropController> | undefined>(new Map())\n\n useEffect(() => {\n if (control == null || data == null) return\n\n // This is not ideal because we're setting the itemsControl from the ListControlValue.\n // This is because right now we don't have a subscribeToValue function inside the control.\n // We can improve this by adding the subscribeToValue to createPropController and by\n // moving the setItemsControl to the control itself.\n setControls(control.setItemsControl(data))\n }, [data, control])\n\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue\n definition={definition.config.type}\n data={item.value}\n control={controls?.get(item.id)}\n >\n {value => renderFn([value as ListControlItemValue<T>, ...listControlValue])}\n </ControlValue>\n ),\n children,\n )([])\n}\n","import { NumberControlData, NumberControlDefinition } from '../../../controls'\n\nexport type NumberControlValue<T extends NumberControlDefinition> =\n undefined extends T['config']['defaultValue'] ? NumberControlData | undefined : NumberControlData\n\nexport function useNumber<T extends NumberControlDefinition>(\n numberControlData: number | undefined,\n controlDefinition: T,\n): NumberControlValue<T> {\n return (numberControlData ?? controlDefinition.config.defaultValue) as NumberControlValue<T>\n}\n","import {\n SelectControlData,\n SelectControlDefinition,\n SelectControlDefinitionOption,\n} from '../../../controls'\n\nexport type SelectControlValue<T extends SelectControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? SelectControlDefinitionOption<T> | undefined\n : SelectControlDefinitionOption<T>\n\nexport function useSelectControlValue<T extends SelectControlDefinition>(\n data: SelectControlData<T> | undefined,\n definition: T,\n): SelectControlValue<T> {\n return (data ?? definition?.config.defaultValue) as SelectControlValue<T>\n}\n","import { ShapeControl, ShapeControlData, ShapeControlDefinition } from '../../../controls/shape'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\nexport type ShapeControlValue<T extends ShapeControlDefinition> = {\n [K in keyof T['config']['type']]: ControlDefinitionValue<T['config']['type'][K]>\n}\n\ntype ShapeControlValueProps<T extends ShapeControlDefinition> = {\n definition: T\n data: ShapeControlData<T> | undefined\n children(value: ShapeControlValue<T>): JSX.Element\n control: ShapeControl\n}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue\n definition={controlDefinition}\n data={data?.[key]}\n control={control?.controls.get(key)}\n >\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\n}\n","import { BoxModel, getBox } from '../../state/modules/box-models'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function pollBoxModel({\n element,\n onBoxModelChange,\n}: {\n element: Element\n onBoxModelChange(boxModel: BoxModel | null): void\n}): () => void {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n const measuredBoxModel = getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n onBoxModelChange(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n onBoxModelChange(null)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { Element } from '../../../runtimes/react'\nimport { getIndexes } from '../../../components/utils/columns'\nimport { responsiveStyle } from '../../../components/utils/responsive-style'\nimport { useStyle } from '../use-style'\nimport { cx } from '@emotion/css'\nimport { pollBoxModel } from '../poll-box-model'\n\nexport type SlotControlValue = ReactNode\n\nexport function useSlot(data: SlotControlData, control: SlotControl | null) {\n // TODO(miguel): While the UI shouldn't allow the state, we should probably check that at least\n // one element is visible.\n if (data == null || data.elements.length === 0) {\n return <Slot.Placeholder control={control} />\n }\n\n return (\n <Slot control={control}>\n {data.elements.map((element, i) => (\n <Slot.Item key={element.key} control={control} grid={data.columns} index={i}>\n <Element element={element} />\n </Slot.Item>\n ))}\n </Slot>\n )\n}\n\ntype SlotProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n children?: ReactNode\n className?: string\n}\n\nexport function Slot<T extends ElementType = 'div'>({\n as,\n control,\n children,\n className,\n ...restOfProps\n}: SlotProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotProps<T>>) {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\nSlot.Placeholder = SlotPlaceholder\n\nSlot.Item = SlotItem\n\ntype SlotItemProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n grid: SlotControlData['columns']\n index: number\n children?: ReactNode\n className?: string\n}\n\nfunction SlotItem<T extends ElementType = 'div'>({\n as,\n control,\n grid,\n index,\n children,\n className,\n ...restOfProps\n}: SlotItemProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotItemProps<T>>): JSX.Element {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n ...responsiveStyle([grid], ([{ count = 12, spans = [[12]] } = {}]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, index)\n const span = spans[rowIndex][columnIndex]\n const flexBasis = `calc(100% * ${(span / count).toFixed(5)})`\n\n return span === 0 ? { display: 'none' } : { flexBasis, minWidth: flexBasis }\n }),\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeItemBoxModel(index, boxModel),\n })\n }, [element, control, index])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\ntype SlotPlaceholderProps = {\n control: SlotControl | null\n}\n\nfunction SlotPlaceholder({ control }: SlotPlaceholderProps): JSX.Element {\n const [element, setElement] = useState<Element | null>(null)\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <div\n ref={setElement}\n className={useStyle({\n width: '100%',\n background: 'rgba(161, 168, 194, 0.18)',\n height: '80px',\n })}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n height=\"100%\"\n className={useStyle({ overflow: 'visible', padding: 8 })}\n >\n <rect\n x={0}\n y={0}\n width=\"100%\"\n height=\"100%\"\n strokeWidth={2}\n strokeDasharray=\"4 2\"\n fill=\"none\"\n stroke=\"rgba(161, 168, 194, 0.40)\"\n rx=\"4\"\n ry=\"4\"\n />\n </svg>\n </div>\n )\n}\n","import { TextAreaControlData, TextAreaControlDefinition } from '../../../controls'\n\nexport type TextAreaControlValue<T extends TextAreaControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextAreaValue<T extends TextAreaControlDefinition>(\n data: TextAreaControlData | undefined,\n definition: T,\n): TextAreaControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextAreaControlValue<T>\n}\n","import { TextInputControlData, TextInputControlDefinition } from '../../../controls'\n\nexport type TextInputControlValue<T extends TextInputControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextInputValue<T extends TextInputControlDefinition>(\n data: TextInputControlData | undefined,\n definition: T,\n): TextInputControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextInputControlValue<T>\n}\n","import {\n CheckboxControlData,\n CheckboxControlDefinition,\n CheckboxControlType,\n ColorControlData,\n ColorControlDefinition,\n ColorControlType,\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlType,\n ControlDefinition,\n ControlDefinitionData,\n ImageControlData,\n ImageControlDefinition,\n ImageControlType,\n LinkControlData,\n LinkControlDefinition,\n LinkControlType,\n ListControl,\n ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControl,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n SlotControl,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { RenderHook } from '../components'\nimport { CheckboxControlValue, useCheckboxControlValue } from './checkbox'\nimport { ColorControlValue, useColorValue } from './color'\nimport { ComboboxControlValue, useComboboxControlValue } from './combobox'\nimport { ResolveImageControlValue, useImageControlValue } from './image'\nimport { LinkControlValue, useLinkControlValue } from './link'\nimport { ListControlValue } from './list'\nimport { NumberControlValue, useNumber } from './number'\nimport { SelectControlValue, useSelectControlValue } from './select'\nimport { ShapeControlValue } from './shape'\nimport { SlotControlValue, useSlot } from './slot'\nimport { TextAreaControlValue, useTextAreaValue } from './text-area'\nimport { TextInputControlValue, useTextInputValue } from './text-input'\n\nexport type ControlDefinitionValue<T extends ControlDefinition> =\n T extends CheckboxControlDefinition\n ? CheckboxControlValue<T>\n : T extends NumberControlDefinition\n ? NumberControlValue<T>\n : T extends TextInputControlDefinition\n ? TextInputControlValue<T>\n : T extends TextAreaControlDefinition\n ? TextAreaControlValue<T>\n : T extends SelectControlDefinition\n ? SelectControlValue<T>\n : T extends ColorControlDefinition\n ? ColorControlValue<T>\n : T extends ImageControlDefinition\n ? ResolveImageControlValue<T>\n : T extends LinkControlDefinition\n ? LinkControlValue<T>\n : T extends ComboboxControlDefinition\n ? ComboboxControlValue<T>\n : T extends ShapeControlDefinition\n ? ShapeControlValue<T>\n : T extends ListControlDefinition\n ? ListControlValue<T>\n : T extends SlotControlDefinition\n ? SlotControlValue\n : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n control?: AnyPropController\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\n control,\n}: ControlValueProps<T>): JSX.Element {\n switch (definition.type) {\n case CheckboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useCheckboxControlValue}\n parameters={[data as CheckboxControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case NumberControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useNumber}\n parameters={[data as NumberControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextInputControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextInputValue}\n parameters={[data as TextInputControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextAreaControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextAreaValue}\n parameters={[data as TextAreaControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case SelectControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSelectControlValue}\n parameters={[data as SelectControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ColorControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useColorValue}\n parameters={[data as ColorControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ImageControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useImageControlValue}\n parameters={[data as ImageControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case LinkControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useLinkControlValue}\n parameters={[data as LinkControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ComboboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useComboboxControlValue}\n parameters={[data as ComboboxControlData]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ShapeControlType:\n return (\n <ShapeControlValue\n definition={definition}\n data={data as ShapeControlData}\n control={control as ShapeControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue\n definition={definition}\n data={data as ListControlData}\n control={control as ListControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n case SlotControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSlot}\n parameters={[data as unknown as SlotControlData, control as SlotControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import dynamic from 'next/dynamic'\nimport { ReactNode, useCallback } from 'react'\nimport {\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n} from '../../../controls/rich-text'\nimport { forwardNextDynamicRef } from '../../../next'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../state/modules/prop-controller-handles'\n\nconst Text = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('../../../components/builtin/Text'))),\n)\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextControlDefinition }\n\nexport function useRichText(data: RichTextControlData, control: RichTextControl | null) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n return <Text text={data} ref={textCallbackRef} />\n}\n","import { useRef } from 'react'\n\nimport { useDocumentKey, useSelector, useStore } from '.'\nimport * as ReactPage from '../../state/react-page'\nimport { Props } from '../../prop-controllers'\nimport {\n BorderDescriptor,\n BorderPropControllerFormat,\n BorderRadiusDescriptor,\n BorderRadiusPropControllerFormat,\n BorderRadiusValue,\n BorderValue,\n Descriptor,\n MarginDescriptor,\n MarginPropControllerFormat,\n MarginValue,\n PaddingDescriptor,\n PaddingPropControllerFormat,\n PaddingValue,\n ResolveOptions,\n ResponsiveValue,\n ShadowsDescriptor,\n ShadowsPropControllerFormat,\n ShadowsValue,\n WidthPropControllerFormat,\n WidthDescriptor,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport {\n useBoxShadow,\n useResponsiveColor,\n useBorder as useBorderData,\n} from '../../components/hooks'\nimport type { ColorValue } from '../../components/utils/types'\nimport {\n responsiveBorder,\n responsiveBorderRadius,\n responsiveMargin,\n responsivePadding,\n responsiveShadow,\n responsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(responsiveWidth(value, descriptor.options.defaultValue))\n}\n\nexport type ResolveWidthControlValue<T extends Descriptor> = T extends WidthDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? WidthValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof WidthPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof WidthPropControllerFormat.ResponsiveValue\n ? WidthValue | undefined\n : never\n : never\n\nfunction usePaddingStyle(value: PaddingValue | undefined): string {\n return useStyle(responsivePadding(value))\n}\n\nexport type ResolvePaddingControlValue<T extends Descriptor> = T extends PaddingDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? PaddingValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof PaddingPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof PaddingPropControllerFormat.ResponsiveValue\n ? PaddingValue | undefined\n : never\n : never\n\nfunction useMarginStyle(value: MarginValue | undefined): string {\n return useStyle(responsiveMargin(value))\n}\n\nexport type ResolveMarginControlValue<T extends Descriptor> = T extends MarginDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? MarginValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof MarginPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof MarginPropControllerFormat.ResponsiveValue\n ? MarginValue | undefined\n : never\n : never\n\nexport function useBorderRadiusStyle(value: BorderRadiusValue | undefined): string {\n return useStyle(responsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(responsiveShadow(shadowValue ?? undefined))\n}\n\nexport type ResolveBorderRadiusControlValue<T extends Descriptor> = T extends BorderRadiusDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderRadiusValue | undefined\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ResponsiveValue\n ? BorderRadiusValue | undefined\n : never\n : never\n\nexport function useBorderStyle(value: BorderValue | undefined): string | BorderValue | undefined {\n const borderData = useBorderData(value)\n\n return useStyle(responsiveBorder(borderData ?? undefined))\n}\nexport type ResolveShadowsControlValue<T extends Descriptor> = T extends ShadowsDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? ShadowsValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof ShadowsPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof ShadowsPropControllerFormat.ResponsiveValue\n ? ShadowsValue | undefined\n : never\n : never\n\nexport type ResolveBorderControlValue<T extends Descriptor> = T extends BorderDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof BorderPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderPropControllerFormat.ResponsiveValue\n ? BorderValue | undefined\n : never\n : never\n\ntype PropsValueProps = {\n element: ReactPage.ElementData\n children(props: Record<string, unknown>): JSX.Element\n}\n\nexport function PropsValue({ element, children }: PropsValueProps): JSX.Element {\n const store = useStore()\n const propControllerDescriptorsRef = useRef(\n ReactPage.getComponentPropControllerDescriptors(store.getState(), element.type) ?? {},\n )\n const props = element.props as Record<string, any>\n const documentKey = useDocumentKey()\n\n const propControllers = useSelector(state => {\n if (documentKey == null) return null\n\n return ReactPage.getPropControllers(state, documentKey, element.key)\n })\n\n return Object.entries(propControllerDescriptorsRef.current).reduceRight(\n (renderFn, [propName, descriptor]) =>\n propsValue => {\n switch (descriptor.type) {\n case CheckboxControlType:\n case NumberControlType:\n case TextInputControlType:\n case TextAreaControlType:\n case SelectControlType:\n case ColorControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n case RichTextControlType:\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n case SlotControlType: {\n const control = (propControllers?.[propName] ?? null) as SlotControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useSlot}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case Props.Types.Width:\n switch (descriptor.options.format) {\n case WidthPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useWidthStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Padding:\n switch (descriptor.options.format) {\n case PaddingPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={usePaddingStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Margin:\n switch (descriptor.options.format) {\n case MarginPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useMarginStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.BorderRadius:\n switch (descriptor.options.format) {\n case BorderRadiusPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderRadiusStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Shadows:\n switch (descriptor.options.format) {\n case ShadowsPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useShadowsStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Border:\n switch (descriptor.options.format) {\n case BorderPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.ResponsiveColor:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useResponsiveColor}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n },\n children,\n )({})\n}\n","import { MutableRefObject, useImperativeHandle, useRef } from 'react'\nimport { ReactInstance } from 'react'\nimport { forwardRef } from 'react'\nimport { Component, ReactNode } from 'react'\nimport { findDOMNode } from 'react-dom'\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberReconciler.new.js#L179-L244\n */\nfunction suppressWarningAndFindDomNode(\n instance: ReactInstance | null | undefined,\n): Element | Text | null {\n const error = console.error\n\n console.error = (...args) => {\n if (typeof args[0] === 'string' && args[0].includes('%s is deprecated in StrictMode.')) return\n\n return error.apply(console, args)\n }\n\n const foundDomNode = findDOMNode(instance)\n\n console.error = error\n\n return foundDomNode\n}\n\ntype FindDomNodeClassComponentProps = {\n innerRef: MutableRefObject<(() => Element | Text | null) | null>\n children?: ReactNode\n}\n\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n constructor(props: FindDomNodeClassComponentProps) {\n super(props)\n\n this.props.innerRef.current = () => suppressWarningAndFindDomNode(this)\n }\n\n render() {\n return <>{this.props.children}</>\n }\n}\n\ntype FindDomNodeProps = {\n children?: ReactNode\n}\n\nexport const FindDomNode = forwardRef<() => Element | Text | null, FindDomNodeProps>(\n function FindDomNode(props, ref) {\n const findDomNodeRef = useRef<() => Element | Text | null>(null)\n\n useImperativeHandle(ref, () => () => findDomNodeRef.current?.() ?? null, [])\n\n return <FindDomNodeClassComponent {...props} innerRef={findDomNodeRef} />\n },\n)\n","import { BoxModel, BoxModelHandle } from '../../box-model'\nimport { Descriptor } from '../../prop-controllers/descriptors'\nimport { DescriptorsPropControllers } from '../../prop-controllers/instances'\nimport { isMeasurable, measure } from '../../state/modules/box-models'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../state/modules/prop-controller-handles'\n\nexport class ElementImperativeHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> implements BoxModelHandle, PropControllersHandle<T>\n{\n private getCurrent: () => unknown = () => null\n private lastPropControllers: DescriptorsPropControllers<T> | null = null\n\n callback(getCurrent: () => unknown) {\n const current = this.getCurrent()\n\n if (current === null) this.setPropControllers(null)\n\n this.getCurrent = getCurrent\n\n if (this.lastPropControllers !== null) this.setPropControllers(this.lastPropControllers)\n }\n\n getBoxModel(): BoxModel | null {\n const current = this.getCurrent()\n\n return isMeasurable(current) ? measure(current) : null\n }\n\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void {\n const current = this.getCurrent()\n\n if (isPropControllersHandle(current)) current.setPropControllers(propControllers)\n\n this.lastPropControllers = propControllers\n }\n\n getDomNode(): Element | null {\n const current = this.getCurrent()\n\n if (isDomNodeHandle(current)) return current.getDomNode()\n\n return current instanceof Element ? current : null\n }\n}\n\ntype DomNodeHandle = {\n getDomNode(): Element | null\n}\n\nexport function isDomNodeHandle(value: unknown): value is DomNodeHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'getDomNode' in value &&\n typeof (value as { getDomNode: unknown }).getDomNode === 'function'\n ) {\n return true\n }\n\n return false\n}\n","import {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useMemo,\n} from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector'\nimport dynamic from 'next/dynamic'\n\nimport * as ReactPage from '../../state/react-page'\nimport type * as ReactBuilderPreview from '../../state/react-builder-preview'\nimport {\n mountComponentEffect,\n registerComponentEffect,\n registerComponentHandleEffect,\n registerReactComponentEffect,\n} from '../../state/actions'\nimport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from '../../prop-controllers'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport { registerBuiltinComponents } from '../../components/builtin/register'\nimport { MakeswiftClient } from '../../api/react'\nimport { FallbackComponent } from '../../components/shared/FallbackComponent'\nimport { PropsValue } from './controls'\nimport { FindDomNode } from './find-dom-node'\nimport { useGlobalElement } from './hooks/makeswift-api'\nimport { ElementImperativeHandle } from './element-imperative-handle'\nimport { BuilderEditMode } from '../../state/modules/builder-edit-mode'\n\nexport const storeContextDefaultValue = ReactPage.configureStore()\n\nexport interface ReactRuntime {\n registerComponent<\n P extends Record<string, PropControllerDescriptor>,\n C extends ReactPage.ComponentType<{ [K in keyof P]: PropControllerDescriptorValueType<P[K]> }>,\n >(\n component: C,\n meta: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void\n copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ): ReactPage.Element\n}\n\nfunction createReactRuntime(store: ReactPage.Store): ReactRuntime {\n return {\n registerComponent(component, { type, label, icon = 'Cube40', hidden = false, props }) {\n const unregisterComponent = store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = store.dispatch(\n registerReactComponentEffect(type, component as unknown as ReactPage.ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n },\n copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ) {\n return ReactPage.copyElementTree(store.getState(), elementTree, replacementContext)\n },\n }\n}\n\nexport const ReactRuntime = createReactRuntime(storeContextDefaultValue)\n\nregisterBuiltinComponents(ReactRuntime)\n\nexport const StoreContext = createContext(storeContextDefaultValue)\n\ntype RuntimeProviderProps = {\n client: MakeswiftClient\n preview: boolean\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n}\n\nconst PreviewProvider = dynamic(() => import('./components/PreviewProvider'))\nconst LiveProvider = dynamic(() => import('./components/LiveProvider'))\n\nexport function RuntimeProvider({ preview, ...props }: RuntimeProviderProps): JSX.Element {\n return preview ? <PreviewProvider {...props} /> : <LiveProvider {...props} />\n}\n\nconst PageContext = createContext<string | null>(null)\n\nfunction usePageIdOrNull(): string | null {\n return useContext(PageContext)\n}\n\nexport function usePageId(): string {\n const pageIdOrNull = usePageIdOrNull()\n\n if (pageIdOrNull == null) throw new Error('`usePageId` must be used with `<PageProvider>`')\n\n return pageIdOrNull\n}\n\ntype PageProviderProps = {\n id: string\n children: ComponentPropsWithoutRef<typeof PageContext['Provider']>['children']\n}\n\nexport function PageProvider({ id, children }: PageProviderProps) {\n return <PageContext.Provider value={id}>{children}</PageContext.Provider>\n}\n\nconst DocumentContext = createContext<string | null>(null)\n\nexport function useDocumentKey(): string | null {\n return useContext(DocumentContext)\n}\n\n/**\n * @note Instead of leveraging `DocumentContext` to detect cycles we have to use a separate\n * construct because not all global element documents are wrapped in `DocumentContext.Provider`. The\n * reason for this is to maintain legacy behavior where we don't register the elements in a global\n * element's document so that they're not selectable. This is clearly suboptimal and the ideal\n * scenario would be to have the builder be aware of multiple documents and only show telegraphs\n * for the document that's currently \"active\".\n */\nconst DocumentCyclesContext = createContext<string[]>([])\n\ntype State = ReactPage.State | ReactBuilderPreview.State\n\nexport function useStore(): ReactPage.Store {\n return useContext(StoreContext)\n}\n\nexport function useSelector<R>(selector: (state: State) => R): R {\n const store = useStore()\n\n return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, selector)\n}\n\nfunction useComponent(type: string): ReactPage.ComponentType | null {\n return useSelector(state => ReactPage.getReactComponent(state, type))\n}\n\nexport function useElementId(elementKey: string | null | undefined): string | null {\n const documentKey = useDocumentKey()\n\n return useSelector(state =>\n documentKey == null || elementKey == null\n ? null\n : ReactPage.getElementId(state, documentKey, elementKey),\n )\n}\n\nfunction useDocument(documentKey: string): ReactPage.Document | null {\n return useSelector(state => ReactPage.getDocument(state, documentKey))\n}\n\nexport function useIsInBuilder(): boolean {\n return useSelector(state => ReactPage.getIsInBuilder(state))\n}\n\nexport function useIsPreview(): boolean {\n return useSelector(state => ReactPage.getIsPreview(state))\n}\n\nexport function useBuilderEditMode(): BuilderEditMode | null {\n return useSelector(state => ReactPage.getBuilderEditMode(state))\n}\n\ntype Dispatch = ReactPage.Dispatch & ReactBuilderPreview.Dispatch\n\nfunction useDispatch(): Dispatch {\n const store = useContext(StoreContext)\n\n return store.dispatch\n}\n\nconst originalError = console.error\nlet patched = false\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberBeginWork.new.js#L1814-L1890\n */\nfunction suppressRefWarning(ownerName: string): void {\n if (patched === false) {\n console.error = (...args) => {\n if (\n typeof args[0] === 'string' &&\n args[0].includes('Function components cannot be given refs.') &&\n args[0].includes(`Check the render method of \\`${ownerName}\\`.`)\n ) {\n return\n }\n\n return originalError(...args)\n }\n\n patched = true\n }\n}\n\ntype ElementDataProps = {\n elementData: ReactPage.ElementData\n}\n\nconst ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={ref} />}\n </PropsValue>\n </Suspense>\n )\n }),\n)\n\nconst DisableRegisterElement = createContext(false)\n\ntype ElementRefereceProps = {\n elementReference: ReactPage.ElementReference\n}\n\nconst ElementReference = memo(\n forwardRef(function ElementReference(\n { elementReference }: ElementRefereceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const globalElement = useGlobalElement(elementReference.value)\n const globalElementData = globalElement?.data as ReactPage.ElementData | undefined\n const elementReferenceDocument = useDocument(elementReference.key)\n const documentKey = elementReference.key\n const documentKeys = useContext(DocumentCyclesContext)\n const providedDocumentKeys = useMemo(\n () => [...documentKeys, documentKey],\n [documentKeys, documentKey],\n )\n\n if (globalElementData == null) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component doesn't exist\"\n />\n )\n }\n\n if (documentKeys.includes(documentKey)) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component contains itself!\"\n />\n )\n }\n\n return (\n <DocumentCyclesContext.Provider value={providedDocumentKeys}>\n {elementReferenceDocument != null ? (\n <Document document={elementReferenceDocument} ref={ref} />\n ) : (\n <DisableRegisterElement.Provider value={true}>\n <ElementData elementData={globalElementData} ref={ref} />\n </DisableRegisterElement.Provider>\n )}\n </DocumentCyclesContext.Provider>\n )\n }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: ElementProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(\n registerComponentHandleEffect(documentKey, elementKey, imperativeHandleRef.current),\n )\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return (\n <FindDomNode ref={findDomNodeCallbackRef}>\n {ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={elementCallbackRef} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={elementCallbackRef} elementData={element} />\n )}\n </FindDomNode>\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentContext.Provider value={document.key}>\n <Element ref={ref} element={document.rootElement} />\n </DocumentContext.Provider>\n )\n }),\n)\n\ntype DocumentReferenceProps = {\n documentReference: ReactPage.DocumentReference\n}\n\nexport const DocumentReference = memo(\n forwardRef(function DocumentReference(\n { documentReference }: DocumentReferenceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const document = useDocument(documentReference.key)\n\n if (document == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Document not found\" />\n }\n\n return <Document ref={ref} document={document} />\n }),\n)\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","getPropControllerDescriptors","getElementSwatchIds","getFileIds","getTypographyIds","getTableIds","getPageIds","getElementChildren","ShapeControlType","ListControlType","Types","isElementReference","hasOwnProperty","APIResourceType","ActionTypes","getAPIResource","APIResources.reducer","APIResources.getSerializedState","APIResources.getHasAPIResource","APIResources.getAPIResource","apiResourceFulfilled","introspectedResourcesFulfilled","typographiesFulfilled","createStore","APIResources.getInitialState","applyMiddleware","thunk","MakeswiftClient","constructor","uri","cacheData","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","prefetch","element","introspectionData","introspect","storeContextDefaultValue","dispatch","getState","readSwatch","swatchId","Swatch","fetchSwatch","readFile","fileId","File","fetchFile","readTypography","typographyId","Typography","fetchTypography","fetchTypographies","typographyIds","readGlobalElement","globalElementId","GlobalElement","fetchGlobalElement","readPagePathnameSlice","pageId","PagePathnameSlice","fetchPagePathnameSlice","readTable","tableId","Table","fetchTable","createTableRecord","columns","request","CreateTableRecordMutation","input","data","readSite","siteId","Site","readPage","Page","readSnippet","snippetId","Snippet","Context","createContext","useContext","client","children","_jsx","SnippetLocation","Body","Head","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","test","type","key","id","props","filterUsedSnippetProperties","builderEnabled","liveEnabled","location","page","isInBuilder","useIsInBuilder","snippets","setSnippets","useState","cachedPage","useCachedPage","oldSnippets","newSnippets","deepEqual","site","useCachedSite","favicon","meta","title","description","keywords","socialImage","canonicalUrl","isIndexingBlocked","seo","fontFamilyParamValue","useMemo","fonts","family","variants","replace","join","googleFonts","edges","filter","edge","activeVariants","activeVariantSpecifiers","variant","some","activeVariant","specifier","filteredSnippets","headSnippets","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","snippetToCleanUp","_Fragment","_jsxs","snippetToElement","child","includes","createDocumentReference","useMakeswiftClient","getSnapshot","useSyncExternalStore","runtimeVersion","isPreview","appOrigin","previewModeScript","makeswiftConnectionCheckScript","MAKESWIFT_CONNECTION_INIT","MAKESWIFT_CONNECTION_CHECK","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","Html","Main","NextScript","Cors","createProxyServer","cookie","serialize","FORWARDED_NEXT_DYNAMIC_REF_KEY","ref","obj","__esModule","default","nextDynamicThunk","Dynamic","loaderComponent","then","moduleOrComponent","resolve","loadForwardedRef","forwardRef","saveForwardedRef","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","params","path","split","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","memo","href","Map","PageMeta","dynamic","MakeswiftComponentType","Props.ElementID","Props.Backgrounds","Props.Width","Props.ResponsiveIconRadioGroup","Props.Margin","Props.Padding","Props.Border","Props.BorderRadius","Props.Shadows","Props.GapY","Props.GapX","Props.ResponsiveSelect","Props.ResponsiveNumber","Props.Checkbox","Props.Grid","Props.TextInput","Props.Link","Props.ResponsiveColor","Props.TextStyle","Props.Images","uuid","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.RichText","ipsum","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","React","serializeStyles","registerStyles","insertStyles","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","isNonNullable","getBorderSwatchIds","getBoxShadowsSwatchIds","getResponsiveColorSwatchIds","joinResponsiveValues","StyleControlProperty","Color","ImageControlValueFormat","useCallback","scrollIntoView","definition","control","controls","setControls","setItemsControl","reduce","renderFn","item","listControlValue","config","get","Object","entries","reduceRight","controlDefinition","shapeControlValue","getBox","elements","length","i","Element","as","className","restOfProps","As","setElement","baseClassName","flexWrap","pollBoxModel","onBoxModelChange","boxModel","changeContainerBoxModel","cx","Slot","Placeholder","SlotPlaceholder","Item","SlotItem","grid","index","responsiveStyle","count","spans","rowIndex","columnIndex","getIndexes","span","flexBasis","toFixed","minWidth","changeItemBoxModel","background","overflow","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","SlotControlType","useSlot","Text","forwardNextDynamicRef","patch","textCallbackRef","handle","isPropControllersHandle","setPropControllers","descriptor","responsiveWidth","options","defaultValue","responsivePadding","responsiveMargin","responsiveBorderRadius","shadowValue","useBoxShadow","responsiveShadow","undefined","borderData","useBorderData","responsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","getPropControllers","propName","propsValue","StyleControlType","useFormattedStyle","RichTextControlType","useRichText","Props","Width","format","WidthPropControllerFormat","ClassName","useWidthStyle","Padding","PaddingPropControllerFormat","usePaddingStyle","Margin","MarginPropControllerFormat","useMarginStyle","BorderRadius","BorderRadiusPropControllerFormat","useBorderRadiusStyle","Shadows","ShadowsPropControllerFormat","useShadowsStyle","Border","BorderPropControllerFormat","useBorderStyle","ResponsiveColor","useResponsiveColor","instance","args","apply","foundDomNode","findDOMNode","FindDomNodeClassComponent","Component","innerRef","suppressWarningAndFindDomNode","FindDomNode","findDomNodeRef","isMeasurable","measure","registerComponent","component","label","icon","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","ReactRuntime","createReactRuntime","registerBuiltinComponents","StoreContext","PreviewProvider","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","DocumentCyclesContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","Suspense","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","globalElementData","elementReferenceDocument","useDocument","documentKeys","providedDocumentKeys","useDispatch","useFindDomNodeRef","imperativeHandleRef","ElementImperativeHandle","findDomNodeCallbackRef","callback","elementCallbackRef","isRegisterElementDisabled","useImperativeHandle","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}
|