@rebuy/rebuy 2.34.0 → 2.35.0
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.js +204 -23
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +204 -23
- package/dist/index.mjs.map +4 -4
- package/dist/schema/checkout-and-beyond/constants.js +2 -0
- package/dist/schema/checkout-and-beyond/constants.js.map +2 -2
- package/dist/schema/checkout-and-beyond/constants.mjs +2 -0
- package/dist/schema/checkout-and-beyond/constants.mjs.map +2 -2
- package/dist/schema/checkout-and-beyond/index.js +183 -6
- package/dist/schema/checkout-and-beyond/index.js.map +3 -3
- package/dist/schema/checkout-and-beyond/index.mjs +183 -6
- package/dist/schema/checkout-and-beyond/index.mjs.map +3 -3
- package/dist/schema/widget-data.js +197 -23
- package/dist/schema/widget-data.js.map +4 -4
- package/dist/schema/widget-data.mjs +197 -23
- package/dist/schema/widget-data.mjs.map +3 -3
- package/dist/schema/widgets/checkout-and-beyond/banner.d.ts +27 -25
- package/dist/schema/widgets/checkout-and-beyond/banner.d.ts.map +1 -1
- package/dist/schema/widgets/checkout-and-beyond/button.d.ts +5 -0
- package/dist/schema/widgets/checkout-and-beyond/button.d.ts.map +1 -1
- package/dist/schema/widgets/checkout-and-beyond/carousel.d.ts +25 -25
- package/dist/schema/widgets/checkout-and-beyond/cartLine.d.ts +25 -25
- package/dist/schema/widgets/checkout-and-beyond/common.d.ts +3 -1
- package/dist/schema/widgets/checkout-and-beyond/common.d.ts.map +1 -1
- package/dist/schema/widgets/checkout-and-beyond/icons.d.ts +124 -0
- package/dist/schema/widgets/checkout-and-beyond/icons.d.ts.map +1 -0
- package/dist/schema/widgets/checkout-and-beyond/image.d.ts +319 -2
- package/dist/schema/widgets/checkout-and-beyond/image.d.ts.map +1 -1
- package/dist/schema/widgets/checkout-and-beyond/index.d.ts +1 -0
- package/dist/schema/widgets/checkout-and-beyond/index.d.ts.map +1 -1
- package/dist/schema/widgets/checkout-and-beyond/offers.d.ts +25 -25
- package/dist/schema/widgets/checkout-and-beyond/progressBar.d.ts +25 -25
- package/dist/schema/widgets/checkout-and-beyond/progressBar.d.ts.map +1 -1
- package/dist/server/index.js +193 -25
- package/dist/server/index.js.map +4 -4
- package/dist/server/index.mjs +193 -25
- package/dist/server/index.mjs.map +4 -4
- package/dist/transforms/index.js +193 -25
- package/dist/transforms/index.js.map +3 -3
- package/dist/transforms/index.mjs +193 -25
- package/dist/transforms/index.mjs.map +3 -3
- package/dist/transforms/smartCart/convertSmartCartProgressBarToV2.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/schema/widgets/checkout-and-beyond/banner.ts", "../../../src/schema/widgets/checkout-and-beyond/common.ts", "../../../src/schema/widgets/checkout-and-beyond/layout.ts", "../../../src/schema/widgets/checkout-and-beyond/rule.ts", "../../../src/schema/widgets/checkout-and-beyond/shared.ts", "../../../src/schema/widgets/checkout-and-beyond/button.ts", "../../../src/schema/widgets/checkout-and-beyond/image.ts", "../../../src/schema/widgets/checkout-and-beyond/regex.ts", "../../../src/schema/widgets/checkout-and-beyond/utils.ts", "../../../src/schema/widgets/checkout-and-beyond/text.ts", "../../../src/schema/widgets/checkout-and-beyond/carousel.ts", "../../../src/schema/widgets/checkout-and-beyond/offers.ts", "../../../src/schema/widgets/checkout-and-beyond/dataSource.ts", "../../../src/schema/widgets/checkout-and-beyond/constants.ts", "../../../src/schema/widgets/checkout-and-beyond/products.ts", "../../../src/schema/widgets/checkout-and-beyond/product.ts", "../../../src/schema/widgets/checkout-and-beyond/cartLine.ts", "../../../src/schema/widgets/checkout-and-beyond/discount.ts", "../../../src/schema/widgets/checkout-and-beyond/monetize.ts", "../../../src/schema/widgets/checkout-and-beyond/progressBar.ts", "../../../src/schema/widgets/checkout-and-beyond/giftLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/quantity.ts", "../../../src/schema/widgets/checkout-and-beyond/reviews.ts", "../../../src/schema/widgets/checkout-and-beyond/reviewLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/variants.ts", "../../../src/schema/widgets/checkout-and-beyond/offerLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/root.ts", "../../../src/schema/widgets/checkout-and-beyond/uiLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/switchLabels.ts"],
|
|
4
|
-
"sourcesContent": ["import { z } from 'zod';\n\nimport { bannerColors, buttonFields, SectionType, type BannerColor } from './common';\nimport { CABLayoutSection } from './layout';\nimport { type SectionDetails } from './shared';\n\nexport const CABBannerSection = z.lazy(() =>\n CABLayoutSection.omit({ sectionType: true }).extend({\n buttonField: z.enum(buttonFields).optional(),\n color: z.enum(bannerColors).default('info'),\n dismissible: z.boolean().default(true),\n sectionType: z.literal(SectionType.banner).default(SectionType.banner),\n })\n);\n\nexport type CABBannerSection = Omit<CABLayoutSection, 'sectionType'> & {\n color: BannerColor;\n dismissible: boolean;\n sectionType: 'banner';\n};\n\nexport type CABBannerSectionProps = CABBannerSection & SectionDetails;\n", "export const freezeEnum = <T extends readonly string[]>(values: T) =>\n Object.freeze(Object.fromEntries(values.map((v) => [v, v]))) as { readonly [K in T[number]]: K };\n\nexport const bannerColors = ['info', 'success', 'warning', 'critical'] as const;\nexport const BannerColor = freezeEnum(bannerColors);\nexport type BannerColor = (typeof bannerColors)[number];\n\nexport const borderRadii = ['none', 'small', 'base', 'large', 'fullyRounded'] as const;\nexport const BorderRadius = freezeEnum(borderRadii);\nexport type BorderRadius = (typeof borderRadii)[number];\n\nexport const borderStyles = ['none', 'base', 'dotted', 'dashed'] as const;\nexport const BorderStyle = freezeEnum(borderStyles);\nexport type BorderStyle = (typeof borderStyles)[number];\n\nexport const borderWidths = ['base', 'medium', 'thick'] as const;\nexport const BorderWidth = freezeEnum(borderWidths);\nexport type BorderWidth = (typeof borderWidths)[number];\n\nexport const buttonActions = [\n 'acceptOffer',\n 'addToOrder',\n 'declineAllOffers',\n 'declineOffer',\n 'displayContentInModal',\n 'displayContentInPopover',\n 'goToNextPage',\n 'goToPrevPage',\n 'goToURL',\n 'removeFromOrder',\n 'selectVariant',\n 'showPagination',\n 'switchToSubscription',\n 'undoAddToOrder',\n] as const;\n\nexport const ButtonAction = freezeEnum(buttonActions);\nexport type ButtonAction = (typeof buttonActions)[number];\n\nexport const buttonFields = [\n 'activePage',\n 'addedToCart',\n 'addingToCart',\n 'addToCart',\n 'buttonLabel',\n 'declineAllOffers',\n 'declineOffer',\n 'destinationUrl',\n 'inactivePage',\n 'overlayContent',\n 'payNow',\n 'progressReached',\n 'progressRemaining',\n 'redirectToCheckout',\n 'removeFromOrder',\n 'showVariant',\n 'showVariants',\n 'soldOut',\n 'subscriptionOption',\n 'switchToOneTimePurchase',\n 'switchToSubscriptionNoDiscount',\n 'switchToSubscriptionWithDiscount',\n 'undoAddToOrder',\n] as const;\n\nexport const ButtonField = freezeEnum(buttonFields);\nexport type ButtonField = (typeof buttonFields)[number];\n\nexport const buttonStyles = ['primary', 'secondary', 'plain', 'custom'] as const;\nexport const ButtonStyle = freezeEnum(buttonStyles);\nexport type ButtonStyle = (typeof buttonStyles)[number];\n\nexport const directions = ['columns', 'rows', 'grid'] as const;\nexport const Direction = freezeEnum(directions);\nexport type Direction = (typeof directions)[number];\n\nexport const discountSources = ['price', 'compare_at_price'] as const;\nexport const DiscountSource = freezeEnum(discountSources);\nexport type DiscountSource = (typeof discountSources)[number];\n\nexport const discountTypes = ['none', 'percentage', 'fixed', 'fixed_amount'] as const;\nexport const DiscountType = freezeEnum(discountTypes);\nexport type DiscountType = (typeof discountTypes)[number];\n\nexport const editorModes = [\n 'checkoutExtension',\n 'postPurchaseOffer',\n 'thankYouPage',\n 'orderStatusPage',\n 'ordersIndexPage',\n 'customerProfilePage',\n] as const;\n\nexport const EditorMode = freezeEnum(editorModes);\nexport type EditorMode = (typeof editorModes)[number];\n\nexport const horizontalAlignments = ['start', 'center', 'end'] as const;\nexport const HorizontalAlignment = freezeEnum(horizontalAlignments);\nexport type HorizontalAlignment = (typeof horizontalAlignments)[number];\n\nexport const languageKeys = [\n 'ar',\n 'cs',\n 'da',\n 'de',\n 'en',\n 'es',\n 'fi',\n 'fr',\n 'ga',\n 'he',\n 'hi',\n 'id',\n 'it',\n 'ja',\n 'ko',\n 'nl',\n 'no',\n 'pl',\n 'pt',\n 'ru',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n 'vi',\n 'zh',\n] as const;\n\nexport const LanguageKey = freezeEnum(languageKeys);\nexport type LanguageKey = (typeof languageKeys)[number];\n\nexport const objectFits = ['cover', 'contain'] as const;\nexport const ObjectFit = freezeEnum(objectFits);\nexport type ObjectFit = (typeof objectFits)[number];\n\nexport const popoverPositions = ['inlineStart', 'inlineEnd', 'blockStart', 'blockEnd'] as const;\nexport const PopoverPosition = freezeEnum(popoverPositions);\nexport type PopoverPosition = (typeof popoverPositions)[number];\n\nexport const popoverPositionMap = {\n bottom: 'blockEnd',\n left: 'inlineStart',\n right: 'inlineEnd',\n top: 'blockStart',\n} as const;\n\nexport const productTypes = ['one-time', 'subscription', 'both'] as const;\nexport const ProductType = freezeEnum(productTypes);\nexport type ProductType = (typeof productTypes)[number];\n\nexport const progressTierTypes = ['decorative', 'discount', 'product', 'shipping'] as const;\nexport const ProgressTierType = freezeEnum(progressTierTypes);\nexport type ProgressTierType = (typeof progressTierTypes)[number];\n\nexport const progressTierUnits = ['currency', 'item'] as const;\nexport const ProgressTierUnit = freezeEnum(progressTierUnits);\nexport type ProgressTierUnit = (typeof progressTierUnits)[number];\n\nexport const quantityInputs = ['select', 'number'] as const;\nexport const QuantityInput = freezeEnum(quantityInputs);\nexport type QuantityInput = (typeof quantityInputs)[number];\n\nexport const reviewsSizes = ['small', 'default', 'large'] as const;\nexport const ReviewsSize = freezeEnum(reviewsSizes);\nexport type ReviewsSize = (typeof reviewsSizes)[number];\n\nexport const sectionTypes = [\n 'banner',\n 'button',\n 'carousel',\n 'cartLine',\n 'dataSource',\n 'discount',\n 'image',\n 'layout',\n 'monetize',\n 'offers',\n 'product',\n 'products',\n 'progressBar',\n 'quantity',\n 'reviews',\n 'text',\n 'variants',\n] as const;\n\nexport const SectionType = freezeEnum(sectionTypes);\nexport type SectionType = (typeof sectionTypes)[number];\n\nexport const spacings = ['none', 'extraTight', 'tight', 'base', 'loose', 'extraLoose'] as const;\nexport const Spacing = freezeEnum(spacings);\nexport type Spacing = (typeof spacings)[number];\n\nexport const textAlignments = ['start', 'center', 'end'] as const;\nexport const TextAlignment = freezeEnum(textAlignments);\nexport type TextAlignment = (typeof textAlignments)[number];\n\nexport const textColorNames = ['base', 'subdued', 'accent', 'decorative', 'success', 'warning', 'critical'] as const;\nexport const TextColorName = freezeEnum(textColorNames);\nexport type TextColorName = (typeof textColorNames)[number];\n\nexport const textSizeNames = ['extraSmall', 'small', 'base', 'medium', 'large', 'extraLarge'] as const;\nexport const TextSizeName = freezeEnum(textSizeNames);\nexport type TextSizeName = (typeof textSizeNames)[number];\n\nexport const variantModes = ['multiple', 'single'] as const;\nexport const VariantMode = freezeEnum(variantModes);\nexport type VariantMode = (typeof variantModes)[number];\n\nexport const variantSelectors = ['menu', 'radio', 'button'] as const;\nexport const VariantSelector = freezeEnum(variantSelectors);\nexport type VariantSelector = (typeof variantSelectors)[number];\n\nexport const verticalAlignments = ['top', 'middle', 'bottom'] as const;\nexport const VerticalAlignment = freezeEnum(verticalAlignments);\nexport type VerticalAlignment = (typeof verticalAlignments)[number];\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport {\n buttonFields,\n Direction,\n directions,\n HorizontalAlignment,\n horizontalAlignments,\n SectionType,\n Spacing,\n spacings,\n VerticalAlignment,\n verticalAlignments,\n type ButtonField,\n} from './common';\nimport { CABRule } from './rule';\nimport { CABBorder, CABSection, type SectionDetails } from './shared';\n\nexport const GridItem = z.union([z.literal('auto'), z.literal('fill'), z.string().regex(/^\\d+%$/), z.number()]);\nexport type GridItem = z.infer<typeof GridItem>;\n\nexport const CABLayoutSection = z.object({\n alignment: z\n .object({\n horizontal: z.enum(horizontalAlignments).default(HorizontalAlignment.start),\n vertical: z.enum(verticalAlignments).default(VerticalAlignment.top),\n })\n .default({\n horizontal: HorizontalAlignment.start,\n vertical: VerticalAlignment.top,\n }),\n border: z.lazy(() => CABBorder),\n buttonField: z.enum(buttonFields).optional(),\n direction: z.enum(directions).default(Direction.rows),\n grid: z\n .object({\n columns: z.union([z.array(GridItem), z.undefined()]).default(() => ['auto']),\n rows: z.union([z.array(GridItem), z.undefined()]).default(() => ['auto']),\n })\n .default({ columns: ['auto'], rows: ['auto'] })\n .optional(),\n name: z.string().optional(),\n padding: z.enum(spacings).default(Spacing.none),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.layout).default(SectionType.layout),\n spacing: z.enum(spacings).default(Spacing.base),\n /** Fire-and-forget impression pixel POSTed once when the section is shown (e.g. a Monetize offer view). */\n viewUrl: z.string().optional(),\n width: z.number().default(100),\n});\n\nexport type CABLayoutSection = {\n alignment: {\n horizontal: HorizontalAlignment;\n vertical: VerticalAlignment;\n };\n border: CABBorder;\n buttonField?: ButtonField;\n direction: Direction;\n grid?: {\n columns: GridItem[];\n rows: GridItem[];\n };\n name?: string;\n padding: Spacing;\n rule?: CABRule;\n sectionId: string;\n sections: CABSection[];\n sectionType: 'layout';\n spacing: Spacing;\n viewUrl?: string;\n width: number;\n};\n\nexport type CABLayoutSectionProps = CABLayoutSection & SectionDetails;\n", "import { z } from 'zod';\n\nexport const ruleTypes = [\n 'cart',\n 'cart_count',\n 'cart_item_count',\n 'cart_line_count',\n 'cart_subtotal',\n 'collection',\n 'customer',\n 'customer_order_count',\n 'customer_tag',\n 'customer_total_spent',\n 'date',\n 'product',\n 'product_tag',\n 'product_title',\n 'product_type',\n 'product_vendor',\n] as const;\n\nconst ruleType = z.enum(ruleTypes);\n\nexport const RuleType = ruleType.enum;\nexport type RuleType = z.infer<typeof ruleType>;\n\nexport const ruleOperators = [\n 'after',\n 'anything',\n 'before',\n 'contains',\n 'contains_any',\n 'does_not_contain',\n 'does_not_contain_any',\n 'equals',\n 'does_not_equal',\n 'greater_than',\n 'less_than',\n] as const;\n\nconst ruleOperator = z.enum(ruleOperators);\n\nexport const RuleOperator = ruleOperator.enum;\nexport type RuleOperator = z.infer<typeof ruleOperator>;\n\nexport const RuleCondition = z.object({\n operator: z.enum(ruleOperators).default(RuleOperator.anything),\n products: z.union([z.array(z.unknown()), z.strictObject({}).transform(() => [])]).default(() => []),\n type: z.enum(ruleTypes).default(RuleType.cart_subtotal),\n value: z.coerce.string().default(''),\n});\n\nexport type RuleCondition = z.infer<typeof RuleCondition>;\n\nexport const RuleLogicBlock = z.object({\n rules: z.array(RuleCondition).default(() => []),\n});\n\nexport type RuleLogicBlock = z.infer<typeof RuleLogicBlock>;\n\nexport const CABRule = z.object({\n dataSourceId: z.number().nullable().default(null),\n enabled: z.boolean().default(false),\n ruleset: z\n .union([\n z.array(\n z.object({\n exitIfMatched: z.boolean().default(true),\n logic: z.array(RuleLogicBlock).default(() => []),\n output: z\n .array(\n z.object({\n key: z.string().default('should_show'),\n type: z.literal('data_json').default('data_json'),\n value: z.string().default('true'),\n })\n )\n .default(() => [{ key: 'should_show', type: 'data_json' as const, value: 'true' }]),\n })\n ),\n z.strictObject({}).transform(() => []),\n ])\n .default(() => []),\n});\n\nexport type CABRule = z.infer<typeof CABRule>;\n", "import { type FieldArrayPath } from 'react-hook-form';\nimport { z, type ZodType } from 'zod';\n\nimport { CABBannerSection } from './banner';\nimport { CABButtonSection } from './button';\nimport { CABCarouselSection } from './carousel';\nimport { CABCartLineSection } from './cartLine';\nimport { borderRadii, BorderRadius, BorderStyle, borderStyles, BorderWidth, borderWidths } from './common';\nimport { CABDataSourceSection } from './dataSource';\nimport { CABDiscountSection } from './discount';\nimport { CABImageSection } from './image';\nimport { CABLayoutSection } from './layout';\nimport { CABMonetizeSection } from './monetize';\nimport { CABOffersSection } from './offers';\nimport { CABProductSection } from './product';\nimport { CABProductsSection } from './products';\nimport { CABProgressBarSection } from './progressBar';\nimport { CABQuantitySection } from './quantity';\nimport { CABReviewsSection } from './reviews';\nimport { type CABRootSection } from './root';\nimport { CABTextSection } from './text';\nimport { CABVariantsSection } from './variants';\n\nexport const CABBorder = z\n .object({\n radius: z.enum(borderRadii).default(BorderRadius.base),\n style: z.enum(borderStyles).default(BorderStyle.none),\n width: z.enum(borderWidths).default(BorderWidth.base),\n })\n .default({\n radius: BorderRadius.base,\n style: BorderStyle.none,\n width: BorderWidth.base,\n });\n\nexport type CABBorder = z.infer<typeof CABBorder>;\n\nexport const CABSection: ZodType<CABSection> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [\n CABBannerSection,\n CABButtonSection,\n CABCarouselSection,\n CABCartLineSection,\n CABDataSourceSection,\n CABDiscountSection,\n CABImageSection,\n CABLayoutSection,\n CABMonetizeSection,\n CABOffersSection,\n CABProductSection,\n CABProductsSection,\n CABProgressBarSection,\n CABQuantitySection,\n CABReviewsSection,\n CABTextSection,\n CABVariantsSection,\n ])\n);\n\nexport type CABSection =\n | CABBannerSection\n | CABButtonSection\n | CABCarouselSection\n | CABCartLineSection\n | CABDataSourceSection\n | CABDiscountSection\n | CABImageSection\n | CABLayoutSection\n | CABMonetizeSection\n | CABOffersSection\n | CABProductSection\n | CABProductsSection\n | CABProgressBarSection\n | CABQuantitySection\n | CABReviewsSection\n | CABTextSection\n | CABVariantsSection;\n\nexport type SectionId = CABSection['sectionId'];\n\n/* @ts-expect-error: TS2589: Type instantiation _is_ excessively deep and infinite. */\nexport type SectionArrayPath = FieldArrayPath<CABRootSection>;\n\nexport type SectionPrefixPath = `${SectionArrayPath}.${number}` | null;\n\nexport type SectionDetails = {\n /**\n * The full React Hook Form dot-notation path to the section object itself,\n * for use with `register` or `control`, e.g. `sections.0.sections.1`.\n *\n * Returns `null` for the root section.\n */\n fieldArrayPath: SectionArrayPath | null;\n /**\n * The index of the found section within its parent `sections` array.\n *\n * Returns `null` for the root section.\n */\n index: number | null;\n /**\n * The parent `sections` object.\n *\n * Returns `null` for the root section.\n */\n parent: CABSection[] | null;\n /**\n * The parent `sectionId`.\n *\n * Returns `undefined` for the root section.\n */\n parentId: SectionId | undefined;\n /**\n * The full React Hook Form dot-notation path to the section object itself,\n * for use with `register` or `control`, e.g. `sections.0.sections.1`.\n *\n * Returns `null` for the root section.\n */\n prefixPath: SectionPrefixPath | null;\n};\n\nexport type CABSectionProps = CABSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z, type ZodType } from 'zod';\n\nimport {\n buttonActions,\n ButtonStyle,\n buttonStyles,\n PopoverPosition,\n popoverPositions,\n SectionType,\n TextAlignment,\n textAlignments,\n} from './common';\nimport { CABImageSection } from './image';\nimport { CABLayoutSection } from './layout';\nimport { HEX_COLOR_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport type CABButtonContent = CABImageSection | CABLayoutSection | CABTextSection;\n\nexport const CABButtonContent: ZodType<CABButtonContent> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [CABImageSection, CABLayoutSection, CABTextSection])\n);\n\nexport const CABButtonSection = z.object({\n action: z.union([z.literal(''), z.enum(buttonActions)]).default(''),\n buttonStyle: z.enum(buttonStyles).default(ButtonStyle.primary),\n custom: z\n .object({\n color: z.string().regex(HEX_COLOR_REGEX).default('#005bd3'),\n height: z.number().default(52),\n width: z.number().default(300),\n })\n .default({\n color: '#005bd3',\n height: 52,\n width: 300,\n }),\n disableDowngrade: z.boolean().default(false),\n name: z.string().optional(),\n optionId: z.number().optional(),\n popover: z\n .object({\n alignment: z.enum(textAlignments).default(TextAlignment.center),\n position: z.enum(popoverPositions).default(PopoverPosition.blockStart),\n })\n .optional()\n .default(() => ({\n alignment: TextAlignment.center,\n position: PopoverPosition.blockStart,\n })),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(CABButtonContent), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.button).default(SectionType.button),\n /** Fire-and-forget pixel POSTed when the button is clicked (e.g. a Monetize decline). */\n trackingUrl: z.string().optional(),\n});\n\nexport type CABButtonSection = z.infer<typeof CABButtonSection>;\n\nexport type CABButtonSectionProps = CABButtonSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { buttonFields, ObjectFit, objectFits, SectionType } from './common';\nimport { DYNAMIC_TOKEN_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { CABBorder, type SectionDetails } from './shared';\nimport { checkForHTML, NO_HTML } from './utils';\n\nexport const CABImageSection = z.object({\n altText: z.string().refine(checkForHTML, NO_HTML).default(''),\n aspectRatio: z.literal(1).nullable().default(null),\n border: z.lazy(() => CABBorder),\n buttonField: z.enum(buttonFields).optional(),\n category: z.enum(['gallery', 'icons', 'payment-methods', 'secure-checkout']).nullable().default(null),\n name: z.string().optional(),\n naturalHeight: z.number().default(0),\n naturalWidth: z.number().default(0),\n /**\n * `contain` (the component default): dimensionless images render in s-image's 1/1 default frame, and\n * `cover` would crop non-square art (payment badges lost their edges \u2014 15993); `contain` letterboxes.\n */\n objectFit: z.enum(objectFits).default(ObjectFit.contain),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.image).default(SectionType.image),\n source: z.union([z.url(), z.literal(''), z.string().regex(DYNAMIC_TOKEN_REGEX)]).default(''),\n width: z.number().default(100),\n});\n\nexport type CABImageSection = z.infer<typeof CABImageSection>;\n\nexport type CABImageSectionProps = CABImageSection & SectionDetails;\n", "/** Matches a valid array index string (e.g., \"0\", \"1\", \"42\"). */\nexport const ARRAY_INDEX_STRING = /^(0|[1-9]\\d*)$/;\n\n/** Matches a dynamic token. */\nexport const DYNAMIC_TOKEN_REGEX = /^\\{\\{\\s*[A-Za-z]+\\s*\\}\\}$/;\n\n/** Matches a valid hex color code. */\nexport const HEX_COLOR_REGEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\n/**\n * Matches a root-relative, same-origin path (single leading slash, e.g. Shopify's\n * `/policies/privacy-policy`). A protocol-relative `//host` is excluded \u2014 it points off-origin.\n */\nexport const ROOT_RELATIVE_PATH_REGEX = /^\\/(?!\\/)/;\n\n/**\n * Matches an HTML-shaped tag: `<` (or `</`) immediately followed by a tag-name letter. This mirrors\n * both the browser `DOMParser` branch of `isHTML` and `stripContentBlockHtml`'s tag regex, so the\n * server-side check agrees with the client and with whatever the sanitizer removes. It deliberately\n * leaves bare comparison brackets alone (`5 < 10 and 10 > 5`) \u2014 those are text, not markup, and the\n * looser `/<\\/?[^>]+>/` it replaced wrongly rejected them and 500'd otherwise-valid content.\n *\n * Keeps the `g` flag because downstream consumers strip ALL tags with `.replace(HTML_TAGS_REGEX, '')`\n * (rebuy-shopify-extensions, admin-nextjs); without it `.replace` would drop only the first tag. The\n * one in-package consumer, `isHTML`, must therefore NOT use `.test()` on it \u2014 a global regex carries a\n * sticky `lastIndex` that makes repeated `.test()` calls flaky. `isHTML` uses `.search()` instead,\n * which ignores and never mutates `lastIndex`.\n */\nexport const HTML_TAGS_REGEX = /<\\/?[a-zA-Z][^>]*>/g;\n", "import { isPlainObject, mapValues } from 'es-toolkit';\nimport { every, get, isArray, isString, map, size, toPairs } from 'es-toolkit/compat';\n\nimport { type CABBannerSection } from './banner';\nimport { type CABButtonSection } from './button';\nimport { type CABCarouselSection } from './carousel';\nimport { type CABCartLineSection } from './cartLine';\nimport { ButtonField, SectionType } from './common';\nimport { type CABDataSourceSection } from './dataSource';\nimport { type CABDiscountSection } from './discount';\nimport { type CABImageSection } from './image';\nimport { type CABLayoutSection } from './layout';\nimport { type CABMonetizeSection } from './monetize';\nimport { type CABOffersSection } from './offers';\nimport { type CABProductSection } from './product';\nimport { type CABProductsSection } from './products';\nimport { type CABProgressBarSection } from './progressBar';\nimport { type CABQuantitySection } from './quantity';\nimport { ARRAY_INDEX_STRING, HTML_TAGS_REGEX } from './regex';\nimport { type CABReviewsSection } from './reviews';\nimport { type CABTextSection, type TiptapDocument } from './text';\nimport { type CABVariantsSection } from './variants';\n\nexport const isHTML = (html: string | undefined = ''): boolean => {\n if (typeof window !== 'undefined') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n\n const hasHTML = (nodeList: NodeList) => Array.from(nodeList).some((node) => node.nodeType === 1);\n\n return hasHTML(doc.body.childNodes) || hasHTML(doc.head.childNodes);\n }\n\n // `.search()` (not `.test()`) because HTML_TAGS_REGEX is global for downstream `.replace` callers;\n // `.search()` ignores and never advances `lastIndex`, so repeated calls stay deterministic.\n return html.search(HTML_TAGS_REGEX) !== -1;\n};\n\nexport const hasHTMLInDoc = (doc: TiptapDocument): boolean =>\n doc.content.some(({ content = [] }) => content.some(({ text }) => isHTML(text)));\n\nexport const checkForHTML = (input: string | TiptapDocument): boolean =>\n !((isString(input) && isHTML(input)) || (isPlainObject(input) && hasHTMLInDoc(input as TiptapDocument)));\n\nexport const NO_HTML = { message: 'HTML is not supported' };\n\nexport const isBannerType = (section: unknown): section is CABBannerSection =>\n get(section, 'sectionType') === SectionType.banner;\n\nexport const isButtonType = (section: unknown): section is CABButtonSection =>\n get(section, 'sectionType') === SectionType.button;\n\nexport const isCarouselType = (section: unknown): section is CABCarouselSection =>\n get(section, 'sectionType') === SectionType.carousel;\n\nexport const isCartLineType = (section: unknown): section is CABCartLineSection =>\n get(section, 'sectionType') === SectionType.cartLine;\n\nexport const isDataSourceType = (section: unknown): section is CABDataSourceSection =>\n get(section, 'sectionType') === SectionType.dataSource;\n\nexport const isDiscountType = (section: unknown): section is CABDiscountSection =>\n get(section, 'sectionType') === SectionType.discount;\n\nexport const isImageType = (section: unknown): section is CABImageSection =>\n get(section, 'sectionType') === SectionType.image;\n\nexport const isLayoutType = (section: unknown): section is CABLayoutSection =>\n get(section, 'sectionType') === SectionType.layout;\n\nexport const isMonetizeType = (section: unknown): section is CABMonetizeSection =>\n get(section, 'sectionType') === SectionType.monetize;\n\nexport const isOffersType = (section: unknown): section is CABOffersSection =>\n get(section, 'sectionType') === SectionType.offers;\n\nexport const isOverlayType = (section: unknown): section is CABLayoutSection =>\n isLayoutType(section) && get(section, 'buttonField') === ButtonField.overlayContent;\n\nexport const isProductType = (section: unknown): section is CABProductSection =>\n get(section, 'sectionType') === SectionType.product;\n\nexport const isProductsType = (section: unknown): section is CABProductsSection =>\n get(section, 'sectionType') === SectionType.products;\n\nexport const isProgressBarType = (section: unknown): section is CABProgressBarSection =>\n get(section, 'sectionType') === SectionType.progressBar;\n\nexport const isQuantityType = (section: unknown): section is CABQuantitySection =>\n get(section, 'sectionType') === SectionType.quantity;\n\nexport const isReviewsType = (section: unknown): section is CABReviewsSection =>\n get(section, 'sectionType') === SectionType.reviews;\n\nexport const isTextType = (section: unknown): section is CABTextSection =>\n get(section, 'sectionType') === SectionType.text;\n\nexport const isVariantsType = (section: unknown): section is CABVariantsSection =>\n get(section, 'sectionType') === SectionType.variants;\n\nconst hasOnlyNumericKeys = (input: Record<string, unknown>) =>\n !!size(input) && every(input, (_, key) => ARRAY_INDEX_STRING.test(key) && Number.isSafeInteger(Number(key)));\n\nconst numericObjectToArray = (input: Record<string, unknown>) =>\n toPairs(input)\n .sort(([a], [b]) => Number(a) - Number(b))\n .map(([_, value]) => value);\n\nexport const convertNumericObjects = (input: unknown): unknown => {\n if (isArray(input)) return map(input, convertNumericObjects);\n\n if (isPlainObject(input)) {\n const obj = input as Record<string, unknown>;\n\n return hasOnlyNumericKeys(obj)\n ? map(numericObjectToArray(obj), convertNumericObjects)\n : mapValues(obj, convertNumericObjects);\n }\n\n return input;\n};\n", "import { forEach, isString } from 'es-toolkit/compat';\nimport { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport {\n ButtonField,\n buttonFields,\n progressTierTypes,\n ProgressTierType,\n SectionType,\n Spacing,\n spacings,\n TextAlignment,\n textAlignments,\n TextColorName,\n textColorNames,\n TextSizeName,\n textSizeNames,\n} from './common';\nimport { DYNAMIC_TOKEN_REGEX, ROOT_RELATIVE_PATH_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\nimport { checkForHTML, NO_HTML } from './utils';\n\nconst enumOrOmit = <T extends readonly [string, ...string[]]>(...vals: T) =>\n z\n .string()\n .transform((val) => (vals.includes(val as T[number]) ? (val as T[number]) : undefined))\n .optional();\n\nexport const TiptapText = z.object({\n marks: z\n .union([\n z.array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('bold') }),\n z.object({ type: z.literal('italic') }),\n z.object({\n attrs: z.object({\n class: z.string().nullable(),\n href: z.union([\n z.url(),\n z.literal('#'),\n z.string().regex(DYNAMIC_TOKEN_REGEX),\n z.string().regex(ROOT_RELATIVE_PATH_REGEX),\n ]),\n rel: z.string().default('noopener noreferrer nofollow'),\n target: z.string().default('_blank'),\n }),\n type: z.literal('link'),\n }),\n z.object({ type: z.literal('strike') }),\n z.object({\n attrs: z.object({\n color: enumOrOmit(...textColorNames).default(TextColorName.base),\n fontSize: enumOrOmit(...textSizeNames).default(TextSizeName.base),\n }),\n type: z.literal('textStyle'),\n }),\n ])\n ),\n z.strictObject({}).transform(() => []),\n ])\n .optional(),\n text: z.string().default(''),\n type: z.literal('text').default('text'),\n});\n\nexport type TiptapText = z.infer<typeof TiptapText>;\n\nexport const TiptapParagraph = z.object({\n attrs: z\n .object({\n textAlign: enumOrOmit(...textAlignments),\n })\n .default({ textAlign: TextAlignment.start }),\n content: z.union([z.array(TiptapText), z.strictObject({}).transform(() => [])]).default(() => []),\n type: z.literal('paragraph').default('paragraph'),\n});\n\nexport type TiptapParagraph = z.infer<typeof TiptapParagraph>;\n\nexport const TiptapDocument = z.object({\n attrs: z\n .object({\n blockSpacing: enumOrOmit(...spacings),\n })\n .default({ blockSpacing: Spacing.base }),\n content: z\n .union([z.array(TiptapParagraph), z.strictObject({}).transform(() => [])])\n .default(() => [TiptapParagraph.parse({})]),\n type: z.literal('doc').default('doc'),\n});\n\nexport type TiptapDocument = z.infer<typeof TiptapDocument>;\n\n/**\n * A text section's tier reference. On the smart-cart per-tier feedback copy it carries the `tierId`, so\n * the renderer shows this section only while its tier is the active (current/last-reached) one \u2014 the\n * full tier (gift/threshold) lives on progressBar.\n */\nexport const CABTextTier = z.object({\n threshold: z.number().int().nonnegative(),\n thresholds: z.record(z.string(), z.number().int().nonnegative()).default(() => ({})),\n tierId: z.string().optional(),\n tierType: z.enum(progressTierTypes).default(ProgressTierType.shipping),\n});\n\nexport type CABTextTier = z.infer<typeof CABTextTier>;\n\nexport const CABTextSection = z\n .object({\n buttonField: z.enum(buttonFields).optional(),\n content: z\n .record(z.string(), z.union([z.string(), TiptapDocument]).refine(checkForHTML, NO_HTML).optional())\n .default({ en: TiptapDocument.parse({}) })\n .optional(),\n name: z.string().optional(),\n optionId: z.number().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.text).default(SectionType.text),\n tier: CABTextTier.optional(),\n })\n .superRefine(({ buttonField, content }, ctx) => {\n if (buttonField === ButtonField.destinationUrl && content) {\n forEach(content, (value, lang) => {\n if (value && isString(value)) {\n if (DYNAMIC_TOKEN_REGEX.test(value)) return;\n\n try {\n new URL(value);\n } catch {\n ctx.addIssue({\n code: 'custom',\n message: 'Invalid URL',\n path: ['content', lang],\n });\n }\n }\n });\n }\n });\n\nexport type CABTextSection = z.infer<typeof CABTextSection>;\n\nexport type CABTextSectionProps = CABTextSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABLayoutSection } from './layout';\nimport { CABOffersSection } from './offers';\nimport { CABSection, type SectionDetails } from './shared';\n\nexport const CABCarouselSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n autoAdvanceInterval: z.number().default(0),\n itemsAtOnce: z.number().min(1).default(1),\n sections: z\n .union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])])\n .default(() => [CABOffersSection.parse({})]),\n sectionType: z.literal(SectionType.carousel).default(SectionType.carousel),\n })\n);\n\nexport type CABCarouselSection = Omit<CABLayoutSection, 'sectionType'> & {\n autoAdvanceInterval: number;\n itemsAtOnce: number;\n sectionType: 'carousel';\n};\n\nexport type CABCarouselSectionProps = CABCarouselSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { CABBannerSection } from './banner';\nimport { CABButtonSection } from './button';\nimport { ButtonStyle, SectionType } from './common';\nimport { CABDataSourceSection } from './dataSource';\nimport { CABLayoutSection } from './layout';\nimport { CABProductsSection } from './products';\nimport { CABSection, type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport const CABOffersSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n sections: z.union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])]).default(() => [\n CABBannerSection.parse({\n buttonField: 'undoAddToOrder',\n color: 'success',\n dismissible: true,\n name: 'Success Banner',\n sections: [\n CABTextSection.parse({ content: { en: '{{quantity}} {{productTitle}} added to cart.' } }),\n CABButtonSection.parse({ action: 'undoAddToOrder', buttonStyle: ButtonStyle.plain }),\n ],\n }),\n CABDataSourceSection.parse({}),\n CABProductsSection.parse({}),\n ]),\n sectionType: z.literal(SectionType.offers).default(SectionType.offers),\n })\n);\n\nexport type CABOffersSection = Omit<CABLayoutSection, 'sectionType'> & {\n sectionType: 'offers';\n};\n\nexport type CABOffersSectionProps = CABOffersSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { discountSources, discountTypes, productTypes, SectionType } from './common';\nimport { DEFAULT_ENDPOINTS } from './constants';\nimport { type SectionDetails } from './shared';\n\nexport const CABDiscount = z.object({\n amount: z.union([z.number(), z.string()]).catch(0),\n discountedBy: z.string().optional(),\n discountedFrom: z.enum(discountSources).optional().catch(undefined),\n type: z.enum(discountTypes).catch('none'),\n});\n\nexport type CABDiscount = z.infer<typeof CABDiscount>;\n\nexport const CABIntegrations = z.object({\n judgeme: z.boolean().default(false),\n junip: z.boolean().default(false),\n klaviyo: z.boolean().default(false),\n loox: z.boolean().default(false),\n okendo: z.boolean().default(false),\n opinew: z.boolean().default(false),\n reviewsio: z.boolean().default(false),\n stamped: z.boolean().default(false),\n yotpo: z.boolean().default(false),\n});\n\nexport type CABIntegrations = z.infer<typeof CABIntegrations>;\n\nexport const CABDataSourceSection = z.object({\n dataSourceId: z.number().nullable().default(null),\n dataSourcePath: z.string().default(DEFAULT_ENDPOINTS[0].value),\n discount: CABDiscount.optional(),\n integrations: CABIntegrations.optional(),\n limit: z.number().default(1),\n matchVariant: z.boolean().default(false),\n matchVariantOutOfStock: z.boolean().default(false),\n name: z.string().default(DEFAULT_ENDPOINTS[0].label),\n productType: z.enum(productTypes).optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.dataSource).default(SectionType.dataSource),\n /** Default subscribe-vs-one-time for `productType: both` (legacy `subscription_is_default`). */\n subscriptionIsDefault: z.boolean().default(false),\n treatAsGwp: z.boolean().default(false),\n});\n\nexport type CABDataSourceSection = z.infer<typeof CABDataSourceSection>;\n\nexport type CABDataSourceSectionProps = CABDataSourceSection & SectionDetails;\n", "import { uniqBy } from 'es-toolkit';\n\nimport { EditorMode, freezeEnum } from './common';\nimport { type TargetArea } from './root';\n\nexport const DEFAULT_ENDPOINTS = [\n { label: 'Recommended (AI)', value: '/products/recommended' },\n { label: 'Top Sellers', value: '/products/top_sellers' },\n { label: 'Buy It Again', value: '/products/purchased' },\n { label: 'Recently Viewed', value: '/products/viewed' },\n { label: 'Products Search', value: '/products/search' },\n { label: 'Collection Products', value: '/products/collections' },\n { label: 'Similar Products (AI)', value: '/products/similar_products' },\n] as const;\n\nexport const STATIC_ENDPOINTS = [\n { label: 'Recommended (AI)', value: '/products/recommended' },\n { label: 'Top Sellers', value: '/products/top_sellers' },\n { label: 'Trending Products', value: '/products/trending_products' },\n { label: 'Buy It Again', value: '/products/purchased' },\n { label: 'Collection Products', value: '/products/collections' },\n { label: 'Recently Viewed', value: '/products/viewed' },\n { label: 'Static Products', value: '/products/static' },\n { label: 'Products Search', value: '/products/search' },\n { label: 'Similar Products (AI)', value: '/products/similar_products' },\n] as const;\n\nexport const COMBINED_ENDPOINTS = uniqBy([...DEFAULT_ENDPOINTS, ...STATIC_ENDPOINTS], (item) => item.value);\n\nexport const targetAreas = {\n [EditorMode.checkoutExtension]: [\n { icon: 'splitscreen_top', label: 'Header Area', width: '984px' },\n { icon: 'splitscreen_left', label: 'Main Column', width: '503px' },\n { icon: 'splitscreen_right', label: 'Summary Column', width: '404px' },\n ] satisfies TargetArea[],\n [EditorMode.postPurchaseOffer]: null,\n [EditorMode.thankYouPage]: [\n { icon: 'splitscreen_top', label: 'Header Area', width: '984px' },\n { icon: 'splitscreen_left', label: 'Main Column', width: '503px' },\n { icon: 'splitscreen_right', label: 'Summary Column', width: '404px' },\n ] satisfies TargetArea[],\n [EditorMode.orderStatusPage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Header Area', width: '1124px' },\n { fill: true, icon: 'view_column_2', label: 'Main Area', width: '646px' },\n { icon: 'splitscreen_bottom', label: 'Footer Area', width: '1124px' },\n ] satisfies TargetArea[],\n [EditorMode.ordersIndexPage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Main Area', width: '1124px' },\n ] satisfies TargetArea[],\n [EditorMode.customerProfilePage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Main Area', width: '1124px' },\n ] satisfies TargetArea[],\n} as const;\n\nexport const widgetTypes = [\n 'bundle_builder',\n 'cart',\n 'cart_subscription',\n 'dynamic_bundle',\n 'gift_with_purchase',\n 'pre_purchase',\n 'product',\n 'product_addon',\n 'product_upsell',\n 'recharge_checkout',\n 'recharge_customer_portal',\n 'recharge_post_purchase',\n 'shopify_checkout',\n 'shopify_checkout_extension',\n 'shopify_post_purchase',\n 'shopify_post_purchase_extension',\n 'switch_to_subscription',\n 'ui_extension_ad',\n 'ui_extension_button',\n 'ui_extension_content_block',\n 'ui_extension_line_item_editor',\n 'ui_extension_progress_bar',\n] as const;\n\nexport const WidgetType = freezeEnum(widgetTypes);\nexport type WidgetType = (typeof widgetTypes)[number];\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABProductSection } from './product';\nimport { type SectionDetails } from './shared';\n\nexport const CABProductsSection = z.object({\n name: z.string().optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z\n .union([z.array(z.lazy(() => CABProductSection)), z.strictObject({}).transform(() => [])])\n .default(() => []),\n sectionType: z.literal(SectionType.products).default(SectionType.products),\n});\n\nexport type CABProductsSection = z.infer<typeof CABProductsSection>;\n\nexport type CABProductsSectionProps = CABProductsSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z, type ZodType } from 'zod';\n\nimport { CABButtonSection } from './button';\nimport { SectionType, VariantMode, variantModes, VariantSelector, variantSelectors } from './common';\nimport { type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport type CABVariantContent = CABButtonSection | CABTextSection;\n\nexport const CABVariantContent: ZodType<CABVariantContent> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [CABButtonSection, CABTextSection])\n);\n\nexport const CABProductSection = z.object({\n name: z.string().optional(),\n productId: z.number().nullable().default(null),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(CABVariantContent), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.product).default(SectionType.product),\n selectors: z.record(z.string(), z.enum(variantSelectors).default(VariantSelector.menu)).default(() => ({})),\n variantMode: z.enum(variantModes).default(VariantMode.multiple),\n});\n\nexport type CABProductSection = z.infer<typeof CABProductSection>;\n\nexport type CABProductSectionProps = CABProductSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { CABButtonSection } from './button';\nimport { ButtonAction, SectionType } from './common';\nimport { CABLayoutSection } from './layout';\nimport { CABSection, type SectionDetails } from './shared';\n\nexport const CABCartLineSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n sections: z\n .union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])])\n .default(() => [CABButtonSection.parse({ action: ButtonAction.switchToSubscription })]),\n sectionType: z.literal(SectionType.cartLine).default(SectionType.cartLine),\n })\n);\n\nexport type CABCartLineSection = Omit<CABLayoutSection, 'sectionType'> & {\n sectionType: 'cartLine';\n};\n\nexport type CABCartLineSectionProps = CABCartLineSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { discountSources, discountTypes, SectionType } from './common';\nimport { type SectionDetails } from './shared';\n\n/**\n * The widget discount, modeled as its own offers child section (toggled on/off in the editor and\n * rendered nowhere \u2014 it's config-only). Discounting is Shopify Functions-only (Scripts is sunset), so a\n * configured discount always applies via Functions and the amount is in Functions (minor-unit) form for\n * fixed types. `discountedFrom` is the compare-from source; `message` is the Functions discount title.\n */\nexport const CABDiscountSection = z.object({\n amount: z.union([z.number(), z.string()]).catch(0),\n discountedBy: z.string().optional(),\n discountedFrom: z.enum(discountSources).optional().catch(undefined),\n message: z.string().optional(),\n name: z.string().optional(),\n quantity: z.number().default(1),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.discount).default(SectionType.discount),\n type: z.enum(discountTypes).catch('none'),\n});\n\nexport type CABDiscountSection = z.infer<typeof CABDiscountSection>;\n\nexport type CABDiscountSectionProps = CABDiscountSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABMonetizeSection = z.object({\n name: z.string().optional(),\n /** Privacy Policy footer href (the widget's `privacy_policy_url` setting); the client relays it to `/cab/monetize`. */\n privacyPolicyUrl: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.monetize).default(SectionType.monetize),\n /** Ads-taxonomy sub-vertical id (the widget's `sub_vertical` setting); paired with `vertical`. */\n subVertical: z.string().optional(),\n /** Ads-taxonomy vertical id (the widget's `vertical` setting) \u2014 with `subVertical`, the admin Monetize editor's two configurables. */\n vertical: z.string().optional(),\n});\n\nexport type CABMonetizeSection = z.infer<typeof CABMonetizeSection>;\n\nexport type CABMonetizeSectionProps = CABMonetizeSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { ProgressTierType, progressTierTypes, ProgressTierUnit, progressTierUnits, SectionType } from './common';\nimport { GIFT_LABELS } from './giftLabels';\nimport { CABLayoutSection } from './layout';\nimport { type SectionDetails } from './shared';\n\nexport const CABProgressTier = z.object({\n /**\n * Order-discount tiers only (onsite `discount`): the reward the order-discount Function applies at\n * cart time, carried so the client can resolve the `{{discountAmount}}` token in this tier's copy.\n * `fixedAmount`: shop-currency CENTS (FX-scaled by the client, like {@link CABProgressTier.threshold});\n * `percentage`: the whole-percent number rendered raw (`{n}%`). Absent on non-discount tiers.\n */\n discount: z.object({ amount: z.number().nonnegative(), type: z.enum(['fixedAmount', 'percentage']) }).optional(),\n /**\n * Smart-cart product (gift) tiers only (onsite `filter_oos_variants`): when set, the client drops this\n * tier entirely once its gift has NO in-stock eligible variant \u2014 the milestone, fill slot and gift\n * controls all disappear, mirroring onsite removing the tier from `bar.tiers` before it renders. Absent\n * on shipping/discount/decorative tiers and left off by default (the tier renders regardless of stock).\n */\n filterOosVariants: z.boolean().default(false),\n /**\n * Smart-cart product (gift) tiers only: the reward unlocked at this tier. The client enriches\n * `productId`/`variantIds` to live variants (availability, price) and adds the chosen one to the cart\n * when the tier is reached (attribution `_tier` = {@link CABProgressTier.tierId}). Absent on shipping\n * tiers and on tiers with no configured product. Cart add/remove is a later stage; carried here so the\n * tree is complete.\n */\n gift: z\n .object({\n productId: z.number().int().positive(),\n title: z.string().optional(),\n variantIds: z.array(z.number().int().positive()).default(() => []),\n })\n .optional(),\n /**\n * The step-row label at this tier's slot (onsite `getTierLabel`): the merchant custom label, else the\n * type default ('Free Shipping' / product title / '{n}% Discount'). Localized content; blank \u21D2 no\n * label under the tier's icon. Plain text \u2014 the step row is a compact icon+label, not rich copy.\n */\n label: z.record(z.string(), z.string()).optional(),\n /**\n * The tier's goal, measured per `unit`. `currency` (default): SHOP-currency cents \u2014 the canonical\n * fallback: when the buyer's presentment currency has no entry in `thresholds`, the client\n * multiplies this by the live FX rate (converter maps the v1 `unlock_price`, e.g. `75` \u2192 `7500`).\n * `item`: a raw item count \u2014 no cents, no FX, no `thresholds` overrides.\n */\n threshold: z.number().int().nonnegative(),\n /**\n * Per-presentment-currency goal overrides \u2014 lowercased ISO currency code \u2192 cents (e.g. `{ cad: 9900 }`).\n * When the buyer's currency has an entry, the client uses it verbatim INSTEAD of FX-converting\n * `threshold`, so merchants show intentional, clean per-market amounts (Shopify Markets) rather than a\n * converted base. Defaults to `{}` \u2014 no overrides means always fall back to `threshold`.\n */\n thresholds: z.record(z.string(), z.number().int().nonnegative()).default(() => ({})),\n /**\n * Smart-cart tier identifier, mirrored onto the gift cart line's `_tier` attribute so the client can\n * match an in-cart gift back to its tier (add on reach, remove on downgrade/decline). Absent on the\n * shipping bar (single unlabeled tier, no gift).\n */\n tierId: z.string().optional(),\n tierType: z.enum(progressTierTypes).default(ProgressTierType.shipping),\n /**\n * What this tier's progress is measured in \u2014 PER TIER (onsite's `unlock_condition_type` model, NOT\n * the React port's bar-level `tiers[0]` shortcut). `currency` compares money cents against the\n * adjusted subtotal; `item` compares the raw quantity sum of non-excluded lines (the SAME exclusion\n * set as the money path). A mixed-unit bar stays coherent tier by tier: reach, fill share, and\n * `{{remainingAmount}}` (a raw `Intl`-localized count for `item` tiers, money for `currency` tiers)\n * each resolve in their own tier's unit \u2014 cross-tier arithmetic never mixes counts with cents. The\n * count carries no injected noun (no English `item`/`items` inflection on localized copy); merchant\n * template text supplies grammatically-neutral wording around the token.\n */\n unit: z.enum(progressTierUnits).default(ProgressTierUnit.currency),\n});\n\nexport type CABProgressTier = z.infer<typeof CABProgressTier>;\n\n/**\n * A self-contained progress-bar container. Extends `layout` (alignment/border/spacing/`sections`/\u2026), so it\n * holds ALL its pieces as composable children \u2014 the tier display (a `columns \u2192 rows \u2192 text/image` layout)\n * and the reached/remaining message `text`s \u2014 while the renderer adds the bar fill from `tiers` and shows\n * the active message. Everything is encapsulated under this one named section (and one country/FX gate).\n */\nexport const CABProgressBarSection = z.lazy(() =>\n CABLayoutSection.omit({ sectionType: true }).extend({\n /**\n * The onsite bar id (smart-cart TPB bars only). The client mirrors it to the cart's `_barId` attribute\n * so the product-discount / order-discount Functions can locate this bar's tier config (they key the\n * TPB metafield by bar id). Onsite writes `_barId` in the storefront drawer; a Buy-Now / headless\n * checkout reaches the extension without it, so the client writes it or the tier gift's 100% discount\n * (and any tier order discount) never applies. Absent on the v1 shipping bar (no gift tiers, no id).\n */\n barId: z.string().optional(),\n /** Empty = shown everywhere; otherwise uppercase ISO country codes. */\n countryCodes: z.array(z.string().transform((code) => code.trim().toUpperCase())).default(() => []),\n /**\n * Uppercase ISO codes where a higher-precedence geo bar applies, so this (default, non-geo) bar is\n * hidden there \u2014 replicates React `getbar`'s geo-match-over-default precedence. Empty = never excluded.\n */\n excludeCountryCodes: z.array(z.string().transform((code) => code.trim().toUpperCase())).default(() => []),\n /**\n * Measure progress against the PRE-discount subtotal (onsite `exclude_discount_in_subtotal`, and\n * forced on for bars with a discount tier so its own reward can't un-reach the tier). The client\n * adds the cart's discount allocations back to the live subtotal.\n */\n excludeDiscountInSubtotal: z.boolean().default(false),\n /** Variant ids the client subtracts from the adjusted subtotal (React `bar.excluded_products`). */\n excludedVariantIds: z.array(z.number().int().positive()).default(() => []),\n /**\n * When the cart holds a subscription item, treat the bar as reached regardless of subtotal (React\n * `free_shipping_on_subscription(s)`). `freeShippingOnAll` is already a zero-threshold tier instead.\n */\n freeShippingOnSubscription: z.boolean().default(false),\n /** Localized heading over the gift controls (onsite `gift_area_title`, default 'FREE GIFTS'). */\n giftAreaTitle: z.record(z.string(), z.string()).default(() => ({ en: 'FREE GIFTS' })),\n /** Localized gift-control labels (add/remove/heading); a tier's gift `title` beats `yourGift`. */\n giftLabels: z\n .object({\n addGift: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.addGift })),\n remove: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.remove })),\n selectOptions: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.selectOptions })),\n yourGift: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.yourGift })),\n })\n .default(() => ({\n addGift: { ...GIFT_LABELS.addGift },\n remove: { ...GIFT_LABELS.remove },\n selectOptions: { ...GIFT_LABELS.selectOptions },\n yourGift: { ...GIFT_LABELS.yourGift },\n })),\n /** The bar's a11y label; the merchant names it in the editor, else this default (React parity). */\n name: z.string().default('Order progress'),\n /**\n * Bar fill color. An explicit (widget-authored) value is used verbatim; when absent the server\n * fills it with the live shop theme's `buttonBackground` (React `useRebuyTheme` parity). Still\n * absent after that \u21D2 the theme fetch failed and the client renders its platform-default bar \u2014\n * optional, not defaulted, so \"merchant chose no color\" stays distinguishable from any real value.\n */\n progressColor: z.string().optional(),\n sectionType: z.literal(SectionType.progressBar).default(SectionType.progressBar),\n /**\n * The bar's milestones in the merchant's CONFIGURED order \u2014 the renderer does NOT sort them (022\n * O-B2: sorting by resolved threshold reversed configured milestones on out-of-order or mixed-unit\n * count-vs-cents bars). Drives the fill (even slot per tier) and, for smart-cart product tiers, the\n * gift add/remove. The visual tier display lives in `sections` (composable), NOT here.\n */\n tiers: z.union([z.array(CABProgressTier), z.strictObject({}).transform(() => [])]).default(() => []),\n })\n);\n\nexport type CABProgressBarSection = Omit<CABLayoutSection, 'name' | 'sectionType'> & {\n barId?: string;\n countryCodes: string[];\n excludeCountryCodes: string[];\n excludeDiscountInSubtotal: boolean;\n excludedVariantIds: number[];\n freeShippingOnSubscription: boolean;\n giftAreaTitle: Record<string, string>;\n giftLabels: Record<'addGift' | 'remove' | 'selectOptions' | 'yourGift', Record<string, string>>;\n name: string;\n progressColor?: string;\n sectionType: 'progressBar';\n tiers: CABProgressTier[];\n};\n\nexport type CABProgressBarSectionProps = CABProgressBarSection & SectionDetails;\n", "/**\n * Default localized labels for the smart-cart gift controls, keyed by slot then locale (same 26 locales\n * as `SWITCH_LABELS`). Schema-default content, never a client dictionary (Peter, 2026-07-06: visible\n * customer strings must be localized). `yourGift` is the generic heading \u2014 a tier's configured gift\n * `title` beats it when present.\n */\nexport const GIFT_LABELS = {\n addGift: {\n ar: '\u0623\u0636\u0641 \u0627\u0644\u0647\u062F\u064A\u0629',\n cs: 'P\u0159idat d\u00E1rek',\n da: 'Tilf\u00F8j gave',\n de: 'Geschenk hinzuf\u00FCgen',\n en: 'Add gift',\n es: 'A\u00F1adir regalo',\n fi: 'Lis\u00E4\u00E4 lahja',\n fr: 'Ajouter le cadeau',\n ga: 'Cuir bronntanas leis',\n he: '\u05D4\u05D5\u05E1\u05E3 \u05DE\u05EA\u05E0\u05D4',\n hi: '\u0909\u092A\u0939\u093E\u0930 \u091C\u094B\u0921\u093C\u0947\u0902',\n id: 'Tambahkan hadiah',\n it: 'Aggiungi regalo',\n ja: '\u30AE\u30D5\u30C8\u3092\u8FFD\u52A0',\n ko: '\uC0AC\uC740\uD488 \uCD94\uAC00',\n nl: 'Cadeau toevoegen',\n no: 'Legg til gave',\n pl: 'Dodaj prezent',\n pt: 'Adicionar presente',\n ru: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u0430\u0440\u043E\u043A',\n sv: 'L\u00E4gg till g\u00E5va',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D',\n tr: 'Hediye ekle',\n uk: '\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u0440\u0443\u043D\u043E\u043A',\n vi: 'Th\u00EAm qu\u00E0 t\u1EB7ng',\n zh: '\u6DFB\u52A0\u8D60\u54C1',\n },\n remove: {\n ar: '\u0625\u0632\u0627\u0644\u0629',\n cs: 'Odebrat',\n da: 'Fjern',\n de: 'Entfernen',\n en: 'Remove',\n es: 'Eliminar',\n fi: 'Poista',\n fr: 'Retirer',\n ga: 'Bain',\n he: '\u05D4\u05E1\u05E8',\n hi: '\u0939\u091F\u093E\u090F\u0901',\n id: 'Hapus',\n it: 'Rimuovi',\n ja: '\u524A\u9664',\n ko: '\uC81C\uAC70',\n nl: 'Verwijderen',\n no: 'Fjern',\n pl: 'Usu\u0144',\n pt: 'Remover',\n ru: '\u0423\u0434\u0430\u043B\u0438\u0442\u044C',\n sv: 'Ta bort',\n th: '\u0E19\u0E33\u0E2D\u0E2D\u0E01',\n tr: 'Kald\u0131r',\n uk: '\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438',\n vi: 'X\u00F3a',\n zh: '\u79FB\u9664',\n },\n selectOptions: {\n ar: '\u0627\u062E\u062A\u0631 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A',\n cs: 'Vyberte mo\u017Enosti',\n da: 'V\u00E6lg muligheder',\n de: 'Optionen w\u00E4hlen',\n en: 'Select Options',\n es: 'Seleccionar opciones',\n fi: 'Valitse vaihtoehdot',\n fr: 'Choisir les options',\n ga: 'Roghnaigh roghanna',\n he: '\u05D1\u05D7\u05E8 \u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA',\n hi: '\u0935\u093F\u0915\u0932\u094D\u092A \u091A\u0941\u0928\u0947\u0902',\n id: 'Pilih opsi',\n it: 'Seleziona le opzioni',\n ja: '\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u629E',\n ko: '\uC635\uC158 \uC120\uD0DD',\n nl: 'Opties kiezen',\n no: 'Velg alternativer',\n pl: 'Wybierz opcje',\n pt: 'Selecionar op\u00E7\u00F5es',\n ru: '\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B',\n sv: 'V\u00E4lj alternativ',\n th: '\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01',\n tr: 'Se\u00E7enekleri se\u00E7',\n uk: '\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438',\n vi: 'Ch\u1ECDn t\u00F9y ch\u1ECDn',\n zh: '\u9009\u62E9\u9009\u9879',\n },\n yourGift: {\n ar: '\u0647\u062F\u064A\u062A\u0643',\n cs: 'V\u00E1\u0161 d\u00E1rek',\n da: 'Din gave',\n de: 'Ihr Geschenk',\n en: 'Your gift',\n es: 'Tu regalo',\n fi: 'Lahjasi',\n fr: 'Votre cadeau',\n ga: 'Do bhronntanas',\n he: '\u05D4\u05DE\u05EA\u05E0\u05D4 \u05E9\u05DC\u05DA',\n hi: '\u0906\u092A\u0915\u093E \u0909\u092A\u0939\u093E\u0930',\n id: 'Hadiah Anda',\n it: 'Il tuo regalo',\n ja: '\u3042\u306A\u305F\u306E\u30AE\u30D5\u30C8',\n ko: '\uACE0\uAC1D\uB2D8\uC758 \uC0AC\uC740\uD488',\n nl: 'Uw cadeau',\n no: 'Din gave',\n pl: 'Tw\u00F3j prezent',\n pt: 'Seu presente',\n ru: '\u0412\u0430\u0448 \u043F\u043E\u0434\u0430\u0440\u043E\u043A',\n sv: 'Din g\u00E5va',\n th: '\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13',\n tr: 'Hediyeniz',\n uk: '\u0412\u0430\u0448 \u043F\u043E\u0434\u0430\u0440\u0443\u043D\u043E\u043A',\n vi: 'Qu\u00E0 c\u1EE7a b\u1EA1n',\n zh: '\u60A8\u7684\u8D60\u54C1',\n },\n} satisfies Record<string, Record<string, string>>;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { QuantityInput, quantityInputs, SectionType } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABQuantitySection = z.object({\n errorMessages: z\n .record(\n z.string(),\n z.object({\n /** `{{step}}` is interpolated at render \u2014 the off-increment message React never gave a merchant key. */\n increment: z.string().optional(),\n max: z.string().optional(),\n min: z.string().optional(),\n neg: z.string().optional(),\n })\n )\n .default({\n en: {\n increment: 'Quantity must be in increments of {{step}}',\n max: 'Maximum quantity allowed is {{max}}',\n min: 'Minimum quantity required is {{min}}',\n neg: 'Quantity cannot be negative',\n },\n }),\n inputType: z.enum(quantityInputs).default(QuantityInput.select),\n max: z.number().min(1).max(100).default(10),\n min: z.number().min(1).default(1),\n /** The a11y label for the quantity control; the merchant names it in the editor, else this default. */\n name: z.string().default('Quantity'),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.quantity).default(SectionType.quantity),\n});\n\nexport type CABQuantitySection = z.infer<typeof CABQuantitySection>;\n\nexport type CABQuantitySectionProps = CABQuantitySection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { ReviewsSize, reviewsSizes, SectionType } from './common';\nimport { REVIEW_LABELS } from './reviewLabels';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABReviewsSection = z.object({\n color: z.string().default('#fadb14'),\n /**\n * Localized review-count templates (`{{reviewCount}}`), one/other plural forms; the client picks the\n * form via `Intl.PluralRules`. Defaults here (schema-first) so every tree localizes without converter\n * or merchant work.\n */\n countLabels: z\n .object({\n one: z.record(z.string(), z.string()).default(() => ({ ...REVIEW_LABELS.one })),\n other: z.record(z.string(), z.string()).default(() => ({ ...REVIEW_LABELS.other })),\n })\n .default(() => ({ one: { ...REVIEW_LABELS.one }, other: { ...REVIEW_LABELS.other } })),\n name: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.reviews).default(SectionType.reviews),\n size: z.enum(reviewsSizes).default(ReviewsSize.default),\n});\n\nexport type CABReviewsSection = z.infer<typeof CABReviewsSection>;\n\nexport type CABReviewsSectionProps = CABReviewsSection & SectionDetails;\n", "/**\n * Default localized review-count templates for the reviews section, keyed by CLDR-ish plural form then\n * locale (same 26 locales as `SWITCH_LABELS`). The client picks `one` vs `other` via `Intl.PluralRules`\n * and interpolates `{{reviewCount}}` \u2014 the two-form simplification maps every non-`one` category\n * (few/many/other) to `other`. Schema-default content, never a client dictionary (Peter, 2026-07-06:\n * visible customer strings must be localized).\n */\nexport const REVIEW_LABELS = {\n one: {\n ar: '({{reviewCount}} \u062A\u0642\u064A\u064A\u0645)',\n cs: '({{reviewCount}} recenze)',\n da: '({{reviewCount}} anmeldelse)',\n de: '({{reviewCount}} Bewertung)',\n en: '({{reviewCount}} review)',\n es: '({{reviewCount}} rese\u00F1a)',\n fi: '({{reviewCount}} arvostelu)',\n fr: '({{reviewCount}} avis)',\n ga: '({{reviewCount}} l\u00E9irmheas)',\n he: '({{reviewCount}} \u05D1\u05D9\u05E7\u05D5\u05E8\u05EA)',\n hi: '({{reviewCount}} \u0938\u092E\u0940\u0915\u094D\u0937\u093E)',\n id: '({{reviewCount}} ulasan)',\n it: '({{reviewCount}} recensione)',\n ja: '({{reviewCount}}\u4EF6\u306E\u30EC\u30D3\u30E5\u30FC)',\n ko: '({{reviewCount}}\uAC1C \uB9AC\uBDF0)',\n nl: '({{reviewCount}} beoordeling)',\n no: '({{reviewCount}} anmeldelse)',\n pl: '({{reviewCount}} opinia)',\n pt: '({{reviewCount}} avalia\u00E7\u00E3o)',\n ru: '({{reviewCount}} \u043E\u0442\u0437\u044B\u0432)',\n sv: '({{reviewCount}} recension)',\n th: '({{reviewCount}} \u0E23\u0E35\u0E27\u0E34\u0E27)',\n tr: '({{reviewCount}} de\u011Ferlendirme)',\n uk: '({{reviewCount}} \u0432\u0456\u0434\u0433\u0443\u043A)',\n vi: '({{reviewCount}} \u0111\u00E1nh gi\u00E1)',\n zh: '({{reviewCount}} \u6761\u8BC4\u4EF7)',\n },\n other: {\n ar: '({{reviewCount}} \u062A\u0642\u064A\u064A\u0645\u0627\u062A)',\n cs: '({{reviewCount}} recenz\u00ED)',\n da: '({{reviewCount}} anmeldelser)',\n de: '({{reviewCount}} Bewertungen)',\n en: '({{reviewCount}} reviews)',\n es: '({{reviewCount}} rese\u00F1as)',\n fi: '({{reviewCount}} arvostelua)',\n fr: '({{reviewCount}} avis)',\n ga: '({{reviewCount}} l\u00E9irmheasanna)',\n he: '({{reviewCount}} \u05D1\u05D9\u05E7\u05D5\u05E8\u05D5\u05EA)',\n hi: '({{reviewCount}} \u0938\u092E\u0940\u0915\u094D\u0937\u093E\u090F\u0901)',\n id: '({{reviewCount}} ulasan)',\n it: '({{reviewCount}} recensioni)',\n ja: '({{reviewCount}}\u4EF6\u306E\u30EC\u30D3\u30E5\u30FC)',\n ko: '({{reviewCount}}\uAC1C \uB9AC\uBDF0)',\n nl: '({{reviewCount}} beoordelingen)',\n no: '({{reviewCount}} anmeldelser)',\n pl: '({{reviewCount}} opinii)',\n pt: '({{reviewCount}} avalia\u00E7\u00F5es)',\n ru: '({{reviewCount}} \u043E\u0442\u0437\u044B\u0432\u043E\u0432)',\n sv: '({{reviewCount}} recensioner)',\n th: '({{reviewCount}} \u0E23\u0E35\u0E27\u0E34\u0E27)',\n tr: '({{reviewCount}} de\u011Ferlendirme)',\n uk: '({{reviewCount}} \u0432\u0456\u0434\u0433\u0443\u043A\u0456\u0432)',\n vi: '({{reviewCount}} \u0111\u00E1nh gi\u00E1)',\n zh: '({{reviewCount}} \u6761\u8BC4\u4EF7)',\n },\n} satisfies Record<'one' | 'other', Record<string, string>>;\n", "import { slice } from 'es-toolkit/compat';\nimport { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType, VariantMode, variantModes, VariantSelector, variantSelectors } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABVariantsSection = z.object({\n hideOutOfStockVariants: z.boolean().default(false),\n name: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.variants).default(SectionType.variants),\n selector: z.enum(slice(variantSelectors, 0, 3)).default(VariantSelector.menu),\n variantMode: z.enum(variantModes).default(VariantMode.multiple),\n});\n\nexport type CABVariantsSection = z.infer<typeof CABVariantsSection>;\n\nexport type CABVariantsSectionProps = CABVariantsSection & SectionDetails;\n", "/**\n * Default localized labels for the offer card's add-to-order button states and the opt-in undo banner,\n * keyed by slot then locale (same 26 locales as `SWITCH_LABELS`). The converter overlays a defined v1\n * merchant value as the `en` entry (verbatim) and falls back to these for blank/absent values, so a\n * migrated widget keeps its copy while new/unset widgets localize. `addedToCartMessage` tokens are\n * camelCase (CAB default); legacy snake_case tokens in merchant overrides still resolve client-side.\n */\nexport const OFFER_LABELS = {\n addedToCart: {\n ar: '\u062A\u0645\u062A \u0627\u0644\u0625\u0636\u0627\u0641\u0629!',\n cs: 'P\u0159id\u00E1no!',\n da: 'Tilf\u00F8jet!',\n de: 'Hinzugef\u00FCgt!',\n en: 'Added!',\n es: '\u00A1A\u00F1adido!',\n fi: 'Lis\u00E4tty!',\n fr: 'Ajout\u00E9 !',\n ga: 'Curtha leis!',\n he: '\u05E0\u05D5\u05E1\u05E3!',\n hi: '\u091C\u094B\u0921\u093C\u093E \u0917\u092F\u093E!',\n id: 'Ditambahkan!',\n it: 'Aggiunto!',\n ja: '\u8FFD\u52A0\u3057\u307E\u3057\u305F\uFF01',\n ko: '\uCD94\uAC00\uB428!',\n nl: 'Toegevoegd!',\n no: 'Lagt til!',\n pl: 'Dodano!',\n pt: 'Adicionado!',\n ru: '\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E!',\n sv: 'Tillagd!',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E41\u0E25\u0E49\u0E27!',\n tr: 'Eklendi!',\n uk: '\u0414\u043E\u0434\u0430\u043D\u043E!',\n vi: '\u0110\u00E3 th\u00EAm!',\n zh: '\u5DF2\u6DFB\u52A0\uFF01',\n },\n addedToCartMessage: {\n ar: '\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 {{quantity}} {{productTitle}} \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629.',\n cs: '{{quantity}} {{productTitle}} p\u0159id\u00E1no do ko\u0161\u00EDku.',\n da: '{{quantity}} {{productTitle}} lagt i kurven.',\n de: '{{quantity}} {{productTitle}} zum Warenkorb hinzugef\u00FCgt.',\n en: '{{quantity}} {{productTitle}} successfully added to cart.',\n es: '{{quantity}} {{productTitle}} a\u00F1adido al carrito.',\n fi: '{{quantity}} {{productTitle}} lis\u00E4tty ostoskoriin.',\n fr: '{{quantity}} {{productTitle}} ajout\u00E9 au panier.',\n ga: 'Cuireadh {{quantity}} {{productTitle}} sa chairt.',\n he: '{{quantity}} {{productTitle}} \u05E0\u05D5\u05E1\u05E3 \u05DC\u05E2\u05D2\u05DC\u05D4.',\n hi: '{{quantity}} {{productTitle}} \u0915\u093E\u0930\u094D\u091F \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u093E \u0917\u092F\u093E\u0964',\n id: '{{quantity}} {{productTitle}} ditambahkan ke keranjang.',\n it: '{{quantity}} {{productTitle}} aggiunto al carrello.',\n ja: '{{quantity}} {{productTitle}}\u3092\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002',\n ko: '{{quantity}} {{productTitle}}\uC774(\uAC00) \uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uCD94\uAC00\uB418\uC5C8\uC2B5\uB2C8\uB2E4.',\n nl: '{{quantity}} {{productTitle}} toegevoegd aan winkelwagen.',\n no: '{{quantity}} {{productTitle}} lagt i handlekurven.',\n pl: '{{quantity}} {{productTitle}} dodano do koszyka.',\n pt: '{{quantity}} {{productTitle}} adicionado ao carrinho.',\n ru: '{{quantity}} {{productTitle}} \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443.',\n sv: '{{quantity}} {{productTitle}} har lagts i varukorgen.',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21 {{quantity}} {{productTitle}} \u0E25\u0E07\u0E15\u0E30\u0E01\u0E23\u0E49\u0E32\u0E41\u0E25\u0E49\u0E27',\n tr: '{{quantity}} {{productTitle}} sepete eklendi.',\n uk: '{{quantity}} {{productTitle}} \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u043A\u043E\u0448\u0438\u043A\u0430.',\n vi: '\u0110\u00E3 th\u00EAm {{quantity}} {{productTitle}} v\u00E0o gi\u1ECF h\u00E0ng.',\n zh: '{{quantity}} {{productTitle}} \u5DF2\u52A0\u5165\u8D2D\u7269\u8F66\u3002',\n },\n addingToCart: {\n ar: '\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0636\u0627\u0641\u0629...',\n cs: 'P\u0159id\u00E1v\u00E1n\u00ED...',\n da: 'Tilf\u00F8jer...',\n de: 'Wird hinzugef\u00FCgt...',\n en: 'Adding...',\n es: 'A\u00F1adiendo...',\n fi: 'Lis\u00E4t\u00E4\u00E4n...',\n fr: 'Ajout en cours...',\n ga: '\u00C1 chur leis...',\n he: '\u05DE\u05D5\u05E1\u05D9\u05E3...',\n hi: '\u091C\u094B\u0921\u093C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948...',\n id: 'Menambahkan...',\n it: 'Aggiunta in corso...',\n ja: '\u8FFD\u52A0\u4E2D...',\n ko: '\uCD94\uAC00 \uC911...',\n nl: 'Toevoegen...',\n no: 'Legger til...',\n pl: 'Dodawanie...',\n pt: 'Adicionando...',\n ru: '\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435...',\n sv: 'L\u00E4gger till...',\n th: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E1E\u0E34\u0E48\u0E21...',\n tr: 'Ekleniyor...',\n uk: '\u0414\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F...',\n vi: '\u0110ang th\u00EAm...',\n zh: '\u6B63\u5728\u6DFB\u52A0...',\n },\n addToCart: {\n ar: '\u0623\u0636\u0641 \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629',\n cs: 'P\u0159idat do ko\u0161\u00EDku',\n da: 'L\u00E6g i kurv',\n de: 'In den Warenkorb',\n en: 'Add to cart',\n es: 'A\u00F1adir al carrito',\n fi: 'Lis\u00E4\u00E4 ostoskoriin',\n fr: 'Ajouter au panier',\n ga: 'Cuir sa chairt',\n he: '\u05D4\u05D5\u05E1\u05E3 \u05DC\u05E2\u05D2\u05DC\u05D4',\n hi: '\u0915\u093E\u0930\u094D\u091F \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902',\n id: 'Tambahkan ke keranjang',\n it: 'Aggiungi al carrello',\n ja: '\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0',\n ko: '\uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uCD94\uAC00',\n nl: 'In winkelwagen',\n no: 'Legg i handlekurven',\n pl: 'Dodaj do koszyka',\n pt: 'Adicionar ao carrinho',\n ru: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443',\n sv: 'L\u00E4gg i varukorgen',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E25\u0E07\u0E15\u0E30\u0E01\u0E23\u0E49\u0E32',\n tr: 'Sepete ekle',\n uk: '\u0414\u043E\u0434\u0430\u0442\u0438 \u0432 \u043A\u043E\u0448\u0438\u043A',\n vi: 'Th\u00EAm v\u00E0o gi\u1ECF h\u00E0ng',\n zh: '\u52A0\u5165\u8D2D\u7269\u8F66',\n },\n redirectToCheckout: {\n ar: '\u0627\u0644\u062F\u0641\u0639',\n cs: 'Pokladna',\n da: 'Til kassen',\n de: 'Zur Kasse',\n en: 'Checkout',\n es: 'Finalizar compra',\n fi: 'Kassalle',\n fr: 'Paiement',\n ga: 'Seice\u00E1il amach',\n he: '\u05DC\u05EA\u05E9\u05DC\u05D5\u05DD',\n hi: '\u091A\u0947\u0915\u0906\u0909\u091F',\n id: 'Checkout',\n it: 'Cassa',\n ja: '\u30C1\u30A7\u30C3\u30AF\u30A2\u30A6\u30C8',\n ko: '\uACB0\uC81C\uD558\uAE30',\n nl: 'Afrekenen',\n no: 'Til kassen',\n pl: 'Do kasy',\n pt: 'Finalizar compra',\n ru: '\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u0437\u0430\u043A\u0430\u0437',\n sv: 'Till kassan',\n th: '\u0E0A\u0E33\u0E23\u0E30\u0E40\u0E07\u0E34\u0E19',\n tr: '\u00D6deme',\n uk: '\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u0438 \u0437\u0430\u043C\u043E\u0432\u043B\u0435\u043D\u043D\u044F',\n vi: 'Thanh to\u00E1n',\n zh: '\u7ED3\u8D26',\n },\n soldOut: {\n ar: '\u0646\u0641\u062F\u062A \u0627\u0644\u0643\u0645\u064A\u0629',\n cs: 'Vyprod\u00E1no',\n da: 'Udsolgt',\n de: 'Ausverkauft',\n en: 'Sold out',\n es: 'Agotado',\n fi: 'Loppuunmyyty',\n fr: '\u00C9puis\u00E9',\n ga: 'D\u00EDolta amach',\n he: '\u05D0\u05D6\u05DC \u05DE\u05D4\u05DE\u05DC\u05D0\u05D9',\n hi: '\u0938\u094D\u091F\u0949\u0915 \u0916\u093C\u0924\u094D\u092E',\n id: 'Habis terjual',\n it: 'Esaurito',\n ja: '\u58F2\u308A\u5207\u308C',\n ko: '\uD488\uC808',\n nl: 'Uitverkocht',\n no: 'Utsolgt',\n pl: 'Wyprzedane',\n pt: 'Esgotado',\n ru: '\u0420\u0430\u0441\u043F\u0440\u043E\u0434\u0430\u043D\u043E',\n sv: 'Sluts\u00E5ld',\n th: '\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E2B\u0E21\u0E14',\n tr: 'T\u00FCkendi',\n uk: '\u0420\u043E\u0437\u043F\u0440\u043E\u0434\u0430\u043D\u043E',\n vi: 'H\u1EBFt h\u00E0ng',\n zh: '\u5DF2\u552E\u7F44',\n },\n undo: {\n ar: '\u062A\u0631\u0627\u062C\u0639',\n cs: 'Zp\u011Bt',\n da: 'Fortryd',\n de: 'R\u00FCckg\u00E4ngig',\n en: 'Undo',\n es: 'Deshacer',\n fi: 'Kumoa',\n fr: 'Annuler',\n ga: 'Cealaigh',\n he: '\u05D1\u05D8\u05DC',\n hi: '\u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0915\u0930\u0947\u0902',\n id: 'Urungkan',\n it: 'Annulla',\n ja: '\u5143\u306B\u623B\u3059',\n ko: '\uC2E4\uD589 \uCDE8\uC18C',\n nl: 'Ongedaan maken',\n no: 'Angre',\n pl: 'Cofnij',\n pt: 'Desfazer',\n ru: '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C',\n sv: '\u00C5ngra',\n th: '\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33',\n tr: 'Geri al',\n uk: '\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438',\n vi: 'Ho\u00E0n t\u00E1c',\n zh: '\u64A4\u9500',\n },\n} as const satisfies Record<string, Record<string, string>>;\n", "import { z } from 'zod';\n\nimport { EditorMode, editorModes } from './common';\nimport { targetAreas, WidgetType, widgetTypes } from './constants';\nimport { CABLayoutSection } from './layout';\nimport { UI_LABELS } from './uiLabels';\n\n/**\n * A per-slot `Record<locale, string>` defaulted from {@link UI_LABELS}: a missing slot gets the fallback,\n * and a present-but-empty slot (`{}`) is guarded back to the fallback too \u2014 otherwise the per-slot default\n * (which only fires for `undefined`) is bypassed and the client renders a blank aria label.\n */\nconst localized = (fallback: Record<string, string>) =>\n z\n .record(z.string(), z.string())\n .default(() => ({ ...fallback }))\n .transform((labels) => (Object.keys(labels).length > 0 ? labels : { ...fallback }));\n\n/**\n * Localized UI-chrome labels for the tree, defaulted from {@link UI_LABELS} at parse so every widget\n * carries them without converter or merchant work. Per-slot `Record<locale, string>`; the client indexes\n * the buyer language with `selectLanguage`. Lives on the root (not per section) because these strings \u2014\n * spinner/carousel/select-label/variant-state chrome \u2014 are shared across the whole tree.\n */\nexport const CABUILabels = z\n .object({\n currentPage: localized(UI_LABELS.currentPage),\n loadingOptions: localized(UI_LABELS.loadingOptions),\n nextPage: localized(UI_LABELS.nextPage),\n offerDialog: localized(UI_LABELS.offerDialog),\n page: localized(UI_LABELS.page),\n previousPage: localized(UI_LABELS.previousPage),\n selected: localized(UI_LABELS.selected),\n subscriptionOptions: localized(UI_LABELS.subscriptionOptions),\n updating: localized(UI_LABELS.updating),\n })\n .default(() => ({\n currentPage: { ...UI_LABELS.currentPage },\n loadingOptions: { ...UI_LABELS.loadingOptions },\n nextPage: { ...UI_LABELS.nextPage },\n offerDialog: { ...UI_LABELS.offerDialog },\n page: { ...UI_LABELS.page },\n previousPage: { ...UI_LABELS.previousPage },\n selected: { ...UI_LABELS.selected },\n subscriptionOptions: { ...UI_LABELS.subscriptionOptions },\n updating: { ...UI_LABELS.updating },\n }));\n\nexport type CABUILabels = Record<keyof typeof UI_LABELS, Record<string, string>>;\n\nconst TargetArea = z\n .object({\n fill: z.boolean().optional(),\n flip: z.enum(['both', 'horizontal', 'vertical']).optional(),\n icon: z.string(),\n label: z.string(),\n width: z.string(),\n })\n .default(targetAreas[EditorMode.checkoutExtension][1]);\n\nexport type TargetArea = {\n fill?: boolean;\n flip?: 'horizontal' | 'vertical' | 'both';\n icon: string;\n label: string;\n width: string;\n};\n\nexport const CABTracking = z\n .object({\n enableAttribution: z.boolean().default(true),\n enableSource: z.boolean().default(true),\n enableWidget: z.boolean().default(true),\n })\n .default({ enableAttribution: true, enableSource: true, enableWidget: true });\n\nexport type CABTracking = z.infer<typeof CABTracking>;\n\n/**\n * The A/B experiment this tree was selected for, attached server-side when the placeholder widget is an\n * experiment target (else absent). The client renders the chosen variant's tree as usual and emits the\n * `ab-test-viewed` / `ABN.TEST` analytics from these fields \u2014 replicating React's `useAnalyticsEvent`.\n */\nexport const CABExperiment = z.object({\n elementId: z.number(),\n experimentId: z.number(),\n experimentType: z.string(),\n selectedId: z.number(),\n});\n\nexport type CABExperiment = z.infer<typeof CABExperiment>;\n\nexport const CABRootSection = CABLayoutSection.extend({\n editorMode: z.enum(editorModes).default(EditorMode.checkoutExtension),\n experiment: CABExperiment.optional(),\n previewMode: z.boolean().default(false),\n storeId: z.number().nullable().default(null),\n targetArea: TargetArea.nullable(),\n tracking: CABTracking,\n type: z.enum(widgetTypes).default(WidgetType.ui_extension_content_block),\n uiLabels: CABUILabels,\n version: z.literal(2).default(2),\n widgetId: z.number().nullable().default(null),\n});\n\nexport type CABRootSection = CABLayoutSection & {\n editorMode: EditorMode;\n experiment?: CABExperiment;\n previewMode: boolean;\n storeId: number | null;\n targetArea: TargetArea | null;\n tracking: CABTracking;\n type: WidgetType;\n uiLabels: CABUILabels;\n version: number;\n widgetId: number | null;\n};\n", "/**\n * Default UI-chrome labels \u2014 the buyer-visible and screen-reader strings that have no per-section\n * merchant slot: the subscription-frequency select's group label, spinner busy text, carousel control\n * names + current-page semantics, the variant selected-state suffix, and the Monetize offer dialog\n * name. Keyed by slot then locale, shipped in the payload so the client never bundles a dictionary\n * (Peter, 2026-07-06: visible customer strings must be localized). English defaults only \u2014 unlike the\n * merchant-authored `SWITCH_LABELS`/`GIFT_LABELS`, these mirror strings legacy hardcoded in English, so\n * the fix is making them payload-sourced (localizable, zero bundle) rather than inventing 25 unreviewed\n * translations; a merchant or a later localization pass can populate other locales. `{{page}}` in the\n * pagination slots is interpolated per control at render.\n */\nexport const UI_LABELS = {\n currentPage: { en: 'Page {{page}}, current' },\n loadingOptions: { en: 'Loading subscription options' },\n nextPage: { en: 'Next' },\n offerDialog: { en: 'Offer' },\n page: { en: 'Page {{page}}' },\n previousPage: { en: 'Previous' },\n selected: { en: 'selected' },\n subscriptionOptions: { en: 'Subscription Options' },\n updating: { en: 'Updating' },\n} satisfies Record<string, Record<string, string>>;\n", "/**\n * Default localized labels for the switch-to-subscription button content, keyed by `buttonField` then locale.\n * The single source of truth shared by the admin editor and the read-time `convertLineItemEditorToV2` transform\n * so a widget renders identically whether migrated in admin or converted on the fly. `{{subscriptionDiscount}}`\n * is substituted per-plan at render \u2014 CAB tokens are camelCase by default; a legacy snake_case token in a v1\n * merchant override still resolves (the client camelCases unknown token keys against its camelCase variables).\n * `subscriptionOption` is the frequency-select option template (legacy\n * `SwitchToSubscriptionLanguageDefaults.subscription_option_label`); the client resolves `{{interval}}`\n * through `Intl.NumberFormat` unit style, so the noun arrives in the buyer's language, pluralized per count\n * from the runtime's CLDR data (English CLDR nouns are lowercase \u2014 an accepted divergence from legacy).\n */\nexport const SWITCH_LABELS = {\n subscriptionOption: {\n ar: '\u064A\u062A\u0645 \u0627\u0644\u062A\u0648\u0635\u064A\u0644 \u0643\u0644 {{frequency}} {{interval}}',\n cs: 'Doru\u010Den\u00ED ka\u017Ed\u00FDch {{frequency}} {{interval}}',\n da: 'Leveres hver {{frequency}} {{interval}}',\n de: 'Lieferung alle {{frequency}} {{interval}}',\n en: 'Delivers every {{frequency}} {{interval}}',\n es: 'Entrega cada {{frequency}} {{interval}}',\n fi: 'Toimitus {{frequency}} {{interval}} v\u00E4lein',\n fr: 'Livraison tous les {{frequency}} {{interval}}',\n ga: 'Seachadtar gach {{frequency}} {{interval}}',\n he: '\u05DE\u05E9\u05DC\u05D5\u05D7 \u05DB\u05DC {{frequency}} {{interval}}',\n hi: '\u0939\u0930 {{frequency}} {{interval}} \u092E\u0947\u0902 \u0921\u093F\u0932\u0940\u0935\u0930\u0940',\n id: 'Dikirim setiap {{frequency}} {{interval}}',\n it: 'Consegna ogni {{frequency}} {{interval}}',\n ja: '{{frequency}} {{interval}}\u3054\u3068\u306B\u304A\u5C4A\u3051',\n ko: '{{frequency}} {{interval}}\uB9C8\uB2E4 \uBC30\uC1A1',\n nl: 'Wordt elke {{frequency}} {{interval}} geleverd',\n no: 'Leveres hver {{frequency}} {{interval}}',\n pl: 'Dostawa co {{frequency}} {{interval}}',\n pt: 'Entrega a cada {{frequency}} {{interval}}',\n ru: '\u0414\u043E\u0441\u0442\u0430\u0432\u043A\u0430 \u043A\u0430\u0436\u0434\u044B\u0435 {{frequency}} {{interval}}',\n sv: 'Levereras var {{frequency}} {{interval}}',\n th: '\u0E08\u0E31\u0E14\u0E2A\u0E48\u0E07\u0E17\u0E38\u0E01 {{frequency}} {{interval}}',\n tr: 'Her {{frequency}} {{interval}} aral\u0131\u011F\u0131nda teslimat',\n uk: '\u0414\u043E\u0441\u0442\u0430\u0432\u043A\u0430 \u043A\u043E\u0436\u043D\u0456 {{frequency}} {{interval}}',\n vi: 'Giao h\u00E0ng m\u1ED7i {{frequency}} {{interval}}',\n zh: '\u6BCF {{frequency}} {{interval}} \u914D\u9001\u4E00\u6B21',\n },\n switchToOneTimePurchase: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0634\u0631\u0627\u0621 \u0644\u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629',\n cs: 'P\u0159epnout na jednor\u00E1zov\u00FD n\u00E1kup',\n da: 'Skift til engangsk\u00F8b',\n de: 'Zu einmaligem Kauf wechseln',\n en: 'Switch to One-time Purchase',\n es: 'Cambiar a compra \u00FAnica',\n fi: 'Vaihda kertaluonteiseen ostoon',\n fr: 'Passer \u00E0 un achat unique',\n ga: 'Athraigh go ceannach aonuaire',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05E8\u05DB\u05D9\u05E9\u05D4 \u05D7\u05D3-\u05E4\u05E2\u05DE\u05D9\u05EA',\n hi: '\u090F\u0915 \u092C\u093E\u0930 \u0915\u0940 \u0916\u0930\u0940\u0926 \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902',\n id: 'Beralih ke pembelian satu kali',\n it: 'Passa all\u2019acquisto una tantum',\n ja: '1\u56DE\u9650\u308A\u306E\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u308B',\n ko: '\uC77C\uD68C\uC131 \uAD6C\uB9E4\uB85C \uC804\uD658',\n nl: 'Overschakelen naar eenmalige aankoop',\n no: 'Bytt til engangskj\u00F8p',\n pl: 'Prze\u0142\u0105cz na jednorazowy zakup',\n pt: 'Mudar para compra \u00FAnica',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u0440\u0430\u0437\u043E\u0432\u0443\u044E \u043F\u043E\u043A\u0443\u043F\u043A\u0443',\n sv: 'Byt till eng\u00E5ngsk\u00F6p',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E0B\u0E37\u0E49\u0E2D\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E14\u0E35\u0E22\u0E27',\n tr: 'Tek seferlik sat\u0131n almaya ge\u00E7',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043E\u0434\u043D\u043E\u0440\u0430\u0437\u043E\u0432\u0443 \u043F\u043E\u043A\u0443\u043F\u043A\u0443',\n vi: 'Chuy\u1EC3n sang mua m\u1ED9t l\u1EA7n',\n zh: '\u5207\u6362\u4E3A\u4E00\u6B21\u6027\u8D2D\u4E70',\n },\n switchToSubscriptionNoDiscount: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0634\u062A\u0631\u0627\u0643',\n cs: 'P\u0159epnout na p\u0159edplatn\u00E9',\n da: 'Skift til abonnement',\n de: 'Zu einem Abonnement wechseln',\n en: 'Switch to Subscription',\n es: 'Cambiar a suscripci\u00F3n',\n fi: 'Vaihda tilaukseen',\n fr: 'Passer \u00E0 un abonnement',\n ga: 'Athraigh go s\u00EDnti\u00FAs',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05DE\u05E0\u05D5\u05D9',\n hi: '\u0938\u0926\u0938\u094D\u092F\u0924\u093E \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902',\n id: 'Beralih ke langganan',\n it: 'Passa all\u2019abbonamento',\n ja: '\u5B9A\u671F\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u308B',\n ko: '\uAD6C\uB3C5\uC73C\uB85C \uC804\uD658',\n nl: 'Overschakelen naar abonnement',\n no: 'Bytt til abonnement',\n pl: 'Prze\u0142\u0105cz na subskrypcj\u0119',\n pt: 'Mudar para assinatura',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443',\n sv: 'Byt till prenumeration',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E21\u0E31\u0E04\u0E23\u0E2A\u0E21\u0E32\u0E0A\u0E34\u0E01',\n tr: 'Aboneli\u011Fe ge\u00E7',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0443',\n vi: 'Chuy\u1EC3n sang \u0111\u0103ng k\u00FD',\n zh: '\u5207\u6362\u4E3A\u8BA2\u9605',\n },\n switchToSubscriptionWithDiscount: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0634\u062A\u0631\u0627\u0643 \u0648\u062A\u0648\u0641\u064A\u0631 {{subscriptionDiscount}}%',\n cs: 'P\u0159epnout na p\u0159edplatn\u00E9 a u\u0161et\u0159it {{subscriptionDiscount}} %',\n da: 'Skift til abonnement og spar {{subscriptionDiscount}}%',\n de: 'Zu einem Abonnement wechseln und {{subscriptionDiscount}} % sparen',\n en: 'Switch to Subscription & Save {{subscriptionDiscount}}%',\n es: 'Cambiar a suscripci\u00F3n y ahorrar {{subscriptionDiscount}}%',\n fi: 'Vaihda tilaukseen ja s\u00E4\u00E4st\u00E4 {{subscriptionDiscount}} %',\n fr: 'Passer \u00E0 un abonnement et \u00E9conomiser {{subscriptionDiscount}} %',\n ga: 'Athraigh go s\u00EDnti\u00FAs agus s\u00E1bh\u00E1il {{subscriptionDiscount}}%',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05DE\u05E0\u05D5\u05D9 \u05D5\u05D7\u05E1\u05D5\u05DA {{subscriptionDiscount}}%',\n hi: '\u0938\u0926\u0938\u094D\u092F\u0924\u093E \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902 \u0914\u0930 {{subscriptionDiscount}}% \u092C\u091A\u093E\u090F\u0902',\n id: 'Beralih ke langganan dan hemat {{subscriptionDiscount}}%',\n it: 'Passa all\u2019abbonamento e risparmia {{subscriptionDiscount}}%',\n ja: '\u5B9A\u671F\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u3066{{subscriptionDiscount}}%\u304A\u5F97',\n ko: '\uAD6C\uB3C5\uC73C\uB85C \uC804\uD658\uD558\uACE0 {{subscriptionDiscount}}% \uC808\uC57D',\n nl: 'Overschakelen naar abonnement en {{subscriptionDiscount}}% besparen',\n no: 'Bytt til abonnement og spar {{subscriptionDiscount}}%',\n pl: 'Prze\u0142\u0105cz na subskrypcj\u0119 i oszcz\u0119d\u017A {{subscriptionDiscount}}%',\n pt: 'Mudar para assinatura e economizar {{subscriptionDiscount}}%',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u0438 \u0441\u044D\u043A\u043E\u043D\u043E\u043C\u0438\u0442\u044C {{subscriptionDiscount}}%',\n sv: 'Byt till prenumeration och spara {{subscriptionDiscount}}%',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E21\u0E31\u0E04\u0E23\u0E2A\u0E21\u0E32\u0E0A\u0E34\u0E01\u0E41\u0E25\u0E30\u0E1B\u0E23\u0E30\u0E2B\u0E22\u0E31\u0E14 {{subscriptionDiscount}}%',\n tr: 'Aboneli\u011Fe ge\u00E7 ve {{subscriptionDiscount}}% tasarruf et',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0443 \u0442\u0430 \u0437\u0430\u043E\u0449\u0430\u0434\u0438\u0442\u0438 {{subscriptionDiscount}}%',\n vi: 'Chuy\u1EC3n sang \u0111\u0103ng k\u00FD v\u00E0 ti\u1EBFt ki\u1EC7m {{subscriptionDiscount}}%',\n zh: '\u5207\u6362\u4E3A\u8BA2\u9605\u5E76\u8282\u7701 {{subscriptionDiscount}}%',\n },\n} as const satisfies Record<string, Record<string, string>>;\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,KAAAA,WAAS;;;ACAX,IAAM,aAAa,CAA8B,WACpD,OAAO,OAAO,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAExD,IAAM,eAAe,CAAC,QAAQ,WAAW,WAAW,UAAU;AAC9D,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,cAAc,CAAC,QAAQ,SAAS,QAAQ,SAAS,cAAc;AACrE,IAAM,eAAe,WAAW,WAAW;AAG3C,IAAM,eAAe,CAAC,QAAQ,QAAQ,UAAU,QAAQ;AACxD,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,eAAe,CAAC,QAAQ,UAAU,OAAO;AAC/C,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,eAAe,WAAW,aAAa;AAG7C,IAAM,eAAe;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,eAAe,CAAC,WAAW,aAAa,SAAS,QAAQ;AAC/D,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,aAAa,CAAC,WAAW,QAAQ,MAAM;AAC7C,IAAM,YAAY,WAAW,UAAU;AAGvC,IAAM,kBAAkB,CAAC,SAAS,kBAAkB;AACpD,IAAM,iBAAiB,WAAW,eAAe;AAGjD,IAAM,gBAAgB,CAAC,QAAQ,cAAc,SAAS,cAAc;AACpE,IAAM,eAAe,WAAW,aAAa;AAG7C,IAAM,cAAc;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,aAAa,WAAW,WAAW;AAGzC,IAAM,uBAAuB,CAAC,SAAS,UAAU,KAAK;AACtD,IAAM,sBAAsB,WAAW,oBAAoB;AAG3D,IAAM,eAAe;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,aAAa,CAAC,SAAS,SAAS;AACtC,IAAM,YAAY,WAAW,UAAU;AAGvC,IAAM,mBAAmB,CAAC,eAAe,aAAa,cAAc,UAAU;AAC9E,IAAM,kBAAkB,WAAW,gBAAgB;AAGnD,IAAM,qBAAqB;AAAA,EAC9B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AACT;AAEO,IAAM,eAAe,CAAC,YAAY,gBAAgB,MAAM;AACxD,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,oBAAoB,CAAC,cAAc,YAAY,WAAW,UAAU;AAC1E,IAAM,mBAAmB,WAAW,iBAAiB;AAGrD,IAAM,oBAAoB,CAAC,YAAY,MAAM;AAC7C,IAAM,mBAAmB,WAAW,iBAAiB;AAGrD,IAAM,iBAAiB,CAAC,UAAU,QAAQ;AAC1C,IAAM,gBAAgB,WAAW,cAAc;AAG/C,IAAM,eAAe,CAAC,SAAS,WAAW,OAAO;AACjD,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,eAAe;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,WAAW,CAAC,QAAQ,cAAc,SAAS,QAAQ,SAAS,YAAY;AAC9E,IAAM,UAAU,WAAW,QAAQ;AAGnC,IAAM,iBAAiB,CAAC,SAAS,UAAU,KAAK;AAChD,IAAM,gBAAgB,WAAW,cAAc;AAG/C,IAAM,iBAAiB,CAAC,QAAQ,WAAW,UAAU,cAAc,WAAW,WAAW,UAAU;AACnG,IAAM,gBAAgB,WAAW,cAAc;AAG/C,IAAM,gBAAgB,CAAC,cAAc,SAAS,QAAQ,UAAU,SAAS,YAAY;AACrF,IAAM,eAAe,WAAW,aAAa;AAG7C,IAAM,eAAe,CAAC,YAAY,QAAQ;AAC1C,IAAM,cAAc,WAAW,YAAY;AAG3C,IAAM,mBAAmB,CAAC,QAAQ,SAAS,QAAQ;AACnD,IAAM,kBAAkB,WAAW,gBAAgB;AAGnD,IAAM,qBAAqB,CAAC,OAAO,UAAU,QAAQ;AACrD,IAAM,oBAAoB,WAAW,kBAAkB;;;ACvN9D,SAAS,MAAMC,gBAAc;AAC7B,SAAS,KAAAC,WAAS;;;ACDlB,SAAS,SAAS;AAEX,IAAM,YAAY;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,WAAW,EAAE,KAAK,SAAS;AAE1B,IAAM,WAAW,SAAS;AAG1B,IAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,eAAe,EAAE,KAAK,aAAa;AAElC,IAAM,eAAe,aAAa;AAGlC,IAAM,gBAAgB,EAAE,OAAO;AAAA,EAClC,UAAU,EAAE,KAAK,aAAa,EAAE,QAAQ,aAAa,QAAQ;AAAA,EAC7D,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EAClG,MAAM,EAAE,KAAK,SAAS,EAAE,QAAQ,SAAS,aAAa;AAAA,EACtD,OAAO,EAAE,OAAO,OAAO,EAAE,QAAQ,EAAE;AACvC,CAAC;AAIM,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACnC,OAAO,EAAE,MAAM,aAAa,EAAE,QAAQ,MAAM,CAAC,CAAC;AAClD,CAAC;AAIM,IAAM,UAAU,EAAE,OAAO;AAAA,EAC5B,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EAChD,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,SAAS,EACJ,MAAM;AAAA,IACH,EAAE;AAAA,MACE,EAAE,OAAO;AAAA,QACL,eAAe,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,QACvC,OAAO,EAAE,MAAM,cAAc,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,QAC/C,QAAQ,EACH;AAAA,UACG,EAAE,OAAO;AAAA,YACL,KAAK,EAAE,OAAO,EAAE,QAAQ,aAAa;AAAA,YACrC,MAAM,EAAE,QAAQ,WAAW,EAAE,QAAQ,WAAW;AAAA,YAChD,OAAO,EAAE,OAAO,EAAE,QAAQ,MAAM;AAAA,UACpC,CAAC;AAAA,QACL,EACC,QAAQ,MAAM,CAAC,EAAE,KAAK,eAAe,MAAM,aAAsB,OAAO,OAAO,CAAC,CAAC;AAAA,MAC1F,CAAC;AAAA,IACL;AAAA,IACA,EAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC;AAAA,EACzC,CAAC,EACA,QAAQ,MAAM,CAAC,CAAC;AACzB,CAAC;;;AClFD,SAAS,KAAAC,WAAuB;;;ACDhC,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,UAAuB;;;ACDhC,SAAS,MAAM,cAAc;AAC7B,SAAS,KAAAC,UAAS;;;ACAX,IAAM,qBAAqB;AAG3B,IAAM,sBAAsB;AAG5B,IAAM,kBAAkB;AAMxB,IAAM,2BAA2B;AAejC,IAAM,kBAAkB;;;AC5B/B,SAAS,eAAe,iBAAiB;AACzC,SAAS,OAAO,KAAK,SAAS,UAAU,KAAK,MAAM,eAAe;AAsB3D,IAAM,SAAS,CAAC,OAA2B,OAAgB;AAC9D,MAAI,OAAO,WAAW,aAAa;AAC/B,UAAM,SAAS,IAAI,UAAU;AAC7B,UAAM,MAAM,OAAO,gBAAgB,MAAM,WAAW;AAEpD,UAAM,UAAU,CAAC,aAAuB,MAAM,KAAK,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,aAAa,CAAC;AAE/F,WAAO,QAAQ,IAAI,KAAK,UAAU,KAAK,QAAQ,IAAI,KAAK,UAAU;AAAA,EACtE;AAIA,SAAO,KAAK,OAAO,eAAe,MAAM;AAC5C;AAEO,IAAM,eAAe,CAAC,QACzB,IAAI,QAAQ,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,QAAQ,KAAK,CAAC,EAAE,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC;AAE5E,IAAM,eAAe,CAAC,UACzB,EAAG,SAAS,KAAK,KAAK,OAAO,KAAK,KAAO,cAAc,KAAK,KAAK,aAAa,KAAuB;AAElG,IAAM,UAAU,EAAE,SAAS,wBAAwB;AAEnD,IAAM,eAAe,CAAC,YACzB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,eAAe,CAAC,YACzB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,mBAAmB,CAAC,YAC7B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,cAAc,CAAC,YACxB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,eAAe,CAAC,YACzB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,eAAe,CAAC,YACzB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,gBAAgB,CAAC,YAC1B,aAAa,OAAO,KAAK,IAAI,SAAS,aAAa,MAAM,YAAY;AAElE,IAAM,gBAAgB,CAAC,YAC1B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,oBAAoB,CAAC,YAC9B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,gBAAgB,CAAC,YAC1B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,aAAa,CAAC,YACvB,IAAI,SAAS,aAAa,MAAM,YAAY;AAEzC,IAAM,iBAAiB,CAAC,YAC3B,IAAI,SAAS,aAAa,MAAM,YAAY;AAEhD,IAAM,qBAAqB,CAAC,UACxB,CAAC,CAAC,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC,GAAG,QAAQ,mBAAmB,KAAK,GAAG,KAAK,OAAO,cAAc,OAAO,GAAG,CAAC,CAAC;AAE/G,IAAM,uBAAuB,CAAC,UAC1B,QAAQ,KAAK,EACR,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,EACxC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,KAAK;AAE3B,IAAM,wBAAwB,CAAC,UAA4B;AAC9D,MAAI,QAAQ,KAAK,EAAG,QAAO,IAAI,OAAO,qBAAqB;AAE3D,MAAI,cAAc,KAAK,GAAG;AACtB,UAAM,MAAM;AAEZ,WAAO,mBAAmB,GAAG,IACvB,IAAI,qBAAqB,GAAG,GAAG,qBAAqB,IACpD,UAAU,KAAK,qBAAqB;AAAA,EAC9C;AAEA,SAAO;AACX;;;AF/GO,IAAM,kBAAkBC,GAAE,OAAO;AAAA,EACpC,SAASA,GAAE,OAAO,EAAE,OAAO,cAAc,OAAO,EAAE,QAAQ,EAAE;AAAA,EAC5D,aAAaA,GAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EACjD,QAAQA,GAAE,KAAK,MAAM,SAAS;AAAA,EAC9B,aAAaA,GAAE,KAAK,YAAY,EAAE,SAAS;AAAA,EAC3C,UAAUA,GAAE,KAAK,CAAC,WAAW,SAAS,mBAAmB,iBAAiB,CAAC,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EACpG,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,eAAeA,GAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EACnC,cAAcA,GAAE,OAAO,EAAE,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,WAAWA,GAAE,KAAK,UAAU,EAAE,QAAQ,UAAU,OAAO;AAAA,EACvD,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAM,OAAO,CAAC;AAAA,EAC1C,aAAaA,GAAE,QAAQ,YAAY,KAAK,EAAE,QAAQ,YAAY,KAAK;AAAA,EACnE,QAAQA,GAAE,MAAM,CAACA,GAAE,IAAI,GAAGA,GAAE,QAAQ,EAAE,GAAGA,GAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE;AAAA,EAC3F,OAAOA,GAAE,OAAO,EAAE,QAAQ,GAAG;AACjC,CAAC;;;AG5BD,SAAS,SAAS,YAAAC,iBAAgB;AAClC,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,UAAS;AAsBlB,IAAM,aAAa,IAA8C,SAC7DC,GACK,OAAO,EACP,UAAU,CAAC,QAAS,KAAK,SAAS,GAAgB,IAAK,MAAoB,MAAU,EACrF,SAAS;AAEX,IAAM,aAAaA,GAAE,OAAO;AAAA,EAC/B,OAAOA,GACF,MAAM;AAAA,IACHA,GAAE;AAAA,MACEA,GAAE,mBAAmB,QAAQ;AAAA,QACzBA,GAAE,OAAO,EAAE,MAAMA,GAAE,QAAQ,MAAM,EAAE,CAAC;AAAA,QACpCA,GAAE,OAAO,EAAE,MAAMA,GAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,QACtCA,GAAE,OAAO;AAAA,UACL,OAAOA,GAAE,OAAO;AAAA,YACZ,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,YAC3B,MAAMA,GAAE,MAAM;AAAA,cACVA,GAAE,IAAI;AAAA,cACNA,GAAE,QAAQ,GAAG;AAAA,cACbA,GAAE,OAAO,EAAE,MAAM,mBAAmB;AAAA,cACpCA,GAAE,OAAO,EAAE,MAAM,wBAAwB;AAAA,YAC7C,CAAC;AAAA,YACD,KAAKA,GAAE,OAAO,EAAE,QAAQ,8BAA8B;AAAA,YACtD,QAAQA,GAAE,OAAO,EAAE,QAAQ,QAAQ;AAAA,UACvC,CAAC;AAAA,UACD,MAAMA,GAAE,QAAQ,MAAM;AAAA,QAC1B,CAAC;AAAA,QACDA,GAAE,OAAO,EAAE,MAAMA,GAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,QACtCA,GAAE,OAAO;AAAA,UACL,OAAOA,GAAE,OAAO;AAAA,YACZ,OAAO,WAAW,GAAG,cAAc,EAAE,QAAQ,cAAc,IAAI;AAAA,YAC/D,UAAU,WAAW,GAAG,aAAa,EAAE,QAAQ,aAAa,IAAI;AAAA,UACpE,CAAC;AAAA,UACD,MAAMA,GAAE,QAAQ,WAAW;AAAA,QAC/B,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAAA,IACAA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC;AAAA,EACzC,CAAC,EACA,SAAS;AAAA,EACd,MAAMA,GAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,EAC3B,MAAMA,GAAE,QAAQ,MAAM,EAAE,QAAQ,MAAM;AAC1C,CAAC;AAIM,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACpC,OAAOA,GACF,OAAO;AAAA,IACJ,WAAW,WAAW,GAAG,cAAc;AAAA,EAC3C,CAAC,EACA,QAAQ,EAAE,WAAW,cAAc,MAAM,CAAC;AAAA,EAC/C,SAASA,GAAE,MAAM,CAACA,GAAE,MAAM,UAAU,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EAChG,MAAMA,GAAE,QAAQ,WAAW,EAAE,QAAQ,WAAW;AACpD,CAAC;AAIM,IAAM,iBAAiBA,GAAE,OAAO;AAAA,EACnC,OAAOA,GACF,OAAO;AAAA,IACJ,cAAc,WAAW,GAAG,QAAQ;AAAA,EACxC,CAAC,EACA,QAAQ,EAAE,cAAc,QAAQ,KAAK,CAAC;AAAA,EAC3C,SAASA,GACJ,MAAM,CAACA,GAAE,MAAM,eAAe,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EACxE,QAAQ,MAAM,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA,EAC9C,MAAMA,GAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK;AACxC,CAAC;AASM,IAAM,cAAcA,GAAE,OAAO;AAAA,EAChC,WAAWA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,YAAYA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE;AAAA,EACnF,QAAQA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAUA,GAAE,KAAK,iBAAiB,EAAE,QAAQ,iBAAiB,QAAQ;AACzE,CAAC;AAIM,IAAM,iBAAiBA,GACzB,OAAO;AAAA,EACJ,aAAaA,GAAE,KAAK,YAAY,EAAE,SAAS;AAAA,EAC3C,SAASA,GACJ,OAAOA,GAAE,OAAO,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAG,cAAc,CAAC,EAAE,OAAO,cAAc,OAAO,EAAE,SAAS,CAAC,EACjG,QAAQ,EAAE,IAAI,eAAe,MAAM,CAAC,CAAC,EAAE,CAAC,EACxC,SAAS;AAAA,EACd,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,aAAaD,GAAE,QAAQ,YAAY,IAAI,EAAE,QAAQ,YAAY,IAAI;AAAA,EACjE,MAAM,YAAY,SAAS;AAC/B,CAAC,EACA,YAAY,CAAC,EAAE,aAAa,QAAQ,GAAG,QAAQ;AAC5C,MAAI,gBAAgB,YAAY,kBAAkB,SAAS;AACvD,YAAQ,SAAS,CAAC,OAAO,SAAS;AAC9B,UAAI,SAASE,UAAS,KAAK,GAAG;AAC1B,YAAI,oBAAoB,KAAK,KAAK,EAAG;AAErC,YAAI;AACA,cAAI,IAAI,KAAK;AAAA,QACjB,QAAQ;AACJ,cAAI,SAAS;AAAA,YACT,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM,CAAC,WAAW,IAAI;AAAA,UAC1B,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACJ,CAAC;;;AJxHE,IAAM,mBAA8CC,GAAE;AAAA,EAAK,MAC9DA,GAAE,mBAAmB,eAAe,CAAC,iBAAiB,kBAAkB,cAAc,CAAC;AAC3F;AAEO,IAAM,mBAAmBA,GAAE,OAAO;AAAA,EACrC,QAAQA,GAAE,MAAM,CAACA,GAAE,QAAQ,EAAE,GAAGA,GAAE,KAAK,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE;AAAA,EAClE,aAAaA,GAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,OAAO;AAAA,EAC7D,QAAQA,GACH,OAAO;AAAA,IACJ,OAAOA,GAAE,OAAO,EAAE,MAAM,eAAe,EAAE,QAAQ,SAAS;AAAA,IAC1D,QAAQA,GAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,IAC7B,OAAOA,GAAE,OAAO,EAAE,QAAQ,GAAG;AAAA,EACjC,CAAC,EACA,QAAQ;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACX,CAAC;AAAA,EACL,kBAAkBA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC3C,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,SAASA,GACJ,OAAO;AAAA,IACJ,WAAWA,GAAE,KAAK,cAAc,EAAE,QAAQ,cAAc,MAAM;AAAA,IAC9D,UAAUA,GAAE,KAAK,gBAAgB,EAAE,QAAQ,gBAAgB,UAAU;AAAA,EACzE,CAAC,EACA,SAAS,EACT,QAAQ,OAAO;AAAA,IACZ,WAAW,cAAc;AAAA,IACzB,UAAU,gBAAgB;AAAA,EAC9B,EAAE;AAAA,EACN,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,UAAUD,GAAE,MAAM,CAACA,GAAE,MAAM,gBAAgB,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EACvG,aAAaA,GAAE,QAAQ,YAAY,MAAM,EAAE,QAAQ,YAAY,MAAM;AAAA;AAAA,EAErE,aAAaA,GAAE,OAAO,EAAE,SAAS;AACrC,CAAC;;;AK3DD,SAAS,KAAAE,UAAS;;;ACAlB,SAAS,KAAAC,UAAS;;;ACAlB,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,UAAS;;;ACDlB,SAAS,cAAc;AAKhB,IAAM,oBAAoB;AAAA,EAC7B,EAAE,OAAO,oBAAoB,OAAO,wBAAwB;AAAA,EAC5D,EAAE,OAAO,eAAe,OAAO,wBAAwB;AAAA,EACvD,EAAE,OAAO,gBAAgB,OAAO,sBAAsB;AAAA,EACtD,EAAE,OAAO,mBAAmB,OAAO,mBAAmB;AAAA,EACtD,EAAE,OAAO,mBAAmB,OAAO,mBAAmB;AAAA,EACtD,EAAE,OAAO,uBAAuB,OAAO,wBAAwB;AAAA,EAC/D,EAAE,OAAO,yBAAyB,OAAO,6BAA6B;AAC1E;AAEO,IAAM,mBAAmB;AAAA,EAC5B,EAAE,OAAO,oBAAoB,OAAO,wBAAwB;AAAA,EAC5D,EAAE,OAAO,eAAe,OAAO,wBAAwB;AAAA,EACvD,EAAE,OAAO,qBAAqB,OAAO,8BAA8B;AAAA,EACnE,EAAE,OAAO,gBAAgB,OAAO,sBAAsB;AAAA,EACtD,EAAE,OAAO,uBAAuB,OAAO,wBAAwB;AAAA,EAC/D,EAAE,OAAO,mBAAmB,OAAO,mBAAmB;AAAA,EACtD,EAAE,OAAO,mBAAmB,OAAO,mBAAmB;AAAA,EACtD,EAAE,OAAO,mBAAmB,OAAO,mBAAmB;AAAA,EACtD,EAAE,OAAO,yBAAyB,OAAO,6BAA6B;AAC1E;AAEO,IAAM,qBAAqB,OAAO,CAAC,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,CAAC,SAAS,KAAK,KAAK;AAEnG,IAAM,cAAc;AAAA,EACvB,CAAC,WAAW,iBAAiB,GAAG;AAAA,IAC5B,EAAE,MAAM,mBAAmB,OAAO,eAAe,OAAO,QAAQ;AAAA,IAChE,EAAE,MAAM,oBAAoB,OAAO,eAAe,OAAO,QAAQ;AAAA,IACjE,EAAE,MAAM,qBAAqB,OAAO,kBAAkB,OAAO,QAAQ;AAAA,EACzE;AAAA,EACA,CAAC,WAAW,iBAAiB,GAAG;AAAA,EAChC,CAAC,WAAW,YAAY,GAAG;AAAA,IACvB,EAAE,MAAM,mBAAmB,OAAO,eAAe,OAAO,QAAQ;AAAA,IAChE,EAAE,MAAM,oBAAoB,OAAO,eAAe,OAAO,QAAQ;AAAA,IACjE,EAAE,MAAM,qBAAqB,OAAO,kBAAkB,OAAO,QAAQ;AAAA,EACzE;AAAA,EACA,CAAC,WAAW,eAAe,GAAG;AAAA;AAAA,IAE1B,EAAE,MAAM,mBAAmB,OAAO,eAAe,OAAO,SAAS;AAAA,IACjE,EAAE,MAAM,MAAM,MAAM,iBAAiB,OAAO,aAAa,OAAO,QAAQ;AAAA,IACxE,EAAE,MAAM,sBAAsB,OAAO,eAAe,OAAO,SAAS;AAAA,EACxE;AAAA,EACA,CAAC,WAAW,eAAe,GAAG;AAAA;AAAA,IAE1B,EAAE,MAAM,mBAAmB,OAAO,aAAa,OAAO,SAAS;AAAA,EACnE;AAAA,EACA,CAAC,WAAW,mBAAmB,GAAG;AAAA;AAAA,IAE9B,EAAE,MAAM,mBAAmB,OAAO,aAAa,OAAO,SAAS;AAAA,EACnE;AACJ;AAEO,IAAM,cAAc;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,IAAM,aAAa,WAAW,WAAW;;;AD3EzC,IAAM,cAAcC,GAAE,OAAO;AAAA,EAChC,QAAQA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;AAAA,EACjD,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,gBAAgBA,GAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EAClE,MAAMA,GAAE,KAAK,aAAa,EAAE,MAAM,MAAM;AAC5C,CAAC;AAIM,IAAM,kBAAkBA,GAAE,OAAO;AAAA,EACpC,SAASA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,OAAOA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAChC,SAASA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,MAAMA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC/B,QAAQA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjC,QAAQA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjC,WAAWA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACpC,SAASA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAClC,OAAOA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AACpC,CAAC;AAIM,IAAM,uBAAuBA,GAAE,OAAO;AAAA,EACzC,cAAcA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EAChD,gBAAgBA,GAAE,OAAO,EAAE,QAAQ,kBAAkB,CAAC,EAAE,KAAK;AAAA,EAC7D,UAAU,YAAY,SAAS;AAAA,EAC/B,cAAc,gBAAgB,SAAS;AAAA,EACvC,OAAOA,GAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC3B,cAAcA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACvC,wBAAwBA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjD,MAAMA,GAAE,OAAO,EAAE,QAAQ,kBAAkB,CAAC,EAAE,KAAK;AAAA,EACnD,aAAaA,GAAE,KAAK,YAAY,EAAE,SAAS;AAAA,EAC3C,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,aAAaD,GAAE,QAAQ,YAAY,UAAU,EAAE,QAAQ,YAAY,UAAU;AAAA;AAAA,EAE7E,uBAAuBA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAChD,YAAYA,GAAE,QAAQ,EAAE,QAAQ,KAAK;AACzC,CAAC;;;AE7CD,SAAS,MAAME,eAAc;AAC7B,SAAS,KAAAC,UAAS;;;ACDlB,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,UAAuB;AASzB,IAAM,oBAAgDC,GAAE;AAAA,EAAK,MAChEA,GAAE,mBAAmB,eAAe,CAAC,kBAAkB,cAAc,CAAC;AAC1E;AAEO,IAAM,oBAAoBA,GAAE,OAAO;AAAA,EACtC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EAC7C,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,UAAUD,GAAE,MAAM,CAACA,GAAE,MAAM,iBAAiB,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EACxG,aAAaA,GAAE,QAAQ,YAAY,OAAO,EAAE,QAAQ,YAAY,OAAO;AAAA,EACvE,WAAWA,GAAE,OAAOA,GAAE,OAAO,GAAGA,GAAE,KAAK,gBAAgB,EAAE,QAAQ,gBAAgB,IAAI,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE;AAAA,EAC1G,aAAaA,GAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,QAAQ;AAClE,CAAC;;;ADfM,IAAM,qBAAqBE,GAAE,OAAO;AAAA,EACvC,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWA,GAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,UAAUD,GACL,MAAM,CAACA,GAAE,MAAMA,GAAE,KAAK,MAAM,iBAAiB,CAAC,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EACxF,QAAQ,MAAM,CAAC,CAAC;AAAA,EACrB,aAAaA,GAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAC7E,CAAC;;;AHHM,IAAM,mBAAmBE,GAAE;AAAA,EAAK,MACnC,iBAAiB,KAAK,EAAE,UAAU,MAAM,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChE,UAAUA,GAAE,MAAM,CAACA,GAAE,MAAMA,GAAE,KAAK,MAAM,UAAU,CAAC,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM;AAAA,MACzG,iBAAiB,MAAM;AAAA,QACnB,aAAa;AAAA,QACb,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,QACN,UAAU;AAAA,UACN,eAAe,MAAM,EAAE,SAAS,EAAE,IAAI,+CAA+C,EAAE,CAAC;AAAA,UACxF,iBAAiB,MAAM,EAAE,QAAQ,kBAAkB,aAAa,YAAY,MAAM,CAAC;AAAA,QACvF;AAAA,MACJ,CAAC;AAAA,MACD,qBAAqB,MAAM,CAAC,CAAC;AAAA,MAC7B,mBAAmB,MAAM,CAAC,CAAC;AAAA,IAC/B,CAAC;AAAA,IACD,aAAaA,GAAE,QAAQ,YAAY,MAAM,EAAE,QAAQ,YAAY,MAAM;AAAA,EACzE,CAAC;AACL;;;ADtBO,IAAM,qBAAqBC,GAAE;AAAA,EAAK,MACrC,iBAAiB,KAAK,EAAE,UAAU,MAAM,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChE,qBAAqBA,GAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,IACzC,aAAaA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,IACxC,UAAUA,GACL,MAAM,CAACA,GAAE,MAAMA,GAAE,KAAK,MAAM,UAAU,CAAC,GAAGA,GAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EACjF,QAAQ,MAAM,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA,IAC/C,aAAaA,GAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAAA,EAC7E,CAAC;AACL;;;AMhBA,SAAS,KAAAC,WAAS;AAOX,IAAM,qBAAqBC,IAAE;AAAA,EAAK,MACrC,iBAAiB,KAAK,EAAE,UAAU,MAAM,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChE,UAAUA,IACL,MAAM,CAACA,IAAE,MAAMA,IAAE,KAAK,MAAM,UAAU,CAAC,GAAGA,IAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EACjF,QAAQ,MAAM,CAAC,iBAAiB,MAAM,EAAE,QAAQ,aAAa,qBAAqB,CAAC,CAAC,CAAC;AAAA,IAC1F,aAAaA,IAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAAA,EAC7E,CAAC;AACL;;;ACdA,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,WAAS;AAWX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACvC,QAAQA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;AAAA,EACjD,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,gBAAgBA,IAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EAClE,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC9B,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,aAAaD,IAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAAA,EACzE,MAAMA,IAAE,KAAK,aAAa,EAAE,MAAM,MAAM;AAC5C,CAAC;;;ACtBD,SAAS,MAAME,eAAc;AAC7B,SAAS,KAAAC,WAAS;AAMX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACvC,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,aAAaD,IAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAAA;AAAA,EAEzE,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEjC,UAAUA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;;;AClBD,SAAS,KAAAE,WAAS;;;ACMX,IAAM,cAAc;AAAA,EACvB,SAAS;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,eAAe;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,UAAU;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AACJ;;;ADhHO,IAAM,kBAAkBC,IAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpC,UAAUA,IAAE,OAAO,EAAE,QAAQA,IAAE,OAAO,EAAE,YAAY,GAAG,MAAMA,IAAE,KAAK,CAAC,eAAe,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO/G,mBAAmBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5C,MAAMA,IACD,OAAO;AAAA,IACJ,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACrC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC3B,YAAYA,IAAE,MAAMA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EACrE,CAAC,EACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,OAAOA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjD,WAAWA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxC,YAAYA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,QAAQ,OAAO,CAAC,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnF,QAAQA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAUA,IAAE,KAAK,iBAAiB,EAAE,QAAQ,iBAAiB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWrE,MAAMA,IAAE,KAAK,iBAAiB,EAAE,QAAQ,iBAAiB,QAAQ;AACrE,CAAC;AAUM,IAAM,wBAAwBA,IAAE;AAAA,EAAK,MACxC,iBAAiB,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQhD,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAE3B,cAAcA,IAAE,MAAMA,IAAE,OAAO,EAAE,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKjG,qBAAqBA,IAAE,MAAMA,IAAE,OAAO,EAAE,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMxG,2BAA2BA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA;AAAA,IAEpD,oBAAoBA,IAAE,MAAMA,IAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKzE,4BAA4BA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA;AAAA,IAErD,eAAeA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,IAAI,aAAa,EAAE;AAAA;AAAA,IAEpF,YAAYA,IACP,OAAO;AAAA,MACJ,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,YAAY,QAAQ,EAAE;AAAA,MACpF,QAAQA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,YAAY,OAAO,EAAE;AAAA,MAClF,eAAeA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,YAAY,cAAc,EAAE;AAAA,MAChG,UAAUA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,YAAY,SAAS,EAAE;AAAA,IAC1F,CAAC,EACA,QAAQ,OAAO;AAAA,MACZ,SAAS,EAAE,GAAG,YAAY,QAAQ;AAAA,MAClC,QAAQ,EAAE,GAAG,YAAY,OAAO;AAAA,MAChC,eAAe,EAAE,GAAG,YAAY,cAAc;AAAA,MAC9C,UAAU,EAAE,GAAG,YAAY,SAAS;AAAA,IACxC,EAAE;AAAA;AAAA,IAEN,MAAMA,IAAE,OAAO,EAAE,QAAQ,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOzC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,IACnC,aAAaA,IAAE,QAAQ,YAAY,WAAW,EAAE,QAAQ,YAAY,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO/E,OAAOA,IAAE,MAAM,CAACA,IAAE,MAAM,eAAe,GAAGA,IAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EACvG,CAAC;AACL;;;AEpJA,SAAS,MAAMC,eAAc;AAC7B,SAAS,KAAAC,WAAS;AAMX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACvC,eAAeA,IACV;AAAA,IACGA,IAAE,OAAO;AAAA,IACTA,IAAE,OAAO;AAAA;AAAA,MAEL,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,MAC/B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,MACzB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,MACzB,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,EACL,EACC,QAAQ;AAAA,IACL,IAAI;AAAA,MACA,WAAW;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,EACJ,CAAC;AAAA,EACL,WAAWA,IAAE,KAAK,cAAc,EAAE,QAAQ,cAAc,MAAM;AAAA,EAC9D,KAAKA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC1C,KAAKA,IAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA;AAAA,EAEhC,MAAMA,IAAE,OAAO,EAAE,QAAQ,UAAU;AAAA,EACnC,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,QAAO,CAAC;AAAA,EAC1C,aAAaD,IAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAC7E,CAAC;;;ACnCD,SAAS,MAAME,gBAAc;AAC7B,SAAS,KAAAC,WAAS;;;ACMX,IAAM,gBAAgB;AAAA,EACzB,KAAK;AAAA,IACD,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,OAAO;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AACJ;;;ADxDO,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACtC,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,aAAaA,IACR,OAAO;AAAA,IACJ,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,cAAc,IAAI,EAAE;AAAA,IAC9E,OAAOA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,cAAc,MAAM,EAAE;AAAA,EACtF,CAAC,EACA,QAAQ,OAAO,EAAE,KAAK,EAAE,GAAG,cAAc,IAAI,GAAG,OAAO,EAAE,GAAG,cAAc,MAAM,EAAE,EAAE;AAAA,EACzF,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,SAAO,CAAC;AAAA,EAC1C,aAAaD,IAAE,QAAQ,YAAY,OAAO,EAAE,QAAQ,YAAY,OAAO;AAAA,EACvE,MAAMA,IAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,OAAO;AAC1D,CAAC;;;AE1BD,SAAS,aAAa;AACtB,SAAS,MAAME,gBAAc;AAC7B,SAAS,KAAAC,WAAS;AAMX,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACvC,wBAAwBA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjD,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,SAAO,CAAC;AAAA,EAC1C,aAAaD,IAAE,QAAQ,YAAY,QAAQ,EAAE,QAAQ,YAAY,QAAQ;AAAA,EACzE,UAAUA,IAAE,KAAK,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,QAAQ,gBAAgB,IAAI;AAAA,EAC5E,aAAaA,IAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,QAAQ;AAClE,CAAC;;;ApBOM,IAAM,YAAYE,IACpB,OAAO;AAAA,EACJ,QAAQA,IAAE,KAAK,WAAW,EAAE,QAAQ,aAAa,IAAI;AAAA,EACrD,OAAOA,IAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,IAAI;AAAA,EACpD,OAAOA,IAAE,KAAK,YAAY,EAAE,QAAQ,YAAY,IAAI;AACxD,CAAC,EACA,QAAQ;AAAA,EACL,QAAQ,aAAa;AAAA,EACrB,OAAO,YAAY;AAAA,EACnB,OAAO,YAAY;AACvB,CAAC;AAIE,IAAM,aAAkCA,IAAE;AAAA,EAAK,MAClDA,IAAE,mBAAmB,eAAe;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL;;;AFtCO,IAAM,WAAWC,IAAE,MAAM,CAACA,IAAE,QAAQ,MAAM,GAAGA,IAAE,QAAQ,MAAM,GAAGA,IAAE,OAAO,EAAE,MAAM,QAAQ,GAAGA,IAAE,OAAO,CAAC,CAAC;AAGvG,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACrC,WAAWA,IACN,OAAO;AAAA,IACJ,YAAYA,IAAE,KAAK,oBAAoB,EAAE,QAAQ,oBAAoB,KAAK;AAAA,IAC1E,UAAUA,IAAE,KAAK,kBAAkB,EAAE,QAAQ,kBAAkB,GAAG;AAAA,EACtE,CAAC,EACA,QAAQ;AAAA,IACL,YAAY,oBAAoB;AAAA,IAChC,UAAU,kBAAkB;AAAA,EAChC,CAAC;AAAA,EACL,QAAQA,IAAE,KAAK,MAAM,SAAS;AAAA,EAC9B,aAAaA,IAAE,KAAK,YAAY,EAAE,SAAS;AAAA,EAC3C,WAAWA,IAAE,KAAK,UAAU,EAAE,QAAQ,UAAU,IAAI;AAAA,EACpD,MAAMA,IACD,OAAO;AAAA,IACJ,SAASA,IAAE,MAAM,CAACA,IAAE,MAAM,QAAQ,GAAGA,IAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC;AAAA,IAC3E,MAAMA,IAAE,MAAM,CAACA,IAAE,MAAM,QAAQ,GAAGA,IAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC;AAAA,EAC5E,CAAC,EACA,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAC7C,SAAS;AAAA,EACd,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,IAAE,KAAK,QAAQ,EAAE,QAAQ,QAAQ,IAAI;AAAA,EAC9C,MAAM,QAAQ,SAAS;AAAA,EACvB,WAAWA,IAAE,KAAK,EAAE,QAAQ,MAAMC,SAAO,CAAC;AAAA,EAC1C,UAAUD,IAAE,MAAM,CAACA,IAAE,MAAMA,IAAE,KAAK,MAAM,UAAU,CAAC,GAAGA,IAAE,aAAa,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA,EAC/G,aAAaA,IAAE,QAAQ,YAAY,MAAM,EAAE,QAAQ,YAAY,MAAM;AAAA,EACrE,SAASA,IAAE,KAAK,QAAQ,EAAE,QAAQ,QAAQ,IAAI;AAAA;AAAA,EAE9C,SAASA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,OAAOA,IAAE,OAAO,EAAE,QAAQ,GAAG;AACjC,CAAC;;;AF9CM,IAAM,mBAAmBE,IAAE;AAAA,EAAK,MACnC,iBAAiB,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,aAAaA,IAAE,KAAK,YAAY,EAAE,SAAS;AAAA,IAC3C,OAAOA,IAAE,KAAK,YAAY,EAAE,QAAQ,MAAM;AAAA,IAC1C,aAAaA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACrC,aAAaA,IAAE,QAAQ,YAAY,MAAM,EAAE,QAAQ,YAAY,MAAM;AAAA,EACzE,CAAC;AACL;;;AyBNO,IAAM,eAAe;AAAA,EACxB,aAAa;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACV,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,MAAM;AAAA,IACF,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AACJ;;;AC5MA,SAAS,KAAAC,WAAS;;;ACWX,IAAM,YAAY;AAAA,EACrB,aAAa,EAAE,IAAI,yBAAyB;AAAA,EAC5C,gBAAgB,EAAE,IAAI,+BAA+B;AAAA,EACrD,UAAU,EAAE,IAAI,OAAO;AAAA,EACvB,aAAa,EAAE,IAAI,QAAQ;AAAA,EAC3B,MAAM,EAAE,IAAI,gBAAgB;AAAA,EAC5B,cAAc,EAAE,IAAI,WAAW;AAAA,EAC/B,UAAU,EAAE,IAAI,WAAW;AAAA,EAC3B,qBAAqB,EAAE,IAAI,uBAAuB;AAAA,EAClD,UAAU,EAAE,IAAI,WAAW;AAC/B;;;ADTA,IAAM,YAAY,CAAC,aACfC,IACK,OAAOA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,EAC7B,QAAQ,OAAO,EAAE,GAAG,SAAS,EAAE,EAC/B,UAAU,CAAC,WAAY,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS,EAAE,GAAG,SAAS,CAAE;AAQnF,IAAM,cAAcA,IACtB,OAAO;AAAA,EACJ,aAAa,UAAU,UAAU,WAAW;AAAA,EAC5C,gBAAgB,UAAU,UAAU,cAAc;AAAA,EAClD,UAAU,UAAU,UAAU,QAAQ;AAAA,EACtC,aAAa,UAAU,UAAU,WAAW;AAAA,EAC5C,MAAM,UAAU,UAAU,IAAI;AAAA,EAC9B,cAAc,UAAU,UAAU,YAAY;AAAA,EAC9C,UAAU,UAAU,UAAU,QAAQ;AAAA,EACtC,qBAAqB,UAAU,UAAU,mBAAmB;AAAA,EAC5D,UAAU,UAAU,UAAU,QAAQ;AAC1C,CAAC,EACA,QAAQ,OAAO;AAAA,EACZ,aAAa,EAAE,GAAG,UAAU,YAAY;AAAA,EACxC,gBAAgB,EAAE,GAAG,UAAU,eAAe;AAAA,EAC9C,UAAU,EAAE,GAAG,UAAU,SAAS;AAAA,EAClC,aAAa,EAAE,GAAG,UAAU,YAAY;AAAA,EACxC,MAAM,EAAE,GAAG,UAAU,KAAK;AAAA,EAC1B,cAAc,EAAE,GAAG,UAAU,aAAa;AAAA,EAC1C,UAAU,EAAE,GAAG,UAAU,SAAS;AAAA,EAClC,qBAAqB,EAAE,GAAG,UAAU,oBAAoB;AAAA,EACxD,UAAU,EAAE,GAAG,UAAU,SAAS;AACtC,EAAE;AAIN,IAAM,aAAaA,IACd,OAAO;AAAA,EACJ,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,KAAK,CAAC,QAAQ,cAAc,UAAU,CAAC,EAAE,SAAS;AAAA,EAC1D,MAAMA,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAAA,EAChB,OAAOA,IAAE,OAAO;AACpB,CAAC,EACA,QAAQ,YAAY,WAAW,iBAAiB,EAAE,CAAC,CAAC;AAUlD,IAAM,cAAcA,IACtB,OAAO;AAAA,EACJ,mBAAmBA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAC3C,cAAcA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACtC,cAAcA,IAAE,QAAQ,EAAE,QAAQ,IAAI;AAC1C,CAAC,EACA,QAAQ,EAAE,mBAAmB,MAAM,cAAc,MAAM,cAAc,KAAK,CAAC;AASzE,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EAClC,WAAWA,IAAE,OAAO;AAAA,EACpB,cAAcA,IAAE,OAAO;AAAA,EACvB,gBAAgBA,IAAE,OAAO;AAAA,EACzB,YAAYA,IAAE,OAAO;AACzB,CAAC;AAIM,IAAM,iBAAiB,iBAAiB,OAAO;AAAA,EAClD,YAAYA,IAAE,KAAK,WAAW,EAAE,QAAQ,WAAW,iBAAiB;AAAA,EACpE,YAAY,cAAc,SAAS;AAAA,EACnC,aAAaA,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACtC,SAASA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EAC3C,YAAY,WAAW,SAAS;AAAA,EAChC,UAAU;AAAA,EACV,MAAMA,IAAE,KAAK,WAAW,EAAE,QAAQ,WAAW,0BAA0B;AAAA,EACvE,UAAU;AAAA,EACV,SAASA,IAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI;AAChD,CAAC;;;AE5FM,IAAM,gBAAgB;AAAA,EACzB,oBAAoB;AAAA,IAChB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,yBAAyB;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,gCAAgC;AAAA,IAC5B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AAAA,EACA,kCAAkC;AAAA,IAC9B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACR;AACJ;",
|
|
3
|
+
"sources": ["../../../src/schema/widgets/checkout-and-beyond/banner.ts", "../../../src/schema/widgets/checkout-and-beyond/common.ts", "../../../src/schema/widgets/checkout-and-beyond/layout.ts", "../../../src/schema/widgets/checkout-and-beyond/rule.ts", "../../../src/schema/widgets/checkout-and-beyond/shared.ts", "../../../src/schema/widgets/checkout-and-beyond/button.ts", "../../../src/schema/widgets/checkout-and-beyond/image.ts", "../../../src/schema/widgets/checkout-and-beyond/icons.ts", "../../../src/schema/widgets/checkout-and-beyond/regex.ts", "../../../src/schema/widgets/checkout-and-beyond/utils.ts", "../../../src/schema/widgets/checkout-and-beyond/text.ts", "../../../src/schema/widgets/checkout-and-beyond/carousel.ts", "../../../src/schema/widgets/checkout-and-beyond/offers.ts", "../../../src/schema/widgets/checkout-and-beyond/dataSource.ts", "../../../src/schema/widgets/checkout-and-beyond/constants.ts", "../../../src/schema/widgets/checkout-and-beyond/products.ts", "../../../src/schema/widgets/checkout-and-beyond/product.ts", "../../../src/schema/widgets/checkout-and-beyond/cartLine.ts", "../../../src/schema/widgets/checkout-and-beyond/discount.ts", "../../../src/schema/widgets/checkout-and-beyond/monetize.ts", "../../../src/schema/widgets/checkout-and-beyond/progressBar.ts", "../../../src/schema/widgets/checkout-and-beyond/giftLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/quantity.ts", "../../../src/schema/widgets/checkout-and-beyond/reviews.ts", "../../../src/schema/widgets/checkout-and-beyond/reviewLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/variants.ts", "../../../src/schema/widgets/checkout-and-beyond/offerLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/root.ts", "../../../src/schema/widgets/checkout-and-beyond/uiLabels.ts", "../../../src/schema/widgets/checkout-and-beyond/switchLabels.ts"],
|
|
4
|
+
"sourcesContent": ["import { z } from 'zod';\n\nimport { bannerColors, buttonFields, SectionType, type BannerColor } from './common';\nimport { CABLayoutSection } from './layout';\nimport { type SectionDetails } from './shared';\nimport { checkForHTML, NO_HTML } from './utils';\n\nexport const CABBannerSection = z.lazy(() =>\n CABLayoutSection.omit({ sectionType: true }).extend({\n buttonField: z.enum(buttonFields).optional(),\n color: z.enum(bannerColors).default('info'),\n dismissible: z.boolean().default(true),\n /**\n * The `s-banner` heading \u2014 localized content (a buyer can see a merchant-composed banner). Absent OR\n * blank \u21D2 no heading; the renderer emits no heading slot for `''` rather than an empty one.\n *\n * Merchant-composed buyer-facing plain text, so it rejects HTML at the boundary the same way\n * `CABImageSection.altText` and `CABTextSection.content` do (the unchecked localized records elsewhere \u2014\n * `progressBar`'s gift labels, `reviews`' plurals \u2014 are converter/constant-sourced, not merchant input).\n *\n * The refinement is a last-resort ASSERTION, not the normalization boundary: `normalizeTextContent` only\n * rewrites `sectionType: 'text'` nodes' `content`, so nothing strips markup or canonicalizes `{token}`\n * here. A producer must strip upstream the way `composeOffer` does for `altText`. Get it wrong and\n * `salvageSections` stubs the whole banner (children included) with a drift report \u2014 degraded, reported,\n * not a 500. Nothing emits `heading` yet; the first converter that maps merchant banner copy into it\n * either strips first or teaches `normalizeTextContent` to strip this field.\n */\n heading: z.record(z.string(), z.string().refine(checkForHTML, NO_HTML)).optional(),\n sectionType: z.literal(SectionType.banner).default(SectionType.banner),\n })\n);\n\nexport type CABBannerSection = Omit<CABLayoutSection, 'sectionType'> & {\n color: BannerColor;\n dismissible: boolean;\n heading?: Record<string, string>;\n sectionType: 'banner';\n};\n\nexport type CABBannerSectionProps = CABBannerSection & SectionDetails;\n", "export const freezeEnum = <T extends readonly string[]>(values: T) =>\n Object.freeze(Object.fromEntries(values.map((v) => [v, v]))) as { readonly [K in T[number]]: K };\n\nexport const bannerColors = ['info', 'success', 'warning', 'critical'] as const;\nexport const BannerColor = freezeEnum(bannerColors);\nexport type BannerColor = (typeof bannerColors)[number];\n\nexport const borderRadii = ['none', 'small', 'base', 'large', 'fullyRounded'] as const;\nexport const BorderRadius = freezeEnum(borderRadii);\nexport type BorderRadius = (typeof borderRadii)[number];\n\nexport const borderStyles = ['none', 'base', 'dotted', 'dashed'] as const;\nexport const BorderStyle = freezeEnum(borderStyles);\nexport type BorderStyle = (typeof borderStyles)[number];\n\nexport const borderWidths = ['base', 'medium', 'thick'] as const;\nexport const BorderWidth = freezeEnum(borderWidths);\nexport type BorderWidth = (typeof borderWidths)[number];\n\nexport const buttonActions = [\n 'acceptOffer',\n 'addGift',\n 'addToOrder',\n 'declineAllOffers',\n 'declineOffer',\n 'displayContentInModal',\n 'displayContentInPopover',\n 'goToNextPage',\n 'goToPrevPage',\n 'goToURL',\n 'removeFromOrder',\n 'removeGift',\n 'selectVariant',\n 'showPagination',\n 'switchToSubscription',\n 'undoAddToOrder',\n] as const;\n\nexport const ButtonAction = freezeEnum(buttonActions);\nexport type ButtonAction = (typeof buttonActions)[number];\n\nexport const buttonFields = [\n 'activePage',\n 'addedToCart',\n 'addingToCart',\n 'addToCart',\n 'buttonLabel',\n 'declineAllOffers',\n 'declineOffer',\n 'destinationUrl',\n 'inactivePage',\n 'overlayContent',\n 'payNow',\n 'progressReached',\n 'progressRemaining',\n 'redirectToCheckout',\n 'removeFromOrder',\n 'showVariant',\n 'showVariants',\n 'soldOut',\n 'subscriptionOption',\n 'switchToOneTimePurchase',\n 'switchToSubscriptionNoDiscount',\n 'switchToSubscriptionWithDiscount',\n 'undoAddToOrder',\n] as const;\n\nexport const ButtonField = freezeEnum(buttonFields);\nexport type ButtonField = (typeof buttonFields)[number];\n\nexport const buttonStyles = ['primary', 'secondary', 'plain', 'custom'] as const;\nexport const ButtonStyle = freezeEnum(buttonStyles);\nexport type ButtonStyle = (typeof buttonStyles)[number];\n\nexport const directions = ['columns', 'rows', 'grid'] as const;\nexport const Direction = freezeEnum(directions);\nexport type Direction = (typeof directions)[number];\n\nexport const discountSources = ['price', 'compare_at_price'] as const;\nexport const DiscountSource = freezeEnum(discountSources);\nexport type DiscountSource = (typeof discountSources)[number];\n\nexport const discountTypes = ['none', 'percentage', 'fixed', 'fixed_amount'] as const;\nexport const DiscountType = freezeEnum(discountTypes);\nexport type DiscountType = (typeof discountTypes)[number];\n\nexport const editorModes = [\n 'checkoutExtension',\n 'postPurchaseOffer',\n 'thankYouPage',\n 'orderStatusPage',\n 'ordersIndexPage',\n 'customerProfilePage',\n] as const;\n\nexport const EditorMode = freezeEnum(editorModes);\nexport type EditorMode = (typeof editorModes)[number];\n\nexport const horizontalAlignments = ['start', 'center', 'end'] as const;\nexport const HorizontalAlignment = freezeEnum(horizontalAlignments);\nexport type HorizontalAlignment = (typeof horizontalAlignments)[number];\n\nexport const languageKeys = [\n 'ar',\n 'cs',\n 'da',\n 'de',\n 'en',\n 'es',\n 'fi',\n 'fr',\n 'ga',\n 'he',\n 'hi',\n 'id',\n 'it',\n 'ja',\n 'ko',\n 'nl',\n 'no',\n 'pl',\n 'pt',\n 'ru',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n 'vi',\n 'zh',\n] as const;\n\nexport const LanguageKey = freezeEnum(languageKeys);\nexport type LanguageKey = (typeof languageKeys)[number];\n\nexport const objectFits = ['cover', 'contain'] as const;\nexport const ObjectFit = freezeEnum(objectFits);\nexport type ObjectFit = (typeof objectFits)[number];\n\nexport const popoverPositions = ['inlineStart', 'inlineEnd', 'blockStart', 'blockEnd'] as const;\nexport const PopoverPosition = freezeEnum(popoverPositions);\nexport type PopoverPosition = (typeof popoverPositions)[number];\n\nexport const popoverPositionMap = {\n bottom: 'blockEnd',\n left: 'inlineStart',\n right: 'inlineEnd',\n top: 'blockStart',\n} as const;\n\nexport const productTypes = ['one-time', 'subscription', 'both'] as const;\nexport const ProductType = freezeEnum(productTypes);\nexport type ProductType = (typeof productTypes)[number];\n\nexport const progressTierTypes = ['decorative', 'discount', 'product', 'shipping'] as const;\nexport const ProgressTierType = freezeEnum(progressTierTypes);\nexport type ProgressTierType = (typeof progressTierTypes)[number];\n\nexport const progressTierUnits = ['currency', 'item'] as const;\nexport const ProgressTierUnit = freezeEnum(progressTierUnits);\nexport type ProgressTierUnit = (typeof progressTierUnits)[number];\n\nexport const quantityInputs = ['select', 'number'] as const;\nexport const QuantityInput = freezeEnum(quantityInputs);\nexport type QuantityInput = (typeof quantityInputs)[number];\n\nexport const reviewsSizes = ['small', 'default', 'large'] as const;\nexport const ReviewsSize = freezeEnum(reviewsSizes);\nexport type ReviewsSize = (typeof reviewsSizes)[number];\n\nexport const sectionTypes = [\n 'banner',\n 'button',\n 'carousel',\n 'cartLine',\n 'dataSource',\n 'discount',\n 'image',\n 'layout',\n 'monetize',\n 'offers',\n 'product',\n 'products',\n 'progressBar',\n 'quantity',\n 'reviews',\n 'text',\n 'variants',\n] as const;\n\nexport const SectionType = freezeEnum(sectionTypes);\nexport type SectionType = (typeof sectionTypes)[number];\n\nexport const spacings = ['none', 'extraTight', 'tight', 'base', 'loose', 'extraLoose'] as const;\nexport const Spacing = freezeEnum(spacings);\nexport type Spacing = (typeof spacings)[number];\n\nexport const textAlignments = ['start', 'center', 'end'] as const;\nexport const TextAlignment = freezeEnum(textAlignments);\nexport type TextAlignment = (typeof textAlignments)[number];\n\nexport const textColorNames = ['base', 'subdued', 'accent', 'decorative', 'success', 'warning', 'critical'] as const;\nexport const TextColorName = freezeEnum(textColorNames);\nexport type TextColorName = (typeof textColorNames)[number];\n\nexport const textSizeNames = ['extraSmall', 'small', 'base', 'medium', 'large', 'extraLarge'] as const;\nexport const TextSizeName = freezeEnum(textSizeNames);\nexport type TextSizeName = (typeof textSizeNames)[number];\n\nexport const variantModes = ['multiple', 'single'] as const;\nexport const VariantMode = freezeEnum(variantModes);\nexport type VariantMode = (typeof variantModes)[number];\n\nexport const variantSelectors = ['menu', 'radio', 'button'] as const;\nexport const VariantSelector = freezeEnum(variantSelectors);\nexport type VariantSelector = (typeof variantSelectors)[number];\n\nexport const verticalAlignments = ['top', 'middle', 'bottom'] as const;\nexport const VerticalAlignment = freezeEnum(verticalAlignments);\nexport type VerticalAlignment = (typeof verticalAlignments)[number];\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport {\n buttonFields,\n Direction,\n directions,\n HorizontalAlignment,\n horizontalAlignments,\n SectionType,\n Spacing,\n spacings,\n VerticalAlignment,\n verticalAlignments,\n type ButtonField,\n} from './common';\nimport { CABRule } from './rule';\nimport { CABBorder, CABSection, type SectionDetails } from './shared';\n\nexport const GridItem = z.union([z.literal('auto'), z.literal('fill'), z.string().regex(/^\\d+%$/), z.number()]);\nexport type GridItem = z.infer<typeof GridItem>;\n\nexport const CABLayoutSection = z.object({\n alignment: z\n .object({\n horizontal: z.enum(horizontalAlignments).default(HorizontalAlignment.start),\n vertical: z.enum(verticalAlignments).default(VerticalAlignment.top),\n })\n .default({\n horizontal: HorizontalAlignment.start,\n vertical: VerticalAlignment.top,\n }),\n border: z.lazy(() => CABBorder),\n buttonField: z.enum(buttonFields).optional(),\n direction: z.enum(directions).default(Direction.rows),\n grid: z\n .object({\n columns: z.union([z.array(GridItem), z.undefined()]).default(() => ['auto']),\n rows: z.union([z.array(GridItem), z.undefined()]).default(() => ['auto']),\n })\n .default({ columns: ['auto'], rows: ['auto'] })\n .optional(),\n name: z.string().optional(),\n padding: z.enum(spacings).default(Spacing.none),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.layout).default(SectionType.layout),\n spacing: z.enum(spacings).default(Spacing.base),\n /** Fire-and-forget impression pixel POSTed once when the section is shown (e.g. a Monetize offer view). */\n viewUrl: z.string().optional(),\n width: z.number().default(100),\n});\n\nexport type CABLayoutSection = {\n alignment: {\n horizontal: HorizontalAlignment;\n vertical: VerticalAlignment;\n };\n border: CABBorder;\n buttonField?: ButtonField;\n direction: Direction;\n grid?: {\n columns: GridItem[];\n rows: GridItem[];\n };\n name?: string;\n padding: Spacing;\n rule?: CABRule;\n sectionId: string;\n sections: CABSection[];\n sectionType: 'layout';\n spacing: Spacing;\n viewUrl?: string;\n width: number;\n};\n\nexport type CABLayoutSectionProps = CABLayoutSection & SectionDetails;\n", "import { z } from 'zod';\n\nexport const ruleTypes = [\n 'cart',\n 'cart_count',\n 'cart_item_count',\n 'cart_line_count',\n 'cart_subtotal',\n 'collection',\n 'customer',\n 'customer_order_count',\n 'customer_tag',\n 'customer_total_spent',\n 'date',\n 'product',\n 'product_tag',\n 'product_title',\n 'product_type',\n 'product_vendor',\n] as const;\n\nconst ruleType = z.enum(ruleTypes);\n\nexport const RuleType = ruleType.enum;\nexport type RuleType = z.infer<typeof ruleType>;\n\nexport const ruleOperators = [\n 'after',\n 'anything',\n 'before',\n 'contains',\n 'contains_any',\n 'does_not_contain',\n 'does_not_contain_any',\n 'equals',\n 'does_not_equal',\n 'greater_than',\n 'less_than',\n] as const;\n\nconst ruleOperator = z.enum(ruleOperators);\n\nexport const RuleOperator = ruleOperator.enum;\nexport type RuleOperator = z.infer<typeof ruleOperator>;\n\nexport const RuleCondition = z.object({\n operator: z.enum(ruleOperators).default(RuleOperator.anything),\n products: z.union([z.array(z.unknown()), z.strictObject({}).transform(() => [])]).default(() => []),\n type: z.enum(ruleTypes).default(RuleType.cart_subtotal),\n value: z.coerce.string().default(''),\n});\n\nexport type RuleCondition = z.infer<typeof RuleCondition>;\n\nexport const RuleLogicBlock = z.object({\n rules: z.array(RuleCondition).default(() => []),\n});\n\nexport type RuleLogicBlock = z.infer<typeof RuleLogicBlock>;\n\nexport const CABRule = z.object({\n dataSourceId: z.number().nullable().default(null),\n enabled: z.boolean().default(false),\n ruleset: z\n .union([\n z.array(\n z.object({\n exitIfMatched: z.boolean().default(true),\n logic: z.array(RuleLogicBlock).default(() => []),\n output: z\n .array(\n z.object({\n key: z.string().default('should_show'),\n type: z.literal('data_json').default('data_json'),\n value: z.string().default('true'),\n })\n )\n .default(() => [{ key: 'should_show', type: 'data_json' as const, value: 'true' }]),\n })\n ),\n z.strictObject({}).transform(() => []),\n ])\n .default(() => []),\n});\n\nexport type CABRule = z.infer<typeof CABRule>;\n", "import { type FieldArrayPath } from 'react-hook-form';\nimport { z, type ZodType } from 'zod';\n\nimport { CABBannerSection } from './banner';\nimport { CABButtonSection } from './button';\nimport { CABCarouselSection } from './carousel';\nimport { CABCartLineSection } from './cartLine';\nimport { borderRadii, BorderRadius, BorderStyle, borderStyles, BorderWidth, borderWidths } from './common';\nimport { CABDataSourceSection } from './dataSource';\nimport { CABDiscountSection } from './discount';\nimport { CABImageSection } from './image';\nimport { CABLayoutSection } from './layout';\nimport { CABMonetizeSection } from './monetize';\nimport { CABOffersSection } from './offers';\nimport { CABProductSection } from './product';\nimport { CABProductsSection } from './products';\nimport { CABProgressBarSection } from './progressBar';\nimport { CABQuantitySection } from './quantity';\nimport { CABReviewsSection } from './reviews';\nimport { type CABRootSection } from './root';\nimport { CABTextSection } from './text';\nimport { CABVariantsSection } from './variants';\n\nexport const CABBorder = z\n .object({\n radius: z.enum(borderRadii).default(BorderRadius.base),\n style: z.enum(borderStyles).default(BorderStyle.none),\n width: z.enum(borderWidths).default(BorderWidth.base),\n })\n .default({\n radius: BorderRadius.base,\n style: BorderStyle.none,\n width: BorderWidth.base,\n });\n\nexport type CABBorder = z.infer<typeof CABBorder>;\n\nexport const CABSection: ZodType<CABSection> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [\n CABBannerSection,\n CABButtonSection,\n CABCarouselSection,\n CABCartLineSection,\n CABDataSourceSection,\n CABDiscountSection,\n CABImageSection,\n CABLayoutSection,\n CABMonetizeSection,\n CABOffersSection,\n CABProductSection,\n CABProductsSection,\n CABProgressBarSection,\n CABQuantitySection,\n CABReviewsSection,\n CABTextSection,\n CABVariantsSection,\n ])\n);\n\nexport type CABSection =\n | CABBannerSection\n | CABButtonSection\n | CABCarouselSection\n | CABCartLineSection\n | CABDataSourceSection\n | CABDiscountSection\n | CABImageSection\n | CABLayoutSection\n | CABMonetizeSection\n | CABOffersSection\n | CABProductSection\n | CABProductsSection\n | CABProgressBarSection\n | CABQuantitySection\n | CABReviewsSection\n | CABTextSection\n | CABVariantsSection;\n\nexport type SectionId = CABSection['sectionId'];\n\n/* @ts-expect-error: TS2589: Type instantiation _is_ excessively deep and infinite. */\nexport type SectionArrayPath = FieldArrayPath<CABRootSection>;\n\nexport type SectionPrefixPath = `${SectionArrayPath}.${number}` | null;\n\nexport type SectionDetails = {\n /**\n * The full React Hook Form dot-notation path to the section object itself,\n * for use with `register` or `control`, e.g. `sections.0.sections.1`.\n *\n * Returns `null` for the root section.\n */\n fieldArrayPath: SectionArrayPath | null;\n /**\n * The index of the found section within its parent `sections` array.\n *\n * Returns `null` for the root section.\n */\n index: number | null;\n /**\n * The parent `sections` object.\n *\n * Returns `null` for the root section.\n */\n parent: CABSection[] | null;\n /**\n * The parent `sectionId`.\n *\n * Returns `undefined` for the root section.\n */\n parentId: SectionId | undefined;\n /**\n * The full React Hook Form dot-notation path to the section object itself,\n * for use with `register` or `control`, e.g. `sections.0.sections.1`.\n *\n * Returns `null` for the root section.\n */\n prefixPath: SectionPrefixPath | null;\n};\n\nexport type CABSectionProps = CABSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z, type ZodType } from 'zod';\n\nimport {\n buttonActions,\n ButtonStyle,\n buttonStyles,\n PopoverPosition,\n popoverPositions,\n SectionType,\n TextAlignment,\n textAlignments,\n} from './common';\nimport { CABImageSection } from './image';\nimport { CABLayoutSection } from './layout';\nimport { HEX_COLOR_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport type CABButtonContent = CABImageSection | CABLayoutSection | CABTextSection;\n\nexport const CABButtonContent: ZodType<CABButtonContent> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [CABImageSection, CABLayoutSection, CABTextSection])\n);\n\nexport const CABButtonSection = z.object({\n action: z.union([z.literal(''), z.enum(buttonActions)]).default(''),\n buttonStyle: z.enum(buttonStyles).default(ButtonStyle.primary),\n custom: z\n .object({\n color: z.string().regex(HEX_COLOR_REGEX).default('#005bd3'),\n height: z.number().default(52),\n width: z.number().default(300),\n })\n .default({\n color: '#005bd3',\n height: 52,\n width: 300,\n }),\n disableDowngrade: z.boolean().default(false),\n name: z.string().optional(),\n optionId: z.number().optional(),\n popover: z\n .object({\n alignment: z.enum(textAlignments).default(TextAlignment.center),\n position: z.enum(popoverPositions).default(PopoverPosition.blockStart),\n })\n .optional()\n .default(() => ({\n alignment: TextAlignment.center,\n position: PopoverPosition.blockStart,\n })),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(CABButtonContent), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.button).default(SectionType.button),\n /**\n * The smart-cart tier this button acts on (`addGift`/`removeGift`): scopes the click to one tier's gift. The\n * client resolves the tier's gift (productId) from the progress-bar context by this `tierId` \u2014 the button node\n * stays data, no bespoke per-tier wiring. Absent on non-gift buttons (offer add/remove, navigation, links).\n *\n * Deliberately NOT `CABTextTier` (the shape `CABTextSection.tier` uses): a gift button acts on a tier the bar\n * already resolved, so it needs the id and nothing else. Reusing the text tier would make `threshold`\n * required, leave `tierId` optional, and DEFAULT `tierType` to `'shipping'` \u2014 a schema-supplied wrong answer\n * on a gift button. Unknown keys are stripped, so a client spreading a whole tier in still parses.\n *\n * `.min(1)` because an empty id IS the silently-id-less state this shape exists to prevent: the client's\n * lookup finds no tier and the click resolves to nothing. Safe to bound \u2014 the field is new, so there are no\n * stored payloads to grandfather, and the producer is client code, not a merchant form.\n */\n tier: z.object({ tierId: z.string().min(1) }).optional(),\n /** Fire-and-forget pixel POSTed when the button is clicked (e.g. a Monetize decline). */\n trackingUrl: z.string().optional(),\n});\n\nexport type CABButtonSection = z.infer<typeof CABButtonSection>;\n\nexport type CABButtonSectionProps = CABButtonSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { buttonFields, ObjectFit, objectFits, SectionType } from './common';\nimport { iconNames, iconSizes, iconTones, type IconName } from './icons';\nimport { DYNAMIC_TOKEN_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { CABBorder, type SectionDetails } from './shared';\nimport { checkForHTML, NO_HTML } from './utils';\n\n/**\n * The image section's fields WITHOUT the `category`/`source` refinement \u2014 the derivable base. Consumers and\n * future phases that need `.omit()`/`.pick()`/`.partial()` (an editor form schema, say) build from this and lose\n * the cross-field gate deliberately; everything that parses widget data uses {@link CABImageSection}.\n */\nexport const CABImageSectionFields = z.object({\n altText: z.string().refine(checkForHTML, NO_HTML).default(''),\n /**\n * Image width\u00F7height (e.g. `46` for the progress-bar fill); `null` renders at natural size. Any POSITIVE\n * ratio \u2014 never limited to 1, but never `0`/negative either: a renderer dividing by it would get `Infinity`,\n * and CSS `aspect-ratio` drops a negative value and silently reverts to natural size.\n */\n aspectRatio: z.number().positive().nullable().default(null),\n border: z.lazy(() => CABBorder),\n buttonField: z.enum(buttonFields).optional(),\n /**\n * `icon` renders `source` as a single `s-icon` by name (the uber-image path covers icons too), reading\n * `iconSize`/`iconTone`. The other values are a harmless informational holdover from the previous\n * implementation \u2014 they were never significant to rendering (`icons`, plural, is NOT deprecated, just one of\n * those inert legacy tags); `icon` is the first value that means anything.\n *\n * INVARIANT, encoded by the `.superRefine` below (a refined object IS a valid `z.discriminatedUnion` member\n * in zod 4 \u2014 see `CABTextSection`): `category: 'icon'` \u21D2 `source` is an icon name or `''` (icon not yet\n * chosen); any other category \u21D2 `source` is NOT a bare icon name, so it stays a URL/token/`''`.\n *\n * Encoded rather than left to the renderer because `source` is ONE union with no category gate, so widening\n * it with `iconNames` also widened what a STORED payload may contain: 14 of the names are plain English\n * words (`image`, `x`, `search`, `note`, `order`, `globe`, \u2026), and a legacy `source: 'image'` used to fail\n * parse \u2014 which `salvageSections` turns into a null-rendering stub PLUS a drift report. Ungated it would\n * instead parse and reach the renderer as `<img src=\"image\">`: a broken image, silently, where the old\n * behavior degraded gracefully and told us about it. The client-assembled half of the invariant was never\n * the risky half.\n */\n category: z.enum(['gallery', 'icon', 'icons', 'payment-methods', 'secure-checkout']).nullable().default(null),\n /** `icon`-mode only: the `s-icon` `size`; `null` \u21D2 the component default (`base`). Ignored by image treatments. */\n iconSize: z.enum(iconSizes).nullable().default(null),\n /** `icon`-mode only: the `s-icon` `tone`; `null` \u21D2 the component default (`auto`). Ignored by image treatments. */\n iconTone: z.enum(iconTones).nullable().default(null),\n name: z.string().optional(),\n naturalHeight: z.number().default(0),\n naturalWidth: z.number().default(0),\n /**\n * `contain` (the component default): dimensionless images render in s-image's 1/1 default frame, and\n * `cover` would crop non-square art (payment badges lost their edges \u2014 15993); `contain` letterboxes.\n */\n objectFit: z.enum(objectFits).default(ObjectFit.contain),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.image).default(SectionType.image),\n /**\n * An image URL or dynamic token, an empty default, or \u2014 when `category: 'icon'` \u2014 an icon NAME. Icon mode\n * takes a name or `''` only, NOT a token: no renderer resolves a token to an icon today, so accepting one\n * would promise a capability that doesn't exist. Widen the refine's carve-out to `DYNAMIC_TOKEN_REGEX` when a\n * server-chosen tier icon actually needs it.\n */\n source: z.union([z.url(), z.literal(''), z.string().regex(DYNAMIC_TOKEN_REGEX), z.enum(iconNames)]).default(''),\n width: z.number().default(100),\n});\n\nconst iconNameSet = new Set<string>(iconNames);\n\nconst isIconName = (source: string): source is IconName => iconNameSet.has(source);\n\n/**\n * The `category`/`source` pairing documented on `category`: icon mode takes icon names, everything else can't.\n *\n * Carrying a refinement costs the derivation methods: zod 4 rejects `.omit()` / `.pick()` / `.partial()` on an\n * object schema with checks (an explicit `cannot be used on object schemas containing refinements` throw, not a\n * silent drop), while `.extend()` / `.safeExtend()` work and PRESERVE the check. Concretely:\n * `CABImageSectionFields.omit({ sectionId: true })` works, `CABImageSection.omit({ sectionId: true })` throws \u2014\n * so derive from {@link CABImageSectionFields} when you need the unavailable three.\n */\nexport const CABImageSection = CABImageSectionFields.superRefine(({ category, source }, ctx) => {\n if (category === 'icon' && source !== '' && !isIconName(source))\n ctx.addIssue({\n code: 'custom',\n message: 'icon-mode source must be an icon name',\n path: ['source'],\n });\n\n if (category !== 'icon' && isIconName(source))\n ctx.addIssue({\n code: 'custom',\n message: 'source must be a URL or dynamic token unless category is `icon`',\n path: ['source'],\n });\n});\n\nexport type CABImageSection = z.infer<typeof CABImageSection>;\n\nexport type CABImageSectionProps = CABImageSection & SectionDetails;\n", "import { freezeEnum } from './common';\n\n/**\n * The checkout `s-icon` web-component `type` set, hand-mirrored from shopify.dev (checkout-ui-extensions \u2192\n * web-components \u2192 media-and-visuals \u2192 icon; api_version 2026-07). This is the Polaris `s-icon` surface \u2014\n * distinct from the legacy React `Icon` component's `CHECKOUT_AVAILABLE_ICONS`. The `image` section renders\n * one of these when `category: 'icon'` with `source` set to the name.\n *\n * Hand-maintained because `@shopify/ui-extensions` is not a dependency of this package. Safe against\n * staleness by USAGE, not a guard: icon-mode `source` values are CLIENT-ASSEMBLED from known constants, never\n * merchant/server data that gets strict-parsed \u2014 so an icon Shopify adds that this list lacks can't fail a\n * widget parse; it simply isn't a name we emit. If icon mode ever accepts external sources, add\n * `@shopify/ui-extensions` as a devDependency and replace this with a compile-time drift guard against its\n * icon type (in the spirit of the recursive-twins guard).\n */\nexport const iconNames = [\n 'alert-circle',\n 'alert-triangle',\n 'alert-triangle-filled',\n 'arrow-down',\n 'arrow-left',\n 'arrow-right',\n 'arrow-up',\n 'arrow-up-right',\n 'bag',\n 'bullet',\n 'calendar',\n 'camera',\n 'caret-down',\n 'cart',\n 'cash-dollar',\n 'categories',\n 'check',\n 'check-circle',\n 'check-circle-filled',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'circle',\n 'clipboard',\n 'clock',\n 'credit-card',\n 'delete',\n 'delivered',\n 'delivery',\n 'disabled',\n 'discount',\n 'edit',\n 'email',\n 'empty',\n 'external',\n 'filter',\n 'geolocation',\n 'gift-card',\n 'globe',\n 'grid',\n 'image',\n 'info',\n 'info-filled',\n 'list-bulleted',\n 'location',\n 'lock',\n 'map',\n 'menu',\n 'menu-horizontal',\n 'menu-vertical',\n 'minus',\n 'mobile',\n 'note',\n 'order',\n 'organization',\n 'plus',\n 'profile',\n 'question-circle',\n 'question-circle-filled',\n 'reorder',\n 'reset',\n 'return',\n 'savings',\n 'search',\n 'settings',\n 'star',\n 'star-filled',\n 'star-half',\n 'store',\n 'truck',\n 'upload',\n 'x',\n 'x-circle',\n 'x-circle-filled',\n] as const;\nexport const IconName = freezeEnum(iconNames);\nexport type IconName = (typeof iconNames)[number];\n\n/**\n * The `s-icon` `size` scale (same shopify.dev source as {@link iconNames}); component default is `base`.\n * Applies only to `image` sections in `icon` mode \u2014 an icon needs its own size knob (an image uses `width`,\n * a %, which is meaningless for a self-sizing icon). Absent \u21D2 the component's `base`.\n */\nexport const iconSizes = ['base', 'large', 'large-100', 'small', 'small-100', 'small-200'] as const;\nexport const IconSize = freezeEnum(iconSizes);\nexport type IconSize = (typeof iconSizes)[number];\n\n/**\n * The `s-icon` `tone` set (same shopify.dev source as {@link iconNames}); component default is `auto`. The\n * semantic color treatment of an `icon`-mode `image` \u2014 `custom` inherits the parent's CSS color. Absent \u21D2\n * the component's `auto`.\n */\nexport const iconTones = ['auto', 'critical', 'custom', 'info', 'neutral', 'success', 'warning'] as const;\nexport const IconTone = freezeEnum(iconTones);\nexport type IconTone = (typeof iconTones)[number];\n", "/** Matches a valid array index string (e.g., \"0\", \"1\", \"42\"). */\nexport const ARRAY_INDEX_STRING = /^(0|[1-9]\\d*)$/;\n\n/** Matches a dynamic token. */\nexport const DYNAMIC_TOKEN_REGEX = /^\\{\\{\\s*[A-Za-z]+\\s*\\}\\}$/;\n\n/** Matches a valid hex color code. */\nexport const HEX_COLOR_REGEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\n/**\n * Matches a root-relative, same-origin path (single leading slash, e.g. Shopify's\n * `/policies/privacy-policy`). A protocol-relative `//host` is excluded \u2014 it points off-origin.\n */\nexport const ROOT_RELATIVE_PATH_REGEX = /^\\/(?!\\/)/;\n\n/**\n * Matches an HTML-shaped tag: `<` (or `</`) immediately followed by a tag-name letter. This mirrors\n * both the browser `DOMParser` branch of `isHTML` and `stripContentBlockHtml`'s tag regex, so the\n * server-side check agrees with the client and with whatever the sanitizer removes. It deliberately\n * leaves bare comparison brackets alone (`5 < 10 and 10 > 5`) \u2014 those are text, not markup, and the\n * looser `/<\\/?[^>]+>/` it replaced wrongly rejected them and 500'd otherwise-valid content.\n *\n * Keeps the `g` flag because downstream consumers strip ALL tags with `.replace(HTML_TAGS_REGEX, '')`\n * (rebuy-shopify-extensions, admin-nextjs); without it `.replace` would drop only the first tag. The\n * one in-package consumer, `isHTML`, must therefore NOT use `.test()` on it \u2014 a global regex carries a\n * sticky `lastIndex` that makes repeated `.test()` calls flaky. `isHTML` uses `.search()` instead,\n * which ignores and never mutates `lastIndex`.\n */\nexport const HTML_TAGS_REGEX = /<\\/?[a-zA-Z][^>]*>/g;\n", "import { isPlainObject, mapValues } from 'es-toolkit';\nimport { every, get, isArray, isString, map, size, toPairs } from 'es-toolkit/compat';\n\nimport { type CABBannerSection } from './banner';\nimport { type CABButtonSection } from './button';\nimport { type CABCarouselSection } from './carousel';\nimport { type CABCartLineSection } from './cartLine';\nimport { ButtonField, SectionType } from './common';\nimport { type CABDataSourceSection } from './dataSource';\nimport { type CABDiscountSection } from './discount';\nimport { type CABImageSection } from './image';\nimport { type CABLayoutSection } from './layout';\nimport { type CABMonetizeSection } from './monetize';\nimport { type CABOffersSection } from './offers';\nimport { type CABProductSection } from './product';\nimport { type CABProductsSection } from './products';\nimport { type CABProgressBarSection } from './progressBar';\nimport { type CABQuantitySection } from './quantity';\nimport { ARRAY_INDEX_STRING, HTML_TAGS_REGEX } from './regex';\nimport { type CABReviewsSection } from './reviews';\nimport { type CABTextSection, type TiptapDocument } from './text';\nimport { type CABVariantsSection } from './variants';\n\nexport const isHTML = (html: string | undefined = ''): boolean => {\n if (typeof window !== 'undefined') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n\n const hasHTML = (nodeList: NodeList) => Array.from(nodeList).some((node) => node.nodeType === 1);\n\n return hasHTML(doc.body.childNodes) || hasHTML(doc.head.childNodes);\n }\n\n // `.search()` (not `.test()`) because HTML_TAGS_REGEX is global for downstream `.replace` callers;\n // `.search()` ignores and never advances `lastIndex`, so repeated calls stay deterministic.\n return html.search(HTML_TAGS_REGEX) !== -1;\n};\n\nexport const hasHTMLInDoc = (doc: TiptapDocument): boolean =>\n doc.content.some(({ content = [] }) => content.some(({ text }) => isHTML(text)));\n\nexport const checkForHTML = (input: string | TiptapDocument): boolean =>\n !((isString(input) && isHTML(input)) || (isPlainObject(input) && hasHTMLInDoc(input as TiptapDocument)));\n\nexport const NO_HTML = { message: 'HTML is not supported' };\n\nexport const isBannerType = (section: unknown): section is CABBannerSection =>\n get(section, 'sectionType') === SectionType.banner;\n\nexport const isButtonType = (section: unknown): section is CABButtonSection =>\n get(section, 'sectionType') === SectionType.button;\n\nexport const isCarouselType = (section: unknown): section is CABCarouselSection =>\n get(section, 'sectionType') === SectionType.carousel;\n\nexport const isCartLineType = (section: unknown): section is CABCartLineSection =>\n get(section, 'sectionType') === SectionType.cartLine;\n\nexport const isDataSourceType = (section: unknown): section is CABDataSourceSection =>\n get(section, 'sectionType') === SectionType.dataSource;\n\nexport const isDiscountType = (section: unknown): section is CABDiscountSection =>\n get(section, 'sectionType') === SectionType.discount;\n\nexport const isImageType = (section: unknown): section is CABImageSection =>\n get(section, 'sectionType') === SectionType.image;\n\nexport const isLayoutType = (section: unknown): section is CABLayoutSection =>\n get(section, 'sectionType') === SectionType.layout;\n\nexport const isMonetizeType = (section: unknown): section is CABMonetizeSection =>\n get(section, 'sectionType') === SectionType.monetize;\n\nexport const isOffersType = (section: unknown): section is CABOffersSection =>\n get(section, 'sectionType') === SectionType.offers;\n\nexport const isOverlayType = (section: unknown): section is CABLayoutSection =>\n isLayoutType(section) && get(section, 'buttonField') === ButtonField.overlayContent;\n\nexport const isProductType = (section: unknown): section is CABProductSection =>\n get(section, 'sectionType') === SectionType.product;\n\nexport const isProductsType = (section: unknown): section is CABProductsSection =>\n get(section, 'sectionType') === SectionType.products;\n\nexport const isProgressBarType = (section: unknown): section is CABProgressBarSection =>\n get(section, 'sectionType') === SectionType.progressBar;\n\nexport const isQuantityType = (section: unknown): section is CABQuantitySection =>\n get(section, 'sectionType') === SectionType.quantity;\n\nexport const isReviewsType = (section: unknown): section is CABReviewsSection =>\n get(section, 'sectionType') === SectionType.reviews;\n\nexport const isTextType = (section: unknown): section is CABTextSection =>\n get(section, 'sectionType') === SectionType.text;\n\nexport const isVariantsType = (section: unknown): section is CABVariantsSection =>\n get(section, 'sectionType') === SectionType.variants;\n\nconst hasOnlyNumericKeys = (input: Record<string, unknown>) =>\n !!size(input) && every(input, (_, key) => ARRAY_INDEX_STRING.test(key) && Number.isSafeInteger(Number(key)));\n\nconst numericObjectToArray = (input: Record<string, unknown>) =>\n toPairs(input)\n .sort(([a], [b]) => Number(a) - Number(b))\n .map(([_, value]) => value);\n\nexport const convertNumericObjects = (input: unknown): unknown => {\n if (isArray(input)) return map(input, convertNumericObjects);\n\n if (isPlainObject(input)) {\n const obj = input as Record<string, unknown>;\n\n return hasOnlyNumericKeys(obj)\n ? map(numericObjectToArray(obj), convertNumericObjects)\n : mapValues(obj, convertNumericObjects);\n }\n\n return input;\n};\n", "import { forEach, isString } from 'es-toolkit/compat';\nimport { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport {\n ButtonField,\n buttonFields,\n progressTierTypes,\n ProgressTierType,\n SectionType,\n Spacing,\n spacings,\n TextAlignment,\n textAlignments,\n TextColorName,\n textColorNames,\n TextSizeName,\n textSizeNames,\n} from './common';\nimport { DYNAMIC_TOKEN_REGEX, ROOT_RELATIVE_PATH_REGEX } from './regex';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\nimport { checkForHTML, NO_HTML } from './utils';\n\nconst enumOrOmit = <T extends readonly [string, ...string[]]>(...vals: T) =>\n z\n .string()\n .transform((val) => (vals.includes(val as T[number]) ? (val as T[number]) : undefined))\n .optional();\n\nexport const TiptapText = z.object({\n marks: z\n .union([\n z.array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('bold') }),\n z.object({ type: z.literal('italic') }),\n z.object({\n attrs: z.object({\n class: z.string().nullable(),\n href: z.union([\n z.url(),\n z.literal('#'),\n z.string().regex(DYNAMIC_TOKEN_REGEX),\n z.string().regex(ROOT_RELATIVE_PATH_REGEX),\n ]),\n rel: z.string().default('noopener noreferrer nofollow'),\n target: z.string().default('_blank'),\n }),\n type: z.literal('link'),\n }),\n z.object({ type: z.literal('strike') }),\n z.object({\n attrs: z.object({\n color: enumOrOmit(...textColorNames).default(TextColorName.base),\n fontSize: enumOrOmit(...textSizeNames).default(TextSizeName.base),\n }),\n type: z.literal('textStyle'),\n }),\n ])\n ),\n z.strictObject({}).transform(() => []),\n ])\n .optional(),\n text: z.string().default(''),\n type: z.literal('text').default('text'),\n});\n\nexport type TiptapText = z.infer<typeof TiptapText>;\n\nexport const TiptapParagraph = z.object({\n attrs: z\n .object({\n textAlign: enumOrOmit(...textAlignments),\n })\n .default({ textAlign: TextAlignment.start }),\n content: z.union([z.array(TiptapText), z.strictObject({}).transform(() => [])]).default(() => []),\n type: z.literal('paragraph').default('paragraph'),\n});\n\nexport type TiptapParagraph = z.infer<typeof TiptapParagraph>;\n\nexport const TiptapDocument = z.object({\n attrs: z\n .object({\n blockSpacing: enumOrOmit(...spacings),\n })\n .default({ blockSpacing: Spacing.base }),\n content: z\n .union([z.array(TiptapParagraph), z.strictObject({}).transform(() => [])])\n .default(() => [TiptapParagraph.parse({})]),\n type: z.literal('doc').default('doc'),\n});\n\nexport type TiptapDocument = z.infer<typeof TiptapDocument>;\n\n/**\n * A text section's tier reference. On the smart-cart per-tier feedback copy it carries the `tierId`, so\n * the renderer shows this section only while its tier is the active (current/last-reached) one \u2014 the\n * full tier (gift/threshold) lives on progressBar.\n */\nexport const CABTextTier = z.object({\n threshold: z.number().int().nonnegative(),\n thresholds: z.record(z.string(), z.number().int().nonnegative()).default(() => ({})),\n tierId: z.string().optional(),\n tierType: z.enum(progressTierTypes).default(ProgressTierType.shipping),\n});\n\nexport type CABTextTier = z.infer<typeof CABTextTier>;\n\nexport const CABTextSection = z\n .object({\n buttonField: z.enum(buttonFields).optional(),\n content: z\n .record(z.string(), z.union([z.string(), TiptapDocument]).refine(checkForHTML, NO_HTML).optional())\n .default({ en: TiptapDocument.parse({}) })\n .optional(),\n name: z.string().optional(),\n optionId: z.number().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.text).default(SectionType.text),\n tier: CABTextTier.optional(),\n })\n .superRefine(({ buttonField, content }, ctx) => {\n if (buttonField === ButtonField.destinationUrl && content) {\n forEach(content, (value, lang) => {\n if (value && isString(value)) {\n if (DYNAMIC_TOKEN_REGEX.test(value)) return;\n\n try {\n new URL(value);\n } catch {\n ctx.addIssue({\n code: 'custom',\n message: 'Invalid URL',\n path: ['content', lang],\n });\n }\n }\n });\n }\n });\n\nexport type CABTextSection = z.infer<typeof CABTextSection>;\n\nexport type CABTextSectionProps = CABTextSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABLayoutSection } from './layout';\nimport { CABOffersSection } from './offers';\nimport { CABSection, type SectionDetails } from './shared';\n\nexport const CABCarouselSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n autoAdvanceInterval: z.number().default(0),\n itemsAtOnce: z.number().min(1).default(1),\n sections: z\n .union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])])\n .default(() => [CABOffersSection.parse({})]),\n sectionType: z.literal(SectionType.carousel).default(SectionType.carousel),\n })\n);\n\nexport type CABCarouselSection = Omit<CABLayoutSection, 'sectionType'> & {\n autoAdvanceInterval: number;\n itemsAtOnce: number;\n sectionType: 'carousel';\n};\n\nexport type CABCarouselSectionProps = CABCarouselSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { CABBannerSection } from './banner';\nimport { CABButtonSection } from './button';\nimport { ButtonStyle, SectionType } from './common';\nimport { CABDataSourceSection } from './dataSource';\nimport { CABLayoutSection } from './layout';\nimport { CABProductsSection } from './products';\nimport { CABSection, type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport const CABOffersSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n sections: z.union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])]).default(() => [\n CABBannerSection.parse({\n buttonField: 'undoAddToOrder',\n color: 'success',\n dismissible: true,\n name: 'Success Banner',\n sections: [\n CABTextSection.parse({ content: { en: '{{quantity}} {{productTitle}} added to cart.' } }),\n CABButtonSection.parse({ action: 'undoAddToOrder', buttonStyle: ButtonStyle.plain }),\n ],\n }),\n CABDataSourceSection.parse({}),\n CABProductsSection.parse({}),\n ]),\n sectionType: z.literal(SectionType.offers).default(SectionType.offers),\n })\n);\n\nexport type CABOffersSection = Omit<CABLayoutSection, 'sectionType'> & {\n sectionType: 'offers';\n};\n\nexport type CABOffersSectionProps = CABOffersSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { discountSources, discountTypes, productTypes, SectionType } from './common';\nimport { DEFAULT_ENDPOINTS } from './constants';\nimport { type SectionDetails } from './shared';\n\nexport const CABDiscount = z.object({\n amount: z.union([z.number(), z.string()]).catch(0),\n discountedBy: z.string().optional(),\n discountedFrom: z.enum(discountSources).optional().catch(undefined),\n type: z.enum(discountTypes).catch('none'),\n});\n\nexport type CABDiscount = z.infer<typeof CABDiscount>;\n\nexport const CABIntegrations = z.object({\n judgeme: z.boolean().default(false),\n junip: z.boolean().default(false),\n klaviyo: z.boolean().default(false),\n loox: z.boolean().default(false),\n okendo: z.boolean().default(false),\n opinew: z.boolean().default(false),\n reviewsio: z.boolean().default(false),\n stamped: z.boolean().default(false),\n yotpo: z.boolean().default(false),\n});\n\nexport type CABIntegrations = z.infer<typeof CABIntegrations>;\n\nexport const CABDataSourceSection = z.object({\n dataSourceId: z.number().nullable().default(null),\n dataSourcePath: z.string().default(DEFAULT_ENDPOINTS[0].value),\n discount: CABDiscount.optional(),\n integrations: CABIntegrations.optional(),\n limit: z.number().default(1),\n matchVariant: z.boolean().default(false),\n matchVariantOutOfStock: z.boolean().default(false),\n name: z.string().default(DEFAULT_ENDPOINTS[0].label),\n productType: z.enum(productTypes).optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.dataSource).default(SectionType.dataSource),\n /** Default subscribe-vs-one-time for `productType: both` (legacy `subscription_is_default`). */\n subscriptionIsDefault: z.boolean().default(false),\n treatAsGwp: z.boolean().default(false),\n});\n\nexport type CABDataSourceSection = z.infer<typeof CABDataSourceSection>;\n\nexport type CABDataSourceSectionProps = CABDataSourceSection & SectionDetails;\n", "import { uniqBy } from 'es-toolkit';\n\nimport { EditorMode, freezeEnum } from './common';\nimport { type TargetArea } from './root';\n\nexport const DEFAULT_ENDPOINTS = [\n { label: 'Recommended (AI)', value: '/products/recommended' },\n { label: 'Top Sellers', value: '/products/top_sellers' },\n { label: 'Buy It Again', value: '/products/purchased' },\n { label: 'Recently Viewed', value: '/products/viewed' },\n { label: 'Products Search', value: '/products/search' },\n { label: 'Collection Products', value: '/products/collections' },\n { label: 'Similar Products (AI)', value: '/products/similar_products' },\n] as const;\n\nexport const STATIC_ENDPOINTS = [\n { label: 'Recommended (AI)', value: '/products/recommended' },\n { label: 'Top Sellers', value: '/products/top_sellers' },\n { label: 'Trending Products', value: '/products/trending_products' },\n { label: 'Buy It Again', value: '/products/purchased' },\n { label: 'Collection Products', value: '/products/collections' },\n { label: 'Recently Viewed', value: '/products/viewed' },\n { label: 'Static Products', value: '/products/static' },\n { label: 'Products Search', value: '/products/search' },\n { label: 'Similar Products (AI)', value: '/products/similar_products' },\n] as const;\n\nexport const COMBINED_ENDPOINTS = uniqBy([...DEFAULT_ENDPOINTS, ...STATIC_ENDPOINTS], (item) => item.value);\n\nexport const targetAreas = {\n [EditorMode.checkoutExtension]: [\n { icon: 'splitscreen_top', label: 'Header Area', width: '984px' },\n { icon: 'splitscreen_left', label: 'Main Column', width: '503px' },\n { icon: 'splitscreen_right', label: 'Summary Column', width: '404px' },\n ] satisfies TargetArea[],\n [EditorMode.postPurchaseOffer]: null,\n [EditorMode.thankYouPage]: [\n { icon: 'splitscreen_top', label: 'Header Area', width: '984px' },\n { icon: 'splitscreen_left', label: 'Main Column', width: '503px' },\n { icon: 'splitscreen_right', label: 'Summary Column', width: '404px' },\n ] satisfies TargetArea[],\n [EditorMode.orderStatusPage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Header Area', width: '1124px' },\n { fill: true, icon: 'view_column_2', label: 'Main Area', width: '646px' },\n { icon: 'splitscreen_bottom', label: 'Footer Area', width: '1124px' },\n ] satisfies TargetArea[],\n [EditorMode.ordersIndexPage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Main Area', width: '1124px' },\n ] satisfies TargetArea[],\n [EditorMode.customerProfilePage]: [\n // { fill: true, flip: 'vertical', icon: 'bottom_navigation', label: 'Announcement Bar' },\n { icon: 'splitscreen_top', label: 'Main Area', width: '1124px' },\n ] satisfies TargetArea[],\n} as const;\n\nexport const widgetTypes = [\n 'bundle_builder',\n 'cart',\n 'cart_subscription',\n 'dynamic_bundle',\n 'gift_with_purchase',\n 'pre_purchase',\n 'product',\n 'product_addon',\n 'product_upsell',\n 'recharge_checkout',\n 'recharge_customer_portal',\n 'recharge_post_purchase',\n 'shopify_checkout',\n 'shopify_checkout_extension',\n 'shopify_post_purchase',\n 'shopify_post_purchase_extension',\n 'switch_to_subscription',\n 'ui_extension_ad',\n 'ui_extension_button',\n 'ui_extension_content_block',\n 'ui_extension_line_item_editor',\n 'ui_extension_progress_bar',\n] as const;\n\nexport const WidgetType = freezeEnum(widgetTypes);\nexport type WidgetType = (typeof widgetTypes)[number];\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABProductSection } from './product';\nimport { type SectionDetails } from './shared';\n\nexport const CABProductsSection = z.object({\n name: z.string().optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z\n .union([z.array(z.lazy(() => CABProductSection)), z.strictObject({}).transform(() => [])])\n .default(() => []),\n sectionType: z.literal(SectionType.products).default(SectionType.products),\n});\n\nexport type CABProductsSection = z.infer<typeof CABProductsSection>;\n\nexport type CABProductsSectionProps = CABProductsSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z, type ZodType } from 'zod';\n\nimport { CABButtonSection } from './button';\nimport { SectionType, VariantMode, variantModes, VariantSelector, variantSelectors } from './common';\nimport { type SectionDetails } from './shared';\nimport { CABTextSection } from './text';\n\nexport type CABVariantContent = CABButtonSection | CABTextSection;\n\nexport const CABVariantContent: ZodType<CABVariantContent> = z.lazy(() =>\n z.discriminatedUnion('sectionType', [CABButtonSection, CABTextSection])\n);\n\nexport const CABProductSection = z.object({\n name: z.string().optional(),\n productId: z.number().nullable().default(null),\n sectionId: z.uuid().default(() => uuidv7()),\n sections: z.union([z.array(CABVariantContent), z.strictObject({}).transform(() => [])]).default(() => []),\n sectionType: z.literal(SectionType.product).default(SectionType.product),\n selectors: z.record(z.string(), z.enum(variantSelectors).default(VariantSelector.menu)).default(() => ({})),\n variantMode: z.enum(variantModes).default(VariantMode.multiple),\n});\n\nexport type CABProductSection = z.infer<typeof CABProductSection>;\n\nexport type CABProductSectionProps = CABProductSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { CABButtonSection } from './button';\nimport { ButtonAction, SectionType } from './common';\nimport { CABLayoutSection } from './layout';\nimport { CABSection, type SectionDetails } from './shared';\n\nexport const CABCartLineSection = z.lazy(() =>\n CABLayoutSection.omit({ sections: true, sectionType: true }).extend({\n sections: z\n .union([z.array(z.lazy(() => CABSection)), z.strictObject({}).transform(() => [])])\n .default(() => [CABButtonSection.parse({ action: ButtonAction.switchToSubscription })]),\n sectionType: z.literal(SectionType.cartLine).default(SectionType.cartLine),\n })\n);\n\nexport type CABCartLineSection = Omit<CABLayoutSection, 'sectionType'> & {\n sectionType: 'cartLine';\n};\n\nexport type CABCartLineSectionProps = CABCartLineSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { discountSources, discountTypes, SectionType } from './common';\nimport { type SectionDetails } from './shared';\n\n/**\n * The widget discount, modeled as its own offers child section (toggled on/off in the editor and\n * rendered nowhere \u2014 it's config-only). Discounting is Shopify Functions-only (Scripts is sunset), so a\n * configured discount always applies via Functions and the amount is in Functions (minor-unit) form for\n * fixed types. `discountedFrom` is the compare-from source; `message` is the Functions discount title.\n */\nexport const CABDiscountSection = z.object({\n amount: z.union([z.number(), z.string()]).catch(0),\n discountedBy: z.string().optional(),\n discountedFrom: z.enum(discountSources).optional().catch(undefined),\n message: z.string().optional(),\n name: z.string().optional(),\n quantity: z.number().default(1),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.discount).default(SectionType.discount),\n type: z.enum(discountTypes).catch('none'),\n});\n\nexport type CABDiscountSection = z.infer<typeof CABDiscountSection>;\n\nexport type CABDiscountSectionProps = CABDiscountSection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABMonetizeSection = z.object({\n name: z.string().optional(),\n /** Privacy Policy footer href (the widget's `privacy_policy_url` setting); the client relays it to `/cab/monetize`. */\n privacyPolicyUrl: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.monetize).default(SectionType.monetize),\n /** Ads-taxonomy sub-vertical id (the widget's `sub_vertical` setting); paired with `vertical`. */\n subVertical: z.string().optional(),\n /** Ads-taxonomy vertical id (the widget's `vertical` setting) \u2014 with `subVertical`, the admin Monetize editor's two configurables. */\n vertical: z.string().optional(),\n});\n\nexport type CABMonetizeSection = z.infer<typeof CABMonetizeSection>;\n\nexport type CABMonetizeSectionProps = CABMonetizeSection & SectionDetails;\n", "import { z } from 'zod';\n\nimport { ProgressTierType, progressTierTypes, ProgressTierUnit, progressTierUnits, SectionType } from './common';\nimport { GIFT_LABELS } from './giftLabels';\nimport { CABLayoutSection } from './layout';\nimport { type SectionDetails } from './shared';\n\nexport const CABProgressTier = z.object({\n /**\n * Order-discount tiers only (onsite `discount`): the reward the order-discount Function applies at\n * cart time, carried so the client can resolve the `{{discountAmount}}` token in this tier's copy.\n * `fixedAmount`: shop-currency CENTS (FX-scaled by the client, like {@link CABProgressTier.threshold});\n * `percentage`: the whole-percent number rendered raw (`{n}%`). Absent on non-discount tiers.\n */\n discount: z.object({ amount: z.number().nonnegative(), type: z.enum(['fixedAmount', 'percentage']) }).optional(),\n /**\n * Smart-cart product (gift) tiers only (onsite `filter_oos_variants`): when set, the client drops this\n * tier entirely once its gift has NO in-stock eligible variant \u2014 the milestone, fill slot and gift\n * controls all disappear, mirroring onsite removing the tier from `bar.tiers` before it renders. Absent\n * on shipping/discount/decorative tiers and left off by default (the tier renders regardless of stock).\n */\n filterOosVariants: z.boolean().default(false),\n /**\n * Smart-cart product (gift) tiers only: the reward unlocked at this tier. The client enriches\n * `productId`/`variantIds` to live variants (availability, price) and adds the chosen one to the cart\n * when the tier is reached (attribution `_tier` = {@link CABProgressTier.tierId}). Absent on shipping\n * tiers and on tiers with no configured product. Cart add/remove is a later stage; carried here so the\n * tree is complete.\n */\n gift: z\n .object({\n productId: z.number().int().positive(),\n title: z.string().optional(),\n variantIds: z.array(z.number().int().positive()).default(() => []),\n })\n .optional(),\n /**\n * The step-row label at this tier's slot (onsite `getTierLabel`): the merchant custom label, else the\n * type default \u2014 'Free Shipping' or '{n}% Discount'. A PRODUCT tier gets NO converter label: its name is\n * the gift PRODUCT title, which the converter can't supply (config carries only product IDs), so the\n * client resolves it (authoritative Shopify title, React parity) with its own localized generic fallback.\n * Localized content; absent OR blank \u21D2 no label under the tier's icon (the converter's `toTierMeta` already\n * turns a blank label into an absent key, and a client-authored blank means the same thing \u2014 the renderer\n * emits no caption slot rather than an empty one). Plain text \u2014 a compact icon+label.\n */\n label: z.record(z.string(), z.string()).optional(),\n /**\n * The tier's goal, measured per `unit`. `currency` (default): SHOP-currency cents \u2014 the canonical\n * fallback: when the buyer's presentment currency has no entry in `thresholds`, the client\n * multiplies this by the live FX rate (converter maps the v1 `unlock_price`, e.g. `75` \u2192 `7500`).\n * `item`: a raw item count \u2014 no cents, no FX, no `thresholds` overrides.\n */\n threshold: z.number().int().nonnegative(),\n /**\n * Per-presentment-currency goal overrides \u2014 lowercased ISO currency code \u2192 cents (e.g. `{ cad: 9900 }`).\n * When the buyer's currency has an entry, the client uses it verbatim INSTEAD of FX-converting\n * `threshold`, so merchants show intentional, clean per-market amounts (Shopify Markets) rather than a\n * converted base. Defaults to `{}` \u2014 no overrides means always fall back to `threshold`.\n */\n thresholds: z.record(z.string(), z.number().int().nonnegative()).default(() => ({})),\n /**\n * Smart-cart tier identifier, mirrored onto the gift cart line's `_tier` attribute so the client can\n * match an in-cart gift back to its tier (add on reach, remove on downgrade/decline). Absent on the\n * shipping bar (single unlabeled tier, no gift).\n */\n tierId: z.string().optional(),\n tierType: z.enum(progressTierTypes).default(ProgressTierType.shipping),\n /**\n * What this tier's progress is measured in \u2014 PER TIER (onsite's `unlock_condition_type` model, NOT\n * the React port's bar-level `tiers[0]` shortcut). `currency` compares money cents against the\n * adjusted subtotal; `item` compares the raw quantity sum of non-excluded lines (the SAME exclusion\n * set as the money path). A mixed-unit bar stays coherent tier by tier: reach, fill share, and\n * `{{remainingAmount}}` (a raw `Intl`-localized count for `item` tiers, money for `currency` tiers)\n * each resolve in their own tier's unit \u2014 cross-tier arithmetic never mixes counts with cents. The\n * count carries no injected noun (no English `item`/`items` inflection on localized copy); merchant\n * template text supplies grammatically-neutral wording around the token.\n */\n unit: z.enum(progressTierUnits).default(ProgressTierUnit.currency),\n});\n\nexport type CABProgressTier = z.infer<typeof CABProgressTier>;\n\n/**\n * A self-contained progress-bar container. Extends `layout` (alignment/border/spacing/`sections`/\u2026), so it\n * holds ALL its pieces as composable children \u2014 the tier display (a `columns \u2192 rows \u2192 text/image` layout)\n * and the reached/remaining message `text`s \u2014 while the renderer adds the bar fill from `tiers` and shows\n * the active message. Everything is encapsulated under this one named section (and one country/FX gate).\n */\nexport const CABProgressBarSection = z.lazy(() =>\n CABLayoutSection.omit({ sectionType: true }).extend({\n /**\n * The onsite bar id (smart-cart TPB bars only). The client mirrors it to the cart's `_barId` attribute\n * so the product-discount / order-discount Functions can locate this bar's tier config (they key the\n * TPB metafield by bar id). Onsite writes `_barId` in the storefront drawer; a Buy-Now / headless\n * checkout reaches the extension without it, so the client writes it or the tier gift's 100% discount\n * (and any tier order discount) never applies. Absent on the v1 shipping bar (no gift tiers, no id).\n */\n barId: z.string().optional(),\n /** Empty = shown everywhere; otherwise uppercase ISO country codes. */\n countryCodes: z.array(z.string().transform((code) => code.trim().toUpperCase())).default(() => []),\n /**\n * Uppercase ISO codes where a higher-precedence geo bar applies, so this (default, non-geo) bar is\n * hidden there \u2014 replicates React `getbar`'s geo-match-over-default precedence. Empty = never excluded.\n */\n excludeCountryCodes: z.array(z.string().transform((code) => code.trim().toUpperCase())).default(() => []),\n /**\n * Measure progress against the PRE-discount subtotal (onsite `exclude_discount_in_subtotal`, and\n * forced on for bars with a discount tier so its own reward can't un-reach the tier). The client\n * adds the cart's discount allocations back to the live subtotal.\n */\n excludeDiscountInSubtotal: z.boolean().default(false),\n /** Variant ids the client subtracts from the adjusted subtotal (React `bar.excluded_products`). */\n excludedVariantIds: z.array(z.number().int().positive()).default(() => []),\n /**\n * When the cart holds a subscription item, treat the bar as reached regardless of subtotal (React\n * `free_shipping_on_subscription(s)`). `freeShippingOnAll` is already a zero-threshold tier instead.\n */\n freeShippingOnSubscription: z.boolean().default(false),\n /** Localized heading over the gift controls (onsite `gift_area_title`, default 'FREE GIFTS'). */\n giftAreaTitle: z.record(z.string(), z.string()).default(() => ({ en: 'FREE GIFTS' })),\n /** Localized gift-control labels (add/remove/heading); a tier's gift `title` beats `yourGift`. */\n giftLabels: z\n .object({\n addGift: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.addGift })),\n remove: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.remove })),\n selectOptions: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.selectOptions })),\n yourGift: z.record(z.string(), z.string()).default(() => ({ ...GIFT_LABELS.yourGift })),\n })\n .default(() => ({\n addGift: { ...GIFT_LABELS.addGift },\n remove: { ...GIFT_LABELS.remove },\n selectOptions: { ...GIFT_LABELS.selectOptions },\n yourGift: { ...GIFT_LABELS.yourGift },\n })),\n /** The bar's a11y label; the merchant names it in the editor, else this default (React parity). */\n name: z.string().default('Order progress'),\n /**\n * Bar fill color. An explicit (widget-authored) value is used verbatim; when absent the server\n * fills it with the live shop theme's `buttonBackground` (React `useRebuyTheme` parity). Still\n * absent after that \u21D2 the theme fetch failed and the client renders its platform-default bar \u2014\n * optional, not defaulted, so \"merchant chose no color\" stays distinguishable from any real value.\n */\n progressColor: z.string().optional(),\n sectionType: z.literal(SectionType.progressBar).default(SectionType.progressBar),\n /**\n * The bar's milestones in the merchant's CONFIGURED order \u2014 the renderer does NOT sort them (022\n * O-B2: sorting by resolved threshold reversed configured milestones on out-of-order or mixed-unit\n * count-vs-cents bars). Drives the fill (even slot per tier) and, for smart-cart product tiers, the\n * gift add/remove. The visual tier display lives in `sections` (composable), NOT here.\n */\n tiers: z.union([z.array(CABProgressTier), z.strictObject({}).transform(() => [])]).default(() => []),\n })\n);\n\nexport type CABProgressBarSection = Omit<CABLayoutSection, 'name' | 'sectionType'> & {\n barId?: string;\n countryCodes: string[];\n excludeCountryCodes: string[];\n excludeDiscountInSubtotal: boolean;\n excludedVariantIds: number[];\n freeShippingOnSubscription: boolean;\n giftAreaTitle: Record<string, string>;\n giftLabels: Record<'addGift' | 'remove' | 'selectOptions' | 'yourGift', Record<string, string>>;\n name: string;\n progressColor?: string;\n sectionType: 'progressBar';\n tiers: CABProgressTier[];\n};\n\nexport type CABProgressBarSectionProps = CABProgressBarSection & SectionDetails;\n", "/**\n * Default localized labels for the smart-cart gift controls, keyed by slot then locale (same 26 locales\n * as `SWITCH_LABELS`). Schema-default content, never a client dictionary (Peter, 2026-07-06: visible\n * customer strings must be localized). `yourGift` is the generic heading \u2014 a tier's configured gift\n * `title` beats it when present.\n */\nexport const GIFT_LABELS = {\n addGift: {\n ar: '\u0623\u0636\u0641 \u0627\u0644\u0647\u062F\u064A\u0629',\n cs: 'P\u0159idat d\u00E1rek',\n da: 'Tilf\u00F8j gave',\n de: 'Geschenk hinzuf\u00FCgen',\n en: 'Add gift',\n es: 'A\u00F1adir regalo',\n fi: 'Lis\u00E4\u00E4 lahja',\n fr: 'Ajouter le cadeau',\n ga: 'Cuir bronntanas leis',\n he: '\u05D4\u05D5\u05E1\u05E3 \u05DE\u05EA\u05E0\u05D4',\n hi: '\u0909\u092A\u0939\u093E\u0930 \u091C\u094B\u0921\u093C\u0947\u0902',\n id: 'Tambahkan hadiah',\n it: 'Aggiungi regalo',\n ja: '\u30AE\u30D5\u30C8\u3092\u8FFD\u52A0',\n ko: '\uC0AC\uC740\uD488 \uCD94\uAC00',\n nl: 'Cadeau toevoegen',\n no: 'Legg til gave',\n pl: 'Dodaj prezent',\n pt: 'Adicionar presente',\n ru: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u043E\u0434\u0430\u0440\u043E\u043A',\n sv: 'L\u00E4gg till g\u00E5va',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D',\n tr: 'Hediye ekle',\n uk: '\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u043E\u0434\u0430\u0440\u0443\u043D\u043E\u043A',\n vi: 'Th\u00EAm qu\u00E0 t\u1EB7ng',\n zh: '\u6DFB\u52A0\u8D60\u54C1',\n },\n remove: {\n ar: '\u0625\u0632\u0627\u0644\u0629',\n cs: 'Odebrat',\n da: 'Fjern',\n de: 'Entfernen',\n en: 'Remove',\n es: 'Eliminar',\n fi: 'Poista',\n fr: 'Retirer',\n ga: 'Bain',\n he: '\u05D4\u05E1\u05E8',\n hi: '\u0939\u091F\u093E\u090F\u0901',\n id: 'Hapus',\n it: 'Rimuovi',\n ja: '\u524A\u9664',\n ko: '\uC81C\uAC70',\n nl: 'Verwijderen',\n no: 'Fjern',\n pl: 'Usu\u0144',\n pt: 'Remover',\n ru: '\u0423\u0434\u0430\u043B\u0438\u0442\u044C',\n sv: 'Ta bort',\n th: '\u0E19\u0E33\u0E2D\u0E2D\u0E01',\n tr: 'Kald\u0131r',\n uk: '\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438',\n vi: 'X\u00F3a',\n zh: '\u79FB\u9664',\n },\n selectOptions: {\n ar: '\u0627\u062E\u062A\u0631 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A',\n cs: 'Vyberte mo\u017Enosti',\n da: 'V\u00E6lg muligheder',\n de: 'Optionen w\u00E4hlen',\n en: 'Select Options',\n es: 'Seleccionar opciones',\n fi: 'Valitse vaihtoehdot',\n fr: 'Choisir les options',\n ga: 'Roghnaigh roghanna',\n he: '\u05D1\u05D7\u05E8 \u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA',\n hi: '\u0935\u093F\u0915\u0932\u094D\u092A \u091A\u0941\u0928\u0947\u0902',\n id: 'Pilih opsi',\n it: 'Seleziona le opzioni',\n ja: '\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u629E',\n ko: '\uC635\uC158 \uC120\uD0DD',\n nl: 'Opties kiezen',\n no: 'Velg alternativer',\n pl: 'Wybierz opcje',\n pt: 'Selecionar op\u00E7\u00F5es',\n ru: '\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B',\n sv: 'V\u00E4lj alternativ',\n th: '\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01',\n tr: 'Se\u00E7enekleri se\u00E7',\n uk: '\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0438',\n vi: 'Ch\u1ECDn t\u00F9y ch\u1ECDn',\n zh: '\u9009\u62E9\u9009\u9879',\n },\n yourGift: {\n ar: '\u0647\u062F\u064A\u062A\u0643',\n cs: 'V\u00E1\u0161 d\u00E1rek',\n da: 'Din gave',\n de: 'Ihr Geschenk',\n en: 'Your gift',\n es: 'Tu regalo',\n fi: 'Lahjasi',\n fr: 'Votre cadeau',\n ga: 'Do bhronntanas',\n he: '\u05D4\u05DE\u05EA\u05E0\u05D4 \u05E9\u05DC\u05DA',\n hi: '\u0906\u092A\u0915\u093E \u0909\u092A\u0939\u093E\u0930',\n id: 'Hadiah Anda',\n it: 'Il tuo regalo',\n ja: '\u3042\u306A\u305F\u306E\u30AE\u30D5\u30C8',\n ko: '\uACE0\uAC1D\uB2D8\uC758 \uC0AC\uC740\uD488',\n nl: 'Uw cadeau',\n no: 'Din gave',\n pl: 'Tw\u00F3j prezent',\n pt: 'Seu presente',\n ru: '\u0412\u0430\u0448 \u043F\u043E\u0434\u0430\u0440\u043E\u043A',\n sv: 'Din g\u00E5va',\n th: '\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13',\n tr: 'Hediyeniz',\n uk: '\u0412\u0430\u0448 \u043F\u043E\u0434\u0430\u0440\u0443\u043D\u043E\u043A',\n vi: 'Qu\u00E0 c\u1EE7a b\u1EA1n',\n zh: '\u60A8\u7684\u8D60\u54C1',\n },\n} satisfies Record<string, Record<string, string>>;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { QuantityInput, quantityInputs, SectionType } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABQuantitySection = z.object({\n errorMessages: z\n .record(\n z.string(),\n z.object({\n /** `{{step}}` is interpolated at render \u2014 the off-increment message React never gave a merchant key. */\n increment: z.string().optional(),\n max: z.string().optional(),\n min: z.string().optional(),\n neg: z.string().optional(),\n })\n )\n .default({\n en: {\n increment: 'Quantity must be in increments of {{step}}',\n max: 'Maximum quantity allowed is {{max}}',\n min: 'Minimum quantity required is {{min}}',\n neg: 'Quantity cannot be negative',\n },\n }),\n inputType: z.enum(quantityInputs).default(QuantityInput.select),\n max: z.number().min(1).max(100).default(10),\n min: z.number().min(1).default(1),\n /** The a11y label for the quantity control; the merchant names it in the editor, else this default. */\n name: z.string().default('Quantity'),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.quantity).default(SectionType.quantity),\n});\n\nexport type CABQuantitySection = z.infer<typeof CABQuantitySection>;\n\nexport type CABQuantitySectionProps = CABQuantitySection & SectionDetails;\n", "import { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { ReviewsSize, reviewsSizes, SectionType } from './common';\nimport { REVIEW_LABELS } from './reviewLabels';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABReviewsSection = z.object({\n color: z.string().default('#fadb14'),\n /**\n * Localized review-count templates (`{{reviewCount}}`), one/other plural forms; the client picks the\n * form via `Intl.PluralRules`. Defaults here (schema-first) so every tree localizes without converter\n * or merchant work.\n */\n countLabels: z\n .object({\n one: z.record(z.string(), z.string()).default(() => ({ ...REVIEW_LABELS.one })),\n other: z.record(z.string(), z.string()).default(() => ({ ...REVIEW_LABELS.other })),\n })\n .default(() => ({ one: { ...REVIEW_LABELS.one }, other: { ...REVIEW_LABELS.other } })),\n name: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.reviews).default(SectionType.reviews),\n size: z.enum(reviewsSizes).default(ReviewsSize.default),\n});\n\nexport type CABReviewsSection = z.infer<typeof CABReviewsSection>;\n\nexport type CABReviewsSectionProps = CABReviewsSection & SectionDetails;\n", "/**\n * Default localized review-count templates for the reviews section, keyed by CLDR-ish plural form then\n * locale (same 26 locales as `SWITCH_LABELS`). The client picks `one` vs `other` via `Intl.PluralRules`\n * and interpolates `{{reviewCount}}` \u2014 the two-form simplification maps every non-`one` category\n * (few/many/other) to `other`. Schema-default content, never a client dictionary (Peter, 2026-07-06:\n * visible customer strings must be localized).\n */\nexport const REVIEW_LABELS = {\n one: {\n ar: '({{reviewCount}} \u062A\u0642\u064A\u064A\u0645)',\n cs: '({{reviewCount}} recenze)',\n da: '({{reviewCount}} anmeldelse)',\n de: '({{reviewCount}} Bewertung)',\n en: '({{reviewCount}} review)',\n es: '({{reviewCount}} rese\u00F1a)',\n fi: '({{reviewCount}} arvostelu)',\n fr: '({{reviewCount}} avis)',\n ga: '({{reviewCount}} l\u00E9irmheas)',\n he: '({{reviewCount}} \u05D1\u05D9\u05E7\u05D5\u05E8\u05EA)',\n hi: '({{reviewCount}} \u0938\u092E\u0940\u0915\u094D\u0937\u093E)',\n id: '({{reviewCount}} ulasan)',\n it: '({{reviewCount}} recensione)',\n ja: '({{reviewCount}}\u4EF6\u306E\u30EC\u30D3\u30E5\u30FC)',\n ko: '({{reviewCount}}\uAC1C \uB9AC\uBDF0)',\n nl: '({{reviewCount}} beoordeling)',\n no: '({{reviewCount}} anmeldelse)',\n pl: '({{reviewCount}} opinia)',\n pt: '({{reviewCount}} avalia\u00E7\u00E3o)',\n ru: '({{reviewCount}} \u043E\u0442\u0437\u044B\u0432)',\n sv: '({{reviewCount}} recension)',\n th: '({{reviewCount}} \u0E23\u0E35\u0E27\u0E34\u0E27)',\n tr: '({{reviewCount}} de\u011Ferlendirme)',\n uk: '({{reviewCount}} \u0432\u0456\u0434\u0433\u0443\u043A)',\n vi: '({{reviewCount}} \u0111\u00E1nh gi\u00E1)',\n zh: '({{reviewCount}} \u6761\u8BC4\u4EF7)',\n },\n other: {\n ar: '({{reviewCount}} \u062A\u0642\u064A\u064A\u0645\u0627\u062A)',\n cs: '({{reviewCount}} recenz\u00ED)',\n da: '({{reviewCount}} anmeldelser)',\n de: '({{reviewCount}} Bewertungen)',\n en: '({{reviewCount}} reviews)',\n es: '({{reviewCount}} rese\u00F1as)',\n fi: '({{reviewCount}} arvostelua)',\n fr: '({{reviewCount}} avis)',\n ga: '({{reviewCount}} l\u00E9irmheasanna)',\n he: '({{reviewCount}} \u05D1\u05D9\u05E7\u05D5\u05E8\u05D5\u05EA)',\n hi: '({{reviewCount}} \u0938\u092E\u0940\u0915\u094D\u0937\u093E\u090F\u0901)',\n id: '({{reviewCount}} ulasan)',\n it: '({{reviewCount}} recensioni)',\n ja: '({{reviewCount}}\u4EF6\u306E\u30EC\u30D3\u30E5\u30FC)',\n ko: '({{reviewCount}}\uAC1C \uB9AC\uBDF0)',\n nl: '({{reviewCount}} beoordelingen)',\n no: '({{reviewCount}} anmeldelser)',\n pl: '({{reviewCount}} opinii)',\n pt: '({{reviewCount}} avalia\u00E7\u00F5es)',\n ru: '({{reviewCount}} \u043E\u0442\u0437\u044B\u0432\u043E\u0432)',\n sv: '({{reviewCount}} recensioner)',\n th: '({{reviewCount}} \u0E23\u0E35\u0E27\u0E34\u0E27)',\n tr: '({{reviewCount}} de\u011Ferlendirme)',\n uk: '({{reviewCount}} \u0432\u0456\u0434\u0433\u0443\u043A\u0456\u0432)',\n vi: '({{reviewCount}} \u0111\u00E1nh gi\u00E1)',\n zh: '({{reviewCount}} \u6761\u8BC4\u4EF7)',\n },\n} satisfies Record<'one' | 'other', Record<string, string>>;\n", "import { slice } from 'es-toolkit/compat';\nimport { v7 as uuidv7 } from 'uuid';\nimport { z } from 'zod';\n\nimport { SectionType, VariantMode, variantModes, VariantSelector, variantSelectors } from './common';\nimport { CABRule } from './rule';\nimport { type SectionDetails } from './shared';\n\nexport const CABVariantsSection = z.object({\n hideOutOfStockVariants: z.boolean().default(false),\n name: z.string().optional(),\n rule: CABRule.optional(),\n sectionId: z.uuid().default(() => uuidv7()),\n sectionType: z.literal(SectionType.variants).default(SectionType.variants),\n selector: z.enum(slice(variantSelectors, 0, 3)).default(VariantSelector.menu),\n variantMode: z.enum(variantModes).default(VariantMode.multiple),\n});\n\nexport type CABVariantsSection = z.infer<typeof CABVariantsSection>;\n\nexport type CABVariantsSectionProps = CABVariantsSection & SectionDetails;\n", "/**\n * Default localized labels for the offer card's add-to-order button states and the opt-in undo banner,\n * keyed by slot then locale (same 26 locales as `SWITCH_LABELS`). The converter overlays a defined v1\n * merchant value as the `en` entry (verbatim) and falls back to these for blank/absent values, so a\n * migrated widget keeps its copy while new/unset widgets localize. `addedToCartMessage` tokens are\n * camelCase (CAB default); legacy snake_case tokens in merchant overrides still resolve client-side.\n */\nexport const OFFER_LABELS = {\n addedToCart: {\n ar: '\u062A\u0645\u062A \u0627\u0644\u0625\u0636\u0627\u0641\u0629!',\n cs: 'P\u0159id\u00E1no!',\n da: 'Tilf\u00F8jet!',\n de: 'Hinzugef\u00FCgt!',\n en: 'Added!',\n es: '\u00A1A\u00F1adido!',\n fi: 'Lis\u00E4tty!',\n fr: 'Ajout\u00E9 !',\n ga: 'Curtha leis!',\n he: '\u05E0\u05D5\u05E1\u05E3!',\n hi: '\u091C\u094B\u0921\u093C\u093E \u0917\u092F\u093E!',\n id: 'Ditambahkan!',\n it: 'Aggiunto!',\n ja: '\u8FFD\u52A0\u3057\u307E\u3057\u305F\uFF01',\n ko: '\uCD94\uAC00\uB428!',\n nl: 'Toegevoegd!',\n no: 'Lagt til!',\n pl: 'Dodano!',\n pt: 'Adicionado!',\n ru: '\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E!',\n sv: 'Tillagd!',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E41\u0E25\u0E49\u0E27!',\n tr: 'Eklendi!',\n uk: '\u0414\u043E\u0434\u0430\u043D\u043E!',\n vi: '\u0110\u00E3 th\u00EAm!',\n zh: '\u5DF2\u6DFB\u52A0\uFF01',\n },\n addedToCartMessage: {\n ar: '\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 {{quantity}} {{productTitle}} \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629.',\n cs: '{{quantity}} {{productTitle}} p\u0159id\u00E1no do ko\u0161\u00EDku.',\n da: '{{quantity}} {{productTitle}} lagt i kurven.',\n de: '{{quantity}} {{productTitle}} zum Warenkorb hinzugef\u00FCgt.',\n en: '{{quantity}} {{productTitle}} successfully added to cart.',\n es: '{{quantity}} {{productTitle}} a\u00F1adido al carrito.',\n fi: '{{quantity}} {{productTitle}} lis\u00E4tty ostoskoriin.',\n fr: '{{quantity}} {{productTitle}} ajout\u00E9 au panier.',\n ga: 'Cuireadh {{quantity}} {{productTitle}} sa chairt.',\n he: '{{quantity}} {{productTitle}} \u05E0\u05D5\u05E1\u05E3 \u05DC\u05E2\u05D2\u05DC\u05D4.',\n hi: '{{quantity}} {{productTitle}} \u0915\u093E\u0930\u094D\u091F \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u093E \u0917\u092F\u093E\u0964',\n id: '{{quantity}} {{productTitle}} ditambahkan ke keranjang.',\n it: '{{quantity}} {{productTitle}} aggiunto al carrello.',\n ja: '{{quantity}} {{productTitle}}\u3092\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002',\n ko: '{{quantity}} {{productTitle}}\uC774(\uAC00) \uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uCD94\uAC00\uB418\uC5C8\uC2B5\uB2C8\uB2E4.',\n nl: '{{quantity}} {{productTitle}} toegevoegd aan winkelwagen.',\n no: '{{quantity}} {{productTitle}} lagt i handlekurven.',\n pl: '{{quantity}} {{productTitle}} dodano do koszyka.',\n pt: '{{quantity}} {{productTitle}} adicionado ao carrinho.',\n ru: '{{quantity}} {{productTitle}} \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443.',\n sv: '{{quantity}} {{productTitle}} har lagts i varukorgen.',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21 {{quantity}} {{productTitle}} \u0E25\u0E07\u0E15\u0E30\u0E01\u0E23\u0E49\u0E32\u0E41\u0E25\u0E49\u0E27',\n tr: '{{quantity}} {{productTitle}} sepete eklendi.',\n uk: '{{quantity}} {{productTitle}} \u0434\u043E\u0434\u0430\u043D\u043E \u0434\u043E \u043A\u043E\u0448\u0438\u043A\u0430.',\n vi: '\u0110\u00E3 th\u00EAm {{quantity}} {{productTitle}} v\u00E0o gi\u1ECF h\u00E0ng.',\n zh: '{{quantity}} {{productTitle}} \u5DF2\u52A0\u5165\u8D2D\u7269\u8F66\u3002',\n },\n addingToCart: {\n ar: '\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0636\u0627\u0641\u0629...',\n cs: 'P\u0159id\u00E1v\u00E1n\u00ED...',\n da: 'Tilf\u00F8jer...',\n de: 'Wird hinzugef\u00FCgt...',\n en: 'Adding...',\n es: 'A\u00F1adiendo...',\n fi: 'Lis\u00E4t\u00E4\u00E4n...',\n fr: 'Ajout en cours...',\n ga: '\u00C1 chur leis...',\n he: '\u05DE\u05D5\u05E1\u05D9\u05E3...',\n hi: '\u091C\u094B\u0921\u093C\u093E \u091C\u093E \u0930\u0939\u093E \u0939\u0948...',\n id: 'Menambahkan...',\n it: 'Aggiunta in corso...',\n ja: '\u8FFD\u52A0\u4E2D...',\n ko: '\uCD94\uAC00 \uC911...',\n nl: 'Toevoegen...',\n no: 'Legger til...',\n pl: 'Dodawanie...',\n pt: 'Adicionando...',\n ru: '\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0435...',\n sv: 'L\u00E4gger till...',\n th: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E40\u0E1E\u0E34\u0E48\u0E21...',\n tr: 'Ekleniyor...',\n uk: '\u0414\u043E\u0434\u0430\u0432\u0430\u043D\u043D\u044F...',\n vi: '\u0110ang th\u00EAm...',\n zh: '\u6B63\u5728\u6DFB\u52A0...',\n },\n addToCart: {\n ar: '\u0623\u0636\u0641 \u0625\u0644\u0649 \u0627\u0644\u0633\u0644\u0629',\n cs: 'P\u0159idat do ko\u0161\u00EDku',\n da: 'L\u00E6g i kurv',\n de: 'In den Warenkorb',\n en: 'Add to cart',\n es: 'A\u00F1adir al carrito',\n fi: 'Lis\u00E4\u00E4 ostoskoriin',\n fr: 'Ajouter au panier',\n ga: 'Cuir sa chairt',\n he: '\u05D4\u05D5\u05E1\u05E3 \u05DC\u05E2\u05D2\u05DC\u05D4',\n hi: '\u0915\u093E\u0930\u094D\u091F \u092E\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902',\n id: 'Tambahkan ke keranjang',\n it: 'Aggiungi al carrello',\n ja: '\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0',\n ko: '\uC7A5\uBC14\uAD6C\uB2C8\uC5D0 \uCD94\uAC00',\n nl: 'In winkelwagen',\n no: 'Legg i handlekurven',\n pl: 'Dodaj do koszyka',\n pt: 'Adicionar ao carrinho',\n ru: '\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u043A\u043E\u0440\u0437\u0438\u043D\u0443',\n sv: 'L\u00E4gg i varukorgen',\n th: '\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E25\u0E07\u0E15\u0E30\u0E01\u0E23\u0E49\u0E32',\n tr: 'Sepete ekle',\n uk: '\u0414\u043E\u0434\u0430\u0442\u0438 \u0432 \u043A\u043E\u0448\u0438\u043A',\n vi: 'Th\u00EAm v\u00E0o gi\u1ECF h\u00E0ng',\n zh: '\u52A0\u5165\u8D2D\u7269\u8F66',\n },\n redirectToCheckout: {\n ar: '\u0627\u0644\u062F\u0641\u0639',\n cs: 'Pokladna',\n da: 'Til kassen',\n de: 'Zur Kasse',\n en: 'Checkout',\n es: 'Finalizar compra',\n fi: 'Kassalle',\n fr: 'Paiement',\n ga: 'Seice\u00E1il amach',\n he: '\u05DC\u05EA\u05E9\u05DC\u05D5\u05DD',\n hi: '\u091A\u0947\u0915\u0906\u0909\u091F',\n id: 'Checkout',\n it: 'Cassa',\n ja: '\u30C1\u30A7\u30C3\u30AF\u30A2\u30A6\u30C8',\n ko: '\uACB0\uC81C\uD558\uAE30',\n nl: 'Afrekenen',\n no: 'Til kassen',\n pl: 'Do kasy',\n pt: 'Finalizar compra',\n ru: '\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u0437\u0430\u043A\u0430\u0437',\n sv: 'Till kassan',\n th: '\u0E0A\u0E33\u0E23\u0E30\u0E40\u0E07\u0E34\u0E19',\n tr: '\u00D6deme',\n uk: '\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u0438 \u0437\u0430\u043C\u043E\u0432\u043B\u0435\u043D\u043D\u044F',\n vi: 'Thanh to\u00E1n',\n zh: '\u7ED3\u8D26',\n },\n soldOut: {\n ar: '\u0646\u0641\u062F\u062A \u0627\u0644\u0643\u0645\u064A\u0629',\n cs: 'Vyprod\u00E1no',\n da: 'Udsolgt',\n de: 'Ausverkauft',\n en: 'Sold out',\n es: 'Agotado',\n fi: 'Loppuunmyyty',\n fr: '\u00C9puis\u00E9',\n ga: 'D\u00EDolta amach',\n he: '\u05D0\u05D6\u05DC \u05DE\u05D4\u05DE\u05DC\u05D0\u05D9',\n hi: '\u0938\u094D\u091F\u0949\u0915 \u0916\u093C\u0924\u094D\u092E',\n id: 'Habis terjual',\n it: 'Esaurito',\n ja: '\u58F2\u308A\u5207\u308C',\n ko: '\uD488\uC808',\n nl: 'Uitverkocht',\n no: 'Utsolgt',\n pl: 'Wyprzedane',\n pt: 'Esgotado',\n ru: '\u0420\u0430\u0441\u043F\u0440\u043E\u0434\u0430\u043D\u043E',\n sv: 'Sluts\u00E5ld',\n th: '\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E2B\u0E21\u0E14',\n tr: 'T\u00FCkendi',\n uk: '\u0420\u043E\u0437\u043F\u0440\u043E\u0434\u0430\u043D\u043E',\n vi: 'H\u1EBFt h\u00E0ng',\n zh: '\u5DF2\u552E\u7F44',\n },\n undo: {\n ar: '\u062A\u0631\u0627\u062C\u0639',\n cs: 'Zp\u011Bt',\n da: 'Fortryd',\n de: 'R\u00FCckg\u00E4ngig',\n en: 'Undo',\n es: 'Deshacer',\n fi: 'Kumoa',\n fr: 'Annuler',\n ga: 'Cealaigh',\n he: '\u05D1\u05D8\u05DC',\n hi: '\u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0915\u0930\u0947\u0902',\n id: 'Urungkan',\n it: 'Annulla',\n ja: '\u5143\u306B\u623B\u3059',\n ko: '\uC2E4\uD589 \uCDE8\uC18C',\n nl: 'Ongedaan maken',\n no: 'Angre',\n pl: 'Cofnij',\n pt: 'Desfazer',\n ru: '\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C',\n sv: '\u00C5ngra',\n th: '\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33',\n tr: 'Geri al',\n uk: '\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438',\n vi: 'Ho\u00E0n t\u00E1c',\n zh: '\u64A4\u9500',\n },\n} as const satisfies Record<string, Record<string, string>>;\n", "import { z } from 'zod';\n\nimport { EditorMode, editorModes } from './common';\nimport { targetAreas, WidgetType, widgetTypes } from './constants';\nimport { CABLayoutSection } from './layout';\nimport { UI_LABELS } from './uiLabels';\n\n/**\n * A per-slot `Record<locale, string>` defaulted from {@link UI_LABELS}: a missing slot gets the fallback,\n * and a present-but-empty slot (`{}`) is guarded back to the fallback too \u2014 otherwise the per-slot default\n * (which only fires for `undefined`) is bypassed and the client renders a blank aria label.\n */\nconst localized = (fallback: Record<string, string>) =>\n z\n .record(z.string(), z.string())\n .default(() => ({ ...fallback }))\n .transform((labels) => (Object.keys(labels).length > 0 ? labels : { ...fallback }));\n\n/**\n * Localized UI-chrome labels for the tree, defaulted from {@link UI_LABELS} at parse so every widget\n * carries them without converter or merchant work. Per-slot `Record<locale, string>`; the client indexes\n * the buyer language with `selectLanguage`. Lives on the root (not per section) because these strings \u2014\n * spinner/carousel/select-label/variant-state chrome \u2014 are shared across the whole tree.\n */\nexport const CABUILabels = z\n .object({\n currentPage: localized(UI_LABELS.currentPage),\n loadingOptions: localized(UI_LABELS.loadingOptions),\n nextPage: localized(UI_LABELS.nextPage),\n offerDialog: localized(UI_LABELS.offerDialog),\n page: localized(UI_LABELS.page),\n previousPage: localized(UI_LABELS.previousPage),\n selected: localized(UI_LABELS.selected),\n subscriptionOptions: localized(UI_LABELS.subscriptionOptions),\n updating: localized(UI_LABELS.updating),\n })\n .default(() => ({\n currentPage: { ...UI_LABELS.currentPage },\n loadingOptions: { ...UI_LABELS.loadingOptions },\n nextPage: { ...UI_LABELS.nextPage },\n offerDialog: { ...UI_LABELS.offerDialog },\n page: { ...UI_LABELS.page },\n previousPage: { ...UI_LABELS.previousPage },\n selected: { ...UI_LABELS.selected },\n subscriptionOptions: { ...UI_LABELS.subscriptionOptions },\n updating: { ...UI_LABELS.updating },\n }));\n\nexport type CABUILabels = Record<keyof typeof UI_LABELS, Record<string, string>>;\n\nconst TargetArea = z\n .object({\n fill: z.boolean().optional(),\n flip: z.enum(['both', 'horizontal', 'vertical']).optional(),\n icon: z.string(),\n label: z.string(),\n width: z.string(),\n })\n .default(targetAreas[EditorMode.checkoutExtension][1]);\n\nexport type TargetArea = {\n fill?: boolean;\n flip?: 'horizontal' | 'vertical' | 'both';\n icon: string;\n label: string;\n width: string;\n};\n\nexport const CABTracking = z\n .object({\n enableAttribution: z.boolean().default(true),\n enableSource: z.boolean().default(true),\n enableWidget: z.boolean().default(true),\n })\n .default({ enableAttribution: true, enableSource: true, enableWidget: true });\n\nexport type CABTracking = z.infer<typeof CABTracking>;\n\n/**\n * The A/B experiment this tree was selected for, attached server-side when the placeholder widget is an\n * experiment target (else absent). The client renders the chosen variant's tree as usual and emits the\n * `ab-test-viewed` / `ABN.TEST` analytics from these fields \u2014 replicating React's `useAnalyticsEvent`.\n */\nexport const CABExperiment = z.object({\n elementId: z.number(),\n experimentId: z.number(),\n experimentType: z.string(),\n selectedId: z.number(),\n});\n\nexport type CABExperiment = z.infer<typeof CABExperiment>;\n\nexport const CABRootSection = CABLayoutSection.extend({\n editorMode: z.enum(editorModes).default(EditorMode.checkoutExtension),\n experiment: CABExperiment.optional(),\n previewMode: z.boolean().default(false),\n storeId: z.number().nullable().default(null),\n targetArea: TargetArea.nullable(),\n tracking: CABTracking,\n type: z.enum(widgetTypes).default(WidgetType.ui_extension_content_block),\n uiLabels: CABUILabels,\n version: z.literal(2).default(2),\n widgetId: z.number().nullable().default(null),\n});\n\nexport type CABRootSection = CABLayoutSection & {\n editorMode: EditorMode;\n experiment?: CABExperiment;\n previewMode: boolean;\n storeId: number | null;\n targetArea: TargetArea | null;\n tracking: CABTracking;\n type: WidgetType;\n uiLabels: CABUILabels;\n version: number;\n widgetId: number | null;\n};\n", "/**\n * Default UI-chrome labels \u2014 the buyer-visible and screen-reader strings that have no per-section\n * merchant slot: the subscription-frequency select's group label, spinner busy text, carousel control\n * names + current-page semantics, the variant selected-state suffix, and the Monetize offer dialog\n * name. Keyed by slot then locale, shipped in the payload so the client never bundles a dictionary\n * (Peter, 2026-07-06: visible customer strings must be localized). English defaults only \u2014 unlike the\n * merchant-authored `SWITCH_LABELS`/`GIFT_LABELS`, these mirror strings legacy hardcoded in English, so\n * the fix is making them payload-sourced (localizable, zero bundle) rather than inventing 25 unreviewed\n * translations; a merchant or a later localization pass can populate other locales. `{{page}}` in the\n * pagination slots is interpolated per control at render.\n */\nexport const UI_LABELS = {\n currentPage: { en: 'Page {{page}}, current' },\n loadingOptions: { en: 'Loading subscription options' },\n nextPage: { en: 'Next' },\n offerDialog: { en: 'Offer' },\n page: { en: 'Page {{page}}' },\n previousPage: { en: 'Previous' },\n selected: { en: 'selected' },\n subscriptionOptions: { en: 'Subscription Options' },\n updating: { en: 'Updating' },\n} satisfies Record<string, Record<string, string>>;\n", "/**\n * Default localized labels for the switch-to-subscription button content, keyed by `buttonField` then locale.\n * The single source of truth shared by the admin editor and the read-time `convertLineItemEditorToV2` transform\n * so a widget renders identically whether migrated in admin or converted on the fly. `{{subscriptionDiscount}}`\n * is substituted per-plan at render \u2014 CAB tokens are camelCase by default; a legacy snake_case token in a v1\n * merchant override still resolves (the client camelCases unknown token keys against its camelCase variables).\n * `subscriptionOption` is the frequency-select option template (legacy\n * `SwitchToSubscriptionLanguageDefaults.subscription_option_label`); the client resolves `{{interval}}`\n * through `Intl.NumberFormat` unit style, so the noun arrives in the buyer's language, pluralized per count\n * from the runtime's CLDR data (English CLDR nouns are lowercase \u2014 an accepted divergence from legacy).\n */\nexport const SWITCH_LABELS = {\n subscriptionOption: {\n ar: '\u064A\u062A\u0645 \u0627\u0644\u062A\u0648\u0635\u064A\u0644 \u0643\u0644 {{frequency}} {{interval}}',\n cs: 'Doru\u010Den\u00ED ka\u017Ed\u00FDch {{frequency}} {{interval}}',\n da: 'Leveres hver {{frequency}} {{interval}}',\n de: 'Lieferung alle {{frequency}} {{interval}}',\n en: 'Delivers every {{frequency}} {{interval}}',\n es: 'Entrega cada {{frequency}} {{interval}}',\n fi: 'Toimitus {{frequency}} {{interval}} v\u00E4lein',\n fr: 'Livraison tous les {{frequency}} {{interval}}',\n ga: 'Seachadtar gach {{frequency}} {{interval}}',\n he: '\u05DE\u05E9\u05DC\u05D5\u05D7 \u05DB\u05DC {{frequency}} {{interval}}',\n hi: '\u0939\u0930 {{frequency}} {{interval}} \u092E\u0947\u0902 \u0921\u093F\u0932\u0940\u0935\u0930\u0940',\n id: 'Dikirim setiap {{frequency}} {{interval}}',\n it: 'Consegna ogni {{frequency}} {{interval}}',\n ja: '{{frequency}} {{interval}}\u3054\u3068\u306B\u304A\u5C4A\u3051',\n ko: '{{frequency}} {{interval}}\uB9C8\uB2E4 \uBC30\uC1A1',\n nl: 'Wordt elke {{frequency}} {{interval}} geleverd',\n no: 'Leveres hver {{frequency}} {{interval}}',\n pl: 'Dostawa co {{frequency}} {{interval}}',\n pt: 'Entrega a cada {{frequency}} {{interval}}',\n ru: '\u0414\u043E\u0441\u0442\u0430\u0432\u043A\u0430 \u043A\u0430\u0436\u0434\u044B\u0435 {{frequency}} {{interval}}',\n sv: 'Levereras var {{frequency}} {{interval}}',\n th: '\u0E08\u0E31\u0E14\u0E2A\u0E48\u0E07\u0E17\u0E38\u0E01 {{frequency}} {{interval}}',\n tr: 'Her {{frequency}} {{interval}} aral\u0131\u011F\u0131nda teslimat',\n uk: '\u0414\u043E\u0441\u0442\u0430\u0432\u043A\u0430 \u043A\u043E\u0436\u043D\u0456 {{frequency}} {{interval}}',\n vi: 'Giao h\u00E0ng m\u1ED7i {{frequency}} {{interval}}',\n zh: '\u6BCF {{frequency}} {{interval}} \u914D\u9001\u4E00\u6B21',\n },\n switchToOneTimePurchase: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0634\u0631\u0627\u0621 \u0644\u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629',\n cs: 'P\u0159epnout na jednor\u00E1zov\u00FD n\u00E1kup',\n da: 'Skift til engangsk\u00F8b',\n de: 'Zu einmaligem Kauf wechseln',\n en: 'Switch to One-time Purchase',\n es: 'Cambiar a compra \u00FAnica',\n fi: 'Vaihda kertaluonteiseen ostoon',\n fr: 'Passer \u00E0 un achat unique',\n ga: 'Athraigh go ceannach aonuaire',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05E8\u05DB\u05D9\u05E9\u05D4 \u05D7\u05D3-\u05E4\u05E2\u05DE\u05D9\u05EA',\n hi: '\u090F\u0915 \u092C\u093E\u0930 \u0915\u0940 \u0916\u0930\u0940\u0926 \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902',\n id: 'Beralih ke pembelian satu kali',\n it: 'Passa all\u2019acquisto una tantum',\n ja: '1\u56DE\u9650\u308A\u306E\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u308B',\n ko: '\uC77C\uD68C\uC131 \uAD6C\uB9E4\uB85C \uC804\uD658',\n nl: 'Overschakelen naar eenmalige aankoop',\n no: 'Bytt til engangskj\u00F8p',\n pl: 'Prze\u0142\u0105cz na jednorazowy zakup',\n pt: 'Mudar para compra \u00FAnica',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u0440\u0430\u0437\u043E\u0432\u0443\u044E \u043F\u043E\u043A\u0443\u043F\u043A\u0443',\n sv: 'Byt till eng\u00E5ngsk\u00F6p',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E0B\u0E37\u0E49\u0E2D\u0E04\u0E23\u0E31\u0E49\u0E07\u0E40\u0E14\u0E35\u0E22\u0E27',\n tr: 'Tek seferlik sat\u0131n almaya ge\u00E7',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043E\u0434\u043D\u043E\u0440\u0430\u0437\u043E\u0432\u0443 \u043F\u043E\u043A\u0443\u043F\u043A\u0443',\n vi: 'Chuy\u1EC3n sang mua m\u1ED9t l\u1EA7n',\n zh: '\u5207\u6362\u4E3A\u4E00\u6B21\u6027\u8D2D\u4E70',\n },\n switchToSubscriptionNoDiscount: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0634\u062A\u0631\u0627\u0643',\n cs: 'P\u0159epnout na p\u0159edplatn\u00E9',\n da: 'Skift til abonnement',\n de: 'Zu einem Abonnement wechseln',\n en: 'Switch to Subscription',\n es: 'Cambiar a suscripci\u00F3n',\n fi: 'Vaihda tilaukseen',\n fr: 'Passer \u00E0 un abonnement',\n ga: 'Athraigh go s\u00EDnti\u00FAs',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05DE\u05E0\u05D5\u05D9',\n hi: '\u0938\u0926\u0938\u094D\u092F\u0924\u093E \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902',\n id: 'Beralih ke langganan',\n it: 'Passa all\u2019abbonamento',\n ja: '\u5B9A\u671F\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u308B',\n ko: '\uAD6C\uB3C5\uC73C\uB85C \uC804\uD658',\n nl: 'Overschakelen naar abonnement',\n no: 'Bytt til abonnement',\n pl: 'Prze\u0142\u0105cz na subskrypcj\u0119',\n pt: 'Mudar para assinatura',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443',\n sv: 'Byt till prenumeration',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E21\u0E31\u0E04\u0E23\u0E2A\u0E21\u0E32\u0E0A\u0E34\u0E01',\n tr: 'Aboneli\u011Fe ge\u00E7',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0443',\n vi: 'Chuy\u1EC3n sang \u0111\u0103ng k\u00FD',\n zh: '\u5207\u6362\u4E3A\u8BA2\u9605',\n },\n switchToSubscriptionWithDiscount: {\n ar: '\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0634\u062A\u0631\u0627\u0643 \u0648\u062A\u0648\u0641\u064A\u0631 {{subscriptionDiscount}}%',\n cs: 'P\u0159epnout na p\u0159edplatn\u00E9 a u\u0161et\u0159it {{subscriptionDiscount}} %',\n da: 'Skift til abonnement og spar {{subscriptionDiscount}}%',\n de: 'Zu einem Abonnement wechseln und {{subscriptionDiscount}} % sparen',\n en: 'Switch to Subscription & Save {{subscriptionDiscount}}%',\n es: 'Cambiar a suscripci\u00F3n y ahorrar {{subscriptionDiscount}}%',\n fi: 'Vaihda tilaukseen ja s\u00E4\u00E4st\u00E4 {{subscriptionDiscount}} %',\n fr: 'Passer \u00E0 un abonnement et \u00E9conomiser {{subscriptionDiscount}} %',\n ga: 'Athraigh go s\u00EDnti\u00FAs agus s\u00E1bh\u00E1il {{subscriptionDiscount}}%',\n he: '\u05E2\u05D1\u05D5\u05E8 \u05DC\u05DE\u05E0\u05D5\u05D9 \u05D5\u05D7\u05E1\u05D5\u05DA {{subscriptionDiscount}}%',\n hi: '\u0938\u0926\u0938\u094D\u092F\u0924\u093E \u092A\u0930 \u0938\u094D\u0935\u093F\u091A \u0915\u0930\u0947\u0902 \u0914\u0930 {{subscriptionDiscount}}% \u092C\u091A\u093E\u090F\u0902',\n id: 'Beralih ke langganan dan hemat {{subscriptionDiscount}}%',\n it: 'Passa all\u2019abbonamento e risparmia {{subscriptionDiscount}}%',\n ja: '\u5B9A\u671F\u8CFC\u5165\u306B\u5207\u308A\u66FF\u3048\u3066{{subscriptionDiscount}}%\u304A\u5F97',\n ko: '\uAD6C\uB3C5\uC73C\uB85C \uC804\uD658\uD558\uACE0 {{subscriptionDiscount}}% \uC808\uC57D',\n nl: 'Overschakelen naar abonnement en {{subscriptionDiscount}}% besparen',\n no: 'Bytt til abonnement og spar {{subscriptionDiscount}}%',\n pl: 'Prze\u0142\u0105cz na subskrypcj\u0119 i oszcz\u0119d\u017A {{subscriptionDiscount}}%',\n pt: 'Mudar para assinatura e economizar {{subscriptionDiscount}}%',\n ru: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u0438 \u0441\u044D\u043A\u043E\u043D\u043E\u043C\u0438\u0442\u044C {{subscriptionDiscount}}%',\n sv: 'Byt till prenumeration och spara {{subscriptionDiscount}}%',\n th: '\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E40\u0E1B\u0E47\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E21\u0E31\u0E04\u0E23\u0E2A\u0E21\u0E32\u0E0A\u0E34\u0E01\u0E41\u0E25\u0E30\u0E1B\u0E23\u0E30\u0E2B\u0E22\u0E31\u0E14 {{subscriptionDiscount}}%',\n tr: 'Aboneli\u011Fe ge\u00E7 ve {{subscriptionDiscount}}% tasarruf et',\n uk: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438\u0441\u044F \u043D\u0430 \u043F\u0456\u0434\u043F\u0438\u0441\u043A\u0443 \u0442\u0430 \u0437\u0430\u043E\u0449\u0430\u0434\u0438\u0442\u0438 {{subscriptionDiscount}}%',\n vi: 'Chuy\u1EC3n sang \u0111\u0103ng k\u00FD v\u00E0 ti\u1EBFt ki\u1EC7m {{subscriptionDiscount}}%',\n zh: '\u5207\u6362\u4E3A\u8BA2\u9605\u5E76\u8282\u7701 {{subscriptionDiscount}}%',\n },\n} as const satisfies Record<string, Record<string, string>>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["z", "uuidv7", "z", "z", "uuidv7", "z", "z", "z", "isString", "uuidv7", "z", "z", "uuidv7", "isString", "z", "uuidv7", "z", "z", "uuidv7", "z", "z", "uuidv7", "uuidv7", "z", "uuidv7", "z", "z", "uuidv7", "z", "uuidv7", "z", "z", "z", "z", "uuidv7", "z", "z", "uuidv7", "uuidv7", "z", "z", "uuidv7", "z", "z", "uuidv7", "z", "z", "uuidv7", "uuidv7", "z", "z", "uuidv7", "uuidv7", "z", "z", "uuidv7", "z", "z", "uuidv7", "z", "z", "z"]
|
|
7
7
|
}
|