@supernova-studio/client 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2732 -3752
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2456 -3476
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/docs-editor/index.ts +1 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../model/src/auth/plugin-oauth-request.ts","../../model/src/billing/card.ts","../../model/src/billing/checkoutSession.ts","../../model/src/billing/customer.ts","../../model/src/billing/features.ts","../../model/src/billing/invoice.ts","../../model/src/billing/portalSession.ts","../../model/src/billing/price.ts","../../model/src/billing/product.ts","../../model/src/billing/subscription.ts","../../model/src/dsm/assets/asset-reference.ts","../../model/src/dsm/assets/asset-value.ts","../../model/src/dsm/assets/asset.ts","../../model/src/dsm/data-sources/data-source.ts","../../model/src/dsm/data-sources/import-job.ts","../../model/src/common/entity.ts","../../model/src/common/object-meta.ts","../../model/src/dsm/data-sources/import-summary.ts","../../model/src/dsm/elements/data/base.ts","../../model/src/dsm/elements/data/blur.ts","../../model/src/dsm/elements/data/dimension.ts","../../model/src/dsm/elements/data/border-radius.ts","../../model/src/dsm/elements/data/border-width.ts","../../model/src/dsm/elements/data/border.ts","../../model/src/dsm/elements/data/color.ts","../../model/src/dsm/elements/data/opacity.ts","../../model/src/dsm/elements/data/component.ts","../../model/src/dsm/elements/data/documentation-block-v1.ts","../../model/src/dsm/elements/raw-element.ts","../../model/src/dsm/properties/property-definition.ts","../../model/src/dsm/properties/property-value.ts","../../model/src/dsm/elements/primitives/point.ts","../../model/src/dsm/elements/primitives/size.ts","../../model/src/helpers/db.ts","../../model/src/helpers/nullish-to-optional.ts","../../model/src/dsm/elements/data/documentation-block-v2.ts","../../model/src/dsm/elements/data/documentation-page-v1.ts","../../model/src/dsm/elements/data/documentation.ts","../../model/src/dsm/elements/data/documentation-page-v2.ts","../../model/src/dsm/elements/data/duration.ts","../../model/src/dsm/elements/data/figma-file-structure.ts","../../model/src/dsm/elements/data/figma-node-reference.ts","../../model/src/dsm/elements/data/font-family.ts","../../model/src/dsm/elements/data/font-size.ts","../../model/src/dsm/elements/data/font-weight.ts","../../model/src/dsm/elements/data/gradient.ts","../../model/src/dsm/elements/data/group.ts","../../model/src/dsm/elements/data/letter-spacing.ts","../../model/src/dsm/elements/data/line-height.ts","../../model/src/dsm/elements/data/paragraph-indent.ts","../../model/src/dsm/elements/data/paragraph-spacing.ts","../../model/src/dsm/elements/data/product-copy.ts","../../model/src/dsm/elements/data/shadow.ts","../../model/src/dsm/elements/data/size.ts","../../model/src/dsm/elements/data/space.ts","../../model/src/dsm/elements/data/string.ts","../../model/src/dsm/elements/data/text-case.ts","../../model/src/dsm/elements/data/text-decoration.ts","../../model/src/dsm/elements/data/typography.ts","../../model/src/dsm/elements/data/visibility.ts","../../model/src/dsm/elements/data/z-index.ts","../../model/src/dsm/elements/base.ts","../../model/src/dsm/elements/component.ts","../../model/src/dsm/elements/documentation-page-v1.ts","../../model/src/dsm/elements/documentation-page-v2.ts","../../model/src/dsm/elements/figma-file-structures.ts","../../model/src/dsm/elements/figma-node-reference.ts","../../model/src/dsm/elements/group.ts","../../model/src/dsm/elements/page-block-v2.ts","../../model/src/dsm/elements/theme.ts","../../model/src/dsm/elements/tokens.ts","../../model/src/dsm/import/support/figma-files.ts","../../model/src/dsm/import/support/import-context.ts","../../model/src/dsm/import/support/import-model-collections.ts","../../model/src/dsm/import/image.ts","../../model/src/dsm/import/component.ts","../../model/src/dsm/import/base.ts","../../model/src/dsm/import/theme.ts","../../model/src/dsm/import/tokens.ts","../../model/src/dsm/import/figma-frames.ts","../../model/src/dsm/import/data-source.ts","../../model/src/dsm/import/warning.ts","../../model/src/dsm/documentation/block-definitions/aux.ts","../../model/src/dsm/documentation/block-definitions/definition.ts","../../model/src/dsm/documentation/block-definitions/item.ts","../../model/src/dsm/documentation/block-definitions/variant.ts","../../model/src/dsm/documentation/group.ts","../../model/src/dsm/documentation/page.ts","../../model/src/dsm/design-system.ts","../../model/src/workspace/npm-registry-settings.ts","../../model/src/workspace/sso-provider.ts","../../model/src/workspace/user-invite.ts","../../model/src/workspace/workspace-role.ts","../../model/src/workspace/workspace-context.ts","../../model/src/workspace/workspace-create.ts","../../model/src/utils/validation.ts","../../model/src/workspace/workspace-invitations.ts","../../model/src/workspace/workspace-membership.ts","../../model/src/workspace/workspace.ts","../../model/src/dsm/desing-system-create.ts","../../model/src/dsm/desing-system-update.ts","../../model/src/dsm/published-doc.ts","../../model/src/codegen/export-jobs.ts","../../model/src/codegen/exporter-workspace-membership-role.ts","../../model/src/codegen/exporter-workspace-membership.ts","../../model/src/codegen/exporter.ts","../../model/src/codegen/git-providers.ts","../../model/src/codegen/pulsar.ts","../../model/src/custom-domains/custom-domains.ts","../../model/src/docs-server/session.ts","../../model/src/users/linked-integrations.ts","../../model/src/users/user-identity.ts","../../model/src/users/user-profile.ts","../../model/src/users/user.ts","../../model/src/feature-flags/feature-flags.ts","../../model/src/integrations/external-oauth-request.ts","../../model/src/integrations/oauth-providers.ts","../../model/src/integrations/oauth-token.ts","../../model/src/multiplayer/design-system-version-room.ts","../../model/src/multiplayer/documentation-page-room.ts","../../model/src/npm/npm-package.ts","../../model/src/npm/npm-proxy-token-payload.ts","../../model/src/tokens/personal-access-token.ts","../../model/src/utils/content-loader-instruction.ts","../src/api/responses/get-block-definitions.ts","../src/docs-editor/model/block.ts","../src/docs-editor/model/page.ts","../../../node_modules/orderedmap/dist/index.js","../../../node_modules/prosemirror-model/dist/index.js","../src/docs-editor/prosemirror/schema.ts","../src/docs-editor/utils.ts","../src/docs-editor/blocks-to-prosemirror.ts","../src/docs-editor/prosemirror-to-blocks.ts"],"names":["z","zeroNumberByDefault","DS_NAME_MIN_LENGTH","DS_NAME_MAX_LENGTH","DS_DESC_MIN_LENGTH","DS_DESC_MAX_LENGTH","GitProviderNames","OAuthProviderNames","found","i","type","nfa","edge","expr","node","states","mark","nonNullFilter"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nexport const PluginOAuthRequestSchema = z.object({\n id: z.string(),\n codeChallenge: z.string(),\n readKey: z.string(),\n writeKey: z.string(),\n readKeyConsumed: z.boolean(),\n writeKeyConsumed: z.boolean(),\n oAuthCode: z.string().optional(),\n createdAt: z.date(),\n});\n\nexport type PluginOAuthRequest = z.infer<typeof PluginOAuthRequestSchema>;\n","import { z } from \"zod\";\n\nexport const CardSchema = z.object({\n cardId: z.string().nullish(),\n last4: z.string().length(4).nullish(),\n expiryMonth: z.string().nullish(),\n expiryYear: z.string().nullish(),\n brand: z.string().nullish(),\n name: z.string().nullish(),\n});\n\nexport type Card = z.infer<typeof CardSchema>;\n","import { z } from \"zod\";\n\nexport const PostStripeCheckoutBodyInputSchema = z.object({\n priceId: z.string(),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n quantity: z.number().int().min(1).optional(),\n});\n\nexport const PostStripeCheckoutOutputSchema = z.object({\n id: z.string(),\n url: z.string().nullish(),\n});\n\nexport type StripeCheckoutInput = z.infer<typeof PostStripeCheckoutBodyInputSchema>;\nexport type StripeCheckoutOutput = z.infer<typeof PostStripeCheckoutOutputSchema>;\n","import { z } from \"zod\";\n\nexport const Customer = z.object({\n id: z.string(),\n});\n\nexport const Address = z.object({\n street1: z.string().optional(),\n street2: z.string().optional(),\n city: z.string().optional(),\n postal: z.string().optional(),\n country: z.string().optional(),\n state: z.string().optional(),\n});\n\nexport const BillingDetails = z.object({\n address: Address.optional(),\n email: z.string().optional(),\n companyName: z.string().optional(),\n companyId: z.string().optional(),\n notes: z.string().optional(),\n vat: z.string().optional(),\n poNumber: z.string().optional(),\n});\n\nexport type Customer = z.infer<typeof Customer>;\nexport type Address = z.infer<typeof Address>;\nexport type BillingDetails = z.infer<typeof BillingDetails>;\n","import { z } from \"zod\";\n\nconst featureLimitedSchema = z.object({\n max: z.number(),\n errorMessage: z.string(),\n errorReason: z.string(),\n});\n\nconst featureToggleSchema = z.object({\n enabled: z.boolean(),\n errorMessage: z.string(),\n errorReason: z.string(),\n});\n\nconst featureWithImportJobsSchema = featureLimitedSchema.extend({\n noImportJobsErrorMessage: z.string(),\n noImportJobsErrorReason: z.string(),\n});\n\nexport const FeaturesSummary = z.object({\n designSystems: featureLimitedSchema,\n designSystemSources: featureWithImportJobsSchema,\n designSystemVersions: featureLimitedSchema,\n themes: featureLimitedSchema,\n brands: featureLimitedSchema,\n codegenSchedules: featureLimitedSchema,\n publicDocumentation: featureToggleSchema,\n customDocumentationUrl: featureToggleSchema,\n customDocumentationViewButton: featureToggleSchema,\n designSystemSourceAutoImport: featureToggleSchema,\n designSystemSlug: featureToggleSchema,\n ipWhitelisting: featureToggleSchema,\n npmRegistry: featureToggleSchema,\n sso: featureToggleSchema,\n workspacePaidSeats: featureLimitedSchema,\n workspaceViewers: featureLimitedSchema,\n customDocumentationExporter: featureToggleSchema,\n});\n\nexport type FeatureLimitedDetails = z.infer<typeof featureLimitedSchema>;\nexport type FeatureToggleDetails = z.infer<typeof featureToggleSchema>;\nexport type FeatureWithImportJobsDetails = z.infer<typeof featureWithImportJobsSchema>;\nexport type FeaturesSummary = z.infer<typeof FeaturesSummary>;\n","import { z } from \"zod\";\nimport { CardSchema } from \"./card\";\n\nexport const InvoiceSchema = z.object({\n id: z.string(),\n number: z.string(),\n amount_due: z.number(),\n date: z.date(),\n hostedUrl: z.string().url(),\n card: CardSchema.nullish(),\n});\n\nexport const PeriodSchema = z.object({\n start: z.date(),\n end: z.date(),\n});\n\nexport const InvoiceLineSchema = z.object({\n amount: z.number(),\n period: PeriodSchema,\n proration: z.boolean(),\n description: z.string(),\n type: z.string(),\n});\n\nexport const InvoiceCouponSchema = z.object({\n amount_off: z.number(),\n percent_off: z.number(),\n name: z.string(),\n});\n\nexport type Invoice = z.infer<typeof InvoiceSchema>;\nexport type InvoiceLine = z.infer<typeof InvoiceLineSchema>;\nexport type InvoiceCoupon = z.infer<typeof InvoiceCouponSchema>;\n","import { z } from \"zod\";\n\nexport const PostStripePortalUpdateSessionBodyInputSchema = z.object({\n priceId: z.string(),\n numberOfSeats: z.number().int(),\n});\nexport const PostStripePortalSessionBodyInputSchema = z.object({\n returnUrl: z.string().url(),\n update: PostStripePortalUpdateSessionBodyInputSchema.optional(),\n cancel: z.boolean().optional(),\n});\n\nexport const PostStripePortalSessionOutputSchema = z.object({\n id: z.string(),\n url: z.string().nullish(),\n});\n\nexport type StripePortalSessionInput = z.infer<typeof PostStripePortalSessionBodyInputSchema>;\nexport type StripePortalSessionOutput = z.infer<typeof PostStripePortalSessionOutputSchema>;\n","import { z } from \"zod\";\n\nexport const BillingIntervalSchema = z.enum([\"daily\", \"monthly\", \"weekly\", \"yearly\"]);\n\nexport const PriceSchema = z.object({\n stripePriceId: z.string(),\n stripeProductId: z.string(),\n stripeProductName: z.string().optional(),\n stripeProductDescription: z.string().optional(),\n active: z.boolean(),\n amount: z.number(),\n interval: BillingIntervalSchema,\n isPricePerCreator: z.boolean().optional(),\n isTrial: z.boolean().optional(),\n isHidden: z.boolean().optional(),\n minimumSeats: z.number().optional(),\n legacyVersion: z.string().optional(),\n featuresSet: z.string().optional(),\n stripeProductFeatures: z.array(z.string()).optional(),\n stripeProductAdditionalFeatures: z.array(z.string()).optional(),\n});\n\nexport type BillingInterval = z.infer<typeof BillingIntervalSchema>;\nexport type Price = z.infer<typeof PriceSchema>;\n","import { z } from \"zod\";\n\nexport const ProductCodeSchema = z.enum([\"free\", \"team\", \"team_test\", \"company\", \"enterprise\"]);\nexport type ProductCode = z.infer<typeof ProductCodeSchema>;\nexport const ProductCode = ProductCodeSchema.enum;\n","import { CardSchema } from \"./card\";\nimport { ProductCode, ProductCodeSchema } from \"./product\";\nimport { FeaturesSummary } from \"./features\";\nimport { BillingIntervalSchema } from \"./price\";\nimport { z } from \"zod\";\nexport const StripeSubscriptionStatusSchema = z.enum([\n \"trialing\",\n \"active\",\n \"past_due\",\n \"canceled\",\n \"unpaid\",\n \"incomplete_expired\",\n \"incomplete\",\n \"unknown\",\n]);\n\nexport const InternalStatusSchema = z.enum([\"active\", \"suspended\", \"gracePeriod\", \"cancelled\", \"downgraded_to_free\"]);\n\nexport const BillingTypeSchema = z.enum([\"Auto\", \"Invoice\"]);\n\nexport type StripeSubscriptionStatus = z.infer<typeof StripeSubscriptionStatusSchema>;\nexport type InternalStatus = z.infer<typeof InternalStatusSchema>;\nexport type BillingType = z.infer<typeof BillingTypeSchema>;\n\nexport const StripeSubscriptionStatus = StripeSubscriptionStatusSchema.enum;\nexport const InternalStatus = InternalStatusSchema.enum;\nexport const BillingType = BillingTypeSchema.enum;\n\nexport const Subscription = z.object({\n stripeSubscriptionId: z.string().nullish(),\n stripeCustomerId: z.string().nullish(),\n\n status: InternalStatusSchema.optional(),\n subscriptionStatus: StripeSubscriptionStatusSchema.optional(), // the stripe API official status\n internalStatus: InternalStatusSchema.optional(), // TODO: delete when create/get workspace will stop using it in the former API\n\n product: ProductCodeSchema,\n featuresSummary: FeaturesSummary.optional(),\n stripeProductDescription: z.string().optional(),\n stripeProductFeatures: z.array(z.string()).optional(),\n stripeProductAdditionalFeatures: z.array(z.string()).optional(),\n stripeSubscriptionMainItemId: z.string().optional(),\n planPriceId: z.string(),\n planInterval: BillingIntervalSchema,\n isPricePerCreator: z.boolean().optional(),\n legacyVersion: z.string().optional(),\n\n seats: z.number(),\n seatLimit: z.number(),\n\n currentPeriodStart: z.string().optional(),\n currentPeriodEnd: z.string().optional(),\n subscriptionStatusUpdatedAt: z.string().optional(),\n cancelAt: z.string().nullish(),\n\n card: CardSchema.optional(),\n\n // New\n amount: z.number().nullish(),\n isTrial: z.boolean().optional(),\n billingType: BillingTypeSchema.optional(),\n daysUntilDue: z.number().optional(),\n});\n\nexport type Subscription = z.infer<typeof Subscription>;\n","import { z } from \"zod\";\nimport { DbCreateInputOmit } from \"../../helpers\";\n\nexport const AssetReference = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n assetId: z.string(),\n persistentId: z.string(),\n});\n\nexport type AssetReference = z.infer<typeof AssetReference>;\n\nexport type CreateAssetReference = DbCreateInputOmit<AssetReference>;\n\nexport type AssetReferenceDiff = {\n toCreate: CreateAssetReference[];\n toDelete: string[];\n};\n","import { z } from \"zod\";\n\nexport const AssetValue = z.object({});\n","import { z } from \"zod\";\nimport { OmitStrict } from \"../../helpers\";\n\nexport const AssetType = z.enum([\"Image\", \"Font\"]);\nexport const AssetScope = z.enum([\"DocumentationFrame\", \"ComponentThumbnail\", \"DesignSystem\", \"Documentation\"]);\n\nexport const AssetFontProperties = z.object({\n family: z.string(),\n subfamily: z.string(),\n});\n\nexport const AssetProperties = z.object({\n fontProperties: z.array(AssetFontProperties),\n});\n\nexport const AssetOrigin = z.object({\n originKey: z.string(),\n});\n\nexport const Asset = z.object({\n id: z.string(),\n designSystemId: z.string().nullish(),\n type: AssetType,\n originalFileName: z.string().nullish(),\n filePath: z.string(),\n scope: AssetScope,\n properties: AssetProperties.nullish(),\n origin: AssetOrigin.nullish(),\n});\n\nexport type AssetType = z.infer<typeof AssetType>;\nexport type AssetScope = z.infer<typeof AssetScope>;\nexport type AssetFontProperties = z.infer<typeof AssetFontProperties>;\nexport type AssetProperties = z.infer<typeof AssetProperties>;\nexport type AssetOrigin = z.infer<typeof AssetOrigin>;\nexport type Asset = z.infer<typeof Asset>;\n\nexport type ImportedAsset = OmitStrict<Asset, \"origin\"> & {\n origin: AssetOrigin;\n};\n\nexport type ResolvedAsset = OmitStrict<Asset, \"filePath\"> & {\n url: string;\n};\n\nexport function isImportedAsset(asset: Asset): asset is ImportedAsset {\n return !!asset.origin;\n}\n","import { z } from \"zod\";\nimport { SourceImportSummary } from \"./import-summary\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\n//\n// Enums\n//\n\nexport const DataSourceRemoteType = z.enum([\"Figma\", \"TokenStudio\", \"FigmaVariablesPlugin\"]);\nexport const DataSourceUploadRemoteSource = z.enum([\"TokenStudio\", \"FigmaVariablesPlugin\", \"Custom\"]);\nexport const DataSourceFigmaState = z.enum([\"Active\", \"MissingIntegration\", \"MissingFileAccess\", \"MissingFileOwner\"]);\nexport const DataSourceAutoImportMode = z.enum([\"Never\", \"Hourly\"]);\n\nexport type DataSourceRemoteType = z.infer<typeof DataSourceRemoteType>;\nexport type DataSourceUploadRemoteSource = z.infer<typeof DataSourceUploadRemoteSource>;\nexport type DataSourceFigmaState = z.infer<typeof DataSourceFigmaState>;\nexport type DataSourceAutoImportMode = z.infer<typeof DataSourceAutoImportMode>;\n\n//\n// Aux\n//\n\nexport const DataSourceStats = z.object({\n tokens: zeroNumberByDefault(),\n components: zeroNumberByDefault(),\n assets: zeroNumberByDefault(),\n frames: zeroNumberByDefault(),\n});\n\nexport type DataSourceStats = z.infer<typeof DataSourceStats>;\n\n//\n// Figma\n//\n\nexport const DataSourceFigmaFileData = z.object({\n lastUpdatedAt: z.coerce.date(),\n});\n\nexport const DataSourceFigmaFileVersionData = z.object({\n id: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n createdAt: z.coerce.date(),\n});\n\nexport const DataSourceFigmaScope = z.object({\n assets: z.boolean(),\n components: z.boolean(),\n documentationFrames: z.boolean(),\n tokens: z.boolean(),\n themePersistentId: z.string().optional(),\n});\n\nexport const DataSourceFigmaImportMetadata = z.object({\n fileData: DataSourceFigmaFileData.optional(),\n importedPublishedVersion: DataSourceFigmaFileVersionData.optional(),\n});\n\nexport const DataSourceFigmaRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.Figma),\n fileId: z.string(),\n ownerId: z.string(),\n ownerName: z.string(),\n scope: DataSourceFigmaScope,\n state: DataSourceFigmaState,\n lastImportMetadata: DataSourceFigmaImportMetadata.optional(),\n downloadChunkSize: z.number().optional(),\n});\n\nexport type DataSourceFigmaFileData = z.infer<typeof DataSourceFigmaFileData>;\nexport type DataSourceFigmaFileVersionData = z.infer<typeof DataSourceFigmaFileVersionData>;\nexport type DataSourceFigmaScope = z.infer<typeof DataSourceFigmaScope>;\nexport type DataSourceFigmaImportMetadata = z.infer<typeof DataSourceFigmaImportMetadata>;\nexport type DataSourceFigmaRemote = z.infer<typeof DataSourceFigmaRemote>;\n\n//\n// Token Studio\n//\n\nexport const DataSourceTokenStudioRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.TokenStudio),\n});\n\nexport type DataSourceTokenStudioRemote = z.infer<typeof DataSourceTokenStudioRemote>;\n\n//\n// Figma Variables Plugin\n//\n\nexport const DataSourceUploadImportMetadata = z.record(z.any());\n\nexport const DataSourceUploadRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.FigmaVariablesPlugin),\n remoteId: z.string(),\n remoteSourceType: DataSourceUploadRemoteSource,\n lastImportMetadata: DataSourceUploadImportMetadata.optional(),\n});\n\nexport type DataSourceUploadImportMetadata = z.infer<typeof DataSourceUploadImportMetadata>;\nexport type DataSourceUploadRemote = z.infer<typeof DataSourceUploadRemote>;\n\n//\n// Base\n//\n\nexport const DataSourceRemote = z.discriminatedUnion(\"type\", [\n DataSourceFigmaRemote,\n DataSourceUploadRemote,\n DataSourceTokenStudioRemote,\n]);\n\nexport type DataSource = {\n id: string;\n\n name: string;\n thumbnailUrl: string | undefined;\n\n // createdAt: Date;\n // updatedAt: Date;\n\n lastImportedAt: Date | undefined;\n lastImportSummary: SourceImportSummary | undefined;\n\n // lastImportJobId: Nullish<string>;\n // lastNonEmptyImportJobId: Nullish<string>;\n\n designSystemId: string;\n brandPersistentId: string;\n\n autoImportMode: DataSourceAutoImportMode;\n stats: DataSourceStats;\n\n remote: DataSourceRemote;\n\n sortOrder: number;\n};\n\nexport const DataSourceVersion = z.object({\n id: z.string(),\n createdAt: z.date(),\n label: z.string().nullish(),\n description: z.string().nullish(),\n});\n\nexport type DataSourceVersion = z.infer<typeof DataSourceVersion>;\n\nexport type DataSourceRemote = z.infer<typeof DataSourceRemote>;\n\nexport type CreateDataSource = OmitStrict<DbCreateInputOmit<DataSource>, \"sortOrder\">;\nexport type UpdateDataSource = OmitStrict<DbUpdate<DataSource>, \"brandPersistentId\" | \"designSystemId\">;\n\nfunction zeroNumberByDefault() {\n return z\n .number()\n .nullish()\n .transform(v => v ?? 0);\n}\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { DataSourceRemoteType } from \"./data-source\";\nimport { Entity } from \"../../common\";\n\nexport const ImportJobState = z.enum([\"PendingInput\", \"Queued\", \"InProgress\", \"Failed\", \"Success\"]);\nexport const ImportJobOperation = z.enum([\"Check\", \"Import\"]);\n\nexport const ImportJob = Entity.extend({\n designSystemId: z.string(),\n designSystemVersionId: z.string(),\n sourceIds: z.array(z.string()),\n state: ImportJobState,\n createdByUserId: z.string().optional(),\n importContextId: z.string(),\n error: z.string().optional(),\n sourceType: DataSourceRemoteType,\n});\n\nexport type ImportJobState = z.infer<typeof ImportJobState>;\nexport type ImportJobOperation = z.infer<typeof ImportJobOperation>;\nexport type ImportJob = z.infer<typeof ImportJob>;\n\nexport type CreateImportJob = DbCreateInputOmit<ImportJob>;\nexport type UpdateImportJob = OmitStrict<\n DbUpdate<ImportJob>,\n \"designSystemId\" | \"createdByUserId\" | \"sourceIds\" | \"importContextId\"\n>;\n","import { z } from \"zod\";\n\nexport const Entity = z.object({\n id: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type Entity = z.infer<typeof Entity>;\n","import { z } from \"zod\";\n\nexport const ObjectMeta = z.object({\n name: z.string(),\n description: z.string().optional(),\n});\n\nexport type ObjectMeta = z.infer<typeof ObjectMeta>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../elements\";\nimport { nullishToOptional } from \"../../helpers\";\nimport { ImportWarning } from \"../import\";\n\nexport const FileStructureStats = z.object({\n frames: zeroNumberByDefault(),\n components: zeroNumberByDefault(),\n componentSets: zeroNumberByDefault(),\n});\n\nconst SourceImportSummaryByTokenTypeKey = DesignTokenType.or(\n // Backward compatibility\n z.enum([\"Measure\", \"Radius\", \"GenericToken\", \"Font\", \"Text\"])\n);\n\nexport const SourceImportSummaryByTokenType = z.record(SourceImportSummaryByTokenTypeKey, z.number());\n\nexport const SourceImportTokenSummary = z.object({\n tokensCreated: zeroNumberByDefault(),\n tokensUpdated: zeroNumberByDefault(),\n tokensDeleted: zeroNumberByDefault(),\n tokensCreatedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n tokensUpdatedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n tokensDeletedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n});\n\nexport const SourceImportComponentSummary = z.object({\n componentsCreated: zeroNumberByDefault(),\n componentsUpdated: zeroNumberByDefault(),\n componentsDeleted: zeroNumberByDefault(),\n componentAssetsCreated: zeroNumberByDefault(),\n componentAssetsUpdated: zeroNumberByDefault(),\n componentAssetsDeleted: zeroNumberByDefault(),\n});\n\nexport const SourceImportFrameSummary = z.object({\n assetsInFile: nullishToOptional(FileStructureStats.optional()),\n invalidReferencesCount: nullishToOptional(z.number().optional()),\n});\n\nexport const SourceImportSummary = z.object({\n sourceId: nullishToOptional(z.string()),\n brandId: nullishToOptional(z.string()),\n versionId: nullishToOptional(z.string()),\n error: nullishToOptional(z.any()),\n isFailed: z.boolean(),\n warnings: z\n .array(ImportWarning)\n .nullish()\n .transform(v => v ?? []),\n\n ...SourceImportTokenSummary.shape,\n ...SourceImportComponentSummary.shape,\n ...FileStructureStats.shape,\n});\n\nexport type FileStructureStats = z.infer<typeof FileStructureStats>;\nexport type SourceImportSummaryByTokenType = z.infer<typeof SourceImportSummaryByTokenType>;\nexport type SourceImportTokenSummary = z.infer<typeof SourceImportTokenSummary>;\nexport type SourceImportComponentSummary = z.infer<typeof SourceImportComponentSummary>;\nexport type SourceImportFrameSummary = z.infer<typeof SourceImportFrameSummary>;\nexport type SourceImportSummary = z.infer<typeof SourceImportSummary>;\n\nfunction zeroNumberByDefault() {\n return z\n .number()\n .nullish()\n .transform(v => v ?? 0);\n}\n","import { ZodSchema, z } from \"zod\";\n\nexport const TokenDataAliasSchema = z.object({\n aliasTo: z\n .string()\n .optional()\n .nullable()\n .transform(v => v ?? undefined),\n});\n\nexport function tokenAliasOrValue<T extends ZodSchema>(value: T) {\n return TokenDataAliasSchema.extend({\n value: value\n .optional()\n .nullable()\n .transform(v => (v ?? undefined) as z.output<T> | undefined),\n });\n}\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\nimport { DimensionTokenData } from \"./dimension\";\n\nexport const BlurType = z.enum([\"Layer\", \"Background\"]);\n\nexport const BlurValue = z.object({\n type: BlurType,\n radius: DimensionTokenData,\n});\n\nexport const BlurTokenData = tokenAliasOrValue(BlurValue);\n\nexport type BlurType = z.infer<typeof BlurType>;\nexport type BlurValue = z.infer<typeof BlurValue>;\nexport type BlurTokenData = z.infer<typeof BlurTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const DimensionUnit = z.enum([\"Pixels\", \"Percent\", \"Rem\", \"Ms\", \"Raw\", \"Points\"]);\n\nexport const DimensionValue = z.object({\n unit: DimensionUnit,\n measure: z.number(),\n});\n\nexport const DimensionTokenData = tokenAliasOrValue(DimensionValue);\n\nexport type DimensionUnit = z.infer<typeof DimensionUnit>;\nexport type DimensionValue = z.infer<typeof DimensionValue>;\nexport type DimensionTokenData = z.infer<typeof DimensionTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderRadiusUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const BorderRadiusValue = z.object({\n unit: BorderRadiusUnit,\n measure: z.number(),\n});\n\nexport const BorderRadiusTokenData = tokenAliasOrValue(BorderRadiusValue);\n\nexport type BorderRadiusUnit = z.infer<typeof BorderRadiusUnit>;\nexport type BorderRadiusValue = z.infer<typeof BorderRadiusValue>;\nexport type BorderRadiusTokenData = z.infer<typeof BorderRadiusTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderWidthUnit = z.enum([\"Pixels\"]);\n\nexport const BorderWidthValue = z.object({\n unit: BorderWidthUnit,\n measure: z.number(),\n});\n\nexport const BorderWidthTokenData = tokenAliasOrValue(BorderWidthValue);\n\nexport type BorderWidthUnit = z.infer<typeof BorderWidthUnit>;\nexport type BorderWidthValue = z.infer<typeof BorderWidthValue>;\nexport type BorderWidthTokenData = z.infer<typeof BorderWidthTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { BorderWidthTokenData } from \"./border-width\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderPosition = z.enum([\"Inside\", \"Center\", \"Outside\"]);\nexport const BorderStyle = z.enum([\"Dashed\", \"Dotted\", \"Solid\", \"Groove\"]);\n\nexport const BorderValue = z.object({\n color: ColorTokenData,\n width: BorderWidthTokenData,\n position: BorderPosition,\n style: BorderStyle.optional(),\n});\n\nexport const BorderTokenData = tokenAliasOrValue(BorderValue);\n\nexport type BorderPosition = z.infer<typeof BorderPosition>;\nexport type BorderStyle = z.infer<typeof BorderStyle>;\nexport type BorderValue = z.infer<typeof BorderValue>;\nexport type BorderTokenData = z.infer<typeof BorderTokenData>;\n","import { z } from \"zod\";\nimport { TokenDataAliasSchema, tokenAliasOrValue } from \"./base\";\nimport { OpacityTokenData } from \"./opacity\";\n\nexport const ColorValue = z.object({\n opacity: OpacityTokenData,\n color: z.string().or(TokenDataAliasSchema),\n});\n\nexport const ColorTokenData = tokenAliasOrValue(ColorValue);\n\nexport type ColorValue = z.infer<typeof ColorValue>;\nexport type ColorTokenData = z.infer<typeof ColorTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const OpacityValue = z.object({\n unit: z.enum([\"Raw\", \"Pixels\"]),\n measure: z.number(),\n});\n\nexport const OpacityTokenData = tokenAliasOrValue(OpacityValue);\n\nexport type OpacityValue = z.infer<typeof OpacityValue>;\nexport type OpacityTokenData = z.infer<typeof OpacityTokenData>;\n","import { z } from \"zod\";\n\nexport const ComponentElementData = z.object({\n value: z.object({\n thumbnailImage: z.object({\n value: z.object({\n url: z.string(),\n assetId: z.string(),\n }),\n }),\n\n svg: z\n .object({\n value: z.object({\n url: z.string(),\n assetId: z.string(),\n }),\n })\n .optional(),\n }),\n});\n\nexport type ComponentElementData = z.infer<typeof ComponentElementData>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../raw-element\";\nimport { DimensionTokenData } from \"./dimension\";\nimport { ColorTokenInlineData } from \"../../properties\";\nimport { Size } from \"../primitives\";\nimport { nullishToOptional } from \"../../../helpers\";\n\n//\n// Enums\n//\n\nexport const PageBlockCalloutType = z.enum([\"Info\", \"Success\", \"Warning\", \"Error\"]);\n\nexport const PageBlockTypeV1 = z.enum([\n \"Text\",\n \"Heading\",\n \"Code\",\n \"UnorderedList\",\n \"OrderedList\",\n \"Quote\",\n \"Callout\",\n \"Divider\",\n \"Image\",\n \"Embed\",\n \"Link\",\n \"Shortcuts\",\n \"FigmaEmbed\",\n \"YoutubeEmbed\",\n \"StorybookEmbed\",\n \"Token\",\n \"TokenGroup\",\n \"TokenList\",\n \"Component\",\n \"ComponentGroup\",\n \"Theme\",\n \"ComponentSandbox\",\n \"Custom\",\n \"FigmaFrames\",\n \"ComponentAssets\",\n \"RenderCode\",\n \"Tabs\",\n \"TabItem\",\n \"Table\",\n \"TableRow\",\n \"TableCell\",\n]);\n\nexport const PageBlockCodeLanguage = z.enum([\n \"Angular\",\n \"Bash\",\n \"C\",\n \"Cpp\",\n \"Csharp\",\n \"CSS\",\n \"Dart\",\n \"Handlebars\",\n \"HTML\",\n \"Java\",\n \"Javascript\",\n \"JSON\",\n \"ReactJSX\",\n \"ReactTSX\",\n \"Kotlin\",\n \"Lua\",\n \"Markdown\",\n \"ObjectiveC\",\n \"PHP\",\n \"Plain\",\n \"Python\",\n \"Ruby\",\n \"Rust\",\n \"Sass\",\n \"SCSS\",\n \"Svetle\",\n \"Swift\",\n \"Twig\",\n \"Typescript\",\n \"Vue\",\n \"XML\",\n \"YAML\",\n]);\n\nexport const PageBlockAlignment = z.enum([\"Left\", \"Center\", \"Stretch\", \"Right\"]);\nexport const PageBlockThemeType = z.enum([\"Override\", \"Comparison\"]);\nexport const PageBlockAssetType = z.enum([\"image\", \"figmaFrame\"]);\n\nexport const PageBlockTilesAlignment = z.enum([\"Center\", \"FrameHeight\"]);\n\nexport const PageBlockTilesLayout = z.enum([\"C8\", \"C7\", \"C6\", \"C5\", \"C4\", \"C3\", \"C2\", \"C1\", \"C1_75\"]);\n\n//\n// Support types\n//\n\nexport const PageBlockTheme = z.object({\n themeIds: z.array(z.string()),\n type: PageBlockThemeType,\n});\n\nexport const PageBlockUrlPreview = z.object({\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n thumbnailUrl: nullishToOptional(z.string()),\n});\n\nexport const PageBlockFrameOrigin = z.object({\n sourceFileName: nullishToOptional(z.string()),\n title: nullishToOptional(z.string()),\n previewUrl: nullishToOptional(z.string()),\n valid: nullishToOptional(z.boolean()),\n referenceId: nullishToOptional(z.string()),\n assetId: nullishToOptional(z.string()),\n assetScale: nullishToOptional(z.number()),\n width: nullishToOptional(z.number()),\n height: nullishToOptional(z.number()),\n});\n\nexport const PageBlockFrame = z.object({\n persistentId: z.string(),\n sourceId: z.string(),\n sourceFrameId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n origin: nullishToOptional(PageBlockFrameOrigin),\n});\n\nexport const PageBlockAsset = z.object({\n type: PageBlockAssetType,\n id: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n figmaFrame: nullishToOptional(PageBlockFrame),\n});\n\nexport const PageBlockLinkPreview = z.object({\n title: nullishToOptional(z.string()),\n valid: nullishToOptional(z.boolean()),\n});\n\nexport const PageBlockShortcut = z.object({\n persistentId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n asset: nullishToOptional(PageBlockAsset),\n documentationItemId: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n urlPreview: nullishToOptional(PageBlockUrlPreview),\n documentationItemPreview: nullishToOptional(PageBlockLinkPreview),\n});\n\nexport const PageBlockCustomBlockPropertyImageValue = z.object({\n asset: nullishToOptional(PageBlockAsset),\n assetId: nullishToOptional(z.string()),\n assetUrl: nullishToOptional(z.string()),\n});\n\nexport const PageBlockCustomBlockPropertyValue = z.object({\n key: z.string(),\n value: z.any(),\n\n // TODO Artem: for some reason there are cases when there's an array here in the DB\n // e.g. element id 67451 in the dev db\n\n // value: z\n // .boolean()\n // .or(z.number())\n // .or(z.string())\n // .or(ColorTokenData)\n // .or(TypographyTokenData)\n // .or(PageBlockCustomBlockPropertyImageValue),\n});\n\nexport const PageBlockFigmaFrameProperties = z.object({\n alignment: PageBlockTilesAlignment,\n layout: PageBlockTilesLayout,\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n showTitles: z.boolean(),\n});\n\nexport const PageBlockRenderCodeProperties = z.object({\n showCode: z.boolean(),\n});\n\nexport const PageBlockAssetComponent = z.object({\n persistentId: z.string(),\n componentAssetId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n});\n\nexport const PageBlockTableColumn = z.object({\n id: z.string(),\n width: DimensionTokenData,\n});\n\nexport const PageBlockTableProperties = z.object({\n showBorders: z.boolean(),\n showHeaderRow: z.boolean(),\n showHeaderColumn: z.boolean(),\n columns: z.array(PageBlockTableColumn),\n});\n\nexport const PageBlockTextSpanAttributeType = z.enum([\"Bold\", \"Italic\", \"Link\", \"Strikethrough\", \"Code\"]);\n\nexport const PageBlockTextSpanAttribute = z.object({\n type: PageBlockTextSpanAttributeType,\n link: nullishToOptional(z.string()),\n documentationItemId: nullishToOptional(z.string()),\n openInNewWindow: nullishToOptional(z.boolean()),\n});\n\nexport const PageBlockTextSpan = z.object({\n text: z.string(),\n attributes: z.array(PageBlockTextSpanAttribute),\n});\n\nexport const PageBlockText = z.object({\n spans: z.array(PageBlockTextSpan),\n});\n\nexport type PageBlockTypeV1 = z.infer<typeof PageBlockTypeV1>;\nexport type PageBlockTextSpanAttribute = z.infer<typeof PageBlockTextSpanAttribute>;\nexport type PageBlockTextSpan = z.infer<typeof PageBlockTextSpan>;\nexport type PageBlockText = z.infer<typeof PageBlockText>;\nexport type PageBlockFrame = z.infer<typeof PageBlockFrame>;\nexport type PageBlockFrameOrigin = z.infer<typeof PageBlockFrameOrigin>;\n\n//\n// Block\n//\n\nconst PageBlockBaseV1 = z.object({\n persistentId: z.string(),\n type: PageBlockTypeV1,\n\n // Element linking\n designObjectId: nullishToOptional(z.string()),\n designObjectIds: nullishToOptional(z.array(z.string())),\n tokenType: nullishToOptional(DesignTokenType.or(z.literal(\"Font\"))),\n showNestedGroups: nullishToOptional(z.boolean()),\n brandId: nullishToOptional(z.string()),\n\n // Rich text\n text: nullishToOptional(PageBlockText),\n caption: nullishToOptional(z.string()),\n headingType: nullishToOptional(z.number().min(1).max(3)),\n codeLanguage: nullishToOptional(PageBlockCodeLanguage),\n calloutType: nullishToOptional(PageBlockCalloutType),\n urlInput: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n urlPreview: nullishToOptional(PageBlockUrlPreview),\n\n // Image\n asset: nullishToOptional(PageBlockAsset),\n alignment: nullishToOptional(PageBlockAlignment),\n\n // Shortcuts block\n shortcuts: nullishToOptional(z.array(PageBlockShortcut)),\n\n // Custom blocks\n customBlockKey: nullishToOptional(z.string()),\n customBlockProperties: nullishToOptional(z.array(PageBlockCustomBlockPropertyValue)),\n variantKey: nullishToOptional(z.string()),\n\n // Figma frames\n figmaFrameProperties: nullishToOptional(PageBlockFigmaFrameProperties),\n figmaFrames: nullishToOptional(z.array(PageBlockFrame)),\n\n // Generic\n size: nullishToOptional(Size),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n\n // Render code\n renderCodeProperties: nullishToOptional(PageBlockRenderCodeProperties),\n\n // Component assets\n componentAssets: nullishToOptional(z.array(PageBlockAssetComponent)),\n\n // Tables\n tableProperties: nullishToOptional(PageBlockTableProperties),\n columnId: nullishToOptional(z.string()),\n\n // Token spreadsheet\n theme: nullishToOptional(PageBlockTheme),\n blacklistedElementProperties: nullishToOptional(z.array(z.string())),\n\n // Arbitrary\n userMetadata: nullishToOptional(z.string()),\n});\n\ntype PageBlockV1Input = z.input<typeof PageBlockBaseV1> & {\n children: PageBlockV1Input[] | null | undefined;\n};\n\nexport const PageBlockV1: z.ZodType<PageBlockV1, z.ZodTypeDef, PageBlockV1Input> = PageBlockBaseV1.extend({\n children: z.lazy(\n () =>\n PageBlockV1.array()\n .nullish()\n .transform(t => t ?? []) as z.ZodType<PageBlockV1[], z.ZodTypeDef, PageBlockV1Input[]>\n ),\n});\n\nexport type PageBlockV1 = z.infer<typeof PageBlockBaseV1> & {\n children: PageBlockV1[];\n};\n\n//\n// Utility methods\n//\n\nexport function traversePageBlocksV1(blocks: PageBlockV1[], action: (block: PageBlockV1) => void) {\n for (const block of blocks) {\n action(block);\n traversePageBlocksV1(block.children, action);\n }\n}\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { ObjectMeta } from \"../../common\";\n\nexport type CreateDesignElement = DbCreateInputOmit<DesignElement>;\nexport type UpdateDesignElement = OmitStrict<\n DbUpdate<DesignElement>,\n \"brandPersistentId\" | \"childType\" | \"designSystemVersionId\" | \"shortPersistentId\" | \"type\"\n>;\n\n//\n// Token types\n//\n\nexport const DesignTokenType = z.enum([\n \"Color\",\n \"Border\",\n \"Gradient\",\n \"Shadow\",\n \"Dimension\",\n \"Duration\",\n \"Size\",\n \"Space\",\n \"Opacity\",\n \"FontSize\",\n \"LineHeight\",\n \"LetterSpacing\",\n \"ParagraphSpacing\",\n \"BorderWidth\",\n \"BorderRadius\",\n \"Duration\",\n \"ZIndex\",\n \"Image\",\n \"String\",\n \"ProductCopy\",\n \"FontFamily\",\n \"FontWeight\",\n \"TextDecoration\",\n \"TextCase\",\n \"Visibility\",\n \"Typography\",\n \"Blur\",\n \"Font\",\n]);\n\nexport const tokenElementTypes: ReadonlyArray<DesignTokenType> = [...DesignTokenType.options.filter(v => v !== \"Font\")];\n\nexport type DesignTokenType = z.infer<typeof DesignTokenType>;\n\n//\n// Non-token types\n//\n\nexport const DesignElementType = DesignTokenType.or(\n z.enum([\n \"Component\",\n \"Theme\",\n \"Documentation\",\n \"DocumentationPage\",\n \"DesignSystemComponent\",\n \"ElementGroup\",\n \"FigmaNodeStructure\",\n \"FigmaNodeReference\",\n \"PageBlock\",\n ])\n);\n\nexport type DesignElementType = z.infer<typeof DesignElementType>;\n\nexport function isTokenType(type: DesignElementType): type is DesignTokenType {\n return DesignTokenType.safeParse(type).success;\n}\n\n//\n// Element category\n//\n\nexport const DesignElementCategory = z.enum([\n \"Token\",\n \"Component\",\n \"DesignSystemComponent\",\n \"DocumentationPage\",\n \"Theme\",\n \"PageBlock\",\n]);\n\nexport type DesignElementCategory = z.infer<typeof DesignElementCategory>;\n\n// Elements\n\nexport const DesignSystemElementExportProps = z.object({\n isAsset: z\n .boolean()\n .nullish()\n .transform(v => v ?? false),\n\n codeName: z.string().nullish(),\n});\n\nexport type DesignSystemElementExportProps = z.infer<typeof DesignSystemElementExportProps>;\n\nexport const ShallowDesignElement = z.object({\n id: z.string(),\n persistentId: z.string(),\n designSystemVersionId: z.string(),\n type: DesignElementType,\n brandPersistentId: z.string().optional(),\n parentPersistentId: z.string().optional(),\n shortPersistentId: z.string().optional(),\n sortOrder: z.number(),\n});\n\nexport const DesignElement = ShallowDesignElement.extend({\n meta: ObjectMeta,\n childType: DesignElementType.optional(),\n slug: z.string().optional(),\n userSlug: z.string().optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\n exportProperties: DesignSystemElementExportProps.optional(),\n data: z.any(), // TODO this should be an object, not any.\n origin: z.any().optional(), // TODO object, not any.\n});\n\nexport type ShallowDesignElement = z.infer<typeof ShallowDesignElement>;\nexport type DesignElement = z.infer<typeof DesignElement>;\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate } from \"../../helpers\";\n\nexport const ElementPropertyType = z.enum([\"Text\", \"Number\", \"Boolean\", \"Select\", \"Generic\", \"Link\", \"URL\"]);\nexport const ElementPropertyTargetType = z.enum([\"Token\", \"Component\", \"DocumentationPage\"]);\nexport const ElementPropertyLinkType = z.enum([\"FigmaComponent\", \"DocumentationPage\"]);\n\nexport const ColorTokenInlineData = z.object({\n value: z.string(),\n});\n\nexport const ElementPropertyDefinitionOption = z.object({\n id: z.string(),\n name: z.string(),\n backgroundColor: ColorTokenInlineData.optional(),\n});\n\nexport const ElementPropertyDefinition = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n persistentId: z.string(),\n name: z.string(),\n codeName: z.string(),\n description: z.string(),\n type: ElementPropertyType,\n targetElementType: ElementPropertyTargetType,\n options: z.array(ElementPropertyDefinitionOption).nullish(),\n linkElementType: ElementPropertyLinkType.nullish(),\n});\n\nexport type ElementPropertyType = z.infer<typeof ElementPropertyType>;\nexport type ElementPropertyTargetType = z.infer<typeof ElementPropertyTargetType>;\nexport type ElementPropertyLinkType = z.infer<typeof ElementPropertyLinkType>;\nexport type ColorTokenInlineData = z.infer<typeof ColorTokenInlineData>;\nexport type ElementPropertyDefinitionOption = z.infer<typeof ElementPropertyDefinitionOption>;\nexport type ElementPropertyDefinition = z.infer<typeof ElementPropertyDefinition>;\n\nexport type CreateElementPropertyDefinition = DbCreateInputOmit<ElementPropertyDefinition>;\nexport type UpdateElementPropertyDefinition = DbUpdate<ElementPropertyDefinition>;\n\nexport type ElementPropertyDefinitionDiff = {\n toCreate: CreateElementPropertyDefinition[];\n toUpdate: UpdateElementPropertyDefinition[];\n};\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const ElementPropertyValue = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n targetElementPersistentId: z.string(),\n definitionPersistentId: z.string(),\n stringValue: z.string().nullish(),\n numberValue: z.number().nullish(),\n booleanValue: z.boolean().nullish(),\n referenceValue: z.string().nullish(),\n referenceValuePreview: z.string().nullish(),\n});\n\nexport type ElementPropertyValue = z.infer<typeof ElementPropertyValue>;\n\nexport type CreateElementPropertyValue = DbCreateInputOmit<ElementPropertyValue>;\nexport type UpdateElementPropertyValue = OmitStrict<\n DbUpdate<ElementPropertyValue>,\n \"designSystemVersionId\" | \"definitionPersistentId\" | \"targetElementPersistentId\"\n>;\n\nexport type ElementPropertyValueDiff = {\n toCreate: CreateElementPropertyValue[];\n toUpdate: UpdateElementPropertyValue[];\n};\n","import { z } from \"zod\";\n\nexport const Point2D = z.object({\n x: z.number(),\n y: z.number(),\n});\n\nexport type Point2D = z.infer<typeof Point2D>;\n","import { z } from \"zod\";\n\nconst nullSize = { height: -1, width: -1 };\n\nfunction isNullSize(size: Size): boolean {\n return size.height === nullSize.height && size.width === nullSize.width;\n}\n\nexport const Size = z.object({\n width: z\n .number()\n .nullish()\n .transform(v => v ?? nullSize.width),\n\n height: z\n .number()\n .nullish()\n .transform(v => v ?? nullSize.height),\n});\n\nexport const SizeOrUndefined = Size.optional().transform(v => {\n if (!v) return undefined;\n if (isNullSize(v)) return undefined;\n\n return v;\n});\n\nexport type Size = z.infer<typeof Size>;\n","export type DbCreateInputOmit<T> = Omit<T, \"id\" | \"createdAt\" | \"updatedAt\">;\n\nexport type DbUpdateInputOmit<T> = Omit<T, \"createdAt\" | \"updatedAt\" | \"persistentId\">;\n\nexport type DbUpdate<T extends { id: string }> = Partial<OptionalToNullable<DbUpdateInputOmit<Omit<T, \"id\">>>> &\n Pick<T, \"id\">;\n\ntype PickOptional<T> = {\n [P in keyof T as undefined extends T[P] ? P : never]: T[P];\n};\n\ntype PickNotOptional<T> = {\n [P in keyof T as undefined extends T[P] ? never : P]: T[P];\n};\n\nexport type OptionalToNullable<T> = {\n [K in keyof PickOptional<T>]-?: Exclude<T[K], undefined> | null;\n} & {\n [K in keyof PickNotOptional<T>]: T[K];\n};\n\nexport function zodCreateInputOmit() {\n return {\n id: true,\n createdAt: true,\n updatedAt: true,\n } as const;\n}\n\nexport function zodUpdateInputOmit() {\n return {\n id: true,\n createdAt: true,\n updatedAt: true,\n persistentId: true,\n } as const;\n}\n","import { ZodType, z } from \"zod\";\n\n/**\n * Allows both null and undefined as input values in addition to the actual value,\n * but coerces them both to undefined.\n */\nexport function nullishToOptional<T>(type: ZodType<T>) {\n return type.nullish().transform(t => t ?? undefined);\n}\n","import { z } from \"zod\";\nimport { ColorValue } from \"./color\";\nimport { PageBlockCalloutType } from \"./documentation-block-v1\";\n\n//\n// Enums\n//\n\nexport const PageBlockLinkType = z.enum([\"Page\", \"PageHeading\", \"Group\", \"Url\"]);\n\nexport type PageBlockLinkType = z.infer<typeof PageBlockLinkType>;\n\n//\n// Definitions\n//\n\nexport const PageBlockAppearanceV2 = z.object({\n itemBackgroundColor: ColorValue,\n});\n\nexport const PageBlockItemPropertyValue = z.object({\n value: z.any(),\n calloutType: PageBlockCalloutType.optional(),\n});\n\nexport const PageBlockLinkV2 = z.object({\n type: PageBlockLinkType,\n pageId: z.string().optional(),\n pageHeadingId: z.string().optional(),\n groupId: z.string().optional(),\n url: z.string().optional(),\n openInNewTab: z.boolean().optional(),\n});\n\nexport const PageBlockItemV2 = z.object({\n id: z.string(),\n linksTo: PageBlockLinkV2.optional(),\n props: z.record(PageBlockItemPropertyValue),\n});\n\nexport const PageBlockDataV2 = z.object({\n packageId: z.string(),\n variantId: z.string().optional(),\n indentLevel: z.number(),\n appearance: PageBlockAppearanceV2.optional(),\n items: z.array(PageBlockItemV2),\n});\n\nexport type PageBlockAppearanceV2 = z.infer<typeof PageBlockAppearanceV2>;\nexport type PageBlockItemPropertyValue = z.infer<typeof PageBlockItemPropertyValue>;\nexport type PageBlockLinkV2 = z.infer<typeof PageBlockLinkV2>;\nexport type PageBlockItemV2 = z.infer<typeof PageBlockItemV2>;\nexport type PageBlockDataV2 = z.infer<typeof PageBlockDataV2>;\n","import { z } from \"zod\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\nimport { PageBlockV1 } from \"./documentation-block-v1\";\nimport { nullishToOptional } from \"../../../helpers\";\n\nexport const DocumentationPageDataV1 = z.object({\n blocks: z.array(PageBlockV1),\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const DocumentationPageElementDataV1 = z.object({\n value: DocumentationPageDataV1,\n});\n","import { z } from \"zod\";\n\nexport const DocumentationItemConfiguration = z.object({\n showSidebar: z.boolean(),\n header: z.any(),\n});\n\nexport type DocumentationItemConfiguration = z.infer<typeof DocumentationItemConfiguration>;\n","import { z } from \"zod\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\nimport { nullishToOptional } from \"../../../helpers\";\n\nexport const DocumentationPageDataV2 = z.object({\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const DocumentationPageElementDataV2 = z.object({\n value: DocumentationPageDataV2,\n});\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const DurationUnit = z.enum([\"Ms\"]);\n\nexport const DurationValue = z.object({\n unit: DurationUnit,\n measure: z.number(),\n});\n\nexport const DurationTokenData = tokenAliasOrValue(DurationValue);\n\nexport type DurationUnit = z.infer<typeof DurationUnit>;\nexport type DurationValue = z.infer<typeof DurationValue>;\nexport type DurationTokenData = z.infer<typeof DurationTokenData>;\n","import { ZodTypeDef, z } from \"zod\";\nimport { Size, SizeOrUndefined } from \"../primitives/size\";\n\nexport const FigmaFileStructureNodeType = z.enum([\"DOCUMENT\", \"CANVAS\", \"FRAME\", \"COMPONENT\", \"COMPONENT_SET\"]);\n\nexport const FigmaFileStructureNodeBase = z.object({\n id: z.string(),\n name: z.string(),\n type: FigmaFileStructureNodeType,\n size: SizeOrUndefined,\n parentComponentSetId: z.string().optional(),\n});\n\nexport const FigmaFileStructureNode: z.ZodType<FigmaFileStructureNode, ZodTypeDef, FigmaFileStructureNodeBaseInput> =\n FigmaFileStructureNodeBase.extend({\n children: z.lazy(() => FigmaFileStructureNode.array()),\n });\n\ntype FigmaFileStructureNodeBaseInput = z.input<typeof FigmaFileStructureNodeBase> & {\n children: FigmaFileStructureNodeBaseInput[];\n};\n\nexport const FigmaFileStructureStatistics = z.object({\n frames: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n components: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n componentSets: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n});\n\nexport const FigmaFileStructureElementData = z.object({\n value: z.object({\n structure: FigmaFileStructureNode,\n assetsInFile: FigmaFileStructureStatistics,\n }),\n});\n\nexport type FigmaFileStructureNodeBase = z.infer<typeof FigmaFileStructureNodeBase>;\nexport type FigmaFileStructureNodeType = z.infer<typeof FigmaFileStructureStatistics>;\nexport type FigmaFileStructureNode = z.infer<typeof FigmaFileStructureNodeBase> & {\n children: FigmaFileStructureNode[];\n};\nexport type FigmaFileStructureStatistics = z.infer<typeof FigmaFileStructureStatistics>;\nexport type FigmaFileStructureElementData = z.infer<typeof FigmaFileStructureElementData>;\n\nexport function figmaFileStructureToMap(root: FigmaFileStructureNode): Map<string, FigmaFileStructureNode> {\n const map = new Map<string, FigmaFileStructureNode>();\n recursiveFigmaFileStructureToMap(root, map);\n return map;\n}\n\nfunction recursiveFigmaFileStructureToMap(node: FigmaFileStructureNode, map: Map<string, FigmaFileStructureNode>) {\n map.set(node.id, node);\n for (const child of node.children) recursiveFigmaFileStructureToMap(child, map);\n}\n","import { z } from \"zod\";\n\nexport const FigmaNodeReferenceData = z.object({\n structureElementId: z.string(),\n nodeId: z.string(),\n fileId: z.string().optional(),\n valid: z.boolean(),\n assetId: z.string().optional(),\n assetScale: z.number().optional(),\n assetWidth: z.number().optional(),\n assetHeight: z.number().optional(),\n assetUrl: z.string().optional(),\n});\n\nexport const FigmaNodeReferenceElementData = z.object({\n value: FigmaNodeReferenceData,\n});\n\nexport type FigmaNodeReferenceData = z.infer<typeof FigmaNodeReferenceData>;\nexport type FigmaNodeReferenceElementData = z.infer<typeof FigmaNodeReferenceElementData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontFamilyValue = z.string();\nexport const FontFamilyTokenData = tokenAliasOrValue(FontFamilyValue);\n\nexport type FontFamilyValue = z.infer<typeof FontFamilyValue>;\nexport type FontFamilyTokenData = z.infer<typeof FontFamilyTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontSizeUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const FontSizeValue = z.object({\n unit: FontSizeUnit,\n measure: z.number(),\n});\n\nexport const FontSizeTokenData = tokenAliasOrValue(FontSizeValue);\n\nexport type FontSizeUnit = z.infer<typeof FontSizeUnit>;\nexport type FontSizeValue = z.infer<typeof FontSizeValue>;\nexport type FontSizeTokenData = z.infer<typeof FontSizeTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontWeightValue = z.string();\nexport const FontWeightTokenData = tokenAliasOrValue(FontWeightValue);\n\nexport type FontWeightValue = z.infer<typeof FontWeightValue>;\nexport type FontWeightTokenData = z.infer<typeof FontWeightTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { tokenAliasOrValue } from \"./base\";\nimport { nullishToOptional } from \"../../../helpers\";\nimport { Point2D } from \"../primitives\";\n\nexport const GradientType = z.enum([\"Linear\", \"Radial\", \"Angular\"]);\n\nexport const GradientStop = z.object({\n position: z.number(),\n color: ColorTokenData,\n});\n\nexport const GradientLayerValue = z.object({\n from: Point2D,\n to: Point2D,\n type: GradientType,\n aspectRatio: nullishToOptional(z.number()), // z.number(),\n stops: z.array(GradientStop).min(2),\n});\n\nexport const GradientLayerData = tokenAliasOrValue(GradientLayerValue);\n\nexport const GradientTokenValue = z.array(GradientLayerData);\nexport const GradientTokenData = tokenAliasOrValue(GradientTokenValue);\n\nexport type GradientType = z.infer<typeof GradientType>;\nexport type GradientStop = z.infer<typeof GradientStop>;\nexport type GradientLayerValue = z.infer<typeof GradientLayerValue>;\nexport type GradientLayerData = z.infer<typeof GradientLayerData>;\nexport type GradientTokenValue = z.infer<typeof GradientTokenValue>;\nexport type GradientTokenData = z.infer<typeof GradientTokenData>;\n","import { z } from \"zod\";\nimport { nullishToOptional } from \"../../../helpers\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\n\nexport const DocumentationGroupBehavior = z.enum([\"Group\", \"Tabs\"]);\n\nexport const ElementGroupData = z.object({\n behavior: nullishToOptional(DocumentationGroupBehavior.optional()),\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const ElementGroupElementData = z.object({\n value: ElementGroupData.optional(),\n});\n\nexport type DocumentationGroupBehavior = z.infer<typeof DocumentationGroupBehavior>;\nexport type ElementGroupData = z.infer<typeof ElementGroupData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const LetterSpacingUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const LetterSpacingValue = z.object({\n unit: LetterSpacingUnit,\n measure: z.number(),\n});\n\nexport const LetterSpacingTokenData = tokenAliasOrValue(LetterSpacingValue);\n\nexport type LetterSpacingUnit = z.infer<typeof LetterSpacingUnit>;\nexport type LetterSpacingValue = z.infer<typeof LetterSpacingValue>;\nexport type LetterSpacingTokenData = z.infer<typeof LetterSpacingTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const LineHeightUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\", \"Raw\"]);\n\nexport const LineHeightValue = z.object({\n unit: LineHeightUnit,\n measure: z.number(),\n});\n\nexport const LineHeightTokenData = tokenAliasOrValue(LineHeightValue);\n\nexport type LineHeightUnit = z.infer<typeof LineHeightUnit>;\nexport type LineHeightValue = z.infer<typeof LineHeightValue>;\nexport type LineHeightTokenData = z.infer<typeof LineHeightTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ParagraphIndentUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const ParagraphIndentValue = z.object({\n unit: ParagraphIndentUnit,\n measure: z.number(),\n});\n\nexport const ParagraphIndentTokenData = tokenAliasOrValue(ParagraphIndentValue);\n\nexport type ParagraphIndentUnit = z.infer<typeof ParagraphIndentUnit>;\nexport type ParagraphIndentValue = z.infer<typeof ParagraphIndentValue>;\nexport type ParagraphIndentTokenData = z.infer<typeof ParagraphIndentTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ParagraphSpacingUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const ParagraphSpacingValue = z.object({\n unit: ParagraphSpacingUnit,\n measure: z.number(),\n});\n\nexport const ParagraphSpacingTokenData = tokenAliasOrValue(ParagraphSpacingValue);\n\nexport type ParagraphSpacingUnit = z.infer<typeof ParagraphSpacingUnit>;\nexport type ParagraphSpacingValue = z.infer<typeof ParagraphSpacingValue>;\nexport type ParagraphSpacingTokenData = z.infer<typeof ParagraphSpacingTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ProductCopyValue = z.string();\nexport const ProductCopyTokenData = tokenAliasOrValue(ProductCopyValue);\n\nexport type ProductCopyValue = z.infer<typeof ProductCopyValue>;\nexport type ProductCopyTokenData = z.infer<typeof ProductCopyTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { OpacityTokenData } from \"./opacity\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ShadowType = z.enum([\"Drop\", \"Inner\"]);\n\nexport const ShadowLayerValue = z.object({\n color: ColorTokenData,\n x: z.number(),\n y: z.number(),\n radius: z.number(),\n spread: z.number(),\n opacity: OpacityTokenData,\n type: ShadowType,\n});\n\nconst ShadowTokenDataBase = tokenAliasOrValue(ShadowLayerValue);\nexport const ShadowTokenData = tokenAliasOrValue(z.array(ShadowTokenDataBase));\n\nexport type ShadowType = z.infer<typeof ShadowType>;\nexport type ShadowLayerValue = z.infer<typeof ShadowLayerValue>;\nexport type ShadowTokenData = z.infer<typeof ShadowTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const SizeUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const SizeValue = z.object({\n unit: SizeUnit,\n measure: z.number(),\n});\n\nexport const SizeTokenData = tokenAliasOrValue(SizeValue);\n\nexport type SizeUnit = z.infer<typeof SizeUnit>;\nexport type SizeValue = z.infer<typeof SizeValue>;\nexport type SizeTokenData = z.infer<typeof SizeTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const SpaceUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const SpaceValue = z.object({\n unit: SpaceUnit,\n measure: z.number(),\n});\n\nexport const SpaceTokenData = tokenAliasOrValue(SpaceValue);\n\nexport type SpaceUnit = z.infer<typeof SpaceUnit>;\nexport type SpaceValue = z.infer<typeof SpaceValue>;\nexport type SpaceTokenData = z.infer<typeof SpaceTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const StringValue = z.string();\nexport const StringTokenData = tokenAliasOrValue(StringValue);\n\nexport type StringValue = z.infer<typeof StringValue>;\nexport type StringTokenData = z.infer<typeof StringTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TextCase = z.enum([\"Original\", \"Upper\", \"Lower\", \"Camel\", \"SmallCaps\"]);\nexport const TextCaseValue = TextCase;\nexport const TextCaseTokenData = tokenAliasOrValue(TextCaseValue);\n\nexport type TextCase = z.infer<typeof TextCase>;\nexport type TextCaseValue = z.infer<typeof TextCaseValue>;\nexport type TextCaseTokenData = z.infer<typeof TextCaseTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TextDecoration = z.enum([\"None\", \"Underline\", \"Strikethrough\"]);\nexport const TextDecorationValue = TextDecoration;\nexport const TextDecorationTokenData = tokenAliasOrValue(TextDecorationValue);\n\nexport type TextDecoration = z.infer<typeof TextDecoration>;\nexport type TextDecorationValue = z.infer<typeof TextDecorationValue>;\nexport type TextDecorationTokenData = z.infer<typeof TextDecorationTokenData>;\n","import { z } from \"zod\";\nimport { FontSizeTokenData } from \"./font-size\";\nimport { FontFamilyTokenData } from \"./font-family\";\nimport { FontWeightTokenData } from \"./font-weight\";\nimport { TextDecorationTokenData } from \"./text-decoration\";\nimport { TextCaseTokenData } from \"./text-case\";\nimport { LetterSpacingTokenData } from \"./letter-spacing\";\nimport { LineHeightTokenData } from \"./line-height\";\nimport { ParagraphIndentTokenData } from \"./paragraph-indent\";\nimport { ParagraphSpacingTokenData } from \"./paragraph-spacing\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TypographyValue = z.object({\n fontSize: FontSizeTokenData,\n fontFamily: FontFamilyTokenData,\n fontWeight: FontWeightTokenData,\n textDecoration: TextDecorationTokenData,\n textCase: TextCaseTokenData,\n letterSpacing: LetterSpacingTokenData.optional(),\n lineHeight: LineHeightTokenData.optional(),\n paragraphIndent: ParagraphIndentTokenData.optional(),\n paragraphSpacing: ParagraphSpacingTokenData.optional(),\n});\n\nexport const TypographyTokenData = tokenAliasOrValue(TypographyValue);\n\nexport type TypographyValue = z.infer<typeof TypographyValue>;\nexport type TypographyTokenData = z.infer<typeof TypographyTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const Visibility = z.enum([\"Hidden\", \"Visible\"]);\nexport const VisibilityValue = Visibility;\nexport const VisibilityTokenData = tokenAliasOrValue(VisibilityValue);\n\nexport type Visibility = z.infer<typeof Visibility>;\nexport type VisibilityValue = z.infer<typeof VisibilityValue>;\nexport type VisibilityTokenData = z.infer<typeof VisibilityTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ZIndexUnit = z.enum([\"Raw\"]);\n\nexport const ZIndexValue = z.object({\n unit: ZIndexUnit,\n measure: z.number(),\n});\n\nexport const ZIndexTokenData = tokenAliasOrValue(ZIndexValue);\n\nexport type ZIndexUnit = z.infer<typeof ZIndexUnit>;\nexport type ZIndexValue = z.infer<typeof ZIndexValue>;\nexport type ZIndexTokenData = z.infer<typeof ZIndexTokenData>;\n","import { z } from \"zod\";\nimport { ObjectMeta } from \"../../common\";\n\nexport const DesignElementOrigin = z.object({\n id: z.string(),\n sourceId: z.string(),\n name: z.string(),\n});\n\nexport const DesignElementBase = z.object({\n id: z.string(),\n persistentId: z.string(),\n meta: ObjectMeta,\n designSystemVersionId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport const DesignElementImportedBase = DesignElementBase.extend({\n origin: DesignElementOrigin,\n});\n\nexport const DesignElementGroupablePart = z.object({\n parentPersistentId: z.string().optional(),\n sortOrder: z.number(),\n});\n\nexport const DesignElementGroupableBase = DesignElementBase.extend(DesignElementGroupablePart.shape);\n\nexport const DesignElementGroupableRequiredPart = DesignElementGroupablePart.extend({\n parentPersistentId: z.string(),\n});\n\nexport const DesignElementBrandedPart = z.object({\n brandPersistentId: z.string(),\n});\n\nexport const DesignElementSlugPart = z.object({\n slug: z.string().optional(),\n userSlug: z.string().optional(),\n});\n\nexport type DesignElementOrigin = z.infer<typeof DesignElementOrigin>;\nexport type DesignElementBase = z.infer<typeof DesignElementBase>;\nexport type DesignElementGroupablePart = z.infer<typeof DesignElementGroupablePart>;\nexport type DesignElementGroupableBase = z.infer<typeof DesignElementGroupableBase>;\nexport type DesignElementGroupableRequiredPart = z.infer<typeof DesignElementGroupableRequiredPart>;\nexport type DesignElementBrandedPart = z.infer<typeof DesignElementBrandedPart>;\nexport type DesignElementSlugPart = z.infer<typeof DesignElementSlugPart>;\n","import { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { z } from \"zod\";\nimport {\n DesignElementBase,\n DesignElementBrandedPart,\n DesignElementGroupableRequiredPart,\n DesignElementOrigin,\n} from \"./base\";\n\nexport const ComponentOriginPart = z.object({\n nodeId: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n});\n\nconst ComponentAsset = z.object({\n assetId: z.string(),\n assetPath: z.string(),\n});\n\nexport const ComponentOrigin = DesignElementOrigin.extend(ComponentOriginPart.shape);\n\nexport const Component = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementBrandedPart.shape)\n .extend({\n origin: ComponentOrigin.optional(),\n thumbnail: ComponentAsset,\n svg: ComponentAsset.optional(),\n isAsset: z.boolean(),\n });\n\nexport type ComponentAsset = z.infer<typeof ComponentAsset>;\nexport type Component = z.infer<typeof Component>;\nexport type ComponentOrigin = z.infer<typeof ComponentOrigin>;\nexport type ImportedComponent = OmitStrict<Component, \"origin\"> & { origin: ComponentOrigin };\n\nexport function isImportedComponent(component: Component): component is ImportedComponent {\n return !!component.origin;\n}\n\nexport type CreateComponent = DbCreateInputOmit<Component>;\nexport type UpdateComponent = OmitStrict<DbUpdate<Component>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type ComponentDiff = {\n toCreate: CreateComponent[];\n toUpdate: UpdateComponent[];\n toDelete: Component[\"id\"][];\n};\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart, DesignElementSlugPart } from \"./base\";\nimport { DocumentationPageDataV1 } from \"./data\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const DocumentationPageV1 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend({\n shortPersistentId: z.string(),\n data: DocumentationPageDataV1,\n });\n\nexport type DocumentationPageV1 = z.infer<typeof DocumentationPageV1>;\n\nexport type CreateDocumentationPageV1 = DbCreateInputOmit<DocumentationPageV1>;\nexport type UpdateDocumentationPageV1 = OmitStrict<DbUpdate<DocumentationPageV1>, \"designSystemVersionId\">;\n\nexport const DocumentationPageDTOV1 = DocumentationPageV1.omit({\n data: true,\n meta: true,\n parentPersistentId: true,\n sortOrder: true,\n})\n .extend(DocumentationPageV1.shape.data.shape)\n .extend({\n title: z.string(),\n path: z.string(),\n });\n\nexport type DocumentationPageDTOV1 = z.infer<typeof DocumentationPageDTOV1>;\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart, DesignElementSlugPart } from \"./base\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { DocumentationPageDataV2 } from \"./data/documentation-page-v2\";\n\nexport const DocumentationPageV2 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend({\n shortPersistentId: z.string(),\n data: DocumentationPageDataV2,\n });\n\nexport type DocumentationPageV2 = z.infer<typeof DocumentationPageV2>;\n\nexport type CreateDocumentationPageV2 = DbCreateInputOmit<DocumentationPageV2>;\nexport type UpdateDocumentationPageV2 = OmitStrict<DbUpdate<DocumentationPageV2>, \"designSystemVersionId\">;\n","import { z } from \"zod\";\nimport { DesignElementBase } from \"./base\";\nimport { FigmaFileStructureNode, FigmaFileStructureStatistics } from \"./data/figma-file-structure\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const FigmaFileStructureOrigin = z.object({\n sourceId: z.string(),\n fileId: z.string().optional(),\n});\n\nexport const FigmaFileStructureData = z.object({\n rootNode: FigmaFileStructureNode,\n assetsInFile: FigmaFileStructureStatistics,\n});\n\nexport const FigmaFileStructure = DesignElementBase.extend({\n origin: FigmaFileStructureOrigin,\n data: FigmaFileStructureData,\n});\n\nexport type FigmaFileStructureOrigin = z.infer<typeof FigmaFileStructureOrigin>;\nexport type FigmaFileStructureData = z.infer<typeof FigmaFileStructureData>;\nexport type FigmaFileStructure = z.infer<typeof FigmaFileStructure>;\n\nexport type CreateFigmaFileStructure = DbCreateInputOmit<FigmaFileStructure>;\nexport type UpdateFigmaFileStructure = OmitStrict<DbUpdate<FigmaFileStructure>, \"designSystemVersionId\">;\n\nexport type FigmaFileStructureDiff = {\n toCreate: CreateFigmaFileStructure[];\n toUpdate: UpdateFigmaFileStructure[];\n};\n\nexport function traverseStructure(node: FigmaFileStructureNode, action: (node: FigmaFileStructureNode) => void) {\n action(node);\n\n for (const child of node.children) {\n traverseStructure(child, action);\n }\n}\n","import { z } from \"zod\";\nimport { DesignElementBase } from \"./base\";\nimport { FigmaNodeReferenceData } from \"./data/figma-node-reference\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const FigmaNodeReference = DesignElementBase.extend({\n data: FigmaNodeReferenceData,\n});\n\nexport type FigmaNodeReference = z.infer<typeof FigmaNodeReference>;\n\nexport type CreateFigmaNodeReference = DbCreateInputOmit<FigmaNodeReference>;\nexport type UpdateFigmaNodeReference = OmitStrict<DbUpdate<FigmaNodeReference>, \"designSystemVersionId\">;\n\nexport type FigmaNodeReferenceDiff = {\n toUpdate: UpdateFigmaNodeReference[];\n};\n","import { DesignElementType } from \"./raw-element\";\nimport { DesignElementBase, DesignElementBrandedPart, DesignElementGroupablePart, DesignElementSlugPart } from \"./base\";\nimport { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate } from \"../../helpers\";\nimport { OmitStrict } from \"../../helpers\";\nimport { DocumentationGroupBehavior, ElementGroupData } from \"./data\";\nimport { DocumentationItemConfiguration } from \"./data\";\nexport const ElementGroup = DesignElementBase.extend(DesignElementGroupablePart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend(DesignElementBrandedPart.partial().shape)\n .extend({\n shortPersistentId: z.string().optional(),\n childType: DesignElementType,\n data: ElementGroupData.optional(),\n });\n\nexport const BrandedElementGroup = ElementGroup.extend(DesignElementBrandedPart.shape);\n\nexport type ElementGroup = z.infer<typeof ElementGroup>;\nexport type BrandedElementGroup = z.infer<typeof BrandedElementGroup>;\n\nexport type CreateElementGroup = OmitStrict<DbCreateInputOmit<ElementGroup>, \"parentPersistentId\"> & {\n parentPersistentId: string;\n};\n\nexport type UpdateElementGroup = DbUpdate<\n OmitStrict<ElementGroup, \"brandPersistentId\" | \"childType\" | \"designSystemVersionId\" | \"parentPersistentId\"> & {\n parentPersistentId: string;\n }\n>;\n\nexport type ElementGroupsDiff = {\n toCreate: CreateElementGroup[];\n toUpdate: UpdateElementGroup[];\n toDelete: ElementGroup[\"id\"][];\n};\n\n//\n// DTO\n//\n\nexport const DocumentationGroupDTO = ElementGroup.omit({\n sortOrder: true,\n parentPersistentId: true,\n brandPersistentId: true,\n meta: true,\n childType: true,\n data: true,\n shortPersistentId: true,\n}).extend({\n title: z.string(),\n isRoot: z.boolean(),\n childrenIds: z.array(z.string()),\n groupBehavior: DocumentationGroupBehavior,\n configuration: DocumentationItemConfiguration,\n shortPersistentId: z.string(),\n});\n\nexport type DocumentationGroupDTO = z.infer<typeof DocumentationGroupDTO>;\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart } from \"./base\";\nimport { PageBlockDataV2 } from \"./data\";\n\n//\n// Element\n//\n\nexport const PageBlockV2 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape).extend({\n data: PageBlockDataV2,\n});\n\nexport type PageBlockV2 = z.infer<typeof PageBlockV2>;\n\n//\n// Editor Model\n//\n\nexport const PageBlockEditorModelV2 = z.object({\n id: z.string(),\n data: PageBlockDataV2,\n});\n\nexport type PageBlockEditorModelV2 = z.infer<typeof PageBlockEditorModelV2>;\n","import { z } from \"zod\";\nimport { DesignTokenOrigin, DesignTokenOriginPart, DesignTokenTypedData } from \"./tokens\";\nimport { DesignTokenType } from \"./raw-element\";\nimport { DesignElementBase, DesignElementBrandedPart } from \"./base\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\n//\n// Overrides\n//\n\nexport const ThemeOverrideOriginPart = DesignTokenOriginPart;\nexport const ThemeOverrideOrigin = DesignTokenOrigin;\n\nexport const ThemeOverride = DesignTokenTypedData.and(\n z.object({\n tokenPersistentId: z.string(),\n origin: ThemeOverrideOrigin.optional()\n .nullable()\n .transform(v => v ?? undefined),\n })\n);\n\nexport type ThemeOverride = z.infer<typeof ThemeOverride>;\nexport type ThemeOverrideOfType<T extends DesignTokenType> = Extract<ThemeOverride, { type: T }>;\n\n//\n// Theme data\n//\n\nexport const ThemeElementData = z.object({\n value: z.object({\n overrides: z.array(ThemeOverride),\n }),\n});\n\nexport type ThemeElementData = z.infer<typeof ThemeElementData>;\n\n//\n// Theme\n//\n\nexport const ThemeOriginPart = z.object({});\n\nexport const ThemeOriginObject = z.object({\n id: z.string(),\n name: z.string(),\n});\n\nexport const ThemeOriginSource = z.object({\n sourceId: z.string(),\n sourceObjects: z.array(ThemeOriginObject),\n});\n\nexport const ThemeOrigin = z.object({\n sources: z.array(ThemeOriginSource),\n});\n\nexport const Theme = DesignElementBase.extend(DesignElementBrandedPart.shape).extend({\n origin: ThemeOrigin.optional(),\n overrides: z.array(ThemeOverride),\n});\n\nexport type Theme = z.infer<typeof Theme>;\nexport type ThemeOrigin = z.infer<typeof ThemeOrigin>;\nexport type ThemeOriginSource = z.infer<typeof ThemeOriginSource>;\nexport type ThemeOriginObject = z.infer<typeof ThemeOriginObject>;\n\nexport type CreateTheme = DbCreateInputOmit<Theme>;\nexport type UpdateTheme = OmitStrict<DbUpdate<Theme>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type ThemeDiff = {\n toCreate: CreateTheme[];\n toUpdate: UpdateTheme[];\n};\n","import { z } from \"zod\";\nimport {\n DesignElementBase,\n DesignElementBrandedPart,\n DesignElementGroupableRequiredPart,\n DesignElementOrigin,\n} from \"./base\";\nimport { DbUpdate, OmitStrict, zodCreateInputOmit, zodUpdateInputOmit } from \"../../helpers\";\nimport { DesignTokenType } from \"./raw-element\";\nimport {\n TextCaseTokenData,\n FontWeightTokenData,\n LetterSpacingTokenData,\n LineHeightTokenData,\n ParagraphSpacingTokenData,\n StringTokenData,\n TextDecorationTokenData,\n BorderRadiusTokenData,\n BorderWidthTokenData,\n BorderTokenData,\n ProductCopyTokenData,\n FontFamilyTokenData,\n FontSizeTokenData,\n DimensionTokenData,\n TypographyTokenData,\n ShadowTokenData,\n OpacityTokenData,\n GradientTokenData,\n ColorTokenData,\n BlurTokenData,\n DurationTokenData,\n ZIndexTokenData,\n VisibilityTokenData,\n SpaceTokenData,\n SizeTokenData,\n} from \"./data\";\n\n//\n// Base\n//\n\nexport const DesignTokenOriginPart = z.object({\n referenceOriginId: z.string().optional(),\n referencePersistentId: z.string().optional(),\n});\n\nexport const DesignTokenOrigin = DesignElementOrigin.extend(DesignTokenOriginPart.shape);\n\nconst DesignTokenBase = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementBrandedPart.shape)\n .extend({\n origin: DesignTokenOrigin.optional(),\n });\n\nconst CreateDesignTokenBase = DesignTokenBase.omit(zodCreateInputOmit());\nconst UpdateDesignTokenBase = DesignTokenBase.omit({\n ...zodUpdateInputOmit(),\n brandPersistentId: true,\n designSystemVersionId: true,\n});\n\n//\n// Per type\n//\n\nconst BlurTokenTypedData = z.object({\n type: z.literal(\"Blur\"),\n data: BlurTokenData,\n});\n\nconst ColorTokenTypedData = z.object({\n type: z.literal(\"Color\"),\n data: ColorTokenData,\n});\n\nconst GradientTokenTypedData = z.object({\n type: z.literal(\"Gradient\"),\n data: GradientTokenData,\n});\n\nconst OpacityTokenTypedData = z.object({\n type: z.literal(\"Opacity\"),\n data: OpacityTokenData,\n});\n\nconst ShadowTokenTypedData = z.object({\n type: z.literal(\"Shadow\"),\n data: ShadowTokenData,\n});\n\nconst TypographyTokenTypedData = z.object({\n type: z.literal(\"Typography\"),\n data: TypographyTokenData,\n});\n\nconst StringTokenTypedData = z.object({\n type: z.literal(\"String\"),\n data: StringTokenData,\n});\n\nconst DimensionTokenTypedData = z.object({\n type: z.literal(\"Dimension\"),\n data: DimensionTokenData,\n});\n\nconst FontSizeTokenTypedData = z.object({\n type: z.literal(\"FontSize\"),\n data: FontSizeTokenData,\n});\n\nconst FontFamilyTokenTypedData = z.object({\n type: z.literal(\"FontFamily\"),\n data: FontFamilyTokenData,\n});\n\nconst FontWeightTokenTypedData = z.object({\n type: z.literal(\"FontWeight\"),\n data: FontWeightTokenData,\n});\n\nconst LetterSpacingTokenTypedData = z.object({\n type: z.literal(\"LetterSpacing\"),\n data: LetterSpacingTokenData,\n});\n\nconst LineHeightTokenTypedData = z.object({\n type: z.literal(\"LineHeight\"),\n data: LineHeightTokenData,\n});\n\nconst ParagraphSpacingTokenTypedData = z.object({\n type: z.literal(\"ParagraphSpacing\"),\n data: ParagraphSpacingTokenData,\n});\n\nconst TextCaseTokenTypedData = z.object({\n type: z.literal(\"TextCase\"),\n data: TextCaseTokenData,\n});\n\nconst TextDecorationTokenTypedData = z.object({\n type: z.literal(\"TextDecoration\"),\n data: TextDecorationTokenData,\n});\n\nconst BorderRadiusTokenTypedData = z.object({\n type: z.literal(\"BorderRadius\"),\n data: BorderRadiusTokenData,\n});\n\nconst BorderWidthTokenTypedData = z.object({\n type: z.literal(\"BorderWidth\"),\n data: BorderWidthTokenData,\n});\n\nconst BorderTypedData = z.object({\n type: z.literal(\"Border\"),\n data: BorderTokenData,\n});\n\nconst ProductCopyTypedData = z.object({\n type: z.literal(\"ProductCopy\"),\n data: ProductCopyTokenData,\n});\n\nconst SizeTypedData = z.object({\n type: z.literal(\"Size\"),\n data: SizeTokenData,\n});\n\nconst SpaceTypedData = z.object({\n type: z.literal(\"Space\"),\n data: SpaceTokenData,\n});\n\nconst VisibilityTypedData = z.object({\n type: z.literal(\"Visibility\"),\n data: VisibilityTokenData,\n});\n\nconst ZIndexTypedData = z.object({\n type: z.literal(\"ZIndex\"),\n data: ZIndexTokenData,\n});\n\nconst DurationTypedData = z.object({\n type: z.literal(\"Duration\"),\n data: DurationTokenData,\n});\n\nconst FontTypedData = z.object({\n type: z.literal(\"Font\"),\n data: z.record(z.any()),\n});\n\n//\n// Global types\n//\n\nexport const DesignTokenTypedData = z.discriminatedUnion(\"type\", [\n BlurTokenTypedData,\n BorderRadiusTokenTypedData,\n BorderWidthTokenTypedData,\n BorderTypedData,\n ColorTokenTypedData,\n\n DimensionTokenTypedData,\n DurationTypedData,\n FontSizeTokenTypedData,\n FontFamilyTokenTypedData,\n FontWeightTokenTypedData,\n\n GradientTokenTypedData,\n LetterSpacingTokenTypedData,\n LineHeightTokenTypedData,\n OpacityTokenTypedData,\n ParagraphSpacingTokenTypedData,\n\n ProductCopyTypedData,\n ShadowTokenTypedData,\n SizeTypedData,\n SpaceTypedData,\n StringTokenTypedData,\n\n TextCaseTokenTypedData,\n TextDecorationTokenTypedData,\n TypographyTokenTypedData,\n VisibilityTypedData,\n ZIndexTypedData,\n FontTypedData,\n]);\n\nexport type DesignTokenOriginPart = z.infer<typeof DesignTokenOriginPart>;\nexport type DesignTokenOrigin = z.infer<typeof DesignTokenOrigin>;\n\nexport type DesignTokenBase = z.infer<typeof DesignTokenBase>;\n\nexport const DesignToken = DesignTokenTypedData.and(DesignTokenBase);\nexport const CreateDesignToken = DesignTokenTypedData.and(CreateDesignTokenBase);\n\nexport type DesignTokenTypedData = z.infer<typeof DesignTokenTypedData>;\nexport type DesignTokenTypedDataOfType<T extends DesignTokenType> = Extract<DesignTokenTypedData, { type: T }>;\n\nexport type DesignToken = z.infer<typeof DesignToken>;\nexport type ImportedDesignToken = OmitStrict<DesignToken, \"origin\"> & { origin: DesignTokenOrigin };\n\nexport type DesignTokenOfType<T extends DesignTokenType> = Extract<DesignToken, { type: T }>;\nexport type ImportedDesignTokenOfType<T extends DesignTokenType> = Extract<ImportedDesignToken, { type: T }>;\n\nexport type CreateDesignToken = z.infer<typeof CreateDesignToken>;\nexport type UpdateDesignToken = OmitStrict<DbUpdate<DesignToken>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type DesignTokensDiff = {\n toCreate: CreateDesignToken[];\n toUpdate: UpdateDesignToken[];\n};\n\n//\n// Utilities\n//\n\nexport function extractTokenTypedData<T extends DesignTokenType, I extends DesignTokenTypedDataOfType<T>>(\n source: I\n): DesignTokenTypedDataOfType<T> {\n return {\n type: source.type,\n data: source.data,\n } as DesignTokenTypedDataOfType<T>;\n}\n\nexport function isImportedDesignToken<T extends DesignTokenType>(\n designToken: DesignTokenOfType<T>\n): designToken is ImportedDesignTokenOfType<T> {\n return !!designToken.origin;\n}\n\nexport function isDesignTokenOfType<T extends DesignTokenType>(\n designToken: DesignToken,\n type: T\n): designToken is DesignTokenOfType<T> {\n return designToken.type === type;\n}\n\nexport function designTokenTypeFilter<T extends DesignTokenType>(\n type: T\n): (designToken: DesignToken) => designToken is DesignTokenOfType<T> {\n return (designToken): designToken is DesignTokenOfType<T> => isDesignTokenOfType(designToken, type);\n}\n","import { z } from \"zod\";\n\nexport const FigmaFileDownloadScope = z.object({\n styles: z.boolean(),\n components: z.boolean(),\n currentVersion: z.literal(\"__latest__\").nullable(),\n publishedVersion: z.string().nullable(),\n downloadChunkSize: z.number().optional(),\n});\n\nexport const FigmaFileAccessData = z.object({\n accessToken: z.string(),\n});\n\nexport type FigmaFileDownloadScope = z.infer<typeof FigmaFileDownloadScope>;\nexport type FigmaFileAccessData = z.infer<typeof FigmaFileAccessData>;\n","import { z } from \"zod\";\nimport { DataSourceFigmaImportMetadata, DataSourceFigmaRemote } from \"../../data-sources\";\nimport { FigmaFileAccessData, FigmaFileDownloadScope } from \"./figma-files\";\n\n//\n// Importer payload\n//\n\nexport const ImportFunctionInput = z.object({\n importJobId: z.string(),\n importContextId: z.string(),\n designSystemId: z.string().optional(),\n});\n\nexport type ImportFunctionInput = z.infer<typeof ImportFunctionInput>;\n\n//\n// Base context\n//\n\nexport const ImportedFigmaSourceData = z.object({\n sourceId: z.string(),\n figmaRemote: DataSourceFigmaRemote,\n});\n\nexport const FigmaImportBaseContext = z.object({\n designSystemId: z.string(),\n\n /**\n * Data required for accessing Figma files. This should contain access data for all file ids\n * mentioned in the `importedSourceDataBySourceId`\n *\n * fileId: file data\n */\n fileAccessByFileId: z.record(FigmaFileAccessData),\n\n /**\n * Figma source data for which import was requested\n *\n * sourceId: source data\n */\n importedSourceDataBySourceId: z.record(ImportedFigmaSourceData),\n});\n\nexport type ImportedFigmaSourceData = z.infer<typeof ImportedFigmaSourceData>;\nexport type FigmaImportBaseContext = z.infer<typeof FigmaImportBaseContext>;\n\n//\n// Context with file download scope\n//\n\nexport const ChangedImportedFigmaSourceData = ImportedFigmaSourceData.extend({\n importMetadata: DataSourceFigmaImportMetadata,\n});\n\nexport const FigmaImportContextWithDownloadScopes = FigmaImportBaseContext.extend({\n /**\n * Describes what to download from each file, this should contain all file id mentioned in\n * importMetadataBySourceId.\n *\n * File id -> file download scope\n */\n fileDownloadScopesByFileId: z.record(FigmaFileDownloadScope),\n\n /**\n * Sources filtered down to the ones that have changed since last import and therefore need to be\n * imported again.\n *\n * Source id -> import metadata\n */\n changedImportedSourceDataBySourceId: z.record(ChangedImportedFigmaSourceData),\n});\n\nexport type ChangedImportedFigmaSourceData = z.infer<typeof ChangedImportedFigmaSourceData>;\nexport type FigmaImportContextWithDownloadScopes = z.infer<typeof FigmaImportContextWithDownloadScopes>;\n","import { z } from \"zod\";\nimport { AssetImportModelInput, ComponentImportModel, ComponentImportModelInput } from \"../component\";\nimport { ThemeImportModel, ThemeImportModelInput, ThemeUpdateImportModel, ThemeUpdateImportModelInput } from \"../theme\";\nimport { DesignTokenImportModel, DesignTokenImportModelInput } from \"../tokens\";\nimport { FigmaFileStructureImportModel, FigmaFileStructureImportModelInput } from \"../figma-frames\";\nimport { DataSourceImportModel } from \"../data-source\";\n\n//\n// Collections\n//\n\nexport const ImportModelInputCollection = z.object({\n source: DataSourceImportModel,\n tokens: z.array(DesignTokenImportModelInput).default([]),\n components: z.array(ComponentImportModelInput).default([]),\n assets: z.array(AssetImportModelInput).default([]),\n themeUpdates: z.array(ThemeUpdateImportModelInput).default([]),\n themes: z.array(ThemeImportModelInput).default([]),\n figmaFileStructure: FigmaFileStructureImportModelInput.optional(),\n});\n\nexport const ImportModelCollection = z.object({\n sources: z.array(DataSourceImportModel),\n tokens: z.array(DesignTokenImportModel).default([]),\n components: z.array(ComponentImportModel).default([]),\n themeUpdates: z.array(ThemeUpdateImportModel).default([]),\n themes: z.array(ThemeImportModel).default([]),\n figmaFileStructures: z.array(FigmaFileStructureImportModel),\n});\n\nexport type ImportModelCollection = z.infer<typeof ImportModelCollection>;\nexport type ImportModelInputCollection = z.infer<typeof ImportModelInputCollection>;\n\nexport function addImportModelCollections(\n lhs: ImportModelCollection,\n rhs: ImportModelCollection\n): ImportModelCollection {\n return {\n sources: [...lhs.sources, ...rhs.sources],\n tokens: [...lhs.tokens, ...rhs.tokens],\n components: [...lhs.components, ...rhs.components],\n themeUpdates: [...lhs.themeUpdates, ...rhs.themeUpdates],\n themes: [...lhs.themes, ...rhs.themes],\n figmaFileStructures: [...lhs.figmaFileStructures, ...rhs.figmaFileStructures],\n };\n}\n","import { z } from \"zod\";\nimport { AssetScope } from \"../assets\";\n\n//\n// Abstract\n//\n\nexport const ImageImportModelType = z.enum([\"Url\", \"FigmaRender\"]);\nexport type ImageImportModelType = z.infer<typeof ImageImportModelType>;\n\nconst ImageImportModelBase = z.object({\n scope: AssetScope,\n});\n\n//\n// Url\n//\n\nexport const UrlImageImportModel = ImageImportModelBase.extend({\n type: z.literal(ImageImportModelType.enum.Url),\n url: z.string(),\n originKey: z.string(),\n extension: z.enum([\"png\", \"svg\", \"jpg\"]),\n});\n\nexport type UrlImageImportModel = z.infer<typeof UrlImageImportModel>;\n\n//\n// Figma Render\n//\n\nexport const FigmaRenderFormat = z.enum([\"Svg\", \"Png\"]);\n\nconst FigmaRenderBase = ImageImportModelBase.extend({\n type: z.literal(ImageImportModelType.enum.FigmaRender),\n fileId: z.string(),\n fileVersionId: z.string().optional(),\n nodeId: z.string(),\n originKey: z.string(),\n});\n\nexport const FigmaPngRenderImportModel = FigmaRenderBase.extend({\n format: z.literal(FigmaRenderFormat.enum.Png),\n scale: z.number(),\n});\n\nexport const FigmaSvgRenderImportModel = FigmaRenderBase.extend({\n format: z.literal(FigmaRenderFormat.enum.Svg),\n});\n\nexport const FigmaRenderImportModel = z.discriminatedUnion(\"format\", [\n FigmaPngRenderImportModel,\n FigmaSvgRenderImportModel,\n]);\n\n//\n// Union\n//\n\n// Unfortunately discriminated union doesn't support inserting another discriminated union\nexport const ImageImportModel = z.union([UrlImageImportModel, FigmaRenderImportModel]);\n\n//\n// Types\n//\n\nexport type FigmaRenderFormat = z.infer<typeof FigmaRenderFormat>;\nexport type FigmaRenderBase = z.infer<typeof FigmaRenderBase>;\nexport type FigmaPngRenderImportModel = z.infer<typeof FigmaPngRenderImportModel>;\nexport type FigmaSvgRenderImportModel = z.infer<typeof FigmaSvgRenderImportModel>;\nexport type FigmaRenderImportModel = z.infer<typeof FigmaRenderImportModel>;\nexport type ImageImportModel = z.infer<typeof ImageImportModel>;\n","import { FigmaSvgRenderImportModel, ImageImportModel } from \"./image\";\nimport { ComponentOrigin, ComponentOriginPart } from \"../elements\";\nimport { z } from \"zod\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\n\n//\n// Import model\n//\n\nconst ComponentImportModelPart = z.object({\n thumbnail: ImageImportModel,\n});\n\nexport const ComponentImportModel = ImportModelBase.extend(ComponentImportModelPart.shape).extend({\n isAsset: z.boolean(),\n svg: FigmaSvgRenderImportModel.optional(),\n origin: ComponentOrigin,\n});\n\nexport type ComponentImportModel = z.infer<typeof ComponentImportModel>;\n\n//\n// Import model input\n//\n\nexport const ComponentImportModelInput = ImportModelInputBase.extend(ComponentImportModelPart.shape).extend({\n originMetadata: ComponentOriginPart,\n});\n\nexport const AssetImportModelInput = ImportModelInputBase.extend(ComponentImportModelPart.shape).extend({\n svg: FigmaSvgRenderImportModel,\n originMetadata: ComponentOriginPart,\n});\n\nexport type ComponentImportModelInput = z.infer<typeof ComponentImportModelInput>;\nexport type AssetImportModelInput = z.infer<typeof AssetImportModelInput>;\n","import { z } from \"zod\";\nimport { DesignElementOrigin } from \"../elements\";\nimport { ObjectMeta } from \"../../common\";\n\nexport const ImportModelBase = z.object({\n id: z.string(),\n meta: ObjectMeta,\n origin: DesignElementOrigin,\n brandPersistentId: z.string(),\n sortOrder: z.number(),\n});\n\nexport type ImportModelBase = z.infer<typeof ImportModelBase>;\n\nexport const ImportModelInputBase = ImportModelBase.omit({\n brandPersistentId: true,\n origin: true,\n sortOrder: true,\n}).extend({\n originId: z.string(),\n originMetadata: z.record(z.any()),\n});\n\nexport type ImportModelInputBase = z.infer<typeof ImportModelInputBase>;\n","import { z } from \"zod\";\nimport { DesignTokenTypedData } from \"../elements\";\nimport { DesignTokenType } from \"../elements\";\nimport { ThemeOriginObject, ThemeOriginSource, ThemeOverrideOrigin, ThemeOverrideOriginPart } from \"../elements\";\nimport { ObjectMeta } from \"../../common\";\n\n//\n// Overrides\n//\n\nexport const ThemeOverrideImportModelBase = DesignTokenTypedData.and(\n z.object({\n id: z.string(),\n meta: ObjectMeta,\n })\n);\n\nexport const ThemeOverrideImportModel = ThemeOverrideImportModelBase.and(\n z.object({\n origin: ThemeOverrideOrigin,\n })\n);\n\nexport const ThemeOverrideImportModelInput = ThemeOverrideImportModelBase.and(\n z.object({\n originId: z.string(),\n originMetadata: ThemeOverrideOriginPart,\n })\n);\n\nexport type ThemeOverrideImportModel = z.infer<typeof ThemeOverrideImportModel>;\nexport type ThemeOverrideImportModelOfType<T extends DesignTokenType> = Extract<ThemeOverrideImportModel, { type: T }>;\n\nexport type ThemeOverrideImportModelInput = z.infer<typeof ThemeOverrideImportModelInput>;\nexport type ThemeOverrideImportModelInputOfType<T extends DesignTokenType> = Extract<\n ThemeOverrideImportModelInput,\n { type: T }\n>;\n\n//\n// Themes\n//\n\nexport const ThemeImportModel = z.object({\n meta: ObjectMeta,\n brandPersistentId: z.string(),\n originSource: ThemeOriginSource,\n overrides: z.array(ThemeOverrideImportModel),\n sortOrder: z.number(),\n});\n\nexport const ThemeImportModelInput = z.object({\n meta: ObjectMeta,\n originObjects: z.array(ThemeOriginObject),\n overrides: z.array(ThemeOverrideImportModelInput),\n});\n\nexport type ThemeImportModel = z.infer<typeof ThemeImportModel>;\nexport type ThemeImportModelInput = z.infer<typeof ThemeImportModelInput>;\n\n//\n// Theme Update\n//\n\nexport const ThemeUpdateImportModel = z.object({\n themePersistentId: z.string(),\n overrides: z.array(ThemeOverrideImportModel),\n});\n\nexport const ThemeUpdateImportModelInput = z.object({\n themePersistentId: z.string(),\n overrides: z.array(ThemeOverrideImportModelInput),\n});\n\nexport type ThemeUpdateImportModel = z.infer<typeof ThemeUpdateImportModel>;\nexport type ThemeUpdateImportModelInput = z.infer<typeof ThemeUpdateImportModelInput>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../elements\";\nimport { DesignTokenOrigin, DesignTokenOriginPart, DesignTokenTypedData } from \"../elements\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\n\n//\n// Base\n//\n\nconst DesignTokenImportModelPart = z.object({\n collection: z.string().optional(),\n});\n\nexport const DesignTokenImportModelBase = ImportModelBase.extend(DesignTokenImportModelPart.shape).extend({\n origin: DesignTokenOrigin,\n});\n\nexport const DesignTokenImportModelInputBase = ImportModelInputBase.extend(DesignTokenImportModelPart.shape).extend({\n originMetadata: DesignTokenOriginPart,\n});\n\n//\n// Import models\n//\n\nexport const DesignTokenImportModel = DesignTokenTypedData.and(DesignTokenImportModelBase);\nexport const DesignTokenImportModelInput = DesignTokenTypedData.and(DesignTokenImportModelInputBase);\n\nexport type DesignTokenImportModelInputBase = z.infer<typeof DesignTokenImportModelInputBase>;\n\nexport type DesignTokenImportModel = z.infer<typeof DesignTokenImportModel>;\nexport type DesignTokenImportModelOfType<T extends DesignTokenType> = Extract<DesignTokenImportModel, { type: T }>;\n\nexport type DesignTokenImportModelInput = z.infer<typeof DesignTokenImportModelInput>;\nexport type DesignTokenImportModelInputOfType<T extends DesignTokenType> = Extract<DesignTokenImportModel, { type: T }>;\n\nexport function isDesignTokenImportModelOfType<T extends DesignTokenType>(\n designToken: DesignTokenImportModel,\n type: T\n): designToken is DesignTokenImportModelOfType<T> {\n return designToken.type === type;\n}\n\nexport function designTokenImportModelTypeFilter<T extends DesignTokenType>(\n type: T\n): (designToken: DesignTokenImportModel) => designToken is DesignTokenImportModelOfType<T> {\n return (designToken): designToken is DesignTokenImportModelOfType<T> =>\n isDesignTokenImportModelOfType(designToken, type);\n}\n","import { ZodType, ZodTypeDef, z } from \"zod\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\nimport { FigmaFileStructureOrigin } from \"../elements\";\nimport { FigmaFileStructureNodeBase, FigmaFileStructureStatistics } from \"../elements\";\nimport { FigmaPngRenderImportModel } from \"./image\";\n\n//\n// Nodes Import Model\n//\n\nconst FigmaFileStructureNodeImportModelBase = FigmaFileStructureNodeBase.extend({\n image: FigmaPngRenderImportModel,\n});\n\nexport const FigmaFileStructureNodeImportModel: z.ZodType<\n FigmaFileStructureNodeImportModel,\n ZodTypeDef,\n FigmaFileStructureNodeImportModelBaseInput\n> = FigmaFileStructureNodeImportModelBase.extend({\n children: z.lazy(() => FigmaFileStructureNodeImportModel.array()),\n});\n\ntype FigmaFileStructureNodeImportModelBaseInput = z.input<typeof FigmaFileStructureNodeImportModelBase> & {\n children: FigmaFileStructureNodeImportModelBaseInput[];\n};\n\nexport type FigmaFileStructureNodeImportModel = z.infer<typeof FigmaFileStructureNodeImportModelBase> & {\n children: FigmaFileStructureNodeImportModel[];\n};\n\n//\n// Structure Import Model\n//\n\nconst FigmaFileStructureImportModelPart = z.object({\n data: z.object({\n rootNode: FigmaFileStructureNodeImportModel,\n assetsInFile: FigmaFileStructureStatistics,\n }),\n});\n\nexport const FigmaFileStructureImportModel = ImportModelBase.extend(FigmaFileStructureImportModelPart.shape).extend({\n origin: FigmaFileStructureOrigin,\n});\n\nexport type FigmaFileStructureImportModel = z.infer<typeof FigmaFileStructureImportModel>;\n\n//\n// Import model input\n//\n\nexport const FigmaFileStructureImportModelInput = ImportModelInputBase.extend(\n FigmaFileStructureImportModelPart.shape\n).extend({\n fileVersionId: z.string(),\n});\n\nexport type FigmaFileStructureImportModelInput = z.infer<typeof FigmaFileStructureImportModelInput>;\n\nexport function figmaFileStructureImportModelToMap(\n root: FigmaFileStructureNodeImportModel\n): Map<string, FigmaFileStructureNodeImportModel> {\n const map = new Map<string, FigmaFileStructureNodeImportModel>();\n recursiveFigmaFileStructureToMap(root, map);\n return map;\n}\n\nfunction recursiveFigmaFileStructureToMap(\n node: FigmaFileStructureNodeImportModel,\n map: Map<string, FigmaFileStructureNodeImportModel>\n) {\n map.set(node.id, node);\n for (const child of node.children) recursiveFigmaFileStructureToMap(child, map);\n}\n","import { z } from \"zod\";\n\nexport const DataSourceImportModel = z.object({\n id: z.string(),\n fileName: z.string().optional(),\n thumbnailUrl: z.string().optional(),\n});\n\nexport type DataSourceImportModel = z.infer<typeof DataSourceImportModel>;\n","import { z } from \"zod\";\n\nexport const ImportWarningType = z.enum([\n \"NoVersionFound\",\n \"UnsupportedFill\",\n \"UnsupportedStroke\",\n \"UnsupportedEffect\",\n \"NoPublishedElements\",\n \"NoPublishedStyles\",\n \"NoPublishedComponents\",\n \"NoPublishedAssets\",\n \"StyleNotApplied\",\n \"ComponentHasNoThumbnail\",\n \"DuplicateImportedStyleId\",\n \"DuplicateImportedStylePath\",\n]);\n\nexport const ImportWarning = z.object({\n warningType: ImportWarningType,\n componentId: z.string().optional(),\n componentName: z.string().optional(),\n styleId: z.string().optional(),\n styleName: z.string().optional(),\n unsupportedStyleValueType: z.string().optional(),\n});\n\nexport type ImportWarningType = z.infer<typeof ImportWarningType>;\nexport type ImportWarning = z.infer<typeof ImportWarning>;\n","import { z } from \"zod\";\n\nexport const PageBlockDefinitionAppearance = z.object({\n isBordered: z.boolean().optional(),\n hasBackground: z.boolean().optional(),\n isEditorPresentationDifferent: z.boolean().optional(),\n});\n\nexport type PageBlockDefinitionAppearance = z.infer<typeof PageBlockDefinitionAppearance>;\n","import { z } from \"zod\";\nimport { AssetValue } from \"../../assets/asset-value\";\nimport { PageBlockDefinitionItem } from \"./item\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\n\n//\n// Enums\n//\n\nexport const PageBlockCategory = z.enum([\n \"Text\",\n \"Layout\",\n \"Media\",\n \"Embed\",\n \"Figma\",\n \"Code\",\n \"Guidelines\",\n \"Tokens\",\n \"Components\",\n \"Assets\",\n \"Data\",\n \"Other\",\n]);\n\nexport const PageBlockBehaviorDataType = z.enum([\"Item\", \"Token\", \"Asset\", \"Component\", \"FigmaFrame\"]);\nexport const PageBlockBehaviorSelectionType = z.enum([\"Entity\", \"Group\", \"EntityAndGroup\"]);\n\nexport type PageBlockCategory = z.infer<typeof PageBlockCategory>;\nexport type PageBlockBehaviorDataType = z.infer<typeof PageBlockBehaviorDataType>;\nexport type PageBlockBehaviorSelectionType = z.infer<typeof PageBlockBehaviorSelectionType>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionBehavior = z.object({\n dataType: PageBlockBehaviorDataType,\n items: z\n .object({\n numberOfItems: z.number(),\n allowLinks: z.boolean(),\n })\n .optional(),\n entities: z\n .object({\n selectionType: PageBlockBehaviorSelectionType,\n maxSelected: z.number(),\n })\n .optional(),\n});\n\nexport const PageBlockDefinitionOnboarding = z.object({\n helpText: z.string(),\n documentationLink: z.string().optional(),\n});\n\nexport const PageBlockDefinition = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n category: PageBlockCategory,\n icon: AssetValue.optional(),\n documentationLink: z.string().optional(),\n searchKeywords: z.array(z.string()).optional(),\n item: PageBlockDefinitionItem,\n behavior: PageBlockDefinitionBehavior,\n editorOptions: z.object({\n onboarding: PageBlockDefinitionOnboarding.optional(),\n }),\n appearance: PageBlockDefinitionAppearance.optional(),\n});\n\nexport type PageBlockDefinitionBehavior = z.infer<typeof PageBlockDefinitionBehavior>;\nexport type PageBlockDefinitionOnboarding = z.infer<typeof PageBlockDefinitionOnboarding>;\nexport type PageBlockDefinition = z.infer<typeof PageBlockDefinition>;\n","import { z } from \"zod\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\nimport { PageBlockDefinitionVariant } from \"./variant\";\n\n//\n// Enums\n//\n\nexport const PageBlockDefinitionPropertyType = z.enum([\n \"RichText\",\n \"Text\",\n \"Boolean\",\n \"Number\",\n \"SingleSelect\",\n \"MultiSelect\",\n \"Image\",\n \"Token\",\n \"TokenType\",\n \"TokenProperty\",\n \"Component\",\n \"ComponentProperty\",\n \"Asset\",\n \"AssetProperty\",\n \"EmbedURL\",\n \"URL\",\n \"Markdown\",\n \"Code\",\n \"CodeSandbox\",\n \"Table\",\n \"Divider\",\n \"Storybook\",\n]);\n\nexport const PageBlockDefinitionRichTextPropertyStyle = z.enum([\n \"Title1\",\n \"Title2\",\n \"Title3\",\n \"Title4\",\n \"Title5\",\n \"Quote\",\n \"Callout\",\n \"OL\",\n \"UL\",\n \"Default\",\n]);\n\nexport const PageBlockDefinitionTextPropertyStyle = z.enum([\n \"Title1\",\n \"Title2\",\n \"Title3\",\n \"Title4\",\n \"Title5\",\n \"Default\",\n \"DefaultBold\",\n \"DefaultSemibold\",\n \"Small\",\n \"SmallBold\",\n \"SmallSemibold\",\n]);\n\nexport const PageBlockDefinitionBooleanPropertyStyle = z.enum([\"SegmentedControl\", \"ToggleButton\", \"Checkbox\"]);\nexport const PageBlockDefinitionSingleSelectPropertyStyle = z.enum([\n \"SegmentedControl\",\n \"ToggleButton\",\n \"Select\",\n \"Checkbox\",\n]);\nexport const PageBlockDefinitionMultiSelectPropertyStyle = z.enum([\"SegmentedControl\", \"Select\", \"Checkbox\"]);\n\nexport type PageBlockDefinitionPropertyType = z.infer<typeof PageBlockDefinitionPropertyType>;\nexport type PageBlockDefinitionRichTextPropertyStyle = z.infer<typeof PageBlockDefinitionRichTextPropertyStyle>;\nexport type PageBlockDefinitionTextPropertyStyle = z.infer<typeof PageBlockDefinitionTextPropertyStyle>;\nexport type PageBlockDefinitionBooleanPropertyStyle = z.infer<typeof PageBlockDefinitionBooleanPropertyStyle>;\nexport type PageBlockDefinitionSingleSelectPropertyStyle = z.infer<typeof PageBlockDefinitionSingleSelectPropertyStyle>;\nexport type PageBlockDefinitionMultiSelectPropertyStyle = z.infer<typeof PageBlockDefinitionMultiSelectPropertyStyle>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionPropertyOptions = z\n .object({\n richTextStyle: PageBlockDefinitionRichTextPropertyStyle.optional(),\n textStyle: PageBlockDefinitionTextPropertyStyle.optional(),\n placeholder: z.string().optional(),\n })\n .and(z.record(z.any()));\n\nexport const PageBlockDefinitionProperty = z.object({\n id: z.string(),\n name: z.string(),\n type: PageBlockDefinitionPropertyType,\n description: z.string().optional(),\n // TODO Docs\n options: PageBlockDefinitionPropertyOptions.optional(),\n variantOptions: z.record(PageBlockDefinitionPropertyOptions).optional(),\n});\n\nexport const PageBlockDefinitionItem = z.object({\n properties: z.array(PageBlockDefinitionProperty),\n appearance: PageBlockDefinitionAppearance.optional(),\n variants: z.array(PageBlockDefinitionVariant),\n defaultVariantKey: z.string(),\n});\n\nexport type PageBlockDefinitionPropertyOptions = z.infer<typeof PageBlockDefinitionPropertyOptions>;\nexport type PageBlockDefinitionProperty = z.infer<typeof PageBlockDefinitionProperty>;\nexport type PageBlockDefinitionItem = z.infer<typeof PageBlockDefinitionItem>;\n","import { ZodTypeDef, z } from \"zod\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\n\n//\n// Enums\n//\n\nexport const PageBlockDefinitionLayoutType = z.enum([\"Column\", \"Row\"]);\nexport const PageBlockDefinitionLayoutGap = z.enum([\"Small\", \"Medium\", \"Large\", \"None\"]);\nexport const PageBlockDefinitionLayoutAlign = z.enum([\"Start\", \"Center\", \"End\"]);\nexport const PageBlockDefinitionLayoutResizing = z.enum([\"Fill\", \"Hug\"]);\n\nexport type PageBlockDefinitionLayoutType = z.infer<typeof PageBlockDefinitionLayoutType>;\nexport type PageBlockDefinitionLayoutGap = z.infer<typeof PageBlockDefinitionLayoutGap>;\nexport type PageBlockDefinitionLayoutAlign = z.infer<typeof PageBlockDefinitionLayoutAlign>;\nexport type PageBlockDefinitionLayoutResizing = z.infer<typeof PageBlockDefinitionLayoutResizing>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionLayoutBase = z.object({\n type: PageBlockDefinitionLayoutType,\n gap: PageBlockDefinitionLayoutGap.optional(),\n columnAlign: PageBlockDefinitionLayoutAlign.optional(),\n columnResizing: PageBlockDefinitionLayoutResizing.optional(),\n});\n\nexport const PageBlockDefinitionLayout: z.ZodType<PageBlockDefinitionLayout, ZodTypeDef, PageBlockDefinitionLayout> =\n PageBlockDefinitionLayoutBase.extend({\n children: z.lazy(() => z.array(PageBlockDefinitionLayout.or(z.string()))),\n });\n\nexport const PageBlockDefinitionVariant = z.object({\n id: z.string(),\n name: z.string(),\n image: z.string().optional(),\n description: z.string().optional(),\n documentationLink: z.string().optional(),\n layout: PageBlockDefinitionLayout,\n maxColumns: z.number().optional(),\n defaultColumns: z.number().optional(),\n appearance: PageBlockDefinitionAppearance.optional(),\n});\n\nexport type PageBlockDefinitionVariant = z.infer<typeof PageBlockDefinitionVariant>;\nexport type PageBlockDefinitionLayout = z.infer<typeof PageBlockDefinitionLayoutBase> & {\n children: (PageBlockDefinitionLayout | string)[];\n};\n","import { z } from \"zod\";\n\nexport const DocumentationPageGroup = z.object({\n type: z.literal(\"ElementGroup\"),\n childType: z.literal(\"DocumentationPage\"),\n id: z.string(),\n persistentId: z.string(),\n shortPersistentId: z.string(),\n designSystemVersionId: z.string(),\n parentPersistentId: z.string().nullish(),\n sortOrder: z.number(),\n title: z.string(),\n slug: z.string(),\n userSlug: z.string().nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type DocumentationPageGroup = z.infer<typeof DocumentationPageGroup>;\n","import { z } from \"zod\";\n\nexport const DocumentationPage = z.object({\n type: z.literal(\"DocumentationPage\"),\n id: z.string(),\n persistentId: z.string(),\n shortPersistentId: z.string(),\n designSystemVersionId: z.string(),\n parentPersistentId: z.string().nullish(),\n sortOrder: z.number(),\n title: z.string(),\n slug: z.string(),\n userSlug: z.string().nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type DocumentationPage = z.infer<typeof DocumentationPage>;\n","import { z } from \"zod\";\nimport { Workspace } from \"../workspace\";\nexport const DesignSystemSwitcher = z.object({\n isEnabled: z.boolean(),\n designSystemIds: z.string(),\n});\n\nexport const DesignSystem = z.object({\n id: z.string(),\n workspaceId: z.string(),\n name: z.string(),\n description: z.string(),\n docExporterId: z.string().nullish(),\n docSlug: z.string(),\n docUserSlug: z.string().nullish(),\n docSlugDeprecated: z.string(),\n isPublic: z.boolean(),\n isMultibrand: z.boolean(),\n docViewUrl: z.string().nullish(),\n basePrefixes: z.array(z.string()),\n designSystemSwitcher: DesignSystemSwitcher.nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport const DesignSystemWithWorkspace = z.object({\n designSystem: DesignSystem,\n workspace: Workspace,\n});\n\nexport type DesignSystemSwitcher = z.infer<typeof DesignSystemSwitcher>;\nexport type DesignSystem = z.infer<typeof DesignSystem>;\nexport type DesignSystemWithWorkspace = z.infer<typeof DesignSystemWithWorkspace>;\n","import { z } from \"zod\";\n\nexport const NpmRegistryAuthType = z.enum([\"Basic\", \"Bearer\", \"None\", \"Custom\"]);\nexport const NpmRegistryType = z.enum([\"NPMJS\", \"GitHub\", \"AzureDevOps\", \"Artifactory\", \"Custom\"]);\n\nexport const NpmRegistryBasicAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Basic),\n username: z.string(),\n password: z.string(),\n});\n\nexport const NpmRegistryBearerAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Bearer),\n accessToken: z.string(),\n});\n\nexport const NpmRegistryNoAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.None),\n});\n\nexport const NpmRegistrCustomAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Custom),\n authHeaderName: z.string(),\n authHeaderValue: z.string(),\n});\n\nexport const NpmRegistryAuthConfig = z.discriminatedUnion(\"authType\", [\n NpmRegistryBasicAuthConfig,\n NpmRegistryBearerAuthConfig,\n NpmRegistryNoAuthConfig,\n NpmRegistrCustomAuthConfig,\n]);\n\nconst NpmRegistryConfigBase = z.object({\n registryType: NpmRegistryType,\n enabledScopes: z.array(z.string()),\n customRegistryUrl: z.string().optional(),\n bypassProxy: z.boolean().default(false),\n npmProxyRegistryConfigId: z.string().optional(),\n npmProxyVersion: z.number().optional(),\n});\n\nexport const NpmRegistryConfig = NpmRegistryConfigBase.and(NpmRegistryAuthConfig);\n\nexport type NpmRegistryConfig = z.infer<typeof NpmRegistryConfig>;\n","import { z } from \"zod\";\nexport const SsoProvider = z.object({\n providerId: z.string(),\n defaultAutoInviteValue: z.boolean(),\n autoInviteDomains: z.record(z.string(), z.boolean()),\n skipDocsSupernovaLogin: z.boolean(),\n areInvitesDisabled: z.boolean(),\n isTestMode: z.boolean(),\n emailDomains: z.array(z.string()),\n metadataXml: z.string().nullish(),\n});\n\nexport type SsoProvider = z.infer<typeof SsoProvider>;\n","import { z } from \"zod\";\nimport { WorkspaceRoleSchema } from \"./workspace-role\";\n\nexport const MAX_MEMBERS_COUNT = 100;\n\nexport const UserInvite = z.object({\n email: z\n .string()\n .email()\n .trim()\n .transform(value => value.toLowerCase()),\n role: WorkspaceRoleSchema,\n});\n\nexport const UserInvites = z.array(UserInvite).max(MAX_MEMBERS_COUNT);\n\nexport type UserInvite = z.infer<typeof UserInvite>;\nexport type UserInvites = z.infer<typeof UserInvites>;\n","import { z } from \"zod\";\n\nexport const WorkspaceRoleSchema = z.enum([\"Owner\", \"Admin\", \"Creator\", \"Viewer\", \"Billing\", \"Guest\"]);\n\nexport type WorkspaceRole = z.infer<typeof WorkspaceRoleSchema>;\nexport const WorkspaceRole = WorkspaceRoleSchema.enum;\n","import { ProductCodeSchema } from \"../billing\";\nimport { z } from \"zod\";\n\nexport const WorkspaceContext = z.object({\n workspaceId: z.string(),\n product: ProductCodeSchema,\n publicDesignSystem: z.boolean().optional(),\n});\n\nexport type WorkspaceContext = z.infer<typeof WorkspaceContext>;\n","import { z } from \"zod\";\nimport { UserInvites } from \"./user-invite\";\nimport { ProductCodeSchema } from \"../billing\";\nimport { slugRegex } from \"../utils/validation\";\n\nconst WORKSPACE_NAME_MIN_LENGTH: number = 2;\nconst WORKSPACE_NAME_MAX_LENGTH: number = 64;\nexport const HANDLE_MIN_LENGTH = 2;\nexport const HANDLE_MAX_LENGTH = 64;\n\nexport const CreateWorkspaceInput = z.object({\n name: z.string().min(WORKSPACE_NAME_MIN_LENGTH).max(WORKSPACE_NAME_MAX_LENGTH).trim(),\n product: ProductCodeSchema,\n priceId: z.string(),\n billingEmail: z.string().email().optional(),\n handle: z\n .string()\n .regex(slugRegex)\n .min(HANDLE_MIN_LENGTH)\n .max(HANDLE_MAX_LENGTH)\n .refine(value => value?.length > 0)\n .optional(),\n invites: UserInvites.optional(),\n promoCode: z.string().optional(),\n});\n\nexport type CreateWorkspaceInput = z.infer<typeof CreateWorkspaceInput>;\n","export const slugRegex = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\n","import { WorkspaceRole } from \"./workspace-role\";\nimport { z } from \"zod\";\n\nexport const WorkspaceInvitation = z.object({\n id: z.string(),\n email: z.string().email(),\n createdAt: z.date(),\n resentAt: z.date().nullish(),\n role: z.nativeEnum(WorkspaceRole),\n workspaceId: z.string(),\n invitedBy: z.string(),\n});\n\nexport type WorkspaceInvitation = z.infer<typeof WorkspaceInvitation>;\n","import { WorkspaceRole } from \"./workspace-role\";\nimport { z } from \"zod\";\n\nexport const WorkspaceMembership = z.object({\n id: z.string(),\n userId: z.string(),\n workspaceId: z.string(),\n workspaceRole: z.nativeEnum(WorkspaceRole),\n});\n\nexport type WorkspaceMembership = z.infer<typeof WorkspaceMembership>;\n","import { z } from \"zod\";\nimport { Subscription } from \"../billing\";\nimport { SsoProvider } from \"./sso-provider\";\nimport { DesignSystem } from \"../dsm\";\nimport { BillingDetails } from \"../billing\";\n\nexport const WorkspaceIpWhitelistEntry = z.object({\n isEnabled: z.boolean(),\n name: z.string(),\n range: z.string(),\n});\n\nexport const WorkspaceIpSettings = z\n .object({\n isEnabledForCloud: z.boolean(),\n isEnabledForDocs: z.boolean(),\n entries: z.array(WorkspaceIpWhitelistEntry),\n })\n .nullish();\n\nexport const WorkspaceProfile = z.object({\n name: z.string(),\n handle: z.string(),\n color: z.string(),\n avatar: z.string().optional(),\n billingDetails: BillingDetails.optional(),\n});\n\nexport const Workspace = z.object({\n id: z.string(),\n profile: WorkspaceProfile,\n subscription: Subscription,\n ipWhitelist: WorkspaceIpSettings,\n sso: SsoProvider.nullish(),\n npmRegistrySettings: z.unknown().optional(),\n designSystems: z.array(DesignSystem).nullish(),\n});\n\nexport const WorkspaceWithDesignSystems = z.object({\n workspace: Workspace,\n designSystems: z.array(DesignSystem),\n});\n\nexport type WorkspaceIpWhitelistEntry = z.infer<typeof WorkspaceIpWhitelistEntry>;\nexport type WorkspaceIpSettings = z.infer<typeof WorkspaceIpSettings>;\nexport type WorkspaceProfile = z.infer<typeof WorkspaceProfile>;\nexport type Workspace = z.infer<typeof Workspace>;\nexport type WorkspaceWithDesignSystems = z.infer<typeof WorkspaceWithDesignSystems>;\n","import { z } from \"zod\";\n\nconst DS_NAME_MIN_LENGTH: number = 2;\nconst DS_NAME_MAX_LENGTH: number = 64;\nconst DS_DESC_MIN_LENGTH: number = 2;\nconst DS_DESC_MAX_LENGTH: number = 64;\n\nconst DesignSystemCreateInputMetadata = z.object({\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim(),\n});\n\nexport const DesignSystemCreateInput = z.object({\n meta: DesignSystemCreateInputMetadata,\n workspaceId: z.string(),\n isPublic: z.boolean().optional(),\n basePrefixes: z.array(z.string()).optional(),\n docUserSlug: z.string().nullish().optional(),\n source: z.array(z.string()).optional(),\n});\n\nexport type DesignSystemCreateInput = z.infer<typeof DesignSystemCreateInput>;\n","import { z } from \"zod\";\n\nconst DS_NAME_MIN_LENGTH: number = 2;\nconst DS_NAME_MAX_LENGTH: number = 64;\nconst DS_DESC_MIN_LENGTH: number = 2;\nconst DS_DESC_MAX_LENGTH: number = 64;\n\nconst DesignSystemUpdateInputMetadata = z.object({\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim().optional(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim().optional(),\n});\n\nexport const DesignSystemUpdateInput = z.object({\n meta: DesignSystemUpdateInputMetadata.optional(),\n workspaceId: z.string().optional(),\n isPublic: z.boolean().optional(),\n basePrefixes: z.array(z.string()).optional(),\n docUserSlug: z.string().nullish().optional(),\n source: z.array(z.string()).optional(),\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim().optional(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim().optional(),\n docExporterId: z.string().optional(),\n});\n\nexport type DesignSystemUpdateInput = z.infer<typeof DesignSystemUpdateInput>;\n","import { z } from \"zod\";\n\nexport const publishedDocEnvironments = [\"Live\", \"Preview\"] as const;\nexport const PublishedDocEnvironment = z.enum(publishedDocEnvironments);\n\nexport const PublishedDocsChecksums = z.record(z.string());\n\nexport const PublishedDocRoutingVersion = z.enum([\"1\", \"2\"]);\n\nexport const PublishedDoc = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n lastPublishedAt: z.date(),\n isDefault: z.boolean(),\n isPublic: z.boolean(),\n environment: PublishedDocEnvironment,\n checksums: PublishedDocsChecksums,\n storagePath: z.string(),\n wasMigrated: z.boolean(),\n routingVersion: PublishedDocRoutingVersion,\n usesLocalizations: z.boolean(),\n wasPublishedWithLocalizations: z.boolean(),\n});\n\nexport type PublishedDocEnvironment = z.infer<typeof PublishedDocEnvironment>;\nexport type PublishedDocsChecksums = z.infer<typeof PublishedDocsChecksums>;\nexport type PublishedDocRoutingVersion = z.infer<typeof PublishedDocRoutingVersion>;\nexport type PublishedDoc = z.infer<typeof PublishedDoc>;\n","import { PublishedDocEnvironment } from \"../dsm\";\nimport { z } from \"zod\";\nexport const ExportJobStatus = z.union([\n z.literal(\"Success\"),\n z.literal(\"InProgress\"),\n z.literal(\"Timeout\"),\n z.literal(\"Failed\"),\n]);\n\nexport type ExportJobStatus = z.infer<typeof ExportJobStatus>;\n\nexport const ExportJob = z.object({\n id: z.string(),\n workspaceId: z.string(),\n designSystemId: z.string(),\n designSystemVersionId: z.string(),\n status: ExportJobStatus,\n docsUrl: z.string().nullish(),\n scheduleId: z.string().nullish(),\n exporterId: z.string().nullish(),\n createdAt: z.date(),\n environment: PublishedDocEnvironment,\n finishedAt: z.date().nullish(),\n});\n\nexport type ExportJob = z.infer<typeof ExportJob>;\n","import { z } from \"zod\";\n\nexport const ExporterWorkspaceMembershipRole = z.enum([\"Owner\", \"OwnerArchived\", \"User\"]);\nexport type ExporterWorkspaceMembershipRole = z.infer<typeof ExporterWorkspaceMembershipRole>;\n","import { z } from \"zod\";\nimport { ExporterWorkspaceMembershipRole } from \"./exporter-workspace-membership-role\";\nimport { DbCreateInputOmit } from \"../helpers\";\n\nexport const ExporterWorkspaceMembership = z.object({\n id: z.string(),\n workspaceId: z.string(),\n exporterId: z.string(),\n role: ExporterWorkspaceMembershipRole,\n});\n\nexport type ExporterWorkspaceMembership = z.infer<typeof ExporterWorkspaceMembership>;\n\nexport type CreateExporterMembership = DbCreateInputOmit<ExporterWorkspaceMembership>;\n","import { z } from \"zod\";\nimport { GitProvider } from \"./git-providers\";\nimport { PulsarContributionBlock, PulsarContributionConfigurationProperty, PulsarContributionVariant } from \"./pulsar\";\nimport { nullishToOptional } from \"../helpers\";\n\nexport const ExporterType = z.enum([\"code\", \"documentation\"]);\nexport const ExporterSource = z.enum([\"git\", \"upload\"]);\nexport const ExporterTag = z.string().regex(/^[0-9a-zA-Z]+(\\s[0-9a-zA-Z]+)*$/);\n\nexport const ExporterDetails = z.object({\n packageId: z.string().max(255),\n version: z.string(),\n description: z.string(),\n author: nullishToOptional(z.string()),\n organization: nullishToOptional(z.string()),\n homepage: nullishToOptional(z.string()),\n readme: nullishToOptional(z.string()),\n tags: z.array(ExporterTag).default([]),\n\n routingVersion: nullishToOptional(z.string()),\n\n iconURL: nullishToOptional(z.string()),\n configurationProperties: z.array(PulsarContributionConfigurationProperty).default([]),\n customBlocks: z.array(PulsarContributionBlock).default([]),\n blockVariants: z.record(z.string(), z.array(PulsarContributionVariant)).default({}),\n\n usesBrands: z.boolean().default(false),\n usesThemes: z.boolean().default(false),\n\n source: ExporterSource,\n\n gitProvider: nullishToOptional(GitProvider),\n gitUrl: nullishToOptional(z.string()),\n gitBranch: nullishToOptional(z.string()),\n gitDirectory: nullishToOptional(z.string()),\n});\n\nexport const Exporter = z.object({\n id: z.string(),\n createdAt: z.coerce.date(),\n name: z.string(),\n isPrivate: z.boolean(),\n details: ExporterDetails,\n exporterType: ExporterType.default(\"code\"),\n storagePath: z.string().default(\"\"),\n});\n\nexport type ExporterType = z.infer<typeof ExporterType>;\nexport type ExporterSource = z.infer<typeof ExporterSource>;\nexport type ExporterTag = z.infer<typeof ExporterTag>;\nexport type ExporterDetails = z.infer<typeof ExporterDetails>;\nexport type Exporter = z.infer<typeof Exporter>;\n","import { z } from \"zod\";\n\nexport enum GitProviderNames {\n Azure = \"azure\",\n Github = \"github\",\n Gitlab = \"gitlab\",\n Bitbucket = \"bitbucket\",\n}\n\nexport const GitProvider = z.nativeEnum(GitProviderNames);\nexport type GitProvider = z.infer<typeof GitProvider>;\n","import { z } from \"zod\";\n\nexport const PulsarContributionVariant = z.object({\n key: z.string(),\n name: z.string(),\n isDefault: z.boolean().optional(),\n description: z.string().optional(),\n thumbnailURL: z.string().optional(),\n});\nexport type PulsarContributionVariant = z.infer<typeof PulsarContributionVariant>;\n\nexport const PulsarPropertyType = z.enum([\n \"string\",\n \"number\",\n \"boolean\",\n \"image\",\n \"enum\",\n \"color\",\n \"typography\",\n \"component\",\n \"componentProperties\",\n \"tokenProperties\",\n \"tokenType\",\n]);\nexport type PulsarPropertyType = z.infer<typeof PulsarPropertyType>;\n\n// export type PulsarPropertyValueType =\n// | string\n// | number\n// | boolean\n// | PulsarPropertyImageValue\n// | ColorTokenData // TODO: Should we do smth here? Update Pulsar to get value?!\n// | TypographyTokenData;\n\nexport const BasePulsarProperty = z.object({\n label: z.string(),\n key: z.string(),\n description: z.string().optional(),\n type: PulsarPropertyType,\n values: z.array(z.string()).optional(),\n default: z.union([z.string(), z.boolean(), z.number()]).nullish(), // PulsarPropertyValueType //is optional?\n inputType: z.enum([\"code\", \"plain\"]).optional(), //is optional?\n isMultiline: z.boolean().optional(),\n});\nexport type BasePulsarProperty = z.infer<typeof BasePulsarProperty>;\n\nexport const PulsarContributionBlock = z.object({\n title: z.string(),\n key: z.string(),\n category: z.string(),\n description: z.string().optional(),\n iconURL: z.string(),\n mode: z.enum([\"array\", \"block\"]),\n properties: z.array(BasePulsarProperty),\n});\nexport type PulsarContributionBlock = z.infer<typeof PulsarContributionBlock>;\n\nexport const PulsarContributionConfigurationProperty = BasePulsarProperty.extend({ category: z.string() });\nexport type PulsarContributionConfigurationProperty = z.infer<typeof PulsarContributionConfigurationProperty>;\n","import { z } from \"zod\";\n\nexport type CustomDomainState =\n | \"Initial\"\n | \"DomainSetupInProgress\"\n | \"DomainSetupFailed\"\n | \"DomainSetupSuccess\"\n | \"SSLSetupInProgress\"\n | \"SSLSetupFailed\"\n | \"SSLSetupSuccess\";\n\nexport const CustomDomain = z.object({\n id: z.string(),\n designSystemId: z.string(),\n state: z.string(),\n\n supernovaDomain: z.string(),\n customerDomain: z.string().nullish(),\n\n error: z.string().nullish(),\n errorCode: z.string().nullish(),\n});\n\nexport type CustomDomain = z.infer<typeof CustomDomain>;\n","import { z } from \"zod\";\nimport { User } from \"../users\";\n\nexport const NpmProxyToken = z.object({\n access: z.string(),\n expiresAt: z.number(),\n});\n\nexport type NpmProxyToken = z.infer<typeof NpmProxyToken>;\n\nexport const SessionData = z.object({\n returnToUrl: z.string().optional(),\n npmProxyToken: NpmProxyToken.optional(),\n});\n\nexport type SessionData = z.infer<typeof SessionData>;\n\nexport const Session = z.object({\n id: z.string(),\n expiresAt: z.date(),\n userId: z.string().nullable(),\n data: SessionData,\n});\n\nexport type Session = z.infer<typeof Session>;\n\nexport const AuthTokens = z.object({\n access: z.string(),\n refresh: z.string(),\n});\n\nexport type AuthTokens = z.infer<typeof AuthTokens>;\n\nexport const UserSession = z.object({\n session: Session,\n user: User.nullable(),\n});\n\nexport type UserSession = z.infer<typeof UserSession>;\n","import { z } from \"zod\";\n\nexport const IntegrationAuthType = z.union([z.literal(\"OAuth2\"), z.literal(\"PAT\")]);\n\nexport type IntegrationAuthType = z.infer<typeof IntegrationAuthType>;\n\nexport const ExternalServiceType = z.union([\n z.literal(\"figma\"),\n z.literal(\"github\"),\n z.literal(\"azure\"),\n z.literal(\"gitlab\"),\n z.literal(\"bitbucket\"),\n]);\n\nexport type ExternalServiceType = z.infer<typeof ExternalServiceType>;\n\nexport const IntegrationUserInfo = z.object({\n id: z.string(),\n handle: z.string().optional(),\n avatarUrl: z.string().optional(),\n email: z.string().optional(),\n authType: IntegrationAuthType.optional(),\n customUrl: z.string().optional(),\n});\n\nexport type IntegrationUserInfo = z.infer<typeof IntegrationUserInfo>;\n\nexport const UserLinkedIntegrations = z.object({\n figma: IntegrationUserInfo.optional(),\n github: IntegrationUserInfo.array().optional(),\n azure: IntegrationUserInfo.array().optional(),\n gitlab: IntegrationUserInfo.array().optional(),\n bitbucket: IntegrationUserInfo.array().optional(),\n});\n\nexport type UserLinkedIntegrations = z.infer<typeof UserLinkedIntegrations>;\n","import { z } from \"zod\";\n\nexport const UserIdentity = z.object({\n id: z.string(),\n userId: z.string(),\n});\n\nexport type UserIdentity = z.infer<typeof UserIdentity>;\n","import { z } from \"zod\";\n\nexport const UserOnboardingDepartment = z.enum([\"Design\", \"Engineering\", \"Brand\", \"Other\"]);\n\nexport const UserOnboardingJobLevel = z.enum([\"Executive\", \"Manager\", \"IndividualContributor\", \"Other\"]);\n\nexport const UserOnboarding = z.object({\n companyName: z.string().optional(),\n numberOfPeopleInOrg: z.string().optional(),\n numberOfPeopleInDesignTeam: z.string().optional(),\n department: UserOnboardingDepartment.optional(),\n jobTitle: z.string().optional(),\n phase: z.string().optional(),\n jobLevel: UserOnboardingJobLevel.optional(),\n});\n\nexport type UserOnboarding = z.infer<typeof UserOnboarding>;\n\nexport const UserProfile = z.object({\n name: z.string(),\n avatar: z.string().optional(),\n nickname: z.string().optional(),\n onboarding: UserOnboarding.optional(),\n});\n\nexport type UserProfile = z.infer<typeof UserProfile>;\n","import { UserLinkedIntegrations } from \"./linked-integrations\";\nimport { UserProfile } from \"./user-profile\";\nimport { z } from \"zod\";\n\nexport const User = z.object({\n id: z.string(),\n email: z.string(),\n emailVerified: z.boolean(),\n createdAt: z.date(),\n trialExpiresAt: z.date().optional(),\n profile: UserProfile,\n linkedIntegrations: UserLinkedIntegrations.optional(),\n loggedOutAt: z.date().optional(),\n isProtected: z.boolean(),\n});\n\nexport type User = z.infer<typeof User>;\n","import { z } from \"zod\";\n\nexport const FlaggedFeature = z.enum([\"FigmaImporterV2\"]);\nexport const FeatureFlagMap = z.record(FlaggedFeature, z.boolean());\nexport const FeatureFlag = z.object({\n id: z.string(),\n feature: FlaggedFeature,\n createdAt: z.date(),\n enabled: z.boolean(),\n});\n\nexport type FlaggedFeature = z.infer<typeof FlaggedFeature>;\nexport type FeatureFlagMap = z.infer<typeof FeatureFlagMap>;\nexport type FeatureFlag = z.infer<typeof FeatureFlag>;\n","import { z } from \"zod\";\nimport { OAuthProviderSchema } from \"./oauth-providers\";\n\nexport const ExternalOAuthRequest = z.object({\n id: z.string(),\n provider: OAuthProviderSchema,\n userId: z.string(),\n state: z.string(),\n createdAt: z.date(),\n});\n\nexport type ExternalOAuthRequest = z.infer<typeof ExternalOAuthRequest>;\n","import { z } from \"zod\";\n\nexport enum OAuthProviderNames {\n Figma = \"figma\",\n Azure = \"azure\",\n Github = \"github\",\n Gitlab = \"gitlab\",\n Bitbucket = \"bitbucket\",\n}\n\nexport const OAuthProviderSchema = z.nativeEnum(OAuthProviderNames);\nexport type OAuthProvider = z.infer<typeof OAuthProviderSchema>;\nexport const OAuthProvider = OAuthProviderSchema.enum;\n","import { z } from \"zod\";\nimport { OAuthProviderSchema } from \"./oauth-providers\";\n\nexport const IntegrationTokenSchema = z.object({\n id: z.string(),\n provider: OAuthProviderSchema,\n scope: z.string(),\n userId: z.string(),\n accessToken: z.string(),\n refreshToken: z.string(),\n expiresAt: z.date(),\n externalUserId: z.string().nullish(),\n});\n\nexport type IntegrationToken = z.infer<typeof IntegrationTokenSchema>;\n","import { z } from \"zod\";\nimport { Entity } from \"../common/entity\";\nimport { DbCreateInputOmit, DbUpdate } from \"../helpers\";\n\nexport const DesignSystemVersionRoom = Entity.extend({\n designSystemVersionId: z.string(),\n liveblocksId: z.string(),\n});\n\nexport type DesignSystemVersionRoom = z.infer<typeof DesignSystemVersionRoom>;\n\nexport type CreateDesignSystemVersionRoom = DbCreateInputOmit<DesignSystemVersionRoom>;\nexport type UpdateDesignSystemVersionRoom = DbUpdate<DesignSystemVersionRoom>;\n","import { z } from \"zod\";\nimport { Entity } from \"../common/entity\";\nimport { DbCreateInputOmit, DbUpdate } from \"../helpers\";\n\nexport const DocumentationPageRoom = Entity.extend({\n designSystemVersionId: z.string(),\n documentationPageId: z.string(),\n liveblocksId: z.string(),\n});\n\nexport type DocumentationPageRoom = z.infer<typeof DocumentationPageRoom>;\n\nexport type CreateDocumentationPageRoom = DbCreateInputOmit<DocumentationPageRoom>;\nexport type UpdateDocumentationPageRoom = DbUpdate<DocumentationPageRoom>;\n","import { z } from \"zod\";\n\nconst AnyRecord = z.record(z.any());\n\nconst NpmPackageVersionDist = AnyRecord.and(\n z.object({\n tarball: z.string(),\n })\n);\n\nconst NpmPackageVersion = AnyRecord.and(\n z.object({\n dist: NpmPackageVersionDist,\n })\n);\n\nexport const NpmPackage = AnyRecord.and(\n z.object({\n _id: z.string(),\n name: z.string(),\n\n // e.g. \"latest\": \"1.2.3\"\n \"dist-tags\": z.record(z.string(), z.string()),\n\n // \"1.2.3\": {...}\n versions: z.record(NpmPackageVersion),\n })\n);\n\nexport type NpmPackage = z.infer<typeof NpmPackage>;\n","import { z } from \"zod\";\n\nexport const NpmProxyTokenPayload = z.object({\n npmProxyRegistryConfigId: z.string(),\n});\n\nexport type NpmProxyTokenPayload = z.infer<typeof NpmProxyTokenPayload>;\n","import { z } from \"zod\";\nimport { WorkspaceRoleSchema } from \"../workspace\";\n\nexport const PersonalAccessToken = z.object({\n id: z.string(),\n userId: z.string(),\n name: z.string(),\n token: z.string(),\n createdAt: z.date(),\n hidden: z.boolean(),\n workspaceId: z.string().optional(),\n workspaceRole: WorkspaceRoleSchema.optional(),\n expireAt: z.date().optional(),\n scope: z.string().optional(),\n});\n\nexport type PersonalAccessToken = z.infer<typeof PersonalAccessToken>;\n","import { z } from \"zod\";\n\nexport const ContentLoadInstruction = z.object({\n from: z.string(),\n to: z.string(),\n authorizationHeaderKvsId: z.string().optional(),\n timeout: z.number().optional(),\n});\n\nexport type ContentLoadInstruction = z.infer<typeof ContentLoadInstruction>;\n\nexport const ContentLoaderPayload = z\n .object({\n type: z.literal(\"Single\"),\n instruction: ContentLoadInstruction,\n })\n .or(\n z.object({\n type: z.literal(\"Multiple\"),\n loadingChunkSize: z.number().optional(),\n instructions: z.array(ContentLoadInstruction),\n })\n )\n .or(\n z.object({\n type: z.literal(\"S3\"),\n location: z.string(),\n })\n );\n\nexport type ContentLoaderPayload = z.infer<typeof ContentLoaderPayload>;\n","import { PageBlockDefinition } from \"@supernova-studio/model\";\nimport { z } from \"zod\";\n\nexport const GetBlockDefinitionsResponse = z.object({\n definitions: z.array(PageBlockDefinition),\n});\n\nexport type GetBlockDefinitionsResponse = z.infer<typeof GetBlockDefinitionsResponse>;\n","import { PageBlockDataV2 } from \"@supernova-studio/model\";\nimport { z } from \"zod\";\n\nexport const PageBlockEditorModel = z.object({\n id: z.string(),\n data: PageBlockDataV2,\n});\n\nexport type PageBlockEditorModel = z.infer<typeof PageBlockEditorModel>;\n","import { z } from \"zod\";\nimport { PageBlockEditorModel } from \"./block\";\n\nexport const DocumentationPageEditorModel = z.object({\n blocks: z.array(PageBlockEditorModel),\n});\n\nexport type DocumentationPageEditorModel = z.infer<typeof DocumentationPageEditorModel>;\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union<Object, OrderedMap>) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union<Object, OrderedMap>) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. (Not public.)\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n return type.create(json.attrs);\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc)\n return cached;\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result;\n }\n}\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise error when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++)\n copy = this.marks[i].addToSet(copy);\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks);\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type with the given attributes.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n rules.forEach(rule => {\n if (rule.tag)\n this.tags.push(rule);\n else if (rule.style)\n this.styles.push(rule);\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3)\n this.addTextNode(dom);\n else if (dom.nodeType == 1)\n this.addElement(dom);\n }\n withStyleRules(dom, f) {\n let style = dom.getAttribute(\"style\");\n if (!style)\n return f();\n let marks = this.readStyles(parseStyles(style));\n if (!marks)\n return; // A style with ignore: true\n let [addMarks, removeMarks] = marks, top = this.top;\n for (let i = 0; i < removeMarks.length; i++)\n this.removePendingMark(removeMarks[i], top);\n for (let i = 0; i < addMarks.length; i++)\n this.addPendingMark(addMarks[i]);\n f();\n for (let i = 0; i < addMarks.length; i++)\n this.removePendingMark(addMarks[i], top);\n for (let i = 0; i < removeMarks.length; i++)\n this.addPendingMark(removeMarks[i]);\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n if (rule && rule.skip)\n this.addAll(dom);\n else\n this.withStyleRules(dom, () => this.addAll(dom));\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.withStyleRules(dom, () => {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n });\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let add = Mark.none, remove = Mark.none;\n for (let i = 0; i < styles.length; i += 2) {\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark) {\n this.top.pendingMarks.concat(this.top.activeMarks).forEach(m => {\n if (rule.clearMark(m))\n remove = m.addToSet(remove);\n });\n }\n else {\n add = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(add);\n }\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return [add, remove];\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style))\n result.push(m[1], m[2].trim());\n return result;\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = DOMSerializer.renderSpec(doc, child, xmlNS);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { Schema } from \"prosemirror-model\";\n\nconst newSchema = {\n nodes: {\n paragraph: {\n name: \"paragraph\",\n spec: {\n content: \"inline*\",\n group: \"block\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.rich-text\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"p\",\n },\n ],\n },\n markSet: null,\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.rich-text\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.rich-text\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n reactComponent: {\n name: \"reactComponent\",\n spec: {\n group: \"block\",\n atom: true,\n draggable: true,\n attrs: {\n count: {\n default: 0,\n },\n },\n parseDOM: [\n {\n tag: \"react-component\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n count: {\n hasDefault: true,\n default: 0,\n },\n },\n defaultAttrs: {\n count: 0,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableRow: {\n name: \"tableRow\",\n spec: {\n tableRole: \"row\",\n content: \"(tableCell | tableHeader)*\",\n parseDOM: [\n {\n tag: \"tr\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n table: {\n name: \"table\",\n spec: {\n tableRole: \"table\",\n content: \"tableRow+\",\n group: \"defaultTable\",\n isolating: true,\n parseDOM: [\n {\n tag: \"table\",\n },\n ],\n },\n markSet: [],\n groups: [\"defaultTable\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableCell: {\n name: \"tableCell\",\n spec: {\n tableRole: \"cell\",\n content: \"(paragraph|image)+\",\n isolating: true,\n attrs: {\n textAlign: {\n default: \"left\",\n },\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"td\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n textAlign: {\n hasDefault: true,\n default: \"left\",\n },\n colspan: {\n hasDefault: true,\n default: 1,\n },\n rowspan: {\n hasDefault: true,\n default: 1,\n },\n colwidth: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n textAlign: \"left\",\n colspan: 1,\n rowspan: 1,\n colwidth: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableHeader: {\n name: \"tableHeader\",\n spec: {\n tableRole: \"header_cell\",\n content: \"(paragraph|image)+\",\n isolating: true,\n attrs: {\n textAlign: {\n default: \"left\",\n },\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"th\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n textAlign: {\n hasDefault: true,\n default: \"left\",\n },\n colspan: {\n hasDefault: true,\n default: 1,\n },\n rowspan: {\n hasDefault: true,\n default: 1,\n },\n colwidth: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n textAlign: \"left\",\n colspan: 1,\n rowspan: 1,\n colwidth: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableContainer: {\n name: \"tableContainer\",\n spec: {\n content: \"table\",\n group: \"block\",\n atom: true,\n draggable: false,\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.table\",\n },\n variantId: {\n default: \"default\",\n },\n hasBorder: {\n default: true,\n },\n },\n parseDOM: [\n {\n tag: \"tableContainer\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.table\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n hasBorder: {\n hasDefault: true,\n default: true,\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.table\",\n variantId: \"default\",\n hasBorder: true,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n image: {\n name: \"image\",\n spec: {\n group: \"block\",\n inline: false,\n draggable: true,\n attrs: {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: 'img[src]:not([src^=\"data:\"])',\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n src: {\n hasDefault: true,\n default: null,\n },\n alt: {\n hasDefault: true,\n default: null,\n },\n title: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n src: null,\n alt: null,\n title: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n codeBlock: {\n name: \"codeBlock\",\n spec: {\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n attrs: {\n language: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n language: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n language: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n hardBreak: {\n name: \"hardBreak\",\n spec: {\n group: \"inline\",\n inline: true,\n selectable: false,\n parseDOM: [\n {\n tag: \"br\",\n },\n ],\n },\n markSet: [],\n groups: [\"inline\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: false,\n isText: false,\n },\n text: {\n name: \"text\",\n spec: {\n group: \"inline\",\n },\n markSet: [],\n groups: [\"inline\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: false,\n isText: true,\n },\n heading: {\n name: \"heading\",\n spec: {\n content: \"inline*\",\n group: \"block\",\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n level: {\n default: 1,\n },\n definitionId: {\n default: null,\n },\n variantId: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"h1\",\n attrs: {\n level: 1,\n definitionId: \"io.supernova.block.title1\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h2\",\n attrs: {\n level: 2,\n definitionId: \"io.supernova.block.title2\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h3\",\n attrs: {\n level: 3,\n definitionId: \"io.supernova.block.title3\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h4\",\n attrs: {\n level: 4,\n definitionId: \"io.supernova.block.title4\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h5\",\n attrs: {\n level: 5,\n definitionId: \"io.supernova.block.title5\",\n variantId: \"default\",\n },\n },\n ],\n },\n markSet: null,\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n level: {\n hasDefault: true,\n default: 1,\n },\n definitionId: {\n hasDefault: true,\n default: null,\n },\n variantId: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n level: 1,\n definitionId: null,\n variantId: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n listItem: {\n name: \"listItem\",\n spec: {\n content: \"paragraph (paragraph | list)*\",\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"li\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n orderedList: {\n name: \"orderedList\",\n spec: {\n content: \"listItem+\",\n group: \"block list topLevel\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.ordered-list\",\n },\n variantId: {\n default: \"default\",\n },\n start: {\n default: 1,\n },\n },\n parseDOM: [\n {\n tag: \"ol\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\", \"list\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.ordered-list\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n start: {\n hasDefault: true,\n default: 1,\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.ordered-list\",\n variantId: \"default\",\n start: 1,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n bulletList: {\n name: \"bulletList\",\n spec: {\n content: \"listItem+\",\n group: \"block list topLevel\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.unordered-list\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"ul\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\", \"list\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.unordered-list\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.unordered-list\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n horizontalRule: {\n name: \"horizontalRule\",\n spec: {\n group: \"block\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.divider\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"div.node-horizontalRule\",\n },\n {\n tag: \"hr\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.divider\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.divider\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n blockquote: {\n name: \"blockquote\",\n spec: {\n content: \"paragraph+\",\n group: \"block\",\n defining: true,\n attrs: {\n definitionId: {\n default: \"io.supernova.block.blockquote\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"blockquote\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.blockquote\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n definitionId: \"io.supernova.block.blockquote\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n plainSection: {\n name: \"plainSection\",\n spec: {\n content: \"sectionItem\",\n group: \"section topLevel\",\n atom: true,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"section\",\n attrs: {\n \"data-section-type\": \"plain\",\n },\n },\n ],\n },\n markSet: [],\n groups: [\"section\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tabsSection: {\n name: \"tabsSection\",\n spec: {\n content: \"sectionItem+\",\n group: \"section topLevel\",\n atom: true,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"div\",\n },\n ],\n },\n markSet: [],\n groups: [\"section\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n sectionItem: {\n name: \"sectionItem\",\n spec: {\n content: \"sectionItemColumn{1, 3}\",\n group: \"sectionItem\",\n atom: true,\n selectable: false,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n title: {\n default: \"\",\n },\n },\n parseDOM: [\n {\n tag: \"section-item\",\n },\n ],\n },\n markSet: [],\n groups: [\"sectionItem\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n title: {\n hasDefault: true,\n default: \"\",\n },\n },\n defaultAttrs: {\n id: null,\n title: \"\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n sectionItemColumn: {\n name: \"sectionItemColumn\",\n spec: {\n content: \"block+\",\n group: \"sectionItemColumn\",\n atom: true,\n selectable: false,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"section-item-column\",\n },\n ],\n },\n markSet: [],\n groups: [\"sectionItemColumn\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n doc: {\n name: \"doc\",\n spec: {\n content: \"(block|section)+\",\n },\n markSet: [],\n groups: [],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n callout: {\n name: \"callout\",\n spec: {\n content: \"inline*\",\n group: \"block topLevel\",\n draggable: true,\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.callout\",\n },\n variantId: {\n default: \"default\",\n },\n type: {\n default: \"neutral\",\n },\n },\n parseDOM: [\n {\n tag: \"callout\",\n },\n ],\n },\n markSet: null,\n groups: [\"block\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.callout\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n type: {\n hasDefault: true,\n default: \"neutral\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.callout\",\n variantId: \"default\",\n type: \"neutral\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n blockNode: {\n name: \"blockNode\",\n spec: {\n group: \"block\",\n atom: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: null,\n },\n variantId: {\n default: null,\n },\n columns: {\n default: 1,\n },\n items: {\n default: \"[]\",\n },\n },\n parseDOM: [\n {\n tag: \"block-node\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: null,\n },\n variantId: {\n hasDefault: true,\n default: null,\n },\n columns: {\n hasDefault: true,\n default: 1,\n },\n items: {\n hasDefault: true,\n default: \"[]\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: null,\n variantId: null,\n columns: 1,\n items: \"[]\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n },\n marks: {\n link: {\n name: \"link\",\n rank: 0,\n spec: {\n inclusive: true,\n attrs: {\n href: {\n default: null,\n },\n target: {\n default: \"_blank\",\n },\n rel: {\n default: \"noopener noreferrer nofollow\",\n },\n class: {\n default: null,\n },\n itemId: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: 'a[href]:not([href *= \"javascript:\" i])',\n },\n ],\n },\n attrs: {\n href: {\n hasDefault: true,\n default: null,\n },\n target: {\n hasDefault: true,\n default: \"_blank\",\n },\n rel: {\n hasDefault: true,\n default: \"noopener noreferrer nofollow\",\n },\n class: {\n hasDefault: true,\n default: null,\n },\n itemId: {\n hasDefault: true,\n default: null,\n },\n },\n instance: {\n type: \"link\",\n attrs: {\n href: null,\n target: \"_blank\",\n rel: \"noopener noreferrer nofollow\",\n class: null,\n itemId: null,\n },\n },\n },\n bold: {\n name: \"bold\",\n rank: 1,\n spec: {\n parseDOM: [\n {\n tag: \"strong\",\n },\n {\n tag: \"b\",\n },\n {\n style: \"font-weight\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"bold\",\n },\n },\n code: {\n name: \"code\",\n rank: 2,\n spec: {\n excludes: \"_\",\n code: true,\n parseDOM: [\n {\n tag: \"code\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"code\",\n },\n },\n italic: {\n name: \"italic\",\n rank: 3,\n spec: {\n parseDOM: [\n {\n tag: \"em\",\n },\n {\n tag: \"i\",\n },\n {\n style: \"font-style=italic\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"italic\",\n },\n },\n strike: {\n name: \"strike\",\n rank: 4,\n spec: {\n parseDOM: [\n {\n tag: \"s\",\n },\n {\n tag: \"del\",\n },\n {\n tag: \"strike\",\n },\n {\n style: \"text-decoration\",\n consuming: false,\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"strike\",\n },\n },\n },\n} as const;\n\nexport const pmSchema = new Schema(newSchema);\n","import { PageBlockEditorModel } from \"./model/block\";\nimport {\n PageBlockDefinition,\n PageBlockDefinitionPropertyType,\n PageBlockItemV2,\n PageBlockText,\n} from \"@supernova-studio/model\";\n\nexport const BlockParsingUtils = {\n singleBlockItem(block: PageBlockEditorModel) {\n if (!block.data.items.length) throw new Error(`Block ${block.id} has no items`);\n if (block.data.items.length > 1) throw new Error(`Block ${block.id} has more than 1 item`);\n\n return block.data.items[0]!;\n },\n\n richTextPropertyValue(item: PageBlockItemV2, propertyKey: string) {\n const objectValue = this.objectPropertyValue(item, propertyKey);\n const richText = PageBlockText.parse(objectValue);\n\n return richText;\n },\n\n objectPropertyValue(item: PageBlockItemV2, propertyKey: string) {\n const value = this.propertyValue(item, propertyKey);\n\n if (typeof value !== \"object\") {\n throw new Error(`Value for property ${propertyKey} is expected to be an object, but instead is ${typeof value}`);\n }\n\n return value;\n },\n\n propertyValue(item: PageBlockItemV2, propertyKey: string) {\n const value = this.safePropertyValue(item, propertyKey);\n if (!value) throw new Error(`Property ${propertyKey} is not defined on block item`);\n\n return value;\n },\n\n safePropertyValue(item: PageBlockItemV2, propertyKey: string) {\n return item.props[propertyKey] ?? undefined;\n },\n};\n\nexport const BlockDefinitionUtils = {\n firstRichTextProperty(definition: PageBlockDefinition) {\n const property = definition.item.properties.find(p => p.type === \"RichText\");\n if (property) return property;\n return undefined;\n },\n\n firstTableProperty(definition: PageBlockDefinition) {\n const property = definition.item.properties.find(p => p.type === \"RichText\");\n if (property) return property;\n return undefined;\n },\n\n richTextProperty(definition: PageBlockDefinition, propertyKey: string) {\n return this.property(definition, propertyKey, \"RichText\");\n },\n\n property(\n definition: PageBlockDefinition,\n propertyKey: string,\n expectedPropertyType?: PageBlockDefinitionPropertyType\n ) {\n const property = definition.item.properties.find(p => p.id === propertyKey);\n if (!property) {\n throw new Error(`Definition ${definition.id} doesn't contain property ${propertyKey}`);\n }\n\n if (expectedPropertyType && property.type !== expectedPropertyType) {\n throw new Error(\n `Property ${propertyKey} of definition ${definition.id} expected to be ${expectedPropertyType} but was ${property.type}`\n );\n }\n\n return property;\n },\n};\n","import * as Y from \"yjs\";\nimport {\n PageBlockDefinition,\n PageBlockDefinitionProperty,\n PageBlockItemV2,\n PageBlockText,\n PageBlockTextSpan,\n PageBlockTextSpanAttribute,\n PageBlockDefinitionRichTextPropertyStyle,\n} from \"@supernova-studio/model\";\nimport { PageBlockEditorModel } from \"./model/block\";\nimport {\n ProsemirrorBlockItem,\n ProsemirrorBlockItemPropertyValue,\n ProsemirrorNode,\n ProsemirrorMark,\n} from \"./prosemirror/types\";\nimport { BlockDefinitionUtils, BlockParsingUtils } from \"./utils\";\nimport { DocumentationPageEditorModel } from \"./model\";\nimport { prosemirrorJSONToYXmlFragment } from \"y-prosemirror\";\nimport { pmSchema } from \"./prosemirror\";\n\ntype Input = {\n block: PageBlockEditorModel;\n definition: PageBlockDefinition;\n richTextProperty: PageBlockDefinitionProperty;\n};\n\ntype InputWithValue = Input & {\n richTextPropertyValue: PageBlockText;\n};\n\nexport function pageToYXmlFragment(\n page: DocumentationPageEditorModel,\n definitions: PageBlockDefinition[],\n fragment: Y.XmlFragment\n): Y.XmlFragment {\n const doc = pageToProsemirrorDoc(page, definitions);\n return prosemirrorJSONToYXmlFragment(pmSchema, doc, fragment);\n}\n\nexport function pageToProsemirrorDoc(\n page: DocumentationPageEditorModel,\n definitions: PageBlockDefinition[]\n): ProsemirrorNode {\n return {\n type: \"doc\",\n content: page.blocks\n .map(b => {\n const definition = blockDefinitionForBlock(b, definitions);\n return blockToProsemirrorNode(b, definition);\n })\n .filter(nonNullFilter),\n };\n}\n\nexport function blockDefinitionForBlock(block: PageBlockEditorModel, definitions: PageBlockDefinition[]) {\n const definition = definitions.find(d => d.id === block.data.packageId);\n if (!definition) throw new Error(`Could not find definition for ${block.id} (${block.data.packageId})`);\n\n return definition;\n}\n\nexport function blockToProsemirrorNode(\n block: PageBlockEditorModel,\n definition: PageBlockDefinition\n): ProsemirrorNode | null {\n const richTextProperty = BlockDefinitionUtils.firstRichTextProperty(definition);\n\n if (richTextProperty) {\n return serializeAsRichTextBlock({\n block: block,\n definition: definition,\n richTextProperty: richTextProperty,\n });\n }\n\n return serializeAsCustomBlock(block, definition);\n}\n\nexport function serializeAsRichTextBlock(input: Input): ProsemirrorNode {\n const { block, definition, richTextProperty } = input;\n\n const blockItem = BlockParsingUtils.singleBlockItem(block);\n const textPropertyValue = BlockParsingUtils.richTextPropertyValue(blockItem, richTextProperty.id);\n\n const enrichedInput: InputWithValue = { ...input, richTextPropertyValue: textPropertyValue };\n\n const style = richTextProperty.options?.richTextStyle ?? \"Default\";\n\n switch (style) {\n case \"Callout\":\n return serializeAsCallout(enrichedInput);\n case \"Default\":\n return serializeAsParagraph(enrichedInput);\n\n case \"Quote\":\n return serializeAsBlockquote(enrichedInput);\n\n case \"Title1\":\n case \"Title2\":\n case \"Title3\":\n case \"Title4\":\n case \"Title5\":\n return serializeAsHeading(enrichedInput);\n\n // Todo: verify\n case \"OL\":\n case \"UL\":\n throw new Error(`Not allowed!`);\n }\n}\n\n//\n// Blocks\n//\n\nfunction serializeAsParagraph(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"paragraph\",\n attrs: serializeBlockNodeAttributes(input),\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsHeading(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"heading\",\n attrs: {\n ...serializeBlockNodeAttributes(input),\n level: richTextHeadingLevel(input.richTextProperty),\n },\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsBlockquote(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"blockquote\",\n attrs: serializeBlockNodeAttributes(input),\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsCallout(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"callout\",\n attrs: {\n ...serializeBlockNodeAttributes(input),\n\n // TODO Docs: type\n type: \"neutral\",\n },\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\n//\n// Attributes\n//\n\nfunction serializeBlockNodeAttributes(input: InputWithValue) {\n const { block } = input;\n\n return {\n id: block.id,\n definitionId: block.data.packageId,\n ...(input.block.data.variantId && { variantId: input.block.data.variantId }),\n };\n}\n\nfunction richTextHeadingLevel(property: PageBlockDefinitionProperty): number | undefined {\n const style = property.options?.style;\n if (!style) return undefined;\n\n switch (style) {\n case \"Title1\":\n return 1;\n case \"Title2\":\n return 2;\n case \"Title3\":\n return 3;\n case \"Title4\":\n return 4;\n case \"Title5\":\n return 5;\n\n case \"OL\":\n case \"UL\":\n case \"Callout\":\n case \"Default\":\n case \"Quote\":\n return undefined;\n }\n}\n\n//\n// Rich text\n//\n\nfunction serializeRichText(richText: PageBlockText) {\n return richText.spans.map(serializeTextSpan).flat();\n}\n\nfunction serializeTextSpan(span: PageBlockTextSpan): ProsemirrorNode[] {\n const marks = span.attributes.map(serializeTextSpanAttribute);\n\n const textParts = span.text.split(\"\\n\");\n const interspersed: ProsemirrorNode[] = [\n {\n type: \"text\",\n text: textParts[0],\n marks: marks,\n },\n ];\n\n for (let i = 1; i < textParts.length; i++) {\n interspersed.push(\n {\n type: \"hardBreak\",\n },\n {\n type: \"text\",\n text: textParts[i],\n marks: marks,\n }\n );\n }\n\n return interspersed;\n}\n\nfunction serializeTextSpanAttribute(spanAttribute: PageBlockTextSpanAttribute): ProsemirrorMark {\n switch (spanAttribute.type) {\n case \"Bold\":\n return { type: \"bold\", attrs: {} };\n case \"Italic\":\n return { type: \"italic\", attrs: {} };\n case \"Strikethrough\":\n return { type: \"strikethrough\", attrs: {} };\n case \"Code\":\n return { type: \"code\", attrs: {} };\n case \"Link\":\n return {\n type: \"link\",\n attrs: {\n itemId: spanAttribute.documentationItemId,\n href: spanAttribute.link,\n target: spanAttribute.openInNewWindow ? \"_blank\" : \"_self\",\n rel: \"noopener noreferrer nofollow\",\n class: null,\n },\n };\n }\n}\n\nexport function serializeAsCustomBlock(block: PageBlockEditorModel, definition: PageBlockDefinition): ProsemirrorNode {\n const items = block.data.items.map(i => serializeItem(i, block, definition));\n\n return {\n type: \"blockNode\",\n attrs: {\n id: block.id,\n definitionId: block.data.packageId,\n variantId: \"default\",\n columns: 1,\n items: JSON.stringify(items),\n\n // TODO Docs: variant, columns\n },\n };\n}\n\nfunction serializeItem(\n item: PageBlockItemV2,\n block: PageBlockEditorModel,\n definition: PageBlockDefinition\n): ProsemirrorBlockItem {\n const result: ProsemirrorBlockItem = {\n properties: [],\n };\n\n for (const property of definition.item.properties) {\n const serializedValue = serializePropertyValue(item, property);\n serializedValue && result.properties.push(serializedValue);\n }\n\n return result;\n}\n\nfunction serializePropertyValue(\n item: PageBlockItemV2,\n property: PageBlockDefinitionProperty\n): ProsemirrorBlockItemPropertyValue | undefined {\n const value = item.props[property.id] ?? undefined;\n if (!value) {\n return undefined;\n }\n\n // TODO Docs: actual property serialization\n\n const result: ProsemirrorBlockItemPropertyValue = {\n id: property.id,\n data: {},\n };\n\n if (typeof value === \"string\") {\n result.data.value = value;\n }\n\n return result;\n}\n\nfunction nonNullFilter<T>(item: T | null): item is T {\n return !!item;\n}\n\n// function serializePropertyValue(item: SDKBlockItem, property: SDKBlockDefinitionProperty) {\n// switch (property.type) {\n// case SDK.DocsBlockItemPropertyType.text: return value as string;\n\n// case SDK.DocsBlockItemPropertyType.richText: return {}\n\n// case SDK.DocsBlockItemPropertyType.boolean: return {}\n// case SDK.DocsBlockItemPropertyType.number: return {}\n// case SDK.DocsBlockItemPropertyType.singleSelect: return {}\n// case SDK.DocsBlockItemPropertyType.multiSelect: return {}\n// case SDK.DocsBlockItemPropertyType.image: return {}\n// case SDK.DocsBlockItemPropertyType.token: return {}\n// case SDK.DocsBlockItemPropertyType.tokenType: return {}\n// case SDK.DocsBlockItemPropertyType.tokenProperty: return {}\n// case SDK.DocsBlockItemPropertyType.component: return {}\n// case SDK.DocsBlockItemPropertyType.componentProperty: return {}\n// case SDK.DocsBlockItemPropertyType.asset: return {}\n// case SDK.DocsBlockItemPropertyType.assetProperty: return {}\n// case SDK.DocsBlockItemPropertyType.page: return {}\n// case SDK.DocsBlockItemPropertyType.pageProperty: return {}\n// case SDK.DocsBlockItemPropertyType.embedURL: return {}\n// case SDK.DocsBlockItemPropertyType.embedFrame: return {}\n// case SDK.DocsBlockItemPropertyType.markdown: return {}\n// case SDK.DocsBlockItemPropertyType.code: return {}\n// case SDK.DocsBlockItemPropertyType.codeSandbox: return {}\n// case SDK.DocsBlockItemPropertyType.table: return {}\n// case SDK.DocsBlockItemPropertyType.divider: return {}\n// case SDK.DocsBlockItemPropertyType.storybook: return {}\n// }\n// }\n\n// richText = \"RichText\",\n// text = \"Text\",\n// boolean = \"Boolean\",\n// number = \"Number\",\n// singleSelect = \"SingleSelect\",\n// multiSelect = \"MultiSelect\",\n// image = \"Image\",\n// token = \"Token\",\n// tokenType = \"TokenType\",\n// tokenProperty = \"TokenProperty\",\n// component = \"Component\",\n// componentProperty = \"ComponentProperty\",\n// asset = \"Asset\",\n// assetProperty = \"AssetProperty\",\n// page = \"Page\",\n// pageProperty = \"PageProperty\",\n// embedURL = \"EmbedURL\",\n// embedFrame = \"EmbedFrame\",\n// markdown = \"Markdown\",\n// code = \"Code\",\n// codeSandbox = \"CodeSandbox\",\n// table = \"Table\",\n// divider = \"Divider\",\n// storybook = \"Storybook\"\n","import * as Y from \"yjs\";\nimport { ProsemirrorNode, ProsemirrorMark } from \"./prosemirror/types\";\nimport {\n PageBlockDefinition,\n PageBlockText,\n PageBlockTextSpan,\n PageBlockTextSpanAttribute,\n PageBlockDefinitionProperty,\n} from \"@supernova-studio/model\";\nimport { PageBlockEditorModel } from \"./model/block\";\nimport { DocumentationPageEditorModel } from \"./model/page\";\nimport { BlockDefinitionUtils } from \"./utils\";\nimport { yXmlFragmentToProsemirrorJSON } from \"y-prosemirror\";\n\nexport function yXmlFragmetToPage(\n fragment: Y.XmlFragment,\n definitions: PageBlockDefinition[]\n): DocumentationPageEditorModel {\n const prosemirrorJson = yXmlFragmentToProsemirrorJSON(fragment) as ProsemirrorNode;\n return prosemirrorDocToPage(prosemirrorJson, definitions);\n}\n\nexport function prosemirrorDocToPage(\n prosemirrorDoc: ProsemirrorNode,\n definitions: PageBlockDefinition[]\n): DocumentationPageEditorModel {\n const definitionsById = mapByUnique(definitions, d => d.id);\n\n return {\n blocks: (prosemirrorDoc.content ?? [])\n .map(prosemirrorNode => {\n const definitionId = prosemirrorNode.attrs?.definitionId;\n if (!definitionId) throw new Error(`Node is missing defintion id`);\n if (typeof definitionId !== \"string\")\n throw new Error(`Definition id is ${typeof definitionId}, has to be string`);\n\n const definition = definitionsById.get(definitionId);\n if (!definition) throw new Error(`Definition by id ${definitionId} doesn't exist`);\n\n return prosemirrorNodeToBlock(prosemirrorNode, definition);\n })\n .filter(nonNullFilter),\n };\n}\n\nexport function prosemirrorNodeToBlock(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition\n): PageBlockEditorModel | null {\n const richTextProperty = BlockDefinitionUtils.firstRichTextProperty(definition);\n if (richTextProperty) {\n return parseAsRichText(prosemirrorNode, definition, richTextProperty);\n }\n\n return parseAsCustomBlock(prosemirrorNode, definition);\n}\n\nfunction parseAsRichText(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition,\n property: PageBlockDefinitionProperty\n): PageBlockEditorModel {\n const id = parseProsemirrorBlockAttribute(prosemirrorNode, \"id\");\n const variantId = parseProsemirrorOptionalBlockAttribute(prosemirrorNode, \"variantId\");\n\n return {\n // TODO Artem: indent\n id: id,\n data: {\n packageId: definition.id,\n indentLevel: 0,\n variantId: variantId,\n items: [\n {\n id: id,\n props: {\n [property.id]: {\n value: parseRichText(prosemirrorNode.content ?? []),\n },\n },\n },\n ],\n },\n };\n}\n\nfunction parseRichText(spans: ProsemirrorNode[]): PageBlockText {\n return {\n spans: spans.map(parseRichTextSpan).filter(nonNullFilter),\n };\n}\n\nfunction parseRichTextSpan(span: ProsemirrorNode): PageBlockTextSpan | null {\n if (span.type !== \"text\" || !span.text) return null;\n\n const marks = span.marks ?? [];\n\n return {\n text: span.text,\n attributes: marks.map(parseRichTextAttribute).filter(nonNullFilter),\n };\n}\n\nfunction parseRichTextAttribute(mark: ProsemirrorMark): PageBlockTextSpanAttribute | null {\n switch (mark.type) {\n case \"bold\":\n return { type: \"Bold\" };\n case \"italic\":\n return { type: \"Italic\" };\n case \"strikethrough\":\n return { type: \"Strikethrough\" };\n case \"code\":\n return { type: \"Code\" };\n case \"link\":\n const itemId = mark.attrs?.itemId;\n const href = mark.attrs?.href;\n\n return {\n type: \"Link\",\n openInNewWindow: mark.attrs?.target !== \"_self\",\n documentationItemId: itemId,\n link: href,\n };\n }\n\n return null;\n}\n\n//\n// Custom block\n//\n\nfunction parseAsCustomBlock(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition\n): PageBlockEditorModel | null {\n return null;\n}\n\n//\n// Attributes\n//\n\nfunction parseProsemirrorBlockAttribute(prosemirrorNode: ProsemirrorNode, attributeName: string) {\n const attributeValue = parseProsemirrorOptionalBlockAttribute(prosemirrorNode, attributeName); //prosemirrorNode.attrs?.[attributeName];\n if (!attributeValue) {\n throw new Error(`Attribute ${attributeName} was not defined`);\n }\n\n return attributeValue;\n}\n\nfunction parseProsemirrorOptionalBlockAttribute(prosemirrorNode: ProsemirrorNode, attributeName: string) {\n return prosemirrorNode.attrs?.[attributeName] ?? undefined;\n}\n\n//\n// Utils\n//\n\nfunction nonNullFilter<T>(item: T | null): item is T {\n return item !== null;\n}\n\nfunction mapByUnique<V, K>(items: V[], keyFn: (item: V) => K): Map<K, V> {\n const result = new Map<K, V>();\n for (const item of items) {\n result.set(keyFn(item), item);\n }\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../model/src/auth/plugin-oauth-request.ts","../../model/src/billing/card.ts","../../model/src/billing/checkoutSession.ts","../../model/src/billing/customer.ts","../../model/src/billing/features.ts","../../model/src/billing/invoice.ts","../../model/src/billing/portalSession.ts","../../model/src/billing/price.ts","../../model/src/billing/product.ts","../../model/src/billing/subscription.ts","../../model/src/dsm/assets/asset-reference.ts","../../model/src/dsm/assets/asset-value.ts","../../model/src/dsm/assets/asset.ts","../../model/src/dsm/data-sources/data-source.ts","../../model/src/dsm/data-sources/import-job.ts","../../model/src/common/entity.ts","../../model/src/common/object-meta.ts","../../model/src/dsm/data-sources/import-summary.ts","../../model/src/dsm/elements/data/base.ts","../../model/src/dsm/elements/data/blur.ts","../../model/src/dsm/elements/data/dimension.ts","../../model/src/dsm/elements/data/border-radius.ts","../../model/src/dsm/elements/data/border-width.ts","../../model/src/dsm/elements/data/border.ts","../../model/src/dsm/elements/data/color.ts","../../model/src/dsm/elements/data/opacity.ts","../../model/src/dsm/elements/data/component.ts","../../model/src/dsm/elements/data/documentation-block-v1.ts","../../model/src/dsm/elements/raw-element.ts","../../model/src/dsm/properties/property-definition.ts","../../model/src/dsm/properties/property-value.ts","../../model/src/dsm/elements/primitives/point.ts","../../model/src/dsm/elements/primitives/size.ts","../../model/src/helpers/db.ts","../../model/src/helpers/nullish-to-optional.ts","../../model/src/dsm/elements/data/documentation-block-v2.ts","../../model/src/dsm/elements/data/documentation-page-v1.ts","../../model/src/dsm/elements/data/documentation.ts","../../model/src/dsm/elements/data/documentation-page-v2.ts","../../model/src/dsm/elements/data/duration.ts","../../model/src/dsm/elements/data/figma-file-structure.ts","../../model/src/dsm/elements/data/figma-node-reference.ts","../../model/src/dsm/elements/data/font-family.ts","../../model/src/dsm/elements/data/font-size.ts","../../model/src/dsm/elements/data/font-weight.ts","../../model/src/dsm/elements/data/gradient.ts","../../model/src/dsm/elements/data/group.ts","../../model/src/dsm/elements/data/letter-spacing.ts","../../model/src/dsm/elements/data/line-height.ts","../../model/src/dsm/elements/data/paragraph-indent.ts","../../model/src/dsm/elements/data/paragraph-spacing.ts","../../model/src/dsm/elements/data/product-copy.ts","../../model/src/dsm/elements/data/shadow.ts","../../model/src/dsm/elements/data/size.ts","../../model/src/dsm/elements/data/space.ts","../../model/src/dsm/elements/data/string.ts","../../model/src/dsm/elements/data/text-case.ts","../../model/src/dsm/elements/data/text-decoration.ts","../../model/src/dsm/elements/data/typography.ts","../../model/src/dsm/elements/data/visibility.ts","../../model/src/dsm/elements/data/z-index.ts","../../model/src/dsm/elements/base.ts","../../model/src/dsm/elements/component.ts","../../model/src/dsm/elements/documentation-page-v1.ts","../../model/src/dsm/elements/documentation-page-v2.ts","../../model/src/dsm/elements/figma-file-structures.ts","../../model/src/dsm/elements/figma-node-reference.ts","../../model/src/dsm/elements/group.ts","../../model/src/dsm/elements/page-block-v2.ts","../../model/src/dsm/elements/theme.ts","../../model/src/dsm/elements/tokens.ts","../../model/src/dsm/import/support/figma-files.ts","../../model/src/dsm/import/support/import-context.ts","../../model/src/dsm/import/support/import-model-collections.ts","../../model/src/dsm/import/image.ts","../../model/src/dsm/import/component.ts","../../model/src/dsm/import/base.ts","../../model/src/dsm/import/theme.ts","../../model/src/dsm/import/tokens.ts","../../model/src/dsm/import/figma-frames.ts","../../model/src/dsm/import/data-source.ts","../../model/src/dsm/import/warning.ts","../../model/src/dsm/documentation/block-definitions/aux.ts","../../model/src/dsm/documentation/block-definitions/definition.ts","../../model/src/dsm/documentation/block-definitions/item.ts","../../model/src/dsm/documentation/block-definitions/variant.ts","../../model/src/dsm/documentation/group.ts","../../model/src/dsm/documentation/page.ts","../../model/src/dsm/design-system.ts","../../model/src/workspace/npm-registry-settings.ts","../../model/src/workspace/sso-provider.ts","../../model/src/workspace/user-invite.ts","../../model/src/workspace/workspace-role.ts","../../model/src/workspace/workspace-context.ts","../../model/src/workspace/workspace-create.ts","../../model/src/utils/validation.ts","../../model/src/workspace/workspace-invitations.ts","../../model/src/workspace/workspace-membership.ts","../../model/src/workspace/workspace.ts","../../model/src/dsm/desing-system-create.ts","../../model/src/dsm/desing-system-update.ts","../../model/src/dsm/published-doc.ts","../../model/src/codegen/export-jobs.ts","../../model/src/codegen/exporter-workspace-membership-role.ts","../../model/src/codegen/exporter-workspace-membership.ts","../../model/src/codegen/exporter.ts","../../model/src/codegen/git-providers.ts","../../model/src/codegen/pulsar.ts","../../model/src/custom-domains/custom-domains.ts","../../model/src/docs-server/session.ts","../../model/src/users/linked-integrations.ts","../../model/src/users/user-identity.ts","../../model/src/users/user-profile.ts","../../model/src/users/user.ts","../../model/src/feature-flags/feature-flags.ts","../../model/src/integrations/external-oauth-request.ts","../../model/src/integrations/oauth-providers.ts","../../model/src/integrations/oauth-token.ts","../../model/src/multiplayer/design-system-version-room.ts","../../model/src/multiplayer/documentation-page-room.ts","../../model/src/npm/npm-package.ts","../../model/src/npm/npm-proxy-token-payload.ts","../../model/src/tokens/personal-access-token.ts","../../model/src/utils/content-loader-instruction.ts","../src/api/responses/get-block-definitions.ts","../src/docs-editor/model/block.ts","../src/docs-editor/model/page.ts","../src/docs-editor/prosemirror/schema.ts","../src/docs-editor/utils.ts","../src/docs-editor/blocks-to-prosemirror.ts","../src/docs-editor/mock.ts","../src/docs-editor/prosemirror-to-blocks.ts"],"names":["z","zeroNumberByDefault","DS_NAME_MIN_LENGTH","DS_NAME_MAX_LENGTH","DS_DESC_MIN_LENGTH","DS_DESC_MAX_LENGTH","GitProviderNames","OAuthProviderNames","nonNullFilter"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nexport const PluginOAuthRequestSchema = z.object({\n id: z.string(),\n codeChallenge: z.string(),\n readKey: z.string(),\n writeKey: z.string(),\n readKeyConsumed: z.boolean(),\n writeKeyConsumed: z.boolean(),\n oAuthCode: z.string().optional(),\n createdAt: z.date(),\n});\n\nexport type PluginOAuthRequest = z.infer<typeof PluginOAuthRequestSchema>;\n","import { z } from \"zod\";\n\nexport const CardSchema = z.object({\n cardId: z.string().nullish(),\n last4: z.string().length(4).nullish(),\n expiryMonth: z.string().nullish(),\n expiryYear: z.string().nullish(),\n brand: z.string().nullish(),\n name: z.string().nullish(),\n});\n\nexport type Card = z.infer<typeof CardSchema>;\n","import { z } from \"zod\";\n\nexport const PostStripeCheckoutBodyInputSchema = z.object({\n priceId: z.string(),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n quantity: z.number().int().min(1).optional(),\n});\n\nexport const PostStripeCheckoutOutputSchema = z.object({\n id: z.string(),\n url: z.string().nullish(),\n});\n\nexport type StripeCheckoutInput = z.infer<typeof PostStripeCheckoutBodyInputSchema>;\nexport type StripeCheckoutOutput = z.infer<typeof PostStripeCheckoutOutputSchema>;\n","import { z } from \"zod\";\n\nexport const Customer = z.object({\n id: z.string(),\n});\n\nexport const Address = z.object({\n street1: z.string().optional(),\n street2: z.string().optional(),\n city: z.string().optional(),\n postal: z.string().optional(),\n country: z.string().optional(),\n state: z.string().optional(),\n});\n\nexport const BillingDetails = z.object({\n address: Address.optional(),\n email: z.string().optional(),\n companyName: z.string().optional(),\n companyId: z.string().optional(),\n notes: z.string().optional(),\n vat: z.string().optional(),\n poNumber: z.string().optional(),\n});\n\nexport type Customer = z.infer<typeof Customer>;\nexport type Address = z.infer<typeof Address>;\nexport type BillingDetails = z.infer<typeof BillingDetails>;\n","import { z } from \"zod\";\n\nconst featureLimitedSchema = z.object({\n max: z.number(),\n errorMessage: z.string(),\n errorReason: z.string(),\n});\n\nconst featureToggleSchema = z.object({\n enabled: z.boolean(),\n errorMessage: z.string(),\n errorReason: z.string(),\n});\n\nconst featureWithImportJobsSchema = featureLimitedSchema.extend({\n noImportJobsErrorMessage: z.string(),\n noImportJobsErrorReason: z.string(),\n});\n\nexport const FeaturesSummary = z.object({\n designSystems: featureLimitedSchema,\n designSystemSources: featureWithImportJobsSchema,\n designSystemVersions: featureLimitedSchema,\n themes: featureLimitedSchema,\n brands: featureLimitedSchema,\n codegenSchedules: featureLimitedSchema,\n publicDocumentation: featureToggleSchema,\n customDocumentationUrl: featureToggleSchema,\n customDocumentationViewButton: featureToggleSchema,\n designSystemSourceAutoImport: featureToggleSchema,\n designSystemSlug: featureToggleSchema,\n ipWhitelisting: featureToggleSchema,\n npmRegistry: featureToggleSchema,\n sso: featureToggleSchema,\n workspacePaidSeats: featureLimitedSchema,\n workspaceViewers: featureLimitedSchema,\n customDocumentationExporter: featureToggleSchema,\n});\n\nexport type FeatureLimitedDetails = z.infer<typeof featureLimitedSchema>;\nexport type FeatureToggleDetails = z.infer<typeof featureToggleSchema>;\nexport type FeatureWithImportJobsDetails = z.infer<typeof featureWithImportJobsSchema>;\nexport type FeaturesSummary = z.infer<typeof FeaturesSummary>;\n","import { z } from \"zod\";\nimport { CardSchema } from \"./card\";\n\nexport const InvoiceSchema = z.object({\n id: z.string(),\n number: z.string(),\n amount_due: z.number(),\n date: z.date(),\n hostedUrl: z.string().url(),\n card: CardSchema.nullish(),\n});\n\nexport const PeriodSchema = z.object({\n start: z.date(),\n end: z.date(),\n});\n\nexport const InvoiceLineSchema = z.object({\n amount: z.number(),\n period: PeriodSchema,\n proration: z.boolean(),\n description: z.string(),\n type: z.string(),\n});\n\nexport const InvoiceCouponSchema = z.object({\n amount_off: z.number(),\n percent_off: z.number(),\n name: z.string(),\n});\n\nexport type Invoice = z.infer<typeof InvoiceSchema>;\nexport type InvoiceLine = z.infer<typeof InvoiceLineSchema>;\nexport type InvoiceCoupon = z.infer<typeof InvoiceCouponSchema>;\n","import { z } from \"zod\";\n\nexport const PostStripePortalUpdateSessionBodyInputSchema = z.object({\n priceId: z.string(),\n numberOfSeats: z.number().int(),\n});\nexport const PostStripePortalSessionBodyInputSchema = z.object({\n returnUrl: z.string().url(),\n update: PostStripePortalUpdateSessionBodyInputSchema.optional(),\n cancel: z.boolean().optional(),\n});\n\nexport const PostStripePortalSessionOutputSchema = z.object({\n id: z.string(),\n url: z.string().nullish(),\n});\n\nexport type StripePortalSessionInput = z.infer<typeof PostStripePortalSessionBodyInputSchema>;\nexport type StripePortalSessionOutput = z.infer<typeof PostStripePortalSessionOutputSchema>;\n","import { z } from \"zod\";\n\nexport const BillingIntervalSchema = z.enum([\"daily\", \"monthly\", \"weekly\", \"yearly\"]);\n\nexport const PriceSchema = z.object({\n stripePriceId: z.string(),\n stripeProductId: z.string(),\n stripeProductName: z.string().optional(),\n stripeProductDescription: z.string().optional(),\n active: z.boolean(),\n amount: z.number(),\n interval: BillingIntervalSchema,\n isPricePerCreator: z.boolean().optional(),\n isTrial: z.boolean().optional(),\n isHidden: z.boolean().optional(),\n minimumSeats: z.number().optional(),\n legacyVersion: z.string().optional(),\n featuresSet: z.string().optional(),\n stripeProductFeatures: z.array(z.string()).optional(),\n stripeProductAdditionalFeatures: z.array(z.string()).optional(),\n});\n\nexport type BillingInterval = z.infer<typeof BillingIntervalSchema>;\nexport type Price = z.infer<typeof PriceSchema>;\n","import { z } from \"zod\";\n\nexport const ProductCodeSchema = z.enum([\"free\", \"team\", \"team_test\", \"company\", \"enterprise\"]);\nexport type ProductCode = z.infer<typeof ProductCodeSchema>;\nexport const ProductCode = ProductCodeSchema.enum;\n","import { CardSchema } from \"./card\";\nimport { ProductCode, ProductCodeSchema } from \"./product\";\nimport { FeaturesSummary } from \"./features\";\nimport { BillingIntervalSchema } from \"./price\";\nimport { z } from \"zod\";\nexport const StripeSubscriptionStatusSchema = z.enum([\n \"trialing\",\n \"active\",\n \"past_due\",\n \"canceled\",\n \"unpaid\",\n \"incomplete_expired\",\n \"incomplete\",\n \"unknown\",\n]);\n\nexport const InternalStatusSchema = z.enum([\"active\", \"suspended\", \"gracePeriod\", \"cancelled\", \"downgraded_to_free\"]);\n\nexport const BillingTypeSchema = z.enum([\"Auto\", \"Invoice\"]);\n\nexport type StripeSubscriptionStatus = z.infer<typeof StripeSubscriptionStatusSchema>;\nexport type InternalStatus = z.infer<typeof InternalStatusSchema>;\nexport type BillingType = z.infer<typeof BillingTypeSchema>;\n\nexport const StripeSubscriptionStatus = StripeSubscriptionStatusSchema.enum;\nexport const InternalStatus = InternalStatusSchema.enum;\nexport const BillingType = BillingTypeSchema.enum;\n\nexport const Subscription = z.object({\n stripeSubscriptionId: z.string().nullish(),\n stripeCustomerId: z.string().nullish(),\n\n status: InternalStatusSchema.optional(),\n subscriptionStatus: StripeSubscriptionStatusSchema.optional(), // the stripe API official status\n internalStatus: InternalStatusSchema.optional(), // TODO: delete when create/get workspace will stop using it in the former API\n\n product: ProductCodeSchema,\n featuresSummary: FeaturesSummary.optional(),\n stripeProductDescription: z.string().optional(),\n stripeProductFeatures: z.array(z.string()).optional(),\n stripeProductAdditionalFeatures: z.array(z.string()).optional(),\n stripeSubscriptionMainItemId: z.string().optional(),\n planPriceId: z.string(),\n planInterval: BillingIntervalSchema,\n isPricePerCreator: z.boolean().optional(),\n legacyVersion: z.string().optional(),\n\n seats: z.number(),\n seatLimit: z.number(),\n\n currentPeriodStart: z.string().optional(),\n currentPeriodEnd: z.string().optional(),\n subscriptionStatusUpdatedAt: z.string().optional(),\n cancelAt: z.string().nullish(),\n\n card: CardSchema.optional(),\n\n // New\n amount: z.number().nullish(),\n isTrial: z.boolean().optional(),\n billingType: BillingTypeSchema.optional(),\n daysUntilDue: z.number().optional(),\n});\n\nexport type Subscription = z.infer<typeof Subscription>;\n","import { z } from \"zod\";\nimport { DbCreateInputOmit } from \"../../helpers\";\n\nexport const AssetReference = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n assetId: z.string(),\n persistentId: z.string(),\n});\n\nexport type AssetReference = z.infer<typeof AssetReference>;\n\nexport type CreateAssetReference = DbCreateInputOmit<AssetReference>;\n\nexport type AssetReferenceDiff = {\n toCreate: CreateAssetReference[];\n toDelete: string[];\n};\n","import { z } from \"zod\";\n\nexport const AssetValue = z.object({});\n","import { z } from \"zod\";\nimport { OmitStrict } from \"../../helpers\";\n\nexport const AssetType = z.enum([\"Image\", \"Font\"]);\nexport const AssetScope = z.enum([\"DocumentationFrame\", \"ComponentThumbnail\", \"DesignSystem\", \"Documentation\"]);\n\nexport const AssetFontProperties = z.object({\n family: z.string(),\n subfamily: z.string(),\n});\n\nexport const AssetProperties = z.object({\n fontProperties: z.array(AssetFontProperties),\n});\n\nexport const AssetOrigin = z.object({\n originKey: z.string(),\n});\n\nexport const Asset = z.object({\n id: z.string(),\n designSystemId: z.string().nullish(),\n type: AssetType,\n originalFileName: z.string().nullish(),\n filePath: z.string(),\n scope: AssetScope,\n properties: AssetProperties.nullish(),\n origin: AssetOrigin.nullish(),\n});\n\nexport type AssetType = z.infer<typeof AssetType>;\nexport type AssetScope = z.infer<typeof AssetScope>;\nexport type AssetFontProperties = z.infer<typeof AssetFontProperties>;\nexport type AssetProperties = z.infer<typeof AssetProperties>;\nexport type AssetOrigin = z.infer<typeof AssetOrigin>;\nexport type Asset = z.infer<typeof Asset>;\n\nexport type ImportedAsset = OmitStrict<Asset, \"origin\"> & {\n origin: AssetOrigin;\n};\n\nexport type ResolvedAsset = OmitStrict<Asset, \"filePath\"> & {\n url: string;\n};\n\nexport function isImportedAsset(asset: Asset): asset is ImportedAsset {\n return !!asset.origin;\n}\n","import { z } from \"zod\";\nimport { SourceImportSummary } from \"./import-summary\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\n//\n// Enums\n//\n\nexport const DataSourceRemoteType = z.enum([\"Figma\", \"TokenStudio\", \"FigmaVariablesPlugin\"]);\nexport const DataSourceUploadRemoteSource = z.enum([\"TokenStudio\", \"FigmaVariablesPlugin\", \"Custom\"]);\nexport const DataSourceFigmaState = z.enum([\"Active\", \"MissingIntegration\", \"MissingFileAccess\", \"MissingFileOwner\"]);\nexport const DataSourceAutoImportMode = z.enum([\"Never\", \"Hourly\"]);\n\nexport type DataSourceRemoteType = z.infer<typeof DataSourceRemoteType>;\nexport type DataSourceUploadRemoteSource = z.infer<typeof DataSourceUploadRemoteSource>;\nexport type DataSourceFigmaState = z.infer<typeof DataSourceFigmaState>;\nexport type DataSourceAutoImportMode = z.infer<typeof DataSourceAutoImportMode>;\n\n//\n// Aux\n//\n\nexport const DataSourceStats = z.object({\n tokens: zeroNumberByDefault(),\n components: zeroNumberByDefault(),\n assets: zeroNumberByDefault(),\n frames: zeroNumberByDefault(),\n});\n\nexport type DataSourceStats = z.infer<typeof DataSourceStats>;\n\n//\n// Figma\n//\n\nexport const DataSourceFigmaFileData = z.object({\n lastUpdatedAt: z.coerce.date(),\n});\n\nexport const DataSourceFigmaFileVersionData = z.object({\n id: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n createdAt: z.coerce.date(),\n});\n\nexport const DataSourceFigmaScope = z.object({\n assets: z.boolean(),\n components: z.boolean(),\n documentationFrames: z.boolean(),\n tokens: z.boolean(),\n themePersistentId: z.string().optional(),\n});\n\nexport const DataSourceFigmaImportMetadata = z.object({\n fileData: DataSourceFigmaFileData.optional(),\n importedPublishedVersion: DataSourceFigmaFileVersionData.optional(),\n});\n\nexport const DataSourceFigmaRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.Figma),\n fileId: z.string(),\n ownerId: z.string(),\n ownerName: z.string(),\n scope: DataSourceFigmaScope,\n state: DataSourceFigmaState,\n lastImportMetadata: DataSourceFigmaImportMetadata.optional(),\n downloadChunkSize: z.number().optional(),\n});\n\nexport type DataSourceFigmaFileData = z.infer<typeof DataSourceFigmaFileData>;\nexport type DataSourceFigmaFileVersionData = z.infer<typeof DataSourceFigmaFileVersionData>;\nexport type DataSourceFigmaScope = z.infer<typeof DataSourceFigmaScope>;\nexport type DataSourceFigmaImportMetadata = z.infer<typeof DataSourceFigmaImportMetadata>;\nexport type DataSourceFigmaRemote = z.infer<typeof DataSourceFigmaRemote>;\n\n//\n// Token Studio\n//\n\nexport const DataSourceTokenStudioRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.TokenStudio),\n});\n\nexport type DataSourceTokenStudioRemote = z.infer<typeof DataSourceTokenStudioRemote>;\n\n//\n// Figma Variables Plugin\n//\n\nexport const DataSourceUploadImportMetadata = z.record(z.any());\n\nexport const DataSourceUploadRemote = z.object({\n type: z.literal(DataSourceRemoteType.Enum.FigmaVariablesPlugin),\n remoteId: z.string(),\n remoteSourceType: DataSourceUploadRemoteSource,\n lastImportMetadata: DataSourceUploadImportMetadata.optional(),\n});\n\nexport type DataSourceUploadImportMetadata = z.infer<typeof DataSourceUploadImportMetadata>;\nexport type DataSourceUploadRemote = z.infer<typeof DataSourceUploadRemote>;\n\n//\n// Base\n//\n\nexport const DataSourceRemote = z.discriminatedUnion(\"type\", [\n DataSourceFigmaRemote,\n DataSourceUploadRemote,\n DataSourceTokenStudioRemote,\n]);\n\nexport type DataSource = {\n id: string;\n\n name: string;\n thumbnailUrl: string | undefined;\n\n // createdAt: Date;\n // updatedAt: Date;\n\n lastImportedAt: Date | undefined;\n lastImportSummary: SourceImportSummary | undefined;\n\n // lastImportJobId: Nullish<string>;\n // lastNonEmptyImportJobId: Nullish<string>;\n\n designSystemId: string;\n brandPersistentId: string;\n\n autoImportMode: DataSourceAutoImportMode;\n stats: DataSourceStats;\n\n remote: DataSourceRemote;\n\n sortOrder: number;\n};\n\nexport const DataSourceVersion = z.object({\n id: z.string(),\n createdAt: z.date(),\n label: z.string().nullish(),\n description: z.string().nullish(),\n});\n\nexport type DataSourceVersion = z.infer<typeof DataSourceVersion>;\n\nexport type DataSourceRemote = z.infer<typeof DataSourceRemote>;\n\nexport type CreateDataSource = OmitStrict<DbCreateInputOmit<DataSource>, \"sortOrder\">;\nexport type UpdateDataSource = OmitStrict<DbUpdate<DataSource>, \"brandPersistentId\" | \"designSystemId\">;\n\nfunction zeroNumberByDefault() {\n return z\n .number()\n .nullish()\n .transform(v => v ?? 0);\n}\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { DataSourceRemoteType } from \"./data-source\";\nimport { Entity } from \"../../common\";\n\nexport const ImportJobState = z.enum([\"PendingInput\", \"Queued\", \"InProgress\", \"Failed\", \"Success\"]);\nexport const ImportJobOperation = z.enum([\"Check\", \"Import\"]);\n\nexport const ImportJob = Entity.extend({\n designSystemId: z.string(),\n designSystemVersionId: z.string(),\n sourceIds: z.array(z.string()),\n state: ImportJobState,\n createdByUserId: z.string().optional(),\n importContextId: z.string(),\n error: z.string().optional(),\n sourceType: DataSourceRemoteType,\n});\n\nexport type ImportJobState = z.infer<typeof ImportJobState>;\nexport type ImportJobOperation = z.infer<typeof ImportJobOperation>;\nexport type ImportJob = z.infer<typeof ImportJob>;\n\nexport type CreateImportJob = DbCreateInputOmit<ImportJob>;\nexport type UpdateImportJob = OmitStrict<\n DbUpdate<ImportJob>,\n \"designSystemId\" | \"createdByUserId\" | \"sourceIds\" | \"importContextId\"\n>;\n","import { z } from \"zod\";\n\nexport const Entity = z.object({\n id: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type Entity = z.infer<typeof Entity>;\n","import { z } from \"zod\";\n\nexport const ObjectMeta = z.object({\n name: z.string(),\n description: z.string().optional(),\n});\n\nexport type ObjectMeta = z.infer<typeof ObjectMeta>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../elements\";\nimport { nullishToOptional } from \"../../helpers\";\nimport { ImportWarning } from \"../import\";\n\nexport const FileStructureStats = z.object({\n frames: zeroNumberByDefault(),\n components: zeroNumberByDefault(),\n componentSets: zeroNumberByDefault(),\n});\n\nconst SourceImportSummaryByTokenTypeKey = DesignTokenType.or(\n // Backward compatibility\n z.enum([\"Measure\", \"Radius\", \"GenericToken\", \"Font\", \"Text\"])\n);\n\nexport const SourceImportSummaryByTokenType = z.record(SourceImportSummaryByTokenTypeKey, z.number());\n\nexport const SourceImportTokenSummary = z.object({\n tokensCreated: zeroNumberByDefault(),\n tokensUpdated: zeroNumberByDefault(),\n tokensDeleted: zeroNumberByDefault(),\n tokensCreatedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n tokensUpdatedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n tokensDeletedPerType: SourceImportSummaryByTokenType.nullish().transform(v => v ?? {}),\n});\n\nexport const SourceImportComponentSummary = z.object({\n componentsCreated: zeroNumberByDefault(),\n componentsUpdated: zeroNumberByDefault(),\n componentsDeleted: zeroNumberByDefault(),\n componentAssetsCreated: zeroNumberByDefault(),\n componentAssetsUpdated: zeroNumberByDefault(),\n componentAssetsDeleted: zeroNumberByDefault(),\n});\n\nexport const SourceImportFrameSummary = z.object({\n assetsInFile: nullishToOptional(FileStructureStats.optional()),\n invalidReferencesCount: nullishToOptional(z.number().optional()),\n});\n\nexport const SourceImportSummary = z.object({\n sourceId: nullishToOptional(z.string()),\n brandId: nullishToOptional(z.string()),\n versionId: nullishToOptional(z.string()),\n error: nullishToOptional(z.any()),\n isFailed: z.boolean(),\n warnings: z\n .array(ImportWarning)\n .nullish()\n .transform(v => v ?? []),\n\n ...SourceImportTokenSummary.shape,\n ...SourceImportComponentSummary.shape,\n ...FileStructureStats.shape,\n});\n\nexport type FileStructureStats = z.infer<typeof FileStructureStats>;\nexport type SourceImportSummaryByTokenType = z.infer<typeof SourceImportSummaryByTokenType>;\nexport type SourceImportTokenSummary = z.infer<typeof SourceImportTokenSummary>;\nexport type SourceImportComponentSummary = z.infer<typeof SourceImportComponentSummary>;\nexport type SourceImportFrameSummary = z.infer<typeof SourceImportFrameSummary>;\nexport type SourceImportSummary = z.infer<typeof SourceImportSummary>;\n\nfunction zeroNumberByDefault() {\n return z\n .number()\n .nullish()\n .transform(v => v ?? 0);\n}\n","import { ZodSchema, z } from \"zod\";\n\nexport const TokenDataAliasSchema = z.object({\n aliasTo: z\n .string()\n .optional()\n .nullable()\n .transform(v => v ?? undefined),\n});\n\nexport function tokenAliasOrValue<T extends ZodSchema>(value: T) {\n return TokenDataAliasSchema.extend({\n value: value\n .optional()\n .nullable()\n .transform(v => (v ?? undefined) as z.output<T> | undefined),\n });\n}\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\nimport { DimensionTokenData } from \"./dimension\";\n\nexport const BlurType = z.enum([\"Layer\", \"Background\"]);\n\nexport const BlurValue = z.object({\n type: BlurType,\n radius: DimensionTokenData,\n});\n\nexport const BlurTokenData = tokenAliasOrValue(BlurValue);\n\nexport type BlurType = z.infer<typeof BlurType>;\nexport type BlurValue = z.infer<typeof BlurValue>;\nexport type BlurTokenData = z.infer<typeof BlurTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const DimensionUnit = z.enum([\"Pixels\", \"Percent\", \"Rem\", \"Ms\", \"Raw\", \"Points\"]);\n\nexport const DimensionValue = z.object({\n unit: DimensionUnit,\n measure: z.number(),\n});\n\nexport const DimensionTokenData = tokenAliasOrValue(DimensionValue);\n\nexport type DimensionUnit = z.infer<typeof DimensionUnit>;\nexport type DimensionValue = z.infer<typeof DimensionValue>;\nexport type DimensionTokenData = z.infer<typeof DimensionTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderRadiusUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const BorderRadiusValue = z.object({\n unit: BorderRadiusUnit,\n measure: z.number(),\n});\n\nexport const BorderRadiusTokenData = tokenAliasOrValue(BorderRadiusValue);\n\nexport type BorderRadiusUnit = z.infer<typeof BorderRadiusUnit>;\nexport type BorderRadiusValue = z.infer<typeof BorderRadiusValue>;\nexport type BorderRadiusTokenData = z.infer<typeof BorderRadiusTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderWidthUnit = z.enum([\"Pixels\"]);\n\nexport const BorderWidthValue = z.object({\n unit: BorderWidthUnit,\n measure: z.number(),\n});\n\nexport const BorderWidthTokenData = tokenAliasOrValue(BorderWidthValue);\n\nexport type BorderWidthUnit = z.infer<typeof BorderWidthUnit>;\nexport type BorderWidthValue = z.infer<typeof BorderWidthValue>;\nexport type BorderWidthTokenData = z.infer<typeof BorderWidthTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { BorderWidthTokenData } from \"./border-width\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const BorderPosition = z.enum([\"Inside\", \"Center\", \"Outside\"]);\nexport const BorderStyle = z.enum([\"Dashed\", \"Dotted\", \"Solid\", \"Groove\"]);\n\nexport const BorderValue = z.object({\n color: ColorTokenData,\n width: BorderWidthTokenData,\n position: BorderPosition,\n style: BorderStyle.optional(),\n});\n\nexport const BorderTokenData = tokenAliasOrValue(BorderValue);\n\nexport type BorderPosition = z.infer<typeof BorderPosition>;\nexport type BorderStyle = z.infer<typeof BorderStyle>;\nexport type BorderValue = z.infer<typeof BorderValue>;\nexport type BorderTokenData = z.infer<typeof BorderTokenData>;\n","import { z } from \"zod\";\nimport { TokenDataAliasSchema, tokenAliasOrValue } from \"./base\";\nimport { OpacityTokenData } from \"./opacity\";\n\nexport const ColorValue = z.object({\n opacity: OpacityTokenData,\n color: z.string().or(TokenDataAliasSchema),\n});\n\nexport const ColorTokenData = tokenAliasOrValue(ColorValue);\n\nexport type ColorValue = z.infer<typeof ColorValue>;\nexport type ColorTokenData = z.infer<typeof ColorTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const OpacityValue = z.object({\n unit: z.enum([\"Raw\", \"Pixels\"]),\n measure: z.number(),\n});\n\nexport const OpacityTokenData = tokenAliasOrValue(OpacityValue);\n\nexport type OpacityValue = z.infer<typeof OpacityValue>;\nexport type OpacityTokenData = z.infer<typeof OpacityTokenData>;\n","import { z } from \"zod\";\n\nexport const ComponentElementData = z.object({\n value: z.object({\n thumbnailImage: z.object({\n value: z.object({\n url: z.string(),\n assetId: z.string(),\n }),\n }),\n\n svg: z\n .object({\n value: z.object({\n url: z.string(),\n assetId: z.string(),\n }),\n })\n .optional(),\n }),\n});\n\nexport type ComponentElementData = z.infer<typeof ComponentElementData>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../raw-element\";\nimport { DimensionTokenData } from \"./dimension\";\nimport { ColorTokenInlineData } from \"../../properties\";\nimport { Size } from \"../primitives\";\nimport { nullishToOptional } from \"../../../helpers\";\n\n//\n// Enums\n//\n\nexport const PageBlockCalloutType = z.enum([\"Info\", \"Success\", \"Warning\", \"Error\"]);\n\nexport const PageBlockTypeV1 = z.enum([\n \"Text\",\n \"Heading\",\n \"Code\",\n \"UnorderedList\",\n \"OrderedList\",\n \"Quote\",\n \"Callout\",\n \"Divider\",\n \"Image\",\n \"Embed\",\n \"Link\",\n \"Shortcuts\",\n \"FigmaEmbed\",\n \"YoutubeEmbed\",\n \"StorybookEmbed\",\n \"Token\",\n \"TokenGroup\",\n \"TokenList\",\n \"Component\",\n \"ComponentGroup\",\n \"Theme\",\n \"ComponentSandbox\",\n \"Custom\",\n \"FigmaFrames\",\n \"ComponentAssets\",\n \"RenderCode\",\n \"Tabs\",\n \"TabItem\",\n \"Table\",\n \"TableRow\",\n \"TableCell\",\n]);\n\nexport const PageBlockCodeLanguage = z.enum([\n \"Angular\",\n \"Bash\",\n \"C\",\n \"Cpp\",\n \"Csharp\",\n \"CSS\",\n \"Dart\",\n \"Handlebars\",\n \"HTML\",\n \"Java\",\n \"Javascript\",\n \"JSON\",\n \"ReactJSX\",\n \"ReactTSX\",\n \"Kotlin\",\n \"Lua\",\n \"Markdown\",\n \"ObjectiveC\",\n \"PHP\",\n \"Plain\",\n \"Python\",\n \"Ruby\",\n \"Rust\",\n \"Sass\",\n \"SCSS\",\n \"Svetle\",\n \"Swift\",\n \"Twig\",\n \"Typescript\",\n \"Vue\",\n \"XML\",\n \"YAML\",\n]);\n\nexport const PageBlockAlignment = z.enum([\"Left\", \"Center\", \"Stretch\", \"Right\"]);\nexport const PageBlockThemeType = z.enum([\"Override\", \"Comparison\"]);\nexport const PageBlockAssetType = z.enum([\"image\", \"figmaFrame\"]);\n\nexport const PageBlockTilesAlignment = z.enum([\"Center\", \"FrameHeight\"]);\n\nexport const PageBlockTilesLayout = z.enum([\"C8\", \"C7\", \"C6\", \"C5\", \"C4\", \"C3\", \"C2\", \"C1\", \"C1_75\"]);\n\n//\n// Support types\n//\n\nexport const PageBlockTheme = z.object({\n themeIds: z.array(z.string()),\n type: PageBlockThemeType,\n});\n\nexport const PageBlockUrlPreview = z.object({\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n thumbnailUrl: nullishToOptional(z.string()),\n});\n\nexport const PageBlockFrameOrigin = z.object({\n sourceFileName: nullishToOptional(z.string()),\n title: nullishToOptional(z.string()),\n previewUrl: nullishToOptional(z.string()),\n valid: nullishToOptional(z.boolean()),\n referenceId: nullishToOptional(z.string()),\n assetId: nullishToOptional(z.string()),\n assetScale: nullishToOptional(z.number()),\n width: nullishToOptional(z.number()),\n height: nullishToOptional(z.number()),\n});\n\nexport const PageBlockFrame = z.object({\n persistentId: z.string(),\n sourceId: z.string(),\n sourceFrameId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n origin: nullishToOptional(PageBlockFrameOrigin),\n});\n\nexport const PageBlockAsset = z.object({\n type: PageBlockAssetType,\n id: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n figmaFrame: nullishToOptional(PageBlockFrame),\n});\n\nexport const PageBlockLinkPreview = z.object({\n title: nullishToOptional(z.string()),\n valid: nullishToOptional(z.boolean()),\n});\n\nexport const PageBlockShortcut = z.object({\n persistentId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n asset: nullishToOptional(PageBlockAsset),\n documentationItemId: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n urlPreview: nullishToOptional(PageBlockUrlPreview),\n documentationItemPreview: nullishToOptional(PageBlockLinkPreview),\n});\n\nexport const PageBlockCustomBlockPropertyImageValue = z.object({\n asset: nullishToOptional(PageBlockAsset),\n assetId: nullishToOptional(z.string()),\n assetUrl: nullishToOptional(z.string()),\n});\n\nexport const PageBlockCustomBlockPropertyValue = z.object({\n key: z.string(),\n value: z.any(),\n\n // TODO Artem: for some reason there are cases when there's an array here in the DB\n // e.g. element id 67451 in the dev db\n\n // value: z\n // .boolean()\n // .or(z.number())\n // .or(z.string())\n // .or(ColorTokenData)\n // .or(TypographyTokenData)\n // .or(PageBlockCustomBlockPropertyImageValue),\n});\n\nexport const PageBlockFigmaFrameProperties = z.object({\n alignment: PageBlockTilesAlignment,\n layout: PageBlockTilesLayout,\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n showTitles: z.boolean(),\n});\n\nexport const PageBlockRenderCodeProperties = z.object({\n showCode: z.boolean(),\n});\n\nexport const PageBlockAssetComponent = z.object({\n persistentId: z.string(),\n componentAssetId: z.string(),\n title: nullishToOptional(z.string()),\n description: nullishToOptional(z.string()),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n});\n\nexport const PageBlockTableColumn = z.object({\n id: z.string(),\n width: DimensionTokenData,\n});\n\nexport const PageBlockTableProperties = z.object({\n showBorders: z.boolean(),\n showHeaderRow: z.boolean(),\n showHeaderColumn: z.boolean(),\n columns: z.array(PageBlockTableColumn),\n});\n\nexport const PageBlockTextSpanAttributeType = z.enum([\"Bold\", \"Italic\", \"Link\", \"Strikethrough\", \"Code\"]);\n\nexport const PageBlockTextSpanAttribute = z.object({\n type: PageBlockTextSpanAttributeType,\n link: nullishToOptional(z.string()),\n documentationItemId: nullishToOptional(z.string()),\n openInNewWindow: nullishToOptional(z.boolean()),\n});\n\nexport const PageBlockTextSpan = z.object({\n text: z.string(),\n attributes: z.array(PageBlockTextSpanAttribute),\n});\n\nexport const PageBlockText = z.object({\n spans: z.array(PageBlockTextSpan),\n});\n\nexport type PageBlockTypeV1 = z.infer<typeof PageBlockTypeV1>;\nexport type PageBlockTextSpanAttribute = z.infer<typeof PageBlockTextSpanAttribute>;\nexport type PageBlockTextSpan = z.infer<typeof PageBlockTextSpan>;\nexport type PageBlockText = z.infer<typeof PageBlockText>;\nexport type PageBlockFrame = z.infer<typeof PageBlockFrame>;\nexport type PageBlockFrameOrigin = z.infer<typeof PageBlockFrameOrigin>;\n\n//\n// Block\n//\n\nconst PageBlockBaseV1 = z.object({\n persistentId: z.string(),\n type: PageBlockTypeV1,\n\n // Element linking\n designObjectId: nullishToOptional(z.string()),\n designObjectIds: nullishToOptional(z.array(z.string())),\n tokenType: nullishToOptional(DesignTokenType.or(z.literal(\"Font\"))),\n showNestedGroups: nullishToOptional(z.boolean()),\n brandId: nullishToOptional(z.string()),\n\n // Rich text\n text: nullishToOptional(PageBlockText),\n caption: nullishToOptional(z.string()),\n headingType: nullishToOptional(z.number().min(1).max(3)),\n codeLanguage: nullishToOptional(PageBlockCodeLanguage),\n calloutType: nullishToOptional(PageBlockCalloutType),\n urlInput: nullishToOptional(z.string()),\n url: nullishToOptional(z.string()),\n urlPreview: nullishToOptional(PageBlockUrlPreview),\n\n // Image\n asset: nullishToOptional(PageBlockAsset),\n alignment: nullishToOptional(PageBlockAlignment),\n\n // Shortcuts block\n shortcuts: nullishToOptional(z.array(PageBlockShortcut)),\n\n // Custom blocks\n customBlockKey: nullishToOptional(z.string()),\n customBlockProperties: nullishToOptional(z.array(PageBlockCustomBlockPropertyValue)),\n variantKey: nullishToOptional(z.string()),\n\n // Figma frames\n figmaFrameProperties: nullishToOptional(PageBlockFigmaFrameProperties),\n figmaFrames: nullishToOptional(z.array(PageBlockFrame)),\n\n // Generic\n size: nullishToOptional(Size),\n backgroundColor: nullishToOptional(ColorTokenInlineData),\n\n // Render code\n renderCodeProperties: nullishToOptional(PageBlockRenderCodeProperties),\n\n // Component assets\n componentAssets: nullishToOptional(z.array(PageBlockAssetComponent)),\n\n // Tables\n tableProperties: nullishToOptional(PageBlockTableProperties),\n columnId: nullishToOptional(z.string()),\n\n // Token spreadsheet\n theme: nullishToOptional(PageBlockTheme),\n blacklistedElementProperties: nullishToOptional(z.array(z.string())),\n\n // Arbitrary\n userMetadata: nullishToOptional(z.string()),\n});\n\ntype PageBlockV1Input = z.input<typeof PageBlockBaseV1> & {\n children: PageBlockV1Input[] | null | undefined;\n};\n\nexport const PageBlockV1: z.ZodType<PageBlockV1, z.ZodTypeDef, PageBlockV1Input> = PageBlockBaseV1.extend({\n children: z.lazy(\n () =>\n PageBlockV1.array()\n .nullish()\n .transform(t => t ?? []) as z.ZodType<PageBlockV1[], z.ZodTypeDef, PageBlockV1Input[]>\n ),\n});\n\nexport type PageBlockV1 = z.infer<typeof PageBlockBaseV1> & {\n children: PageBlockV1[];\n};\n\n//\n// Utility methods\n//\n\nexport function traversePageBlocksV1(blocks: PageBlockV1[], action: (block: PageBlockV1) => void) {\n for (const block of blocks) {\n action(block);\n traversePageBlocksV1(block.children, action);\n }\n}\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { ObjectMeta } from \"../../common\";\n\nexport type CreateDesignElement = DbCreateInputOmit<DesignElement>;\nexport type UpdateDesignElement = OmitStrict<\n DbUpdate<DesignElement>,\n \"brandPersistentId\" | \"childType\" | \"designSystemVersionId\" | \"shortPersistentId\" | \"type\"\n>;\n\n//\n// Token types\n//\n\nexport const DesignTokenType = z.enum([\n \"Color\",\n \"Border\",\n \"Gradient\",\n \"Shadow\",\n \"Dimension\",\n \"Duration\",\n \"Size\",\n \"Space\",\n \"Opacity\",\n \"FontSize\",\n \"LineHeight\",\n \"LetterSpacing\",\n \"ParagraphSpacing\",\n \"BorderWidth\",\n \"BorderRadius\",\n \"Duration\",\n \"ZIndex\",\n \"Image\",\n \"String\",\n \"ProductCopy\",\n \"FontFamily\",\n \"FontWeight\",\n \"TextDecoration\",\n \"TextCase\",\n \"Visibility\",\n \"Typography\",\n \"Blur\",\n \"Font\",\n]);\n\nexport const tokenElementTypes: ReadonlyArray<DesignTokenType> = [...DesignTokenType.options.filter(v => v !== \"Font\")];\n\nexport type DesignTokenType = z.infer<typeof DesignTokenType>;\n\n//\n// Non-token types\n//\n\nexport const DesignElementType = DesignTokenType.or(\n z.enum([\n \"Component\",\n \"Theme\",\n \"Documentation\",\n \"DocumentationPage\",\n \"DesignSystemComponent\",\n \"ElementGroup\",\n \"FigmaNodeStructure\",\n \"FigmaNodeReference\",\n \"PageBlock\",\n ])\n);\n\nexport type DesignElementType = z.infer<typeof DesignElementType>;\n\nexport function isTokenType(type: DesignElementType): type is DesignTokenType {\n return DesignTokenType.safeParse(type).success;\n}\n\n//\n// Element category\n//\n\nexport const DesignElementCategory = z.enum([\n \"Token\",\n \"Component\",\n \"DesignSystemComponent\",\n \"DocumentationPage\",\n \"Theme\",\n \"PageBlock\",\n]);\n\nexport type DesignElementCategory = z.infer<typeof DesignElementCategory>;\n\n// Elements\n\nexport const DesignSystemElementExportProps = z.object({\n isAsset: z\n .boolean()\n .nullish()\n .transform(v => v ?? false),\n\n codeName: z.string().nullish(),\n});\n\nexport type DesignSystemElementExportProps = z.infer<typeof DesignSystemElementExportProps>;\n\nexport const ShallowDesignElement = z.object({\n id: z.string(),\n persistentId: z.string(),\n designSystemVersionId: z.string(),\n type: DesignElementType,\n brandPersistentId: z.string().optional(),\n parentPersistentId: z.string().optional(),\n shortPersistentId: z.string().optional(),\n sortOrder: z.number(),\n});\n\nexport const DesignElement = ShallowDesignElement.extend({\n meta: ObjectMeta,\n childType: DesignElementType.optional(),\n slug: z.string().optional(),\n userSlug: z.string().optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\n exportProperties: DesignSystemElementExportProps.optional(),\n data: z.any(), // TODO this should be an object, not any.\n origin: z.any().optional(), // TODO object, not any.\n});\n\nexport type ShallowDesignElement = z.infer<typeof ShallowDesignElement>;\nexport type DesignElement = z.infer<typeof DesignElement>;\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate } from \"../../helpers\";\n\nexport const ElementPropertyType = z.enum([\"Text\", \"Number\", \"Boolean\", \"Select\", \"Generic\", \"Link\", \"URL\"]);\nexport const ElementPropertyTargetType = z.enum([\"Token\", \"Component\", \"DocumentationPage\"]);\nexport const ElementPropertyLinkType = z.enum([\"FigmaComponent\", \"DocumentationPage\"]);\n\nexport const ColorTokenInlineData = z.object({\n value: z.string(),\n});\n\nexport const ElementPropertyDefinitionOption = z.object({\n id: z.string(),\n name: z.string(),\n backgroundColor: ColorTokenInlineData.optional(),\n});\n\nexport const ElementPropertyDefinition = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n persistentId: z.string(),\n name: z.string(),\n codeName: z.string(),\n description: z.string(),\n type: ElementPropertyType,\n targetElementType: ElementPropertyTargetType,\n options: z.array(ElementPropertyDefinitionOption).nullish(),\n linkElementType: ElementPropertyLinkType.nullish(),\n});\n\nexport type ElementPropertyType = z.infer<typeof ElementPropertyType>;\nexport type ElementPropertyTargetType = z.infer<typeof ElementPropertyTargetType>;\nexport type ElementPropertyLinkType = z.infer<typeof ElementPropertyLinkType>;\nexport type ColorTokenInlineData = z.infer<typeof ColorTokenInlineData>;\nexport type ElementPropertyDefinitionOption = z.infer<typeof ElementPropertyDefinitionOption>;\nexport type ElementPropertyDefinition = z.infer<typeof ElementPropertyDefinition>;\n\nexport type CreateElementPropertyDefinition = DbCreateInputOmit<ElementPropertyDefinition>;\nexport type UpdateElementPropertyDefinition = DbUpdate<ElementPropertyDefinition>;\n\nexport type ElementPropertyDefinitionDiff = {\n toCreate: CreateElementPropertyDefinition[];\n toUpdate: UpdateElementPropertyDefinition[];\n};\n","import { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const ElementPropertyValue = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n targetElementPersistentId: z.string(),\n definitionPersistentId: z.string(),\n stringValue: z.string().nullish(),\n numberValue: z.number().nullish(),\n booleanValue: z.boolean().nullish(),\n referenceValue: z.string().nullish(),\n referenceValuePreview: z.string().nullish(),\n});\n\nexport type ElementPropertyValue = z.infer<typeof ElementPropertyValue>;\n\nexport type CreateElementPropertyValue = DbCreateInputOmit<ElementPropertyValue>;\nexport type UpdateElementPropertyValue = OmitStrict<\n DbUpdate<ElementPropertyValue>,\n \"designSystemVersionId\" | \"definitionPersistentId\" | \"targetElementPersistentId\"\n>;\n\nexport type ElementPropertyValueDiff = {\n toCreate: CreateElementPropertyValue[];\n toUpdate: UpdateElementPropertyValue[];\n};\n","import { z } from \"zod\";\n\nexport const Point2D = z.object({\n x: z.number(),\n y: z.number(),\n});\n\nexport type Point2D = z.infer<typeof Point2D>;\n","import { z } from \"zod\";\n\nconst nullSize = { height: -1, width: -1 };\n\nfunction isNullSize(size: Size): boolean {\n return size.height === nullSize.height && size.width === nullSize.width;\n}\n\nexport const Size = z.object({\n width: z\n .number()\n .nullish()\n .transform(v => v ?? nullSize.width),\n\n height: z\n .number()\n .nullish()\n .transform(v => v ?? nullSize.height),\n});\n\nexport const SizeOrUndefined = Size.optional().transform(v => {\n if (!v) return undefined;\n if (isNullSize(v)) return undefined;\n\n return v;\n});\n\nexport type Size = z.infer<typeof Size>;\n","export type DbCreateInputOmit<T> = Omit<T, \"id\" | \"createdAt\" | \"updatedAt\">;\n\nexport type DbUpdateInputOmit<T> = Omit<T, \"createdAt\" | \"updatedAt\" | \"persistentId\">;\n\nexport type DbUpdate<T extends { id: string }> = Partial<OptionalToNullable<DbUpdateInputOmit<Omit<T, \"id\">>>> &\n Pick<T, \"id\">;\n\ntype PickOptional<T> = {\n [P in keyof T as undefined extends T[P] ? P : never]: T[P];\n};\n\ntype PickNotOptional<T> = {\n [P in keyof T as undefined extends T[P] ? never : P]: T[P];\n};\n\nexport type OptionalToNullable<T> = {\n [K in keyof PickOptional<T>]-?: Exclude<T[K], undefined> | null;\n} & {\n [K in keyof PickNotOptional<T>]: T[K];\n};\n\nexport function zodCreateInputOmit() {\n return {\n id: true,\n createdAt: true,\n updatedAt: true,\n } as const;\n}\n\nexport function zodUpdateInputOmit() {\n return {\n id: true,\n createdAt: true,\n updatedAt: true,\n persistentId: true,\n } as const;\n}\n","import { ZodType, z } from \"zod\";\n\n/**\n * Allows both null and undefined as input values in addition to the actual value,\n * but coerces them both to undefined.\n */\nexport function nullishToOptional<T>(type: ZodType<T>) {\n return type.nullish().transform(t => t ?? undefined);\n}\n","import { z } from \"zod\";\nimport { ColorValue } from \"./color\";\nimport { PageBlockCalloutType } from \"./documentation-block-v1\";\n\n//\n// Enums\n//\n\nexport const PageBlockLinkType = z.enum([\"Page\", \"PageHeading\", \"Group\", \"Url\"]);\n\nexport type PageBlockLinkType = z.infer<typeof PageBlockLinkType>;\n\n//\n// Definitions\n//\n\nexport const PageBlockAppearanceV2 = z.object({\n itemBackgroundColor: ColorValue,\n});\n\nexport const PageBlockItemPropertyValue = z.object({\n value: z.any(),\n calloutType: PageBlockCalloutType.optional(),\n});\n\nexport const PageBlockLinkV2 = z.object({\n type: PageBlockLinkType,\n pageId: z.string().optional(),\n pageHeadingId: z.string().optional(),\n groupId: z.string().optional(),\n url: z.string().optional(),\n openInNewTab: z.boolean().optional(),\n});\n\nexport const PageBlockItemV2 = z.object({\n id: z.string(),\n linksTo: PageBlockLinkV2.optional(),\n props: z.record(PageBlockItemPropertyValue),\n});\n\nexport const PageBlockDataV2 = z.object({\n packageId: z.string(),\n variantId: z.string().optional(),\n indentLevel: z.number(),\n appearance: PageBlockAppearanceV2.optional(),\n items: z.array(PageBlockItemV2),\n});\n\nexport type PageBlockAppearanceV2 = z.infer<typeof PageBlockAppearanceV2>;\nexport type PageBlockItemPropertyValue = z.infer<typeof PageBlockItemPropertyValue>;\nexport type PageBlockLinkV2 = z.infer<typeof PageBlockLinkV2>;\nexport type PageBlockItemV2 = z.infer<typeof PageBlockItemV2>;\nexport type PageBlockDataV2 = z.infer<typeof PageBlockDataV2>;\n","import { z } from \"zod\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\nimport { PageBlockV1 } from \"./documentation-block-v1\";\nimport { nullishToOptional } from \"../../../helpers\";\n\nexport const DocumentationPageDataV1 = z.object({\n blocks: z.array(PageBlockV1),\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const DocumentationPageElementDataV1 = z.object({\n value: DocumentationPageDataV1,\n});\n","import { z } from \"zod\";\n\nexport const DocumentationItemConfiguration = z.object({\n showSidebar: z.boolean(),\n header: z.any(),\n});\n\nexport type DocumentationItemConfiguration = z.infer<typeof DocumentationItemConfiguration>;\n","import { z } from \"zod\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\nimport { nullishToOptional } from \"../../../helpers\";\n\nexport const DocumentationPageDataV2 = z.object({\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const DocumentationPageElementDataV2 = z.object({\n value: DocumentationPageDataV2,\n});\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const DurationUnit = z.enum([\"Ms\"]);\n\nexport const DurationValue = z.object({\n unit: DurationUnit,\n measure: z.number(),\n});\n\nexport const DurationTokenData = tokenAliasOrValue(DurationValue);\n\nexport type DurationUnit = z.infer<typeof DurationUnit>;\nexport type DurationValue = z.infer<typeof DurationValue>;\nexport type DurationTokenData = z.infer<typeof DurationTokenData>;\n","import { ZodTypeDef, z } from \"zod\";\nimport { Size, SizeOrUndefined } from \"../primitives/size\";\n\nexport const FigmaFileStructureNodeType = z.enum([\"DOCUMENT\", \"CANVAS\", \"FRAME\", \"COMPONENT\", \"COMPONENT_SET\"]);\n\nexport const FigmaFileStructureNodeBase = z.object({\n id: z.string(),\n name: z.string(),\n type: FigmaFileStructureNodeType,\n size: SizeOrUndefined,\n parentComponentSetId: z.string().optional(),\n});\n\nexport const FigmaFileStructureNode: z.ZodType<FigmaFileStructureNode, ZodTypeDef, FigmaFileStructureNodeBaseInput> =\n FigmaFileStructureNodeBase.extend({\n children: z.lazy(() => FigmaFileStructureNode.array()),\n });\n\ntype FigmaFileStructureNodeBaseInput = z.input<typeof FigmaFileStructureNodeBase> & {\n children: FigmaFileStructureNodeBaseInput[];\n};\n\nexport const FigmaFileStructureStatistics = z.object({\n frames: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n components: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n componentSets: z\n .number()\n .nullable()\n .optional()\n .transform(v => v ?? 0),\n});\n\nexport const FigmaFileStructureElementData = z.object({\n value: z.object({\n structure: FigmaFileStructureNode,\n assetsInFile: FigmaFileStructureStatistics,\n }),\n});\n\nexport type FigmaFileStructureNodeBase = z.infer<typeof FigmaFileStructureNodeBase>;\nexport type FigmaFileStructureNodeType = z.infer<typeof FigmaFileStructureStatistics>;\nexport type FigmaFileStructureNode = z.infer<typeof FigmaFileStructureNodeBase> & {\n children: FigmaFileStructureNode[];\n};\nexport type FigmaFileStructureStatistics = z.infer<typeof FigmaFileStructureStatistics>;\nexport type FigmaFileStructureElementData = z.infer<typeof FigmaFileStructureElementData>;\n\nexport function figmaFileStructureToMap(root: FigmaFileStructureNode): Map<string, FigmaFileStructureNode> {\n const map = new Map<string, FigmaFileStructureNode>();\n recursiveFigmaFileStructureToMap(root, map);\n return map;\n}\n\nfunction recursiveFigmaFileStructureToMap(node: FigmaFileStructureNode, map: Map<string, FigmaFileStructureNode>) {\n map.set(node.id, node);\n for (const child of node.children) recursiveFigmaFileStructureToMap(child, map);\n}\n","import { z } from \"zod\";\n\nexport const FigmaNodeReferenceData = z.object({\n structureElementId: z.string(),\n nodeId: z.string(),\n fileId: z.string().optional(),\n valid: z.boolean(),\n assetId: z.string().optional(),\n assetScale: z.number().optional(),\n assetWidth: z.number().optional(),\n assetHeight: z.number().optional(),\n assetUrl: z.string().optional(),\n});\n\nexport const FigmaNodeReferenceElementData = z.object({\n value: FigmaNodeReferenceData,\n});\n\nexport type FigmaNodeReferenceData = z.infer<typeof FigmaNodeReferenceData>;\nexport type FigmaNodeReferenceElementData = z.infer<typeof FigmaNodeReferenceElementData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontFamilyValue = z.string();\nexport const FontFamilyTokenData = tokenAliasOrValue(FontFamilyValue);\n\nexport type FontFamilyValue = z.infer<typeof FontFamilyValue>;\nexport type FontFamilyTokenData = z.infer<typeof FontFamilyTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontSizeUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const FontSizeValue = z.object({\n unit: FontSizeUnit,\n measure: z.number(),\n});\n\nexport const FontSizeTokenData = tokenAliasOrValue(FontSizeValue);\n\nexport type FontSizeUnit = z.infer<typeof FontSizeUnit>;\nexport type FontSizeValue = z.infer<typeof FontSizeValue>;\nexport type FontSizeTokenData = z.infer<typeof FontSizeTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const FontWeightValue = z.string();\nexport const FontWeightTokenData = tokenAliasOrValue(FontWeightValue);\n\nexport type FontWeightValue = z.infer<typeof FontWeightValue>;\nexport type FontWeightTokenData = z.infer<typeof FontWeightTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { tokenAliasOrValue } from \"./base\";\nimport { nullishToOptional } from \"../../../helpers\";\nimport { Point2D } from \"../primitives\";\n\nexport const GradientType = z.enum([\"Linear\", \"Radial\", \"Angular\"]);\n\nexport const GradientStop = z.object({\n position: z.number(),\n color: ColorTokenData,\n});\n\nexport const GradientLayerValue = z.object({\n from: Point2D,\n to: Point2D,\n type: GradientType,\n aspectRatio: nullishToOptional(z.number()), // z.number(),\n stops: z.array(GradientStop).min(2),\n});\n\nexport const GradientLayerData = tokenAliasOrValue(GradientLayerValue);\n\nexport const GradientTokenValue = z.array(GradientLayerData);\nexport const GradientTokenData = tokenAliasOrValue(GradientTokenValue);\n\nexport type GradientType = z.infer<typeof GradientType>;\nexport type GradientStop = z.infer<typeof GradientStop>;\nexport type GradientLayerValue = z.infer<typeof GradientLayerValue>;\nexport type GradientLayerData = z.infer<typeof GradientLayerData>;\nexport type GradientTokenValue = z.infer<typeof GradientTokenValue>;\nexport type GradientTokenData = z.infer<typeof GradientTokenData>;\n","import { z } from \"zod\";\nimport { nullishToOptional } from \"../../../helpers\";\nimport { DocumentationItemConfiguration } from \"./documentation\";\n\nexport const DocumentationGroupBehavior = z.enum([\"Group\", \"Tabs\"]);\n\nexport const ElementGroupData = z.object({\n behavior: nullishToOptional(DocumentationGroupBehavior.optional()),\n configuration: nullishToOptional(DocumentationItemConfiguration),\n});\n\nexport const ElementGroupElementData = z.object({\n value: ElementGroupData.optional(),\n});\n\nexport type DocumentationGroupBehavior = z.infer<typeof DocumentationGroupBehavior>;\nexport type ElementGroupData = z.infer<typeof ElementGroupData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const LetterSpacingUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const LetterSpacingValue = z.object({\n unit: LetterSpacingUnit,\n measure: z.number(),\n});\n\nexport const LetterSpacingTokenData = tokenAliasOrValue(LetterSpacingValue);\n\nexport type LetterSpacingUnit = z.infer<typeof LetterSpacingUnit>;\nexport type LetterSpacingValue = z.infer<typeof LetterSpacingValue>;\nexport type LetterSpacingTokenData = z.infer<typeof LetterSpacingTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const LineHeightUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\", \"Raw\"]);\n\nexport const LineHeightValue = z.object({\n unit: LineHeightUnit,\n measure: z.number(),\n});\n\nexport const LineHeightTokenData = tokenAliasOrValue(LineHeightValue);\n\nexport type LineHeightUnit = z.infer<typeof LineHeightUnit>;\nexport type LineHeightValue = z.infer<typeof LineHeightValue>;\nexport type LineHeightTokenData = z.infer<typeof LineHeightTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ParagraphIndentUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const ParagraphIndentValue = z.object({\n unit: ParagraphIndentUnit,\n measure: z.number(),\n});\n\nexport const ParagraphIndentTokenData = tokenAliasOrValue(ParagraphIndentValue);\n\nexport type ParagraphIndentUnit = z.infer<typeof ParagraphIndentUnit>;\nexport type ParagraphIndentValue = z.infer<typeof ParagraphIndentValue>;\nexport type ParagraphIndentTokenData = z.infer<typeof ParagraphIndentTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ParagraphSpacingUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const ParagraphSpacingValue = z.object({\n unit: ParagraphSpacingUnit,\n measure: z.number(),\n});\n\nexport const ParagraphSpacingTokenData = tokenAliasOrValue(ParagraphSpacingValue);\n\nexport type ParagraphSpacingUnit = z.infer<typeof ParagraphSpacingUnit>;\nexport type ParagraphSpacingValue = z.infer<typeof ParagraphSpacingValue>;\nexport type ParagraphSpacingTokenData = z.infer<typeof ParagraphSpacingTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ProductCopyValue = z.string();\nexport const ProductCopyTokenData = tokenAliasOrValue(ProductCopyValue);\n\nexport type ProductCopyValue = z.infer<typeof ProductCopyValue>;\nexport type ProductCopyTokenData = z.infer<typeof ProductCopyTokenData>;\n","import { z } from \"zod\";\nimport { ColorTokenData } from \"./color\";\nimport { OpacityTokenData } from \"./opacity\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ShadowType = z.enum([\"Drop\", \"Inner\"]);\n\nexport const ShadowLayerValue = z.object({\n color: ColorTokenData,\n x: z.number(),\n y: z.number(),\n radius: z.number(),\n spread: z.number(),\n opacity: OpacityTokenData,\n type: ShadowType,\n});\n\nconst ShadowTokenDataBase = tokenAliasOrValue(ShadowLayerValue);\nexport const ShadowTokenData = tokenAliasOrValue(z.array(ShadowTokenDataBase));\n\nexport type ShadowType = z.infer<typeof ShadowType>;\nexport type ShadowLayerValue = z.infer<typeof ShadowLayerValue>;\nexport type ShadowTokenData = z.infer<typeof ShadowTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const SizeUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const SizeValue = z.object({\n unit: SizeUnit,\n measure: z.number(),\n});\n\nexport const SizeTokenData = tokenAliasOrValue(SizeValue);\n\nexport type SizeUnit = z.infer<typeof SizeUnit>;\nexport type SizeValue = z.infer<typeof SizeValue>;\nexport type SizeTokenData = z.infer<typeof SizeTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const SpaceUnit = z.enum([\"Pixels\", \"Rem\", \"Percent\"]);\n\nexport const SpaceValue = z.object({\n unit: SpaceUnit,\n measure: z.number(),\n});\n\nexport const SpaceTokenData = tokenAliasOrValue(SpaceValue);\n\nexport type SpaceUnit = z.infer<typeof SpaceUnit>;\nexport type SpaceValue = z.infer<typeof SpaceValue>;\nexport type SpaceTokenData = z.infer<typeof SpaceTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const StringValue = z.string();\nexport const StringTokenData = tokenAliasOrValue(StringValue);\n\nexport type StringValue = z.infer<typeof StringValue>;\nexport type StringTokenData = z.infer<typeof StringTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TextCase = z.enum([\"Original\", \"Upper\", \"Lower\", \"Camel\", \"SmallCaps\"]);\nexport const TextCaseValue = TextCase;\nexport const TextCaseTokenData = tokenAliasOrValue(TextCaseValue);\n\nexport type TextCase = z.infer<typeof TextCase>;\nexport type TextCaseValue = z.infer<typeof TextCaseValue>;\nexport type TextCaseTokenData = z.infer<typeof TextCaseTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TextDecoration = z.enum([\"None\", \"Underline\", \"Strikethrough\"]);\nexport const TextDecorationValue = TextDecoration;\nexport const TextDecorationTokenData = tokenAliasOrValue(TextDecorationValue);\n\nexport type TextDecoration = z.infer<typeof TextDecoration>;\nexport type TextDecorationValue = z.infer<typeof TextDecorationValue>;\nexport type TextDecorationTokenData = z.infer<typeof TextDecorationTokenData>;\n","import { z } from \"zod\";\nimport { FontSizeTokenData } from \"./font-size\";\nimport { FontFamilyTokenData } from \"./font-family\";\nimport { FontWeightTokenData } from \"./font-weight\";\nimport { TextDecorationTokenData } from \"./text-decoration\";\nimport { TextCaseTokenData } from \"./text-case\";\nimport { LetterSpacingTokenData } from \"./letter-spacing\";\nimport { LineHeightTokenData } from \"./line-height\";\nimport { ParagraphIndentTokenData } from \"./paragraph-indent\";\nimport { ParagraphSpacingTokenData } from \"./paragraph-spacing\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const TypographyValue = z.object({\n fontSize: FontSizeTokenData,\n fontFamily: FontFamilyTokenData,\n fontWeight: FontWeightTokenData,\n textDecoration: TextDecorationTokenData,\n textCase: TextCaseTokenData,\n letterSpacing: LetterSpacingTokenData.optional(),\n lineHeight: LineHeightTokenData.optional(),\n paragraphIndent: ParagraphIndentTokenData.optional(),\n paragraphSpacing: ParagraphSpacingTokenData.optional(),\n});\n\nexport const TypographyTokenData = tokenAliasOrValue(TypographyValue);\n\nexport type TypographyValue = z.infer<typeof TypographyValue>;\nexport type TypographyTokenData = z.infer<typeof TypographyTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const Visibility = z.enum([\"Hidden\", \"Visible\"]);\nexport const VisibilityValue = Visibility;\nexport const VisibilityTokenData = tokenAliasOrValue(VisibilityValue);\n\nexport type Visibility = z.infer<typeof Visibility>;\nexport type VisibilityValue = z.infer<typeof VisibilityValue>;\nexport type VisibilityTokenData = z.infer<typeof VisibilityTokenData>;\n","import { z } from \"zod\";\nimport { tokenAliasOrValue } from \"./base\";\n\nexport const ZIndexUnit = z.enum([\"Raw\"]);\n\nexport const ZIndexValue = z.object({\n unit: ZIndexUnit,\n measure: z.number(),\n});\n\nexport const ZIndexTokenData = tokenAliasOrValue(ZIndexValue);\n\nexport type ZIndexUnit = z.infer<typeof ZIndexUnit>;\nexport type ZIndexValue = z.infer<typeof ZIndexValue>;\nexport type ZIndexTokenData = z.infer<typeof ZIndexTokenData>;\n","import { z } from \"zod\";\nimport { ObjectMeta } from \"../../common\";\n\nexport const DesignElementOrigin = z.object({\n id: z.string(),\n sourceId: z.string(),\n name: z.string(),\n});\n\nexport const DesignElementBase = z.object({\n id: z.string(),\n persistentId: z.string(),\n meta: ObjectMeta,\n designSystemVersionId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport const DesignElementImportedBase = DesignElementBase.extend({\n origin: DesignElementOrigin,\n});\n\nexport const DesignElementGroupablePart = z.object({\n parentPersistentId: z.string().optional(),\n sortOrder: z.number(),\n});\n\nexport const DesignElementGroupableBase = DesignElementBase.extend(DesignElementGroupablePart.shape);\n\nexport const DesignElementGroupableRequiredPart = DesignElementGroupablePart.extend({\n parentPersistentId: z.string(),\n});\n\nexport const DesignElementBrandedPart = z.object({\n brandPersistentId: z.string(),\n});\n\nexport const DesignElementSlugPart = z.object({\n slug: z.string().optional(),\n userSlug: z.string().optional(),\n});\n\nexport type DesignElementOrigin = z.infer<typeof DesignElementOrigin>;\nexport type DesignElementBase = z.infer<typeof DesignElementBase>;\nexport type DesignElementGroupablePart = z.infer<typeof DesignElementGroupablePart>;\nexport type DesignElementGroupableBase = z.infer<typeof DesignElementGroupableBase>;\nexport type DesignElementGroupableRequiredPart = z.infer<typeof DesignElementGroupableRequiredPart>;\nexport type DesignElementBrandedPart = z.infer<typeof DesignElementBrandedPart>;\nexport type DesignElementSlugPart = z.infer<typeof DesignElementSlugPart>;\n","import { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { z } from \"zod\";\nimport {\n DesignElementBase,\n DesignElementBrandedPart,\n DesignElementGroupableRequiredPart,\n DesignElementOrigin,\n} from \"./base\";\n\nexport const ComponentOriginPart = z.object({\n nodeId: z.string().optional(),\n width: z.number().optional(),\n height: z.number().optional(),\n});\n\nconst ComponentAsset = z.object({\n assetId: z.string(),\n assetPath: z.string(),\n});\n\nexport const ComponentOrigin = DesignElementOrigin.extend(ComponentOriginPart.shape);\n\nexport const Component = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementBrandedPart.shape)\n .extend({\n origin: ComponentOrigin.optional(),\n thumbnail: ComponentAsset,\n svg: ComponentAsset.optional(),\n isAsset: z.boolean(),\n });\n\nexport type ComponentAsset = z.infer<typeof ComponentAsset>;\nexport type Component = z.infer<typeof Component>;\nexport type ComponentOrigin = z.infer<typeof ComponentOrigin>;\nexport type ImportedComponent = OmitStrict<Component, \"origin\"> & { origin: ComponentOrigin };\n\nexport function isImportedComponent(component: Component): component is ImportedComponent {\n return !!component.origin;\n}\n\nexport type CreateComponent = DbCreateInputOmit<Component>;\nexport type UpdateComponent = OmitStrict<DbUpdate<Component>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type ComponentDiff = {\n toCreate: CreateComponent[];\n toUpdate: UpdateComponent[];\n toDelete: Component[\"id\"][];\n};\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart, DesignElementSlugPart } from \"./base\";\nimport { DocumentationPageDataV1 } from \"./data\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const DocumentationPageV1 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend({\n shortPersistentId: z.string(),\n data: DocumentationPageDataV1,\n });\n\nexport type DocumentationPageV1 = z.infer<typeof DocumentationPageV1>;\n\nexport type CreateDocumentationPageV1 = DbCreateInputOmit<DocumentationPageV1>;\nexport type UpdateDocumentationPageV1 = OmitStrict<DbUpdate<DocumentationPageV1>, \"designSystemVersionId\">;\n\nexport const DocumentationPageDTOV1 = DocumentationPageV1.omit({\n data: true,\n meta: true,\n parentPersistentId: true,\n sortOrder: true,\n})\n .extend(DocumentationPageV1.shape.data.shape)\n .extend({\n title: z.string(),\n path: z.string(),\n });\n\nexport type DocumentationPageDTOV1 = z.infer<typeof DocumentationPageDTOV1>;\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart, DesignElementSlugPart } from \"./base\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\nimport { DocumentationPageDataV2 } from \"./data/documentation-page-v2\";\n\nexport const DocumentationPageV2 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend({\n shortPersistentId: z.string(),\n data: DocumentationPageDataV2,\n });\n\nexport type DocumentationPageV2 = z.infer<typeof DocumentationPageV2>;\n\nexport type CreateDocumentationPageV2 = DbCreateInputOmit<DocumentationPageV2>;\nexport type UpdateDocumentationPageV2 = OmitStrict<DbUpdate<DocumentationPageV2>, \"designSystemVersionId\">;\n","import { z } from \"zod\";\nimport { DesignElementBase } from \"./base\";\nimport { FigmaFileStructureNode, FigmaFileStructureStatistics } from \"./data/figma-file-structure\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const FigmaFileStructureOrigin = z.object({\n sourceId: z.string(),\n fileId: z.string().optional(),\n});\n\nexport const FigmaFileStructureData = z.object({\n rootNode: FigmaFileStructureNode,\n assetsInFile: FigmaFileStructureStatistics,\n});\n\nexport const FigmaFileStructure = DesignElementBase.extend({\n origin: FigmaFileStructureOrigin,\n data: FigmaFileStructureData,\n});\n\nexport type FigmaFileStructureOrigin = z.infer<typeof FigmaFileStructureOrigin>;\nexport type FigmaFileStructureData = z.infer<typeof FigmaFileStructureData>;\nexport type FigmaFileStructure = z.infer<typeof FigmaFileStructure>;\n\nexport type CreateFigmaFileStructure = DbCreateInputOmit<FigmaFileStructure>;\nexport type UpdateFigmaFileStructure = OmitStrict<DbUpdate<FigmaFileStructure>, \"designSystemVersionId\">;\n\nexport type FigmaFileStructureDiff = {\n toCreate: CreateFigmaFileStructure[];\n toUpdate: UpdateFigmaFileStructure[];\n};\n\nexport function traverseStructure(node: FigmaFileStructureNode, action: (node: FigmaFileStructureNode) => void) {\n action(node);\n\n for (const child of node.children) {\n traverseStructure(child, action);\n }\n}\n","import { z } from \"zod\";\nimport { DesignElementBase } from \"./base\";\nimport { FigmaNodeReferenceData } from \"./data/figma-node-reference\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\nexport const FigmaNodeReference = DesignElementBase.extend({\n data: FigmaNodeReferenceData,\n});\n\nexport type FigmaNodeReference = z.infer<typeof FigmaNodeReference>;\n\nexport type CreateFigmaNodeReference = DbCreateInputOmit<FigmaNodeReference>;\nexport type UpdateFigmaNodeReference = OmitStrict<DbUpdate<FigmaNodeReference>, \"designSystemVersionId\">;\n\nexport type FigmaNodeReferenceDiff = {\n toUpdate: UpdateFigmaNodeReference[];\n};\n","import { DesignElementType } from \"./raw-element\";\nimport { DesignElementBase, DesignElementBrandedPart, DesignElementGroupablePart, DesignElementSlugPart } from \"./base\";\nimport { z } from \"zod\";\nimport { DbCreateInputOmit, DbUpdate } from \"../../helpers\";\nimport { OmitStrict } from \"../../helpers\";\nimport { DocumentationGroupBehavior, ElementGroupData } from \"./data\";\nimport { DocumentationItemConfiguration } from \"./data\";\nexport const ElementGroup = DesignElementBase.extend(DesignElementGroupablePart.shape)\n .extend(DesignElementSlugPart.shape)\n .extend(DesignElementBrandedPart.partial().shape)\n .extend({\n shortPersistentId: z.string().optional(),\n childType: DesignElementType,\n data: ElementGroupData.optional(),\n });\n\nexport const BrandedElementGroup = ElementGroup.extend(DesignElementBrandedPart.shape);\n\nexport type ElementGroup = z.infer<typeof ElementGroup>;\nexport type BrandedElementGroup = z.infer<typeof BrandedElementGroup>;\n\nexport type CreateElementGroup = OmitStrict<DbCreateInputOmit<ElementGroup>, \"parentPersistentId\"> & {\n parentPersistentId: string;\n};\n\nexport type UpdateElementGroup = DbUpdate<\n OmitStrict<ElementGroup, \"brandPersistentId\" | \"childType\" | \"designSystemVersionId\" | \"parentPersistentId\"> & {\n parentPersistentId: string;\n }\n>;\n\nexport type ElementGroupsDiff = {\n toCreate: CreateElementGroup[];\n toUpdate: UpdateElementGroup[];\n toDelete: ElementGroup[\"id\"][];\n};\n\n//\n// DTO\n//\n\nexport const DocumentationGroupDTO = ElementGroup.omit({\n sortOrder: true,\n parentPersistentId: true,\n brandPersistentId: true,\n meta: true,\n childType: true,\n data: true,\n shortPersistentId: true,\n}).extend({\n title: z.string(),\n isRoot: z.boolean(),\n childrenIds: z.array(z.string()),\n groupBehavior: DocumentationGroupBehavior,\n configuration: DocumentationItemConfiguration,\n shortPersistentId: z.string(),\n});\n\nexport type DocumentationGroupDTO = z.infer<typeof DocumentationGroupDTO>;\n","import { z } from \"zod\";\nimport { DesignElementBase, DesignElementGroupableRequiredPart } from \"./base\";\nimport { PageBlockDataV2 } from \"./data\";\n\n//\n// Element\n//\n\nexport const PageBlockV2 = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape).extend({\n data: PageBlockDataV2,\n});\n\nexport type PageBlockV2 = z.infer<typeof PageBlockV2>;\n\n//\n// Editor Model\n//\n\nexport const PageBlockEditorModelV2 = z.object({\n id: z.string(),\n data: PageBlockDataV2,\n});\n\nexport type PageBlockEditorModelV2 = z.infer<typeof PageBlockEditorModelV2>;\n","import { z } from \"zod\";\nimport { DesignTokenOrigin, DesignTokenOriginPart, DesignTokenTypedData } from \"./tokens\";\nimport { DesignTokenType } from \"./raw-element\";\nimport { DesignElementBase, DesignElementBrandedPart } from \"./base\";\nimport { DbCreateInputOmit, DbUpdate, OmitStrict } from \"../../helpers\";\n\n//\n// Overrides\n//\n\nexport const ThemeOverrideOriginPart = DesignTokenOriginPart;\nexport const ThemeOverrideOrigin = DesignTokenOrigin;\n\nexport const ThemeOverride = DesignTokenTypedData.and(\n z.object({\n tokenPersistentId: z.string(),\n origin: ThemeOverrideOrigin.optional()\n .nullable()\n .transform(v => v ?? undefined),\n })\n);\n\nexport type ThemeOverride = z.infer<typeof ThemeOverride>;\nexport type ThemeOverrideOfType<T extends DesignTokenType> = Extract<ThemeOverride, { type: T }>;\n\n//\n// Theme data\n//\n\nexport const ThemeElementData = z.object({\n value: z.object({\n overrides: z.array(ThemeOverride),\n }),\n});\n\nexport type ThemeElementData = z.infer<typeof ThemeElementData>;\n\n//\n// Theme\n//\n\nexport const ThemeOriginPart = z.object({});\n\nexport const ThemeOriginObject = z.object({\n id: z.string(),\n name: z.string(),\n});\n\nexport const ThemeOriginSource = z.object({\n sourceId: z.string(),\n sourceObjects: z.array(ThemeOriginObject),\n});\n\nexport const ThemeOrigin = z.object({\n sources: z.array(ThemeOriginSource),\n});\n\nexport const Theme = DesignElementBase.extend(DesignElementBrandedPart.shape).extend({\n origin: ThemeOrigin.optional(),\n overrides: z.array(ThemeOverride),\n});\n\nexport type Theme = z.infer<typeof Theme>;\nexport type ThemeOrigin = z.infer<typeof ThemeOrigin>;\nexport type ThemeOriginSource = z.infer<typeof ThemeOriginSource>;\nexport type ThemeOriginObject = z.infer<typeof ThemeOriginObject>;\n\nexport type CreateTheme = DbCreateInputOmit<Theme>;\nexport type UpdateTheme = OmitStrict<DbUpdate<Theme>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type ThemeDiff = {\n toCreate: CreateTheme[];\n toUpdate: UpdateTheme[];\n};\n","import { z } from \"zod\";\nimport {\n DesignElementBase,\n DesignElementBrandedPart,\n DesignElementGroupableRequiredPart,\n DesignElementOrigin,\n} from \"./base\";\nimport { DbUpdate, OmitStrict, zodCreateInputOmit, zodUpdateInputOmit } from \"../../helpers\";\nimport { DesignTokenType } from \"./raw-element\";\nimport {\n TextCaseTokenData,\n FontWeightTokenData,\n LetterSpacingTokenData,\n LineHeightTokenData,\n ParagraphSpacingTokenData,\n StringTokenData,\n TextDecorationTokenData,\n BorderRadiusTokenData,\n BorderWidthTokenData,\n BorderTokenData,\n ProductCopyTokenData,\n FontFamilyTokenData,\n FontSizeTokenData,\n DimensionTokenData,\n TypographyTokenData,\n ShadowTokenData,\n OpacityTokenData,\n GradientTokenData,\n ColorTokenData,\n BlurTokenData,\n DurationTokenData,\n ZIndexTokenData,\n VisibilityTokenData,\n SpaceTokenData,\n SizeTokenData,\n} from \"./data\";\n\n//\n// Base\n//\n\nexport const DesignTokenOriginPart = z.object({\n referenceOriginId: z.string().optional(),\n referencePersistentId: z.string().optional(),\n});\n\nexport const DesignTokenOrigin = DesignElementOrigin.extend(DesignTokenOriginPart.shape);\n\nconst DesignTokenBase = DesignElementBase.extend(DesignElementGroupableRequiredPart.shape)\n .extend(DesignElementBrandedPart.shape)\n .extend({\n origin: DesignTokenOrigin.optional(),\n });\n\nconst CreateDesignTokenBase = DesignTokenBase.omit(zodCreateInputOmit());\nconst UpdateDesignTokenBase = DesignTokenBase.omit({\n ...zodUpdateInputOmit(),\n brandPersistentId: true,\n designSystemVersionId: true,\n});\n\n//\n// Per type\n//\n\nconst BlurTokenTypedData = z.object({\n type: z.literal(\"Blur\"),\n data: BlurTokenData,\n});\n\nconst ColorTokenTypedData = z.object({\n type: z.literal(\"Color\"),\n data: ColorTokenData,\n});\n\nconst GradientTokenTypedData = z.object({\n type: z.literal(\"Gradient\"),\n data: GradientTokenData,\n});\n\nconst OpacityTokenTypedData = z.object({\n type: z.literal(\"Opacity\"),\n data: OpacityTokenData,\n});\n\nconst ShadowTokenTypedData = z.object({\n type: z.literal(\"Shadow\"),\n data: ShadowTokenData,\n});\n\nconst TypographyTokenTypedData = z.object({\n type: z.literal(\"Typography\"),\n data: TypographyTokenData,\n});\n\nconst StringTokenTypedData = z.object({\n type: z.literal(\"String\"),\n data: StringTokenData,\n});\n\nconst DimensionTokenTypedData = z.object({\n type: z.literal(\"Dimension\"),\n data: DimensionTokenData,\n});\n\nconst FontSizeTokenTypedData = z.object({\n type: z.literal(\"FontSize\"),\n data: FontSizeTokenData,\n});\n\nconst FontFamilyTokenTypedData = z.object({\n type: z.literal(\"FontFamily\"),\n data: FontFamilyTokenData,\n});\n\nconst FontWeightTokenTypedData = z.object({\n type: z.literal(\"FontWeight\"),\n data: FontWeightTokenData,\n});\n\nconst LetterSpacingTokenTypedData = z.object({\n type: z.literal(\"LetterSpacing\"),\n data: LetterSpacingTokenData,\n});\n\nconst LineHeightTokenTypedData = z.object({\n type: z.literal(\"LineHeight\"),\n data: LineHeightTokenData,\n});\n\nconst ParagraphSpacingTokenTypedData = z.object({\n type: z.literal(\"ParagraphSpacing\"),\n data: ParagraphSpacingTokenData,\n});\n\nconst TextCaseTokenTypedData = z.object({\n type: z.literal(\"TextCase\"),\n data: TextCaseTokenData,\n});\n\nconst TextDecorationTokenTypedData = z.object({\n type: z.literal(\"TextDecoration\"),\n data: TextDecorationTokenData,\n});\n\nconst BorderRadiusTokenTypedData = z.object({\n type: z.literal(\"BorderRadius\"),\n data: BorderRadiusTokenData,\n});\n\nconst BorderWidthTokenTypedData = z.object({\n type: z.literal(\"BorderWidth\"),\n data: BorderWidthTokenData,\n});\n\nconst BorderTypedData = z.object({\n type: z.literal(\"Border\"),\n data: BorderTokenData,\n});\n\nconst ProductCopyTypedData = z.object({\n type: z.literal(\"ProductCopy\"),\n data: ProductCopyTokenData,\n});\n\nconst SizeTypedData = z.object({\n type: z.literal(\"Size\"),\n data: SizeTokenData,\n});\n\nconst SpaceTypedData = z.object({\n type: z.literal(\"Space\"),\n data: SpaceTokenData,\n});\n\nconst VisibilityTypedData = z.object({\n type: z.literal(\"Visibility\"),\n data: VisibilityTokenData,\n});\n\nconst ZIndexTypedData = z.object({\n type: z.literal(\"ZIndex\"),\n data: ZIndexTokenData,\n});\n\nconst DurationTypedData = z.object({\n type: z.literal(\"Duration\"),\n data: DurationTokenData,\n});\n\nconst FontTypedData = z.object({\n type: z.literal(\"Font\"),\n data: z.record(z.any()),\n});\n\n//\n// Global types\n//\n\nexport const DesignTokenTypedData = z.discriminatedUnion(\"type\", [\n BlurTokenTypedData,\n BorderRadiusTokenTypedData,\n BorderWidthTokenTypedData,\n BorderTypedData,\n ColorTokenTypedData,\n\n DimensionTokenTypedData,\n DurationTypedData,\n FontSizeTokenTypedData,\n FontFamilyTokenTypedData,\n FontWeightTokenTypedData,\n\n GradientTokenTypedData,\n LetterSpacingTokenTypedData,\n LineHeightTokenTypedData,\n OpacityTokenTypedData,\n ParagraphSpacingTokenTypedData,\n\n ProductCopyTypedData,\n ShadowTokenTypedData,\n SizeTypedData,\n SpaceTypedData,\n StringTokenTypedData,\n\n TextCaseTokenTypedData,\n TextDecorationTokenTypedData,\n TypographyTokenTypedData,\n VisibilityTypedData,\n ZIndexTypedData,\n FontTypedData,\n]);\n\nexport type DesignTokenOriginPart = z.infer<typeof DesignTokenOriginPart>;\nexport type DesignTokenOrigin = z.infer<typeof DesignTokenOrigin>;\n\nexport type DesignTokenBase = z.infer<typeof DesignTokenBase>;\n\nexport const DesignToken = DesignTokenTypedData.and(DesignTokenBase);\nexport const CreateDesignToken = DesignTokenTypedData.and(CreateDesignTokenBase);\n\nexport type DesignTokenTypedData = z.infer<typeof DesignTokenTypedData>;\nexport type DesignTokenTypedDataOfType<T extends DesignTokenType> = Extract<DesignTokenTypedData, { type: T }>;\n\nexport type DesignToken = z.infer<typeof DesignToken>;\nexport type ImportedDesignToken = OmitStrict<DesignToken, \"origin\"> & { origin: DesignTokenOrigin };\n\nexport type DesignTokenOfType<T extends DesignTokenType> = Extract<DesignToken, { type: T }>;\nexport type ImportedDesignTokenOfType<T extends DesignTokenType> = Extract<ImportedDesignToken, { type: T }>;\n\nexport type CreateDesignToken = z.infer<typeof CreateDesignToken>;\nexport type UpdateDesignToken = OmitStrict<DbUpdate<DesignToken>, \"brandPersistentId\" | \"designSystemVersionId\">;\n\nexport type DesignTokensDiff = {\n toCreate: CreateDesignToken[];\n toUpdate: UpdateDesignToken[];\n};\n\n//\n// Utilities\n//\n\nexport function extractTokenTypedData<T extends DesignTokenType, I extends DesignTokenTypedDataOfType<T>>(\n source: I\n): DesignTokenTypedDataOfType<T> {\n return {\n type: source.type,\n data: source.data,\n } as DesignTokenTypedDataOfType<T>;\n}\n\nexport function isImportedDesignToken<T extends DesignTokenType>(\n designToken: DesignTokenOfType<T>\n): designToken is ImportedDesignTokenOfType<T> {\n return !!designToken.origin;\n}\n\nexport function isDesignTokenOfType<T extends DesignTokenType>(\n designToken: DesignToken,\n type: T\n): designToken is DesignTokenOfType<T> {\n return designToken.type === type;\n}\n\nexport function designTokenTypeFilter<T extends DesignTokenType>(\n type: T\n): (designToken: DesignToken) => designToken is DesignTokenOfType<T> {\n return (designToken): designToken is DesignTokenOfType<T> => isDesignTokenOfType(designToken, type);\n}\n","import { z } from \"zod\";\n\nexport const FigmaFileDownloadScope = z.object({\n styles: z.boolean(),\n components: z.boolean(),\n currentVersion: z.literal(\"__latest__\").nullable(),\n publishedVersion: z.string().nullable(),\n downloadChunkSize: z.number().optional(),\n});\n\nexport const FigmaFileAccessData = z.object({\n accessToken: z.string(),\n});\n\nexport type FigmaFileDownloadScope = z.infer<typeof FigmaFileDownloadScope>;\nexport type FigmaFileAccessData = z.infer<typeof FigmaFileAccessData>;\n","import { z } from \"zod\";\nimport { DataSourceFigmaImportMetadata, DataSourceFigmaRemote } from \"../../data-sources\";\nimport { FigmaFileAccessData, FigmaFileDownloadScope } from \"./figma-files\";\n\n//\n// Importer payload\n//\n\nexport const ImportFunctionInput = z.object({\n importJobId: z.string(),\n importContextId: z.string(),\n designSystemId: z.string().optional(),\n});\n\nexport type ImportFunctionInput = z.infer<typeof ImportFunctionInput>;\n\n//\n// Base context\n//\n\nexport const ImportedFigmaSourceData = z.object({\n sourceId: z.string(),\n figmaRemote: DataSourceFigmaRemote,\n});\n\nexport const FigmaImportBaseContext = z.object({\n designSystemId: z.string(),\n\n /**\n * Data required for accessing Figma files. This should contain access data for all file ids\n * mentioned in the `importedSourceDataBySourceId`\n *\n * fileId: file data\n */\n fileAccessByFileId: z.record(FigmaFileAccessData),\n\n /**\n * Figma source data for which import was requested\n *\n * sourceId: source data\n */\n importedSourceDataBySourceId: z.record(ImportedFigmaSourceData),\n});\n\nexport type ImportedFigmaSourceData = z.infer<typeof ImportedFigmaSourceData>;\nexport type FigmaImportBaseContext = z.infer<typeof FigmaImportBaseContext>;\n\n//\n// Context with file download scope\n//\n\nexport const ChangedImportedFigmaSourceData = ImportedFigmaSourceData.extend({\n importMetadata: DataSourceFigmaImportMetadata,\n});\n\nexport const FigmaImportContextWithDownloadScopes = FigmaImportBaseContext.extend({\n /**\n * Describes what to download from each file, this should contain all file id mentioned in\n * importMetadataBySourceId.\n *\n * File id -> file download scope\n */\n fileDownloadScopesByFileId: z.record(FigmaFileDownloadScope),\n\n /**\n * Sources filtered down to the ones that have changed since last import and therefore need to be\n * imported again.\n *\n * Source id -> import metadata\n */\n changedImportedSourceDataBySourceId: z.record(ChangedImportedFigmaSourceData),\n});\n\nexport type ChangedImportedFigmaSourceData = z.infer<typeof ChangedImportedFigmaSourceData>;\nexport type FigmaImportContextWithDownloadScopes = z.infer<typeof FigmaImportContextWithDownloadScopes>;\n","import { z } from \"zod\";\nimport { AssetImportModelInput, ComponentImportModel, ComponentImportModelInput } from \"../component\";\nimport { ThemeImportModel, ThemeImportModelInput, ThemeUpdateImportModel, ThemeUpdateImportModelInput } from \"../theme\";\nimport { DesignTokenImportModel, DesignTokenImportModelInput } from \"../tokens\";\nimport { FigmaFileStructureImportModel, FigmaFileStructureImportModelInput } from \"../figma-frames\";\nimport { DataSourceImportModel } from \"../data-source\";\n\n//\n// Collections\n//\n\nexport const ImportModelInputCollection = z.object({\n source: DataSourceImportModel,\n tokens: z.array(DesignTokenImportModelInput).default([]),\n components: z.array(ComponentImportModelInput).default([]),\n assets: z.array(AssetImportModelInput).default([]),\n themeUpdates: z.array(ThemeUpdateImportModelInput).default([]),\n themes: z.array(ThemeImportModelInput).default([]),\n figmaFileStructure: FigmaFileStructureImportModelInput.optional(),\n});\n\nexport const ImportModelCollection = z.object({\n sources: z.array(DataSourceImportModel),\n tokens: z.array(DesignTokenImportModel).default([]),\n components: z.array(ComponentImportModel).default([]),\n themeUpdates: z.array(ThemeUpdateImportModel).default([]),\n themes: z.array(ThemeImportModel).default([]),\n figmaFileStructures: z.array(FigmaFileStructureImportModel),\n});\n\nexport type ImportModelCollection = z.infer<typeof ImportModelCollection>;\nexport type ImportModelInputCollection = z.infer<typeof ImportModelInputCollection>;\n\nexport function addImportModelCollections(\n lhs: ImportModelCollection,\n rhs: ImportModelCollection\n): ImportModelCollection {\n return {\n sources: [...lhs.sources, ...rhs.sources],\n tokens: [...lhs.tokens, ...rhs.tokens],\n components: [...lhs.components, ...rhs.components],\n themeUpdates: [...lhs.themeUpdates, ...rhs.themeUpdates],\n themes: [...lhs.themes, ...rhs.themes],\n figmaFileStructures: [...lhs.figmaFileStructures, ...rhs.figmaFileStructures],\n };\n}\n","import { z } from \"zod\";\nimport { AssetScope } from \"../assets\";\n\n//\n// Abstract\n//\n\nexport const ImageImportModelType = z.enum([\"Url\", \"FigmaRender\"]);\nexport type ImageImportModelType = z.infer<typeof ImageImportModelType>;\n\nconst ImageImportModelBase = z.object({\n scope: AssetScope,\n});\n\n//\n// Url\n//\n\nexport const UrlImageImportModel = ImageImportModelBase.extend({\n type: z.literal(ImageImportModelType.enum.Url),\n url: z.string(),\n originKey: z.string(),\n extension: z.enum([\"png\", \"svg\", \"jpg\"]),\n});\n\nexport type UrlImageImportModel = z.infer<typeof UrlImageImportModel>;\n\n//\n// Figma Render\n//\n\nexport const FigmaRenderFormat = z.enum([\"Svg\", \"Png\"]);\n\nconst FigmaRenderBase = ImageImportModelBase.extend({\n type: z.literal(ImageImportModelType.enum.FigmaRender),\n fileId: z.string(),\n fileVersionId: z.string().optional(),\n nodeId: z.string(),\n originKey: z.string(),\n});\n\nexport const FigmaPngRenderImportModel = FigmaRenderBase.extend({\n format: z.literal(FigmaRenderFormat.enum.Png),\n scale: z.number(),\n});\n\nexport const FigmaSvgRenderImportModel = FigmaRenderBase.extend({\n format: z.literal(FigmaRenderFormat.enum.Svg),\n});\n\nexport const FigmaRenderImportModel = z.discriminatedUnion(\"format\", [\n FigmaPngRenderImportModel,\n FigmaSvgRenderImportModel,\n]);\n\n//\n// Union\n//\n\n// Unfortunately discriminated union doesn't support inserting another discriminated union\nexport const ImageImportModel = z.union([UrlImageImportModel, FigmaRenderImportModel]);\n\n//\n// Types\n//\n\nexport type FigmaRenderFormat = z.infer<typeof FigmaRenderFormat>;\nexport type FigmaRenderBase = z.infer<typeof FigmaRenderBase>;\nexport type FigmaPngRenderImportModel = z.infer<typeof FigmaPngRenderImportModel>;\nexport type FigmaSvgRenderImportModel = z.infer<typeof FigmaSvgRenderImportModel>;\nexport type FigmaRenderImportModel = z.infer<typeof FigmaRenderImportModel>;\nexport type ImageImportModel = z.infer<typeof ImageImportModel>;\n","import { FigmaSvgRenderImportModel, ImageImportModel } from \"./image\";\nimport { ComponentOrigin, ComponentOriginPart } from \"../elements\";\nimport { z } from \"zod\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\n\n//\n// Import model\n//\n\nconst ComponentImportModelPart = z.object({\n thumbnail: ImageImportModel,\n});\n\nexport const ComponentImportModel = ImportModelBase.extend(ComponentImportModelPart.shape).extend({\n isAsset: z.boolean(),\n svg: FigmaSvgRenderImportModel.optional(),\n origin: ComponentOrigin,\n});\n\nexport type ComponentImportModel = z.infer<typeof ComponentImportModel>;\n\n//\n// Import model input\n//\n\nexport const ComponentImportModelInput = ImportModelInputBase.extend(ComponentImportModelPart.shape).extend({\n originMetadata: ComponentOriginPart,\n});\n\nexport const AssetImportModelInput = ImportModelInputBase.extend(ComponentImportModelPart.shape).extend({\n svg: FigmaSvgRenderImportModel,\n originMetadata: ComponentOriginPart,\n});\n\nexport type ComponentImportModelInput = z.infer<typeof ComponentImportModelInput>;\nexport type AssetImportModelInput = z.infer<typeof AssetImportModelInput>;\n","import { z } from \"zod\";\nimport { DesignElementOrigin } from \"../elements\";\nimport { ObjectMeta } from \"../../common\";\n\nexport const ImportModelBase = z.object({\n id: z.string(),\n meta: ObjectMeta,\n origin: DesignElementOrigin,\n brandPersistentId: z.string(),\n sortOrder: z.number(),\n});\n\nexport type ImportModelBase = z.infer<typeof ImportModelBase>;\n\nexport const ImportModelInputBase = ImportModelBase.omit({\n brandPersistentId: true,\n origin: true,\n sortOrder: true,\n}).extend({\n originId: z.string(),\n originMetadata: z.record(z.any()),\n});\n\nexport type ImportModelInputBase = z.infer<typeof ImportModelInputBase>;\n","import { z } from \"zod\";\nimport { DesignTokenTypedData } from \"../elements\";\nimport { DesignTokenType } from \"../elements\";\nimport { ThemeOriginObject, ThemeOriginSource, ThemeOverrideOrigin, ThemeOverrideOriginPart } from \"../elements\";\nimport { ObjectMeta } from \"../../common\";\n\n//\n// Overrides\n//\n\nexport const ThemeOverrideImportModelBase = DesignTokenTypedData.and(\n z.object({\n id: z.string(),\n meta: ObjectMeta,\n })\n);\n\nexport const ThemeOverrideImportModel = ThemeOverrideImportModelBase.and(\n z.object({\n origin: ThemeOverrideOrigin,\n })\n);\n\nexport const ThemeOverrideImportModelInput = ThemeOverrideImportModelBase.and(\n z.object({\n originId: z.string(),\n originMetadata: ThemeOverrideOriginPart,\n })\n);\n\nexport type ThemeOverrideImportModel = z.infer<typeof ThemeOverrideImportModel>;\nexport type ThemeOverrideImportModelOfType<T extends DesignTokenType> = Extract<ThemeOverrideImportModel, { type: T }>;\n\nexport type ThemeOverrideImportModelInput = z.infer<typeof ThemeOverrideImportModelInput>;\nexport type ThemeOverrideImportModelInputOfType<T extends DesignTokenType> = Extract<\n ThemeOverrideImportModelInput,\n { type: T }\n>;\n\n//\n// Themes\n//\n\nexport const ThemeImportModel = z.object({\n meta: ObjectMeta,\n brandPersistentId: z.string(),\n originSource: ThemeOriginSource,\n overrides: z.array(ThemeOverrideImportModel),\n sortOrder: z.number(),\n});\n\nexport const ThemeImportModelInput = z.object({\n meta: ObjectMeta,\n originObjects: z.array(ThemeOriginObject),\n overrides: z.array(ThemeOverrideImportModelInput),\n});\n\nexport type ThemeImportModel = z.infer<typeof ThemeImportModel>;\nexport type ThemeImportModelInput = z.infer<typeof ThemeImportModelInput>;\n\n//\n// Theme Update\n//\n\nexport const ThemeUpdateImportModel = z.object({\n themePersistentId: z.string(),\n overrides: z.array(ThemeOverrideImportModel),\n});\n\nexport const ThemeUpdateImportModelInput = z.object({\n themePersistentId: z.string(),\n overrides: z.array(ThemeOverrideImportModelInput),\n});\n\nexport type ThemeUpdateImportModel = z.infer<typeof ThemeUpdateImportModel>;\nexport type ThemeUpdateImportModelInput = z.infer<typeof ThemeUpdateImportModelInput>;\n","import { z } from \"zod\";\nimport { DesignTokenType } from \"../elements\";\nimport { DesignTokenOrigin, DesignTokenOriginPart, DesignTokenTypedData } from \"../elements\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\n\n//\n// Base\n//\n\nconst DesignTokenImportModelPart = z.object({\n collection: z.string().optional(),\n});\n\nexport const DesignTokenImportModelBase = ImportModelBase.extend(DesignTokenImportModelPart.shape).extend({\n origin: DesignTokenOrigin,\n});\n\nexport const DesignTokenImportModelInputBase = ImportModelInputBase.extend(DesignTokenImportModelPart.shape).extend({\n originMetadata: DesignTokenOriginPart,\n});\n\n//\n// Import models\n//\n\nexport const DesignTokenImportModel = DesignTokenTypedData.and(DesignTokenImportModelBase);\nexport const DesignTokenImportModelInput = DesignTokenTypedData.and(DesignTokenImportModelInputBase);\n\nexport type DesignTokenImportModelInputBase = z.infer<typeof DesignTokenImportModelInputBase>;\n\nexport type DesignTokenImportModel = z.infer<typeof DesignTokenImportModel>;\nexport type DesignTokenImportModelOfType<T extends DesignTokenType> = Extract<DesignTokenImportModel, { type: T }>;\n\nexport type DesignTokenImportModelInput = z.infer<typeof DesignTokenImportModelInput>;\nexport type DesignTokenImportModelInputOfType<T extends DesignTokenType> = Extract<DesignTokenImportModel, { type: T }>;\n\nexport function isDesignTokenImportModelOfType<T extends DesignTokenType>(\n designToken: DesignTokenImportModel,\n type: T\n): designToken is DesignTokenImportModelOfType<T> {\n return designToken.type === type;\n}\n\nexport function designTokenImportModelTypeFilter<T extends DesignTokenType>(\n type: T\n): (designToken: DesignTokenImportModel) => designToken is DesignTokenImportModelOfType<T> {\n return (designToken): designToken is DesignTokenImportModelOfType<T> =>\n isDesignTokenImportModelOfType(designToken, type);\n}\n","import { ZodType, ZodTypeDef, z } from \"zod\";\nimport { ImportModelBase, ImportModelInputBase } from \"./base\";\nimport { FigmaFileStructureOrigin } from \"../elements\";\nimport { FigmaFileStructureNodeBase, FigmaFileStructureStatistics } from \"../elements\";\nimport { FigmaPngRenderImportModel } from \"./image\";\n\n//\n// Nodes Import Model\n//\n\nconst FigmaFileStructureNodeImportModelBase = FigmaFileStructureNodeBase.extend({\n image: FigmaPngRenderImportModel,\n});\n\nexport const FigmaFileStructureNodeImportModel: z.ZodType<\n FigmaFileStructureNodeImportModel,\n ZodTypeDef,\n FigmaFileStructureNodeImportModelBaseInput\n> = FigmaFileStructureNodeImportModelBase.extend({\n children: z.lazy(() => FigmaFileStructureNodeImportModel.array()),\n});\n\ntype FigmaFileStructureNodeImportModelBaseInput = z.input<typeof FigmaFileStructureNodeImportModelBase> & {\n children: FigmaFileStructureNodeImportModelBaseInput[];\n};\n\nexport type FigmaFileStructureNodeImportModel = z.infer<typeof FigmaFileStructureNodeImportModelBase> & {\n children: FigmaFileStructureNodeImportModel[];\n};\n\n//\n// Structure Import Model\n//\n\nconst FigmaFileStructureImportModelPart = z.object({\n data: z.object({\n rootNode: FigmaFileStructureNodeImportModel,\n assetsInFile: FigmaFileStructureStatistics,\n }),\n});\n\nexport const FigmaFileStructureImportModel = ImportModelBase.extend(FigmaFileStructureImportModelPart.shape).extend({\n origin: FigmaFileStructureOrigin,\n});\n\nexport type FigmaFileStructureImportModel = z.infer<typeof FigmaFileStructureImportModel>;\n\n//\n// Import model input\n//\n\nexport const FigmaFileStructureImportModelInput = ImportModelInputBase.extend(\n FigmaFileStructureImportModelPart.shape\n).extend({\n fileVersionId: z.string(),\n});\n\nexport type FigmaFileStructureImportModelInput = z.infer<typeof FigmaFileStructureImportModelInput>;\n\nexport function figmaFileStructureImportModelToMap(\n root: FigmaFileStructureNodeImportModel\n): Map<string, FigmaFileStructureNodeImportModel> {\n const map = new Map<string, FigmaFileStructureNodeImportModel>();\n recursiveFigmaFileStructureToMap(root, map);\n return map;\n}\n\nfunction recursiveFigmaFileStructureToMap(\n node: FigmaFileStructureNodeImportModel,\n map: Map<string, FigmaFileStructureNodeImportModel>\n) {\n map.set(node.id, node);\n for (const child of node.children) recursiveFigmaFileStructureToMap(child, map);\n}\n","import { z } from \"zod\";\n\nexport const DataSourceImportModel = z.object({\n id: z.string(),\n fileName: z.string().optional(),\n thumbnailUrl: z.string().optional(),\n});\n\nexport type DataSourceImportModel = z.infer<typeof DataSourceImportModel>;\n","import { z } from \"zod\";\n\nexport const ImportWarningType = z.enum([\n \"NoVersionFound\",\n \"UnsupportedFill\",\n \"UnsupportedStroke\",\n \"UnsupportedEffect\",\n \"NoPublishedElements\",\n \"NoPublishedStyles\",\n \"NoPublishedComponents\",\n \"NoPublishedAssets\",\n \"StyleNotApplied\",\n \"ComponentHasNoThumbnail\",\n \"DuplicateImportedStyleId\",\n \"DuplicateImportedStylePath\",\n]);\n\nexport const ImportWarning = z.object({\n warningType: ImportWarningType,\n componentId: z.string().optional(),\n componentName: z.string().optional(),\n styleId: z.string().optional(),\n styleName: z.string().optional(),\n unsupportedStyleValueType: z.string().optional(),\n});\n\nexport type ImportWarningType = z.infer<typeof ImportWarningType>;\nexport type ImportWarning = z.infer<typeof ImportWarning>;\n","import { z } from \"zod\";\n\nexport const PageBlockDefinitionAppearance = z.object({\n isBordered: z.boolean().optional(),\n hasBackground: z.boolean().optional(),\n isEditorPresentationDifferent: z.boolean().optional(),\n});\n\nexport type PageBlockDefinitionAppearance = z.infer<typeof PageBlockDefinitionAppearance>;\n","import { z } from \"zod\";\nimport { AssetValue } from \"../../assets/asset-value\";\nimport { PageBlockDefinitionItem } from \"./item\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\n\n//\n// Enums\n//\n\nexport const PageBlockCategory = z.enum([\n \"Text\",\n \"Layout\",\n \"Media\",\n \"Embed\",\n \"Figma\",\n \"Code\",\n \"Guidelines\",\n \"Tokens\",\n \"Components\",\n \"Assets\",\n \"Data\",\n \"Other\",\n]);\n\nexport const PageBlockBehaviorDataType = z.enum([\"Item\", \"Token\", \"Asset\", \"Component\", \"FigmaFrame\"]);\nexport const PageBlockBehaviorSelectionType = z.enum([\"Entity\", \"Group\", \"EntityAndGroup\"]);\n\nexport type PageBlockCategory = z.infer<typeof PageBlockCategory>;\nexport type PageBlockBehaviorDataType = z.infer<typeof PageBlockBehaviorDataType>;\nexport type PageBlockBehaviorSelectionType = z.infer<typeof PageBlockBehaviorSelectionType>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionBehavior = z.object({\n dataType: PageBlockBehaviorDataType,\n items: z\n .object({\n numberOfItems: z.number(),\n allowLinks: z.boolean(),\n })\n .optional(),\n entities: z\n .object({\n selectionType: PageBlockBehaviorSelectionType,\n maxSelected: z.number(),\n })\n .optional(),\n});\n\nexport const PageBlockDefinitionOnboarding = z.object({\n helpText: z.string(),\n documentationLink: z.string().optional(),\n});\n\nexport const PageBlockDefinition = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n category: PageBlockCategory,\n icon: AssetValue.optional(),\n documentationLink: z.string().optional(),\n searchKeywords: z.array(z.string()).optional(),\n item: PageBlockDefinitionItem,\n behavior: PageBlockDefinitionBehavior,\n editorOptions: z.object({\n onboarding: PageBlockDefinitionOnboarding.optional(),\n }),\n appearance: PageBlockDefinitionAppearance.optional(),\n});\n\nexport type PageBlockDefinitionBehavior = z.infer<typeof PageBlockDefinitionBehavior>;\nexport type PageBlockDefinitionOnboarding = z.infer<typeof PageBlockDefinitionOnboarding>;\nexport type PageBlockDefinition = z.infer<typeof PageBlockDefinition>;\n","import { z } from \"zod\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\nimport { PageBlockDefinitionVariant } from \"./variant\";\n\n//\n// Enums\n//\n\nexport const PageBlockDefinitionPropertyType = z.enum([\n \"RichText\",\n \"Text\",\n \"Boolean\",\n \"Number\",\n \"SingleSelect\",\n \"MultiSelect\",\n \"Image\",\n \"Token\",\n \"TokenType\",\n \"TokenProperty\",\n \"Component\",\n \"ComponentProperty\",\n \"Asset\",\n \"AssetProperty\",\n \"EmbedURL\",\n \"URL\",\n \"Markdown\",\n \"Code\",\n \"CodeSandbox\",\n \"Table\",\n \"Divider\",\n \"Storybook\",\n]);\n\nexport const PageBlockDefinitionRichTextPropertyStyle = z.enum([\n \"Title1\",\n \"Title2\",\n \"Title3\",\n \"Title4\",\n \"Title5\",\n \"Quote\",\n \"Callout\",\n \"OL\",\n \"UL\",\n \"Default\",\n]);\n\nexport const PageBlockDefinitionTextPropertyStyle = z.enum([\n \"Title1\",\n \"Title2\",\n \"Title3\",\n \"Title4\",\n \"Title5\",\n \"Default\",\n \"DefaultBold\",\n \"DefaultSemibold\",\n \"Small\",\n \"SmallBold\",\n \"SmallSemibold\",\n]);\n\nexport const PageBlockDefinitionBooleanPropertyStyle = z.enum([\"SegmentedControl\", \"ToggleButton\", \"Checkbox\"]);\nexport const PageBlockDefinitionSingleSelectPropertyStyle = z.enum([\n \"SegmentedControl\",\n \"ToggleButton\",\n \"Select\",\n \"Checkbox\",\n]);\nexport const PageBlockDefinitionMultiSelectPropertyStyle = z.enum([\"SegmentedControl\", \"Select\", \"Checkbox\"]);\n\nexport type PageBlockDefinitionPropertyType = z.infer<typeof PageBlockDefinitionPropertyType>;\nexport type PageBlockDefinitionRichTextPropertyStyle = z.infer<typeof PageBlockDefinitionRichTextPropertyStyle>;\nexport type PageBlockDefinitionTextPropertyStyle = z.infer<typeof PageBlockDefinitionTextPropertyStyle>;\nexport type PageBlockDefinitionBooleanPropertyStyle = z.infer<typeof PageBlockDefinitionBooleanPropertyStyle>;\nexport type PageBlockDefinitionSingleSelectPropertyStyle = z.infer<typeof PageBlockDefinitionSingleSelectPropertyStyle>;\nexport type PageBlockDefinitionMultiSelectPropertyStyle = z.infer<typeof PageBlockDefinitionMultiSelectPropertyStyle>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionPropertyOptions = z\n .object({\n richTextStyle: PageBlockDefinitionRichTextPropertyStyle.optional(),\n textStyle: PageBlockDefinitionTextPropertyStyle.optional(),\n placeholder: z.string().optional(),\n })\n .and(z.record(z.any()));\n\nexport const PageBlockDefinitionProperty = z.object({\n id: z.string(),\n name: z.string(),\n type: PageBlockDefinitionPropertyType,\n description: z.string().optional(),\n // TODO Docs\n options: PageBlockDefinitionPropertyOptions.optional(),\n variantOptions: z.record(PageBlockDefinitionPropertyOptions).optional(),\n});\n\nexport const PageBlockDefinitionItem = z.object({\n properties: z.array(PageBlockDefinitionProperty),\n appearance: PageBlockDefinitionAppearance.optional(),\n variants: z.array(PageBlockDefinitionVariant),\n defaultVariantKey: z.string(),\n});\n\nexport type PageBlockDefinitionPropertyOptions = z.infer<typeof PageBlockDefinitionPropertyOptions>;\nexport type PageBlockDefinitionProperty = z.infer<typeof PageBlockDefinitionProperty>;\nexport type PageBlockDefinitionItem = z.infer<typeof PageBlockDefinitionItem>;\n","import { ZodTypeDef, z } from \"zod\";\nimport { PageBlockDefinitionAppearance } from \"./aux\";\n\n//\n// Enums\n//\n\nexport const PageBlockDefinitionLayoutType = z.enum([\"Column\", \"Row\"]);\nexport const PageBlockDefinitionLayoutGap = z.enum([\"Small\", \"Medium\", \"Large\", \"None\"]);\nexport const PageBlockDefinitionLayoutAlign = z.enum([\"Start\", \"Center\", \"End\"]);\nexport const PageBlockDefinitionLayoutResizing = z.enum([\"Fill\", \"Hug\"]);\n\nexport type PageBlockDefinitionLayoutType = z.infer<typeof PageBlockDefinitionLayoutType>;\nexport type PageBlockDefinitionLayoutGap = z.infer<typeof PageBlockDefinitionLayoutGap>;\nexport type PageBlockDefinitionLayoutAlign = z.infer<typeof PageBlockDefinitionLayoutAlign>;\nexport type PageBlockDefinitionLayoutResizing = z.infer<typeof PageBlockDefinitionLayoutResizing>;\n\n//\n// Definitions\n//\n\nexport const PageBlockDefinitionLayoutBase = z.object({\n type: PageBlockDefinitionLayoutType,\n gap: PageBlockDefinitionLayoutGap.optional(),\n columnAlign: PageBlockDefinitionLayoutAlign.optional(),\n columnResizing: PageBlockDefinitionLayoutResizing.optional(),\n});\n\nexport const PageBlockDefinitionLayout: z.ZodType<PageBlockDefinitionLayout, ZodTypeDef, PageBlockDefinitionLayout> =\n PageBlockDefinitionLayoutBase.extend({\n children: z.lazy(() => z.array(PageBlockDefinitionLayout.or(z.string()))),\n });\n\nexport const PageBlockDefinitionVariant = z.object({\n id: z.string(),\n name: z.string(),\n image: z.string().optional(),\n description: z.string().optional(),\n documentationLink: z.string().optional(),\n layout: PageBlockDefinitionLayout,\n maxColumns: z.number().optional(),\n defaultColumns: z.number().optional(),\n appearance: PageBlockDefinitionAppearance.optional(),\n});\n\nexport type PageBlockDefinitionVariant = z.infer<typeof PageBlockDefinitionVariant>;\nexport type PageBlockDefinitionLayout = z.infer<typeof PageBlockDefinitionLayoutBase> & {\n children: (PageBlockDefinitionLayout | string)[];\n};\n","import { z } from \"zod\";\n\nexport const DocumentationPageGroup = z.object({\n type: z.literal(\"ElementGroup\"),\n childType: z.literal(\"DocumentationPage\"),\n id: z.string(),\n persistentId: z.string(),\n shortPersistentId: z.string(),\n designSystemVersionId: z.string(),\n parentPersistentId: z.string().nullish(),\n sortOrder: z.number(),\n title: z.string(),\n slug: z.string(),\n userSlug: z.string().nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type DocumentationPageGroup = z.infer<typeof DocumentationPageGroup>;\n","import { z } from \"zod\";\n\nexport const DocumentationPage = z.object({\n type: z.literal(\"DocumentationPage\"),\n id: z.string(),\n persistentId: z.string(),\n shortPersistentId: z.string(),\n designSystemVersionId: z.string(),\n parentPersistentId: z.string().nullish(),\n sortOrder: z.number(),\n title: z.string(),\n slug: z.string(),\n userSlug: z.string().nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport type DocumentationPage = z.infer<typeof DocumentationPage>;\n","import { z } from \"zod\";\nimport { Workspace } from \"../workspace\";\nexport const DesignSystemSwitcher = z.object({\n isEnabled: z.boolean(),\n designSystemIds: z.string(),\n});\n\nexport const DesignSystem = z.object({\n id: z.string(),\n workspaceId: z.string(),\n name: z.string(),\n description: z.string(),\n docExporterId: z.string().nullish(),\n docSlug: z.string(),\n docUserSlug: z.string().nullish(),\n docSlugDeprecated: z.string(),\n isPublic: z.boolean(),\n isMultibrand: z.boolean(),\n docViewUrl: z.string().nullish(),\n basePrefixes: z.array(z.string()),\n designSystemSwitcher: DesignSystemSwitcher.nullish(),\n createdAt: z.date(),\n updatedAt: z.date(),\n});\n\nexport const DesignSystemWithWorkspace = z.object({\n designSystem: DesignSystem,\n workspace: Workspace,\n});\n\nexport type DesignSystemSwitcher = z.infer<typeof DesignSystemSwitcher>;\nexport type DesignSystem = z.infer<typeof DesignSystem>;\nexport type DesignSystemWithWorkspace = z.infer<typeof DesignSystemWithWorkspace>;\n","import { z } from \"zod\";\n\nexport const NpmRegistryAuthType = z.enum([\"Basic\", \"Bearer\", \"None\", \"Custom\"]);\nexport const NpmRegistryType = z.enum([\"NPMJS\", \"GitHub\", \"AzureDevOps\", \"Artifactory\", \"Custom\"]);\n\nexport const NpmRegistryBasicAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Basic),\n username: z.string(),\n password: z.string(),\n});\n\nexport const NpmRegistryBearerAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Bearer),\n accessToken: z.string(),\n});\n\nexport const NpmRegistryNoAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.None),\n});\n\nexport const NpmRegistrCustomAuthConfig = z.object({\n authType: z.literal(NpmRegistryAuthType.Enum.Custom),\n authHeaderName: z.string(),\n authHeaderValue: z.string(),\n});\n\nexport const NpmRegistryAuthConfig = z.discriminatedUnion(\"authType\", [\n NpmRegistryBasicAuthConfig,\n NpmRegistryBearerAuthConfig,\n NpmRegistryNoAuthConfig,\n NpmRegistrCustomAuthConfig,\n]);\n\nconst NpmRegistryConfigBase = z.object({\n registryType: NpmRegistryType,\n enabledScopes: z.array(z.string()),\n customRegistryUrl: z.string().optional(),\n bypassProxy: z.boolean().default(false),\n npmProxyRegistryConfigId: z.string().optional(),\n npmProxyVersion: z.number().optional(),\n});\n\nexport const NpmRegistryConfig = NpmRegistryConfigBase.and(NpmRegistryAuthConfig);\n\nexport type NpmRegistryConfig = z.infer<typeof NpmRegistryConfig>;\n","import { z } from \"zod\";\nexport const SsoProvider = z.object({\n providerId: z.string(),\n defaultAutoInviteValue: z.boolean(),\n autoInviteDomains: z.record(z.string(), z.boolean()),\n skipDocsSupernovaLogin: z.boolean(),\n areInvitesDisabled: z.boolean(),\n isTestMode: z.boolean(),\n emailDomains: z.array(z.string()),\n metadataXml: z.string().nullish(),\n});\n\nexport type SsoProvider = z.infer<typeof SsoProvider>;\n","import { z } from \"zod\";\nimport { WorkspaceRoleSchema } from \"./workspace-role\";\n\nexport const MAX_MEMBERS_COUNT = 100;\n\nexport const UserInvite = z.object({\n email: z\n .string()\n .email()\n .trim()\n .transform(value => value.toLowerCase()),\n role: WorkspaceRoleSchema,\n});\n\nexport const UserInvites = z.array(UserInvite).max(MAX_MEMBERS_COUNT);\n\nexport type UserInvite = z.infer<typeof UserInvite>;\nexport type UserInvites = z.infer<typeof UserInvites>;\n","import { z } from \"zod\";\n\nexport const WorkspaceRoleSchema = z.enum([\"Owner\", \"Admin\", \"Creator\", \"Viewer\", \"Billing\", \"Guest\"]);\n\nexport type WorkspaceRole = z.infer<typeof WorkspaceRoleSchema>;\nexport const WorkspaceRole = WorkspaceRoleSchema.enum;\n","import { ProductCodeSchema } from \"../billing\";\nimport { z } from \"zod\";\n\nexport const WorkspaceContext = z.object({\n workspaceId: z.string(),\n product: ProductCodeSchema,\n publicDesignSystem: z.boolean().optional(),\n});\n\nexport type WorkspaceContext = z.infer<typeof WorkspaceContext>;\n","import { z } from \"zod\";\nimport { UserInvites } from \"./user-invite\";\nimport { ProductCodeSchema } from \"../billing\";\nimport { slugRegex } from \"../utils/validation\";\n\nconst WORKSPACE_NAME_MIN_LENGTH: number = 2;\nconst WORKSPACE_NAME_MAX_LENGTH: number = 64;\nexport const HANDLE_MIN_LENGTH = 2;\nexport const HANDLE_MAX_LENGTH = 64;\n\nexport const CreateWorkspaceInput = z.object({\n name: z.string().min(WORKSPACE_NAME_MIN_LENGTH).max(WORKSPACE_NAME_MAX_LENGTH).trim(),\n product: ProductCodeSchema,\n priceId: z.string(),\n billingEmail: z.string().email().optional(),\n handle: z\n .string()\n .regex(slugRegex)\n .min(HANDLE_MIN_LENGTH)\n .max(HANDLE_MAX_LENGTH)\n .refine(value => value?.length > 0)\n .optional(),\n invites: UserInvites.optional(),\n promoCode: z.string().optional(),\n});\n\nexport type CreateWorkspaceInput = z.infer<typeof CreateWorkspaceInput>;\n","// Consists of lowercased letters, digits and hyphens.\n// Can not start or end with hyphen.\n// Warning: does not forbid consecutive hyphens\nexport const slugRegex = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;\n","import { WorkspaceRole } from \"./workspace-role\";\nimport { z } from \"zod\";\n\nexport const WorkspaceInvitation = z.object({\n id: z.string(),\n email: z.string().email(),\n createdAt: z.date(),\n resentAt: z.date().nullish(),\n role: z.nativeEnum(WorkspaceRole),\n workspaceId: z.string(),\n invitedBy: z.string(),\n});\n\nexport type WorkspaceInvitation = z.infer<typeof WorkspaceInvitation>;\n","import { WorkspaceRole } from \"./workspace-role\";\nimport { z } from \"zod\";\n\nexport const WorkspaceMembership = z.object({\n id: z.string(),\n userId: z.string(),\n workspaceId: z.string(),\n workspaceRole: z.nativeEnum(WorkspaceRole),\n});\n\nexport type WorkspaceMembership = z.infer<typeof WorkspaceMembership>;\n","import { z } from \"zod\";\nimport { Subscription } from \"../billing\";\nimport { SsoProvider } from \"./sso-provider\";\nimport { DesignSystem } from \"../dsm\";\nimport { BillingDetails } from \"../billing\";\n\nexport const WorkspaceIpWhitelistEntry = z.object({\n isEnabled: z.boolean(),\n name: z.string(),\n range: z.string(),\n});\n\nexport const WorkspaceIpSettings = z\n .object({\n isEnabledForCloud: z.boolean(),\n isEnabledForDocs: z.boolean(),\n entries: z.array(WorkspaceIpWhitelistEntry),\n })\n .nullish();\n\nexport const WorkspaceProfile = z.object({\n name: z.string(),\n handle: z.string(),\n color: z.string(),\n avatar: z.string().optional(),\n billingDetails: BillingDetails.optional(),\n});\n\nexport const Workspace = z.object({\n id: z.string(),\n profile: WorkspaceProfile,\n subscription: Subscription,\n ipWhitelist: WorkspaceIpSettings,\n sso: SsoProvider.nullish(),\n npmRegistrySettings: z.unknown().optional(),\n designSystems: z.array(DesignSystem).nullish(),\n});\n\nexport const WorkspaceWithDesignSystems = z.object({\n workspace: Workspace,\n designSystems: z.array(DesignSystem),\n});\n\nexport type WorkspaceIpWhitelistEntry = z.infer<typeof WorkspaceIpWhitelistEntry>;\nexport type WorkspaceIpSettings = z.infer<typeof WorkspaceIpSettings>;\nexport type WorkspaceProfile = z.infer<typeof WorkspaceProfile>;\nexport type Workspace = z.infer<typeof Workspace>;\nexport type WorkspaceWithDesignSystems = z.infer<typeof WorkspaceWithDesignSystems>;\n","import { z } from \"zod\";\n\nconst DS_NAME_MIN_LENGTH: number = 2;\nconst DS_NAME_MAX_LENGTH: number = 64;\nconst DS_DESC_MIN_LENGTH: number = 2;\nconst DS_DESC_MAX_LENGTH: number = 64;\n\nconst DesignSystemCreateInputMetadata = z.object({\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim(),\n});\n\nexport const DesignSystemCreateInput = z.object({\n meta: DesignSystemCreateInputMetadata,\n workspaceId: z.string(),\n isPublic: z.boolean().optional(),\n basePrefixes: z.array(z.string()).optional(),\n docUserSlug: z.string().nullish().optional(),\n source: z.array(z.string()).optional(),\n});\n\nexport type DesignSystemCreateInput = z.infer<typeof DesignSystemCreateInput>;\n","import { z } from \"zod\";\n\nconst DS_NAME_MIN_LENGTH: number = 2;\nconst DS_NAME_MAX_LENGTH: number = 64;\nconst DS_DESC_MIN_LENGTH: number = 2;\nconst DS_DESC_MAX_LENGTH: number = 64;\n\nconst DesignSystemUpdateInputMetadata = z.object({\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim().optional(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim().optional(),\n});\n\nexport const DesignSystemUpdateInput = z.object({\n meta: DesignSystemUpdateInputMetadata.optional(),\n workspaceId: z.string().optional(),\n isPublic: z.boolean().optional(),\n basePrefixes: z.array(z.string()).optional(),\n docUserSlug: z.string().nullish().optional(),\n source: z.array(z.string()).optional(),\n name: z.string().min(DS_NAME_MIN_LENGTH).max(DS_NAME_MAX_LENGTH).trim().optional(),\n description: z.string().min(DS_DESC_MIN_LENGTH).max(DS_DESC_MAX_LENGTH).trim().optional(),\n docExporterId: z.string().optional(),\n});\n\nexport type DesignSystemUpdateInput = z.infer<typeof DesignSystemUpdateInput>;\n","import { z } from \"zod\";\n\nexport const publishedDocEnvironments = [\"Live\", \"Preview\"] as const;\nexport const PublishedDocEnvironment = z.enum(publishedDocEnvironments);\n\nexport const PublishedDocsChecksums = z.record(z.string());\n\nexport const PublishedDocRoutingVersion = z.enum([\"1\", \"2\"]);\n\nexport const PublishedDoc = z.object({\n id: z.string(),\n designSystemVersionId: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n lastPublishedAt: z.date(),\n isDefault: z.boolean(),\n isPublic: z.boolean(),\n environment: PublishedDocEnvironment,\n checksums: PublishedDocsChecksums,\n storagePath: z.string(),\n wasMigrated: z.boolean(),\n routingVersion: PublishedDocRoutingVersion,\n usesLocalizations: z.boolean(),\n wasPublishedWithLocalizations: z.boolean(),\n});\n\nexport type PublishedDocEnvironment = z.infer<typeof PublishedDocEnvironment>;\nexport type PublishedDocsChecksums = z.infer<typeof PublishedDocsChecksums>;\nexport type PublishedDocRoutingVersion = z.infer<typeof PublishedDocRoutingVersion>;\nexport type PublishedDoc = z.infer<typeof PublishedDoc>;\n","import { PublishedDocEnvironment } from \"../dsm\";\nimport { z } from \"zod\";\nexport const ExportJobStatus = z.union([\n z.literal(\"Success\"),\n z.literal(\"InProgress\"),\n z.literal(\"Timeout\"),\n z.literal(\"Failed\"),\n]);\n\nexport type ExportJobStatus = z.infer<typeof ExportJobStatus>;\n\nexport const ExportJob = z.object({\n id: z.string(),\n workspaceId: z.string(),\n designSystemId: z.string(),\n designSystemVersionId: z.string(),\n status: ExportJobStatus,\n docsUrl: z.string().nullish(),\n scheduleId: z.string().nullish(),\n exporterId: z.string().nullish(),\n createdAt: z.date(),\n environment: PublishedDocEnvironment,\n finishedAt: z.date().nullish(),\n});\n\nexport type ExportJob = z.infer<typeof ExportJob>;\n","import { z } from \"zod\";\n\nexport const ExporterWorkspaceMembershipRole = z.enum([\"Owner\", \"OwnerArchived\", \"User\"]);\nexport type ExporterWorkspaceMembershipRole = z.infer<typeof ExporterWorkspaceMembershipRole>;\n","import { z } from \"zod\";\nimport { ExporterWorkspaceMembershipRole } from \"./exporter-workspace-membership-role\";\nimport { DbCreateInputOmit } from \"../helpers\";\n\nexport const ExporterWorkspaceMembership = z.object({\n id: z.string(),\n workspaceId: z.string(),\n exporterId: z.string(),\n role: ExporterWorkspaceMembershipRole,\n});\n\nexport type ExporterWorkspaceMembership = z.infer<typeof ExporterWorkspaceMembership>;\n\nexport type CreateExporterMembership = DbCreateInputOmit<ExporterWorkspaceMembership>;\n","import { z } from \"zod\";\nimport { GitProvider } from \"./git-providers\";\nimport { PulsarContributionBlock, PulsarContributionConfigurationProperty, PulsarContributionVariant } from \"./pulsar\";\nimport { nullishToOptional } from \"../helpers\";\n\nexport const ExporterType = z.enum([\"code\", \"documentation\"]);\nexport const ExporterSource = z.enum([\"git\", \"upload\"]);\nexport const ExporterTag = z.string().regex(/^[0-9a-zA-Z]+(\\s[0-9a-zA-Z]+)*$/);\n\nexport const ExporterDetails = z.object({\n packageId: z.string().max(255),\n version: z.string(),\n description: z.string(),\n author: nullishToOptional(z.string()),\n organization: nullishToOptional(z.string()),\n homepage: nullishToOptional(z.string()),\n readme: nullishToOptional(z.string()),\n tags: z.array(ExporterTag).default([]),\n\n routingVersion: nullishToOptional(z.string()),\n\n iconURL: nullishToOptional(z.string()),\n configurationProperties: z.array(PulsarContributionConfigurationProperty).default([]),\n customBlocks: z.array(PulsarContributionBlock).default([]),\n blockVariants: z.record(z.string(), z.array(PulsarContributionVariant)).default({}),\n\n usesBrands: z.boolean().default(false),\n usesThemes: z.boolean().default(false),\n\n source: ExporterSource,\n\n gitProvider: nullishToOptional(GitProvider),\n gitUrl: nullishToOptional(z.string()),\n gitBranch: nullishToOptional(z.string()),\n gitDirectory: nullishToOptional(z.string()),\n});\n\nexport const Exporter = z.object({\n id: z.string(),\n createdAt: z.coerce.date(),\n name: z.string(),\n isPrivate: z.boolean(),\n details: ExporterDetails,\n exporterType: ExporterType.default(\"code\"),\n storagePath: z.string().default(\"\"),\n});\n\nexport type ExporterType = z.infer<typeof ExporterType>;\nexport type ExporterSource = z.infer<typeof ExporterSource>;\nexport type ExporterTag = z.infer<typeof ExporterTag>;\nexport type ExporterDetails = z.infer<typeof ExporterDetails>;\nexport type Exporter = z.infer<typeof Exporter>;\n","import { z } from \"zod\";\n\nexport enum GitProviderNames {\n Azure = \"azure\",\n Github = \"github\",\n Gitlab = \"gitlab\",\n Bitbucket = \"bitbucket\",\n}\n\nexport const GitProvider = z.nativeEnum(GitProviderNames);\nexport type GitProvider = z.infer<typeof GitProvider>;\n","import { z } from \"zod\";\n\nexport const PulsarContributionVariant = z.object({\n key: z.string(),\n name: z.string(),\n isDefault: z.boolean().optional(),\n description: z.string().optional(),\n thumbnailURL: z.string().optional(),\n});\nexport type PulsarContributionVariant = z.infer<typeof PulsarContributionVariant>;\n\nexport const PulsarPropertyType = z.enum([\n \"string\",\n \"number\",\n \"boolean\",\n \"image\",\n \"enum\",\n \"color\",\n \"typography\",\n \"component\",\n \"componentProperties\",\n \"tokenProperties\",\n \"tokenType\",\n]);\nexport type PulsarPropertyType = z.infer<typeof PulsarPropertyType>;\n\n// export type PulsarPropertyValueType =\n// | string\n// | number\n// | boolean\n// | PulsarPropertyImageValue\n// | ColorTokenData // TODO: Should we do smth here? Update Pulsar to get value?!\n// | TypographyTokenData;\n\nexport const BasePulsarProperty = z.object({\n label: z.string(),\n key: z.string(),\n description: z.string().optional(),\n type: PulsarPropertyType,\n values: z.array(z.string()).optional(),\n default: z.union([z.string(), z.boolean(), z.number()]).nullish(), // PulsarPropertyValueType //is optional?\n inputType: z.enum([\"code\", \"plain\"]).optional(), //is optional?\n isMultiline: z.boolean().optional(),\n});\nexport type BasePulsarProperty = z.infer<typeof BasePulsarProperty>;\n\nexport const PulsarContributionBlock = z.object({\n title: z.string(),\n key: z.string(),\n category: z.string(),\n description: z.string().optional(),\n iconURL: z.string(),\n mode: z.enum([\"array\", \"block\"]),\n properties: z.array(BasePulsarProperty),\n});\nexport type PulsarContributionBlock = z.infer<typeof PulsarContributionBlock>;\n\nexport const PulsarContributionConfigurationProperty = BasePulsarProperty.extend({ category: z.string() });\nexport type PulsarContributionConfigurationProperty = z.infer<typeof PulsarContributionConfigurationProperty>;\n","import { z } from \"zod\";\n\nexport type CustomDomainState =\n | \"Initial\"\n | \"DomainSetupInProgress\"\n | \"DomainSetupFailed\"\n | \"DomainSetupSuccess\"\n | \"SSLSetupInProgress\"\n | \"SSLSetupFailed\"\n | \"SSLSetupSuccess\";\n\nexport const CustomDomain = z.object({\n id: z.string(),\n designSystemId: z.string(),\n state: z.string(),\n\n supernovaDomain: z.string(),\n customerDomain: z.string().nullish(),\n\n error: z.string().nullish(),\n errorCode: z.string().nullish(),\n});\n\nexport type CustomDomain = z.infer<typeof CustomDomain>;\n","import { z } from \"zod\";\nimport { User } from \"../users\";\n\nexport const NpmProxyToken = z.object({\n access: z.string(),\n expiresAt: z.number(),\n});\n\nexport type NpmProxyToken = z.infer<typeof NpmProxyToken>;\n\nexport const SessionData = z.object({\n returnToUrl: z.string().optional(),\n npmProxyToken: NpmProxyToken.optional(),\n});\n\nexport type SessionData = z.infer<typeof SessionData>;\n\nexport const Session = z.object({\n id: z.string(),\n expiresAt: z.date(),\n userId: z.string().nullable(),\n data: SessionData,\n});\n\nexport type Session = z.infer<typeof Session>;\n\nexport const AuthTokens = z.object({\n access: z.string(),\n refresh: z.string(),\n});\n\nexport type AuthTokens = z.infer<typeof AuthTokens>;\n\nexport const UserSession = z.object({\n session: Session,\n user: User.nullable(),\n});\n\nexport type UserSession = z.infer<typeof UserSession>;\n","import { z } from \"zod\";\n\nexport const IntegrationAuthType = z.union([z.literal(\"OAuth2\"), z.literal(\"PAT\")]);\n\nexport type IntegrationAuthType = z.infer<typeof IntegrationAuthType>;\n\nexport const ExternalServiceType = z.union([\n z.literal(\"figma\"),\n z.literal(\"github\"),\n z.literal(\"azure\"),\n z.literal(\"gitlab\"),\n z.literal(\"bitbucket\"),\n]);\n\nexport type ExternalServiceType = z.infer<typeof ExternalServiceType>;\n\nexport const IntegrationUserInfo = z.object({\n id: z.string(),\n handle: z.string().optional(),\n avatarUrl: z.string().optional(),\n email: z.string().optional(),\n authType: IntegrationAuthType.optional(),\n customUrl: z.string().optional(),\n});\n\nexport type IntegrationUserInfo = z.infer<typeof IntegrationUserInfo>;\n\nexport const UserLinkedIntegrations = z.object({\n figma: IntegrationUserInfo.optional(),\n github: IntegrationUserInfo.array().optional(),\n azure: IntegrationUserInfo.array().optional(),\n gitlab: IntegrationUserInfo.array().optional(),\n bitbucket: IntegrationUserInfo.array().optional(),\n});\n\nexport type UserLinkedIntegrations = z.infer<typeof UserLinkedIntegrations>;\n","import { z } from \"zod\";\n\nexport const UserIdentity = z.object({\n id: z.string(),\n userId: z.string(),\n});\n\nexport type UserIdentity = z.infer<typeof UserIdentity>;\n","import { z } from \"zod\";\n\nexport const UserOnboardingDepartment = z.enum([\"Design\", \"Engineering\", \"Brand\", \"Other\"]);\n\nexport const UserOnboardingJobLevel = z.enum([\"Executive\", \"Manager\", \"IndividualContributor\", \"Other\"]);\n\nexport const UserOnboarding = z.object({\n companyName: z.string().optional(),\n numberOfPeopleInOrg: z.string().optional(),\n numberOfPeopleInDesignTeam: z.string().optional(),\n department: UserOnboardingDepartment.optional(),\n jobTitle: z.string().optional(),\n phase: z.string().optional(),\n jobLevel: UserOnboardingJobLevel.optional(),\n});\n\nexport type UserOnboarding = z.infer<typeof UserOnboarding>;\n\nexport const UserProfile = z.object({\n name: z.string(),\n avatar: z.string().optional(),\n nickname: z.string().optional(),\n onboarding: UserOnboarding.optional(),\n});\n\nexport type UserProfile = z.infer<typeof UserProfile>;\n","import { UserLinkedIntegrations } from \"./linked-integrations\";\nimport { UserProfile } from \"./user-profile\";\nimport { z } from \"zod\";\n\nexport const User = z.object({\n id: z.string(),\n email: z.string(),\n emailVerified: z.boolean(),\n createdAt: z.date(),\n trialExpiresAt: z.date().optional(),\n profile: UserProfile,\n linkedIntegrations: UserLinkedIntegrations.optional(),\n loggedOutAt: z.date().optional(),\n isProtected: z.boolean(),\n});\n\nexport type User = z.infer<typeof User>;\n","import { z } from \"zod\";\n\nexport const FlaggedFeature = z.enum([\"FigmaImporterV2\"]);\nexport const FeatureFlagMap = z.record(FlaggedFeature, z.boolean());\nexport const FeatureFlag = z.object({\n id: z.string(),\n feature: FlaggedFeature,\n createdAt: z.date(),\n enabled: z.boolean(),\n});\n\nexport type FlaggedFeature = z.infer<typeof FlaggedFeature>;\nexport type FeatureFlagMap = z.infer<typeof FeatureFlagMap>;\nexport type FeatureFlag = z.infer<typeof FeatureFlag>;\n","import { z } from \"zod\";\nimport { OAuthProviderSchema } from \"./oauth-providers\";\n\nexport const ExternalOAuthRequest = z.object({\n id: z.string(),\n provider: OAuthProviderSchema,\n userId: z.string(),\n state: z.string(),\n createdAt: z.date(),\n});\n\nexport type ExternalOAuthRequest = z.infer<typeof ExternalOAuthRequest>;\n","import { z } from \"zod\";\n\nexport enum OAuthProviderNames {\n Figma = \"figma\",\n Azure = \"azure\",\n Github = \"github\",\n Gitlab = \"gitlab\",\n Bitbucket = \"bitbucket\",\n}\n\nexport const OAuthProviderSchema = z.nativeEnum(OAuthProviderNames);\nexport type OAuthProvider = z.infer<typeof OAuthProviderSchema>;\nexport const OAuthProvider = OAuthProviderSchema.enum;\n","import { z } from \"zod\";\nimport { OAuthProviderSchema } from \"./oauth-providers\";\n\nexport const IntegrationTokenSchema = z.object({\n id: z.string(),\n provider: OAuthProviderSchema,\n scope: z.string(),\n userId: z.string(),\n accessToken: z.string(),\n refreshToken: z.string(),\n expiresAt: z.date(),\n externalUserId: z.string().nullish(),\n});\n\nexport type IntegrationToken = z.infer<typeof IntegrationTokenSchema>;\n","import { z } from \"zod\";\nimport { Entity } from \"../common/entity\";\nimport { DbCreateInputOmit, DbUpdate } from \"../helpers\";\n\nexport const DesignSystemVersionRoom = Entity.extend({\n designSystemVersionId: z.string(),\n liveblocksId: z.string(),\n});\n\nexport type DesignSystemVersionRoom = z.infer<typeof DesignSystemVersionRoom>;\n\nexport type CreateDesignSystemVersionRoom = DbCreateInputOmit<DesignSystemVersionRoom>;\nexport type UpdateDesignSystemVersionRoom = DbUpdate<DesignSystemVersionRoom>;\n","import { z } from \"zod\";\nimport { Entity } from \"../common/entity\";\nimport { DbCreateInputOmit, DbUpdate } from \"../helpers\";\n\nexport const DocumentationPageRoom = Entity.extend({\n designSystemVersionId: z.string(),\n documentationPageId: z.string(),\n liveblocksId: z.string(),\n});\n\nexport type DocumentationPageRoom = z.infer<typeof DocumentationPageRoom>;\n\nexport type CreateDocumentationPageRoom = DbCreateInputOmit<DocumentationPageRoom>;\nexport type UpdateDocumentationPageRoom = DbUpdate<DocumentationPageRoom>;\n","import { z } from \"zod\";\n\nconst AnyRecord = z.record(z.any());\n\nconst NpmPackageVersionDist = AnyRecord.and(\n z.object({\n tarball: z.string(),\n })\n);\n\nconst NpmPackageVersion = AnyRecord.and(\n z.object({\n dist: NpmPackageVersionDist,\n })\n);\n\nexport const NpmPackage = AnyRecord.and(\n z.object({\n _id: z.string(),\n name: z.string(),\n\n // e.g. \"latest\": \"1.2.3\"\n \"dist-tags\": z.record(z.string(), z.string()),\n\n // \"1.2.3\": {...}\n versions: z.record(NpmPackageVersion),\n })\n);\n\nexport type NpmPackage = z.infer<typeof NpmPackage>;\n","import { z } from \"zod\";\n\nexport const NpmProxyTokenPayload = z.object({\n npmProxyRegistryConfigId: z.string(),\n});\n\nexport type NpmProxyTokenPayload = z.infer<typeof NpmProxyTokenPayload>;\n","import { z } from \"zod\";\nimport { WorkspaceRoleSchema } from \"../workspace\";\n\nexport const PersonalAccessToken = z.object({\n id: z.string(),\n userId: z.string(),\n name: z.string(),\n token: z.string(),\n createdAt: z.date(),\n hidden: z.boolean(),\n workspaceId: z.string().optional(),\n workspaceRole: WorkspaceRoleSchema.optional(),\n expireAt: z.date().optional(),\n scope: z.string().optional(),\n});\n\nexport type PersonalAccessToken = z.infer<typeof PersonalAccessToken>;\n","import { z } from \"zod\";\n\nexport const ContentLoadInstruction = z.object({\n from: z.string(),\n to: z.string(),\n authorizationHeaderKvsId: z.string().optional(),\n timeout: z.number().optional(),\n});\n\nexport type ContentLoadInstruction = z.infer<typeof ContentLoadInstruction>;\n\nexport const ContentLoaderPayload = z\n .object({\n type: z.literal(\"Single\"),\n instruction: ContentLoadInstruction,\n })\n .or(\n z.object({\n type: z.literal(\"Multiple\"),\n loadingChunkSize: z.number().optional(),\n instructions: z.array(ContentLoadInstruction),\n })\n )\n .or(\n z.object({\n type: z.literal(\"S3\"),\n location: z.string(),\n })\n );\n\nexport type ContentLoaderPayload = z.infer<typeof ContentLoaderPayload>;\n","import { PageBlockDefinition } from \"@supernova-studio/model\";\nimport { z } from \"zod\";\n\nexport const GetBlockDefinitionsResponse = z.object({\n definitions: z.array(PageBlockDefinition),\n});\n\nexport type GetBlockDefinitionsResponse = z.infer<typeof GetBlockDefinitionsResponse>;\n","import { PageBlockDataV2 } from \"@supernova-studio/model\";\nimport { z } from \"zod\";\n\nexport const PageBlockEditorModel = z.object({\n id: z.string(),\n data: PageBlockDataV2,\n});\n\nexport type PageBlockEditorModel = z.infer<typeof PageBlockEditorModel>;\n","import { z } from \"zod\";\nimport { PageBlockEditorModel } from \"./block\";\n\nexport const DocumentationPageEditorModel = z.object({\n blocks: z.array(PageBlockEditorModel),\n});\n\nexport type DocumentationPageEditorModel = z.infer<typeof DocumentationPageEditorModel>;\n","import { Schema } from \"prosemirror-model\";\n\nconst newSchema = {\n nodes: {\n paragraph: {\n name: \"paragraph\",\n spec: {\n content: \"inline*\",\n group: \"block\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.rich-text\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"p\",\n },\n ],\n },\n markSet: null,\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.rich-text\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.rich-text\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n reactComponent: {\n name: \"reactComponent\",\n spec: {\n group: \"block\",\n atom: true,\n draggable: true,\n attrs: {\n count: {\n default: 0,\n },\n },\n parseDOM: [\n {\n tag: \"react-component\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n count: {\n hasDefault: true,\n default: 0,\n },\n },\n defaultAttrs: {\n count: 0,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableRow: {\n name: \"tableRow\",\n spec: {\n tableRole: \"row\",\n content: \"(tableCell | tableHeader)*\",\n parseDOM: [\n {\n tag: \"tr\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n table: {\n name: \"table\",\n spec: {\n tableRole: \"table\",\n content: \"tableRow+\",\n group: \"defaultTable\",\n isolating: true,\n parseDOM: [\n {\n tag: \"table\",\n },\n ],\n },\n markSet: [],\n groups: [\"defaultTable\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableCell: {\n name: \"tableCell\",\n spec: {\n tableRole: \"cell\",\n content: \"(paragraph|image)+\",\n isolating: true,\n attrs: {\n textAlign: {\n default: \"left\",\n },\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"td\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n textAlign: {\n hasDefault: true,\n default: \"left\",\n },\n colspan: {\n hasDefault: true,\n default: 1,\n },\n rowspan: {\n hasDefault: true,\n default: 1,\n },\n colwidth: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n textAlign: \"left\",\n colspan: 1,\n rowspan: 1,\n colwidth: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableHeader: {\n name: \"tableHeader\",\n spec: {\n tableRole: \"header_cell\",\n content: \"(paragraph|image)+\",\n isolating: true,\n attrs: {\n textAlign: {\n default: \"left\",\n },\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"th\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n textAlign: {\n hasDefault: true,\n default: \"left\",\n },\n colspan: {\n hasDefault: true,\n default: 1,\n },\n rowspan: {\n hasDefault: true,\n default: 1,\n },\n colwidth: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n textAlign: \"left\",\n colspan: 1,\n rowspan: 1,\n colwidth: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tableContainer: {\n name: \"tableContainer\",\n spec: {\n content: \"table\",\n group: \"block\",\n atom: true,\n draggable: false,\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.table\",\n },\n variantId: {\n default: \"default\",\n },\n hasBorder: {\n default: true,\n },\n },\n parseDOM: [\n {\n tag: \"tableContainer\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.table\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n hasBorder: {\n hasDefault: true,\n default: true,\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.table\",\n variantId: \"default\",\n hasBorder: true,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n image: {\n name: \"image\",\n spec: {\n group: \"block\",\n inline: false,\n draggable: true,\n attrs: {\n src: {\n default: null,\n },\n alt: {\n default: null,\n },\n title: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: 'img[src]:not([src^=\"data:\"])',\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n src: {\n hasDefault: true,\n default: null,\n },\n alt: {\n hasDefault: true,\n default: null,\n },\n title: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n src: null,\n alt: null,\n title: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n codeBlock: {\n name: \"codeBlock\",\n spec: {\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n attrs: {\n language: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n language: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n language: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n hardBreak: {\n name: \"hardBreak\",\n spec: {\n group: \"inline\",\n inline: true,\n selectable: false,\n parseDOM: [\n {\n tag: \"br\",\n },\n ],\n },\n markSet: [],\n groups: [\"inline\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: false,\n isText: false,\n },\n text: {\n name: \"text\",\n spec: {\n group: \"inline\",\n },\n markSet: [],\n groups: [\"inline\"],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: false,\n isText: true,\n },\n heading: {\n name: \"heading\",\n spec: {\n content: \"inline*\",\n group: \"block\",\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n level: {\n default: 1,\n },\n definitionId: {\n default: null,\n },\n variantId: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"h1\",\n attrs: {\n level: 1,\n definitionId: \"io.supernova.block.title1\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h2\",\n attrs: {\n level: 2,\n definitionId: \"io.supernova.block.title2\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h3\",\n attrs: {\n level: 3,\n definitionId: \"io.supernova.block.title3\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h4\",\n attrs: {\n level: 4,\n definitionId: \"io.supernova.block.title4\",\n variantId: \"default\",\n },\n },\n {\n tag: \"h5\",\n attrs: {\n level: 5,\n definitionId: \"io.supernova.block.title5\",\n variantId: \"default\",\n },\n },\n ],\n },\n markSet: null,\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n level: {\n hasDefault: true,\n default: 1,\n },\n definitionId: {\n hasDefault: true,\n default: null,\n },\n variantId: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n level: 1,\n definitionId: null,\n variantId: null,\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n listItem: {\n name: \"listItem\",\n spec: {\n content: \"paragraph (paragraph | list)*\",\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"li\",\n },\n ],\n },\n markSet: [],\n groups: [],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n orderedList: {\n name: \"orderedList\",\n spec: {\n content: \"listItem+\",\n group: \"block list topLevel\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.ordered-list\",\n },\n variantId: {\n default: \"default\",\n },\n start: {\n default: 1,\n },\n },\n parseDOM: [\n {\n tag: \"ol\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\", \"list\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.ordered-list\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n start: {\n hasDefault: true,\n default: 1,\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.ordered-list\",\n variantId: \"default\",\n start: 1,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n bulletList: {\n name: \"bulletList\",\n spec: {\n content: \"listItem+\",\n group: \"block list topLevel\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.unordered-list\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"ul\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\", \"list\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.unordered-list\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.unordered-list\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n horizontalRule: {\n name: \"horizontalRule\",\n spec: {\n group: \"block\",\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.divider\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"div.node-horizontalRule\",\n },\n {\n tag: \"hr\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.divider\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.divider\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n blockquote: {\n name: \"blockquote\",\n spec: {\n content: \"paragraph+\",\n group: \"block\",\n defining: true,\n attrs: {\n definitionId: {\n default: \"io.supernova.block.blockquote\",\n },\n variantId: {\n default: \"default\",\n },\n },\n parseDOM: [\n {\n tag: \"blockquote\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.blockquote\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n },\n defaultAttrs: {\n definitionId: \"io.supernova.block.blockquote\",\n variantId: \"default\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n plainSection: {\n name: \"plainSection\",\n spec: {\n content: \"sectionItem\",\n group: \"section topLevel\",\n atom: true,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"section\",\n attrs: {\n \"data-section-type\": \"plain\",\n },\n },\n ],\n },\n markSet: [],\n groups: [\"section\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n tabsSection: {\n name: \"tabsSection\",\n spec: {\n content: \"sectionItem+\",\n group: \"section topLevel\",\n atom: true,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"div\",\n },\n ],\n },\n markSet: [],\n groups: [\"section\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n sectionItem: {\n name: \"sectionItem\",\n spec: {\n content: \"sectionItemColumn{1, 3}\",\n group: \"sectionItem\",\n atom: true,\n selectable: false,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n title: {\n default: \"\",\n },\n },\n parseDOM: [\n {\n tag: \"section-item\",\n },\n ],\n },\n markSet: [],\n groups: [\"sectionItem\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n title: {\n hasDefault: true,\n default: \"\",\n },\n },\n defaultAttrs: {\n id: null,\n title: \"\",\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n sectionItemColumn: {\n name: \"sectionItemColumn\",\n spec: {\n content: \"block+\",\n group: \"sectionItemColumn\",\n atom: true,\n selectable: false,\n draggable: false,\n isolating: true,\n attrs: {\n id: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: \"section-item-column\",\n },\n ],\n },\n markSet: [],\n groups: [\"sectionItemColumn\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n },\n defaultAttrs: {\n id: null,\n },\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n doc: {\n name: \"doc\",\n spec: {\n content: \"(block|section)+\",\n },\n markSet: [],\n groups: [],\n attrs: {},\n defaultAttrs: {},\n contentMatch: {\n validEnd: false,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n callout: {\n name: \"callout\",\n spec: {\n content: \"inline*\",\n group: \"block topLevel\",\n draggable: true,\n defining: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: \"io.supernova.block.callout\",\n },\n variantId: {\n default: \"default\",\n },\n type: {\n default: \"neutral\",\n },\n },\n parseDOM: [\n {\n tag: \"callout\",\n },\n ],\n },\n markSet: null,\n groups: [\"block\", \"topLevel\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: \"io.supernova.block.callout\",\n },\n variantId: {\n hasDefault: true,\n default: \"default\",\n },\n type: {\n hasDefault: true,\n default: \"neutral\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: \"io.supernova.block.callout\",\n variantId: \"default\",\n type: \"neutral\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: true,\n isBlock: true,\n isText: false,\n },\n blockNode: {\n name: \"blockNode\",\n spec: {\n group: \"block\",\n atom: true,\n attrs: {\n id: {\n default: null,\n },\n definitionId: {\n default: null,\n },\n variantId: {\n default: null,\n },\n columns: {\n default: 1,\n },\n items: {\n default: \"[]\",\n },\n },\n parseDOM: [\n {\n tag: \"block-node\",\n },\n ],\n },\n markSet: [],\n groups: [\"block\"],\n attrs: {\n id: {\n hasDefault: true,\n default: null,\n },\n definitionId: {\n hasDefault: true,\n default: null,\n },\n variantId: {\n hasDefault: true,\n default: null,\n },\n columns: {\n hasDefault: true,\n default: 1,\n },\n items: {\n hasDefault: true,\n default: \"[]\",\n },\n },\n defaultAttrs: {\n id: null,\n definitionId: null,\n variantId: null,\n columns: 1,\n items: \"[]\",\n },\n contentMatch: {\n validEnd: true,\n wrapCache: [],\n },\n inlineContent: false,\n isBlock: true,\n isText: false,\n },\n },\n marks: {\n link: {\n name: \"link\",\n rank: 0,\n spec: {\n inclusive: true,\n attrs: {\n href: {\n default: null,\n },\n target: {\n default: \"_blank\",\n },\n rel: {\n default: \"noopener noreferrer nofollow\",\n },\n class: {\n default: null,\n },\n itemId: {\n default: null,\n },\n },\n parseDOM: [\n {\n tag: 'a[href]:not([href *= \"javascript:\" i])',\n },\n ],\n },\n attrs: {\n href: {\n hasDefault: true,\n default: null,\n },\n target: {\n hasDefault: true,\n default: \"_blank\",\n },\n rel: {\n hasDefault: true,\n default: \"noopener noreferrer nofollow\",\n },\n class: {\n hasDefault: true,\n default: null,\n },\n itemId: {\n hasDefault: true,\n default: null,\n },\n },\n instance: {\n type: \"link\",\n attrs: {\n href: null,\n target: \"_blank\",\n rel: \"noopener noreferrer nofollow\",\n class: null,\n itemId: null,\n },\n },\n },\n bold: {\n name: \"bold\",\n rank: 1,\n spec: {\n parseDOM: [\n {\n tag: \"strong\",\n },\n {\n tag: \"b\",\n },\n {\n style: \"font-weight\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"bold\",\n },\n },\n code: {\n name: \"code\",\n rank: 2,\n spec: {\n excludes: \"_\",\n code: true,\n parseDOM: [\n {\n tag: \"code\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"code\",\n },\n },\n italic: {\n name: \"italic\",\n rank: 3,\n spec: {\n parseDOM: [\n {\n tag: \"em\",\n },\n {\n tag: \"i\",\n },\n {\n style: \"font-style=italic\",\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"italic\",\n },\n },\n strike: {\n name: \"strike\",\n rank: 4,\n spec: {\n parseDOM: [\n {\n tag: \"s\",\n },\n {\n tag: \"del\",\n },\n {\n tag: \"strike\",\n },\n {\n style: \"text-decoration\",\n consuming: false,\n },\n ],\n },\n attrs: {},\n instance: {\n type: \"strike\",\n },\n },\n },\n} as const;\n\nexport const pmSchema = new Schema(newSchema);\n","import { PageBlockEditorModel } from \"./model/block\";\nimport {\n PageBlockDefinition,\n PageBlockDefinitionPropertyType,\n PageBlockItemV2,\n PageBlockText,\n} from \"@supernova-studio/model\";\n\nexport const BlockParsingUtils = {\n singleBlockItem(block: PageBlockEditorModel) {\n if (!block.data.items.length) throw new Error(`Block ${block.id} has no items`);\n if (block.data.items.length > 1) throw new Error(`Block ${block.id} has more than 1 item`);\n\n return block.data.items[0]!;\n },\n\n richTextPropertyValue(item: PageBlockItemV2, propertyKey: string) {\n const objectValue = this.objectPropertyValue(item, propertyKey);\n const richText = PageBlockText.parse(objectValue);\n\n return richText;\n },\n\n objectPropertyValue(item: PageBlockItemV2, propertyKey: string) {\n const value = this.propertyValue(item, propertyKey);\n\n if (typeof value !== \"object\") {\n throw new Error(`Value for property ${propertyKey} is expected to be an object, but instead is ${typeof value}`);\n }\n\n return value;\n },\n\n propertyValue(item: PageBlockItemV2, propertyKey: string) {\n const value = this.safePropertyValue(item, propertyKey);\n if (!value) throw new Error(`Property ${propertyKey} is not defined on block item`);\n\n return value;\n },\n\n safePropertyValue(item: PageBlockItemV2, propertyKey: string) {\n return item.props[propertyKey] ?? undefined;\n },\n};\n\nexport const BlockDefinitionUtils = {\n firstRichTextProperty(definition: PageBlockDefinition) {\n const property = definition.item.properties.find(p => p.type === \"RichText\");\n if (property) return property;\n return undefined;\n },\n\n firstTableProperty(definition: PageBlockDefinition) {\n const property = definition.item.properties.find(p => p.type === \"RichText\");\n if (property) return property;\n return undefined;\n },\n\n richTextProperty(definition: PageBlockDefinition, propertyKey: string) {\n return this.property(definition, propertyKey, \"RichText\");\n },\n\n property(\n definition: PageBlockDefinition,\n propertyKey: string,\n expectedPropertyType?: PageBlockDefinitionPropertyType\n ) {\n const property = definition.item.properties.find(p => p.id === propertyKey);\n if (!property) {\n throw new Error(`Definition ${definition.id} doesn't contain property ${propertyKey}`);\n }\n\n if (expectedPropertyType && property.type !== expectedPropertyType) {\n throw new Error(\n `Property ${propertyKey} of definition ${definition.id} expected to be ${expectedPropertyType} but was ${property.type}`\n );\n }\n\n return property;\n },\n};\n","import * as Y from \"yjs\";\nimport {\n PageBlockDefinition,\n PageBlockDefinitionProperty,\n PageBlockItemV2,\n PageBlockText,\n PageBlockTextSpan,\n PageBlockTextSpanAttribute,\n PageBlockDefinitionRichTextPropertyStyle,\n} from \"@supernova-studio/model\";\nimport { PageBlockEditorModel } from \"./model/block\";\nimport {\n ProsemirrorBlockItem,\n ProsemirrorBlockItemPropertyValue,\n ProsemirrorNode,\n ProsemirrorMark,\n} from \"./prosemirror/types\";\nimport { BlockDefinitionUtils, BlockParsingUtils } from \"./utils\";\nimport { DocumentationPageEditorModel } from \"./model\";\nimport { prosemirrorJSONToYXmlFragment } from \"y-prosemirror\";\nimport { pmSchema } from \"./prosemirror\";\n\ntype Input = {\n block: PageBlockEditorModel;\n definition: PageBlockDefinition;\n richTextProperty: PageBlockDefinitionProperty;\n};\n\ntype InputWithValue = Input & {\n richTextPropertyValue: PageBlockText;\n};\n\nexport function pageToYXmlFragment(\n page: DocumentationPageEditorModel,\n definitions: PageBlockDefinition[],\n fragment: Y.XmlFragment\n): Y.XmlFragment {\n const doc = pageToProsemirrorDoc(page, definitions);\n return prosemirrorJSONToYXmlFragment(pmSchema, doc, fragment);\n}\n\nexport function pageToProsemirrorDoc(\n page: DocumentationPageEditorModel,\n definitions: PageBlockDefinition[]\n): ProsemirrorNode {\n return {\n type: \"doc\",\n content: page.blocks\n .map(b => {\n const definition = blockDefinitionForBlock(b, definitions);\n return blockToProsemirrorNode(b, definition);\n })\n .filter(nonNullFilter),\n };\n}\n\nexport function blockDefinitionForBlock(block: PageBlockEditorModel, definitions: PageBlockDefinition[]) {\n const definition = definitions.find(d => d.id === block.data.packageId);\n if (!definition) throw new Error(`Could not find definition for ${block.id} (${block.data.packageId})`);\n\n return definition;\n}\n\nexport function blockToProsemirrorNode(\n block: PageBlockEditorModel,\n definition: PageBlockDefinition\n): ProsemirrorNode | null {\n const richTextProperty = BlockDefinitionUtils.firstRichTextProperty(definition);\n\n if (richTextProperty) {\n return serializeAsRichTextBlock({\n block: block,\n definition: definition,\n richTextProperty: richTextProperty,\n });\n }\n\n return serializeAsCustomBlock(block, definition);\n}\n\nexport function serializeAsRichTextBlock(input: Input): ProsemirrorNode {\n const { block, definition, richTextProperty } = input;\n\n const blockItem = BlockParsingUtils.singleBlockItem(block);\n const textPropertyValue = BlockParsingUtils.richTextPropertyValue(blockItem, richTextProperty.id);\n\n const enrichedInput: InputWithValue = { ...input, richTextPropertyValue: textPropertyValue };\n\n const style = richTextProperty.options?.richTextStyle ?? \"Default\";\n\n switch (style) {\n case \"Callout\":\n return serializeAsCallout(enrichedInput);\n case \"Default\":\n return serializeAsParagraph(enrichedInput);\n\n case \"Quote\":\n return serializeAsBlockquote(enrichedInput);\n\n case \"Title1\":\n case \"Title2\":\n case \"Title3\":\n case \"Title4\":\n case \"Title5\":\n return serializeAsHeading(enrichedInput);\n\n // Todo: verify\n case \"OL\":\n case \"UL\":\n throw new Error(`Not allowed!`);\n }\n}\n\n//\n// Blocks\n//\n\nfunction serializeAsParagraph(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"paragraph\",\n attrs: serializeBlockNodeAttributes(input),\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsHeading(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"heading\",\n attrs: {\n ...serializeBlockNodeAttributes(input),\n level: richTextHeadingLevel(input.richTextProperty),\n },\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsBlockquote(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"blockquote\",\n attrs: serializeBlockNodeAttributes(input),\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\nfunction serializeAsCallout(input: InputWithValue): ProsemirrorNode {\n return {\n type: \"callout\",\n attrs: {\n ...serializeBlockNodeAttributes(input),\n\n // TODO Docs: type\n type: \"neutral\",\n },\n content: serializeRichText(input.richTextPropertyValue),\n };\n}\n\n//\n// Attributes\n//\n\nfunction serializeBlockNodeAttributes(input: InputWithValue) {\n const { block } = input;\n\n return {\n id: block.id,\n definitionId: block.data.packageId,\n ...(input.block.data.variantId && { variantId: input.block.data.variantId }),\n };\n}\n\nfunction richTextHeadingLevel(property: PageBlockDefinitionProperty): number | undefined {\n const style = property.options?.style;\n if (!style) return undefined;\n\n switch (style) {\n case \"Title1\":\n return 1;\n case \"Title2\":\n return 2;\n case \"Title3\":\n return 3;\n case \"Title4\":\n return 4;\n case \"Title5\":\n return 5;\n\n case \"OL\":\n case \"UL\":\n case \"Callout\":\n case \"Default\":\n case \"Quote\":\n return undefined;\n }\n}\n\n//\n// Rich text\n//\n\nfunction serializeRichText(richText: PageBlockText) {\n return richText.spans.map(serializeTextSpan).flat();\n}\n\nfunction serializeTextSpan(span: PageBlockTextSpan): ProsemirrorNode[] {\n const marks = span.attributes.map(serializeTextSpanAttribute);\n\n const textParts = span.text.split(\"\\n\");\n const interspersed: ProsemirrorNode[] = [\n {\n type: \"text\",\n text: textParts[0],\n marks: marks,\n },\n ];\n\n for (let i = 1; i < textParts.length; i++) {\n interspersed.push(\n {\n type: \"hardBreak\",\n },\n {\n type: \"text\",\n text: textParts[i],\n marks: marks,\n }\n );\n }\n\n return interspersed;\n}\n\nfunction serializeTextSpanAttribute(spanAttribute: PageBlockTextSpanAttribute): ProsemirrorMark {\n switch (spanAttribute.type) {\n case \"Bold\":\n return { type: \"bold\", attrs: {} };\n case \"Italic\":\n return { type: \"italic\", attrs: {} };\n case \"Strikethrough\":\n return { type: \"strikethrough\", attrs: {} };\n case \"Code\":\n return { type: \"code\", attrs: {} };\n case \"Link\":\n return {\n type: \"link\",\n attrs: {\n itemId: spanAttribute.documentationItemId,\n href: spanAttribute.link,\n target: spanAttribute.openInNewWindow ? \"_blank\" : \"_self\",\n rel: \"noopener noreferrer nofollow\",\n class: null,\n },\n };\n }\n}\n\nexport function serializeAsCustomBlock(block: PageBlockEditorModel, definition: PageBlockDefinition): ProsemirrorNode {\n const items = block.data.items.map(i => serializeItem(i, block, definition));\n\n return {\n type: \"blockNode\",\n attrs: {\n id: block.id,\n definitionId: block.data.packageId,\n variantId: \"default\",\n columns: 1,\n items: JSON.stringify(items),\n\n // TODO Docs: variant, columns\n },\n };\n}\n\nfunction serializeItem(\n item: PageBlockItemV2,\n block: PageBlockEditorModel,\n definition: PageBlockDefinition\n): ProsemirrorBlockItem {\n const result: ProsemirrorBlockItem = {\n properties: [],\n };\n\n for (const property of definition.item.properties) {\n const serializedValue = serializePropertyValue(item, property);\n serializedValue && result.properties.push(serializedValue);\n }\n\n return result;\n}\n\nfunction serializePropertyValue(\n item: PageBlockItemV2,\n property: PageBlockDefinitionProperty\n): ProsemirrorBlockItemPropertyValue | undefined {\n const value = item.props[property.id] ?? undefined;\n if (!value) {\n return undefined;\n }\n\n // TODO Docs: actual property serialization\n\n const result: ProsemirrorBlockItemPropertyValue = {\n id: property.id,\n data: {},\n };\n\n if (typeof value === \"string\") {\n result.data.value = value;\n }\n\n return result;\n}\n\nfunction nonNullFilter<T>(item: T | null): item is T {\n return !!item;\n}\n\n// function serializePropertyValue(item: SDKBlockItem, property: SDKBlockDefinitionProperty) {\n// switch (property.type) {\n// case SDK.DocsBlockItemPropertyType.text: return value as string;\n\n// case SDK.DocsBlockItemPropertyType.richText: return {}\n\n// case SDK.DocsBlockItemPropertyType.boolean: return {}\n// case SDK.DocsBlockItemPropertyType.number: return {}\n// case SDK.DocsBlockItemPropertyType.singleSelect: return {}\n// case SDK.DocsBlockItemPropertyType.multiSelect: return {}\n// case SDK.DocsBlockItemPropertyType.image: return {}\n// case SDK.DocsBlockItemPropertyType.token: return {}\n// case SDK.DocsBlockItemPropertyType.tokenType: return {}\n// case SDK.DocsBlockItemPropertyType.tokenProperty: return {}\n// case SDK.DocsBlockItemPropertyType.component: return {}\n// case SDK.DocsBlockItemPropertyType.componentProperty: return {}\n// case SDK.DocsBlockItemPropertyType.asset: return {}\n// case SDK.DocsBlockItemPropertyType.assetProperty: return {}\n// case SDK.DocsBlockItemPropertyType.page: return {}\n// case SDK.DocsBlockItemPropertyType.pageProperty: return {}\n// case SDK.DocsBlockItemPropertyType.embedURL: return {}\n// case SDK.DocsBlockItemPropertyType.embedFrame: return {}\n// case SDK.DocsBlockItemPropertyType.markdown: return {}\n// case SDK.DocsBlockItemPropertyType.code: return {}\n// case SDK.DocsBlockItemPropertyType.codeSandbox: return {}\n// case SDK.DocsBlockItemPropertyType.table: return {}\n// case SDK.DocsBlockItemPropertyType.divider: return {}\n// case SDK.DocsBlockItemPropertyType.storybook: return {}\n// }\n// }\n\n// richText = \"RichText\",\n// text = \"Text\",\n// boolean = \"Boolean\",\n// number = \"Number\",\n// singleSelect = \"SingleSelect\",\n// multiSelect = \"MultiSelect\",\n// image = \"Image\",\n// token = \"Token\",\n// tokenType = \"TokenType\",\n// tokenProperty = \"TokenProperty\",\n// component = \"Component\",\n// componentProperty = \"ComponentProperty\",\n// asset = \"Asset\",\n// assetProperty = \"AssetProperty\",\n// page = \"Page\",\n// pageProperty = \"PageProperty\",\n// embedURL = \"EmbedURL\",\n// embedFrame = \"EmbedFrame\",\n// markdown = \"Markdown\",\n// code = \"Code\",\n// codeSandbox = \"CodeSandbox\",\n// table = \"Table\",\n// divider = \"Divider\",\n// storybook = \"Storybook\"\n","import { PageBlockDefinition } from \"@supernova-studio/model\";\n\nexport async function getMockPageBlockDefinitions(): Promise<PageBlockDefinition[]> {\n // TODO Blocks\n return blocks;\n}\n\nconst blocks: PageBlockDefinition[] = [\n {\n id: \"io.supernova.block.rich-text\",\n name: \"Text\",\n description: \"Plain text\",\n category: \"Text\",\n searchKeywords: [\"paragraph\", \"rich text\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: {\n placeholder: \"Start writing with plain text\",\n style: \"Default\",\n },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use rich text block to write text and add additional formatting to it.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/text-HxZ9ssJR\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.title1\",\n name: \"Title 1\",\n description: \"Main sections within the page\",\n category: \"Text\",\n searchKeywords: [\"heading\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n options: { placeholder: \"Title 1\", style: \"Title1\" },\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for main sections within the page, introducing broad topics or themes.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/heading-MUKlJ7dY\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.title2\",\n name: \"Title 2\",\n description: \"Section subheadings\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"heading\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { placeholder: \"Title 2\", style: \"Title2\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for subheadings, indicating major subsections under the main sections.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/heading-MUKlJ7dY\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.title3\",\n name: \"Title 3\",\n description: \"Further subsections\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"heading\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { placeholder: \"Title 3\", style: \"Title3\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for further subsections, detailing specific topics within the major subsections.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/heading-MUKlJ7dY\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.title4\",\n name: \"Title 4\",\n description: \"Details in subsections\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"heading\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { placeholder: \"Title 4\", style: \"Title4\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for sub-divisions, elaborating on details within the subsections.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/heading-MUKlJ7dY\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.title5\",\n name: \"Title 5\",\n description: \"Nuanced details or sub-points\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"heading\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { placeholder: \"Title 5\", style: \"Title5\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for nuanced details or specific sub-points within sub-divisions.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/heading-MUKlJ7dY\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.ordered-list\",\n name: \"Ordered list\",\n description: \"A list with numbers\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"ol\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { style: \"OL\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Display a sequence of numbers or letters to indicate order.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/list-UC5iPZLK\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.unordered-list\",\n name: \"Unordered list\",\n description: \"A list with bullet points\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"ul\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { style: \"UL\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"A list of items displayed with bullet points without a specific sequence.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/list-UC5iPZLK\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.divider\",\n name: \"Divider\",\n description: \"A section divider\",\n category: \"Layout\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"hr\", \"line\", \"rule\", \"separator\"],\n item: {\n properties: [\n {\n id: \"divider\",\n name: \"Divider\",\n type: \"Divider\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"divider\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"A thematic break or horizontal rule, often used to separate content or define a change in topic.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/divider-tLuxooLH\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.blockquote\",\n name: \"Blockquote\",\n description: \"Display a quotation\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"cite\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { placeholder: \"Empty quote\", style: \"Quote\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use a blockquote to set off a quotation or cited content from the main text.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/blockquote-zYWAsb6X\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.callout\",\n name: \"Callout\",\n description: \"Highlight a section of text\",\n category: \"Text\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"banner\", \"alert\", \"note\", \"tip\", \"warning\"],\n item: {\n properties: [\n {\n id: \"text\",\n name: \"Text\",\n type: \"RichText\",\n description: undefined,\n options: { style: \"Callout\" },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"text\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use to highlight a section of text.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/text/callout-ZPlZObD1\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.image\",\n name: \"Image\",\n description: \"Display an image or Figma frame\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"image\", \"figma\", \"frame\", \"picture\", \"photo\"],\n item: {\n properties: [\n {\n id: \"image\",\n name: \"Image\",\n type: \"Image\",\n description: undefined,\n options: { allowCaption: true },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"image\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use to display an image or Figma frame.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/media-and-assets/image-Ue8VdT8B\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.shortcut-links\",\n name: \"Shortcut links\",\n description: \"Link to a page or external URL\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [],\n item: {\n properties: [\n {\n id: \"block.links.property.title\",\n name: \"Title\",\n type: \"RichText\",\n description: undefined,\n options: { style: \"Title5\" },\n variantOptions: undefined,\n },\n {\n id: \"block.links.property.description\",\n name: \"Short description\",\n type: \"RichText\",\n description: undefined,\n options: { style: \"Default\", color: \"NeutralFaded\" },\n variantOptions: undefined,\n },\n {\n id: \"block.links.property.image\",\n name: \"Image\",\n type: \"Image\",\n description: undefined,\n options: { width: \"Medium\", aspectRatio: \"Landscape\", allowCaption: false },\n variantOptions: {\n iconOnTop: { width: \"Icon\", aspectRatio: \"Square\" },\n iconOnLeft: { width: \"Icon\", aspectRatio: \"Square\" },\n },\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"imageOnTop\",\n name: \"Image on top\",\n image: \"assets/variant-image-on-top.png\",\n description: undefined,\n documentationLink: undefined,\n layout: {\n type: \"Column\",\n children: [\"block.links.property.image\", \"block.links.property.title\", \"block.links.property.description\"],\n },\n maxColumns: 4,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"imageOnLeft\",\n name: \"Image on left\",\n image: \"assets/variant-image-on-left.png\",\n description: undefined,\n documentationLink: undefined,\n layout: {\n type: \"Row\",\n children: [\n {\n type: \"Column\",\n columnResizing: \"Hug\",\n children: [\"block.links.property.image\"],\n },\n {\n type: \"Column\",\n gap: \"Small\",\n children: [\"block.links.property.title\", \"block.links.property.description\"],\n },\n ],\n },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"iconOnTop\",\n name: \"Icon on top\",\n image: \"assets/variant-icon-on-top.png\",\n description: undefined,\n documentationLink: undefined,\n layout: {\n type: \"Column\",\n children: [\"block.links.property.image\", \"block.links.property.title\", \"block.links.property.description\"],\n },\n maxColumns: 4,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"iconOnLeft\",\n name: \"Icon on left\",\n image: \"assets/variant-icon-on-left.png\",\n description: undefined,\n documentationLink: undefined,\n layout: {\n type: \"Row\",\n children: [\n {\n type: \"Column\",\n columnResizing: \"Hug\",\n children: [\"block.links.property.image\"],\n },\n {\n type: \"Column\",\n gap: \"Small\",\n children: [\"block.links.property.title\", \"block.links.property.description\"],\n },\n ],\n },\n maxColumns: 2,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"imageOnTop\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: -1, allowLinks: true },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use link block to create single or multiple links to places in or out of your documentation.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/links/shortcuts/general-jVfNifo4\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.color-accessibility-grid\",\n name: \"Accessibility Color Grid\",\n description: \"Visualize accessibility of your color tokens.\",\n category: \"Tokens\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"color\", \"accessibility\", \"grid\", \"contrast\", \"blind\", \"impairment\"],\n item: {\n properties: [\n {\n id: \"tokens\",\n name: \"Tokens\",\n type: \"Token\",\n description: undefined,\n options: { allowedTypes: [\"Color\"], allowPropertySelection: false, allowThemeSelection: false },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Token\",\n items: undefined,\n entities: { selectionType: \"Group\", maxSelected: 2 },\n },\n editorOptions: {\n onboarding: {\n helpText: \"Visualize accessibility of your colors and compare token groups to one another.\",\n documentationLink: \"https://learn.supernova.io\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.embed\",\n name: \"Embed\",\n description: \"Embed a generic URL\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"embed\", \"url\", \"iframe\", \"site\", \"import\"],\n item: {\n properties: [\n {\n id: \"embedUrl\",\n name: \"Embed URL\",\n type: \"EmbedURL\",\n description: undefined,\n options: {\n allowCaption: true,\n allowResize: true,\n defaultHeight: 400,\n urlValidationRegex: \"^(https?://)?(www.)?.+$\",\n },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"embedUrl\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed any page to your documentation as an iframe.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/media-and-assets/embed/public-url-2ZeRQ332\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.embed-youtube\",\n name: \"YouTube\",\n description: \"Embed a Youtube video\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"embed\", \"video\", \"player\", \"upload\"],\n item: {\n properties: [\n {\n id: \"embed\",\n name: \"Youtube URL\",\n type: \"EmbedURL\",\n description: undefined,\n options: {\n allowCaption: false,\n allowResize: false,\n defaultHeight: 400,\n urlValidationRegex: \"^(https?://)?(www.)?(youtube.com|youtu.?be)/.+$\",\n },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"embed\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed a YouTube video to your documentation.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/media-and-assets/youtube-Gh8VUrSF\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.embed-lottie\",\n name: \"Lottie animation\",\n description: \"Preview a Lottie animation\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"embed\", \"lottie\", \"animation\", \"rive\", \"json\"],\n item: {\n properties: [\n {\n id: \"embed\",\n name: \"Lottie URL\",\n type: \"EmbedURL\",\n description: undefined,\n options: {\n allowCaption: false,\n allowResize: true,\n defaultHeight: 400,\n urlValidationRegex:\n \"^(https?:\\\\/\\\\/)?([\\\\w\\\\d\\\\-\\\\.]+)\\\\.([\\\\w]+)(\\\\/[\\\\w\\\\d_\\\\-\\\\.\\\\/]*)?(\\\\.json|\\\\.lottie)$\\n\",\n },\n variantOptions: undefined,\n },\n {\n id: \"autoplay\",\n name: \"Autoplay\",\n type: \"Boolean\",\n description: undefined,\n options: { defaultValue: true },\n variantOptions: undefined,\n },\n {\n id: \"loop\",\n name: \"Loop\",\n type: \"Boolean\",\n description: undefined,\n options: { defaultValue: true },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"embed\", \"autoplay\", \"loop\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed a Lottie animation to your documentation.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/media-and-assets/lottie-preview-7CqFdGv9\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.storybook\",\n name: \"Storybook\",\n description: \"Embed Storybook canvas\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"storybook\", \"story\", \"stories\", \"example\", \"preview\", \"code\", \"react\"],\n item: {\n properties: [\n {\n id: \"embed\",\n name: \"Storybook URL\",\n type: \"Storybook\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"embed\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed a Storybook story to your documentation.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/code/storybook-1EGPhwBl\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.embed-figma\",\n name: \"Figma embed\",\n description: \"Embed a Figma canvas or prototype\",\n category: \"Media\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"embed\", \"figma\", \"design\", \"prototype\", \"canvas\"],\n item: {\n properties: [\n {\n id: \"embed\",\n name: \"Figma URl\",\n type: \"EmbedURL\",\n description: undefined,\n options: {\n allowCaption: false,\n allowResize: true,\n defaultHeight: 400,\n urlValidationRegex: \"^(https?://)?(www.)?(figma.com)/.+$\",\n },\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"embed\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed a Figma canvas or prototype to your documentation.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/figma/embed-figma-GPNJsT8A\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.markdown\",\n name: \"Markdown\",\n description: \"Render Markdown URL\",\n category: \"Other\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"md\", \"embed\", \"api\", \"table\", \"mdx\"],\n item: {\n properties: [\n {\n id: \"markdownUrl\",\n name: \"Markdown URL\",\n type: \"Markdown\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"markdownUrl\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Embed and process markdown from URL.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/code/markdown/general-B8wQVOem\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.table\",\n name: \"Table\",\n description: \"Display a simple table\",\n category: \"Layout\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"grid\", \"data\", \"spreadsheet\", \"api\"],\n item: {\n properties: [\n {\n id: \"table\",\n name: \"Table\",\n type: \"Table\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"default\",\n name: \"Default\",\n image: undefined,\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"table\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"default\",\n },\n behavior: {\n dataType: \"Item\",\n items: { numberOfItems: 1, allowLinks: false },\n entities: undefined,\n },\n editorOptions: {\n onboarding: {\n helpText: \"Use for displaying data in a tabular format.\",\n documentationLink: \"https://learn.supernova.io/latest/documentation/types-of-blocks/layout/table-R8KGnxej\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.token-detail\",\n name: \"Token detail\",\n description: \"Show a single design tokens\",\n category: \"Tokens\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"color\", \"typography\", \"spacing\", \"grid\", \"material\", \"theme\"],\n item: {\n properties: [\n {\n id: \"tokens\",\n name: \"Tokens\",\n type: \"Token\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"table\",\n name: \"Table Row\",\n image: \"assets/variant-table.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"grid\",\n name: \"Grid Item\",\n image: \"assets/variant-grid.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"color-stack\",\n name: \"Color stack item\",\n image: \"assets/variant-color-stack.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"table\",\n },\n behavior: {\n dataType: \"Token\",\n items: undefined,\n entities: { selectionType: \"Entity\", maxSelected: 1 },\n },\n editorOptions: {\n onboarding: {\n helpText: \"Show a single design token.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/token/tokens/general-84NRgxGl#section-token-detail-04\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.token-list\",\n name: \"Token list\",\n description: \"Show a list of design tokens\",\n category: \"Tokens\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"color\", \"typography\", \"spacing\", \"grid\", \"material\", \"theme\", \"accessibility\", \"contrast\"],\n item: {\n properties: [\n {\n id: \"tokens\",\n name: \"Tokens\",\n type: \"Token\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"table\",\n name: \"Table\",\n image: \"assets/variant-table.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"grid\",\n name: \"Grid\",\n image: \"assets/variant-grid.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 4,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"color-stack\",\n name: \"Color stack\",\n image: \"assets/variant-color-stack.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"color-contrast-grid\",\n name: \"Color contrast grid\",\n image: \"assets/variant-color-contrast-grid.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"table\",\n },\n behavior: {\n dataType: \"Token\",\n items: undefined,\n entities: { selectionType: \"Entity\", maxSelected: 0 },\n },\n editorOptions: {\n onboarding: {\n helpText:\n \"Show a list of design tokens. You can use this block to create a list of colors, typography, spacing, grid, or any other token type.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/token/tokens/general-84NRgxGl#section-token-list-06\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"io.supernova.block.token-group\",\n name: \"Token group\",\n description: \"Show a group of design tokens\",\n category: \"Tokens\",\n icon: undefined,\n documentationLink: undefined,\n searchKeywords: [\"color\", \"typography\", \"spacing\", \"grid\", \"material\", \"theme\", \"accessibility\", \"contrast\"],\n item: {\n properties: [\n {\n id: \"tokens\",\n name: \"Tokens\",\n type: \"Token\",\n description: undefined,\n options: {},\n variantOptions: undefined,\n },\n ],\n appearance: { isBordered: false, hasBackground: false },\n variants: [\n {\n id: \"table\",\n name: \"Table\",\n image: \"assets/variant-table.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"grid\",\n name: \"Grid\",\n image: \"assets/variant-grid.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 4,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"color-stack\",\n name: \"Color stack\",\n image: \"assets/variant-color-stack.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 2,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n {\n id: \"color-contrast-grid\",\n name: \"Color contrast grid\",\n image: \"assets/variant-color-contrast-grid.png\",\n description: undefined,\n documentationLink: undefined,\n layout: { type: \"Column\", children: [\"tokens\"] },\n maxColumns: 1,\n defaultColumns: 1,\n appearance: { isBordered: false, hasBackground: false },\n },\n ],\n defaultVariantKey: \"table\",\n },\n behavior: {\n dataType: \"Token\",\n items: undefined,\n entities: { selectionType: \"Group\", maxSelected: 1 },\n },\n editorOptions: {\n onboarding: {\n helpText:\n \"Show a group of design tokens. You can use this block to create a list of colors, typography, spacing, grid, or any other token type.\",\n documentationLink:\n \"https://learn.supernova.io/latest/documentation/types-of-blocks/token/tokens/general-84NRgxGl#section-token-group-09\",\n },\n },\n appearance: { isBordered: false, hasBackground: false },\n },\n];\n","import * as Y from \"yjs\";\nimport { ProsemirrorNode, ProsemirrorMark } from \"./prosemirror/types\";\nimport {\n PageBlockDefinition,\n PageBlockText,\n PageBlockTextSpan,\n PageBlockTextSpanAttribute,\n PageBlockDefinitionProperty,\n} from \"@supernova-studio/model\";\nimport { PageBlockEditorModel } from \"./model/block\";\nimport { DocumentationPageEditorModel } from \"./model/page\";\nimport { BlockDefinitionUtils } from \"./utils\";\nimport { yXmlFragmentToProsemirrorJSON } from \"y-prosemirror\";\n\nexport function yXmlFragmetToPage(\n fragment: Y.XmlFragment,\n definitions: PageBlockDefinition[]\n): DocumentationPageEditorModel {\n const prosemirrorJson = yXmlFragmentToProsemirrorJSON(fragment) as ProsemirrorNode;\n return prosemirrorDocToPage(prosemirrorJson, definitions);\n}\n\nexport function prosemirrorDocToPage(\n prosemirrorDoc: ProsemirrorNode,\n definitions: PageBlockDefinition[]\n): DocumentationPageEditorModel {\n const definitionsById = mapByUnique(definitions, d => d.id);\n\n return {\n blocks: (prosemirrorDoc.content ?? [])\n .map(prosemirrorNode => {\n const definitionId = prosemirrorNode.attrs?.definitionId;\n if (!definitionId) throw new Error(`Node is missing defintion id`);\n if (typeof definitionId !== \"string\")\n throw new Error(`Definition id is ${typeof definitionId}, has to be string`);\n\n const definition = definitionsById.get(definitionId);\n if (!definition) throw new Error(`Definition by id ${definitionId} doesn't exist`);\n\n return prosemirrorNodeToBlock(prosemirrorNode, definition);\n })\n .filter(nonNullFilter),\n };\n}\n\nexport function prosemirrorNodeToBlock(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition\n): PageBlockEditorModel | null {\n const richTextProperty = BlockDefinitionUtils.firstRichTextProperty(definition);\n if (richTextProperty) {\n return parseAsRichText(prosemirrorNode, definition, richTextProperty);\n }\n\n return parseAsCustomBlock(prosemirrorNode, definition);\n}\n\nfunction parseAsRichText(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition,\n property: PageBlockDefinitionProperty\n): PageBlockEditorModel {\n const id = parseProsemirrorBlockAttribute(prosemirrorNode, \"id\");\n const variantId = parseProsemirrorOptionalBlockAttribute(prosemirrorNode, \"variantId\");\n\n return {\n // TODO Artem: indent\n id: id,\n data: {\n packageId: definition.id,\n indentLevel: 0,\n variantId: variantId,\n items: [\n {\n id: id,\n props: {\n [property.id]: {\n value: parseRichText(prosemirrorNode.content ?? []),\n },\n },\n },\n ],\n },\n };\n}\n\nfunction parseRichText(spans: ProsemirrorNode[]): PageBlockText {\n return {\n spans: spans.map(parseRichTextSpan).filter(nonNullFilter),\n };\n}\n\nfunction parseRichTextSpan(span: ProsemirrorNode): PageBlockTextSpan | null {\n if (span.type !== \"text\" || !span.text) return null;\n\n const marks = span.marks ?? [];\n\n return {\n text: span.text,\n attributes: marks.map(parseRichTextAttribute).filter(nonNullFilter),\n };\n}\n\nfunction parseRichTextAttribute(mark: ProsemirrorMark): PageBlockTextSpanAttribute | null {\n switch (mark.type) {\n case \"bold\":\n return { type: \"Bold\" };\n case \"italic\":\n return { type: \"Italic\" };\n case \"strikethrough\":\n return { type: \"Strikethrough\" };\n case \"code\":\n return { type: \"Code\" };\n case \"link\":\n const itemId = mark.attrs?.itemId;\n const href = mark.attrs?.href;\n\n return {\n type: \"Link\",\n openInNewWindow: mark.attrs?.target !== \"_self\",\n documentationItemId: itemId,\n link: href,\n };\n }\n\n return null;\n}\n\n//\n// Custom block\n//\n\nfunction parseAsCustomBlock(\n prosemirrorNode: ProsemirrorNode,\n definition: PageBlockDefinition\n): PageBlockEditorModel | null {\n return null;\n}\n\n//\n// Attributes\n//\n\nfunction parseProsemirrorBlockAttribute(prosemirrorNode: ProsemirrorNode, attributeName: string) {\n const attributeValue = parseProsemirrorOptionalBlockAttribute(prosemirrorNode, attributeName); //prosemirrorNode.attrs?.[attributeName];\n if (!attributeValue) {\n throw new Error(`Attribute ${attributeName} was not defined`);\n }\n\n return attributeValue;\n}\n\nfunction parseProsemirrorOptionalBlockAttribute(prosemirrorNode: ProsemirrorNode, attributeName: string) {\n return prosemirrorNode.attrs?.[attributeName] ?? undefined;\n}\n\n//\n// Utils\n//\n\nfunction nonNullFilter<T>(item: T | null): item is T {\n return item !== null;\n}\n\nfunction mapByUnique<V, K>(items: V[], keyFn: (item: V) => K): Map<K, V> {\n const result = new Map<K, V>();\n for (const item of items) {\n result.set(keyFn(item), item);\n }\n return result;\n}\n"]}
|