@makeswift/runtime 0.5.3 → 0.5.4
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 -1
- package/dist/Box.es.js +1 -1
- package/dist/Button.cjs.js +1 -1
- package/dist/Button.es.js +1 -1
- package/dist/Carousel.cjs.js +1 -1
- package/dist/Carousel.es.js +1 -1
- package/dist/Countdown.cjs.js +1 -1
- package/dist/Countdown.es.js +1 -1
- package/dist/Divider.cjs.js +1 -1
- package/dist/Divider.es.js +1 -1
- package/dist/Embed.cjs.js +1 -1
- package/dist/Embed.es.js +1 -1
- package/dist/Form.cjs.js +1 -1
- package/dist/Form.es.js +1 -1
- package/dist/Image.cjs.js +1 -1
- package/dist/Image.es.js +1 -1
- package/dist/LiveProvider.cjs.js +3 -3
- package/dist/LiveProvider.es.js +2 -2
- package/dist/Navigation.cjs.js +1 -1
- package/dist/Navigation.es.js +1 -1
- package/dist/PreviewProvider.cjs.js +18 -18
- package/dist/PreviewProvider.es.js +2 -2
- package/dist/Root.cjs.js +1 -1
- package/dist/Root.es.js +1 -1
- package/dist/SocialLinks.cjs.js +1 -1
- package/dist/SocialLinks.es.js +1 -1
- package/dist/Text.cjs.js +4 -4
- package/dist/Text.es.js +1 -1
- package/dist/Video.cjs.js +1 -1
- package/dist/Video.es.js +1 -1
- package/dist/components.cjs.js +1 -2
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +2 -2
- package/dist/{react-page.cjs.js → constants.cjs.js} +17 -1
- package/dist/constants.cjs.js.map +1 -0
- package/dist/{react-page.es.js → constants.es.js} +17 -2
- package/dist/constants.es.js.map +1 -0
- package/dist/index.cjs.js +40 -56
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs2.js +6 -6
- package/dist/index.es.js +4 -19
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +2 -2
- package/dist/index.es3.js +1 -1
- package/dist/main.cjs.js +3 -2
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +1 -1
- package/dist/next.cjs.js +1 -1
- package/dist/next.es.js +2 -2
- package/dist/react.cjs.js +1 -1
- package/dist/react.es.js +1 -1
- package/dist/types/src/components/builtin/index.d.ts +0 -1
- package/dist/types/src/components/builtin/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/next/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/react-page.cjs.js.map +0 -1
- package/dist/react-page.es.js.map +0 -1
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/api/introspection.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/constants.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","../../../node_modules/@emotion/hash/dist/hash.browser.esm.js","../../../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../../node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../../../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../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/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../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 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 => remaining.push(child))\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","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 { APIResource, APIResourceType } from '../../api'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\ntype SerializedMap<K, V> = [K, V][]\n\nexport type SerializedState = SerializedMap<\n APIResourceType,\n SerializedMap<string, APIResource | null>\n>\n\nexport function getInitialState(serializedState: SerializedState = []): State {\n return new Map(\n serializedState.map(([resourceType, resources]) => [resourceType, new Map(resources)]),\n )\n}\n\nexport function getSerializedState(state: State): SerializedState {\n return Array.from(state.entries()).map(([resourceType, resources]) => [\n resourceType,\n Array.from(resources.entries()),\n ])\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\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'\nimport { KeyUtils } from 'slate'\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 KeyUtils.resetGenerator()\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 { CacheData, MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\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","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(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 return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { 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 KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <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 { ReactRuntime } from '../react'\nimport isErrorWithMessage from '../utils/isErrorWithMessage'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\nexport type MakeswiftApiHandlerElementTreeResponse = { elementTree: any }\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n | MakeswiftApiHandlerElementTreeResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate\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 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 { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport 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 <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n})\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n","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","/**\n * These are the element types that have been used since the beginning of Makeswift and are saved in\n * the database.\n */\nexport const MakeswiftComponentType = {\n Box: './components/Box/index.js',\n Button: './components/Button/index.js',\n Carousel: './components/Carousel/index.js',\n Countdown: './components/Countdown/index.js',\n Divider: './components/Divider/index.js',\n Embed: './components/Embed/index.js',\n Form: './components/Form/index.js',\n Image: './components/Image/index.js',\n Navigation: './components/Navigation/index.js',\n Root: './components/Root/index.js',\n SocialLinks: './components/SocialLinks/index.js',\n Text: './components/Text/index.js',\n Video: './components/Video/index.js',\n} as const\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({ format: Props.Width.Format.ClassName }),\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 uuid from 'uuid/v4'\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 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 unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\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 }),\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 { ListControlData, ListControlDefinition } from '../../../controls'\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}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n}: ListControlValueProps<T>): JSX.Element {\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue definition={definition.config.type} data={item.value}>\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 { 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}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue definition={controlDefinition} data={data?.[key]}>\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\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 ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from '../../../controls'\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 { 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 : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\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 definition={definition} data={data as ShapeControlData}>\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue definition={definition} data={data as ListControlData}>\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { BoxModel, getBox } from '../../../state/modules/box-models'\nimport deepEqual from '../../../utils/deepEqual'\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'\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\nfunction 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 { 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} 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'\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 definition={descriptor} data={props[propName]}>\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 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 { ForwardedRef } from 'react'\nimport { ReactInstance } from 'react'\nimport { forwardRef } from 'react'\nimport { Component, ReactNode } from 'react'\nimport { findDOMNode } from 'react-dom'\n\ntype FindDomNodeClassComponentProps = {\n innerRef?: ForwardedRef<Element | Text | null>\n children?: ReactNode\n}\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\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n componentDidMount() {\n this.setInnerRef(suppressWarningAndFindDomNode(this))\n }\n\n componentDidUpdate() {\n this.setInnerRef(suppressWarningAndFindDomNode(this))\n }\n\n setInnerRef(current: Element | Text | null) {\n const { innerRef } = this.props\n\n if (innerRef == null) return\n\n if (typeof innerRef === 'function') innerRef(current)\n else innerRef.current = current\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>(function FindDomNode(\n props,\n ref,\n) {\n return <FindDomNodeClassComponent {...props} innerRef={ref} />\n})\n","import {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useContext,\n useEffect,\n useImperativeHandle,\n useState,\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'\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\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\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 const [handle, setHandle] = useState<unknown | null>(null)\n const [foundDomNode, setFoundDomNode] = useState<Element | Text | null>(null)\n\n useImperativeHandle(ref, () => handle ?? foundDomNode, [handle, foundDomNode])\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={setHandle} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <FindDomNode ref={setFoundDomNode}>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={setHandle} />}\n </PropsValue>\n </FindDomNode>\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<unknown>,\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\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 return 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 }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element({ element }: ElementProps, ref: Ref<unknown>): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const [handle, setHandle] = useState<unknown>(null)\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => handle, [handle])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(registerComponentHandleEffect(documentKey, elementKey, handle))\n }, [dispatch, documentKey, elementKey, handle, 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 ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={setHandle} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={setHandle} elementData={element} />\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document({ document }: DocumentProps, ref: Ref<unknown>): 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<unknown>,\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","hasOwnProperty","getAPIResource","APIResources.reducer","APIResources.getSerializedState","APIResources.getHasAPIResource","APIResources.getAPIResource","APIResources.getInitialState","MakeswiftClient","constructor","uri","cacheData","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","prefetch","element","introspectionData","introspect","storeContextDefaultValue","dispatch","KeyUtils","resetGenerator","getState","readSwatch","swatchId","APIResourceType","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","isPreview","appOrigin","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","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","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","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.RichText","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","unitless","hashString","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","joinResponsiveValues","Color","definition","reduce","renderFn","item","listControlValue","config","Object","entries","reduceRight","controlDefinition","shapeControlValue","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","ShapeControlType","ListControlType","control","elements","length","i","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","currentBoxModel","handleAnimationFrameRequest","measuredBoxModel","getBox","animationFrameHandle","requestAnimationFrame","cancelAnimationFrame","descriptor","responsiveWidth","options","defaultValue","responsivePadding","responsiveMargin","responsiveBorderRadius","shadowValue","useBoxShadow","responsiveShadow","undefined","borderData","useBorderData","responsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","propName","propsValue","StyleControlType","useFormattedStyle","SlotControlType","useSlot","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","componentDidMount","setInnerRef","suppressWarningAndFindDomNode","componentDidUpdate","innerRef","FindDomNode","registerComponent","component","label","icon","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","ReactRuntime","createReactRuntime","registerBuiltinComponents","StoreContext","PreviewProvider","dynamic","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","handle","setHandle","setFoundDomNode","useImperativeHandle","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","globalElementData","elementReferenceDocument","useDocument","Element","useDispatch","isRegisterElementDisabled","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/api/introspection.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","../../../node_modules/@emotion/hash/dist/hash.browser.esm.js","../../../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../../node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../../../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../../../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../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/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../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 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 => remaining.push(child))\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","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 { APIResource, APIResourceType } from '../../api'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\ntype SerializedMap<K, V> = [K, V][]\n\nexport type SerializedState = SerializedMap<\n APIResourceType,\n SerializedMap<string, APIResource | null>\n>\n\nexport function getInitialState(serializedState: SerializedState = []): State {\n return new Map(\n serializedState.map(([resourceType, resources]) => [resourceType, new Map(resources)]),\n )\n}\n\nexport function getSerializedState(state: State): SerializedState {\n return Array.from(state.entries()).map(([resourceType, resources]) => [\n resourceType,\n Array.from(resources.entries()),\n ])\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\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'\nimport { KeyUtils } from 'slate'\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 KeyUtils.resetGenerator()\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 { CacheData, MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n meta: {\n title: string | null\n description: string | null\n keywords: string | null\n socialImage: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\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","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(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 return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { 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 KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <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 { ReactRuntime } from '../react'\nimport isErrorWithMessage from '../utils/isErrorWithMessage'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\nexport type MakeswiftApiHandlerElementTreeResponse = { elementTree: any }\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n | MakeswiftApiHandlerElementTreeResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n return async function makeswiftApiHandler(req, res) {\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n const { makeswift } = req.query\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate\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 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 { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport 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({ format: Props.Width.Format.ClassName }),\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 uuid from 'uuid/v4'\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 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 unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\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 }),\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 { ListControlData, ListControlDefinition } from '../../../controls'\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}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n}: ListControlValueProps<T>): JSX.Element {\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue definition={definition.config.type} data={item.value}>\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 { 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}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue definition={controlDefinition} data={data?.[key]}>\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\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 ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n} from '../../../controls'\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 { 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 : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\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 definition={definition} data={data as ShapeControlData}>\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue definition={definition} data={data as ListControlData}>\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { BoxModel, getBox } from '../../../state/modules/box-models'\nimport deepEqual from '../../../utils/deepEqual'\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'\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\nfunction 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 { 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} 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'\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 definition={descriptor} data={props[propName]}>\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 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 { ForwardedRef } from 'react'\nimport { ReactInstance } from 'react'\nimport { forwardRef } from 'react'\nimport { Component, ReactNode } from 'react'\nimport { findDOMNode } from 'react-dom'\n\ntype FindDomNodeClassComponentProps = {\n innerRef?: ForwardedRef<Element | Text | null>\n children?: ReactNode\n}\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\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n componentDidMount() {\n this.setInnerRef(suppressWarningAndFindDomNode(this))\n }\n\n componentDidUpdate() {\n this.setInnerRef(suppressWarningAndFindDomNode(this))\n }\n\n setInnerRef(current: Element | Text | null) {\n const { innerRef } = this.props\n\n if (innerRef == null) return\n\n if (typeof innerRef === 'function') innerRef(current)\n else innerRef.current = current\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>(function FindDomNode(\n props,\n ref,\n) {\n return <FindDomNodeClassComponent {...props} innerRef={ref} />\n})\n","import {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useContext,\n useEffect,\n useImperativeHandle,\n useState,\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'\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\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\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 const [handle, setHandle] = useState<unknown | null>(null)\n const [foundDomNode, setFoundDomNode] = useState<Element | Text | null>(null)\n\n useImperativeHandle(ref, () => handle ?? foundDomNode, [handle, foundDomNode])\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={setHandle} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <FindDomNode ref={setFoundDomNode}>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={setHandle} />}\n </PropsValue>\n </FindDomNode>\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<unknown>,\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\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 return 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 }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element({ element }: ElementProps, ref: Ref<unknown>): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const [handle, setHandle] = useState<unknown>(null)\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => handle, [handle])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(registerComponentHandleEffect(documentKey, elementKey, handle))\n }, [dispatch, documentKey, elementKey, handle, 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 ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={setHandle} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={setHandle} elementData={element} />\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document({ document }: DocumentProps, ref: Ref<unknown>): 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<unknown>,\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","hasOwnProperty","getAPIResource","APIResources.reducer","APIResources.getSerializedState","APIResources.getHasAPIResource","APIResources.getAPIResource","APIResources.getInitialState","MakeswiftClient","constructor","uri","cacheData","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","prefetch","element","introspectionData","introspect","storeContextDefaultValue","dispatch","KeyUtils","resetGenerator","getState","readSwatch","swatchId","APIResourceType","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","isPreview","appOrigin","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","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","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","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.RichText","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","unitless","hashString","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","joinResponsiveValues","Color","definition","reduce","renderFn","item","listControlValue","config","Object","entries","reduceRight","controlDefinition","shapeControlValue","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","ShapeControlType","ListControlType","control","elements","length","i","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","currentBoxModel","handleAnimationFrameRequest","measuredBoxModel","getBox","animationFrameHandle","requestAnimationFrame","cancelAnimationFrame","descriptor","responsiveWidth","options","defaultValue","responsivePadding","responsiveMargin","responsiveBorderRadius","shadowValue","useBoxShadow","responsiveShadow","undefined","borderData","useBorderData","responsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","propName","propsValue","StyleControlType","useFormattedStyle","SlotControlType","useSlot","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","componentDidMount","setInnerRef","suppressWarningAndFindDomNode","componentDidUpdate","innerRef","FindDomNode","registerComponent","component","label","icon","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","ReactRuntime","createReactRuntime","registerBuiltinComponents","StoreContext","PreviewProvider","dynamic","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","handle","setHandle","setFoundDomNode","useImperativeHandle","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","globalElementData","elementReferenceDocument","useDocument","Element","useDispatch","isRegisterElementDisabled","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}
|