@makeswift/runtime 0.25.1 → 0.25.2-canary.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.
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/client/index.js +1 -1
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/components/builtin/Carousel/Carousel.js +0 -1
- package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/cjs/components/builtin/Carousel/register.js +3 -4
- package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/components/builtin/Carousel/Carousel.js +0 -1
- package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/esm/components/builtin/Carousel/register.js +3 -4
- package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -28,7 +28,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
28
28
|
return import_request_response.ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
29
29
|
}
|
|
30
30
|
return import_request_response.ApiResponse.json({
|
|
31
|
-
version: "0.25.1",
|
|
31
|
+
version: "0.25.2-canary.1",
|
|
32
32
|
interactionMode: true,
|
|
33
33
|
clientSideNavigation: false,
|
|
34
34
|
elementFromPoint: false,
|
package/dist/cjs/client/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { 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 SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } 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 type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { type SiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\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 function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport const previewTokenPayloadSchema = z.object({\n payload: z.object({\n version: z.string(),\n }),\n})\n\nexport type PreviewTokenPayload = z.infer<typeof previewTokenPayloadSchema>\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\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}\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 localizedPathname: z.string().optional(),\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 MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: 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 }\n\n private async fetch(path: string, siteVersion: SiteVersion | null): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'X-API-Key': this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n const response = await fetch(requestUrl.toString(), {\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: SiteVersion | null): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = null,\n ...params\n }: {\n siteVersion?: SiteVersion | null\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n { siteVersion = null, locale }: { siteVersion?: SiteVersion | null; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v3/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v3/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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\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 siteVersion: SiteVersion | null,\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, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: SiteVersion | null,\n locale: string | null,\n ): Promise<CacheData> {\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, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\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], siteVersion)\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], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\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 locale,\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 locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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 siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\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 siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\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 ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { 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 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 async readPreviewToken(token: string): Promise<PreviewTokenPayload | null> {\n const response = await fetch(new URL('v1/preview-tokens/reads', this.apiOrigin).toString(), {\n method: 'POST',\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n console.error(`Preview token is invalid or expired`, {\n response: await failedResponseBody(response),\n })\n } else if (response.status !== 404) {\n console.error(`Failed to verify preview token`, {\n response: await failedResponseBody(response),\n })\n }\n\n return null\n }\n\n const json = await response.json()\n\n const parsed = previewTokenPayloadSchema.safeParse(json)\n if (!parsed.success) {\n throw new Error(\n `Failed to parse preview token payload: ${parsed.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n\n return parsed.data\n }\n}\n"],"mappings":"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","names":["import_types","getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { 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 SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } 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 type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { type SiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 100,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\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 function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport const previewTokenPayloadSchema = z.object({\n payload: z.object({\n version: z.string(),\n }),\n})\n\nexport type PreviewTokenPayload = z.infer<typeof previewTokenPayloadSchema>\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\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}\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 localizedPathname: z.string().optional(),\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 MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: 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 }\n\n private async fetch(path: string, siteVersion: SiteVersion | null): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'X-API-Key': this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n const response = await fetch(requestUrl.toString(), {\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: SiteVersion | null): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = null,\n ...params\n }: {\n siteVersion?: SiteVersion | null\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n { siteVersion = null, locale }: { siteVersion?: SiteVersion | null; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v3/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v3/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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\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 siteVersion: SiteVersion | null,\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, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: SiteVersion | null,\n locale: string | null,\n ): Promise<CacheData> {\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, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\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], siteVersion)\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], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\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 locale,\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 locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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 siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\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 siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\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 ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { 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 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 async readPreviewToken(token: string): Promise<PreviewTokenPayload | null> {\n const response = await fetch(new URL('v1/preview-tokens/reads', this.apiOrigin).toString(), {\n method: 'POST',\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n console.error(`Preview token is invalid or expired`, {\n response: await failedResponseBody(response),\n })\n } else if (response.status !== 404) {\n console.error(`Failed to verify preview token`, {\n response: await failedResponseBody(response),\n })\n }\n\n return null\n }\n\n const json = await response.json()\n\n const parsed = previewTokenPayloadSchema.safeParse(json)\n if (!parsed.success) {\n throw new Error(\n `Failed to parse preview token payload: ${parsed.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n\n return parsed.data\n }\n}\n"],"mappings":"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","names":["import_types","getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
@@ -311,7 +311,6 @@ const Carousel = (0, import_react.forwardRef)(function Carousel2({
|
|
|
311
311
|
children: images.map(({ props: imageProps, key }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
312
312
|
import_framer_motion.motion.div,
|
|
313
313
|
{
|
|
314
|
-
id: key,
|
|
315
314
|
className: slideClassName,
|
|
316
315
|
onMouseDown: (e) => e.preventDefault(),
|
|
317
316
|
onClick: (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n id={key}\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCI;AAjCJ,mBAQO;AACP,2BAAqC;AACrC,IAAAA,gBAA2B;AAC3B,qBAAqB;AAErB,sBAAkC;AAElC,2BAA8B;AAE9B,mBAA8B;AAE9B,mBAAkB;AAClB,uBAAyB;AACzB,iBAAmB;AACnB,8BAAmC;AACnC,6BAA+B;AAQ/B,MAAM,cAAc,MAClB,4CAAC,SAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aACrE;AAAA,EAAC;AAAA;AAAA,IACC,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA;AACd,GACF;AAGF,MAAM,eAAe,MACnB,4CAAC,SAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aACrE;AAAA,EAAC;AAAA;AAAA,IACC,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA;AACd,GACF;AAwBF,MAAM,kBAAkB;AACxB,MAAM,aAAa,CAAC,IAAY,aAAqB,MAAM,IAAI;AAI/D,MAAM,gBAAgB,CAAC,cAAsB,IAAI,UAAU,MAAM,GAAG,EAAE,KAAK,GAAG,CAAC;AAE/E,MAAM,eAAW,yBAAW,SAASC,UACnC;AAAA,EACE,SAAS,CAAC;AAAA,EACV;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GACA,KACA;AACA,QAAM,kBAAc,uCAAe;AACnC,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAS,CAAC;AACpC,QAAM,YAAQ,qBAAO,CAAC;AACtB,QAAM,iBAAa,qBAAK,GAAG,OAAO,QAAQ,KAAK;AAC/C,QAAM,eAAW,4BAAc,kBAAkB,KAAK;AACtD,QAAM,WAAO,4BAAc,cAAc,KAAK;AAC9C,QAAM,WAAW,aAAa;AAC9B,QAAM,YAAY,KAAK,MAAM,OAAO,SAAS,YAAY,OAAO,CAAC;AACjE,QAAM,YAAY,KAAK,KAAK,aAAa,IAAI;AAC7C,QAAM,cAAc,cAAc;AAClC,QAAM,aAAa,cAAc,YAAY;AAC7C,QAAM,eAAW;AAAA,IACf,CAAC,iBAAyB;AACxB,UAAI,iBAAiB;AAAG;AAExB,YAAM,YAAY,eAAe,KAAK,IAAI,YAAY;AACtD,YAAM,YAAY,YAAY,IAAI,OAAO,MAAM,QAAQ,IAAI,OAAO,MAAM,GAAG,UAAU;AACrF,YAAM,WAAW,YAAY,KAAK,IAAI,UAAU,QAAQ,OAAO,KAAK,IAAI,YAAY,CAAC;AAErF,eAAS,QAAQ,QAAQ;AAAA,IAC3B;AAAA,IACA,CAAC,QAAQ,OAAO,YAAY,UAAU,IAAI;AAAA,EAC5C;AAEA,QAAM,gBAAY,mCAAa,EAAE,GAAG,GAAG,YAAY,EAAE,MAAM,UAAU,WAAW,IAAI,EAAE,CAAC;AACvF,QAAM,eAAW;AAAA,IACf;AAAA,MACE,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM;AAC3D,kBAAU,MAAM,EAAE,GAAG,GAAG,CAAC;AACzB,cAAM,UAAU,WAAW,IAAI,EAAE;AAAA,MACnC;AAAA,MACA,WAAW,MAAM;AACf,kBAAU,MAAM,EAAE,GAAG,EAAE,CAAC;AAExB,YAAI,MAAM,UAAU;AAAiB,mBAAS,CAAC;AAAA,iBACtC,MAAM,UAAU,CAAC;AAAiB,mBAAS,EAAE;AAAA,MACxD;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;AAAA,QAC5B,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAEA,8BAAU,MAAM;AACd,QAAI,CAAC,YAAY,aAAa;AAAG,eAAS,CAAC;AAAA,EAC7C,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,8BAAU,MAAM;AACd,QAAI,CAAC;AAAU,aAAO,MAAM;AAAA,MAAC;AAE7B,UAAM,aAAa,YAAY,MAAO,aAAa,SAAS,CAAC,IAAI,SAAS,CAAC,GAAI,QAAQ,GAAI;AAE3F,WAAO,MAAM,cAAc,UAAU;AAAA,EACvC,GAAG,CAAC,UAAU,OAAO,UAAU,UAAU,CAAC;AAE1C,QAAM,wBAAoB,2BAAS,EAAE,UAAU,SAAS,CAAC;AACzD,QAAM,oBAAgB,2BAAS,EAAE,UAAU,YAAY,OAAO,OAAO,CAAC;AACtE,QAAM,qBAAiB;AAAA,QACrB,2BAAS,EAAE,SAAS,OAAO,CAAC;AAAA,QAC5B;AAAA,UACE,4CAAmB,CAAC,kBAAkB,GAAY,CAAC,CAACC,YAAW,CAAC,OAAO;AAAA,QACrE,WAAW,GAAG,MAAMA,SAAQ;AAAA,QAC5B,UAAU,GAAG,MAAMA,SAAQ;AAAA,QAC3B,UAAU,GAAG,MAAMA,SAAQ;AAAA,MAC7B,EAAE;AAAA,IACJ;AAAA,QACA;AAAA,UACE,4CAAmB,CAAC,cAAc,GAAY,CAAC,CAAC,aAAa,QAAQ,OAAO,EAAE,WAAW,EAAE;AAAA,IAC7F;AAAA,EACF;AAEA,QAAM,oBAAgB;AAAA,QACpB,2BAAS,EAAE,SAAS,QAAQ,UAAU,YAAY,UAAU,SAAS,CAAC;AAAA,QACtE;AAAA,UACE,4CAAmB,CAAC,GAAG,GAAY,CAAC,CAACC,OAAM,EAAE,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO;AAAA,QACxE,QAAQ,KAAK,GAAG,CAACA,KAAI,QAAQ,CAAC,GAAGA,KAAI,IAAI,EAAE;AAAA,QAC3C,CAAC,OAAO,cAAc,cAAc,CAAC,EAAE,GAAG;AAAA,UACxC,SAAS,KAAK,GAAGA,KAAI,QAAQ,CAAC,GAAGA,KAAI,IAAI,EAAE;AAAA,QAC7C;AAAA,MACF,EAAE;AAAA,IACJ;AAAA,EACF;AAEA,QAAM,qBAAiB;AAAA,QACrB,2BAAS;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,YAAY;AAAA,IACd,CAAC;AAAA,QACD;AAAA,UACE;AAAA,QACE,CAAC,eAAe;AAAA,QAChB,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAG,YAAY,GAAG,WAAW,IAAI,GAAG,OAAO,EAAE,CAAC,OAAO;AAAA,UACnF,gBAAY,oCAAc,UAAU;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,QACA,2BAAS,EAAE,KAAK,EAAE,YAAY,mBAAmB,QAAQ,eAAe,EAAE,CAAC;AAAA,EAC7E;AAEA,QAAM,oBAAgB;AAAA,QACpB,2BAAS;AAAA,MACP,UAAU;AAAA,MACV,KAAK;AAAA,MACL,QAAQ;AAAA,MAER,SAAS;AAAA,MACT,aAAa;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MAEA,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAAA,QACD;AAAA,UACE;AAAA,QACE,CAAC,UAAU;AAAA,QACX,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,YAAY,GAAG,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,OAAO;AAAA,UAC5E,WAAO,oCAAc,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,wBAAoB;AAAA,IACxB;AAAA,QACA;AAAA,UACE,4CAAmB,CAAC,aAAa,GAAY,CAAC,CAAC,WAAW,QAAQ,MAAM;AACtE,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO,EAAE,WAAW,kBAAkB;AAAA,UAExC,KAAK;AACH,mBAAO,EAAE,WAAW,gCAAgC;AAAA,UAEtD;AACE,mBAAO,EAAE,WAAW,yBAAyB;AAAA,QACjD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,QACA,2BAAS;AAAA,MACP,MAAM;AAAA,MAEN,CAAC,aAAa,cAAc,cAAc,CAAC,EAAE,GAAG;AAAA,QAC9C,WAAW;AAAA,UACT,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,yBAAqB;AAAA,IACzB;AAAA,QACA;AAAA,UACE,4CAAmB,CAAC,aAAa,GAAY,CAAC,CAAC,WAAW,QAAQ,MAAM;AACtE,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO,EAAE,WAAW,mBAAmB;AAAA,UAEzC,KAAK;AACH,mBAAO,EAAE,WAAW,+BAA+B;AAAA,UAErD;AACE,mBAAO,EAAE,WAAW,wBAAwB;AAAA,QAChD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,QACA,2BAAS;AAAA,MACP,OAAO;AAAA,MACP,CAAC,aAAa,cAAc,cAAc,CAAC,EAAE,GAAG;AAAA,QAC9C,WAAW;AAAA,UACT,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,oBAAgB;AAAA,QACpB,2BAAS,EAAE,SAAS,WAAW,SAAS,QAAQ,gBAAgB,UAAU,WAAW,GAAG,CAAC;AAAA,QACzF;AAAA,UACE;AAAA,QACE,CAAC,QAAQ;AAAA,QACT,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,YAAY,GAAG,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,OAAO;AAAA,UAC5E,WAAO,oCAAc,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAW;AAAA,YACT,2BAAS,EAAE,UAAU,YAAY,SAAS,QAAQ,eAAe,SAAS,CAAC;AAAA,QAC3E;AAAA,QACA;AAAA,YACA,2BAAS,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC;AAAA,MACxC;AAAA,MACA,UAAU;AAAA,MACV,WAAW,OAAK;AACd,gBAAQ,EAAE,KAAK;AAAA,UACb,KAAK;AACH,qBAAS,CAAC;AACV;AAAA,UACF,KAAK;AACH,qBAAS,EAAE;AACX;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAGA;AAAA,qDAAC,SAAI,eAAW,2BAAS,EAAE,UAAU,YAAY,QAAQ,OAAO,CAAC,GAC/D;AAAA,sDAAC,SAAI,WAAW,mBAGd,sDAAC,4BAAO,KAAP,EAAY,GAAG,SAAS,GAAG,WAAW,eAAe,SAAS,WAC7D;AAAA,YAAC,4BAAO;AAAA,YAAP;AAAA,cACC,WAAW;AAAA,cACX,SAAS,EAAE,GAAG,GAAG,EAAE,MAAM,YAAY,UAAU,IAAI;AAAA,cACnD,YAAY;AAAA,gBACV,GAAG;AAAA,kBACD,MAAM;AAAA,kBACN,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC;AAAA,kBAC3B,UAAU;AAAA,gBACZ;AAAA,cACF;AAAA,cAEC,iBAAO,IAAI,CAAC,EAAE,OAAO,YAAY,IAAI,MACpC;AAAA,gBAAC,4BAAO;AAAA,gBAAP;AAAA,kBACC,IAAI;AAAA,kBAEJ,WAAW;AAAA,kBACX,aAAa,OAAK,EAAE,eAAe;AAAA,kBACnC,SAAS,OAAK;AACZ,wBAAI,MAAM,YAAY;AAAG,wBAAE,eAAe;AAAA,kBAC5C;AAAA,kBAEA;AAAA,oBAAC,aAAAC;AAAA,oBAAA;AAAA,sBACC,OAAO;AAAA,wBACL;AAAA,0BACE,cAAU,mCAAkB,WAAW,EAAE;AAAA,0BACzC,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI;AAAA,wBACjC;AAAA,sBACF;AAAA,sBACA,MAAM,WAAW;AAAA,sBACjB,SAAS,WAAW;AAAA,sBACpB,MAAM,WAAW;AAAA,sBACjB,QAAQ;AAAA,sBACR,cAAc;AAAA;AAAA,kBAChB;AAAA;AAAA,gBAnBK;AAAA,cAoBP,CACD;AAAA;AAAA,UACH,GACF,GACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,SAAS,EAAE;AAAA,cAC1B,WAAW;AAAA,cACX,QAAQ,CAAC,cAAc;AAAA,cAEvB,sDAAC,SAAI,WAAW,gBACd,sDAAC,eAAY,GACf;AAAA;AAAA,UACF;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM,SAAS,CAAC;AAAA,cACzB,WAAW;AAAA,cACX,QAAQ,CAAC,cAAc;AAAA,cAEvB,sDAAC,SAAI,WAAW,gBACd,sDAAC,gBAAa,GAChB;AAAA;AAAA,UACF;AAAA,WACF;AAAA,QACA,4CAAC,SAAI,WAAW,eACb,gBAAM,KAAK,EAAE,QAAQ,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,MACzC,4CAAC,OAAY,QAAQ,MAAM,WAAW,SAAS,MAAM,SAAS,IAAI,SAAS,KAAjE,CAAoE,CAC/E,GACH;AAAA;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,IAAO,mBAAQ;AASf,SAAS,IAAI,EAAE,WAAW,QAAQ,GAAG,YAAY,GAAa;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,eAAW;AAAA,YACT,2BAAS;AAAA,UACP,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,QAAQ;AAAA,UAER,uBAAuB;AAAA,YACrB,SAAS;AAAA,YACT,UAAU;AAAA,YACV,KAAK;AAAA,YACL,MAAM;AAAA,YACN,SAAS;AAAA,YACT,cAAc;AAAA,YACd,YAAY;AAAA,UACd;AAAA,UAEA,aAAa;AAAA,YACX,WAAW;AAAA,YACX,WAAW;AAAA,YACX,OAAO,SAAS,KAAK;AAAA,YACrB,QAAQ,SAAS,KAAK;AAAA,UACxB;AAAA,UAEA,YAAY;AAAA,YACV,YAAY;AAAA,YACZ,WAAW,oCAAoC,SAAS,IAAI,CAAC;AAAA,YAC7D,OAAO;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,UAEA,kBAAkB;AAAA,YAChB,WAAW,oCAAoC,SAAS,IAAI,CAAC;AAAA,UAC/D;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;","names":["import_react","Carousel","pageSize","gap","Image"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":"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","names":["import_react","Carousel","pageSize","gap","Image"]}
|
|
@@ -31,7 +31,6 @@ __export(register_exports, {
|
|
|
31
31
|
registerComponent: () => registerComponent
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(register_exports);
|
|
34
|
-
var import_uuid = require("uuid");
|
|
35
34
|
var import_controls = require("@makeswift/controls");
|
|
36
35
|
var import_prop_controllers = require("@makeswift/prop-controllers");
|
|
37
36
|
var import_constants = require("../constants");
|
|
@@ -49,9 +48,9 @@ function registerComponent(runtime) {
|
|
|
49
48
|
id: (0, import_prop_controllers.ElementID)(),
|
|
50
49
|
images: (0, import_prop_controllers.Images)({
|
|
51
50
|
preset: [
|
|
52
|
-
{ key:
|
|
53
|
-
{ key:
|
|
54
|
-
{ key:
|
|
51
|
+
{ key: "image-1", props: {} },
|
|
52
|
+
{ key: "image-2", props: {} },
|
|
53
|
+
{ key: "image-3", props: {} }
|
|
55
54
|
]
|
|
56
55
|
}),
|
|
57
56
|
width: (0, import_prop_controllers.Width)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/register.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/register.ts"],"sourcesContent":["import { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '@makeswift/controls'\nimport {\n BorderRadius,\n ElementID,\n GapX,\n Images,\n ImagesPropControllerData,\n Margin,\n Number,\n ResponsiveColor,\n ResponsiveIconRadioGroup,\n ResponsiveNumber,\n Width,\n getImagesPropControllerDataImagesData,\n type PropData,\n} from '@makeswift/prop-controllers'\n\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\nimport { lazy } from 'react'\nimport {\n Border,\n Checkbox,\n checkboxPropControllerDataSchema,\n getCheckboxPropControllerDataBoolean,\n} from '@makeswift/prop-controllers'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n lazy(() => import('./Carousel')),\n {\n type: MakeswiftComponentType.Carousel,\n label: 'Carousel',\n icon: ComponentIcon.Carousel,\n props: {\n id: ElementID(),\n images: Images({\n preset: [\n { key: 'image-1', props: {} },\n { key: 'image-2', props: {} },\n { key: 'image-3', props: {} },\n ],\n }),\n width: Width({\n format: Width.Format.ClassName,\n defaultValue: { value: 400, unit: 'px' },\n }),\n margin: Margin({ format: Margin.Format.ClassName }),\n pageSize: ResponsiveNumber(props => {\n const images = getImagesPropControllerDataImagesData(\n props.images as ImagesPropControllerData | undefined,\n )\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: ResponsiveNumber((props, device) => {\n const pageSize = ResponsiveNumber.fromPropData(\n props.pageSize as PropData<typeof ResponsiveNumber> | undefined,\n )\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: 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: GapX({\n label: 'Gap',\n step: 5,\n defaultValue: { value: 0, unit: 'px' },\n }),\n autoplay: Checkbox({ label: 'Autoplay' }),\n delay: Number(props => ({\n label: 'Delay',\n preset: 5,\n min: 1,\n step: 0.1,\n suffix: 'seconds',\n hidden: !getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.autoplay),\n ),\n })),\n showArrows: Checkbox({ preset: true, label: 'Show arrows' }),\n arrowPosition: 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:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n arrowColor: ResponsiveColor(props => ({\n label: 'Arrow color',\n placeholder: 'black',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n arrowBackground: ResponsiveColor(props => ({\n label: 'Arrow background',\n placeholder: 'white',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n showDots: Checkbox({ preset: true, label: 'Show dots' }),\n dotColor: ResponsiveColor(props => ({\n label: 'Dot color',\n placeholder: 'black',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showDots),\n ) === false,\n })),\n slideBorder: Border({ format: Border.Format.ClassName }),\n slideBorderRadius: BorderRadius({ format: BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n"],"mappings":"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","names":["import_react","import_prop_controllers"]}
|
|
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
8
8
|
return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
9
9
|
}
|
|
10
10
|
return ApiResponse.json({
|
|
11
|
-
version: "0.25.1",
|
|
11
|
+
version: "0.25.2-canary.1",
|
|
12
12
|
interactionMode: true,
|
|
13
13
|
clientSideNavigation: false,
|
|
14
14
|
elementFromPoint: false,
|
package/dist/esm/client/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { 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 SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } 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 type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { type SiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\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 function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport const previewTokenPayloadSchema = z.object({\n payload: z.object({\n version: z.string(),\n }),\n})\n\nexport type PreviewTokenPayload = z.infer<typeof previewTokenPayloadSchema>\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\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}\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 localizedPathname: z.string().optional(),\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 MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: 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 }\n\n private async fetch(path: string, siteVersion: SiteVersion | null): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'X-API-Key': this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n const response = await fetch(requestUrl.toString(), {\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: SiteVersion | null): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = null,\n ...params\n }: {\n siteVersion?: SiteVersion | null\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n { siteVersion = null, locale }: { siteVersion?: SiteVersion | null; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v3/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v3/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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\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 siteVersion: SiteVersion | null,\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, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: SiteVersion | null,\n locale: string | null,\n ): Promise<CacheData> {\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, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\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], siteVersion)\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], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\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 locale,\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 locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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 siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\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 siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\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 ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { 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 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 async readPreviewToken(token: string): Promise<PreviewTokenPayload | null> {\n const response = await fetch(new URL('v1/preview-tokens/reads', this.apiOrigin).toString(), {\n method: 'POST',\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n console.error(`Preview token is invalid or expired`, {\n response: await failedResponseBody(response),\n })\n } else if (response.status !== 404) {\n console.error(`Failed to verify preview token`, {\n response: await failedResponseBody(response),\n })\n }\n\n return null\n }\n\n const json = await response.json()\n\n const parsed = previewTokenPayloadSchema.safeParse(json)\n if (!parsed.success) {\n throw new Error(\n `Failed to parse preview token payload: ${parsed.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n\n return parsed.data\n }\n}\n"],"mappings":"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","names":["SnippetLocation","getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { 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 SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } 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 type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { type SiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 100,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\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 function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport const previewTokenPayloadSchema = z.object({\n payload: z.object({\n version: z.string(),\n }),\n})\n\nexport type PreviewTokenPayload = z.infer<typeof previewTokenPayloadSchema>\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\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}\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 localizedPathname: z.string().optional(),\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 MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: 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 }\n\n private async fetch(path: string, siteVersion: SiteVersion | null): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'X-API-Key': this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n const response = await fetch(requestUrl.toString(), {\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: SiteVersion | null): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = null,\n ...params\n }: {\n siteVersion?: SiteVersion | null\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n { siteVersion = null, locale }: { siteVersion?: SiteVersion | null; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v3/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v3/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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\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 siteVersion: SiteVersion | null,\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, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: SiteVersion | null,\n locale: string | null,\n ): Promise<CacheData> {\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, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\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], siteVersion)\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], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\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 locale,\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 locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\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 siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\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 siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\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, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\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 ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { 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 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 async readPreviewToken(token: string): Promise<PreviewTokenPayload | null> {\n const response = await fetch(new URL('v1/preview-tokens/reads', this.apiOrigin).toString(), {\n method: 'POST',\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n console.error(`Preview token is invalid or expired`, {\n response: await failedResponseBody(response),\n })\n } else if (response.status !== 404) {\n console.error(`Failed to verify preview token`, {\n response: await failedResponseBody(response),\n })\n }\n\n return null\n }\n\n const json = await response.json()\n\n const parsed = previewTokenPayloadSchema.safeParse(json)\n if (!parsed.success) {\n throw new Error(\n `Failed to parse preview token payload: ${parsed.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n\n return parsed.data\n }\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB;AAAA,EACE;AAAA,OAQK;AACP,SAAS,qBAAqB;AAC9B,SAAS,WAAW,4BAA4B,kBAAkB;AAWlE,SAAS,iBAAiB;AAE1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAKE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAClC,SAAS,cAAc;AACvB,SAAS,8BAAgD;AAEzD,SAAS,mBAAAA,wBAAuB;AAEhC,MAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,iBAAiB,EAAE,OAAO,EAAE,SAAS;AAAA,EACrC,kBAAkB,EACf,KAAK,CAAC,UAAU,UAAU,SAAS,UAAU,WAAW,UAAU,OAAO,CAAC,EAC1E,SAAS;AAAA,EACZ,WAAW,EAAE,OAAO;AAAA,EACpB,WAAW,EAAE,OAAO;AAAA,EACpB,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,oBAAoB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,QAAQ,EAAE,OAAO;AAAA,EACjB,mBAAmB,EAAE;AAAA,IACnB,EAAE,OAAO;AAAA,MACP,QAAQ,EAAE,OAAO;AAAA,MACjB,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH;AACF,CAAC;AAED,MAAM,mCAAmC,EAAE,OAAO;AAAA,EAChD,MAAM,EAAE,MAAM,yBAAyB;AAAA,EACvC,SAAS,EAAE,QAAQ;AACrB,CAAC;AAED,MAAM,gCAAgC,EAAE,OAAO;AAAA,EAC7C,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,QAAQ,eAAe,aAAa,WAAW,CAAC,EAAE,SAAS;AAAA,EACpF,eAAe,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAAA,EAChD,gBAAgB,EAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAED,SAAS,oBAAoB;AAAA,EAC3B,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoC;AAClC,QAAM,SAAS,IAAI,gBAAgB;AAEnC,MAAI,SAAS;AAAM,WAAO,IAAI,SAAS,MAAM,SAAS,CAAC;AACvD,MAAI,SAAS;AAAM,WAAO,IAAI,SAAS,KAAK;AAC5C,MAAI,UAAU;AAAM,WAAO,IAAI,UAAU,MAAM;AAC/C,MAAI,iBAAiB;AAAM,WAAO,IAAI,iBAAiB,aAAa;AACpE,MAAI,kBAAkB;AAAM,WAAO,IAAI,kBAAkB,eAAe,SAAS,CAAC;AAClF,MAAI,cAAc;AAAM,WAAO,IAAI,cAAc,UAAU;AAC3D,MAAI,UAAU;AAAM,WAAO,IAAI,UAAU,MAAM;AAE/C,SAAO;AACT;AAkBO,SAAS,mBAAmB,cAA+C;AAChF,QAAM,EAAE,QAAQ,gBAAgB,IAAI,KAAK,IAAI;AAC7C,QAAM,gBAAgB,eAAe,KAAK,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI;AAC5E,SAAO,gBACH,EAAE,KAAK,cAAc,eAAe,aAAa,cAAc,MAAM,OAAO,IAC5E,EAAE,KAAK,IAAI,aAAa,MAAM,OAAO;AAC3C;AAOA,MAAM,mCAAmC,EAAE,OAAO;AAAA,EAChD,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAM,OAAO;AAAA,EACb,QAAQ,EAAE,OAAO;AAAA,EACjB,oBAAoB,EAAE,QAAQ;AAChC,CAAC;AAID,MAAM,2CAA2C,EAAE,OAAO;AAAA,EACxD,IAAI,EAAE,OAAO;AAAA,EACb,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,MAAM,EAAE,KAAK;AACf,CAAC;AAkBM,MAAM,4BAA4B,EAAE,OAAO;AAAA,EAChD,SAAS,EAAE,OAAO;AAAA,IAChB,SAAS,EAAE,OAAO;AAAA,EACpB,CAAC;AACH,CAAC;AAIM,SAAS,wCAAwC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOqB;AACnB,QAAM,EAAE,MAAM,aAAa,QAAQ,GAAG,IAAI;AAE1C,MAAI,eAAe,QAAQ,YAAY,SAAS,MAAM;AACpD,UAAM,IAAI;AAAA,MACR,SAAS,YAAY,IAAI,uCAAuC,IAAI;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,eAAiC;AAAA,IACrC,KAAK;AAAA,IACL,aAAa,eAAe;AAAA;AAAA;AAAA;AAAA,MAI1B,KAAK,kBAAkB,EAAE,IAAI,QAAQ,MAAM,YAAY,CAAC;AAAA,MACxD;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,EAAE,GAAG,MAAM,YAAY;AAAA,IAC7B,QAAQ;AAAA,EACV;AAEA,SAAO;AACT;AAEA,eAAsB,mBAAmB,UAAsC;AAC7E,MAAI;AACF,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,SAAS,GAAG;AACV,WAAO,oCAAoC,CAAC;AAAA,EAC9C;AACF;AAEA,SAAS,cAAc,UAA4B;AACjD,SAAO,GAAG,SAAS,MAAM,IAAI,SAAS,UAAU;AAClD;AA2DA,MAAM,8BAA8B,EAAE;AAAA,EACpC,EACG,OAAO;AAAA,IACN,IAAI,EAAE,OAAO;AAAA,IACb,YAAY,EAAE,OAAO;AAAA,IACrB,UAAU,EAAE,OAAO;AAAA,IACnB,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,IACvC,YAAY,EAAE,QAAQ,mBAAmB;AAAA,EAC3C,CAAC,EACA,SAAS;AACd;AAEA,MAAM,mBAAmB,EAAE,OAAO;AAAA,EAChC,UAAU,EAAE,OAAO;AAAA,EACnB,QAAQ,EAAE,OAAO;AAAA,EACjB,WAAW,EAAE;AAAA,IACX,EAAE,OAAO;AAAA,MACP,UAAU,EAAE,OAAO;AAAA,MACnB,QAAQ,EAAE,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AACF,CAAC;AAIM,MAAM,gBAAgB;AAAA,EACnB;AAAA,EACA;AAAA,EAEC;AAAA,EACA;AAAA,EAET,YACE,QACA,EAAE,YAAY,6BAA6B,QAAQ,GACnD;AACA,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI;AAAA,QACR;AAAA,YAEe,MAAM;AAAA,MACvB;AAAA,IACF;AAEA,SAAK,SAAS;AAEd,QAAI;AACF,WAAK,YAAY,IAAI,IAAI,SAAS;AAAA,IACpC,QAAQ;AACN,YAAM,IAAI;AAAA,QACR,sEAAsE,SAAS;AAAA,MACjF;AAAA,IACF;AAEA,SAAK,gBAAgB,IAAI,cAAc,IAAI,IAAI,WAAW,SAAS,EAAE,IAAI;AACzE,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAc,MAAM,MAAc,aAAoD;AACpF,UAAM,aAAa,IAAI,IAAI,MAAM,KAAK,SAAS;AAE/C,UAAM,iBAAiB,IAAI,QAAQ;AAAA,MACjC,aAAa,KAAK;AAAA,MAClB,0BAA0B,KAAK;AAAA,IACjC,CAAC;AAED,QAAI,aAAa,OAAO;AACtB,iBAAW,aAAa,IAAI,WAAW,YAAY,OAAO;AAC1D,qBAAe,IAAI,2BAA2B,YAAY,KAAK;AAAA,IACjE;AAEA,UAAM,WAAW,MAAM,MAAM,WAAW,SAAS,GAAG;AAAA,MAClD,SAAS;AAAA,MACT,GAAI,eAAe,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,MACnD,GAAG,KAAK,aAAa,WAAW;AAAA,IAClC,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,cAA2D;AACtE,WAAO,CAAC;AAAA,EACV;AAAA,EAEQ,mBAAmB,OAAO;AAAA,IAChC,cAAc;AAAA,IACd,GAAG;AAAA,EACL,IAEqB,CAAC,MAAwC;AAC5D,UAAM,cAAc,oBAAoB,MAAM;AAE9C,UAAM,WAAW,MAAM,KAAK,MAAM,YAAY,YAAY,SAAS,CAAC,IAAI,WAAW;AACnF,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,uBAAuB;AAAA,QACnC,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,IAAI,MAAM,wBAAwB,cAAc,QAAQ,CAAC,EAAE;AAAA,IACnE;AAEA,UAAM,SAAS,MAAM,SAAS,KAAK;AACnC,UAAM,iBAAiB,iCAAiC,UAAU,MAAM;AACxE,QAAI,CAAC,eAAe,SAAS;AAC3B,YAAM,IAAI;AAAA,QACR,wCAAwC,eAAe,MAAM,OAAO,IAAI,OAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACpG;AAAA,IACF;AACA,WAAO,eAAe;AAAA,EACxB;AAAA,EAEA,WAAW,2BAA2B,KAAK,gBAAgB;AAAA,EAE3D,MAAM,QACJ,UACA,EAAE,cAAc,MAAM,OAAO,IAA2D,CAAC,GAC7D;AAC5B,UAAM,MAAM,IAAI,IAAI,YAAY,mBAAmB,QAAQ,CAAC,IAAI,KAAK,SAAS;AAC9E,QAAI;AAAQ,UAAI,aAAa,IAAI,UAAU,MAAM;AAEjD,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,WAAW,IAAI,QAAQ,WAAW;AAExE,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW;AAAK,eAAO;AAEpC,cAAQ,MAAM,oCAAoC,QAAQ,KAAK;AAAA,QAC7D,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,IAAI,MAAM,oCAAoC,QAAQ,MAAM,cAAc,QAAQ,CAAC,EAAE;AAAA,IAC7F;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,WAAO,iBAAiB,MAAM,IAAI;AAAA,EACpC;AAAA,EAEA,MAAc,gBACZ,eACA,aACgC;AAChC,QAAI,cAAc,WAAW;AAAG,aAAO,CAAC;AAExC,UAAM,MAAM,IAAI,IAAI,wBAAwB,KAAK,SAAS;AAE1D,kBAAc,QAAQ,QAAM;AAC1B,UAAI,aAAa,OAAO,OAAO,EAAE;AAAA,IACnC,CAAC;AAED,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,WAAW,IAAI,QAAQ,WAAW;AAExE,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,mCAAmC,cAAc,KAAK,IAAI,CAAC,KAAK;AAAA,QAC5E,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC;AAED,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,YACZ,KACA,aAC4B;AAC5B,QAAI,IAAI,WAAW;AAAG,aAAO,CAAC;AAE9B,UAAM,MAAM,IAAI,IAAI,oBAAoB,KAAK,SAAS;AAEtD,QAAI,QAAQ,QAAM;AAChB,UAAI,aAAa,OAAO,OAAO,EAAE;AAAA,IACnC,CAAC;AAED,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,WAAW,IAAI,QAAQ,WAAW;AAExE,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,8BAA8B,IAAI,KAAK,IAAI,CAAC,IAAI;AAAA,QAC5D,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC;AAED,aAAO,CAAC;AAAA,IACV;AAEA,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B;AAAA,EAEA,MAAc,yBACZ;AAAA,IACE;AAAA,IACA,GAAG;AAAA,EACL,GACA,aAC6E;AAC7E,UAAM,SAAS,MAAM,KAAK,cAAc,QAGtC,4BAA4B,uBAAuB;AACrD,UAAM,WAAW,MAAM,KAAK,YAAY,WAAW,WAAW;AAE9D,WAAO,EAAE,GAAG,QAAQ,SAAS;AAAA,EAC/B;AAAA,EAEA,MAAc,WACZ,SACA,aACA,QACoB;AACpB,UAAM,UAAU,KAAK;AACrB,UAAM,cAAc,6BAA6B,QAAQ,MAAM,SAAS,CAAC;AACzE,UAAM,YAAY,oBAAI,IAAY;AAClC,UAAM,UAAU,oBAAI,IAAY;AAChC,UAAM,gBAAgB,oBAAI,IAAY;AACtC,UAAM,WAAW,oBAAI,IAAY;AACjC,UAAM,UAAU,oBAAI,IAAY;AAChC,UAAM,iBAAiB,oBAAI,IAAkC;AAC7D,UAAM,0BAA0B,oBAAI,IAA2C;AAC/E,UAAM,wBAAwB,oBAAI,IAA2B;AAE7D,UAAM,YAAY,CAAC,OAAO;AAC1B,UAAM,OAAO,oBAAI,IAAY;AAC7B,QAAI;AAEJ,WAAQ,UAAU,UAAU,IAAI,GAAI;AAuClC,UAASC,sCAAT,SACEC,qBACA,OACA;AACA,eAAO,QAAQA,mBAAkB,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACrE,uBAAa,YAAY,MAAM,QAAQ,CAAC,EAAE,QAAQ,cAAY;AAC5D,sBAAU,IAAI,QAAQ;AAAA,UACxB,CAAC;AAED,qBAAW,YAAY,MAAM,QAAQ,CAAC,EAAE,QAAQ,YAAU,QAAQ,IAAI,MAAM,CAAC;AAE7E,2BAAiB,YAAY,MAAM,QAAQ,CAAC,EAAE;AAAA,YAAQ,kBACpD,cAAc,IAAI,YAAY;AAAA,UAChC;AAEA,sBAAY,YAAY,MAAM,QAAQ,CAAC,EAAE,QAAQ,aAAW,SAAS,IAAI,OAAO,CAAC;AAEjF,qBAAW,YAAY,MAAM,QAAQ,CAAC,EAAE,QAAQ,YAAU,QAAQ,IAAI,MAAM,CAAC;AAE7E,6BAAmB,YAAY,MAAM,QAAQ,CAAC,EAAE,QAAQ,WAAS;AAC/D,gBAAI,CAAC,KAAK,IAAI,MAAM,GAAG,GAAG;AACxB,mBAAK,IAAI,MAAM,GAAG;AAElB,wBAAU,KAAK,KAAK;AAAA,YACtB;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AA3BS,+CAAAD;AAtCT,UAAIE;AAEJ,UAAI,mBAAmB,OAAO,GAAG;AAC/B,cAAM,kBAAkB,QAAQ;AAChC,cAAM,gBAAgB,MAAM,KAAK,iBAAiB,iBAAiB,WAAW;AAC9E,YAAI,cAAc,eAAe;AAEjC,YAAI,QAAQ;AACV,gBAAM,yBAAyB,MAAM,KAAK;AAAA,YACxC;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAEA,cAAI,wBAAwB;AAE1B,0BAAc,uBAAuB;AAErC,kCAAsB,IAAI,iBAAiB,uBAAuB,EAAE;AACpE,oCAAwB,IAAI,uBAAuB,IAAI,sBAAsB;AAAA,UAC/E;AAAA,QACF;AAEA,uBAAe,IAAI,iBAAiB,aAAa;AAEjD,YAAI,eAAe;AAAM;AAEzB,QAAAA,WAAU;AAAA,MACZ,OAAO;AACL,QAAAA,WAAU;AAAA,MACZ;AAEA,YAAM,qBAAqB,YAAY,IAAIA,SAAQ,IAAI;AAEvD,UAAI,sBAAsB;AAAM;AAEhC,MAAAF,oCAAmC,oBAAoBE,SAAQ,KAAK;AAAA,IA8BtE;AAEA,UAAM,eAAe,MAAM,KAAK,gBAAgB,CAAC,GAAG,aAAa,GAAG,WAAW;AAE/E,iBAAa,QAAQ,gBAAc;AACjC,kBAAY,MAAM,QAAQ,WAAS;AACjC,cAAM,WAAW,MAAM,MAAM,OAAO;AAEpC,YAAI,YAAY;AAAM,oBAAU,IAAI,QAAQ;AAAA,MAC9C,CAAC;AAAA,IACH,CAAC;AAED,UAAM,gBAAgB,MAAM,KAAK,sBAAsB,CAAC,GAAG,OAAO,GAAG,aAAa,EAAE,OAAO,CAAC;AAE5F,UAAM,EAAE,UAAU,OAAO,OAAO,IAAI,MAAM,KAAK;AAAA,MAC7C;AAAA,QACE,WAAW,CAAC,GAAG,SAAS;AAAA,QACxB,SAAS,CAAC,GAAG,OAAO;AAAA,QACpB,UAAU,CAAC,GAAG,QAAQ;AAAA,MACxB;AAAA,MACA;AAAA,IACF;AAEA,UAAM,eAAe;AAAA,MACnB,CAAC,gBAAgB,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,SAAO;AAAA,QAClD;AAAA,QACA,OAAO,SAAS,KAAK,YAAU,QAAQ,OAAO,EAAE,KAAK;AAAA,MACvD,EAAE;AAAA,MACF,CAAC,gBAAgB,IAAI,GAAG,CAAC,GAAG,OAAO,EAAE,IAAI,SAAO;AAAA,QAC9C;AAAA,QACA,OAAO,MAAM,KAAK,UAAQ,MAAM,OAAO,EAAE,KAAK;AAAA,MAChD,EAAE;AAAA,MACF,CAAC,gBAAgB,UAAU,GAAG,CAAC,GAAG,aAAa,EAAE,IAAI,SAAO;AAAA,QAC1D;AAAA,QACA,OAAO,aAAa,KAAK,gBAAc,YAAY,OAAO,EAAE,KAAK;AAAA,MACnE,EAAE;AAAA,MACF,CAAC,gBAAgB,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,SAAO;AAAA,QAChD;AAAA,QACA,OAAO,OAAO,KAAK,WAAS,OAAO,OAAO,EAAE,KAAK;AAAA,MACnD,EAAE;AAAA,MACF,CAAC,gBAAgB,iBAAiB,GAAG,CAAC,GAAG,OAAO,EAAE,IAAI,SAAO;AAAA,QAC3D;AAAA,QACA,OAAO,cAAc,KAAK,uBAAqB,mBAAmB,OAAO,EAAE,KAAK;AAAA,QAChF;AAAA,MACF,EAAE;AAAA,MACF,CAAC,gBAAgB,aAAa,GAAG,CAAC,GAAG,eAAe,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,QACnF;AAAA,QACA;AAAA,MACF,EAAE;AAAA,MACF,CAAC,gBAAgB,sBAAsB,GAAG,CAAC,GAAG,wBAAwB,QAAQ,CAAC,EAAE;AAAA,QAC/E,CAAC,CAAC,IAAI,KAAK,OAAO;AAAA,UAChB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,uBACE,UAAU,OAAO,EAAE,CAAC,MAAM,GAAG,OAAO,YAAY,sBAAsB,QAAQ,CAAC,EAAE,IAAI,CAAC;AAAA,IAC1F;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,UACA;AAAA,IACE,aAAa;AAAA,IACb;AAAA,IACA,sBAAsB;AAAA,EACxB,GAKuC;AACvC,UAAM,cAAc,MAAc;AAChC,YAAM,SAAS,IAAI,gBAAgB;AACnC,UAAI;AAAQ,eAAO,IAAI,UAAU,MAAM;AACvC,UAAI,uBAAuB;AAAM,eAAO,IAAI,uBAAuB,GAAG,mBAAmB,EAAE;AAC3F,aAAO,OAAO,SAAS;AAAA,IACzB;AAEA,UAAM,cAAc,MAAM;AAC1B,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,YAAY,mBAAmB,QAAQ,CAAC,aAAa,YAAY,CAAC;AAAA,MAClE;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW;AAAK,eAAO;AAEpC,cAAQ,MAAM,oCAAoC,QAAQ,KAAK;AAAA,QAC7D,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,IAAI,MAAM,oCAAoC,QAAQ,MAAM,cAAc,QAAQ,CAAC,EAAE;AAAA,IAC7F;AAEA,UAAM,WAAkC,MAAM,SAAS,KAAK;AAC5D,UAAM,oBAAoB,SAAS,eAAe,KAAK,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI;AAEzF,UAAM,YAAY,MAAM,KAAK;AAAA,MAC3B,mBAAmB,QAAQ,SAAS;AAAA,MACpC;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,SAAS;AAAA,IACX;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,qBACJ,IACA;AAAA,IACE,aAAa;AAAA,IACb;AAAA,IACA,sBAAsB;AAAA,EACxB,GAKqC;AACrC,UAAM,eAAe,IAAI,gBAAgB;AACzC,QAAI;AAAQ,mBAAa,IAAI,UAAU,MAAM;AAE7C,UAAM,cAAc,MAAM;AAC1B,UAAM,MAAM,kBAAkB,EAAE,IAAI,QAAQ,MAAM,KAAK,OAAO,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAChF,UAAM,yBAAyB,UAAU;AACzC,UAAM,2BAA2B,CAAC,0BAA0B;AAE5D,QAAI;AACJ,UAAM,6BAA6B,MAAM,KAAK;AAAA,MAC5C,oBAAoB,mBAAmB,EAAE,CAAC,IAAI,aAAa,SAAS,CAAC;AAAA,MACrE;AAAA,IACF;AAEA,QAAI,2BAA2B,WAAW,OAAO,0BAA0B;AACzE,iBAAW,MAAM,KAAK,MAAM,oBAAoB,mBAAmB,EAAE,CAAC,IAAI,WAAW;AAAA,IACvF,OAAO;AACL,iBAAW;AAAA,IACb;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,eAAO;AAAA,UACL,UAAU;AAAA,YACR;AAAA,YACA,QAAQ,UAAU;AAAA,YAClB,MAAM;AAAA,UACR;AAAA,UACA;AAAA,UACA,WAAW,UAAU,MAAM;AAAA,UAC3B,MAAM;AAAA,YACJ;AAAA,YACA,iBAAiB,UAAU;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,MAAM,yCAAyC,EAAE,MAAM;AAAA,QAC7D,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,QACA;AAAA,MACF,CAAC;AAED,YAAM,IAAI,MAAM,yCAAyC,EAAE,MAAM,cAAc,QAAQ,CAAC,EAAE;AAAA,IAC5F;AAEA,UAAM,WAAW,iCAAiC,MAAM,MAAM,SAAS,KAAK,CAAC;AAC7E,UAAM,YAAY,MAAM,KAAK,WAAW,SAAS,MAAM,aAAa,UAAU,IAAI;AAElF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,QACJ;AAAA,QACA,iBAAiB,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,UAAkB,aAAyD;AACzF,UAAM,WAAW,MAAM,KAAK,MAAM,eAAe,QAAQ,IAAI,WAAW;AAExE,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,gBAAQ,MAAM,yBAAyB,QAAQ,KAAK;AAAA,UAClD,UAAU,MAAM,mBAAmB,QAAQ;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,MAAM,SAAS,KAAK;AAEnC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,QAAsC;AAClD,UAAM,SAAS,MAAM,KAAK,cAAc;AAAA,MACtC;AAAA,MACA,EAAE,OAAO;AAAA,IACX;AAEA,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,cACJ,cACA,aAC4B;AAC5B,UAAM,WAAW,MAAM,KAAK,MAAM,mBAAmB,YAAY,IAAI,WAAW;AAEhF,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,gBAAQ,MAAM,6BAA6B,YAAY,KAAK;AAAA,UAC1D,UAAU,MAAM,mBAAmB,QAAQ;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,MAAM,SAAS,KAAK;AAEvC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,iBACJ,iBACA,aAC+B;AAC/B,UAAM,WAAW,MAAM,KAAK,MAAM,sBAAsB,eAAe,IAAI,WAAW;AAEtF,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,gBAAQ,MAAM,iCAAiC,eAAe,KAAK;AAAA,UACjE,UAAU,MAAM,mBAAmB,QAAQ;AAAA,UAC3C;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,gBAAgB,MAAM,SAAS,KAAK;AAE1C,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,0BACJ,iBACA,QACA,aACwC;AACxC,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,gCAAgC,eAAe,WAAW,MAAM;AAAA,MAChE;AAAA,IACF;AAEA,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,gBAAQ,MAAM,2CAA2C,eAAe,KAAK;AAAA,UAC3E,UAAU,MAAM,mBAAmB,QAAQ;AAAA,UAC3C;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,yBAAyB,MAAM,SAAS,KAAK;AAEnD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,sBACJ,SACA,aACA,EAAE,OAAO,GAC8B;AACvC,QAAI,QAAQ,WAAW;AAAG,aAAO,CAAC;AAElC,UAAM,MAAM,IAAI,IAAI,gCAAgC,KAAK,SAAS;AAElE,YAAQ,QAAQ,QAAM,IAAI,aAAa,OAAO,OAAO,EAAE,CAAC;AACxD,QAAI,UAAU;AAAM,UAAI,aAAa,IAAI,UAAU,MAAM;AAEzD,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,WAAW,IAAI,QAAQ,WAAW;AAExE,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,4CAA4C,QAAQ,KAAK,IAAI,CAAC,IAAI;AAAA,QAC9E,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC3C;AAAA,QACA;AAAA,MACF,CAAC;AAED,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,UAAM,qBAAqB,4BAA4B,MAAM,IAAI;AAMjE,WAAO,mBAAmB,IAAI,uBAAqB;AACjD,UAAI,qBAAqB;AAAM,eAAO;AAEtC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,IAAI,kBAAkB;AAAA,QACtB,mBAAmB,kBAAkB,qBAAqB;AAAA,MAC5D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,qBACJ,QACA,aACA,EAAE,OAAO,IAAyB,CAAC,GACA;AACnC,UAAM,qBAAqB,MAAM,KAAK,sBAAsB,CAAC,MAAM,GAAG,aAAa,EAAE,OAAO,CAAC;AAE7F,WAAO,mBAAmB,GAAG,CAAC,KAAK;AAAA,EACrC;AAAA,EAEA,MAAM,SAAS,SAAwC;AACrD,UAAM,SAAS,MAAM,KAAK,cAAc;AAAA,MACtC;AAAA,MACA,EAAE,QAAQ;AAAA,IACZ;AAEA,WAAO,OAAO;AAAA,EAChB;AAAA,EAEA,oBAAoB,aAAgD;AAClE,WAAO,KAAK,QAAQ,oBAAoB,WAAW;AAAA,EACrD;AAAA,EAEA,oBAAoB,aAA0B,gBAA+C;AAC3F,WAAO,KAAK,QAAQ,oBAAoB,aAAa,cAAc;AAAA,EACrE;AAAA,EAEA,MAAM,iBAAiB,OAAoD;AACzE,UAAM,WAAW,MAAM,MAAM,IAAI,IAAI,2BAA2B,KAAK,SAAS,EAAE,SAAS,GAAG;AAAA,MAC1F,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,CAAC,WAAW,GAAG,KAAK;AAAA,QACpB,0BAA0B,KAAK;AAAA,QAC/B,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,MAAM,CAAC;AAAA,MAC9B,OAAO;AAAA,IACT,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI,SAAS,WAAW,KAAK;AAC3B,gBAAQ,MAAM,uCAAuC;AAAA,UACnD,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC7C,CAAC;AAAA,MACH,WAAW,SAAS,WAAW,KAAK;AAClC,gBAAQ,MAAM,kCAAkC;AAAA,UAC9C,UAAU,MAAM,mBAAmB,QAAQ;AAAA,QAC7C,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,UAAM,SAAS,0BAA0B,UAAU,IAAI;AACvD,QAAI,CAAC,OAAO,SAAS;AACnB,YAAM,IAAI;AAAA,QACR,0CAA0C,OAAO,MAAM,OAAO,IAAI,OAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MAC9F;AAAA,IACF;AAEA,WAAO,OAAO;AAAA,EAChB;AACF;","names":["SnippetLocation","getResourcesFromElementDescriptors","elementDescriptors","element"]}
|
|
@@ -284,7 +284,6 @@ const Carousel = forwardRef(function Carousel2({
|
|
|
284
284
|
children: images.map(({ props: imageProps, key }) => /* @__PURE__ */ jsx(
|
|
285
285
|
motion.div,
|
|
286
286
|
{
|
|
287
|
-
id: key,
|
|
288
287
|
className: slideClassName,
|
|
289
288
|
onMouseDown: (e) => e.preventDefault(),
|
|
290
289
|
onClick: (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n id={key}\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":"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","names":["Carousel","pageSize","gap"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n forwardRef,\n Ref,\n ComponentPropsWithoutRef,\n} from 'react'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from '@use-gesture/react'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { getBaseBreakpoint } from '@makeswift/controls'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { type ResponsiveColor } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { useBreakpoints } from '../../../runtimes/react/hooks/use-breakpoints'\nimport {\n type ResponsiveGapData,\n type ResponsiveNumberValue,\n type ResponsiveIconRadioGroupValue,\n type ImagesData,\n} from '@makeswift/prop-controllers'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\ntype Props = {\n id?: string\n images?: ImagesData\n width?: string\n margin?: string\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: ResponsiveGapData\n autoplay?: boolean\n delay?: number\n showArrows?: boolean\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: boolean\n dotColor?: ResponsiveColor | null\n slideBorder?: string\n slideBorderRadius?: string\n}\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\n// constructs a CSS [class selector](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors),\n// returns a compound class selector if the `classname` string includes multiple class names\nconst classSelector = (classname: string) => `.${classname.split(' ').join('.')}`\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const breakpoints = useBreakpoints()\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n (pageDistance: number) => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity: [vx] }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, vx)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n const clipMaskClassName = useStyle({ overflow: 'hidden' })\n const pageClassName = useStyle({ position: 'relative', width: '100%' })\n const slideClassName = cx(\n useStyle({ display: 'flex' }),\n useStyle(\n useResponsiveStyle([responsivePageSize] as const, ([pageSize = 1]) => ({\n flexBasis: `${100 / pageSize}%`,\n maxWidth: `${100 / pageSize}%`,\n minWidth: `${100 / pageSize}%`,\n })),\n ),\n useStyle(\n useResponsiveStyle([slideAlignment] as const, ([alignItems = 'center']) => ({ alignItems })),\n ),\n )\n\n const reelClassName = cx(\n useStyle({ display: 'flex', position: 'relative', flexWrap: 'nowrap' }),\n useStyle(\n useResponsiveStyle([gap] as const, ([gap = { value: 0, unit: 'px' }]) => ({\n margin: `0 ${`${-gap.value / 2}${gap.unit}`}`,\n [`& > ${classSelector(slideClassName)}`]: {\n padding: `0 ${`${gap.value / 2}${gap.unit}`}`,\n },\n })),\n ),\n )\n\n const arrowClassName = cx(\n useStyle({\n padding: 10,\n borderRadius: '50%',\n outline: 0,\n border: 0,\n width: 40,\n height: 40,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n userSelect: 'none',\n }),\n useStyle(\n useResponsiveStyle(\n [arrowBackground] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => ({\n background: colorToString(background),\n }),\n ),\n ),\n useStyle({ svg: { transition: 'transform 0.15s', stroke: 'currentcolor' } }),\n )\n\n const slopClassName = cx(\n useStyle({\n position: 'absolute',\n top: 0,\n bottom: 0,\n\n display: 'flex',\n '&[hidden]': {\n display: 'none',\n },\n\n alignItems: 'center',\n cursor: 'pointer',\n zIndex: 2,\n }),\n useStyle(\n useResponsiveStyle(\n [arrowColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n const leftSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(-100% - 8px))' }\n\n default:\n return { transform: 'translateX(calc(-50%))' }\n }\n }),\n ),\n useStyle({\n left: 0,\n\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(-2px)',\n },\n },\n }),\n )\n\n const rightSlopClassName = cx(\n slopClassName,\n useStyle(\n useResponsiveStyle([arrowPosition] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return { transform: 'translateX(-8px)' }\n\n case 'outside':\n return { transform: 'translateX(calc(100% + 8px))' }\n\n default:\n return { transform: 'translateX(calc(50%))' }\n }\n }),\n ),\n useStyle({\n right: 0,\n [`&:hover > ${classSelector(arrowClassName)}`]: {\n '& > svg': {\n transform: 'translateX(2px)',\n },\n },\n }),\n )\n\n const dotsClassName = cx(\n useStyle({ display: showDots ? 'flex' : 'none', justifyContent: 'center', marginTop: 20 }),\n useStyle(\n useResponsiveStyle(\n [dotColor] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => ({\n color: colorToString(color),\n }),\n ),\n ),\n )\n\n return (\n <div\n ref={ref}\n className={cx(\n useStyle({ position: 'relative', display: 'flex', flexDirection: 'column' }),\n width,\n margin,\n useStyle({ '&:focus': { outline: 0 } }),\n )}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n {/* NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far */}\n <div className={useStyle({ position: 'relative', height: '100%' })}>\n <div className={clipMaskClassName}>\n {/* https://github.com/framer/motion/issues/1723 */}\n {/* @ts-expect-error: React HTMLElement typings conflict with motion components */}\n <motion.div {...bindPage()} className={pageClassName} animate={animation}>\n <motion.div\n className={reelClassName}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <motion.div\n key={key}\n className={slideClassName}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: { value: 100, unit: '%' },\n },\n ]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </motion.div>\n ))}\n </motion.div>\n </motion.div>\n </div>\n <div\n onClick={() => paginate(-1)}\n className={leftSlopClassName}\n hidden={!showArrows || isFirstPage}\n >\n <div className={arrowClassName}>\n <LeftChevron />\n </div>\n </div>\n <div\n onClick={() => paginate(1)}\n className={rightSlopClassName}\n hidden={!showArrows || isLastPage}\n >\n <div className={arrowClassName}>\n <RightChevron />\n </div>\n </div>\n </div>\n <div className={dotsClassName}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </div>\n </div>\n )\n})\n\nexport default Carousel\n\ntype DotBaseProps = {\n className?: string\n active: boolean\n}\n\ntype DotProps = DotBaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof DotBaseProps>\n\nfunction Dot({ className, active, ...restOfProps }: DotProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'relative',\n margin: '0 6px',\n borderRadius: '50%',\n cursor: 'pointer',\n width: 16,\n height: 16,\n\n '&::before, &::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n left: '50%',\n display: 'block',\n borderRadius: '50%',\n transition: 'all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)',\n },\n\n '&::before': {\n boxShadow: '0 0 0 2px currentColor',\n transform: 'translate3d(-50%, -50%, 0)',\n width: active ? 16 : 10,\n height: active ? 16 : 10,\n },\n\n '&::after': {\n background: 'currentColor',\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n width: 10,\n height: 10,\n },\n\n '&:hover::after': {\n transform: `translate3d(-50%, -50%, 0) scale(${active ? 1 : 0})`,\n },\n }),\n className,\n )}\n />\n )\n}\n"],"mappings":"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","names":["Carousel","pageSize","gap"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { v4 as uuid } from "uuid";
|
|
2
1
|
import { findBreakpointOverride } from "@makeswift/controls";
|
|
3
2
|
import {
|
|
4
3
|
BorderRadius,
|
|
@@ -33,9 +32,9 @@ function registerComponent(runtime) {
|
|
|
33
32
|
id: ElementID(),
|
|
34
33
|
images: Images({
|
|
35
34
|
preset: [
|
|
36
|
-
{ key:
|
|
37
|
-
{ key:
|
|
38
|
-
{ key:
|
|
35
|
+
{ key: "image-1", props: {} },
|
|
36
|
+
{ key: "image-2", props: {} },
|
|
37
|
+
{ key: "image-3", props: {} }
|
|
39
38
|
]
|
|
40
39
|
}),
|
|
41
40
|
width: Width({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/register.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/builtin/Carousel/register.ts"],"sourcesContent":["import { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '@makeswift/controls'\nimport {\n BorderRadius,\n ElementID,\n GapX,\n Images,\n ImagesPropControllerData,\n Margin,\n Number,\n ResponsiveColor,\n ResponsiveIconRadioGroup,\n ResponsiveNumber,\n Width,\n getImagesPropControllerDataImagesData,\n type PropData,\n} from '@makeswift/prop-controllers'\n\nimport { MakeswiftComponentType } from '../constants'\nimport { ComponentIcon } from '../../../state/modules/components-meta'\nimport { lazy } from 'react'\nimport {\n Border,\n Checkbox,\n checkboxPropControllerDataSchema,\n getCheckboxPropControllerDataBoolean,\n} from '@makeswift/prop-controllers'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n lazy(() => import('./Carousel')),\n {\n type: MakeswiftComponentType.Carousel,\n label: 'Carousel',\n icon: ComponentIcon.Carousel,\n props: {\n id: ElementID(),\n images: Images({\n preset: [\n { key: 'image-1', props: {} },\n { key: 'image-2', props: {} },\n { key: 'image-3', props: {} },\n ],\n }),\n width: Width({\n format: Width.Format.ClassName,\n defaultValue: { value: 400, unit: 'px' },\n }),\n margin: Margin({ format: Margin.Format.ClassName }),\n pageSize: ResponsiveNumber(props => {\n const images = getImagesPropControllerDataImagesData(\n props.images as ImagesPropControllerData | undefined,\n )\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: ResponsiveNumber((props, device) => {\n const pageSize = ResponsiveNumber.fromPropData(\n props.pageSize as PropData<typeof ResponsiveNumber> | undefined,\n )\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: 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: GapX({\n label: 'Gap',\n step: 5,\n defaultValue: { value: 0, unit: 'px' },\n }),\n autoplay: Checkbox({ label: 'Autoplay' }),\n delay: Number(props => ({\n label: 'Delay',\n preset: 5,\n min: 1,\n step: 0.1,\n suffix: 'seconds',\n hidden: !getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.autoplay),\n ),\n })),\n showArrows: Checkbox({ preset: true, label: 'Show arrows' }),\n arrowPosition: 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:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n arrowColor: ResponsiveColor(props => ({\n label: 'Arrow color',\n placeholder: 'black',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n arrowBackground: ResponsiveColor(props => ({\n label: 'Arrow background',\n placeholder: 'white',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showArrows),\n ) === false,\n })),\n showDots: Checkbox({ preset: true, label: 'Show dots' }),\n dotColor: ResponsiveColor(props => ({\n label: 'Dot color',\n placeholder: 'black',\n hidden:\n getCheckboxPropControllerDataBoolean(\n checkboxPropControllerDataSchema.optional().catch(undefined).parse(props.showDots),\n ) === false,\n })),\n slideBorder: Border({ format: Border.Format.ClassName }),\n slideBorderRadius: BorderRadius({ format: BorderRadius.Format.ClassName }),\n },\n },\n )\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,UAAU,EAChB,MAAM,6BAA6B,CAAA;AA0BpC,KAAK,KAAK,GAAG;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,cAAc,CAAC,EAAE,6BAA6B,CAAC,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAA;IACpF,GAAG,CAAC,EAAE,iBAAiB,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,6BAA6B,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9E,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACnC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AASD,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../../src/components/builtin/Carousel/Carousel.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,UAAU,EAChB,MAAM,6BAA6B,CAAA;AA0BpC,KAAK,KAAK,GAAG;IACX,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,cAAc,CAAC,EAAE,6BAA6B,CAAC,YAAY,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAA;IACpF,GAAG,CAAC,EAAE,iBAAiB,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,6BAA6B,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9E,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACnC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AASD,QAAA,MAAM,QAAQ,kGA4TZ,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../src/components/builtin/Carousel/register.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../src/components/builtin/Carousel/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AA4BtD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,cAuHtD"}
|