@makeswift/runtime 0.11.19 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/state/modules/api-resources.ts","../src/state/makeswift-api-client.ts","../src/api/graphql/client.ts","../src/api/graphql/documents/fragments.ts","../src/api/graphql/documents/queries.ts","../src/api/react.tsx","../src/components/page/Page.tsx","../src/next/preview-mode.tsx","../src/next/client.ts","../src/next/document.tsx","../src/next/api-handler/handlers/element-tree.ts","../src/next/api-handler/handlers/fonts.ts","../src/next/api-handler/handlers/manifest.ts","../src/next/api-handler/handlers/proxy-preview-mode.ts","../src/utils/isErrorWithMessage.ts","../src/next/api-handler/handlers/revalidate.ts","../src/next/api-handler/handlers/translatable-data.ts","../src/next/api-handler/handlers/merge-translated-data.ts","../src/next/api-handler/index.ts","../src/next/dynamic.tsx","../src/next/index.tsx","../src/components/builtin/Box/constants.ts","../src/components/builtin/Box/register.ts","../src/components/builtin/Button/register.ts","../src/components/builtin/Carousel/register.ts","../src/components/builtin/Countdown/register.ts","../src/components/builtin/Divider/register.ts","../src/components/builtin/Embed/register.ts","../src/components/builtin/Form/context/FormContext.ts","../src/components/builtin/Form/register.ts","../src/components/builtin/Image/register.ts","../src/components/builtin/Navigation/register.ts","../src/components/builtin/Root/register.ts","../src/components/builtin/SocialLinks/register.ts","../src/components/builtin/Text/register.ts","../src/components/builtin/Video/register.ts","../src/components/builtin/register.ts","../src/components/icons/warning-20.svg","../src/components/shared/FallbackComponent/FallbackComponent.tsx","../src/components/utils/isNonNullable.ts","../src/runtimes/react/hooks/makeswift-api.ts","../src/components/hooks/useBorder.ts","../src/components/hooks/useBoxShadow.ts","../src/components/hooks/useResponsiveColor.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/icon-radio-group.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/rich-text/rich-text.tsx","../src/runtimes/react/controls/rich-text-v2/rich-text-v2.tsx","../src/runtimes/react/controls/select.ts","../src/runtimes/react/controls/shape.tsx","../src/runtimes/react/poll-box-model.ts","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls/style-v2.tsx","../src/runtimes/react/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/typography.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../src/runtimes/react/element-imperative-handle.ts","../src/runtimes/react/index.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { APIResource, APIResourceType } from '../../api'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]?: {\n id: string\n value: Extract<APIResource, { __typename: key }> | null\n }[]\n}\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(([apiResourceType, resources]) => [\n apiResourceType,\n new Map(resources.map(({ id, value }) => [id, value])),\n ]),\n ) as State\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any }[] = []\n\n Array.from(resources.entries()).forEach(([id, value]) => {\n if (value != null) {\n particularResourceMap.push({ id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return state.get(resourceType)?.has(resourceId) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(resourceId)\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource } = action.payload\n\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(resourceId, resource),\n )\n }\n\n case ActionTypes.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","import { applyMiddleware, createStore, Store as ReduxStore } from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport * as APIResources from './modules/api-resources'\nimport { Action, apiResourceFulfilled } from './actions'\nimport {\n APIResource,\n APIResourceType,\n Swatch,\n File,\n Typography,\n GlobalElement,\n PagePathnameSlice,\n Table,\n LocalizedGlobalElement,\n} from '../api'\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, unknown, Action>\n\nasync function fetchJson<T>(url: string): Promise<T | null> {\n const response = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n })\n\n if (response.status === 404) return null\n\n if (!response.ok) throw new Error(response.statusText)\n\n if (response.headers.get('content-type')?.includes('application/json') !== true) {\n throw new Error(\n `Expected JSON response from \"${url}\" but got \"${response.headers.get('content-type')}\"`,\n )\n }\n\n return response.json()\n}\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n locale?: Intl.Locale,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState) => {\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 = await fetchJson<Swatch>(`/api/makeswift/swatches/${resourceId}`)\n break\n\n case APIResourceType.File:\n resource = await fetchJson<File>(`/api/makeswift/files/${resourceId}`)\n break\n\n case APIResourceType.Typography:\n resource = await fetchJson<Typography>(`/api/makeswift/typographies/${resourceId}`)\n break\n\n case APIResourceType.GlobalElement:\n resource = await fetchJson<GlobalElement>(`/api/makeswift/global-elements/${resourceId}`)\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n resource = await fetchJson<LocalizedGlobalElement>(\n `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,\n )\n break\n }\n\n case APIResourceType.PagePathnameSlice: {\n const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, 'http://n')\n\n if (locale != null) url.searchParams.set('locale', locale.toString())\n\n resource = await fetchJson<PagePathnameSlice>(url.pathname + url.search)\n break\n }\n\n case APIResourceType.Table:\n resource = await fetchJson<Table>(`/api/makeswift/tables/${resourceId}`)\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 type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({ serializedState }: { serializedState?: SerializedState }): Store {\n return createStore(reducer, APIResources.getInitialState(serializedState), applyMiddleware(thunk))\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","/**\n * We _cannot_ interpolate fragments into other fragments. Doing so results in a document with\n * multiple fragment definitions, which is ambiguous when attempting to read a fragment from the\n * cache. This ambiguity results in an error being thrown by `@apollo/client` in the Makeswift\n * builder when attempting to send API resources to the host's runtime.\n */\n\nexport const SwatchFragment = /* GraphQL */ `\n fragment Swatch on Swatch {\n __typename\n id\n hue\n saturation\n lightness\n }\n`\n\nexport const FileFragment = /* GraphQL */ `\n fragment File on File {\n __typename\n id\n name\n publicUrl: publicUrlV2\n extension\n dimensions {\n width\n height\n }\n }\n`\n\nexport const TypographyFragment = /* GraphQL */ `\n fragment Typography on Typography {\n __typename\n id\n name\n style {\n deviceId\n value {\n fontFamily\n fontSize {\n value\n unit\n }\n color {\n swatchId\n alpha\n }\n lineHeight\n letterSpacing\n fontWeight\n textAlign\n uppercase\n underline\n strikethrough\n italic\n }\n }\n }\n`\n\nexport const PagePathnameSliceFragment = /* GraphQL */ `\n fragment PagePathnameSlice on PagePathnameSlice {\n __typename\n id\n pathname\n }\n`\n\nexport const GlobalElementFragment = /* GraphQL */ `\n fragment GlobalElement on GlobalElement {\n __typename\n id\n data\n }\n`\n\nexport const LocalizedGlobalElementFragment = /* GraphQL */ `\n fragment LocalizedGlobalElement on LocalizedGlobalElement {\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 SwatchFragment,\n TableFragment,\n TypographyFragment,\n} from './fragments'\n\nexport const IntrospectedResourcesQuery = /* GraphQL */ `\n query IntrospectedResources($fileIds: [ID!]!, $tableIds: [ID!]!) {\n files(ids: $fileIds) {\n ...File\n }\n\n tables(ids: $tableIds) {\n ...Table\n }\n }\n\n ${FileFragment}\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 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","'use client'\n\nimport { createContext, ReactNode, useContext } from 'react'\n\nimport * as MakeswiftApiClient from '../state/makeswift-api-client'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\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 SerializedLocalizedResourcesMap = {\n [resourceId: string]: string | null\n}\n\ntype LocalizedResourcesMap = Map<string, string | null>\n\nexport type CacheData = MakeswiftApiClient.SerializedState\n\nexport type MakeswiftClientOptions = {\n uri: string\n cacheData?: CacheData\n localizedResourcesMap?: SerializedLocalizedResourcesMap\n locale?: Intl.Locale\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 private localizedResourcesMap: LocalizedResourcesMap\n private locale: Intl.Locale | undefined\n\n constructor({ uri, cacheData, localizedResourcesMap = {}, locale }: MakeswiftClientOptions) {\n this.graphqlClient = new GraphQLClient(uri)\n this.makeswiftApiClient = MakeswiftApiClient.configureStore({ serializedState: cacheData })\n this.subscribe = this.makeswiftApiClient.subscribe\n this.localizedResourcesMap = new Map(Object.entries(localizedResourcesMap))\n this.locale = locale\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 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 readLocalizedGlobalElement(globalElementId: string): LocalizedGlobalElement | null {\n const localizedGlobalElementId = this.getLocalizedResourceId(globalElementId)\n\n if (localizedGlobalElementId == null) return null\n\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.LocalizedGlobalElement,\n localizedGlobalElementId,\n )\n }\n\n async fetchLocalizedGlobalElement(\n globalElementId: string,\n ): Promise<LocalizedGlobalElement | null> {\n const locale = this.locale\n\n if (locale == null) return null\n\n // If getLocalizedResourceId returns null, it means we have tried to fetch the resource,\n // but the resource is not available. If we haven't fetched it yet, it'll return undefined.\n const noLocalizedResource = this.getLocalizedResourceId(globalElementId) === null\n\n if (noLocalizedResource) return null\n\n // TODO(fikri): We're checking the cache here because the cache hit will fail on fetchAPIResource.\n // This is because in the cache we're saving the ID of the localizedGlobalElementId,\n // but we're reading the cache using the globalElementId.\n // This is very confusing and it can lead to more bugs. We need to refactor how we handle\n // localized global element.\n const cacheResult = this.readLocalizedGlobalElement(globalElementId)\n\n if (cacheResult) return cacheResult\n\n const result = await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(\n APIResourceType.LocalizedGlobalElement,\n globalElementId,\n locale,\n ),\n )\n\n this.setLocalizedResourceId({\n resourceId: globalElementId,\n localizedResourceId: result?.id ?? null,\n })\n\n return result\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, this.locale),\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 private getLocalizedResourceId(resourceId: string): string | undefined | null {\n return this.localizedResourcesMap?.get(resourceId)\n }\n\n setLocalizedResourceId({\n resourceId,\n localizedResourceId,\n }: {\n resourceId: string\n localizedResourceId: string | null\n }): void {\n this.localizedResourcesMap.set(resourceId, localizedResourceId)\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","'use client'\n\nimport { 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 baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null)\n const favicon = page.meta.favicon ?? defaultFavicon\n const title = baseLocalizedPage?.meta.title ?? page.meta.title\n const description = baseLocalizedPage?.meta.description ?? page.meta.description\n const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords\n const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage\n const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl\n const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked\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 const documentId = baseLocalizedPage?.elementTreeId ?? page.id\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(documentId)} />\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 { PreviewData } from 'next'\nimport { z } from 'zod'\nimport { ActionTypes } from '../react'\n\nconst makeswiftSiteVersionSchema = z.enum(['Live', 'Working'])\nexport const MakeswiftSiteVersion = makeswiftSiteVersionSchema.Enum\nexport type MakeswiftSiteVersion = z.infer<typeof makeswiftSiteVersionSchema>\n\nconst makeswiftPreviewDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\nexport type MakeswiftPreviewData = z.infer<typeof makeswiftPreviewDataSchema>\n\nexport function getMakeswiftSiteVersion(previewData: PreviewData): MakeswiftSiteVersion | null {\n const result = makeswiftPreviewDataSchema.safeParse(previewData)\n\n if (result.success) return result.data.siteVersion\n\n return null\n}\n\ntype Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const previewModeScript = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(resource, options) {\n const request = new Request(resource, options)\n\n if (new URL(request.url).origin !== window.location.origin) {\n return originalFetch.call(this, resource, options)\n }\n\n return originalFetch.call(\n this,\n new Request(request, { headers: { [headerName]: secret } }),\n )\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n const makeswiftConnectionCheckScript = `\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (\n event.origin === appOrigin && \n event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'\n ) {\n setInterval(() => {\n window.parent.postMessage({ \n type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',\n payload: { \n currentUrl: window.location.href \n }\n }, appOrigin)\n }, 20)\n }\n })\n\n window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)\n}\n`\n\n return (\n <>\n <script\n id=\"makeswift-preview-mode\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: previewModeScript }}\n />\n <script\n id=\"makeswift-connection-check\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: makeswiftConnectionCheckScript }}\n />\n </>\n )\n}\n","import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\nimport { CacheData, SerializedLocalizedResourcesMap } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\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: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime?: ReactRuntime\n siteVersion?: MakeswiftSiteVersion\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n private siteVersion: MakeswiftSiteVersion | null\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n constructor(\n apiKey: string,\n {\n apiOrigin = 'https://api.makeswift.com',\n runtime = ReactRuntime,\n siteVersion,\n }: MakeswiftConfig = {},\n ) {\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 this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n this.siteVersion = siteVersion ?? null\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: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': this.siteVersion ?? MakeswiftSiteVersion.Live,\n ...init?.headers,\n },\n })\n\n return response\n }\n\n async getPages(): Promise<MakeswiftPage[]> {\n const response = await this.fetch(`/${this.siteVersion == null ? 'v2' : 'v3'}/pages`, {\n headers: {\n 'Makeswift-Site-Version': MakeswiftSiteVersion.Live,\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get pages', await response.json())\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 async getPage(\n pathname: string,\n {\n preview: previewOverride = false,\n locale: localeInput,\n }: { preview?: boolean; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const siteVersion =\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live)\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/pages/${encodeURIComponent(pathname)}`,\n this.apiOrigin,\n )\n if (localeInput) url.searchParams.set('locale', localeInput)\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: { 'Makeswift-Site-Version': siteVersion },\n })\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n preview: boolean,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/typographies/bulk`,\n this.apiOrigin,\n )\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ?? (preview ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get typographies', await response.json())\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(ids: string[], preview: boolean): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`${this.siteVersion == null ? 'v1' : 'v2'}/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ?? (preview ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get swatches', await response.json())\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n preview: boolean,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, preview)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n preview: boolean,\n locale?: string,\n ): Promise<{ cacheData: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.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 const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n )\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\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 getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], preview)\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 const pagePathnames = await this.getPagePathnameSlices([...pageIds], { preview, locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n preview,\n )\n\n const cacheData = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n preview: previewOverride = false,\n locale: localeInput,\n }: { preview?: boolean; locale?: string } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const siteVersion =\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live)\n\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\n const response = await this.fetch(\n `/${this.siteVersion == null ? 'v2' : 'v3'}/pages/${encodeURIComponent(\n pathname,\n )}/document?${searchParams.toString()}`,\n {\n headers: { 'Makeswift-Site-Version': siteVersion },\n },\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n previewOverride,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\n }\n }\n\n async getSwatch(swatchId: string): Promise<Swatch | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/swatches/${swatchId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get swatch', await response.json())\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(typographyId: string): Promise<Typography | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/typographies/${typographyId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get typography', await response.json())\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/global-elements/${globalElementId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get global element', await response.json())\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `${\n this.siteVersion == null ? 'v1' : 'v2'\n }/localized-global-elements/${globalElementId}?locale=${locale}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get localized global element', await response.json())\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n { preview: previewOverride = false, locale }: { preview?: boolean; locale?: string } = {},\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/page-pathname-slices/bulk`,\n this.apiOrigin,\n )\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get page pathname slices', await response.json())\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n id: pagePathnameSlice.basePageId,\n pathname: pagePathnameSlice.pathname,\n __typename: pagePathnameSlice.__typename,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n { preview = false, locale }: { preview?: boolean; locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], { preview, locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap', await response.json())\n throw new Error(`Failed to get sitemap with error: \"${response.statusText}\"`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n","'use client'\n\nimport { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { ReactRuntime } from '../../../react'\nimport { Element } from '../../../state/react-page'\n\ntype ElementTreeResult = { elementTree: Element }\n\ntype ElementTreeError = { message: string }\n\nexport type ElementTreeResponse = ElementTreeResult | ElementTreeError\n\nexport default async function elementTree(\n req: NextApiRequest,\n res: NextApiResponse<ElementTreeResponse>,\n): Promise<void> {\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","import { NextApiRequest, NextApiResponse } from 'next'\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\nexport type Font = {\n family: string\n label?: string\n variants: FontVariant[]\n}\n\ntype Fonts = Font[]\n\nexport type GetFonts = () => Fonts | Promise<Fonts>\n\nexport type FontsResponse = Fonts\n\nexport default async function fonts(\n _req: NextApiRequest,\n res: NextApiResponse<FontsResponse>,\n { getFonts }: { getFonts?: GetFonts } = {},\n): Promise<void> {\n const fonts = (await getFonts?.()) ?? []\n\n return res.json(fonts)\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { version } from '../../../../package.json'\n\nexport type Manifest = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n customBreakpoints: boolean\n siteVersions: boolean\n unstable_siteVersions: boolean\n localizedPageSSR: boolean\n}\n\ntype ManifestError = { message: string }\n\nexport type ManifestResponse = Manifest | ManifestError\n\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<ManifestResponse>,\n { apiKey, siteVersions }: { apiKey: string; siteVersions: boolean },\n): Promise<void> {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n return res.json({\n version,\n previewMode: true,\n interactionMode: true,\n clientSideNavigation: true,\n elementFromPoint: false,\n customBreakpoints: true,\n siteVersions,\n unstable_siteVersions: siteVersions,\n localizedPageSSR: true,\n })\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { MakeswiftPreviewData, MakeswiftSiteVersion } from '../../preview-mode'\n\ntype ProxyPreviewModeError = string\n\nexport type ProxyPreviewModeResponse = ProxyPreviewModeError\n\nexport default async function proxyPreviewMode(\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeError>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n const previewModeProxy = createProxyServer()\n\n // TODO: This is a hack to get the locale from the request.\n // Next.js strips the locale from the req.url, and there's no official way to get the locale\n // from an API route: https://github.com/vercel/next.js/discussions/21798.\n // The current workaround is to get the locale from an internal object: RequestMeta,\n // https://github.com/vercel/next.js/blob/a0d1d728b9003f12c9df6c5e9a33bc4c33cef0ab/packages/next/src/server/request-meta.ts\n // One possible way to properly fix this is by updating how we do preview mode. For example,\n // by using partitioned cookies instead of a proxy.\n const NextRequestMetaSymbol = Reflect.ownKeys(req).find(\n key =>\n key.toString() === 'Symbol(NextRequestMeta)' ||\n key.toString() === 'Symbol(NextInternalRequestMeta)',\n ) as keyof NextApiRequest | undefined\n if (NextRequestMetaSymbol) {\n const nextRequestMeta = req[NextRequestMetaSymbol]\n const initUrl = nextRequestMeta?.__NEXT_INIT_URL\n const isLocaleStripped = nextRequestMeta?.__nextStrippedLocale\n\n try {\n if (isLocaleStripped && initUrl) req.url = new URL(initUrl).pathname\n } catch {}\n }\n\n previewModeProxy.once('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n // The following headers are Next.js-specific and are removed to prevent Next.js from\n // short-circuiting requests, breaking routing.\n proxyReq.removeHeader('X-Invoke-Path')\n proxyReq.removeHeader('X-Invoke-Query')\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 (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n const originalCookies = req.headers.cookie\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProtoHeader = req.headers['x-forwarded-proto']\n\n let forwardedProto: string[] = []\n if (Array.isArray(forwardedProtoHeader)) {\n forwardedProto = forwardedProtoHeader\n } else if (typeof forwardedProtoHeader === 'string') {\n forwardedProto = forwardedProtoHeader.split(',')\n }\n\n const isForwardedProtoHttps = forwardedProto.includes('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 // If the user generates a locally-trusted CA for their SSL cert, it's likely that Node.js won't\n // trust this CA unless they used the `NODE_EXTRA_CA_CERTS` option\n // (see https://stackoverflow.com/a/68135600). To provide a better developer experience, instead\n // of requiring the user to provide the CA to Node.js, we don't enforce SSL during local\n // development.\n const secure = process.env['NODE_ENV'] === 'production'\n\n const previewData: MakeswiftPreviewData = {\n makeswift: true,\n siteVersion: MakeswiftSiteVersion.Working,\n }\n const setCookie = res.setPreviewData(previewData).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 additionalCookies = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n const cookie = originalCookies ? `${originalCookies}; ${additionalCookies}` : additionalCookies\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie }, secure }, err => {\n if (err) reject(err)\n else resolve()\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 { NextApiRequest, NextApiResponse } from 'next'\nimport isErrorWithMessage from '../../../utils/isErrorWithMessage'\n\ntype RevalidationResult = { revalidated: boolean }\n\ntype RevalidationError = { message: string }\n\nexport type RevalidationResponse = RevalidationResult | RevalidationError\n\nexport async function revalidate(\n req: NextApiRequest,\n res: NextApiResponse<RevalidationResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\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","import { NextApiRequest, NextApiResponse } from 'next'\nimport { Data } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\n\ntype TranslatableDataResult = { translatableData: Record<string, Data> }\n\ntype TranslatableDataError = { message: string }\n\nexport type TranslatableDataResponse = TranslatableDataResult | TranslatableDataError\n\nexport default async function translatableData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatableDataResponse>,\n client: Makeswift,\n): Promise<void> {\n const elementTree = req.body.elementTree\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined.' })\n }\n\n try {\n let translatableData = client.getTranslatableData(elementTree)\n\n return res.json({ translatableData })\n } catch (error) {\n res.status(500).json({ message: 'Failed to get traslatable data.' })\n }\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { Element } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\n\ntype TranslatedDataResult = { elementTree: Element }\n\ntype TranslatedDataError = { message: string }\n\nexport type TranslatedDataResponse = TranslatedDataResult | TranslatedDataError\n\nexport default async function mergeTranslatedData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatedDataResponse>,\n client: Makeswift,\n): Promise<void> {\n const translatedData = req.body.translatedData\n const elementTree = req.body.elementTree\n\n if (translatedData == null) {\n return res.status(400).json({ message: 'translatedData must be defined' })\n }\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData)\n\n return res.json({ elementTree: translatedElementTree })\n}\n","import Cors from 'cors'\nimport { NextApiHandler } from 'next'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport proxyPreviewMode, { ProxyPreviewModeResponse } from './handlers/proxy-preview-mode'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport { ReactRuntime } from '../../react'\n\nexport type { Manifest, Font }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n siteVersions?: boolean\n runtime?: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | ProxyPreviewModeResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n siteVersions = false,\n runtime = ReactRuntime,\n }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\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 client = new Makeswift(apiKey, {\n apiOrigin,\n siteVersion: siteVersions ? Makeswift.getSiteVersion(req.previewData) : undefined,\n runtime,\n })\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) return manifest(req, res, { apiKey, siteVersions })\n\n if (matches('/revalidate')) return revalidate(req, res, { apiKey })\n\n if (matches('/proxy-preview-mode')) return proxyPreviewMode(req, res, { apiKey })\n\n if (matches('/fonts')) return fonts(req, res, { getFonts })\n\n if (matches('/element-tree')) return elementTree(req, res)\n\n if (matches('/translatable-data')) return translatableData(req, res, client)\n\n if (matches('/merge-translated-data')) return mergeTranslatedData(req, res, client)\n\n const handleResource = <T extends APIResource>(resource: T | null): void =>\n resource === null ? res.status(404).json({ message: 'Not Found' }) : res.json(resource)\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale)\n .then(resource =>\n // We're not returning 404 if it's null because localized global element is nullable.\n resource === null ? res.json({ message: 'Not Found' }) : res.json(resource),\n )\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const locale = typeof req.query.locale === 'string' ? req.query.locale : undefined\n\n return client.getPagePathnameSlice(m.params.id, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n return res.status(404).json({ message: 'Not Found' })\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, ReactRuntime } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n runtime?: ReactRuntime\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(), {\n apiOrigin: getApiOrigin(),\n })\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(), {\n apiOrigin: getApiOrigin(),\n })\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, runtime }: PageProps) => {\n const client = useMemo(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n localizedResourcesMap: snapshot.localizedResourcesMap,\n locale: snapshot.locale ? new Intl.Locale(snapshot.locale) : undefined,\n }),\n [snapshot],\n )\n const rootElements = new Map([[snapshot.document.id, snapshot.document.data]])\n\n snapshot.document.localizedPages.forEach(localizedPage => {\n rootElements.set(localizedPage.elementTreeId, localizedPage.data)\n })\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={rootElements}\n preview={snapshot.preview}\n runtime={runtime}\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 type { MakeswiftPage, MakeswiftPageDocument, MakeswiftPageSnapshot, Sitemap } from './client'\nexport { Makeswift } from './client'\nexport type { MakeswiftPreviewData } from './preview-mode'\nexport { PreviewModeScript } from './preview-mode'\nexport { Document } from './document'\nexport type { Manifest, Font, MakeswiftApiHandlerResponse } from './api-handler'\nexport { MakeswiftApiHandler } from './api-handler'\nexport { forwardNextDynamicRef } from './dynamic'\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\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 (\n (findBreakpointOverride<BoxAnimateIn>(runtime.getBreakpoints(), animateIn, deviceId)?.value ??\n 'none') === 'none'\n )\n }\n const isHiddenBasedOnBoxAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'boxAnimateType')\n const isHiddenBasedOnItemAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'itemAnimateType')\n\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Box')))),\n {\n type: MakeswiftComponentType.Box,\n label: 'Box',\n props: {\n id: Props.ElementID(),\n backgrounds: Props.Backgrounds(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n height: Props.ResponsiveIconRadioGroup({\n label: 'Height',\n options: [\n { value: 'auto', label: 'Auto', icon: 'HeightAuto16' },\n { value: 'stretch', label: 'Stretch', icon: 'HeightMatch16' },\n ],\n defaultValue: 'auto',\n }),\n verticalAlign: Props.ResponsiveIconRadioGroup({\n label: 'Align items',\n options: [\n { value: 'flex-start', label: 'Top', icon: 'VerticalAlignStart16' },\n { value: 'center', label: 'Middle', icon: 'VerticalAlignMiddle16' },\n { value: 'flex-end', label: 'Bottom', icon: 'VerticalAlignEnd16' },\n {\n value: 'space-between',\n label: 'Space between',\n icon: 'VerticalAlignSpaceBetween16',\n },\n ],\n defaultValue: 'flex-start',\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({\n format: Props.Padding.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\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 { findBreakpointOverride } from '../../../state/modules/breakpoints'\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 =\n findBreakpointOverride<ButtonVariant>(runtime.getBreakpoints(), variant, device)\n ?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { v4 as uuid } from 'uuid'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '../../../state/modules/breakpoints'\n\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Carousel,\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 =\n findBreakpointOverride(runtime.getBreakpoints(), 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 { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Countdown,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Divider,\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Code,\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { Alignments, Contrast, Contrasts, Shapes, Sizes } from './context/FormContext'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Form,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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 = findBreakpointOverride<Contrast>(\n runtime.getBreakpoints(),\n responsiveContrast,\n device,\n )\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 550, unit: 'px' },\n },\n ],\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 priority: Props.Checkbox({ label: 'Priority' }),\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Navigation,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 100, unit: 'px' },\n },\n ],\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.SocialLinks,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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: getBaseBreakpoint(runtime.getBreakpoints()).id,\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 { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\nimport { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { RichText } from '../../../controls/rich-text-v2/rich-text-v2'\nimport { forwardNextDynamicRef } from '../../../next/dynamic'\nimport dynamic from 'next/dynamic'\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: RichText(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 700, unit: 'px' },\n },\n ],\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Video,\n props: {\n id: Props.ElementID(),\n video: Props.Video({ preset: { controls: true } }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import { ReactRuntime } from '../../runtimes/react'\nimport { registerComponent as registerBoxComponent } from './Box/register'\nimport { registerComponent as registerButtonComponent } from './Button/register'\nimport { registerComponent as registerCarouselComponent } from './Carousel/register'\nimport { registerComponent as registerCountdownComponent } from './Countdown/register'\nimport { registerComponent as registerDividerComponent } from './Divider/register'\nimport { registerComponent as registerEmbedComponent } from './Embed/register'\nimport { registerComponent as registerFormComponent } from './Form/register'\nimport { registerComponent as registerImageComponent } from './Image/register'\nimport { registerComponent as registerNavigationComponent } from './Navigation/register'\nimport { registerComponent as registerRootComponent } from './Root/register'\nimport { registerComponent as registerSocialLinksComponent } from './SocialLinks/register'\nimport { registerComponent as registerTextComponent } from './Text/register'\nimport { registerComponent as registerVideoComponent } from './Video/register'\n\nexport function registerBuiltinComponents(runtime: ReactRuntime) {\n const unregisterBoxComponent = registerBoxComponent(runtime)\n const unregisterButtonComponent = registerButtonComponent(runtime)\n const unregisterCarouselComponent = registerCarouselComponent(runtime)\n const unregisterCountdownComponent = registerCountdownComponent(runtime)\n const unregisterDividerComponent = registerDividerComponent(runtime)\n const unregisterEmbedComponent = registerEmbedComponent(runtime)\n const unregisterFormComponent = registerFormComponent(runtime)\n const unregisterImageComponent = registerImageComponent(runtime)\n const unregisterNavigationComponent = registerNavigationComponent(runtime)\n const unregisterRootComponent = registerRootComponent(runtime)\n const unregisterSocialLinksComponent = registerSocialLinksComponent(runtime)\n const unregisterTextComponent = registerTextComponent(runtime)\n const unregisterVideoComponent = registerVideoComponent(runtime)\n\n return () => {\n unregisterBoxComponent()\n unregisterButtonComponent()\n unregisterCarouselComponent()\n unregisterCountdownComponent()\n unregisterDividerComponent()\n unregisterEmbedComponent()\n unregisterFormComponent()\n unregisterImageComponent()\n unregisterNavigationComponent()\n unregisterRootComponent()\n unregisterSocialLinksComponent()\n unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","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","export function isNonNullable<T>(value: T): value is NonNullable<T> {\n return value != null\n}\n","import { useEffect, useRef } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport {\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} 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 useLocalizedGlobalElement(\n globalElementId: string | null,\n): LocalizedGlobalElement | null {\n const client = useMakeswiftClient()\n const readLocalizedGlobalElement = () =>\n globalElementId == null ? null : client.readLocalizedGlobalElement(globalElementId)\n const localizedGlobalElement = useSyncExternalStore(\n client.subscribe,\n readLocalizedGlobalElement,\n readLocalizedGlobalElement,\n )\n\n useEffect(() => {\n if (globalElementId != null) {\n client.fetchLocalizedGlobalElement(globalElementId).catch(console.error)\n }\n }, [client, globalElementId])\n\n return localizedGlobalElement\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","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 getBreakpoint,\n getBreakpointMediaQuery,\n join as joinResponsiveValues,\n Breakpoints,\n} from '../../state/modules/breakpoints'\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'\nimport { useBreakpoints } from '../../runtimes/react'\nimport { DropFirst } from './drop-first'\n\nexport function responsiveStyle<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>>(\n breakpoints: Breakpoints,\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return joinResponsiveValues(breakpoints, responsiveValues, join, strategy).reduce(\n (acc, { deviceId, value }) => {\n const breakpoint = getBreakpoint(breakpoints, deviceId)\n const mediaQuery = getBreakpointMediaQuery(breakpoint)\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 useResponsiveStyle<\n V,\n A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>,\n>(\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return responsiveStyle(useBreakpoints(), responsiveValues, join, strategy)\n}\n\nexport function responsiveWidth(\n breakpoints: Breakpoints,\n widthData: WidthValue | undefined,\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): CSSObject {\n return {\n maxWidth: '100%',\n ...responsiveStyle(breakpoints, [widthData], ([width = defaultValue]) => ({\n width: typeof width === 'object' ? `${width.value}${width.unit}` : width,\n })),\n }\n}\n\nexport function useResponsiveWidth(\n ...args: DropFirst<Parameters<typeof responsiveWidth>>\n): CSSObject {\n return responsiveWidth(useBreakpoints(), ...args)\n}\n\nexport function responsivePadding(\n breakpoints: Breakpoints,\n paddingData: PaddingValue | undefined,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsivePadding(\n ...args: DropFirst<Parameters<typeof responsivePadding>>\n): CSSObject {\n return responsivePadding(useBreakpoints(), ...args)\n}\n\nexport function responsiveMargin(\n breakpoints: Breakpoints,\n marginData: MarginValue | undefined,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsiveMargin(\n ...args: DropFirst<Parameters<typeof responsiveMargin>>\n): CSSObject {\n return responsiveMargin(useBreakpoints(), ...args)\n}\n\nexport function responsiveBorderRadius(\n breakpoints: Breakpoints,\n borderRadiusData: BorderRadiusValue | undefined,\n defaultValue: BorderRadiusPropertyData = {} as BorderRadiusPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsiveBorderRadius(\n ...args: DropFirst<Parameters<typeof responsiveBorderRadius>>\n): CSSObject {\n return responsiveBorderRadius(useBreakpoints(), ...args)\n}\n\nexport function useResponsiveBorder(\n borderData: BorderPropControllerData | undefined,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n return useResponsiveStyle([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(\n breakpoints: Breakpoints,\n props: {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n },\n): CSSObject {\n return {\n display: 'flex',\n ...responsiveStyle(\n breakpoints,\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\nexport function useResponsiveGridItem(\n ...args: DropFirst<Parameters<typeof responsiveGridItem>>\n): CSSObject {\n return responsiveGridItem(useBreakpoints(), ...args)\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(\n breakpoints: Breakpoints,\n value: BoxShadowPropControllerData | undefined,\n): CSSObject {\n return responsiveStyle(breakpoints, [value], ([shadow = []]) => ({\n boxShadow: getBoxShadow(shadow),\n }))\n}\n\nexport function useResponsiveShadow(\n ...args: DropFirst<Parameters<typeof responsiveShadow>>\n): CSSObject {\n return responsiveShadow(useBreakpoints(), ...args)\n}\n\nexport function responsiveTextStyle(\n breakpoints: Breakpoints,\n value: TextStyleValue | undefined,\n): CSSObject {\n return responsiveStyle(\n breakpoints,\n [value],\n ([\n textStyle = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n ]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return {\n ...(fontFamily == null ? {} : { fontFamily: `\"${fontFamily}\"` }),\n ...(fontWeight == null ? {} : { fontWeight }),\n ...(letterSpacing == null ? {} : { letterSpacing }),\n ...(fontSize == null ? {} : { fontSize: `${fontSize.value}${fontSize.unit}` }),\n ...(textTransform.includes('uppercase') ? { textTransform: 'uppercase' } : {}),\n ...(fontStyle.includes('italic') ? { fontStyle: 'italic' } : {}),\n }\n },\n )\n}\n\nexport function useResponsiveTextStyle(\n ...args: DropFirst<Parameters<typeof responsiveTextStyle>>\n): CSSObject {\n return responsiveTextStyle(useBreakpoints(), ...args)\n}\n","import { CSSObject } from '@emotion/css'\nimport { useEffect, useId } from 'react'\n\nimport { useBorder, BorderSide } from '../../../components/hooks'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\n\nimport {\n FontSizePropertyData,\n StyleControl,\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'\nimport { BoxModel, getBox } from '../../../box-model'\nimport deepEqual from '../../../utils/deepEqual'\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 ...useResponsiveStyle(\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 control: StyleControl | null,\n): StyleControlFormattedValue {\n const style = useStyleControlCssObject(styleControlData, controlDefinition)\n // We're removing the colons because useId returns a string wrapped with colons, e.g. \":R3d5sm:\",\n // and we cannot use colons in a class name.\n const guid = useId().replaceAll(':', '')\n const styleClassName = useStyle(style)\n const classNames = `${styleClassName} ${guid}`\n\n useEffect(() => {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n if (control == null) return\n\n const element = document.querySelector(`.${guid}`)\n\n const measuredBoxModel = element == null ? null : getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n control.changeBoxModel(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n control?.changeBoxModel(null)\n }\n }, [guid, control])\n\n return classNames\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 IconRadioGroupControlData,\n IconRadioGroupControlDefinition,\n} from '../../../controls/icon-radio-group'\n\nexport type IconRadioGroupControlValue<T extends IconRadioGroupControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? IconRadioGroupControlData | undefined\n : IconRadioGroupControlData\n\nexport function useIconRadioGroupValue<T extends IconRadioGroupControlDefinition>(\n iconRadioGroupControlData: IconRadioGroupControlData | undefined,\n controlDefinition: T,\n): IconRadioGroupControlValue<T> {\n return (iconRadioGroupControlData ??\n controlDefinition.config.defaultValue) as IconRadioGroupControlValue<T>\n}\n","import { P, match } from 'ts-pattern'\nimport {\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\n const fileId = match(data)\n .with(P.string, id => id)\n .with({ type: 'makeswift-file' }, ({ id }) => id)\n .otherwise(() => null)\n\n const file = useFile(fileId)\n\n return match([file, data, format])\n .with([{ __typename: 'File' }, P.any, ImageControlValueFormat.URL], ([file]) => file.publicUrl)\n .with(\n [\n { __typename: 'File', dimensions: P.not(P.nullish) },\n P.any,\n ImageControlValueFormat.WithDimensions,\n ],\n ([file]) => ({\n url: file.publicUrl,\n dimensions: file.dimensions,\n }),\n )\n .with([P.any, { type: 'external-file' }, ImageControlValueFormat.URL], ([, d]) => d.url)\n .with(\n [\n P.any,\n { type: 'external-file', width: P.number, height: P.number },\n ImageControlValueFormat.WithDimensions,\n ],\n ([, d]) => ({\n url: d.url,\n dimensions: { width: d.width, height: d.height },\n }),\n )\n .otherwise(() => undefined)\n}\n\nexport type ResolveImageControlValue<T extends ControlDefinition> = T extends ImageControlDefinition\n ? undefined extends T['config']['format']\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.URL\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.WithDimensions\n ? ImageWithDimensions | undefined\n : never\n : never\n","import { MouseEvent, useCallback, useMemo } from 'react'\n\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport { useElementId } from '../'\nimport { LinkControlData, LinkControlDefinition } from '../../../controls'\nimport { usePagePathnameSlice } from '../hooks/makeswift-api'\n\ntype LinkValue = {\n href: string\n target: '_blank' | '_self' | undefined\n onClick: (event: MouseEvent<HTMLElement>) => void\n}\n\nexport type LinkControlValue<_T extends LinkControlDefinition> = LinkValue | undefined\n\nexport function useLinkControlValue<T extends LinkControlDefinition>(\n link: LinkControlData | undefined,\n _definition: T,\n): LinkControlValue<T> {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (event.defaultPrevented) return\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n },\n [link, href, block],\n )\n\n const res = useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick])\n\n return res\n}\n","import { useEffect, useState } from 'react'\nimport { ListControl, ListControlData, ListControlDefinition } from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\ntype ListControlItemValue<T extends ListControlDefinition> = ControlDefinitionValue<\n T['config']['type']\n>\n\nexport type ListControlValue<T extends ListControlDefinition> = ListControlItemValue<T>[]\n\ntype ListControlValueProps<T extends ListControlDefinition> = {\n definition: T\n data: ListControlData<T> | undefined\n children(value: ListControlValue<T>): JSX.Element\n control: ListControl\n}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ListControlValueProps<T>): JSX.Element {\n const [controls, setControls] = useState<Map<string, AnyPropController> | undefined>(new Map())\n\n useEffect(() => {\n if (control == null || data == null) return\n\n // This is not ideal because we're setting the itemsControl from the ListControlValue.\n // This is because right now we don't have a subscribeToValue function inside the control.\n // We can improve this by adding the subscribeToValue to createPropController and by\n // moving the setItemsControl to the control itself.\n setControls(control.setItemsControl(data))\n }, [data, control])\n\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue\n definition={definition.config.type}\n data={item.value}\n control={controls?.get(item.id)}\n >\n {value => renderFn([value as ListControlItemValue<T>, ...listControlValue])}\n </ControlValue>\n ),\n children,\n )([])\n}\n","import { NumberControlData, NumberControlDefinition } from '../../../controls'\n\nexport type NumberControlValue<T extends NumberControlDefinition> =\n undefined extends T['config']['defaultValue'] ? NumberControlData | undefined : NumberControlData\n\nexport function useNumber<T extends NumberControlDefinition>(\n numberControlData: number | undefined,\n controlDefinition: T,\n): NumberControlValue<T> {\n return (numberControlData ?? controlDefinition.config.defaultValue) as NumberControlValue<T>\n}\n","import dynamic from 'next/dynamic'\nimport { ReactNode, useCallback } from 'react'\nimport {\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n} from '../../../../controls/rich-text'\nimport { forwardNextDynamicRef } from '../../../../next'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../../state/modules/prop-controller-handles'\nimport { useIsPreview } from '../..'\n\nconst EditableText = forwardNextDynamicRef(patch => dynamic(() => patch(import('./EditableText'))))\nconst ReadOnlyText = forwardNextDynamicRef(patch => dynamic(() => patch(import('./ReadOnlyText'))))\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextControlDefinition }\n\nexport function useRichText(data: RichTextControlData, control: RichTextControl | null) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n const isPreview = useIsPreview()\n\n return isPreview ? (\n <EditableText text={data} ref={textCallbackRef} />\n ) : (\n <ReadOnlyText text={data} ref={textCallbackRef} />\n )\n}\n","import { ReactNode } from 'react'\n\nimport {\n RichTextControlData,\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n isRichTextV1Data,\n} from '../../../../controls'\nimport { useIsPreview } from '../../../react'\nimport { forwardNextDynamicRef } from '../../../../next'\nimport dynamic from 'next/dynamic'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\nconst EditableText = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('./EditableTextV2'))),\n)\nconst ReadOnlyText = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('./ReadOnlyTextV2'))),\n)\n\nconst ReadOnlyTextV1 = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('../rich-text/ReadOnlyText'))),\n)\n\nexport function useRichTextV2(\n data: RichTextV2ControlData | RichTextControlData,\n definition: RichTextV2ControlDefinition,\n control: RichTextV2Control | null,\n) {\n const isPreview = useIsPreview()\n\n if (isRichTextV1Data(data)) {\n return <ReadOnlyTextV1 text={data} />\n }\n\n return isPreview ? (\n <EditableText text={data} definition={definition} control={control} />\n ) : (\n <ReadOnlyText text={data} definition={definition} />\n )\n}\n","import {\n SelectControlData,\n SelectControlDefinition,\n SelectControlDefinitionOption,\n} from '../../../controls'\n\nexport type SelectControlValue<T extends SelectControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? SelectControlDefinitionOption<T> | undefined\n : SelectControlDefinitionOption<T>\n\nexport function useSelectControlValue<T extends SelectControlDefinition>(\n data: SelectControlData<T> | undefined,\n definition: T,\n): SelectControlValue<T> {\n return (data ?? definition?.config.defaultValue) as SelectControlValue<T>\n}\n","import { ShapeControl, ShapeControlData, ShapeControlDefinition } from '../../../controls/shape'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\nexport type ShapeControlValue<T extends ShapeControlDefinition> = {\n [K in keyof T['config']['type']]: ControlDefinitionValue<T['config']['type'][K]>\n}\n\ntype ShapeControlValueProps<T extends ShapeControlDefinition> = {\n definition: T\n data: ShapeControlData<T> | undefined\n children(value: ShapeControlValue<T>): JSX.Element\n control: ShapeControl\n}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue\n definition={controlDefinition}\n data={data?.[key]}\n control={control?.controls.get(key)}\n >\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\n}\n","import { BoxModel, getBox } from '../../state/modules/box-models'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function pollBoxModel({\n element,\n onBoxModelChange,\n}: {\n element: Element\n onBoxModelChange(boxModel: BoxModel | null): void\n}): () => void {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n const measuredBoxModel = getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n onBoxModelChange(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n onBoxModelChange(null)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { Element } from '../../../runtimes/react'\nimport { getIndexes } from '../../../components/utils/columns'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\nimport { useStyle } from '../use-style'\nimport { cx } from '@emotion/css'\nimport { pollBoxModel } from '../poll-box-model'\n\nexport type SlotControlValue = ReactNode\n\nexport function useSlot(data: SlotControlData, control: SlotControl | null) {\n // TODO(miguel): While the UI shouldn't allow the state, we should probably check that at least\n // one element is visible.\n if (data == null || data.elements.length === 0) {\n return <Slot.Placeholder control={control} />\n }\n\n return (\n <Slot control={control}>\n {data.elements.map((element, i) => (\n <Slot.Item key={element.key} control={control} grid={data.columns} index={i}>\n <Element element={element} />\n </Slot.Item>\n ))}\n </Slot>\n )\n}\n\ntype SlotProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n children?: ReactNode\n className?: string\n}\n\nexport function Slot<T extends ElementType = 'div'>({\n as,\n control,\n children,\n className,\n ...restOfProps\n}: SlotProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotProps<T>>) {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\nSlot.Placeholder = SlotPlaceholder\n\nSlot.Item = SlotItem\n\ntype SlotItemProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n grid: SlotControlData['columns']\n index: number\n children?: ReactNode\n className?: string\n}\n\nfunction SlotItem<T extends ElementType = 'div'>({\n as,\n control,\n grid,\n index,\n children,\n className,\n ...restOfProps\n}: SlotItemProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotItemProps<T>>): JSX.Element {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n ...useResponsiveStyle([grid], ([{ count = 12, spans = [[12]] } = {}]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, index)\n const span = spans[rowIndex][columnIndex]\n const flexBasis = `calc(100% * ${(span / count).toFixed(5)})`\n\n return span === 0 ? { display: 'none' } : { flexBasis, minWidth: flexBasis }\n }),\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeItemBoxModel(index, boxModel),\n })\n }, [element, control, index])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\ntype SlotPlaceholderProps = {\n control: SlotControl | null\n}\n\nfunction SlotPlaceholder({ control }: SlotPlaceholderProps): JSX.Element {\n const [element, setElement] = useState<Element | null>(null)\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <div\n ref={setElement}\n className={useStyle({\n width: '100%',\n background: 'rgba(161, 168, 194, 0.18)',\n height: '80px',\n })}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n height=\"100%\"\n className={useStyle({ overflow: 'visible', padding: 8 })}\n >\n <rect\n x={0}\n y={0}\n width=\"100%\"\n height=\"100%\"\n strokeWidth={2}\n strokeDasharray=\"4 2\"\n fill=\"none\"\n stroke=\"rgba(161, 168, 194, 0.40)\"\n rx=\"4\"\n ry=\"4\"\n />\n </svg>\n </div>\n )\n}\n","import { StyleV2Control, StyleV2ControlData, StyleV2ControlDefinition } from '../../../controls'\nimport { useStyle } from '../use-style'\nimport {\n findBreakpointOverride,\n getBaseBreakpoint,\n getBreakpointMediaQuery,\n mergeOrCoalesceFallbacks,\n} from '../../../state/modules/breakpoints'\nimport { useBreakpoints } from '..'\nimport { CSSObject } from '@emotion/css'\n\nimport { ControlDefinitionValue, ControlValue } from './control'\nimport { RenderHook } from '../components'\nimport { DeviceOverride } from '../../../controls/types'\n\nfunction useStyleControlCssObject(\n styleControlData: StyleV2ControlData,\n controlDefinition: StyleV2ControlDefinition,\n): CSSObject {\n const breakpoints = useBreakpoints()\n\n return {\n ...controlDefinition.config.getStyle(\n findBreakpointOverride(\n breakpoints,\n styleControlData,\n getBaseBreakpoint(breakpoints).id,\n mergeOrCoalesceFallbacks,\n )?.value,\n ),\n ...breakpoints.reduce((styles, breakpoint) => {\n return {\n ...styles,\n [getBreakpointMediaQuery(breakpoint)]: controlDefinition.config.getStyle(\n findBreakpointOverride(\n breakpoints,\n styleControlData,\n breakpoint.id,\n mergeOrCoalesceFallbacks,\n )?.value,\n ),\n }\n }, {}),\n }\n}\n\nexport type StyleV2ControlFormattedValue = string\n\nexport function useFormattedStyleV2<T extends StyleV2ControlDefinition>(\n styleControlData: StyleV2ControlData,\n controlDefinition: T,\n): StyleV2ControlFormattedValue {\n const styles = useStyleControlCssObject(styleControlData, controlDefinition)\n\n return useStyle(styles)\n}\n\ntype StyleV2ControlValueProps<T extends StyleV2ControlDefinition> = {\n definition: T\n data: StyleV2ControlData | undefined\n children(value: string): JSX.Element\n control?: StyleV2Control\n}\n\nexport function StyleV2ControlValue<T extends StyleV2ControlDefinition>({\n definition,\n data,\n children,\n control,\n}: StyleV2ControlValueProps<T>): JSX.Element {\n return (data ?? []).reduceRight(\n (renderFn, deviceOverrideData: DeviceOverride<any>) => responsiveValue => {\n return (\n <ControlValue\n definition={definition.config.type}\n data={deviceOverrideData.value}\n control={control?.control}\n >\n {value => renderFn([{ ...deviceOverrideData, value }, ...responsiveValue])}\n </ControlValue>\n )\n },\n (value: StyleV2ControlData) => {\n return (\n <RenderHook\n key={definition.type}\n hook={useFormattedStyleV2}\n parameters={[value, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n },\n )([])\n}\n","import { TextAreaControlData, TextAreaControlDefinition } from '../../../controls'\n\nexport type TextAreaControlValue<T extends TextAreaControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextAreaValue<T extends TextAreaControlDefinition>(\n data: TextAreaControlData | undefined,\n definition: T,\n): TextAreaControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextAreaControlValue<T>\n}\n","import { TextInputControlData, TextInputControlDefinition } from '../../../controls'\n\nexport type TextInputControlValue<T extends TextInputControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextInputValue<T extends TextInputControlDefinition>(\n data: TextInputControlData | undefined,\n definition: T,\n): TextInputControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextInputControlValue<T>\n}\n","import { CSSObject } from '@emotion/serialize'\nimport { TypographyControlData } from '../../../controls/typography'\nimport { useSwatches, useTypography } from '../hooks/makeswift-api'\nimport { useBreakpoints } from '..'\nimport { Typography, Swatch } from '../../../api'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\nimport { ColorValue } from '../../../components/utils/types'\nimport { DeviceOverride, ResponsiveValue } from '../../../prop-controllers'\nimport { findBreakpointOverride, shallowMergeFallbacks } from '../../../state/modules/breakpoints'\nimport { isNonNullable } from '../../../utils/isNonNullable'\nimport { useStyle } from '../use-style'\n\nexport function typographyFragementToTypographyControlData(\n typography: Typography | null,\n): TypographyControlData[number] | undefined {\n if (typography == null) return undefined\n return {\n id: typography.id,\n style: typography.style.map(({ deviceId, value }) => ({\n deviceId,\n value: {\n fontFamily: value.fontFamily ?? undefined,\n lineHeight: value.lineHeight ?? undefined,\n letterSpacing: value.letterSpacing ?? undefined,\n fontWeight: value.fontWeight ?? undefined,\n textAlign: value.textAlign ?? undefined,\n uppercase: value.uppercase ?? undefined,\n underline: value.underline ?? undefined,\n strikethrough: value.strikethrough ?? undefined,\n italic: value.italic ?? undefined,\n fontSize: value.fontSize ?? undefined,\n color: value.color ?? undefined,\n },\n })),\n }\n}\n\ntype EnhancedColor = {\n color?: ColorValue\n}\n\nexport type TypographyControlDataValue = Exclude<\n TypographyControlData[number],\n undefined\n>['style'][number]['value']\n\ntype EnhancedTypographyValue = Omit<TypographyControlDataValue, keyof EnhancedColor> & EnhancedColor\n\nexport type EnhancedTypography = Array<DeviceOverride<EnhancedTypographyValue>>\n\nexport function getTypographyStyleSwatchIds(\n style:\n | Exclude<TypographyControlData[number], undefined>['style']\n | Typography['style']\n | null\n | undefined,\n): string[] {\n return (\n style\n ?.map(override => override.value)\n .flatMap(typographyStyle => typographyStyle.color?.swatchId)\n .filter(isNonNullable) ?? []\n )\n}\n\nconst withColor =\n (swatches: Swatch[]) =>\n (\n deviceRawTypographyValue: DeviceOverride<TypographyControlDataValue>,\n ): DeviceOverride<EnhancedTypographyValue> => {\n const { value, deviceId } = deviceRawTypographyValue\n\n if (value.color == null) {\n const { color, ...nextValue } = value\n return {\n deviceId,\n value: nextValue,\n }\n }\n return {\n deviceId,\n value: {\n ...value,\n color: {\n swatch: swatches.find(s => s && s.id === value.color?.swatchId),\n alpha: value.color?.alpha ?? undefined,\n },\n },\n }\n }\n\nconst getDeviceId = ({ deviceId }: DeviceOverride<unknown>) => deviceId\n\n/**\n * `enhanced` here just means typography ids have been replaced with the related entity.\n */\nexport default function useEnhancedTypography(\n value?: TypographyControlData[number] | null,\n): EnhancedTypography {\n const typography = typographyFragementToTypographyControlData(useTypography(value?.id ?? null))\n const source = typography?.style ?? []\n const override = value?.style ?? []\n const breakpoints = useBreakpoints()\n\n const swatchIds = [\n ...getTypographyStyleSwatchIds(value?.style),\n ...getTypographyStyleSwatchIds(typography?.style),\n ]\n const swatches = useSwatches(swatchIds).filter(isNonNullable)\n\n const enhancedSource = source.map(withColor(swatches))\n const enhancedOverride = override.map(withColor(swatches))\n\n const devices = [\n ...new Set(enhancedSource.map(getDeviceId).concat(enhancedOverride.map(getDeviceId))),\n ]\n\n return devices\n .map(deviceId => {\n const deviceSource = findBreakpointOverride(breakpoints, enhancedSource, deviceId)?.value\n const deviceOverride = findBreakpointOverride(\n breakpoints,\n enhancedOverride,\n deviceId,\n v => v,\n )?.value\n\n if (deviceSource && deviceOverride) {\n return {\n deviceId,\n value: { ...deviceSource, ...deviceOverride },\n }\n } else if (deviceOverride) {\n return {\n deviceId,\n value: deviceOverride,\n }\n } else if (deviceSource) {\n return {\n deviceId,\n value: deviceSource,\n }\n }\n return null\n })\n .filter(isNonNullable)\n}\n\nexport function useTypographyClassName(value: EnhancedTypography): string {\n return useStyle(\n useResponsiveStyle<\n EnhancedTypographyValue,\n [ResponsiveValue<EnhancedTypographyValue> | null | undefined]\n >(\n [value],\n ([value]) => {\n if (value === undefined) return {}\n\n let styles: CSSObject = {}\n if (value.color != null) styles.color = colorToString(value.color)\n if (value.fontFamily != null) styles.fontFamily = value.fontFamily\n if (value.fontSize != null && value.fontSize.value != null && value.fontSize.unit != null)\n styles.fontSize = `${value.fontSize.value}${value.fontSize.unit}`\n if (value.fontWeight != null) styles.fontWeight = value.fontWeight\n if (value.lineHeight != null) styles.lineHeight = value.lineHeight\n if (value.letterSpacing != null) styles.letterSpacing = `${value.letterSpacing / 10}em`\n if (value.uppercase != null)\n styles.textTransform = value.uppercase === true ? 'uppercase' : 'initial'\n if (value.underline != null || value.strikethrough != null)\n styles.textDecoration = [\n Boolean(value.underline) && 'underline',\n Boolean(value.strikethrough) && 'line-through',\n ]\n .filter(Boolean)\n .join(' ')\n if (value.italic != null) styles.fontStyle = value.italic === true ? 'italic' : 'initial'\n\n return styles\n },\n shallowMergeFallbacks,\n ),\n )\n}\n\nexport type TypographyControlValue = string\n\nexport function useTypographyValue(\n data: TypographyControlData[number] | undefined,\n): TypographyControlValue {\n // for each breakpoint fetch related resources and merge its value with its override\n const enhancedTypography = useEnhancedTypography(data)\n\n // for each breakpoint shallow merge back up through the breakpoints and create a className\n return useTypographyClassName(enhancedTypography)\n}\n","import {\n CheckboxControlData,\n CheckboxControlDefinition,\n CheckboxControlType,\n ColorControlData,\n ColorControlDefinition,\n ColorControlType,\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlType,\n ControlDefinition,\n ControlDefinitionData,\n ImageControlData,\n ImageControlDefinition,\n ImageControlType,\n LinkControlData,\n LinkControlDefinition,\n LinkControlType,\n ListControl,\n ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n RichTextControlType,\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControl,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n SlotControl,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n StyleControl,\n StyleControlData,\n StyleControlDefinition,\n StyleControlType,\n StyleV2Control,\n StyleV2ControlData,\n StyleV2ControlDefinition,\n StyleV2ControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n TypographyControlData,\n TypographyControlDefinition,\n TypographyControlType,\n} from '../../../controls'\nimport {\n IconRadioGroupControlData,\n IconRadioGroupControlDefinition,\n IconRadioGroupControlType,\n} from '../../../controls/icon-radio-group'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { RenderHook } from '../components'\nimport { CheckboxControlValue, useCheckboxControlValue } from './checkbox'\nimport { ColorControlValue, useColorValue } from './color'\nimport { ComboboxControlValue, useComboboxControlValue } from './combobox'\nimport { IconRadioGroupControlValue, useIconRadioGroupValue } from './icon-radio-group'\nimport { ResolveImageControlValue, useImageControlValue } from './image'\nimport { LinkControlValue, useLinkControlValue } from './link'\nimport { ListControlValue } from './list'\nimport { NumberControlValue, useNumber } from './number'\nimport { RichTextControlValue, useRichText } from './rich-text/rich-text'\nimport { RichTextV2ControlValue, useRichTextV2 } from './rich-text-v2'\nimport { SelectControlValue, useSelectControlValue } from './select'\nimport { ShapeControlValue } from './shape'\nimport { SlotControlValue, useSlot } from './slot'\nimport { StyleControlFormattedValue, useFormattedStyle } from './style'\nimport { StyleV2ControlFormattedValue, StyleV2ControlValue } from './style-v2'\nimport { TextAreaControlValue, useTextAreaValue } from './text-area'\nimport { TextInputControlValue, useTextInputValue } from './text-input'\nimport { TypographyControlValue, useTypographyValue } from './typography'\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 IconRadioGroupControlDefinition\n ? IconRadioGroupControlValue<T>\n : T extends LinkControlDefinition\n ? LinkControlValue<T>\n : T extends ComboboxControlDefinition\n ? ComboboxControlValue<T>\n : T extends ShapeControlDefinition\n ? ShapeControlValue<T>\n : T extends ListControlDefinition\n ? ListControlValue<T>\n : T extends SlotControlDefinition\n ? SlotControlValue\n : T extends RichTextControlDefinition\n ? RichTextControlValue\n : T extends RichTextV2ControlDefinition\n ? RichTextV2ControlValue\n : T extends StyleControlDefinition\n ? StyleControlFormattedValue\n : T extends StyleV2ControlDefinition\n ? StyleV2ControlFormattedValue\n : T extends TypographyControlDefinition\n ? TypographyControlValue\n : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n control?: AnyPropController\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\n control,\n}: ControlValueProps<T>): JSX.Element {\n switch (definition.type) {\n case CheckboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useCheckboxControlValue}\n parameters={[data as CheckboxControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case NumberControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useNumber}\n parameters={[data as NumberControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextInputControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextInputValue}\n parameters={[data as TextInputControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextAreaControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextAreaValue}\n parameters={[data as TextAreaControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case SelectControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSelectControlValue}\n parameters={[data as SelectControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ColorControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useColorValue}\n parameters={[data as ColorControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case IconRadioGroupControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useIconRadioGroupValue}\n parameters={[data as IconRadioGroupControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ImageControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useImageControlValue}\n parameters={[data as ImageControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case LinkControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useLinkControlValue}\n parameters={[data as LinkControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ComboboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useComboboxControlValue}\n parameters={[data as ComboboxControlData]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ShapeControlType:\n return (\n <ShapeControlValue\n definition={definition}\n data={data as ShapeControlData}\n control={control as ShapeControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue\n definition={definition}\n data={data as ListControlData}\n control={control as ListControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n case StyleV2ControlType:\n return (\n <StyleV2ControlValue\n key={definition.type}\n data={data as StyleV2ControlData}\n definition={definition}\n control={control as StyleV2Control}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </StyleV2ControlValue>\n )\n\n case SlotControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSlot}\n parameters={[data as unknown as SlotControlData, control as SlotControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case RichTextControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useRichText}\n parameters={[data as unknown as RichTextControlData, control as RichTextControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case RichTextV2ControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useRichTextV2}\n parameters={[\n data as unknown as RichTextV2ControlData,\n definition,\n control as RichTextV2Control,\n ]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case StyleControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useFormattedStyle}\n parameters={[data as unknown as StyleControlData, definition, control as StyleControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TypographyControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTypographyValue}\n parameters={[data as unknown as TypographyControlData[number]]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import { 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 useResponsiveBorder,\n useResponsiveBorderRadius,\n useResponsiveMargin,\n useResponsivePadding,\n useResponsiveShadow,\n useResponsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n StyleControl,\n RichTextV2Control,\n RichTextV2ControlType,\n StyleV2ControlType,\n TypographyControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text/rich-text'\nimport { useRichTextV2 } from './controls/rich-text-v2'\nimport { IconRadioGroupControlType } from '../../controls/icon-radio-group'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(useResponsiveWidth(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(useResponsivePadding(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(useResponsiveMargin(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(useResponsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(useResponsiveShadow(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(useResponsiveBorder(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 IconRadioGroupControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n case StyleV2ControlType:\n case TypographyControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType: {\n const control = (propControllers?.[propName] ?? null) as StyleControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextV2ControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextV2Control | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichTextV2}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\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 {\n Component,\n MutableRefObject,\n ReactInstance,\n ReactNode,\n forwardRef,\n useImperativeHandle,\n useRef,\n} from 'react'\nimport { findDOMNode } from 'react-dom'\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberReconciler.new.js#L179-L244\n */\nfunction suppressWarningAndFindDomNode(\n instance: ReactInstance | null | undefined,\n): Element | Text | null {\n const error = console.error\n\n console.error = (...args) => {\n if (typeof args[0] === 'string' && args[0].includes('%s is deprecated in StrictMode.')) return\n\n return error.apply(console, args)\n }\n\n const foundDomNode = findDOMNode(instance)\n\n console.error = error\n\n return foundDomNode\n}\n\ntype FindDomNodeClassComponentProps = {\n innerRef: MutableRefObject<(() => Element | Text | null) | null>\n children?: ReactNode\n}\n\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n constructor(props: FindDomNodeClassComponentProps) {\n super(props)\n\n this.props.innerRef.current = () => suppressWarningAndFindDomNode(this)\n }\n\n render() {\n return <>{this.props.children}</>\n }\n}\n\ntype FindDomNodeProps = {\n children?: ReactNode\n}\n\nexport const FindDomNode = forwardRef<() => Element | Text | null, FindDomNodeProps>(\n function FindDomNode(props, ref) {\n const findDomNodeRef = useRef<() => Element | Text | null>(null)\n\n useImperativeHandle(ref, () => () => findDomNodeRef.current?.() ?? null, [])\n\n return <FindDomNodeClassComponent {...props} innerRef={findDomNodeRef} />\n },\n)\n","import { BoxModel, BoxModelHandle } from '../../box-model'\nimport { Descriptor } from '../../prop-controllers/descriptors'\nimport { DescriptorsPropControllers } from '../../prop-controllers/instances'\nimport { isMeasurable, measure } from '../../state/modules/box-models'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../state/modules/prop-controller-handles'\n\nexport class ElementImperativeHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> implements BoxModelHandle, PropControllersHandle<T>\n{\n private getCurrent: () => unknown = () => null\n private lastPropControllers: DescriptorsPropControllers<T> | null = null\n\n callback(getCurrent: () => unknown) {\n const current = this.getCurrent()\n\n if (current === null) this.setPropControllers(null)\n\n this.getCurrent = getCurrent\n\n if (this.lastPropControllers !== null) this.setPropControllers(this.lastPropControllers)\n }\n\n getBoxModel(): BoxModel | null {\n const current = this.getCurrent()\n\n return isMeasurable(current) ? measure(current) : null\n }\n\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void {\n const current = this.getCurrent()\n\n if (isPropControllersHandle(current)) current.setPropControllers(propControllers)\n\n this.lastPropControllers = propControllers\n }\n\n getDomNode(): Element | null {\n const current = this.getCurrent()\n\n if (isDomNodeHandle(current)) return current.getDomNode()\n\n return current instanceof Element ? current : null\n }\n}\n\ntype DomNodeHandle = {\n getDomNode(): Element | null\n}\n\nexport function isDomNodeHandle(value: unknown): value is DomNodeHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'getDomNode' in value &&\n typeof (value as { getDomNode: unknown }).getDomNode === 'function'\n ) {\n return true\n }\n\n return false\n}\n","'use client'\n\nimport {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useMemo,\n} from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector'\nimport dynamic from 'next/dynamic'\n\nimport * as ReactPage from '../../state/react-page'\nimport type * as ReactBuilderPreview from '../../state/react-builder-preview'\nimport {\n mountComponentEffect,\n registerComponentEffect,\n registerComponentHandleEffect,\n registerReactComponentEffect,\n} from '../../state/actions'\nimport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from '../../prop-controllers'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport { registerBuiltinComponents } from '../../components/builtin/register'\nimport { MakeswiftClient } from '../../api/react'\nimport { FallbackComponent } from '../../components/shared/FallbackComponent'\nimport { PropsValue } from './controls'\nimport { FindDomNode } from './find-dom-node'\nimport { useGlobalElement, useLocalizedGlobalElement } from './hooks/makeswift-api'\nimport { ElementImperativeHandle } from './element-imperative-handle'\nimport { BuilderEditMode } from '../../state/modules/builder-edit-mode'\nimport {\n Breakpoints,\n BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nexport class ReactRuntime {\n // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.\n // We will remove them when we release a new breaking change.\n // ------------------ Deprecated API ------------------ //\n static store = ReactPage.configureStore()\n static registerComponent<\n P extends Record<string, PropControllerDescriptor>,\n C extends ReactPage.ComponentType<{ [K in keyof P]: PropControllerDescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Code,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ReactPage.ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n static copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ): ReactPage.Element {\n return ReactPage.copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n static getBreakpoints(): Breakpoints {\n return ReactPage.getBreakpoints(this.store.getState())\n }\n\n static getTranslatableData(elementTree: ReactPage.ElementData): Record<string, ReactPage.Data> {\n return ReactPage.getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n static mergeTranslatedData(\n elementTree: ReactPage.ElementData,\n translatedData: Record<string, ReactPage.Data>,\n ): ReactPage.Element {\n return ReactPage.mergeElementTreeTranslatedData(\n this.store.getState(),\n elementTree,\n translatedData,\n )\n }\n // ------------------ Deprecated API ends here ------------------ //\n\n store: ReactPage.Store\n\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 {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.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 ): ReactPage.Element {\n return ReactPage.copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n getBreakpoints(): Breakpoints {\n return ReactPage.getBreakpoints(this.store.getState())\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n this.store = ReactPage.configureStore({\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n\n registerBuiltinComponents(this)\n }\n\n getTranslatableData(elementTree: ReactPage.ElementData): Record<string, ReactPage.Data> {\n return ReactPage.getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n mergeTranslatedData(\n elementTree: ReactPage.ElementData,\n translatedData: Record<string, ReactPage.Data>,\n ): ReactPage.Element {\n return ReactPage.mergeElementTreeTranslatedData(\n this.store.getState(),\n elementTree,\n translatedData,\n )\n }\n}\n\n// TODO: We should delete this once we remove the static methods in ReactRuntime.\nregisterBuiltinComponents(ReactRuntime)\n\nexport const StoreContext = createContext(ReactRuntime.store)\n\ntype RuntimeProviderProps = {\n client: MakeswiftClient\n preview: boolean\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nconst PreviewProvider = dynamic(() => import('./components/PreviewProvider'))\nconst LiveProvider = dynamic(() => import('./components/LiveProvider'))\n\nexport function RuntimeProvider({ preview, ...props }: RuntimeProviderProps): JSX.Element {\n return preview ? <PreviewProvider {...props} /> : <LiveProvider {...props} />\n}\n\nconst PageContext = createContext<string | null>(null)\n\nfunction usePageIdOrNull(): string | null {\n return useContext(PageContext)\n}\n\nexport function usePageId(): string {\n const pageIdOrNull = usePageIdOrNull()\n\n if (pageIdOrNull == null) throw new Error('`usePageId` must be used with `<PageProvider>`')\n\n return pageIdOrNull\n}\n\ntype PageProviderProps = {\n id: string\n children: ComponentPropsWithoutRef<typeof PageContext['Provider']>['children']\n}\n\nexport function PageProvider({ id, children }: PageProviderProps) {\n return <PageContext.Provider value={id}>{children}</PageContext.Provider>\n}\n\nconst DocumentContext = createContext<string | null>(null)\n\nexport function useDocumentKey(): string | null {\n return useContext(DocumentContext)\n}\n\n/**\n * @note Instead of leveraging `DocumentContext` to detect cycles we have to use a separate\n * construct because not all global element documents are wrapped in `DocumentContext.Provider`. The\n * reason for this is to maintain legacy behavior where we don't register the elements in a global\n * element's document so that they're not selectable. This is clearly suboptimal and the ideal\n * scenario would be to have the builder be aware of multiple documents and only show telegraphs\n * for the document that's currently \"active\".\n */\nconst DocumentCyclesContext = createContext<string[]>([])\n\ntype State = ReactPage.State | ReactBuilderPreview.State\n\nexport function useStore(): ReactPage.Store {\n return useContext(StoreContext)\n}\n\nexport function useSelector<R>(selector: (state: State) => R): R {\n const store = useStore()\n\n return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, selector)\n}\n\nfunction useComponent(type: string): ReactPage.ComponentType | null {\n return useSelector(state => ReactPage.getReactComponent(state, type))\n}\n\nexport function useElementId(elementKey: string | null | undefined): string | null {\n const documentKey = useDocumentKey()\n\n return useSelector(state =>\n documentKey == null || elementKey == null\n ? null\n : ReactPage.getElementId(state, documentKey, elementKey),\n )\n}\n\nfunction useDocument(documentKey: string): ReactPage.Document | null {\n return useSelector(state => ReactPage.getDocument(state, documentKey))\n}\n\nexport function useIsInBuilder(): boolean {\n return useSelector(state => ReactPage.getIsInBuilder(state))\n}\n\nexport function useIsPreview(): boolean {\n return useSelector(state => ReactPage.getIsPreview(state))\n}\n\nexport function useBuilderEditMode(): BuilderEditMode | null {\n return useSelector(state => ReactPage.getBuilderEditMode(state))\n}\n\nexport function useBreakpoints(): Breakpoints {\n return useSelector(state => ReactPage.getBreakpoints(state))\n}\n\ntype Dispatch = ReactPage.Dispatch & ReactBuilderPreview.Dispatch\n\nfunction useDispatch(): Dispatch {\n const store = useContext(StoreContext)\n\n return store.dispatch\n}\n\nconst originalError = console.error\nlet patched = false\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberBeginWork.new.js#L1814-L1890\n */\nfunction suppressRefWarning(ownerName: string): void {\n if (patched === false) {\n console.error = (...args) => {\n if (\n typeof args[0] === 'string' &&\n args[0].includes('Function components cannot be given refs.') &&\n args[0].includes(`Check the render method of \\`${ownerName}\\`.`)\n ) {\n return\n }\n\n return originalError(...args)\n }\n\n patched = true\n }\n}\n\ntype ElementDataProps = {\n elementData: ReactPage.ElementData\n}\n\nconst ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={ref} />}\n </PropsValue>\n </Suspense>\n )\n }),\n)\n\nconst DisableRegisterElement = createContext(false)\n\ntype ElementRefereceProps = {\n elementReference: ReactPage.ElementReference\n}\n\nconst ElementReference = memo(\n forwardRef(function ElementReference(\n { elementReference }: ElementRefereceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const globalElement = useGlobalElement(elementReference.value)\n // Update the logic here when we can merge element trees\n const localizedGlobalElement = useLocalizedGlobalElement(elementReference.value)\n const globalElementData = (localizedGlobalElement?.data ?? globalElement?.data) as\n | ReactPage.ElementData\n | undefined\n const elementReferenceDocument = useDocument(elementReference.key)\n const documentKey = elementReference.key\n const documentKeys = useContext(DocumentCyclesContext)\n const providedDocumentKeys = useMemo(\n () => [...documentKeys, documentKey],\n [documentKeys, documentKey],\n )\n\n if (globalElementData == null) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component doesn't exist\"\n />\n )\n }\n\n if (documentKeys.includes(documentKey)) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component contains itself!\"\n />\n )\n }\n\n return (\n <DocumentCyclesContext.Provider value={providedDocumentKeys}>\n {elementReferenceDocument != null ? (\n <Document document={elementReferenceDocument} ref={ref} />\n ) : (\n <DisableRegisterElement.Provider value={true}>\n <ElementData elementData={globalElementData} ref={ref} />\n </DisableRegisterElement.Provider>\n )}\n </DocumentCyclesContext.Provider>\n )\n }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: ElementProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(\n registerComponentHandleEffect(documentKey, elementKey, imperativeHandleRef.current),\n )\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return (\n <FindDomNode ref={findDomNodeCallbackRef}>\n {ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={elementCallbackRef} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={elementCallbackRef} elementData={element} />\n )}\n </FindDomNode>\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentContext.Provider value={document.key}>\n <Element ref={ref} element={document.rootElement} />\n </DocumentContext.Provider>\n )\n }),\n)\n\ntype DocumentReferenceProps = {\n documentReference: ReactPage.DocumentReference\n}\n\nexport const DocumentReference = memo(\n forwardRef(function DocumentReference(\n { documentReference }: DocumentReferenceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const document = useDocument(documentReference.key)\n\n if (document == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Document not found\" />\n }\n\n return <Document ref={ref} document={document} />\n }),\n)\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","getAPIResource","APIResources.reducer","APIResources.getHasAPIResource","APIResources.getAPIResource","APIResources.getInitialState","MakeswiftClient","constructor","uri","cacheData","localizedResourcesMap","locale","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","Map","Object","entries","readSwatch","swatchId","getState","APIResourceType","Swatch","fetchSwatch","dispatch","readFile","fileId","File","fetchFile","readTypography","typographyId","Typography","fetchTypography","readGlobalElement","globalElementId","GlobalElement","fetchGlobalElement","readLocalizedGlobalElement","localizedGlobalElementId","getLocalizedResourceId","LocalizedGlobalElement","fetchLocalizedGlobalElement","noLocalizedResource","cacheResult","result","setLocalizedResourceId","resourceId","localizedResourceId","id","readPagePathnameSlice","pageId","PagePathnameSlice","fetchPagePathnameSlice","readTable","tableId","Table","fetchTable","createTableRecord","columns","request","CreateTableRecordMutation","input","data","readSite","siteId","Site","readPage","Page","readSnippet","snippetId","Snippet","get","set","Context","createContext","useContext","client","children","_jsx","SnippetLocation","Body","Head","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","props","filterUsedSnippetProperties","builderEnabled","liveEnabled","location","page","isInBuilder","useIsInBuilder","snippets","setSnippets","useState","cachedPage","useCachedPage","oldSnippets","newSnippets","deepEqual","site","useCachedSite","baseLocalizedPage","localizedPages","find","parentId","favicon","meta","title","description","keywords","socialImage","canonicalUrl","seo","isIndexingBlocked","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","documentId","elementTreeId","_Fragment","_jsxs","snippetToElement","child","includes","createDocumentReference","useMakeswiftClient","getSnapshot","useSyncExternalStore","makeswiftSiteVersionSchema","z","enum","MakeswiftSiteVersion","Enum","makeswiftPreviewDataSchema","object","makeswift","literal","siteVersion","previewData","safeParse","success","isPreview","appOrigin","previewModeScript","makeswiftConnectionCheckScript","ActionTypes","MAKESWIFT_CONNECTION_INIT","MAKESWIFT_CONNECTION_CHECK","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","matchPattern","manifest","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","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","params","path","split","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","notFound","revalidate","memo","runtime","href","Intl","Locale","undefined","rootElements","localizedPage","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","uuid","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","joinResponsiveValues","useStyleControlCssObject","Color","match","definition","control","controls","setControls","setItemsControl","reduce","renderFn","item","listControlValue","config","EditableText","forwardNextDynamicRef","patch","dynamic","ReadOnlyText","textCallbackRef","useCallback","handle","isPropControllersHandle","setPropControllers","useIsPreview","ReadOnlyTextV1","isRichTextV1Data","reduceRight","controlDefinition","shapeControlValue","elements","length","i","Element","as","className","restOfProps","As","setElement","baseClassName","flexWrap","pollBoxModel","onBoxModelChange","boxModel","changeContainerBoxModel","cx","Slot","Placeholder","SlotPlaceholder","Item","SlotItem","grid","index","useResponsiveStyle","count","spans","rowIndex","columnIndex","getIndexes","span","flexBasis","toFixed","minWidth","changeItemBoxModel","background","overflow","styleControlData","breakpoints","useBreakpoints","getStyle","findBreakpointOverride","getBaseBreakpoint","mergeOrCoalesceFallbacks","breakpoint","getBreakpointMediaQuery","deviceOverrideData","responsiveValue","useFormattedStyleV2","isNonNullable","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","IconRadioGroupControlType","useIconRadioGroupValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","ShapeControlType","ListControlType","StyleV2ControlType","SlotControlType","useSlot","RichTextControlType","useRichText","RichTextV2ControlType","useRichTextV2","StyleControlType","useFormattedStyle","TypographyControlType","useTypographyValue","descriptor","useResponsiveWidth","options","defaultValue","useResponsivePadding","useResponsiveMargin","useResponsiveBorderRadius","shadowValue","useBoxShadow","useResponsiveShadow","borderData","useBorderData","useResponsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","propName","propsValue","Props","Width","format","WidthPropControllerFormat","ClassName","useWidthStyle","Padding","PaddingPropControllerFormat","usePaddingStyle","Margin","MarginPropControllerFormat","useMarginStyle","BorderRadius","BorderRadiusPropControllerFormat","useBorderRadiusStyle","Shadows","ShadowsPropControllerFormat","useShadowsStyle","Border","BorderPropControllerFormat","useBorderStyle","ResponsiveColor","useResponsiveColor","instance","args","apply","foundDomNode","findDOMNode","FindDomNodeClassComponent","Component","innerRef","suppressWarningAndFindDomNode","FindDomNode","findDomNodeRef","ReactRuntime","parseBreakpointsInput","registerBuiltinComponents","registerComponent","component","label","icon","ComponentIcon","Code","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","getBreakpoints","getTranslatableData","mergeTranslatedData","translatedData","Cube","StoreContext","PreviewProvider","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","DocumentCyclesContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","localizedGlobalElement","useLocalizedGlobalElement","globalElementData","elementReferenceDocument","useDocument","documentKeys","providedDocumentKeys","useDispatch","useFindDomNodeRef","imperativeHandleRef","ElementImperativeHandle","findDomNodeCallbackRef","callback","elementCallbackRef","isRegisterElementDisabled","useImperativeHandle","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/state/modules/api-resources.ts","../src/state/makeswift-api-client.ts","../src/api/graphql/client.ts","../src/api/graphql/documents/fragments.ts","../src/api/graphql/documents/queries.ts","../src/api/react.tsx","../src/components/page/Page.tsx","../src/next/preview-mode.tsx","../src/next/client.ts","../src/next/document.tsx","../src/next/api-handler/handlers/element-tree.ts","../src/next/api-handler/handlers/fonts.ts","../src/next/api-handler/handlers/manifest.ts","../src/next/api-handler/handlers/proxy-preview-mode.ts","../src/utils/isErrorWithMessage.ts","../src/next/api-handler/handlers/revalidate.ts","../src/next/api-handler/handlers/translatable-data.ts","../src/next/api-handler/handlers/merge-translated-data.ts","../src/next/api-handler/index.ts","../src/next/dynamic.tsx","../src/next/index.tsx","../src/components/builtin/Box/constants.ts","../src/components/builtin/Box/register.ts","../src/components/builtin/Button/register.ts","../src/components/builtin/Carousel/register.ts","../src/components/builtin/Countdown/register.ts","../src/components/builtin/Divider/register.ts","../src/components/builtin/Embed/register.ts","../src/components/builtin/Form/context/FormContext.ts","../src/components/builtin/Form/register.ts","../src/components/builtin/Image/register.ts","../src/components/builtin/Navigation/register.ts","../src/components/builtin/Root/register.ts","../src/components/builtin/SocialLinks/register.ts","../src/components/builtin/Text/register.ts","../src/components/builtin/Video/register.ts","../src/components/builtin/register.ts","../src/components/icons/warning-20.svg","../src/components/shared/FallbackComponent/FallbackComponent.tsx","../src/components/utils/isNonNullable.ts","../src/runtimes/react/hooks/makeswift-api.ts","../src/components/hooks/useBorder.ts","../src/components/hooks/useBoxShadow.ts","../src/components/hooks/useResponsiveColor.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/icon-radio-group.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/rich-text/rich-text.tsx","../src/runtimes/react/controls/rich-text-v2/rich-text-v2.tsx","../src/runtimes/react/controls/select.ts","../src/runtimes/react/controls/shape.tsx","../src/runtimes/react/poll-box-model.ts","../src/runtimes/react/controls/slot.tsx","../src/runtimes/react/controls/style-v2.tsx","../src/runtimes/react/controls/text-area.ts","../src/runtimes/react/controls/text-input.ts","../src/runtimes/react/controls/typography.ts","../src/runtimes/react/controls/control.tsx","../src/runtimes/react/controls.tsx","../src/runtimes/react/find-dom-node.tsx","../src/runtimes/react/element-imperative-handle.ts","../src/runtimes/react/index.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { APIResource, APIResourceType } from '../../api'\nimport deepEqual from '../../utils/deepEqual'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<APIResourceType, Map<string, APIResource | null>>\n\nexport type SerializedState = {\n [key in APIResourceType]?: {\n id: string\n value: Extract<APIResource, { __typename: key }> | null\n }[]\n}\n\nexport function getInitialState(\n serializedState: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n },\n): State {\n return new Map(\n Object.entries(serializedState).map(([apiResourceType, resources]) => [\n apiResourceType,\n new Map(resources.map(({ id, value }) => [id, value])),\n ]),\n ) as State\n}\n\nexport function getSerializedState(state: State): SerializedState {\n const resourceMap: SerializedState = {\n Swatch: [],\n File: [],\n Typography: [],\n PagePathnameSlice: [],\n GlobalElement: [],\n Table: [],\n Snippet: [],\n Page: [],\n Site: [],\n LocalizedGlobalElement: [],\n }\n\n Array.from(state.entries()).forEach(([resourceType, resources]) => {\n const particularResourceMap: { id: string; value: any }[] = []\n\n Array.from(resources.entries()).forEach(([id, value]) => {\n if (value != null) {\n particularResourceMap.push({ id, value })\n }\n })\n\n resourceMap[resourceType] = particularResourceMap\n })\n\n return resourceMap\n}\n\nexport function getHasAPIResource(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n): boolean {\n return state.get(resourceType)?.has(resourceId) ?? false\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n): Extract<APIResource, { __typename: T }> | null {\n const resource = state.get(resourceType)?.get(resourceId)\n\n return resource?.__typename === resourceType\n ? (resource as Extract<typeof resource, { __typename: T }>)\n : null\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.API_RESOURCE_FULFILLED: {\n const { resourceType, resourceId, resource } = action.payload\n\n return new Map(state).set(\n resourceType,\n new Map(state.get(resourceType)!).set(resourceId, resource),\n )\n }\n\n case ActionTypes.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","import { applyMiddleware, createStore, Store as ReduxStore } from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\n\nimport * as APIResources from './modules/api-resources'\nimport { Action, apiResourceFulfilled } from './actions'\nimport {\n APIResource,\n APIResourceType,\n Swatch,\n File,\n Typography,\n GlobalElement,\n PagePathnameSlice,\n Table,\n LocalizedGlobalElement,\n} from '../api'\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, unknown, Action>\n\nasync function fetchJson<T>(url: string): Promise<T | null> {\n const response = await fetch(url, {\n headers: { 'Content-Type': 'application/json' },\n })\n\n if (response.status === 404) return null\n\n if (!response.ok) throw new Error(response.statusText)\n\n if (response.headers.get('content-type')?.includes('application/json') !== true) {\n throw new Error(\n `Expected JSON response from \"${url}\" but got \"${response.headers.get('content-type')}\"`,\n )\n }\n\n return response.json()\n}\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n locale?: Intl.Locale,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n return async (dispatch, getState) => {\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 = await fetchJson<Swatch>(`/api/makeswift/swatches/${resourceId}`)\n break\n\n case APIResourceType.File:\n resource = await fetchJson<File>(`/api/makeswift/files/${resourceId}`)\n break\n\n case APIResourceType.Typography:\n resource = await fetchJson<Typography>(`/api/makeswift/typographies/${resourceId}`)\n break\n\n case APIResourceType.GlobalElement:\n resource = await fetchJson<GlobalElement>(`/api/makeswift/global-elements/${resourceId}`)\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n resource = await fetchJson<LocalizedGlobalElement>(\n `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,\n )\n break\n }\n\n case APIResourceType.PagePathnameSlice: {\n const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, 'http://n')\n\n if (locale != null) url.searchParams.set('locale', locale.toString())\n\n resource = await fetchJson<PagePathnameSlice>(url.pathname + url.search)\n break\n }\n\n case APIResourceType.Table:\n resource = await fetchJson<Table>(`/api/makeswift/tables/${resourceId}`)\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 type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({ serializedState }: { serializedState?: SerializedState }): Store {\n return createStore(reducer, APIResources.getInitialState(serializedState), applyMiddleware(thunk))\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","/**\n * We _cannot_ interpolate fragments into other fragments. Doing so results in a document with\n * multiple fragment definitions, which is ambiguous when attempting to read a fragment from the\n * cache. This ambiguity results in an error being thrown by `@apollo/client` in the Makeswift\n * builder when attempting to send API resources to the host's runtime.\n */\n\nexport const SwatchFragment = /* GraphQL */ `\n fragment Swatch on Swatch {\n __typename\n id\n hue\n saturation\n lightness\n }\n`\n\nexport const FileFragment = /* GraphQL */ `\n fragment File on File {\n __typename\n id\n name\n publicUrl: publicUrlV2\n extension\n dimensions {\n width\n height\n }\n }\n`\n\nexport const TypographyFragment = /* GraphQL */ `\n fragment Typography on Typography {\n __typename\n id\n name\n style {\n deviceId\n value {\n fontFamily\n fontSize {\n value\n unit\n }\n color {\n swatchId\n alpha\n }\n lineHeight\n letterSpacing\n fontWeight\n textAlign\n uppercase\n underline\n strikethrough\n italic\n }\n }\n }\n`\n\nexport const PagePathnameSliceFragment = /* GraphQL */ `\n fragment PagePathnameSlice on PagePathnameSlice {\n __typename\n id\n pathname\n }\n`\n\nexport const GlobalElementFragment = /* GraphQL */ `\n fragment GlobalElement on GlobalElement {\n __typename\n id\n data\n }\n`\n\nexport const LocalizedGlobalElementFragment = /* GraphQL */ `\n fragment LocalizedGlobalElement on LocalizedGlobalElement {\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 SwatchFragment,\n TableFragment,\n TypographyFragment,\n} from './fragments'\n\nexport const IntrospectedResourcesQuery = /* GraphQL */ `\n query IntrospectedResources($fileIds: [ID!]!, $tableIds: [ID!]!) {\n files(ids: $fileIds) {\n ...File\n }\n\n tables(ids: $tableIds) {\n ...Table\n }\n }\n\n ${FileFragment}\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 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","'use client'\n\nimport { createContext, ReactNode, useContext } from 'react'\n\nimport * as MakeswiftApiClient from '../state/makeswift-api-client'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\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 SerializedLocalizedResourcesMap = {\n [resourceId: string]: string | null\n}\n\ntype LocalizedResourcesMap = Map<string, string | null>\n\nexport type CacheData = MakeswiftApiClient.SerializedState\n\nexport type MakeswiftClientOptions = {\n uri: string\n cacheData?: CacheData\n localizedResourcesMap?: SerializedLocalizedResourcesMap\n locale?: Intl.Locale\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 private localizedResourcesMap: LocalizedResourcesMap\n private locale: Intl.Locale | undefined\n\n constructor({ uri, cacheData, localizedResourcesMap = {}, locale }: MakeswiftClientOptions) {\n this.graphqlClient = new GraphQLClient(uri)\n this.makeswiftApiClient = MakeswiftApiClient.configureStore({ serializedState: cacheData })\n this.subscribe = this.makeswiftApiClient.subscribe\n this.localizedResourcesMap = new Map(Object.entries(localizedResourcesMap))\n this.locale = locale\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 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 readLocalizedGlobalElement(globalElementId: string): LocalizedGlobalElement | null {\n const localizedGlobalElementId = this.getLocalizedResourceId(globalElementId)\n\n if (localizedGlobalElementId == null) return null\n\n return MakeswiftApiClient.getAPIResource(\n this.makeswiftApiClient.getState(),\n APIResourceType.LocalizedGlobalElement,\n localizedGlobalElementId,\n )\n }\n\n async fetchLocalizedGlobalElement(\n globalElementId: string,\n ): Promise<LocalizedGlobalElement | null> {\n const locale = this.locale\n\n if (locale == null) return null\n\n // If getLocalizedResourceId returns null, it means we have tried to fetch the resource,\n // but the resource is not available. If we haven't fetched it yet, it'll return undefined.\n const noLocalizedResource = this.getLocalizedResourceId(globalElementId) === null\n\n if (noLocalizedResource) return null\n\n // TODO(fikri): We're checking the cache here because the cache hit will fail on fetchAPIResource.\n // This is because in the cache we're saving the ID of the localizedGlobalElementId,\n // but we're reading the cache using the globalElementId.\n // This is very confusing and it can lead to more bugs. We need to refactor how we handle\n // localized global element.\n const cacheResult = this.readLocalizedGlobalElement(globalElementId)\n\n if (cacheResult) return cacheResult\n\n const result = await this.makeswiftApiClient.dispatch(\n MakeswiftApiClient.fetchAPIResource(\n APIResourceType.LocalizedGlobalElement,\n globalElementId,\n locale,\n ),\n )\n\n this.setLocalizedResourceId({\n resourceId: globalElementId,\n localizedResourceId: result?.id ?? null,\n })\n\n return result\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, this.locale),\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 private getLocalizedResourceId(resourceId: string): string | undefined | null {\n return this.localizedResourcesMap?.get(resourceId)\n }\n\n setLocalizedResourceId({\n resourceId,\n localizedResourceId,\n }: {\n resourceId: string\n localizedResourceId: string | null\n }): void {\n this.localizedResourcesMap.set(resourceId, localizedResourceId)\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","'use client'\n\nimport { 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 baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null)\n const favicon = page.meta.favicon ?? defaultFavicon\n const title = baseLocalizedPage?.meta.title ?? page.meta.title\n const description = baseLocalizedPage?.meta.description ?? page.meta.description\n const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords\n const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage\n const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl\n const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked\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 const documentId = baseLocalizedPage?.elementTreeId ?? page.id\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(documentId)} />\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 { PreviewData } from 'next'\nimport { z } from 'zod'\nimport { ActionTypes } from '../react'\n\nconst makeswiftSiteVersionSchema = z.enum(['Live', 'Working'])\nexport const MakeswiftSiteVersion = makeswiftSiteVersionSchema.Enum\nexport type MakeswiftSiteVersion = z.infer<typeof makeswiftSiteVersionSchema>\n\nconst makeswiftPreviewDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\nexport type MakeswiftPreviewData = z.infer<typeof makeswiftPreviewDataSchema>\n\nexport function getMakeswiftSiteVersion(previewData: PreviewData): MakeswiftSiteVersion | null {\n const result = makeswiftPreviewDataSchema.safeParse(previewData)\n\n if (result.success) return result.data.siteVersion\n\n return null\n}\n\ntype Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const previewModeScript = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(resource, options) {\n const request = new Request(resource, options)\n\n if (new URL(request.url).origin !== window.location.origin) {\n return originalFetch.call(this, resource, options)\n }\n\n return originalFetch.call(\n this,\n new Request(request, { headers: { [headerName]: secret } }),\n )\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n const makeswiftConnectionCheckScript = `\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (\n event.origin === appOrigin && \n event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'\n ) {\n setInterval(() => {\n window.parent.postMessage({ \n type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',\n payload: { \n currentUrl: window.location.href \n }\n }, appOrigin)\n }, 20)\n }\n })\n\n window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)\n}\n`\n\n return (\n <>\n <script\n id=\"makeswift-preview-mode\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: previewModeScript }}\n />\n <script\n id=\"makeswift-connection-check\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: makeswiftConnectionCheckScript }}\n />\n </>\n )\n}\n","import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\nimport { CacheData, SerializedLocalizedResourcesMap } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n Element,\n ElementData,\n getPropControllerDescriptors,\n isElementReference,\n Data,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\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: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: CacheData\n preview: boolean\n localizedResourcesMap: SerializedLocalizedResourcesMap\n locale: string | null\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime?: ReactRuntime\n siteVersion?: MakeswiftSiteVersion\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n private siteVersion: MakeswiftSiteVersion | null\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n constructor(\n apiKey: string,\n {\n apiOrigin = 'https://api.makeswift.com',\n runtime = ReactRuntime,\n siteVersion,\n }: MakeswiftConfig = {},\n ) {\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 this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n this.siteVersion = siteVersion ?? null\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: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': this.siteVersion ?? MakeswiftSiteVersion.Live,\n ...init?.headers,\n },\n })\n\n return response\n }\n\n async getPages(): Promise<MakeswiftPage[]> {\n const response = await this.fetch(`/${this.siteVersion == null ? 'v2' : 'v3'}/pages`, {\n headers: {\n 'Makeswift-Site-Version': MakeswiftSiteVersion.Live,\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get pages', await response.json())\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 async getPage(\n pathname: string,\n {\n preview: previewOverride = false,\n locale: localeInput,\n }: { preview?: boolean; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const siteVersion =\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live)\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/pages/${encodeURIComponent(pathname)}`,\n this.apiOrigin,\n )\n if (localeInput) url.searchParams.set('locale', localeInput)\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: { 'Makeswift-Site-Version': siteVersion },\n })\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n preview: boolean,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/typographies/bulk`,\n this.apiOrigin,\n )\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ?? (preview ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get typographies', await response.json())\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(ids: string[], preview: boolean): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`${this.siteVersion == null ? 'v1' : 'v2'}/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ?? (preview ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get swatches', await response.json())\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n preview: boolean,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, preview)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n preview: boolean,\n locale?: string,\n ): Promise<{ cacheData: CacheData; localizedResourcesMap: SerializedLocalizedResourcesMap }> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.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 const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n )\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement?.id ?? null)\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\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 getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], preview)\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 const pagePathnames = await this.getPagePathnameSlices([...pageIds], { preview, locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n preview,\n )\n\n const cacheData = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n }),\n ),\n }\n\n return { cacheData, localizedResourcesMap: Object.fromEntries(localizedResourcesMap.entries()) }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n preview: previewOverride = false,\n locale: localeInput,\n }: { preview?: boolean; locale?: string } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const siteVersion =\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live)\n\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\n const response = await this.fetch(\n `/${this.siteVersion == null ? 'v2' : 'v3'}/pages/${encodeURIComponent(\n pathname,\n )}/document?${searchParams.toString()}`,\n {\n headers: { 'Makeswift-Site-Version': siteVersion },\n },\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n // We're using the locale from the response instead from the arg because in the server\n // we make the locale null if the locale === defaultLocale.\n const locale = document.locale\n\n const { cacheData, localizedResourcesMap } = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n previewOverride,\n locale ?? undefined,\n )\n const apiOrigin = this.apiOrigin.href\n const preview = siteVersion === MakeswiftSiteVersion.Working\n\n return {\n document,\n cacheData,\n apiOrigin,\n preview,\n localizedResourcesMap,\n locale,\n }\n }\n\n async getSwatch(swatchId: string): Promise<Swatch | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/swatches/${swatchId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get swatch', await response.json())\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(typographyId: string): Promise<Typography | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/typographies/${typographyId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get typography', await response.json())\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(globalElementId: string): Promise<GlobalElement | null> {\n const response = await this.fetch(\n `${this.siteVersion == null ? 'v1' : 'v2'}/global-elements/${globalElementId}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get global element', await response.json())\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `${\n this.siteVersion == null ? 'v1' : 'v2'\n }/localized-global-elements/${globalElementId}?locale=${locale}`,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get localized global element', await response.json())\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n { preview: previewOverride = false, locale }: { preview?: boolean; locale?: string } = {},\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(\n `${this.siteVersion == null ? 'v1' : 'v2'}/page-pathname-slices/bulk`,\n this.apiOrigin,\n )\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, {\n headers: {\n 'Makeswift-Site-Version':\n this.siteVersion ??\n (previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live),\n },\n })\n\n if (!response.ok) {\n console.error('Failed to get page pathname slices', await response.json())\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n id: pagePathnameSlice.basePageId,\n pathname: pagePathnameSlice.pathname,\n __typename: pagePathnameSlice.__typename,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n { preview = false, locale }: { preview?: boolean; locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], { preview, locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap', await response.json())\n throw new Error(`Failed to get sitemap with error: \"${response.statusText}\"`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n","'use client'\n\nimport { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { ReactRuntime } from '../../../react'\nimport { Element } from '../../../state/react-page'\n\ntype ElementTreeResult = { elementTree: Element }\n\ntype ElementTreeError = { message: string }\n\nexport type ElementTreeResponse = ElementTreeResult | ElementTreeError\n\nexport default async function elementTree(\n req: NextApiRequest,\n res: NextApiResponse<ElementTreeResponse>,\n): Promise<void> {\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","import { NextApiRequest, NextApiResponse } from 'next'\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\nexport type Font = {\n family: string\n label?: string\n variants: FontVariant[]\n}\n\ntype Fonts = Font[]\n\nexport type GetFonts = () => Fonts | Promise<Fonts>\n\nexport type FontsResponse = Fonts\n\nexport default async function fonts(\n _req: NextApiRequest,\n res: NextApiResponse<FontsResponse>,\n { getFonts }: { getFonts?: GetFonts } = {},\n): Promise<void> {\n const fonts = (await getFonts?.()) ?? []\n\n return res.json(fonts)\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { version } from '../../../../package.json'\n\nexport type Manifest = {\n version: string\n previewMode: boolean\n interactionMode: boolean\n clientSideNavigation: boolean\n elementFromPoint: boolean\n customBreakpoints: boolean\n siteVersions: boolean\n unstable_siteVersions: boolean\n localizedPageSSR: boolean\n}\n\ntype ManifestError = { message: string }\n\nexport type ManifestResponse = Manifest | ManifestError\n\nexport default async function handler(\n req: NextApiRequest,\n res: NextApiResponse<ManifestResponse>,\n { apiKey, siteVersions }: { apiKey: string; siteVersions: boolean },\n): Promise<void> {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n return res.json({\n version,\n previewMode: true,\n interactionMode: true,\n clientSideNavigation: true,\n elementFromPoint: false,\n customBreakpoints: true,\n siteVersions,\n unstable_siteVersions: siteVersions,\n localizedPageSSR: true,\n })\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { MakeswiftPreviewData, MakeswiftSiteVersion } from '../../preview-mode'\n\ntype ProxyPreviewModeError = string\n\nexport type ProxyPreviewModeResponse = ProxyPreviewModeError\n\nexport default async function proxyPreviewMode(\n req: NextApiRequest,\n res: NextApiResponse<ProxyPreviewModeError>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n const previewModeProxy = createProxyServer()\n\n // TODO: This is a hack to get the locale from the request.\n // Next.js strips the locale from the req.url, and there's no official way to get the locale\n // from an API route: https://github.com/vercel/next.js/discussions/21798.\n // The current workaround is to get the locale from an internal object: RequestMeta,\n // https://github.com/vercel/next.js/blob/a0d1d728b9003f12c9df6c5e9a33bc4c33cef0ab/packages/next/src/server/request-meta.ts\n // One possible way to properly fix this is by updating how we do preview mode. For example,\n // by using partitioned cookies instead of a proxy.\n const NextRequestMetaSymbol = Reflect.ownKeys(req).find(\n key =>\n key.toString() === 'Symbol(NextRequestMeta)' ||\n key.toString() === 'Symbol(NextInternalRequestMeta)',\n ) as keyof NextApiRequest | undefined\n if (NextRequestMetaSymbol) {\n const nextRequestMeta = req[NextRequestMetaSymbol]\n const initUrl = nextRequestMeta?.__NEXT_INIT_URL ?? nextRequestMeta?.initURL\n const isLocaleStripped =\n nextRequestMeta?.__nextStrippedLocale ?? nextRequestMeta?.didStripLocale\n\n try {\n if (isLocaleStripped && initUrl) req.url = new URL(initUrl).pathname\n } catch {}\n }\n\n previewModeProxy.once('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n // The following headers are Next.js-specific and are removed to prevent Next.js from\n // short-circuiting requests, breaking routing.\n proxyReq.removeHeader('X-Invoke-Path')\n proxyReq.removeHeader('X-Invoke-Query')\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 (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n const originalCookies = req.headers.cookie\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProtoHeader = req.headers['x-forwarded-proto']\n\n let forwardedProto: string[] = []\n if (Array.isArray(forwardedProtoHeader)) {\n forwardedProto = forwardedProtoHeader\n } else if (typeof forwardedProtoHeader === 'string') {\n forwardedProto = forwardedProtoHeader.split(',')\n }\n\n const isForwardedProtoHttps = forwardedProto.includes('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 // If the user generates a locally-trusted CA for their SSL cert, it's likely that Node.js won't\n // trust this CA unless they used the `NODE_EXTRA_CA_CERTS` option\n // (see https://stackoverflow.com/a/68135600). To provide a better developer experience, instead\n // of requiring the user to provide the CA to Node.js, we don't enforce SSL during local\n // development.\n const secure = process.env['NODE_ENV'] === 'production'\n\n const previewData: MakeswiftPreviewData = {\n makeswift: true,\n siteVersion: MakeswiftSiteVersion.Working,\n }\n const setCookie = res.setPreviewData(previewData).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 additionalCookies = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n const cookie = originalCookies ? `${originalCookies}; ${additionalCookies}` : additionalCookies\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie }, secure }, err => {\n if (err) reject(err)\n else resolve()\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 { NextApiRequest, NextApiResponse } from 'next'\nimport isErrorWithMessage from '../../../utils/isErrorWithMessage'\n\ntype RevalidationResult = { revalidated: boolean }\n\ntype RevalidationError = { message: string }\n\nexport type RevalidationResponse = RevalidationResult | RevalidationError\n\nexport async function revalidate(\n req: NextApiRequest,\n res: NextApiResponse<RevalidationResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\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","import { NextApiRequest, NextApiResponse } from 'next'\nimport { Data } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\n\ntype TranslatableDataResult = { translatableData: Record<string, Data> }\n\ntype TranslatableDataError = { message: string }\n\nexport type TranslatableDataResponse = TranslatableDataResult | TranslatableDataError\n\nexport default async function translatableData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatableDataResponse>,\n client: Makeswift,\n): Promise<void> {\n const elementTree = req.body.elementTree\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined.' })\n }\n\n try {\n let translatableData = client.getTranslatableData(elementTree)\n\n return res.json({ translatableData })\n } catch (error) {\n res.status(500).json({ message: 'Failed to get traslatable data.' })\n }\n}\n","import { NextApiRequest, NextApiResponse } from 'next'\nimport { Element } from '../../../state/react-page'\nimport { Makeswift } from '../../client'\n\ntype TranslatedDataResult = { elementTree: Element }\n\ntype TranslatedDataError = { message: string }\n\nexport type TranslatedDataResponse = TranslatedDataResult | TranslatedDataError\n\nexport default async function mergeTranslatedData(\n req: NextApiRequest,\n res: NextApiResponse<TranslatedDataResponse>,\n client: Makeswift,\n): Promise<void> {\n const translatedData = req.body.translatedData\n const elementTree = req.body.elementTree\n\n if (translatedData == null) {\n return res.status(400).json({ message: 'translatedData must be defined' })\n }\n\n if (elementTree == null) {\n return res.status(400).json({ message: 'elementTree must be defined' })\n }\n\n const translatedElementTree = client.mergeTranslatedData(elementTree, translatedData)\n\n return res.json({ elementTree: translatedElementTree })\n}\n","import Cors from 'cors'\nimport { NextApiHandler } from 'next'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport proxyPreviewMode, { ProxyPreviewModeResponse } from './handlers/proxy-preview-mode'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport { ReactRuntime } from '../../react'\n\nexport type { Manifest, Font }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n siteVersions?: boolean\n runtime?: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | ProxyPreviewModeResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n siteVersions = false,\n runtime = ReactRuntime,\n }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\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 client = new Makeswift(apiKey, {\n apiOrigin,\n siteVersion: siteVersions ? Makeswift.getSiteVersion(req.previewData) : undefined,\n runtime,\n })\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) return manifest(req, res, { apiKey, siteVersions })\n\n if (matches('/revalidate')) return revalidate(req, res, { apiKey })\n\n if (matches('/proxy-preview-mode')) return proxyPreviewMode(req, res, { apiKey })\n\n if (matches('/fonts')) return fonts(req, res, { getFonts })\n\n if (matches('/element-tree')) return elementTree(req, res)\n\n if (matches('/translatable-data')) return translatableData(req, res, client)\n\n if (matches('/merge-translated-data')) return mergeTranslatedData(req, res, client)\n\n const handleResource = <T extends APIResource>(resource: T | null): void =>\n resource === null ? res.status(404).json({ message: 'Not Found' }) : res.json(resource)\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale)\n .then(resource =>\n // We're not returning 404 if it's null because localized global element is nullable.\n resource === null ? res.json({ message: 'Not Found' }) : res.json(resource),\n )\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const locale = typeof req.query.locale === 'string' ? req.query.locale : undefined\n\n return client.getPagePathnameSlice(m.params.id, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n return res.status(404).json({ message: 'Not Found' })\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, ReactRuntime } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n runtime?: ReactRuntime\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(), {\n apiOrigin: getApiOrigin(),\n })\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(), {\n apiOrigin: getApiOrigin(),\n })\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, runtime }: PageProps) => {\n const client = useMemo(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n localizedResourcesMap: snapshot.localizedResourcesMap,\n locale: snapshot.locale ? new Intl.Locale(snapshot.locale) : undefined,\n }),\n [snapshot],\n )\n const rootElements = new Map([[snapshot.document.id, snapshot.document.data]])\n\n snapshot.document.localizedPages.forEach(localizedPage => {\n rootElements.set(localizedPage.elementTreeId, localizedPage.data)\n })\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={rootElements}\n preview={snapshot.preview}\n runtime={runtime}\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 type { MakeswiftPage, MakeswiftPageDocument, MakeswiftPageSnapshot, Sitemap } from './client'\nexport { Makeswift } from './client'\nexport type { MakeswiftPreviewData } from './preview-mode'\nexport { PreviewModeScript } from './preview-mode'\nexport { Document } from './document'\nexport type { Manifest, Font, MakeswiftApiHandlerResponse } from './api-handler'\nexport { MakeswiftApiHandler } from './api-handler'\nexport { forwardNextDynamicRef } from './dynamic'\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\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 (\n (findBreakpointOverride<BoxAnimateIn>(runtime.getBreakpoints(), animateIn, deviceId)?.value ??\n 'none') === 'none'\n )\n }\n const isHiddenBasedOnBoxAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'boxAnimateType')\n const isHiddenBasedOnItemAnimation = (props: Record<string, unknown>, deviceId: string) =>\n isHiddenBasedOnAnimationType(props, deviceId, 'itemAnimateType')\n\n return runtime.registerComponent(\n forwardNextDynamicRef(patch => dynamic(() => patch(import('./Box')))),\n {\n type: MakeswiftComponentType.Box,\n label: 'Box',\n props: {\n id: Props.ElementID(),\n backgrounds: Props.Backgrounds(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 100, unit: '%' },\n }),\n height: Props.ResponsiveIconRadioGroup({\n label: 'Height',\n options: [\n { value: 'auto', label: 'Auto', icon: 'HeightAuto16' },\n { value: 'stretch', label: 'Stretch', icon: 'HeightMatch16' },\n ],\n defaultValue: 'auto',\n }),\n verticalAlign: Props.ResponsiveIconRadioGroup({\n label: 'Align items',\n options: [\n { value: 'flex-start', label: 'Top', icon: 'VerticalAlignStart16' },\n { value: 'center', label: 'Middle', icon: 'VerticalAlignMiddle16' },\n { value: 'flex-end', label: 'Bottom', icon: 'VerticalAlignEnd16' },\n {\n value: 'space-between',\n label: 'Space between',\n icon: 'VerticalAlignSpaceBetween16',\n },\n ],\n defaultValue: 'flex-start',\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n padding: Props.Padding({\n format: Props.Padding.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\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 { findBreakpointOverride } from '../../../state/modules/breakpoints'\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 =\n findBreakpointOverride<ButtonVariant>(runtime.getBreakpoints(), variant, device)\n ?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n","import dynamic from 'next/dynamic'\nimport { v4 as uuid } from 'uuid'\n\nimport { forwardNextDynamicRef } from '../../../next'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '../../../state/modules/breakpoints'\n\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Carousel,\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 =\n findBreakpointOverride(runtime.getBreakpoints(), 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 { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Countdown,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Divider,\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Code,\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { Alignments, Contrast, Contrasts, Shapes, Sizes } from './context/FormContext'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Form,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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 = findBreakpointOverride<Contrast>(\n runtime.getBreakpoints(),\n responsiveContrast,\n device,\n )\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 550, unit: 'px' },\n },\n ],\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 priority: Props.Checkbox({ label: 'Priority' }),\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 { findBreakpointOverride, getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Navigation,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 100, unit: 'px' },\n },\n ],\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 = !findBreakpointOverride(\n runtime.getBreakpoints(),\n mobileMenuAnimation,\n device,\n )\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 { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.SocialLinks,\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: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 10, unit: 'px' },\n },\n ],\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: getBaseBreakpoint(runtime.getBreakpoints()).id,\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 { Props } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { MakeswiftComponentType } from '../constants'\nimport { getBaseBreakpoint } from '../../../state/modules/breakpoints'\nimport { RichText } from '../../../controls/rich-text-v2/rich-text-v2'\nimport { forwardNextDynamicRef } from '../../../next/dynamic'\nimport dynamic from 'next/dynamic'\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: RichText(),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\n value: { value: 700, unit: 'px' },\n },\n ],\n defaultValue: { value: 100, unit: '%' },\n }),\n margin: Props.Margin({\n format: Props.Margin.Format.ClassName,\n preset: [\n {\n deviceId: getBaseBreakpoint(runtime.getBreakpoints()).id,\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'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\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: ComponentIcon.Video,\n props: {\n id: Props.ElementID(),\n video: Props.Video({ preset: { controls: true } }),\n width: Props.Width({\n format: Props.Width.Format.ClassName,\n defaultValue: { value: 560, unit: 'px' },\n }),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n borderRadius: Props.BorderRadius({ format: Props.BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n","import { ReactRuntime } from '../../runtimes/react'\nimport { registerComponent as registerBoxComponent } from './Box/register'\nimport { registerComponent as registerButtonComponent } from './Button/register'\nimport { registerComponent as registerCarouselComponent } from './Carousel/register'\nimport { registerComponent as registerCountdownComponent } from './Countdown/register'\nimport { registerComponent as registerDividerComponent } from './Divider/register'\nimport { registerComponent as registerEmbedComponent } from './Embed/register'\nimport { registerComponent as registerFormComponent } from './Form/register'\nimport { registerComponent as registerImageComponent } from './Image/register'\nimport { registerComponent as registerNavigationComponent } from './Navigation/register'\nimport { registerComponent as registerRootComponent } from './Root/register'\nimport { registerComponent as registerSocialLinksComponent } from './SocialLinks/register'\nimport { registerComponent as registerTextComponent } from './Text/register'\nimport { registerComponent as registerVideoComponent } from './Video/register'\n\nexport function registerBuiltinComponents(runtime: ReactRuntime) {\n const unregisterBoxComponent = registerBoxComponent(runtime)\n const unregisterButtonComponent = registerButtonComponent(runtime)\n const unregisterCarouselComponent = registerCarouselComponent(runtime)\n const unregisterCountdownComponent = registerCountdownComponent(runtime)\n const unregisterDividerComponent = registerDividerComponent(runtime)\n const unregisterEmbedComponent = registerEmbedComponent(runtime)\n const unregisterFormComponent = registerFormComponent(runtime)\n const unregisterImageComponent = registerImageComponent(runtime)\n const unregisterNavigationComponent = registerNavigationComponent(runtime)\n const unregisterRootComponent = registerRootComponent(runtime)\n const unregisterSocialLinksComponent = registerSocialLinksComponent(runtime)\n const unregisterTextComponent = registerTextComponent(runtime)\n const unregisterVideoComponent = registerVideoComponent(runtime)\n\n return () => {\n unregisterBoxComponent()\n unregisterButtonComponent()\n unregisterCarouselComponent()\n unregisterCountdownComponent()\n unregisterDividerComponent()\n unregisterEmbedComponent()\n unregisterFormComponent()\n unregisterImageComponent()\n unregisterNavigationComponent()\n unregisterRootComponent()\n unregisterSocialLinksComponent()\n unregisterTextComponent()\n unregisterVideoComponent()\n }\n}\n","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","export function isNonNullable<T>(value: T): value is NonNullable<T> {\n return value != null\n}\n","import { useEffect, useRef } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport {\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} 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 useLocalizedGlobalElement(\n globalElementId: string | null,\n): LocalizedGlobalElement | null {\n const client = useMakeswiftClient()\n const readLocalizedGlobalElement = () =>\n globalElementId == null ? null : client.readLocalizedGlobalElement(globalElementId)\n const localizedGlobalElement = useSyncExternalStore(\n client.subscribe,\n readLocalizedGlobalElement,\n readLocalizedGlobalElement,\n )\n\n useEffect(() => {\n if (globalElementId != null) {\n client.fetchLocalizedGlobalElement(globalElementId).catch(console.error)\n }\n }, [client, globalElementId])\n\n return localizedGlobalElement\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","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 getBreakpoint,\n getBreakpointMediaQuery,\n join as joinResponsiveValues,\n Breakpoints,\n} from '../../state/modules/breakpoints'\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'\nimport { useBreakpoints } from '../../runtimes/react'\nimport { DropFirst } from './drop-first'\n\nexport function responsiveStyle<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>>(\n breakpoints: Breakpoints,\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return joinResponsiveValues(breakpoints, responsiveValues, join, strategy).reduce(\n (acc, { deviceId, value }) => {\n const breakpoint = getBreakpoint(breakpoints, deviceId)\n const mediaQuery = getBreakpointMediaQuery(breakpoint)\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 useResponsiveStyle<\n V,\n A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>,\n>(\n responsiveValues: A,\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) => CSSObject,\n strategy?: FallbackStrategy<V>,\n): CSSObject {\n return responsiveStyle(useBreakpoints(), responsiveValues, join, strategy)\n}\n\nexport function responsiveWidth(\n breakpoints: Breakpoints,\n widthData: WidthValue | undefined,\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): CSSObject {\n return {\n maxWidth: '100%',\n ...responsiveStyle(breakpoints, [widthData], ([width = defaultValue]) => ({\n width: typeof width === 'object' ? `${width.value}${width.unit}` : width,\n })),\n }\n}\n\nexport function useResponsiveWidth(\n ...args: DropFirst<Parameters<typeof responsiveWidth>>\n): CSSObject {\n return responsiveWidth(useBreakpoints(), ...args)\n}\n\nexport function responsivePadding(\n breakpoints: Breakpoints,\n paddingData: PaddingValue | undefined,\n defaultValue: PaddingPropertyData = {} as PaddingPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsivePadding(\n ...args: DropFirst<Parameters<typeof responsivePadding>>\n): CSSObject {\n return responsivePadding(useBreakpoints(), ...args)\n}\n\nexport function responsiveMargin(\n breakpoints: Breakpoints,\n marginData: MarginValue | undefined,\n defaultValue: MarginPropertyData = {} as MarginPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsiveMargin(\n ...args: DropFirst<Parameters<typeof responsiveMargin>>\n): CSSObject {\n return responsiveMargin(useBreakpoints(), ...args)\n}\n\nexport function responsiveBorderRadius(\n breakpoints: Breakpoints,\n borderRadiusData: BorderRadiusValue | undefined,\n defaultValue: BorderRadiusPropertyData = {} as BorderRadiusPropertyData,\n): CSSObject {\n return responsiveStyle(breakpoints, [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 useResponsiveBorderRadius(\n ...args: DropFirst<Parameters<typeof responsiveBorderRadius>>\n): CSSObject {\n return responsiveBorderRadius(useBreakpoints(), ...args)\n}\n\nexport function useResponsiveBorder(\n borderData: BorderPropControllerData | undefined,\n defaultValue: BorderPropertyData = {},\n): CSSObject {\n return useResponsiveStyle([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(\n breakpoints: Breakpoints,\n props: {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n },\n): CSSObject {\n return {\n display: 'flex',\n ...responsiveStyle(\n breakpoints,\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\nexport function useResponsiveGridItem(\n ...args: DropFirst<Parameters<typeof responsiveGridItem>>\n): CSSObject {\n return responsiveGridItem(useBreakpoints(), ...args)\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(\n breakpoints: Breakpoints,\n value: BoxShadowPropControllerData | undefined,\n): CSSObject {\n return responsiveStyle(breakpoints, [value], ([shadow = []]) => ({\n boxShadow: getBoxShadow(shadow),\n }))\n}\n\nexport function useResponsiveShadow(\n ...args: DropFirst<Parameters<typeof responsiveShadow>>\n): CSSObject {\n return responsiveShadow(useBreakpoints(), ...args)\n}\n\nexport function responsiveTextStyle(\n breakpoints: Breakpoints,\n value: TextStyleValue | undefined,\n): CSSObject {\n return responsiveStyle(\n breakpoints,\n [value],\n ([\n textStyle = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n ]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return {\n ...(fontFamily == null ? {} : { fontFamily: `\"${fontFamily}\"` }),\n ...(fontWeight == null ? {} : { fontWeight }),\n ...(letterSpacing == null ? {} : { letterSpacing }),\n ...(fontSize == null ? {} : { fontSize: `${fontSize.value}${fontSize.unit}` }),\n ...(textTransform.includes('uppercase') ? { textTransform: 'uppercase' } : {}),\n ...(fontStyle.includes('italic') ? { fontStyle: 'italic' } : {}),\n }\n },\n )\n}\n\nexport function useResponsiveTextStyle(\n ...args: DropFirst<Parameters<typeof responsiveTextStyle>>\n): CSSObject {\n return responsiveTextStyle(useBreakpoints(), ...args)\n}\n","import { CSSObject } from '@emotion/css'\nimport { useEffect, useId } from 'react'\n\nimport { useBorder, BorderSide } from '../../../components/hooks'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\n\nimport {\n FontSizePropertyData,\n StyleControl,\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'\nimport { BoxModel, getBox } from '../../../box-model'\nimport deepEqual from '../../../utils/deepEqual'\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 ...useResponsiveStyle(\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 control: StyleControl | null,\n): StyleControlFormattedValue {\n const style = useStyleControlCssObject(styleControlData, controlDefinition)\n // We're removing the colons because useId returns a string wrapped with colons, e.g. \":R3d5sm:\",\n // and we cannot use colons in a class name.\n const guid = useId().replaceAll(':', '')\n const styleClassName = useStyle(style)\n const classNames = `${styleClassName} ${guid}`\n\n useEffect(() => {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n if (control == null) return\n\n const element = document.querySelector(`.${guid}`)\n\n const measuredBoxModel = element == null ? null : getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n control.changeBoxModel(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n control?.changeBoxModel(null)\n }\n }, [guid, control])\n\n return classNames\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 IconRadioGroupControlData,\n IconRadioGroupControlDefinition,\n} from '../../../controls/icon-radio-group'\n\nexport type IconRadioGroupControlValue<T extends IconRadioGroupControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? IconRadioGroupControlData | undefined\n : IconRadioGroupControlData\n\nexport function useIconRadioGroupValue<T extends IconRadioGroupControlDefinition>(\n iconRadioGroupControlData: IconRadioGroupControlData | undefined,\n controlDefinition: T,\n): IconRadioGroupControlValue<T> {\n return (iconRadioGroupControlData ??\n controlDefinition.config.defaultValue) as IconRadioGroupControlValue<T>\n}\n","import { P, match } from 'ts-pattern'\nimport {\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\n const fileId = match(data)\n .with(P.string, id => id)\n .with({ type: 'makeswift-file' }, ({ id }) => id)\n .otherwise(() => null)\n\n const file = useFile(fileId)\n\n return match([file, data, format])\n .with([{ __typename: 'File' }, P.any, ImageControlValueFormat.URL], ([file]) => file.publicUrl)\n .with(\n [\n { __typename: 'File', dimensions: P.not(P.nullish) },\n P.any,\n ImageControlValueFormat.WithDimensions,\n ],\n ([file]) => ({\n url: file.publicUrl,\n dimensions: file.dimensions,\n }),\n )\n .with([P.any, { type: 'external-file' }, ImageControlValueFormat.URL], ([, d]) => d.url)\n .with(\n [\n P.any,\n { type: 'external-file', width: P.number, height: P.number },\n ImageControlValueFormat.WithDimensions,\n ],\n ([, d]) => ({\n url: d.url,\n dimensions: { width: d.width, height: d.height },\n }),\n )\n .otherwise(() => undefined)\n}\n\nexport type ResolveImageControlValue<T extends ControlDefinition> = T extends ImageControlDefinition\n ? undefined extends T['config']['format']\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.URL\n ? string | undefined\n : T['config']['format'] extends typeof ImageControlValueFormat.WithDimensions\n ? ImageWithDimensions | undefined\n : never\n : never\n","import { MouseEvent, useCallback, useMemo } from 'react'\n\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport { useElementId } from '../'\nimport { LinkControlData, LinkControlDefinition } from '../../../controls'\nimport { usePagePathnameSlice } from '../hooks/makeswift-api'\n\ntype LinkValue = {\n href: string\n target: '_blank' | '_self' | undefined\n onClick: (event: MouseEvent<HTMLElement>) => void\n}\n\nexport type LinkControlValue<_T extends LinkControlDefinition> = LinkValue | undefined\n\nexport function useLinkControlValue<T extends LinkControlDefinition>(\n link: LinkControlData | undefined,\n _definition: T,\n): LinkControlValue<T> {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n let href = '#'\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) href = `/${page.pathname}`\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n href = `#${elementId ?? ''}`\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (event.defaultPrevented) return\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n },\n [link, href, block],\n )\n\n const res = useMemo(() => ({ href, target, onClick: handleClick }), [href, target, handleClick])\n\n return res\n}\n","import { useEffect, useState } from 'react'\nimport { ListControl, ListControlData, ListControlDefinition } from '../../../controls'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\ntype ListControlItemValue<T extends ListControlDefinition> = ControlDefinitionValue<\n T['config']['type']\n>\n\nexport type ListControlValue<T extends ListControlDefinition> = ListControlItemValue<T>[]\n\ntype ListControlValueProps<T extends ListControlDefinition> = {\n definition: T\n data: ListControlData<T> | undefined\n children(value: ListControlValue<T>): JSX.Element\n control: ListControl\n}\n\nexport function ListControlValue<T extends ListControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ListControlValueProps<T>): JSX.Element {\n const [controls, setControls] = useState<Map<string, AnyPropController> | undefined>(new Map())\n\n useEffect(() => {\n if (control == null || data == null) return\n\n // This is not ideal because we're setting the itemsControl from the ListControlValue.\n // This is because right now we don't have a subscribeToValue function inside the control.\n // We can improve this by adding the subscribeToValue to createPropController and by\n // moving the setItemsControl to the control itself.\n setControls(control.setItemsControl(data))\n }, [data, control])\n\n return (data ?? []).reduce(\n (renderFn, item) => listControlValue =>\n (\n <ControlValue\n definition={definition.config.type}\n data={item.value}\n control={controls?.get(item.id)}\n >\n {value => renderFn([value as ListControlItemValue<T>, ...listControlValue])}\n </ControlValue>\n ),\n children,\n )([])\n}\n","import { NumberControlData, NumberControlDefinition } from '../../../controls'\n\nexport type NumberControlValue<T extends NumberControlDefinition> =\n undefined extends T['config']['defaultValue'] ? NumberControlData | undefined : NumberControlData\n\nexport function useNumber<T extends NumberControlDefinition>(\n numberControlData: number | undefined,\n controlDefinition: T,\n): NumberControlValue<T> {\n return (numberControlData ?? controlDefinition.config.defaultValue) as NumberControlValue<T>\n}\n","import dynamic from 'next/dynamic'\nimport { ReactNode, useCallback } from 'react'\nimport {\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n} from '../../../../controls/rich-text'\nimport { forwardNextDynamicRef } from '../../../../next'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../../../state/modules/prop-controller-handles'\nimport { useIsPreview } from '../..'\n\nconst EditableText = forwardNextDynamicRef(patch => dynamic(() => patch(import('./EditableText'))))\nconst ReadOnlyText = forwardNextDynamicRef(patch => dynamic(() => patch(import('./ReadOnlyText'))))\n\nexport type RichTextControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextControlDefinition }\n\nexport function useRichText(data: RichTextControlData, control: RichTextControl | null) {\n const textCallbackRef = useCallback(\n (handle: PropControllersHandle<Descriptors> | HTMLDivElement) => {\n if (isPropControllersHandle(handle))\n handle?.setPropControllers?.(control == null ? null : { text: control })\n },\n [control],\n )\n\n const isPreview = useIsPreview()\n\n return isPreview ? (\n <EditableText text={data} ref={textCallbackRef} />\n ) : (\n <ReadOnlyText text={data} ref={textCallbackRef} />\n )\n}\n","import { ReactNode } from 'react'\n\nimport {\n RichTextControlData,\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n isRichTextV1Data,\n} from '../../../../controls'\nimport { useIsPreview } from '../../../react'\nimport { forwardNextDynamicRef } from '../../../../next'\nimport dynamic from 'next/dynamic'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\nconst EditableText = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('./EditableTextV2'))),\n)\nconst ReadOnlyText = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('./ReadOnlyTextV2'))),\n)\n\nconst ReadOnlyTextV1 = forwardNextDynamicRef(patch =>\n dynamic(() => patch(import('../rich-text/ReadOnlyText'))),\n)\n\nexport function useRichTextV2(\n data: RichTextV2ControlData | RichTextControlData,\n definition: RichTextV2ControlDefinition,\n control: RichTextV2Control | null,\n) {\n const isPreview = useIsPreview()\n\n if (isRichTextV1Data(data)) {\n return <ReadOnlyTextV1 text={data} />\n }\n\n return isPreview ? (\n <EditableText text={data} definition={definition} control={control} />\n ) : (\n <ReadOnlyText text={data} definition={definition} />\n )\n}\n","import {\n SelectControlData,\n SelectControlDefinition,\n SelectControlDefinitionOption,\n} from '../../../controls'\n\nexport type SelectControlValue<T extends SelectControlDefinition> =\n undefined extends T['config']['defaultValue']\n ? SelectControlDefinitionOption<T> | undefined\n : SelectControlDefinitionOption<T>\n\nexport function useSelectControlValue<T extends SelectControlDefinition>(\n data: SelectControlData<T> | undefined,\n definition: T,\n): SelectControlValue<T> {\n return (data ?? definition?.config.defaultValue) as SelectControlValue<T>\n}\n","import { ShapeControl, ShapeControlData, ShapeControlDefinition } from '../../../controls/shape'\nimport { ControlDefinitionValue, ControlValue } from './control'\n\nexport type ShapeControlValue<T extends ShapeControlDefinition> = {\n [K in keyof T['config']['type']]: ControlDefinitionValue<T['config']['type'][K]>\n}\n\ntype ShapeControlValueProps<T extends ShapeControlDefinition> = {\n definition: T\n data: ShapeControlData<T> | undefined\n children(value: ShapeControlValue<T>): JSX.Element\n control: ShapeControl\n}\n\nexport function ShapeControlValue<T extends ShapeControlDefinition>({\n definition,\n data,\n children,\n control,\n}: ShapeControlValueProps<T>) {\n return Object.entries(definition.config.type).reduceRight(\n (renderFn, [key, controlDefinition]) =>\n shapeControlValue =>\n (\n <ControlValue\n definition={controlDefinition}\n data={data?.[key]}\n control={control?.controls.get(key)}\n >\n {value => renderFn({ ...shapeControlValue, [key]: value })}\n </ControlValue>\n ),\n children,\n )({} as ShapeControlValue<T>)\n}\n","import { BoxModel, getBox } from '../../state/modules/box-models'\nimport deepEqual from '../../utils/deepEqual'\n\nexport function pollBoxModel({\n element,\n onBoxModelChange,\n}: {\n element: Element\n onBoxModelChange(boxModel: BoxModel | null): void\n}): () => void {\n let currentBoxModel: BoxModel | null = null\n\n const handleAnimationFrameRequest = () => {\n const measuredBoxModel = getBox(element)\n\n if (!deepEqual(currentBoxModel, measuredBoxModel)) {\n currentBoxModel = measuredBoxModel\n\n onBoxModelChange(currentBoxModel)\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n\n onBoxModelChange(null)\n }\n}\n","import { ComponentPropsWithoutRef, ElementType, ReactNode, useEffect, useState } from 'react'\nimport { SlotControl, SlotControlData } from '../../../controls'\n\nimport { Element } from '../../../runtimes/react'\nimport { getIndexes } from '../../../components/utils/columns'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\nimport { useStyle } from '../use-style'\nimport { cx } from '@emotion/css'\nimport { pollBoxModel } from '../poll-box-model'\n\nexport type SlotControlValue = ReactNode\n\nexport function useSlot(data: SlotControlData, control: SlotControl | null) {\n // TODO(miguel): While the UI shouldn't allow the state, we should probably check that at least\n // one element is visible.\n if (data == null || data.elements.length === 0) {\n return <Slot.Placeholder control={control} />\n }\n\n return (\n <Slot control={control}>\n {data.elements.map((element, i) => (\n <Slot.Item key={element.key} control={control} grid={data.columns} index={i}>\n <Element element={element} />\n </Slot.Item>\n ))}\n </Slot>\n )\n}\n\ntype SlotProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n children?: ReactNode\n className?: string\n}\n\nexport function Slot<T extends ElementType = 'div'>({\n as,\n control,\n children,\n className,\n ...restOfProps\n}: SlotProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotProps<T>>) {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\nSlot.Placeholder = SlotPlaceholder\n\nSlot.Item = SlotItem\n\ntype SlotItemProps<T extends ElementType> = {\n as?: T\n control: SlotControl | null\n grid: SlotControlData['columns']\n index: number\n children?: ReactNode\n className?: string\n}\n\nfunction SlotItem<T extends ElementType = 'div'>({\n as,\n control,\n grid,\n index,\n children,\n className,\n ...restOfProps\n}: SlotItemProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof SlotItemProps<T>>): JSX.Element {\n const As = as ?? 'div'\n const [element, setElement] = useState<Element | null>(null)\n const baseClassName = useStyle({\n display: 'flex',\n ...useResponsiveStyle([grid], ([{ count = 12, spans = [[12]] } = {}]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, index)\n const span = spans[rowIndex][columnIndex]\n const flexBasis = `calc(100% * ${(span / count).toFixed(5)})`\n\n return span === 0 ? { display: 'none' } : { flexBasis, minWidth: flexBasis }\n }),\n })\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeItemBoxModel(index, boxModel),\n })\n }, [element, control, index])\n\n return (\n <As {...restOfProps} ref={setElement} className={cx(baseClassName, className)}>\n {children}\n </As>\n )\n}\n\ntype SlotPlaceholderProps = {\n control: SlotControl | null\n}\n\nfunction SlotPlaceholder({ control }: SlotPlaceholderProps): JSX.Element {\n const [element, setElement] = useState<Element | null>(null)\n\n useEffect(() => {\n if (element == null || control == null) return\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeContainerBoxModel(boxModel),\n })\n }, [element, control])\n\n return (\n <div\n ref={setElement}\n className={useStyle({\n width: '100%',\n background: 'rgba(161, 168, 194, 0.18)',\n height: '80px',\n })}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n height=\"100%\"\n className={useStyle({ overflow: 'visible', padding: 8 })}\n >\n <rect\n x={0}\n y={0}\n width=\"100%\"\n height=\"100%\"\n strokeWidth={2}\n strokeDasharray=\"4 2\"\n fill=\"none\"\n stroke=\"rgba(161, 168, 194, 0.40)\"\n rx=\"4\"\n ry=\"4\"\n />\n </svg>\n </div>\n )\n}\n","import { StyleV2Control, StyleV2ControlData, StyleV2ControlDefinition } from '../../../controls'\nimport { useStyle } from '../use-style'\nimport {\n findBreakpointOverride,\n getBaseBreakpoint,\n getBreakpointMediaQuery,\n mergeOrCoalesceFallbacks,\n} from '../../../state/modules/breakpoints'\nimport { useBreakpoints } from '..'\nimport { CSSObject } from '@emotion/css'\n\nimport { ControlDefinitionValue, ControlValue } from './control'\nimport { RenderHook } from '../components'\nimport { DeviceOverride } from '../../../controls/types'\n\nfunction useStyleControlCssObject(\n styleControlData: StyleV2ControlData,\n controlDefinition: StyleV2ControlDefinition,\n): CSSObject {\n const breakpoints = useBreakpoints()\n\n return {\n ...controlDefinition.config.getStyle(\n findBreakpointOverride(\n breakpoints,\n styleControlData,\n getBaseBreakpoint(breakpoints).id,\n mergeOrCoalesceFallbacks,\n )?.value,\n ),\n ...breakpoints.reduce((styles, breakpoint) => {\n return {\n ...styles,\n [getBreakpointMediaQuery(breakpoint)]: controlDefinition.config.getStyle(\n findBreakpointOverride(\n breakpoints,\n styleControlData,\n breakpoint.id,\n mergeOrCoalesceFallbacks,\n )?.value,\n ),\n }\n }, {}),\n }\n}\n\nexport type StyleV2ControlFormattedValue = string\n\nexport function useFormattedStyleV2<T extends StyleV2ControlDefinition>(\n styleControlData: StyleV2ControlData,\n controlDefinition: T,\n): StyleV2ControlFormattedValue {\n const styles = useStyleControlCssObject(styleControlData, controlDefinition)\n\n return useStyle(styles)\n}\n\ntype StyleV2ControlValueProps<T extends StyleV2ControlDefinition> = {\n definition: T\n data: StyleV2ControlData | undefined\n children(value: string): JSX.Element\n control?: StyleV2Control\n}\n\nexport function StyleV2ControlValue<T extends StyleV2ControlDefinition>({\n definition,\n data,\n children,\n control,\n}: StyleV2ControlValueProps<T>): JSX.Element {\n return (data ?? []).reduceRight(\n (renderFn, deviceOverrideData: DeviceOverride<any>) => responsiveValue => {\n return (\n <ControlValue\n definition={definition.config.type}\n data={deviceOverrideData.value}\n control={control?.control}\n >\n {value => renderFn([{ ...deviceOverrideData, value }, ...responsiveValue])}\n </ControlValue>\n )\n },\n (value: StyleV2ControlData) => {\n return (\n <RenderHook\n key={definition.type}\n hook={useFormattedStyleV2}\n parameters={[value, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n },\n )([])\n}\n","import { TextAreaControlData, TextAreaControlDefinition } from '../../../controls'\n\nexport type TextAreaControlValue<T extends TextAreaControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextAreaValue<T extends TextAreaControlDefinition>(\n data: TextAreaControlData | undefined,\n definition: T,\n): TextAreaControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextAreaControlValue<T>\n}\n","import { TextInputControlData, TextInputControlDefinition } from '../../../controls'\n\nexport type TextInputControlValue<T extends TextInputControlDefinition> =\n undefined extends T['config']['defaultValue'] ? string | undefined : string\n\nexport function useTextInputValue<T extends TextInputControlDefinition>(\n data: TextInputControlData | undefined,\n definition: T,\n): TextInputControlValue<T> {\n return (data ?? definition.config.defaultValue) as TextInputControlValue<T>\n}\n","import { CSSObject } from '@emotion/serialize'\nimport { TypographyControlData } from '../../../controls/typography'\nimport { useSwatches, useTypography } from '../hooks/makeswift-api'\nimport { useBreakpoints } from '..'\nimport { Typography, Swatch } from '../../../api'\nimport { colorToString } from '../../../components/utils/colorToString'\nimport { useResponsiveStyle } from '../../../components/utils/responsive-style'\nimport { ColorValue } from '../../../components/utils/types'\nimport { DeviceOverride, ResponsiveValue } from '../../../prop-controllers'\nimport { findBreakpointOverride, shallowMergeFallbacks } from '../../../state/modules/breakpoints'\nimport { isNonNullable } from '../../../utils/isNonNullable'\nimport { useStyle } from '../use-style'\n\nexport function typographyFragementToTypographyControlData(\n typography: Typography | null,\n): TypographyControlData[number] | undefined {\n if (typography == null) return undefined\n return {\n id: typography.id,\n style: typography.style.map(({ deviceId, value }) => ({\n deviceId,\n value: {\n fontFamily: value.fontFamily ?? undefined,\n lineHeight: value.lineHeight ?? undefined,\n letterSpacing: value.letterSpacing ?? undefined,\n fontWeight: value.fontWeight ?? undefined,\n textAlign: value.textAlign ?? undefined,\n uppercase: value.uppercase ?? undefined,\n underline: value.underline ?? undefined,\n strikethrough: value.strikethrough ?? undefined,\n italic: value.italic ?? undefined,\n fontSize: value.fontSize ?? undefined,\n color: value.color ?? undefined,\n },\n })),\n }\n}\n\ntype EnhancedColor = {\n color?: ColorValue\n}\n\nexport type TypographyControlDataValue = Exclude<\n TypographyControlData[number],\n undefined\n>['style'][number]['value']\n\ntype EnhancedTypographyValue = Omit<TypographyControlDataValue, keyof EnhancedColor> & EnhancedColor\n\nexport type EnhancedTypography = Array<DeviceOverride<EnhancedTypographyValue>>\n\nexport function getTypographyStyleSwatchIds(\n style:\n | Exclude<TypographyControlData[number], undefined>['style']\n | Typography['style']\n | null\n | undefined,\n): string[] {\n return (\n style\n ?.map(override => override.value)\n .flatMap(typographyStyle => typographyStyle.color?.swatchId)\n .filter(isNonNullable) ?? []\n )\n}\n\nconst withColor =\n (swatches: Swatch[]) =>\n (\n deviceRawTypographyValue: DeviceOverride<TypographyControlDataValue>,\n ): DeviceOverride<EnhancedTypographyValue> => {\n const { value, deviceId } = deviceRawTypographyValue\n\n if (value.color == null) {\n const { color, ...nextValue } = value\n return {\n deviceId,\n value: nextValue,\n }\n }\n return {\n deviceId,\n value: {\n ...value,\n color: {\n swatch: swatches.find(s => s && s.id === value.color?.swatchId),\n alpha: value.color?.alpha ?? undefined,\n },\n },\n }\n }\n\nconst getDeviceId = ({ deviceId }: DeviceOverride<unknown>) => deviceId\n\n/**\n * `enhanced` here just means typography ids have been replaced with the related entity.\n */\nexport default function useEnhancedTypography(\n value?: TypographyControlData[number] | null,\n): EnhancedTypography {\n const typography = typographyFragementToTypographyControlData(useTypography(value?.id ?? null))\n const source = typography?.style ?? []\n const override = value?.style ?? []\n const breakpoints = useBreakpoints()\n\n const swatchIds = [\n ...getTypographyStyleSwatchIds(value?.style),\n ...getTypographyStyleSwatchIds(typography?.style),\n ]\n const swatches = useSwatches(swatchIds).filter(isNonNullable)\n\n const enhancedSource = source.map(withColor(swatches))\n const enhancedOverride = override.map(withColor(swatches))\n\n const devices = [\n ...new Set(enhancedSource.map(getDeviceId).concat(enhancedOverride.map(getDeviceId))),\n ]\n\n return devices\n .map(deviceId => {\n const deviceSource = findBreakpointOverride(breakpoints, enhancedSource, deviceId)?.value\n const deviceOverride = findBreakpointOverride(\n breakpoints,\n enhancedOverride,\n deviceId,\n v => v,\n )?.value\n\n if (deviceSource && deviceOverride) {\n return {\n deviceId,\n value: { ...deviceSource, ...deviceOverride },\n }\n } else if (deviceOverride) {\n return {\n deviceId,\n value: deviceOverride,\n }\n } else if (deviceSource) {\n return {\n deviceId,\n value: deviceSource,\n }\n }\n return null\n })\n .filter(isNonNullable)\n}\n\nexport function useTypographyClassName(value: EnhancedTypography): string {\n return useStyle(\n useResponsiveStyle<\n EnhancedTypographyValue,\n [ResponsiveValue<EnhancedTypographyValue> | null | undefined]\n >(\n [value],\n ([value]) => {\n if (value === undefined) return {}\n\n let styles: CSSObject = {}\n if (value.color != null) styles.color = colorToString(value.color)\n if (value.fontFamily != null) styles.fontFamily = value.fontFamily\n if (value.fontSize != null && value.fontSize.value != null && value.fontSize.unit != null)\n styles.fontSize = `${value.fontSize.value}${value.fontSize.unit}`\n if (value.fontWeight != null) styles.fontWeight = value.fontWeight\n if (value.lineHeight != null) styles.lineHeight = value.lineHeight\n if (value.letterSpacing != null) styles.letterSpacing = `${value.letterSpacing / 10}em`\n if (value.uppercase != null)\n styles.textTransform = value.uppercase === true ? 'uppercase' : 'initial'\n if (value.underline != null || value.strikethrough != null)\n styles.textDecoration = [\n Boolean(value.underline) && 'underline',\n Boolean(value.strikethrough) && 'line-through',\n ]\n .filter(Boolean)\n .join(' ')\n if (value.italic != null) styles.fontStyle = value.italic === true ? 'italic' : 'initial'\n\n return styles\n },\n shallowMergeFallbacks,\n ),\n )\n}\n\nexport type TypographyControlValue = string\n\nexport function useTypographyValue(\n data: TypographyControlData[number] | undefined,\n): TypographyControlValue {\n // for each breakpoint fetch related resources and merge its value with its override\n const enhancedTypography = useEnhancedTypography(data)\n\n // for each breakpoint shallow merge back up through the breakpoints and create a className\n return useTypographyClassName(enhancedTypography)\n}\n","import {\n CheckboxControlData,\n CheckboxControlDefinition,\n CheckboxControlType,\n ColorControlData,\n ColorControlDefinition,\n ColorControlType,\n ComboboxControlData,\n ComboboxControlDefinition,\n ComboboxControlType,\n ControlDefinition,\n ControlDefinitionData,\n ImageControlData,\n ImageControlDefinition,\n ImageControlType,\n LinkControlData,\n LinkControlDefinition,\n LinkControlType,\n ListControl,\n ListControlData,\n ListControlDefinition,\n ListControlType,\n NumberControlData,\n NumberControlDefinition,\n NumberControlType,\n RichTextControl,\n RichTextControlData,\n RichTextControlDefinition,\n RichTextControlType,\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n SelectControlData,\n SelectControlDefinition,\n SelectControlType,\n ShapeControl,\n ShapeControlData,\n ShapeControlDefinition,\n ShapeControlType,\n SlotControl,\n SlotControlData,\n SlotControlDefinition,\n SlotControlType,\n StyleControl,\n StyleControlData,\n StyleControlDefinition,\n StyleControlType,\n StyleV2Control,\n StyleV2ControlData,\n StyleV2ControlDefinition,\n StyleV2ControlType,\n TextAreaControlData,\n TextAreaControlDefinition,\n TextAreaControlType,\n TextInputControlData,\n TextInputControlDefinition,\n TextInputControlType,\n TypographyControlData,\n TypographyControlDefinition,\n TypographyControlType,\n} from '../../../controls'\nimport {\n IconRadioGroupControlData,\n IconRadioGroupControlDefinition,\n IconRadioGroupControlType,\n} from '../../../controls/icon-radio-group'\nimport { AnyPropController } from '../../../prop-controllers/instances'\nimport { RenderHook } from '../components'\nimport { CheckboxControlValue, useCheckboxControlValue } from './checkbox'\nimport { ColorControlValue, useColorValue } from './color'\nimport { ComboboxControlValue, useComboboxControlValue } from './combobox'\nimport { IconRadioGroupControlValue, useIconRadioGroupValue } from './icon-radio-group'\nimport { ResolveImageControlValue, useImageControlValue } from './image'\nimport { LinkControlValue, useLinkControlValue } from './link'\nimport { ListControlValue } from './list'\nimport { NumberControlValue, useNumber } from './number'\nimport { RichTextControlValue, useRichText } from './rich-text/rich-text'\nimport { RichTextV2ControlValue, useRichTextV2 } from './rich-text-v2'\nimport { SelectControlValue, useSelectControlValue } from './select'\nimport { ShapeControlValue } from './shape'\nimport { SlotControlValue, useSlot } from './slot'\nimport { StyleControlFormattedValue, useFormattedStyle } from './style'\nimport { StyleV2ControlFormattedValue, StyleV2ControlValue } from './style-v2'\nimport { TextAreaControlValue, useTextAreaValue } from './text-area'\nimport { TextInputControlValue, useTextInputValue } from './text-input'\nimport { TypographyControlValue, useTypographyValue } from './typography'\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 IconRadioGroupControlDefinition\n ? IconRadioGroupControlValue<T>\n : T extends LinkControlDefinition\n ? LinkControlValue<T>\n : T extends ComboboxControlDefinition\n ? ComboboxControlValue<T>\n : T extends ShapeControlDefinition\n ? ShapeControlValue<T>\n : T extends ListControlDefinition\n ? ListControlValue<T>\n : T extends SlotControlDefinition\n ? SlotControlValue\n : T extends RichTextControlDefinition\n ? RichTextControlValue\n : T extends RichTextV2ControlDefinition\n ? RichTextV2ControlValue\n : T extends StyleControlDefinition\n ? StyleControlFormattedValue\n : T extends StyleV2ControlDefinition\n ? StyleV2ControlFormattedValue\n : T extends TypographyControlDefinition\n ? TypographyControlValue\n : never\n\ntype ControlValueProps<T extends ControlDefinition> = {\n definition: T\n data: ControlDefinitionData<T> | undefined\n children(value: ControlDefinitionValue<T>): JSX.Element\n control?: AnyPropController\n}\n\nexport function ControlValue<T extends ControlDefinition>({\n data,\n definition,\n children,\n control,\n}: ControlValueProps<T>): JSX.Element {\n switch (definition.type) {\n case CheckboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useCheckboxControlValue}\n parameters={[data as CheckboxControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case NumberControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useNumber}\n parameters={[data as NumberControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextInputControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextInputValue}\n parameters={[data as TextInputControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TextAreaControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTextAreaValue}\n parameters={[data as TextAreaControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case SelectControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSelectControlValue}\n parameters={[data as SelectControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ColorControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useColorValue}\n parameters={[data as ColorControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case IconRadioGroupControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useIconRadioGroupValue}\n parameters={[data as IconRadioGroupControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ImageControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useImageControlValue}\n parameters={[data as ImageControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case LinkControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useLinkControlValue}\n parameters={[data as LinkControlData, definition]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ComboboxControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useComboboxControlValue}\n parameters={[data as ComboboxControlData]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case ShapeControlType:\n return (\n <ShapeControlValue\n definition={definition}\n data={data as ShapeControlData}\n control={control as ShapeControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ShapeControlValue>\n )\n\n case ListControlType:\n return (\n <ListControlValue\n definition={definition}\n data={data as ListControlData}\n control={control as ListControl}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </ListControlValue>\n )\n\n case StyleV2ControlType:\n return (\n <StyleV2ControlValue\n key={definition.type}\n data={data as StyleV2ControlData}\n definition={definition}\n control={control as StyleV2Control}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </StyleV2ControlValue>\n )\n\n case SlotControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useSlot}\n parameters={[data as unknown as SlotControlData, control as SlotControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case RichTextControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useRichText}\n parameters={[data as unknown as RichTextControlData, control as RichTextControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case RichTextV2ControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useRichTextV2}\n parameters={[\n data as unknown as RichTextV2ControlData,\n definition,\n control as RichTextV2Control,\n ]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case StyleControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useFormattedStyle}\n parameters={[data as unknown as StyleControlData, definition, control as StyleControl]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n case TypographyControlType:\n return (\n <RenderHook\n key={definition.type}\n hook={useTypographyValue}\n parameters={[data as unknown as TypographyControlData[number]]}\n >\n {value => children(value as ControlDefinitionValue<T>)}\n </RenderHook>\n )\n\n default:\n return children(data as ControlDefinitionValue<T>)\n }\n}\n","import { 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 useResponsiveBorder,\n useResponsiveBorderRadius,\n useResponsiveMargin,\n useResponsivePadding,\n useResponsiveShadow,\n useResponsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n StyleControl,\n RichTextV2Control,\n RichTextV2ControlType,\n StyleV2ControlType,\n TypographyControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text/rich-text'\nimport { useRichTextV2 } from './controls/rich-text-v2'\nimport { IconRadioGroupControlType } from '../../controls/icon-radio-group'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(useResponsiveWidth(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(useResponsivePadding(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(useResponsiveMargin(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(useResponsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(useResponsiveShadow(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(useResponsiveBorder(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 IconRadioGroupControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n case StyleV2ControlType:\n case TypographyControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType: {\n const control = (propControllers?.[propName] ?? null) as StyleControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextV2ControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextV2Control | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichTextV2}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\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 {\n Component,\n MutableRefObject,\n ReactInstance,\n ReactNode,\n forwardRef,\n useImperativeHandle,\n useRef,\n} from 'react'\nimport { findDOMNode } from 'react-dom'\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberReconciler.new.js#L179-L244\n */\nfunction suppressWarningAndFindDomNode(\n instance: ReactInstance | null | undefined,\n): Element | Text | null {\n const error = console.error\n\n console.error = (...args) => {\n if (typeof args[0] === 'string' && args[0].includes('%s is deprecated in StrictMode.')) return\n\n return error.apply(console, args)\n }\n\n const foundDomNode = findDOMNode(instance)\n\n console.error = error\n\n return foundDomNode\n}\n\ntype FindDomNodeClassComponentProps = {\n innerRef: MutableRefObject<(() => Element | Text | null) | null>\n children?: ReactNode\n}\n\nclass FindDomNodeClassComponent extends Component<FindDomNodeClassComponentProps> {\n constructor(props: FindDomNodeClassComponentProps) {\n super(props)\n\n this.props.innerRef.current = () => suppressWarningAndFindDomNode(this)\n }\n\n render() {\n return <>{this.props.children}</>\n }\n}\n\ntype FindDomNodeProps = {\n children?: ReactNode\n}\n\nexport const FindDomNode = forwardRef<() => Element | Text | null, FindDomNodeProps>(\n function FindDomNode(props, ref) {\n const findDomNodeRef = useRef<() => Element | Text | null>(null)\n\n useImperativeHandle(ref, () => () => findDomNodeRef.current?.() ?? null, [])\n\n return <FindDomNodeClassComponent {...props} innerRef={findDomNodeRef} />\n },\n)\n","import { BoxModel, BoxModelHandle } from '../../box-model'\nimport { Descriptor } from '../../prop-controllers/descriptors'\nimport { DescriptorsPropControllers } from '../../prop-controllers/instances'\nimport { isMeasurable, measure } from '../../state/modules/box-models'\nimport {\n isPropControllersHandle,\n PropControllersHandle,\n} from '../../state/modules/prop-controller-handles'\n\nexport class ElementImperativeHandle<\n T extends Record<string, Descriptor> = Record<string, Descriptor>,\n> implements BoxModelHandle, PropControllersHandle<T>\n{\n private getCurrent: () => unknown = () => null\n private lastPropControllers: DescriptorsPropControllers<T> | null = null\n\n callback(getCurrent: () => unknown) {\n const current = this.getCurrent()\n\n if (current === null) this.setPropControllers(null)\n\n this.getCurrent = getCurrent\n\n if (this.lastPropControllers !== null) this.setPropControllers(this.lastPropControllers)\n }\n\n getBoxModel(): BoxModel | null {\n const current = this.getCurrent()\n\n return isMeasurable(current) ? measure(current) : null\n }\n\n setPropControllers(propControllers: DescriptorsPropControllers<T> | null): void {\n const current = this.getCurrent()\n\n if (isPropControllersHandle(current)) current.setPropControllers(propControllers)\n\n this.lastPropControllers = propControllers\n }\n\n getDomNode(): Element | null {\n const current = this.getCurrent()\n\n if (isDomNodeHandle(current)) return current.getDomNode()\n\n return current instanceof Element ? current : null\n }\n}\n\ntype DomNodeHandle = {\n getDomNode(): Element | null\n}\n\nexport function isDomNodeHandle(value: unknown): value is DomNodeHandle {\n if (\n typeof value === 'object' &&\n value !== null &&\n 'getDomNode' in value &&\n typeof (value as { getDomNode: unknown }).getDomNode === 'function'\n ) {\n return true\n }\n\n return false\n}\n","'use client'\n\nimport {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n memo,\n ReactNode,\n Ref,\n Suspense,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useMemo,\n} from 'react'\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector'\nimport dynamic from 'next/dynamic'\n\nimport * as ReactPage from '../../state/react-page'\nimport type * as ReactBuilderPreview from '../../state/react-builder-preview'\nimport {\n mountComponentEffect,\n registerComponentEffect,\n registerComponentHandleEffect,\n registerReactComponentEffect,\n} from '../../state/actions'\nimport type {\n PropControllerDescriptor,\n PropControllerDescriptorValueType,\n} from '../../prop-controllers'\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport { registerBuiltinComponents } from '../../components/builtin/register'\nimport { MakeswiftClient } from '../../api/react'\nimport { FallbackComponent } from '../../components/shared/FallbackComponent'\nimport { PropsValue } from './controls'\nimport { FindDomNode } from './find-dom-node'\nimport { useGlobalElement, useLocalizedGlobalElement } from './hooks/makeswift-api'\nimport { ElementImperativeHandle } from './element-imperative-handle'\nimport { BuilderEditMode } from '../../state/modules/builder-edit-mode'\nimport {\n Breakpoints,\n BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nexport class ReactRuntime {\n // TODO: the static methods here are deprecated and only keep here for backward-compatibility purpose.\n // We will remove them when we release a new breaking change.\n // ------------------ Deprecated API ------------------ //\n static store = ReactPage.configureStore()\n static registerComponent<\n P extends Record<string, PropControllerDescriptor>,\n C extends ReactPage.ComponentType<{ [K in keyof P]: PropControllerDescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Code,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.store.dispatch(\n registerReactComponentEffect(type, component as unknown as ReactPage.ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n static copyElementTree(\n elementTree: ReactPage.ElementData,\n replacementContext: ReactPage.SerializableReplacementContext,\n ): ReactPage.Element {\n return ReactPage.copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n static getBreakpoints(): Breakpoints {\n return ReactPage.getBreakpoints(this.store.getState())\n }\n\n static getTranslatableData(elementTree: ReactPage.ElementData): Record<string, ReactPage.Data> {\n return ReactPage.getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n static mergeTranslatedData(\n elementTree: ReactPage.ElementData,\n translatedData: Record<string, ReactPage.Data>,\n ): ReactPage.Element {\n return ReactPage.mergeElementTreeTranslatedData(\n this.store.getState(),\n elementTree,\n translatedData,\n )\n }\n // ------------------ Deprecated API ends here ------------------ //\n\n store: ReactPage.Store\n\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 {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n props,\n }: { type: string; label: string; icon?: ComponentIcon; hidden?: boolean; props?: P },\n ): () => void {\n const unregisterComponent = this.store.dispatch(\n registerComponentEffect(type, { label, icon, hidden }, props ?? {}),\n )\n\n const unregisterReactComponent = this.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 ): ReactPage.Element {\n return ReactPage.copyElementTree(this.store.getState(), elementTree, replacementContext)\n }\n getBreakpoints(): Breakpoints {\n return ReactPage.getBreakpoints(this.store.getState())\n }\n\n constructor({ breakpoints }: { breakpoints?: BreakpointsInput } = {}) {\n this.store = ReactPage.configureStore({\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n\n registerBuiltinComponents(this)\n }\n\n getTranslatableData(elementTree: ReactPage.ElementData): Record<string, ReactPage.Data> {\n return ReactPage.getElementTreeTranslatableData(this.store.getState(), elementTree)\n }\n\n mergeTranslatedData(\n elementTree: ReactPage.ElementData,\n translatedData: Record<string, ReactPage.Data>,\n ): ReactPage.Element {\n return ReactPage.mergeElementTreeTranslatedData(\n this.store.getState(),\n elementTree,\n translatedData,\n )\n }\n}\n\n// TODO: We should delete this once we remove the static methods in ReactRuntime.\nregisterBuiltinComponents(ReactRuntime)\n\nexport const StoreContext = createContext(ReactRuntime.store)\n\ntype RuntimeProviderProps = {\n client: MakeswiftClient\n preview: boolean\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nconst PreviewProvider = dynamic(() => import('./components/PreviewProvider'))\nconst LiveProvider = dynamic(() => import('./components/LiveProvider'))\n\nexport function RuntimeProvider({ preview, ...props }: RuntimeProviderProps): JSX.Element {\n return preview ? <PreviewProvider {...props} /> : <LiveProvider {...props} />\n}\n\nconst PageContext = createContext<string | null>(null)\n\nfunction usePageIdOrNull(): string | null {\n return useContext(PageContext)\n}\n\nexport function usePageId(): string {\n const pageIdOrNull = usePageIdOrNull()\n\n if (pageIdOrNull == null) throw new Error('`usePageId` must be used with `<PageProvider>`')\n\n return pageIdOrNull\n}\n\ntype PageProviderProps = {\n id: string\n children: ComponentPropsWithoutRef<typeof PageContext['Provider']>['children']\n}\n\nexport function PageProvider({ id, children }: PageProviderProps) {\n return <PageContext.Provider value={id}>{children}</PageContext.Provider>\n}\n\nconst DocumentContext = createContext<string | null>(null)\n\nexport function useDocumentKey(): string | null {\n return useContext(DocumentContext)\n}\n\n/**\n * @note Instead of leveraging `DocumentContext` to detect cycles we have to use a separate\n * construct because not all global element documents are wrapped in `DocumentContext.Provider`. The\n * reason for this is to maintain legacy behavior where we don't register the elements in a global\n * element's document so that they're not selectable. This is clearly suboptimal and the ideal\n * scenario would be to have the builder be aware of multiple documents and only show telegraphs\n * for the document that's currently \"active\".\n */\nconst DocumentCyclesContext = createContext<string[]>([])\n\ntype State = ReactPage.State | ReactBuilderPreview.State\n\nexport function useStore(): ReactPage.Store {\n return useContext(StoreContext)\n}\n\nexport function useSelector<R>(selector: (state: State) => R): R {\n const store = useStore()\n\n return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, selector)\n}\n\nfunction useComponent(type: string): ReactPage.ComponentType | null {\n return useSelector(state => ReactPage.getReactComponent(state, type))\n}\n\nexport function useElementId(elementKey: string | null | undefined): string | null {\n const documentKey = useDocumentKey()\n\n return useSelector(state =>\n documentKey == null || elementKey == null\n ? null\n : ReactPage.getElementId(state, documentKey, elementKey),\n )\n}\n\nfunction useDocument(documentKey: string): ReactPage.Document | null {\n return useSelector(state => ReactPage.getDocument(state, documentKey))\n}\n\nexport function useIsInBuilder(): boolean {\n return useSelector(state => ReactPage.getIsInBuilder(state))\n}\n\nexport function useIsPreview(): boolean {\n return useSelector(state => ReactPage.getIsPreview(state))\n}\n\nexport function useBuilderEditMode(): BuilderEditMode | null {\n return useSelector(state => ReactPage.getBuilderEditMode(state))\n}\n\nexport function useBreakpoints(): Breakpoints {\n return useSelector(state => ReactPage.getBreakpoints(state))\n}\n\ntype Dispatch = ReactPage.Dispatch & ReactBuilderPreview.Dispatch\n\nfunction useDispatch(): Dispatch {\n const store = useContext(StoreContext)\n\n return store.dispatch\n}\n\nconst originalError = console.error\nlet patched = false\n\n/**\n * @see https://github.com/facebook/react/blob/a2505792ed17fd4d7ddc69561053c3ac90899491/packages/react-reconciler/src/ReactFiberBeginWork.new.js#L1814-L1890\n */\nfunction suppressRefWarning(ownerName: string): void {\n if (patched === false) {\n console.error = (...args) => {\n if (\n typeof args[0] === 'string' &&\n args[0].includes('Function components cannot be given refs.') &&\n args[0].includes(`Check the render method of \\`${ownerName}\\`.`)\n ) {\n return\n }\n\n return originalError(...args)\n }\n\n patched = true\n }\n}\n\ntype ElementDataProps = {\n elementData: ReactPage.ElementData\n}\n\nconst ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n suppressRefWarning(`\\`ForwardRef(${ElementData.name})\\``)\n\n if (Component == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n return (\n <Suspense>\n <PropsValue element={elementData}>\n {props => <Component {...props} key={elementData.key} ref={ref} />}\n </PropsValue>\n </Suspense>\n )\n }),\n)\n\nconst DisableRegisterElement = createContext(false)\n\ntype ElementRefereceProps = {\n elementReference: ReactPage.ElementReference\n}\n\nconst ElementReference = memo(\n forwardRef(function ElementReference(\n { elementReference }: ElementRefereceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const globalElement = useGlobalElement(elementReference.value)\n // Update the logic here when we can merge element trees\n const localizedGlobalElement = useLocalizedGlobalElement(elementReference.value)\n const globalElementData = (localizedGlobalElement?.data ?? globalElement?.data) as\n | ReactPage.ElementData\n | undefined\n const elementReferenceDocument = useDocument(elementReference.key)\n const documentKey = elementReference.key\n const documentKeys = useContext(DocumentCyclesContext)\n const providedDocumentKeys = useMemo(\n () => [...documentKeys, documentKey],\n [documentKeys, documentKey],\n )\n\n if (globalElementData == null) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component doesn't exist\"\n />\n )\n }\n\n if (documentKeys.includes(documentKey)) {\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"This global component contains itself!\"\n />\n )\n }\n\n return (\n <DocumentCyclesContext.Provider value={providedDocumentKeys}>\n {elementReferenceDocument != null ? (\n <Document document={elementReferenceDocument} ref={ref} />\n ) : (\n <DisableRegisterElement.Provider value={true}>\n <ElementData elementData={globalElementData} ref={ref} />\n </DisableRegisterElement.Provider>\n )}\n </DocumentCyclesContext.Provider>\n )\n }),\n)\n\ntype ElementProps = {\n element: ReactPage.Element\n}\n\nexport const Element = memo(\n forwardRef(function Element(\n { element }: ElementProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const elementKey = element.key\n const dispatch = useDispatch()\n const documentKey = useDocumentKey()\n const useFindDomNodeRef = useRef(true)\n const imperativeHandleRef = useRef(new ElementImperativeHandle())\n const findDomNodeCallbackRef = useCallback((current: (() => Element | Text | null) | null) => {\n if (useFindDomNodeRef.current === true) {\n imperativeHandleRef.current.callback(() => current?.() ?? null)\n }\n }, [])\n const elementCallbackRef = useCallback((current: unknown | null) => {\n useFindDomNodeRef.current = false\n\n imperativeHandleRef.current.callback(() => current)\n }, [])\n const isRegisterElementDisabled = useContext(DisableRegisterElement)\n\n useImperativeHandle(ref, () => imperativeHandleRef.current, [])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(\n registerComponentHandleEffect(documentKey, elementKey, imperativeHandleRef.current),\n )\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n useEffect(() => {\n if (documentKey == null || isRegisterElementDisabled) return\n\n return dispatch(mountComponentEffect(documentKey, elementKey))\n }, [dispatch, documentKey, elementKey, isRegisterElementDisabled])\n\n return (\n <FindDomNode ref={findDomNodeCallbackRef}>\n {ReactPage.isElementReference(element) ? (\n <ElementReference key={elementKey} ref={elementCallbackRef} elementReference={element} />\n ) : (\n <ElementData key={elementKey} ref={elementCallbackRef} elementData={element} />\n )}\n </FindDomNode>\n )\n }),\n)\n\ntype DocumentProps = {\n document: ReactPage.Document\n}\n\nconst Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentContext.Provider value={document.key}>\n <Element ref={ref} element={document.rootElement} />\n </DocumentContext.Provider>\n )\n }),\n)\n\ntype DocumentReferenceProps = {\n documentReference: ReactPage.DocumentReference\n}\n\nexport const DocumentReference = memo(\n forwardRef(function DocumentReference(\n { documentReference }: DocumentReferenceProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n const document = useDocument(documentReference.key)\n\n if (document == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Document not found\" />\n }\n\n return <Document ref={ref} document={document} />\n }),\n)\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","getAPIResource","APIResources.reducer","APIResources.getHasAPIResource","APIResources.getAPIResource","APIResources.getInitialState","MakeswiftClient","constructor","uri","cacheData","localizedResourcesMap","locale","graphqlClient","makeswiftApiClient","subscribe","GraphQLClient","MakeswiftApiClient","serializedState","Map","Object","entries","readSwatch","swatchId","getState","APIResourceType","Swatch","fetchSwatch","dispatch","readFile","fileId","File","fetchFile","readTypography","typographyId","Typography","fetchTypography","readGlobalElement","globalElementId","GlobalElement","fetchGlobalElement","readLocalizedGlobalElement","localizedGlobalElementId","getLocalizedResourceId","LocalizedGlobalElement","fetchLocalizedGlobalElement","noLocalizedResource","cacheResult","result","setLocalizedResourceId","resourceId","localizedResourceId","id","readPagePathnameSlice","pageId","PagePathnameSlice","fetchPagePathnameSlice","readTable","tableId","Table","fetchTable","createTableRecord","columns","request","CreateTableRecordMutation","input","data","readSite","siteId","Site","readPage","Page","readSnippet","snippetId","Snippet","get","set","Context","createContext","useContext","client","children","_jsx","SnippetLocation","Body","Head","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","props","filterUsedSnippetProperties","builderEnabled","liveEnabled","location","page","isInBuilder","useIsInBuilder","snippets","setSnippets","useState","cachedPage","useCachedPage","oldSnippets","newSnippets","deepEqual","site","useCachedSite","baseLocalizedPage","localizedPages","find","parentId","favicon","meta","title","description","keywords","socialImage","canonicalUrl","seo","isIndexingBlocked","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","documentId","elementTreeId","_Fragment","_jsxs","snippetToElement","child","includes","createDocumentReference","useMakeswiftClient","getSnapshot","useSyncExternalStore","makeswiftSiteVersionSchema","z","enum","MakeswiftSiteVersion","Enum","makeswiftPreviewDataSchema","object","makeswift","literal","siteVersion","previewData","safeParse","success","isPreview","appOrigin","previewModeScript","makeswiftConnectionCheckScript","ActionTypes","MAKESWIFT_CONNECTION_INIT","MAKESWIFT_CONNECTION_CHECK","__html","Document","NextDocument","getInitialProps","ctx","initialProps","extractCritical","createEmotionServer","cache","ids","css","html","styles","render","__NEXT_DATA__","matchPattern","manifest","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","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","params","path","split","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","notFound","revalidate","memo","runtime","href","Intl","Locale","undefined","rootElements","localizedPage","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","uuid","Props.Number","Props.Date","Props.Font","Props.ResponsiveLength","Props.TextArea","Props.Table","Props.TableFormFields","Props.Image","Props.ResponsiveOpacity","Props.NavigationLinks","Props.SocialLinks","Props.Video","registerBoxComponent","registerButtonComponent","registerCarouselComponent","registerCountdownComponent","registerDividerComponent","registerEmbedComponent","registerFormComponent","registerImageComponent","registerNavigationComponent","registerRootComponent","registerSocialLinksComponent","registerTextComponent","registerVideoComponent","FallbackComponent","text","useStyle","width","height","backgroundColor","borderRadius","padding","display","alignItems","gap","color","fill","fontFamily","fontSize","Warning20","joinResponsiveValues","useStyleControlCssObject","Color","match","definition","control","controls","setControls","setItemsControl","reduce","renderFn","item","listControlValue","config","EditableText","forwardNextDynamicRef","patch","dynamic","ReadOnlyText","textCallbackRef","useCallback","handle","isPropControllersHandle","setPropControllers","useIsPreview","ReadOnlyTextV1","isRichTextV1Data","reduceRight","controlDefinition","shapeControlValue","elements","length","i","Element","as","className","restOfProps","As","setElement","baseClassName","flexWrap","pollBoxModel","onBoxModelChange","boxModel","changeContainerBoxModel","cx","Slot","Placeholder","SlotPlaceholder","Item","SlotItem","grid","index","useResponsiveStyle","count","spans","rowIndex","columnIndex","getIndexes","span","flexBasis","toFixed","minWidth","changeItemBoxModel","background","overflow","styleControlData","breakpoints","useBreakpoints","getStyle","findBreakpointOverride","getBaseBreakpoint","mergeOrCoalesceFallbacks","breakpoint","getBreakpointMediaQuery","deviceOverrideData","responsiveValue","useFormattedStyleV2","isNonNullable","CheckboxControlType","useCheckboxControlValue","NumberControlType","useNumber","TextInputControlType","useTextInputValue","TextAreaControlType","useTextAreaValue","SelectControlType","useSelectControlValue","ColorControlType","useColorValue","IconRadioGroupControlType","useIconRadioGroupValue","ImageControlType","useImageControlValue","LinkControlType","useLinkControlValue","ComboboxControlType","useComboboxControlValue","ShapeControlType","ListControlType","StyleV2ControlType","SlotControlType","useSlot","RichTextControlType","useRichText","RichTextV2ControlType","useRichTextV2","StyleControlType","useFormattedStyle","TypographyControlType","useTypographyValue","descriptor","useResponsiveWidth","options","defaultValue","useResponsivePadding","useResponsiveMargin","useResponsiveBorderRadius","shadowValue","useBoxShadow","useResponsiveShadow","borderData","useBorderData","useResponsiveBorder","store","useStore","propControllerDescriptorsRef","ReactPage","documentKey","useDocumentKey","propControllers","useSelector","state","propName","propsValue","Props","Width","format","WidthPropControllerFormat","ClassName","useWidthStyle","Padding","PaddingPropControllerFormat","usePaddingStyle","Margin","MarginPropControllerFormat","useMarginStyle","BorderRadius","BorderRadiusPropControllerFormat","useBorderRadiusStyle","Shadows","ShadowsPropControllerFormat","useShadowsStyle","Border","BorderPropControllerFormat","useBorderStyle","ResponsiveColor","useResponsiveColor","instance","args","apply","foundDomNode","findDOMNode","FindDomNodeClassComponent","Component","innerRef","suppressWarningAndFindDomNode","FindDomNode","findDomNodeRef","ReactRuntime","parseBreakpointsInput","registerBuiltinComponents","registerComponent","component","label","icon","ComponentIcon","Code","hidden","unregisterComponent","registerComponentEffect","unregisterReactComponent","registerReactComponentEffect","copyElementTree","elementTree","replacementContext","getBreakpoints","getTranslatableData","mergeTranslatedData","translatedData","Cube","StoreContext","PreviewProvider","LiveProvider","PageContext","pageIdOrNull","usePageIdOrNull","DocumentContext","DocumentCyclesContext","selector","useSyncExternalStoreWithSelector","elementKey","originalError","patched","ownerName","ElementData","elementData","useComponent","_createElement","DisableRegisterElement","ElementReference","elementReference","globalElement","useGlobalElement","localizedGlobalElement","useLocalizedGlobalElement","globalElementData","elementReferenceDocument","useDocument","documentKeys","providedDocumentKeys","useDispatch","useFindDomNodeRef","imperativeHandleRef","ElementImperativeHandle","findDomNodeCallbackRef","callback","elementCallbackRef","isRegisterElementDisabled","useImperativeHandle","registerComponentHandleEffect","mountComponentEffect","rootElement","DocumentReference","documentReference"],"mappings":"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"}