@returnflows/shop-overlay 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/widget/lib/types.ts","../src/widget/lib/utils/cart-provider-store.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/widget/lib/utils/storage.ts","../src/widget/lib/utils/logger.ts","../src/widget/lib/utils/helpers.ts","../src/widget/lib/utils/shopify.ts","../src/widget/lib/utils/cart.ts","../src/api/storefront-cart.ts","../src/api/state-bridge.ts","../src/api/widget-api.ts","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/dist/preact.module.js","../src/widget/lib/constants.ts","../src/widget/lib/utils/custom-events.ts","../src/widget/lib/utils/i18n.ts","../src/widget/lib/utils/api.ts","../src/widget/lib/utils/session.ts","../src/widget/lib/utils/initialization/dataset.ts","../src/widget/lib/utils/initialization/font.ts","../src/widget/lib/utils/initialization/styles.ts","../src/widget/lib/utils/initialization/index.ts","../node_modules/.pnpm/@formatjs+fast-memoize@3.1.0/node_modules/@formatjs/fast-memoize/index.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/formatters-CJcico0N.js","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/hooks/dist/hooks.module.js","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/compat/dist/compat.module.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/date-time.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/regex.generated.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/number.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/types.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/error.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/regex.generated.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/time-data.generated.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/date-time-pattern-generator.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/parser.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/index.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/error.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/formatters.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/core.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/format-message/index.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/initializeConfig-Brh10fyG.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/react.js","../src/widget/lib/hooks/common/use-value-state.ts","../src/widget/lib/hooks/common/use-dialog.ts","../src/widget/lib/hooks/common/use-once.ts","../src/widget/lib/context/widget-context.ts","../src/widget/lib/hooks/context/use-widget-context.ts","../src/widget/lib/utils/navigation.ts","../src/widget/lib/context/return-context.ts","../src/widget/lib/hooks/context/use-return-context.ts","../src/widget/components/ui/image.tsx","../src/widget/components/ui/skeleton/skeleton-container.tsx","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/widget/components/ui/avatar/avatar.tsx","../src/widget/components/ui/skeleton/skeleton.tsx","../src/widget/components/ui/avatar/avatar-stack-skeleton.tsx","../src/widget/components/ui/avatar/avatar-stack.tsx","../src/widget/components/return-avatar-stack.tsx","../src/widget/lib/context/dialog-context.ts","../src/widget/lib/hooks/common/use-is-mounted.ts","../src/widget/lib/context/root-context.ts","../src/widget/lib/hooks/context/use-root.ts","../src/widget/components/dialog/common/dialog-backdrop.tsx","../src/widget/components/dialog/common/dialog-modal.tsx","../src/widget/components/dialog/common/dialog-title.tsx","../src/widget/components/dialog/common/dialog-subtitle.tsx","../src/widget/components/icons/arrow-right.tsx","../src/widget/components/icons/x.tsx","../src/widget/components/icons/spinner.tsx","../src/widget/components/ui/button.tsx","../src/widget/components/dialog/common/dialog-button.tsx","../src/widget/components/dialog/common/index.ts","../src/widget/components/dialog/return-decision-dialog.tsx","../src/widget/components/handlers/dialog-handler.tsx","../src/widget/lib/context/toast-context.ts","../src/widget/lib/hooks/context/use-toast.ts","../src/widget/lib/hooks/feature/use-api-bridge.ts","../src/widget/lib/utils/errors.ts","../src/widget/lib/utils/interceptor/fetch.ts","../src/widget/lib/utils/interceptor/xhr.ts","../src/widget/lib/utils/interceptor/index.ts","../src/widget/lib/context/error-context.ts","../src/widget/lib/hooks/context/use-errors.ts","../src/widget/lib/hooks/feature/use-cart-actions.tsx","../src/widget/lib/hooks/feature/use-external-events.ts","../src/widget/lib/hooks/feature/use-fetch-interceptor.tsx","../src/widget/lib/hooks/feature/use-override-scroll-blocking.ts","../src/widget/lib/utils/dom.ts","../src/widget/lib/hooks/feature/use-cart-activator.ts","../src/widget/components/handlers/initialization-handler.tsx","../src/widget/components/is-mounted.tsx","../src/widget/lib/hooks/common/use-array.ts","../src/widget/components/providers/error-provider.tsx","../src/widget/lib/hooks/common/use-async-state.ts","../src/widget/components/providers/return-context-provider.tsx","../src/widget/lib/hooks/context/use-theme.ts","../src/widget/components/providers/root-provider.tsx","../src/widget/components/providers/widget-context-provider.tsx","../src/widget/components/toast/toast-provider.tsx","../src/widget/components/icons/banner/action.tsx","../src/widget/components/icons/banner/info.tsx","../src/widget/components/icons/giftcard.tsx","../src/widget/components/icons/warning.tsx","../src/widget/components/ui/banner/banner-skeleton.tsx","../src/widget/components/ui/banner/banner.tsx","../src/widget/components/drawer/adjustments/exchange-banner.tsx","../src/widget/lib/hooks/context/use-currency.ts","../src/widget/lib/hooks/context/use-calculation.ts","../src/widget/components/icons/star.tsx","../src/widget/components/ui/price.tsx","../src/widget/components/drawer/adjustments/table/adjustments-table-skeleton.tsx","../src/widget/components/drawer/adjustments/table/adjustments-table.tsx","../src/widget/components/drawer/adjustments/exchange-adjustments.tsx","../src/widget/components/drawer/annoucement-bar.tsx","../src/widget/components/drawer/error-screen.tsx","../src/widget/lib/hooks/context/use-navigation.ts","../src/widget/components/drawer/exchange-confirmation.tsx","../src/widget/components/icons/icon.tsx","../src/widget/components/drawer/exchange-header.tsx","../src/widget/components/icons/cart.tsx","../src/widget/components/drawer/exchange-placeholder.tsx","../src/widget/components/drawer/product/product-errors.tsx","../src/widget/lib/hooks/context/use-cart-items.ts","../src/widget/components/drawer/product/product.utils.ts","../src/widget/components/drawer/product/quantity-picker.tsx","../src/widget/components/drawer/product/product-actions.tsx","../src/widget/components/ui/link.tsx","../src/widget/components/drawer/product/product-attributes.tsx","../src/widget/components/drawer/product/product-image.tsx","../src/widget/components/drawer/product/product.tsx","../src/widget/components/drawer/product/product-list.tsx","../src/widget/components/icons/arrow-down.tsx","../src/widget/components/icons/chevron.tsx","../src/widget/components/ui/expander.tsx","../src/widget/components/drawer/return/return-product-badge.tsx","../src/widget/components/drawer/return/return-product-actions.tsx","../src/widget/components/drawer/return/return-product.tsx","../src/widget/components/drawer/return/return-product-skeleton.tsx","../src/widget/components/drawer/return/return-product-list.tsx","../src/widget/lib/hooks/common/use-y-scrollable.ts","../src/widget/components/drawer/scroll-indicator.tsx","../src/widget/components/drawer/exchange-drawer.tsx","../src/widget/components/icons/bag.tsx","../src/widget/components/toast/toast.tsx","../src/widget/components/toast/toast-container.tsx","../src/widget/components/icons/arrow-left.tsx","../src/widget/components/summary/back-button.tsx","../src/widget/components/summary/exchange-total-skeleton.tsx","../src/widget/components/summary/exchange-total.tsx","../src/widget/components/summary/exchange-summary.tsx","../src/widget/components/widget.tsx","../src/widget/components/widget-container.tsx"],"sourcesContent":["// This file is used to declare the global types for the Shopify object.\n// This is necessary because globals.d.ts is not automatically included in the build process.\n\ntype GlobalShopify = {\n\tshop: string;\n\tlocale: string;\n\tcurrency: {\n\t\tactive: string;\n\t\trate: string;\n\t};\n\tcountry: string;\n\ttheme: {\n\t\tname: string;\n\t\tid: number;\n\t\tschema_name: string;\n\t\tschema_version: string;\n\t\ttheme_store_id?: number;\n\t\trole: string;\n\t\thandle: string;\n\t\tstyle: {\n\t\t\tid?: string | null;\n\t\t\thandle?: string | null;\n\t\t};\n\t};\n\tcdnHost: string;\n\troutes: {\n\t\troot: string;\n\t};\n\tce_forms: {\n\t\tq: Array<unknown>;\n\t};\n\tcaptcha: unknown;\n\tPaymentButton: {\n\t\tisStorefrontPortableWallets: boolean;\n\t};\n\tanalytics: {\n\t\treplayQueue: Array<unknown>;\n\t\tinitialized: boolean;\n\t};\n\tmodules: boolean;\n\tfeatureAssets: {\n\t\t\"shop-js\": unknown;\n\t};\n};\n\ntype InterceptionProperties = {\n\trf_interception?: boolean;\n};\n\ndeclare global {\n\tinterface Window {\n\t\t__rf_original_fetch?: typeof fetch;\n\t\tfetch: typeof fetch & InterceptionProperties;\n\n\t\t__rf_original_xhr?: typeof XMLHttpRequest;\n\t\tXMLHttpRequest: typeof XMLHttpRequest & InterceptionProperties;\n\n\t\t__rf_original_search?: string;\n\t\tShopify: GlobalShopify;\n\t}\n}\n\nexport type ReturnAction = \"swap\" | \"exchange\" | \"giftcard\" | \"refund\";\n\nexport type ProductRule = {\n\tid: string;\n\ttype: \"NO_RETURN\" | \"NO_REFUND\" | \"EXTEND_PERIOD\" | \"NO_EXCHANGE_TO\";\n\textendedBy: number;\n\tmarketId: string;\n\tupdatedAt: string;\n\tcreatedAt: string;\n\tproducts: Array<{\n\t\ttitle: string;\n\t\timage: string;\n\t\tid: string;\n\t\truleId: string;\n\t\tshopifyProductId: string;\n\t\tcreatedAt: string;\n\t}>;\n};\n\nexport interface ShopOverlayData {\n\tid: string;\n\torderId: string;\n\torderName: string;\n\tinstantExchange: boolean;\n\tfreeExchangeLabel: boolean;\n\tproductsToExchange: Array<OrderProduct>;\n\ttotalPrice: number;\n\tproductRules: Array<ProductRule>;\n\treturnWindows: {\n\t\texchangeReturnWindow: boolean;\n\t\trefundReturnWindow: boolean;\n\t};\n}\n\nexport interface OrderProduct {\n\tid: string;\n\tshopifyLineId: string;\n\ttitle: string;\n\tvariantTitle: string;\n\timage: string;\n\thandle: string;\n\tprice: number;\n\tquantity: number;\n}\n\nexport interface ShopifyCartAddResponse {\n\tid: number;\n\tproperties: Record<string, unknown>;\n\tquantity: number;\n\tvariant_id: number;\n\tkey: string;\n\ttitle: string;\n\tproduct_title: string;\n\tvariant_title: string;\n\tprice: number;\n\toriginal_price: number;\n\tdiscounted_price: number;\n\tline_price: number;\n\toriginal_line_price: number;\n\tpresentment_price: number;\n\ttotal_discount: number;\n\tdiscounts: Array<unknown>;\n\tsku: string;\n\tgrams: number;\n\tvendor: string;\n\ttaxable: boolean;\n\tproduct_id: number;\n\tproduct_has_only_default_variant: boolean;\n\tgift_card: boolean;\n\tfinal_price: number;\n\tfinal_line_price: number;\n\turl: string;\n\tfeatured_image: {\n\t\talt: string;\n\t\taspect_ratio: number;\n\t\theight: number;\n\t\turl: string;\n\t\twidth: number;\n\t};\n\timage: string;\n\thandle: string;\n\trequires_shipping: boolean;\n\tproduct_type: string;\n\tuntranslated_product_title: string;\n\tproduct_description: string;\n\tuntranslated_variant_title: string;\n\tvariant_options: Array<string>;\n\toptions_with_values: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t}>;\n\tline_level_discount_allocations: Array<unknown>;\n\tline_level_total_discount: number;\n\tsections: {\n\t\t\"cart-notification-product\": string;\n\t\t\"cart-notification-button\": string;\n\t\t\"cart-icon-bubble\": string;\n\t};\n}\n\nexport interface ShopifyCart {\n\titems: Array<ShopifyCartItem>;\n\titem_count: number;\n\ttoken?: string;\n\tnote?: string;\n\tattributes?: Record<string, unknown>;\n\toriginal_total_price?: number;\n\ttotal_price?: number;\n\ttotal_discount?: number;\n\ttotal_weight?: number;\n\trequires_shipping?: boolean;\n\tcurrency?: string;\n\titems_subtotal_price?: number;\n\tcart_level_discount_applications?: Array<unknown>;\n\tdiscount_codes?: Array<unknown>;\n}\n\nexport interface ShopifyCartChangeResponse extends ShopifyCart {\n\titems_added: Array<ShopifyCartItem>;\n\titems_removed: Array<ShopifyCartItem>;\n}\n\nexport interface ShopifyCartItem {\n\tvariant_id: number;\n\tquantity: number;\n\ttitle: string;\n\tprice: number;\n\tproduct_id: number;\n\tproduct_title: string;\n\thandle: string;\n\timage: string;\n\tgrams: number;\n\tline_price: number;\n\tfinal_price: number;\n\tfinal_line_price: number;\n\n\t// Optional fields\n\tid?: number;\n\tline_id?: string;\n\tmerchandise_id?: string;\n\tproperties?: Record<string, unknown>;\n\tkey?: string;\n\tvariant_title?: string;\n\tquantity_rule?: {\n\t\tmin: number | null;\n\t\tmax: number | null;\n\t\tincrement: number | null;\n\t};\n\toriginal_price?: number;\n\tpresentment_price?: number;\n\tdiscounted_price?: number;\n\toriginal_line_price?: number;\n\ttotal_discount?: number;\n\tdiscounts?: Array<unknown>;\n\tsku?: string;\n\tvendor?: string;\n\ttaxable?: boolean;\n\tproduct_has_only_default_variant?: boolean;\n\tgift_card?: boolean;\n\turl?: string;\n\tfeatured_image?: {\n\t\taspect_ratio: number;\n\t\talt: string;\n\t\theight: number;\n\t\turl: string;\n\t\twidth: number;\n\t};\n\trequires_shipping?: boolean;\n\tproduct_type?: string;\n\tproduct_description?: string;\n\tvariant_options?: Array<string>;\n\toptions_with_values?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t}>;\n\tline_level_discount_allocations?: Array<unknown>;\n\tline_level_total_discount?: number;\n\thas_components?: boolean;\n}\n\nexport interface ShopifyErrorResponse {\n\tstatus: string;\n\tmessage: string;\n\tdescription: string;\n}\n\nexport interface CalculationExchangeProduct {\n\tvariantId: string | undefined; // Undefined if product is deleted\n\tproductId: string;\n\tproductTitle: string;\n\tprice: number;\n\tcompareAtPrice: number | null;\n\tcoverage: {\n\t\toriginalProductId: string;\n\t\toriginalVariantId: string;\n\t\tquantityCovered: number;\n\t\toriginalUnitPrice: number;\n\t\texchangeUnitPrice: number;\n\t\tcoveredAmount: number;\n\t} | null;\n}\n\nexport interface CalculationLineItem {\n\tid: string;\n\tlineItemId: string;\n\tvariantId: string;\n\tproductId: string;\n\tquantity: number;\n\tlineItemDistributionKey: number;\n\taction: \"NOT_DECIDED\" | \"REFUND\" | \"EXCHANGE\" | \"SWAP\" | \"GIFTCARD\";\n\toriginalPrice: number;\n\tprice: number;\n\tdiscountedPrice: number;\n\toriginalTotal: number;\n\ttotal: number;\n\tdiscountedTotal: number;\n\tmetafield: {\n\t\tnamespace: unknown;\n\t\tkey: unknown;\n\t\tvalue: unknown;\n\t};\n}\n\nexport interface CalculationResponse {\n\tpercentageOfReturn: number;\n\treturnLabelPrice: number;\n\tgiftCardBonusAmount: number;\n\trefundMethods: {\n\t\trefund: number;\n\t\tgiftcard: number;\n\t\texchange: number;\n\t};\n\tdistributionKeysByAction: {\n\t\tREFUND: number;\n\t\tEXCHANGE: number;\n\t\tGIFTCARD: number;\n\t};\n\tshipping: {\n\t\tamount: number;\n\t\tamountInCurrency: number;\n\t\toriginalOrderShipping: number;\n\t};\n\torderDiscounts: Array<unknown>;\n\tdiscountSummary: {\n\t\toriginalDiscountTotal: number;\n\t\tadjustedDiscountTotal: number;\n\t\tappliedToReturnSubtotal: number;\n\t\thasDiscounts: boolean;\n\t\thasAdjustedDiscounts: boolean;\n\t\tdiscountAppliedToExchange: boolean;\n\t\tdiscountAddedToReturnSubtotal: boolean;\n\t\tshippingRefundAppliedToReturnSubtotal: boolean;\n\t};\n\tlineItems: Array<CalculationLineItem>;\n\texchange: {\n\t\toriginalTotal: number;\n\t\tnewTotal: number;\n\t\tpriceDifference: number;\n\t\tisUpsell: boolean;\n\t\tadditionalCharge: number;\n\t\ttotalCoveredAmount: number;\n\t\tdiscountSummary: {\n\t\t\toriginalDiscountTotal: number;\n\t\t\tadjustedDiscountTotal: number;\n\t\t\tappliedToReturnSubtotal: number;\n\t\t\thasDiscounts: boolean;\n\t\t\thasAdjustedDiscounts: boolean;\n\t\t\tdiscountAppliedToExchange: boolean;\n\t\t\tdiscountAddedToReturnSubtotal: boolean;\n\t\t\tshippingRefundAppliedToReturnSubtotal: boolean;\n\t\t};\n\t\texchangeDetails: Array<CalculationExchangeProduct>;\n\t};\n\tcurrency: {\n\t\tlocalCurrency: string;\n\t\tshopCurrency: string;\n\t\texchangeRate: number;\n\t};\n\toptions: {\n\t\tcoverPriceChange: boolean;\n\t\torderDiscountMatch: boolean;\n\t\tproductDiscountMatch: boolean;\n\t\tgiftCardBonusPercentage: number;\n\t\trefundOriginalShippingType: string;\n\t};\n\treturnSubtotal: number;\n\torderSubtotal: number;\n\tpreferedLabelDeduction: string;\n\ttotal: number;\n\tcalculatedAt: string;\n\tdetailedBreakdown: {\n\t\toriginalOrder: {\n\t\t\tsubtotal: number;\n\t\t\tshipping: number;\n\t\t\tdiscounts: Array<unknown>;\n\t\t\ttotal: number;\n\t\t};\n\t\treturn: {\n\t\t\tsubtotal: {\n\t\t\t\titems: number;\n\t\t\t\treturnLabelPrice: number;\n\t\t\t\tshippingRefund: number;\n\t\t\t\tdiscounts: Array<unknown>;\n\t\t\t\ttotal: number;\n\t\t\t};\n\t\t\trefundMethods: {\n\t\t\t\trefund: {\n\t\t\t\t\tamount: number;\n\t\t\t\t\tdescription: string;\n\t\t\t\t};\n\t\t\t\tgiftcard: {\n\t\t\t\t\tbaseAmount: number;\n\t\t\t\t\tbonusAmount: number;\n\t\t\t\t\tbonusPercentage: number;\n\t\t\t\t\ttotalAmount: number;\n\t\t\t\t};\n\t\t\t\texchange: {\n\t\t\t\t\tamount: number;\n\t\t\t\t\tpriceDifference: number;\n\t\t\t\t\tfinalAmount: number;\n\t\t\t\t};\n\t\t\t};\n\t\t\ttotal: number;\n\t\t};\n\t\tpreferedLabelDeduction: string;\n\t\tcurrency: {\n\t\t\tlocalCurrency: string;\n\t\t\tshopCurrency: string;\n\t\t\texchangeRate: number;\n\t\t};\n\t};\n}\n\nexport enum WidgetViewState {\n\tCollapsed = \"COLLAPSED\",\n\tOpen = \"OPEN\"\n}\n\nexport enum ReturnViewState {\n\tCollapsed = \"COLLAPSED\",\n\tOpen = \"OPEN\"\n}\n","import type { CartInput, CartProvider, ShopifyCart } from \"../../../api/types\";\n\ninterface ReturnflowsGlobal {\n\t_cartProvider?: CartProvider | null;\n}\n\nexport function getInternalCartProvider<\n\tT extends CartInput = ShopifyCart\n>(): CartProvider<T> | null {\n\tif (typeof window === \"undefined\") {\n\t\treturn null;\n\t}\n\treturn ((window as unknown as { Returnflows?: ReturnflowsGlobal }).Returnflows\n\t\t?._cartProvider ?? null) as CartProvider<T> | null;\n}\n\nexport function hasCartProvider(): boolean {\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\treturn (\n\t\t(window as unknown as { Returnflows?: ReturnflowsGlobal }).Returnflows\n\t\t\t?._cartProvider != null\n\t);\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","function hoursToMilliseconds(hours: number): number {\n\treturn hours * 60 * 60 * 1000;\n}\nfunction minutesToMilliseconds(minutes: number): number {\n\treturn minutes * 60 * 1000;\n}\n\nexport type StorageType = \"sessionStorage\" | \"localStorage\";\n\ninterface StorageData<T = unknown> {\n\tvalue: T;\n\texpiration?: number; // Timestamp in milliseconds\n}\n\nexport interface StorageKey {\n\tkey: string;\n\ttype: StorageType;\n\texpiration?: number; // Expiration time in milliseconds\n}\n\n// Storage keys and expiration times\nexport const STORAGE_SESSION_KEY = {\n\tkey: \"session_id\",\n\ttype: \"sessionStorage\",\n\texpiration: hoursToMilliseconds(1)\n} satisfies StorageKey;\n\nexport const STORAGE_OVERLAY_DIALOG_EXPIRY_KEY = {\n\tkey: \"dialog_expiration\",\n\ttype: \"sessionStorage\"\n} satisfies StorageKey;\n\nexport const STORAGE_OVERLAY_DIALOG_EXPIRATION = minutesToMilliseconds(10);\n\nexport const STORAGE_CART_KEY = {\n\tkey: \"cart\",\n\ttype: \"sessionStorage\",\n\texpiration: minutesToMilliseconds(5) // 5 minutes\n} satisfies StorageKey;\n\nexport const STORAGE_DEBUG_MODE_KEY = {\n\tkey: \"debug_mode\",\n\ttype: \"sessionStorage\"\n} satisfies StorageKey;\n\nexport const STORAGE_PREFIX = \"rflows_\";\n\nfunction getStorageKey(key: string): string {\n\treturn `${STORAGE_PREFIX}${key}`;\n}\n\nexport default {\n\tset: <T>({ key, type, expiration }: StorageKey, value: T) => {\n\t\tconst data: StorageData = {\n\t\t\tvalue,\n\t\t\texpiration: expiration ? Date.now() + expiration : undefined\n\t\t};\n\t\tconst storage = getStorage(type);\n\t\tstorage.setItem(getStorageKey(key), JSON.stringify(data));\n\t},\n\n\tget: <T>({ key, type }: StorageKey): T | null => {\n\t\tconst storage = getStorage(type);\n\n\t\tconst storageItem = storage.getItem(getStorageKey(key));\n\n\t\tif (!storageItem) return null;\n\n\t\ttry {\n\t\t\tconst parsedData = JSON.parse(storageItem) as StorageData<T>;\n\t\t\tif (parsedData.expiration && Date.now() > parsedData.expiration) {\n\t\t\t\t// Expired\n\t\t\t\tstorage.removeItem(getStorageKey(key));\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn parsedData.value;\n\t\t} catch (_) {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\thas: ({ key, type }: StorageKey): boolean => {\n\t\treturn Boolean(getStorage(type).getItem(getStorageKey(key)));\n\t},\n\n\tremove: ({ key, type }: StorageKey) => {\n\t\tgetStorage(type).removeItem(getStorageKey(key));\n\t}\n};\n\nfunction getStorage(type: StorageType): Storage {\n\tif (type === \"sessionStorage\") {\n\t\treturn sessionStorage;\n\t} else if (type === \"localStorage\") {\n\t\treturn localStorage;\n\t} else {\n\t\tthrow new Error(`Invalid storage type: ${type}`);\n\t}\n}\n","/* eslint-disable no-restricted-syntax */\nimport storage, { STORAGE_DEBUG_MODE_KEY } from \"./storage\";\n\nconst LOG_PREFIX = \"[RF]\";\n\nenum LogLevel {\n\tDEBUG = 0,\n\tINFO = 1,\n\tWARN = 2,\n\tERROR = 3\n}\n\nclass Logger {\n\tprivate static instance: Logger;\n\n\tprivate constructor() {}\n\n\tpublic static getInstance(): Logger {\n\t\tif (!Logger.instance) {\n\t\t\tLogger.instance = new Logger();\n\t\t}\n\t\treturn Logger.instance;\n\t}\n\n\tprivate checkDebugMode(): boolean {\n\t\tconst storedDebugModeValue = storage.get<boolean>(STORAGE_DEBUG_MODE_KEY);\n\t\treturn Boolean(storedDebugModeValue);\n\t}\n\n\tprivate log(level: LogLevel, message: string, ...args: unknown[]): void {\n\t\tif (!this.checkDebugMode()) {\n\t\t\treturn; // Skip logs if the script data attribute is not set\n\t\t}\n\t\tswitch (level) {\n\t\t\tcase LogLevel.DEBUG:\n\t\t\t\tconsole.debug(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.INFO:\n\t\t\t\tconsole.info(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.WARN:\n\t\t\t\tconsole.warn(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.ERROR:\n\t\t\t\tconsole.error(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.DEBUG, message, ...args);\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.INFO, message, ...args);\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.WARN, message, ...args);\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.ERROR, message, ...args);\n\t}\n}\n\nexport const logger = Logger.getInstance();\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { logger } from \"./logger\";\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function assert(variable: unknown, message: string): asserts variable {\n\tif (isNil(variable) || variable === \"\") {\n\t\tthrow new Error(message);\n\t}\n}\n\nexport async function wait(ms: number) {\n\treturn new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function isNil(value: unknown): value is null | undefined {\n\treturn value === null || value === undefined;\n}\n\nexport function ensureHttpUrl(url: string, secure: boolean = true): string {\n\tif (!url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n\t\tif (secure) {\n\t\t\treturn `https://${url}`;\n\t\t}\n\t\treturn `http://${url}`;\n\t}\n\treturn url;\n}\n\nexport function isNumber(value: unknown): value is number {\n\tif (typeof value === \"number\") {\n\t\treturn true;\n\t}\n\treturn !isNaN(Number(value)) && isFinite(Number(value));\n}\n\nexport function hexToHsl(hex: string): string {\n\t// Remove the hash if present\n\thex = hex.replace(\"#\", \"\");\n\n\t// Parse hex values\n\tconst r = parseInt(hex.substring(0, 2), 16) / 255;\n\tconst g = parseInt(hex.substring(2, 4), 16) / 255;\n\tconst b = parseInt(hex.substring(4, 6), 16) / 255;\n\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst diff = max - min;\n\n\t// Calculate lightness\n\tconst l = (max + min) / 2;\n\n\tlet h = 0;\n\tlet s = 0;\n\n\tif (diff !== 0) {\n\t\t// Calculate saturation\n\t\ts = l > 0.5 ? diff / (2 - max - min) : diff / (max + min);\n\n\t\t// Calculate hue\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = ((g - b) / diff + (g < b ? 6 : 0)) / 6;\n\t\t\t\tbreak;\n\t\t\tcase g:\n\t\t\t\th = ((b - r) / diff + 2) / 6;\n\t\t\t\tbreak;\n\t\t\tcase b:\n\t\t\t\th = ((r - g) / diff + 4) / 6;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Convert to degrees and percentages\n\tconst hDeg = Math.round(h * 360);\n\tconst sPercent = Math.round(s * 100);\n\tconst lPercent = Math.round(l * 100);\n\n\treturn `${hDeg}, ${sPercent}%, ${lPercent}%`;\n}\n\nexport function isOnCartPage(): boolean {\n\tconst path = window.location.pathname;\n\treturn path.includes(\"/cart\") || path.includes(\"/checkout\");\n}\n\ninterface WrapperOptions {\n\tshouldThrow?: boolean;\n\tlogError?: boolean;\n\tfallbackValue?: unknown;\n}\n\nexport function attempt<T, TThrow extends boolean = false>(\n\tfn: () => T,\n\terrorMessage: string,\n\toptions: WrapperOptions & { shouldThrow?: TThrow } = {}\n): TThrow extends true ? T : T | undefined {\n\tconst {\n\t\tshouldThrow = false as TThrow,\n\t\tlogError = true,\n\t\tfallbackValue\n\t} = options;\n\n\ttry {\n\t\treturn fn() as TThrow extends true ? T : T | undefined;\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\n\t\tif (logError) {\n\t\t\tlogger.error(`${errorMessage} (${error.message})`);\n\t\t}\n\n\t\tif (shouldThrow) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn ((fallbackValue as T) ?? undefined) as TThrow extends true\n\t\t\t? T\n\t\t\t: T | undefined;\n\t}\n}\n\nexport function parseToNumber(\n\tvalue: string | number | null | undefined,\n\tfallback = 0\n): number {\n\tif (isNil(value) || value === \"\") return fallback;\n\tif (typeof value !== \"number\") value = parseFloat(value);\n\tif (isNaN(value) || value.toString() === \"Infinity\") return fallback;\n\treturn value;\n}\n\n// Conversion functions for time units to milliseconds\nexport function daysToMilliseconds(days: number): number {\n\treturn days * 24 * 60 * 60 * 1000;\n}\nexport function secondsToMilliseconds(seconds: number): number {\n\treturn seconds * 1000;\n}\n\nexport function setNestedValue<T>(\n\tobj: Record<string, unknown>,\n\tpath: string,\n\tvalue: T\n): T {\n\tconst keys = path.split(\".\");\n\tconst lastKey = keys.pop();\n\n\tif (!lastKey) {\n\t\tthrow new Error(\"Invalid path\");\n\t}\n\n\tconst target = keys.reduce(\n\t\t(current: unknown, key: string): Record<string, unknown> => {\n\t\t\tif (current && typeof current === \"object\" && key in current) {\n\t\t\t\tconst next = (current as Record<string, unknown>)[key];\n\t\t\t\tif (next && typeof next === \"object\") {\n\t\t\t\t\treturn next as Record<string, unknown>;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error(`Cannot access property '${key}' on path '${path}'`);\n\t\t},\n\t\tobj\n\t);\n\n\ttarget[lastKey] = value;\n\treturn value;\n}\n\nexport function getResolvedSearchParams(): URLSearchParams {\n\tlet searchString = window.__rf_original_search;\n\tsearchString ||= window.location.search;\n\treturn new URLSearchParams(searchString);\n}\n\nexport function resolveSetStateAction<T>(\n\taction: React.SetStateAction<T>,\n\tcurrentState: T\n): T {\n\tif (typeof action === \"function\") {\n\t\t// TypeScript needs a type assertion here because SetStateAction<T>\n\t\t// could be T | ((prevState: T) => T), and TS can't narrow the function type automatically\n\t\treturn (action as (prevState: T) => T)(currentState);\n\t}\n\treturn action;\n}\n","import { ShopifyErrorResponse } from \"../types\";\nimport { assert, ensureHttpUrl, isNil } from \"./helpers\";\nimport storage, {\n\tSTORAGE_CART_KEY,\n\tSTORAGE_DEBUG_MODE_KEY,\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY,\n\tSTORAGE_SESSION_KEY\n} from \"./storage\";\n\nexport function constructShopifyUrl(\n\tendpoint: string,\n\tqueryParams?: Record<string, string>\n) {\n\tconst root = ensureHttpUrl(window.location.host);\n\n\tassert(root, \"Shopify root URL is not defined\");\n\n\tconst searchParams = new URLSearchParams();\n\n\tif (queryParams) {\n\t\tObject.entries(queryParams).forEach(([key, value]) => {\n\t\t\tsearchParams.set(key, value);\n\t\t});\n\t}\n\n\tlet url = root;\n\n\tif (!endpoint.startsWith(\"/\")) {\n\t\turl += \"/\";\n\t}\n\turl += endpoint;\n\n\tif (searchParams.toString()) {\n\t\turl += `?${searchParams.toString()}`;\n\t}\n\n\treturn url;\n}\n\nexport async function handleShopifyFetch<T = unknown>(\n\tendpoint: string,\n\tinit?: RequestInit\n): Promise<T> {\n\tconst fetchUrl = constructShopifyUrl(endpoint, {\n\t\trf: \"true\"\n\t});\n\tconst response = await fetch(fetchUrl, {\n\t\tmethod: init?.method ?? (init?.body ? \"POST\" : \"GET\"),\n\t\tcache: \"no-cache\",\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\"\n\t\t},\n\t\t...init\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorResponse = (await response.json()) as ShopifyErrorResponse;\n\t\tif (errorResponse && \"message\" in errorResponse) {\n\t\t\tthrow errorResponse;\n\t\t}\n\t\tthrow new Error(\"Unknown error\");\n\t}\n\n\tconst json = (await response.json()) as T;\n\treturn json;\n}\n\nexport function clearSession() {\n\tstorage.remove(STORAGE_CART_KEY);\n\tstorage.remove(STORAGE_SESSION_KEY);\n\tstorage.remove(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\tstorage.remove(STORAGE_DEBUG_MODE_KEY);\n}\n\nexport function normalizeShopifyPrice(\n\tvalue: number | null | undefined\n): number {\n\tif (isNil(value)) {\n\t\treturn 0;\n\t}\n\treturn value / 100;\n}\n\nexport function formatShopifyId(id: number | string, type: string): string {\n\tif (typeof id === \"string\" && id.startsWith(\"gid://\")) return id;\n\treturn `gid://shopify/${type}/${id}`;\n}\n\nexport function stripShopifyId(id: string | number | null | undefined): string {\n\tif (!id) return \"\";\n\n\tconst segment = id.toString().split(\"/\").pop();\n\tif (!segment) return \"\";\n\n\treturn segment;\n}\n","import { ProductRule, ShopifyCart, ShopifyCartChangeResponse } from \"../types\";\nimport {\n\tgetInternalCartProvider,\n\thasCartProvider\n} from \"./cart-provider-store\";\nimport { isNil, parseToNumber } from \"./helpers\";\nimport { logger } from \"./logger\";\nimport { formatShopifyId, handleShopifyFetch, stripShopifyId } from \"./shopify\";\nimport storage, { STORAGE_CART_KEY } from \"./storage\";\n\nfunction toMerchandiseGid(variantId: number | string): string {\n\treturn formatShopifyId(variantId, \"ProductVariant\");\n}\n\nexport function getRuleProductIds(\n\trules: ProductRule[],\n\ttype: ProductRule[\"type\"]\n) {\n\treturn rules\n\t\t.filter(rule => rule.type === type)\n\t\t.flatMap(rule =>\n\t\t\trule.products.map(product =>\n\t\t\t\tNumber(stripShopifyId(product.shopifyProductId))\n\t\t\t)\n\t\t);\n}\n\nexport interface NormalizeCartResult<T extends ShopifyCart> {\n\tcart: T;\n\texcludedItems: T[\"items\"];\n\tbundleItems: T[\"items\"];\n}\n\n// Normalizes the cart by merging items with the same variant_id\nexport function normalizeCart<T extends ShopifyCart>(\n\tcart: T,\n\trules: ProductRule[]\n): NormalizeCartResult<T> {\n\tconst noExchangeTo = getRuleProductIds(rules, \"NO_EXCHANGE_TO\");\n\n\tconst excludedItems: T[\"items\"] = [];\n\tconst bundleItems: T[\"items\"] = [];\n\n\tconst { items, itemCount } = (cart.items || []).reduce<{\n\t\titems: ShopifyCart[\"items\"];\n\t\titemCount: number;\n\t}>(\n\t\t(acc, item) => {\n\t\t\t// Blocked product id exclusion\n\t\t\tif (noExchangeTo.includes(item.product_id)) {\n\t\t\t\texcludedItems.push(item);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// Bundle product exclusion\n\t\t\tif (item.has_components) {\n\t\t\t\tbundleItems.push(item);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// Find existing item in the accumulated items\n\t\t\tconst existingItem = acc.items.find(\n\t\t\t\ti => i.variant_id === item.variant_id\n\t\t\t);\n\n\t\t\tacc.itemCount += item.quantity || 0;\n\n\t\t\tif (existingItem) {\n\t\t\t\t// If the item already exists, merge the quantities\n\t\t\t\texistingItem.quantity += item.quantity;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// If the item does not exist, add it to the list\n\t\t\tacc.items.push({ ...item });\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\titems: [],\n\t\t\titemCount: 0\n\t\t}\n\t);\n\n\tconst normalizedCart: T = {\n\t\t...cart,\n\t\titems,\n\t\titem_count: itemCount\n\t};\n\n\treturn {\n\t\tcart: normalizedCart,\n\t\texcludedItems,\n\t\tbundleItems\n\t};\n}\n\n// Compares two Shopify carts to see if they are the same\nexport function compareCarts({\n\tcart1,\n\tcart2,\n\trules\n}: {\n\tcart1: ShopifyCart;\n\tcart2: ShopifyCart;\n\trules: ProductRule[];\n}): boolean {\n\tconst { cart: normalizedCart1 } = normalizeCart(cart1, rules);\n\tconst { cart: normalizedCart2 } = normalizeCart(cart2, rules);\n\n\tconst items1 = normalizedCart1.items || [];\n\tconst items2 = normalizedCart2.items || [];\n\n\tif (items1.length !== items2.length) {\n\t\treturn false;\n\t}\n\n\tconst quantityMap1 = new Map(\n\t\titems1.map(item => [item.variant_id, item.quantity])\n\t);\n\n\tfor (const item of items2) {\n\t\tif (quantityMap1.get(item.variant_id) !== item.quantity) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport async function getCart(\n\tpreferStorage: boolean = true\n): Promise<ShopifyCart> {\n\tlet cart: ShopifyCart | undefined = undefined;\n\tlet usedStore: boolean = false;\n\tlet usedProvider: boolean = false;\n\n\tif (preferStorage) {\n\t\tconst storedCart = getCartStorage();\n\t\tif (storedCart) {\n\t\t\tusedStore = true;\n\t\t\tcart = storedCart;\n\t\t}\n\t}\n\n\tif (!cart) {\n\t\t// Use cart provider if configured (for headless/external setups)\n\t\tif (hasCartProvider()) {\n\t\t\tconst provider = getInternalCartProvider();\n\t\t\tif (provider) {\n\t\t\t\tlogger.info(\"[CartProvider] Using provider.getCart()\");\n\t\t\t\tcart = await provider.getCart();\n\t\t\t\tusedProvider = true;\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to direct Shopify fetch if no provider\n\t\tif (!cart) {\n\t\t\tlogger.info(\"[CartProvider] No provider, falling back to /cart.js\");\n\t\t\tcart = await handleShopifyFetch<ShopifyCart>(\"/cart.js\");\n\t\t}\n\n\t\tupdateCartStorage(cart);\n\t}\n\n\tconst source = usedStore ? \"Storage\" : usedProvider ? \"Provider\" : \"API\";\n\tlogger.info(`Fetched cart (${source})`, cart);\n\n\treturn cart;\n}\n\nexport async function clearCart(): Promise<ShopifyCart> {\n\t// Use cart provider if configured and has clearCart method\n\tif (hasCartProvider()) {\n\t\tconst provider = getInternalCartProvider();\n\t\tif (provider?.clearCart) {\n\t\t\tlogger.info(\"[CartProvider] Using provider.clearCart()\");\n\t\t\tconst cart = await provider.clearCart();\n\t\t\tupdateCartStorage(cart);\n\t\t\treturn cart;\n\t\t}\n\t\tlogger.info(\n\t\t\t\"[CartProvider] Provider exists but clearCart not implemented, falling back to /cart/clear.js\"\n\t\t);\n\t}\n\n\t// Fall back to direct Shopify fetch\n\tconst cart = await handleShopifyFetch<ShopifyCart>(\"/cart/clear.js\", {\n\t\tmethod: \"POST\"\n\t});\n\tupdateCartStorage(cart);\n\treturn cart;\n}\n\nexport async function setCartItems(\n\titems: Array<{\n\t\tid: number;\n\t\tquantity: number;\n\t}>\n): Promise<ShopifyCart> {\n\tconst clearedCart = await clearCart();\n\n\tif (items.length === 0) {\n\t\treturn clearedCart;\n\t}\n\n\t// Use cart provider if configured and has addItems method\n\tif (hasCartProvider()) {\n\t\tconst provider = getInternalCartProvider();\n\t\tif (provider?.addItems) {\n\t\t\tconst cartItems = items.map(item => {\n\t\t\t\tconst merchandiseId = toMerchandiseGid(item.id);\n\t\t\t\treturn {\n\t\t\t\t\tmerchandiseId,\n\t\t\t\t\tquantity: item.quantity\n\t\t\t\t};\n\t\t\t});\n\t\t\tlogger.info(\n\t\t\t\t\"[CartProvider] Using provider.addItems() (setCartItems)\",\n\t\t\t\tcartItems\n\t\t\t);\n\t\t\tconst cart = await provider.addItems(cartItems);\n\t\t\tupdateCartStorage(cart);\n\t\t\treturn cart;\n\t\t}\n\t\tlogger.info(\n\t\t\t\"[CartProvider] Provider exists but addItems not implemented, falling back to /cart/add.js\"\n\t\t);\n\t}\n\n\t// Fall back to direct Shopify fetch\n\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/add.js\", {\n\t\tmethod: \"POST\",\n\t\tbody: JSON.stringify({\n\t\t\titems\n\t\t})\n\t});\n\n\treturn getCart(false);\n}\n\nexport async function updateCartItemQuantity({\n\tvariantId,\n\tquantity,\n\tisRetry = false\n}: {\n\tvariantId: number;\n\tquantity: number;\n\tisRetry?: boolean;\n}): Promise<ShopifyCart> {\n\ttry {\n\t\tif (isNil(quantity)) {\n\t\t\tthrow new Error(\"Quantity cannot be null or undefined\");\n\t\t}\n\n\t\t// Use cart provider if configured\n\t\tif (hasCartProvider()) {\n\t\t\tconst provider = getInternalCartProvider();\n\t\t\tif (provider) {\n\t\t\t\t// Get current cart (storage is synced by wrapped provider)\n\t\t\t\t// On retry, bypass storage to get fresh cart data\n\t\t\t\tconst currentCart = await getCart(!isRetry);\n\t\t\t\tconst item = currentCart.items.find(i => i.variant_id === variantId);\n\n\t\t\t\tif (!item) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`[CartProvider] Item with variantId ${variantId} not found in cart`\n\t\t\t\t\t);\n\t\t\t\t\t// If first attempt and item not found, retry with fresh cart\n\t\t\t\t\tif (!isRetry) {\n\t\t\t\t\t\tlogger.info(\"[CartProvider] Retrying with fresh cart data...\");\n\t\t\t\t\t\treturn updateCartItemQuantity({\n\t\t\t\t\t\t\tvariantId,\n\t\t\t\t\t\t\tquantity,\n\t\t\t\t\t\t\tisRetry: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t\treturn getCart(false);\n\t\t\t\t}\n\n\t\t\t\tconst lineId = item.line_id;\n\t\t\t\tconst merchandiseId =\n\t\t\t\t\titem.merchandise_id || toMerchandiseGid(variantId);\n\n\t\t\t\tif (!lineId) {\n\t\t\t\t\tlogger.warn(\"[CartProvider] No line_id on cart item\");\n\t\t\t\t\t// If first attempt and no line_id, retry with fresh cart\n\t\t\t\t\tif (!isRetry) {\n\t\t\t\t\t\tlogger.info(\"[CartProvider] Retrying with fresh cart data...\");\n\t\t\t\t\t\treturn updateCartItemQuantity({\n\t\t\t\t\t\t\tvariantId,\n\t\t\t\t\t\t\tquantity,\n\t\t\t\t\t\t\tisRetry: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\"[CartProvider] Still no line_id after retry, falling back to /cart/change.js\"\n\t\t\t\t\t);\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t\treturn getCart(false);\n\t\t\t\t}\n\n\t\t\t\tif (quantity === 0 && provider.removeItems) {\n\t\t\t\t\tlogger.info(`[CartProvider] Using provider.removeItems([${lineId}])`);\n\t\t\t\t\tawait provider.removeItems([lineId]);\n\t\t\t\t} else if (provider.updateItems) {\n\t\t\t\t\tconst updateItem = { id: lineId, merchandiseId, quantity };\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\"[CartProvider] Using provider.updateItems()\",\n\t\t\t\t\t\tupdateItem\n\t\t\t\t\t);\n\t\t\t\t\tawait provider.updateItems([updateItem]);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\"[CartProvider] Provider exists but removeItems/updateItems not implemented, falling back to /cart/change.js\"\n\t\t\t\t\t);\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t}\n\n\t\t\t\t// Always fetch fresh cart to get complete data (e.g. has_components)\n\t\t\t\treturn getCart(false);\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to direct Shopify fetch\n\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\treturn getCart(false);\n\t} catch (err) {\n\t\tconst error = err as Error | { status: number; message: string };\n\t\tlogger.error(\"Error updating cart item quantity:\", error);\n\t\tif (\"status\" in error) {\n\t\t\tthrow new Error(error.status.toString());\n\t\t}\n\t\tthrow new Error(error.message);\n\t}\n}\n\n/**\n * Internal: Update cart item quantity via direct Shopify API calls.\n * Used when no cart provider is configured.\n */\nasync function updateCartItemQuantityViaShopify(\n\tvariantId: number,\n\tquantity: number\n): Promise<void> {\n\tif (quantity === 0) {\n\t\t// If quantity is 0, remove the item from the cart\n\t\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/change.js\", {\n\t\t\tbody: JSON.stringify({\n\t\t\t\tid: String(variantId), // Shopify expects variantId as a string\n\t\t\t\tquantity\n\t\t\t})\n\t\t});\n\t\treturn;\n\t}\n\n\t// This calculation is necessary to handle cases where there are multiple identical items in the cart.\n\tconst existingCart = await getCart();\n\n\tconst existingItems = existingCart.items || [];\n\n\tconst itemsWtihSameVariantId = existingItems.filter(\n\t\titem => item.variant_id === variantId\n\t);\n\tconst totalQuantity = itemsWtihSameVariantId.reduce(\n\t\t(acc, item) => acc + (item.quantity || 0),\n\t\t0\n\t);\n\tconst existingItemIndex = existingItems.findIndex(\n\t\titem => item.variant_id === variantId\n\t);\n\n\tconst increment = quantity - totalQuantity;\n\n\tconst existingQuantity = parseToNumber(\n\t\texistingItems[existingItemIndex]?.quantity\n\t);\n\tconst calculatedQuantity = existingQuantity + increment;\n\n\tif (existingItemIndex !== -1) {\n\t\tconst cartChange = {\n\t\t\tline: String(existingItemIndex + 1), // Shopify uses 1-based index\n\t\t\tquantity: calculatedQuantity\n\t\t};\n\t\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/change.js\", {\n\t\t\tbody: JSON.stringify(cartChange)\n\t\t});\n\t}\n}\n\nexport function updateCartStorage(cart: ShopifyCart | null): void {\n\tif (cart) {\n\t\tstorage.set(STORAGE_CART_KEY, cart);\n\t\treturn;\n\t}\n\tstorage.remove(STORAGE_CART_KEY);\n}\n\nexport function getCartStorage(): ShopifyCart | null {\n\treturn storage.get<ShopifyCart>(STORAGE_CART_KEY);\n}\n","import { updateCartStorage } from \"../widget/lib/utils/cart\";\nimport { stripShopifyId } from \"../widget/lib/utils/shopify\";\nimport type {\n\tCartInput,\n\tCartProvider,\n\tConnection,\n\tShopifyCart,\n\tShopifyCartItem,\n\tStorefrontCart,\n\tStorefrontCartLine\n} from \"./types\";\n\nfunction resolveConnection<T extends object>(connections: Connection<T>): T[] {\n\tif (\"edges\" in connections) {\n\t\treturn connections.edges.map(edge => edge.node);\n\t}\n\treturn connections.map(edge => {\n\t\tif (\"node\" in edge) {\n\t\t\treturn edge.node;\n\t\t}\n\t\treturn edge;\n\t});\n}\n\nfunction isStorefrontCart(cart: CartInput): cart is StorefrontCart {\n\tif (!(\"lines\" in cart)) return false;\n\tconst lines = (cart as StorefrontCart).lines;\n\treturn (\n\t\tArray.isArray(lines) ||\n\t\t(lines != null && typeof lines === \"object\" && \"edges\" in lines)\n\t);\n}\n\nfunction toCents(amount: string): number {\n\tconst parsed = parseFloat(amount);\n\treturn Number.isNaN(parsed) ? 0 : Math.round(parsed * 100);\n}\n\nfunction resolveLineImage(line: StorefrontCartLine): string {\n\tif (line.merchandise.image?.url) {\n\t\treturn line.merchandise.image.url;\n\t}\n\tif (line.merchandise.product.featuredImage?.url) {\n\t\treturn line.merchandise.product.featuredImage.url;\n\t}\n\tconst productImages = resolveConnection(\n\t\tline.merchandise.product.images ?? []\n\t);\n\tif (productImages.length > 0) {\n\t\treturn productImages[0].url;\n\t}\n\treturn \"\";\n}\n\nfunction normalizeStorefrontLine(line: StorefrontCartLine): ShopifyCartItem {\n\tconst { merchandise, quantity } = line;\n\tconst { product } = merchandise;\n\n\tconst variantId = Number(stripShopifyId(merchandise.id));\n\tconst productId = Number(stripShopifyId(product.id));\n\n\t// Prefer line.cost, fall back to merchandise.price\n\tlet unitPrice: number;\n\tlet lineTotal: number;\n\n\tif (line.cost?.amountPerQuantity) {\n\t\tunitPrice = toCents(line.cost.amountPerQuantity.amount);\n\t\tlineTotal = line.cost.totalAmount\n\t\t\t? toCents(line.cost.totalAmount.amount)\n\t\t\t: unitPrice * quantity;\n\t} else if (merchandise.price) {\n\t\tunitPrice = toCents(merchandise.price.amount);\n\t\tlineTotal = unitPrice * quantity;\n\t} else {\n\t\tunitPrice = 0;\n\t\tlineTotal = 0;\n\t}\n\n\tconst variantTitle = merchandise.title;\n\tconst productTitle = product.title;\n\n\tconst isDefaultVariant =\n\t\t!variantTitle ||\n\t\tvariantTitle === \"Default Title\" ||\n\t\tvariantTitle === \"Default\";\n\n\tconst title = isDefaultVariant\n\t\t? productTitle\n\t\t: `${productTitle} - ${variantTitle}`;\n\n\treturn {\n\t\tvariant_id: variantId,\n\t\tquantity,\n\t\ttitle,\n\t\tprice: unitPrice,\n\t\tproduct_id: productId,\n\t\tproduct_title: productTitle,\n\t\thandle: product.handle,\n\t\timage: resolveLineImage(line),\n\t\tgrams: 0,\n\t\tline_price: lineTotal,\n\t\tfinal_price: unitPrice,\n\t\tfinal_line_price: lineTotal,\n\t\tline_id: line.id,\n\t\tmerchandise_id: merchandise.id,\n\t\tvariant_title: isDefaultVariant ? undefined : variantTitle,\n\t\tsku: merchandise.sku,\n\t\tvendor: product.vendor,\n\t\tproduct_type: product.productType,\n\t\trequires_shipping: merchandise.requiresShipping\n\t};\n}\n\nfunction normalizeStorefrontCart(cart: StorefrontCart): ShopifyCart {\n\tconst lines = resolveConnection(cart.lines);\n\tconst items = lines.map(normalizeStorefrontLine);\n\tconst itemCount =\n\t\tcart.totalQuantity ?? items.reduce((sum, i) => sum + i.quantity, 0);\n\n\treturn {\n\t\titems,\n\t\titem_count: itemCount,\n\t\ttoken: cart.id,\n\t\tnote: cart.note ?? \"\"\n\t};\n}\n\nexport function normalizeCartInput(cart: CartInput): ShopifyCart {\n\tif (isStorefrontCart(cart)) {\n\t\treturn normalizeStorefrontCart(cart);\n\t}\n\treturn cart;\n}\n\nfunction normalizeAndStore(cart: CartInput): ShopifyCart {\n\tconst normalized = normalizeCartInput(cart);\n\tupdateCartStorage(normalized);\n\treturn normalized;\n}\n\nexport function wrapCartProvider(provider: CartProvider): CartProvider {\n\treturn {\n\t\tasync getCart(): Promise<ShopifyCart | undefined> {\n\t\t\tconst cart = await provider.getCart();\n\t\t\treturn cart ? normalizeAndStore(cart) : undefined;\n\t\t},\n\t\tclearCart: async () => normalizeAndStore(await provider.clearCart()),\n\t\taddItems: async items => normalizeAndStore(await provider.addItems(items)),\n\t\tupdateItems: async items =>\n\t\t\tnormalizeAndStore(await provider.updateItems(items)),\n\t\tremoveItems: async ids => normalizeAndStore(await provider.removeItems(ids))\n\t};\n}\n","import type { IReturnContext } from \"../widget/lib/context/return-context\";\nimport type { IToastContext } from \"../widget/lib/context/toast-context\";\nimport type { ValueState } from \"../widget/lib/hooks/common/use-value-state\";\nimport {\n\tCalculationResponse,\n\tShopifyCart,\n\tWidgetViewState\n} from \"../widget/lib/types\";\nimport {\n\tcompareCarts,\n\tnormalizeCart,\n\tupdateCartStorage\n} from \"../widget/lib/utils/cart\";\nimport type { WidgetConfiguration } from \"../widget/lib/utils/initialization/types\";\nimport { normalizeCartInput, wrapCartProvider } from \"./storefront-cart\";\nimport type {\n\tCartInput,\n\tCartProvider,\n\tEventCallback,\n\tEventName,\n\tOrderData,\n\tSetCartOutput\n} from \"./types\";\n\ninterface StateBridge {\n\twidgetViewState: ValueState<WidgetViewState> | null;\n\tconfig: WidgetConfiguration | null;\n\treturnContext: IReturnContext | null;\n\ttoastContext: IToastContext | null;\n\tcartProvider: CartProvider | null;\n\tisInitialized: boolean;\n\teventListeners: Map<string, Set<EventCallback<EventName>>>;\n}\n\nconst bridge: StateBridge = {\n\twidgetViewState: null,\n\tconfig: null,\n\treturnContext: null,\n\ttoastContext: null,\n\tcartProvider: null,\n\tisInitialized: false,\n\teventListeners: new Map()\n};\n\nexport function registerBridge({\n\twidgetViewState,\n\treturnContext,\n\ttoastContext,\n\tconfig\n}: {\n\twidgetViewState: ValueState<WidgetViewState>;\n\treturnContext: IReturnContext;\n\ttoastContext: IToastContext;\n\tconfig: WidgetConfiguration;\n}): void {\n\tbridge.widgetViewState = widgetViewState;\n\tbridge.returnContext = returnContext;\n\tbridge.toastContext = toastContext;\n\tbridge.config = config;\n\tbridge.isInitialized = true;\n\n\temitEvent(\"ready\");\n}\n\nexport function unregisterBridge(): void {\n\tbridge.widgetViewState = null;\n\tbridge.returnContext = null;\n\tbridge.toastContext = null;\n\tbridge.config = null;\n\tbridge.cartProvider = null;\n\tbridge.isInitialized = false;\n\tbridge.eventListeners.clear();\n}\n\nexport function setCartProvider(provider: CartProvider | null): void {\n\tconst wrapped = provider ? wrapCartProvider(provider) : null;\n\n\tbridge.cartProvider = wrapped;\n\n\tif (typeof window !== \"undefined\") {\n\t\tconst rf = (\n\t\t\twindow as Window & {\n\t\t\t\tReturnflows?: { _cartProvider?: CartProvider | null };\n\t\t\t}\n\t\t).Returnflows;\n\t\tif (rf) {\n\t\t\trf._cartProvider = wrapped;\n\t\t}\n\t}\n\n\tif (provider) {\n\t\tconsole.info(`[RF] Cart provider registered.`);\n\t} else {\n\t\tconsole.info(\"[RF] Cart provider cleared.\");\n\t}\n}\n\nexport function getCartProvider(): CartProvider | null {\n\treturn bridge.cartProvider;\n}\n\nexport function isInitialized(): boolean {\n\treturn bridge.isInitialized;\n}\n\nexport function getDrawerState(): WidgetViewState | null {\n\treturn bridge.widgetViewState?.value ?? null;\n}\n\nexport function setDrawerState(state: WidgetViewState): void {\n\tif (!bridge.widgetViewState) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn;\n\t}\n\tbridge.widgetViewState.set(state);\n}\n\nexport function isDrawerOpen(): boolean {\n\treturn bridge.widgetViewState?.value === WidgetViewState.Open;\n}\n\nexport function getCart(): ShopifyCart | null {\n\tconst cartState = bridge.returnContext?.cartState;\n\tif (!cartState?.value.data) return null;\n\treturn cartState.value.data.original as ShopifyCart;\n}\n\nexport function getCalculation(): CalculationResponse | null {\n\treturn bridge.returnContext?.calculationState.value.data ?? null;\n}\n\nexport function getOrder(): OrderData | null {\n\tconst orderData = bridge.returnContext?.orderState.value.data?.orderData;\n\tif (!orderData) return null;\n\n\treturn {\n\t\tid: orderData.id,\n\t\torderId: orderData.orderId,\n\t\torderName: orderData.orderName,\n\t\tinstantExchange: orderData.instantExchange,\n\t\tfreeExchangeLabel: orderData.freeExchangeLabel,\n\t\tproductsToExchange: orderData.productsToExchange,\n\t\ttotalPrice: orderData.totalPrice\n\t};\n}\n\nexport function isLoading(): boolean {\n\treturn bridge.returnContext?.isPending ?? true;\n}\n\nexport async function setCart(cart: CartInput): Promise<SetCartOutput> {\n\tconst cartState = bridge.returnContext?.cartState;\n\tconst orderState = bridge.returnContext?.orderState;\n\tconst calculationState = bridge.returnContext?.calculationState;\n\tconst returnState = bridge.config?.data.returnData;\n\n\tif (!cartState || !orderState?.value.data) {\n\t\tconsole.warn(\"[RF] Widget not initialized or order not loaded.\");\n\t\treturn {\n\t\t\tcart: null,\n\t\t\tcalculation: null,\n\t\t\thasChanged: false\n\t\t};\n\t}\n\n\tconst order = orderState.value.data;\n\n\tconst normalizedInput = normalizeCartInput(cart);\n\tconst productRules = order.orderData.productRules || [];\n\n\t// Check if cart has actually changed\n\tconst currentCart = cartState.value.data?.original as ShopifyCart | undefined;\n\tif (\n\t\tcurrentCart &&\n\t\tcompareCarts({\n\t\t\tcart1: currentCart,\n\t\t\tcart2: normalizedInput,\n\t\t\trules: productRules\n\t\t})\n\t) {\n\t\treturn {\n\t\t\tcart: currentCart,\n\t\t\tcalculation: calculationState?.value.data ?? null,\n\t\t\thasChanged: false\n\t\t};\n\t}\n\n\tconst { cart: transformedCart } = normalizeCart(\n\t\tnormalizedInput,\n\t\tproductRules\n\t);\n\n\tcartState.set({\n\t\tdata: {\n\t\t\toriginal: normalizedInput,\n\t\t\ttransformed: transformedCart\n\t\t},\n\t\tpending: false,\n\t\terror: null\n\t});\n\n\tupdateCartStorage(normalizedInput);\n\n\temitEvent(\"cart:updated\", normalizedInput);\n\n\tconst calculationResponse = await calculationState?.query({\n\t\tcart: transformedCart,\n\t\torderId: order.orderData.id,\n\t\tlineItems: returnState?.items || []\n\t});\n\n\treturn {\n\t\tcart: transformedCart,\n\t\tcalculation: calculationResponse ?? null,\n\t\thasChanged: true\n\t};\n}\n\nexport async function refetchCart(): Promise<SetCartOutput | void> {\n\tconst cartState = bridge.returnContext?.cartState;\n\tconst orderState = bridge.returnContext?.orderState;\n\n\tif (!cartState || !orderState?.value.data) {\n\t\tconsole.warn(\"[RF] Widget not initialized or order not loaded.\");\n\t\treturn;\n\t}\n\n\tif (bridge.cartProvider) {\n\t\ttry {\n\t\t\tconst cart = await bridge.cartProvider.getCart();\n\t\t\tif (!cart) return;\n\t\t\treturn setCart(cart);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[RF] Cart provider getCart failed:\", error);\n\t\t\temitEvent(\n\t\t\t\t\"error\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tawait cartState.query(orderState.value.data);\n}\n\nexport async function clearCart(): Promise<SetCartOutput | void> {\n\tif (!bridge.isInitialized) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn;\n\t}\n\n\tif (bridge.cartProvider?.clearCart) {\n\t\ttry {\n\t\t\tconst cart = await bridge.cartProvider.clearCart();\n\t\t\treturn setCart(cart);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[RF] Cart provider clearCart failed:\", error);\n\t\t\temitEvent(\n\t\t\t\t\"error\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tdocument.dispatchEvent(new CustomEvent(\"RF_CART_AND_CALCULATION_REFETCH\"));\n}\n\nexport function showToast(options: {\n\tmessage: string;\n\ttone?: \"info\" | \"tip\" | \"action\" | \"error\" | \"giftcard\";\n\tduration?: number;\n\tonClose?: () => void;\n}): string {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn \"\";\n\t}\n\n\treturn bridge.toastContext.add({\n\t\tmessage: options.message,\n\t\ttone: options.tone,\n\t\tduration: options.duration,\n\t\tonClose: options.onClose\n\t});\n}\n\nexport function dismissToast(id: string): void {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized.\");\n\t\treturn;\n\t}\n\tbridge.toastContext.remove(id);\n}\n\nexport function clearToasts(): void {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized.\");\n\t\treturn;\n\t}\n\tbridge.toastContext.clear();\n}\n\nexport function addEventListener<K extends EventName>(\n\tevent: K,\n\tcallback: EventCallback<K>\n): void {\n\tif (!bridge.eventListeners.has(event)) {\n\t\tbridge.eventListeners.set(event, new Set());\n\t}\n\tbridge.eventListeners.get(event)!.add(callback as EventCallback<EventName>);\n}\n\nexport function removeEventListener<K extends EventName>(\n\tevent: K,\n\tcallback: EventCallback<K>\n): void {\n\tbridge.eventListeners\n\t\t.get(event)\n\t\t?.delete(callback as EventCallback<EventName>);\n}\n\nexport function emitEvent<K extends EventName>(\n\tevent: K,\n\t...args: K extends \"error\"\n\t\t? [Error]\n\t\t: K extends \"calculation:updated\"\n\t\t\t? [CalculationResponse]\n\t\t\t: K extends \"cart:updated\"\n\t\t\t\t? [ShopifyCart]\n\t\t\t\t: []\n): void {\n\tconst listeners = bridge.eventListeners.get(event);\n\tif (!listeners) return;\n\n\tlisteners.forEach(callback => {\n\t\ttry {\n\t\t\t// @ts-expect-error - TypeScript can't verify the callback signature matches the args\n\t\t\tcallback(...args);\n\t\t} catch (error) {\n\t\t\tconsole.error(`[RF] Error in ${event} event handler:`, error);\n\t\t}\n\t});\n}\n","import { WidgetViewState } from \"../widget/lib/types\";\nimport * as bridge from \"./state-bridge\";\nimport type {\n\tCartAPI,\n\tCartInput,\n\tCartProvider,\n\tDataAPI,\n\tDrawerAPI,\n\tEventCallback,\n\tEventName,\n\tReturnflowsAPI,\n\tReturnflowsConfig,\n\tToastAPI,\n\tToastOptions\n} from \"./types\";\n\ndeclare const __VERSION__: string;\n\nclass ReturnflowsWidget implements ReturnflowsAPI {\n\tprivate _initPromise: Promise<void> | null = null;\n\n\t/** @internal */\n\t_cartProvider: CartProvider | null = null;\n\n\tpublic readonly version =\n\t\ttypeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0\";\n\n\tpublic readonly drawer: DrawerAPI = {\n\t\topen: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.setDrawerState(WidgetViewState.Open);\n\t\t},\n\n\t\tclose: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.setDrawerState(WidgetViewState.Collapsed);\n\t\t},\n\n\t\ttoggle: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tconst current = bridge.getDrawerState();\n\t\t\tbridge.setDrawerState(\n\t\t\t\tcurrent === WidgetViewState.Open\n\t\t\t\t\t? WidgetViewState.Collapsed\n\t\t\t\t\t: WidgetViewState.Open\n\t\t\t);\n\t\t},\n\n\t\tisOpen: (): boolean => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.isDrawerOpen();\n\t\t}\n\t};\n\n\tpublic readonly data: DataAPI = {\n\t\tgetCart: () => bridge.getCart(),\n\t\tgetCalculation: () => bridge.getCalculation(),\n\t\tgetOrder: () => bridge.getOrder(),\n\t\tisLoading: () => bridge.isLoading()\n\t};\n\n\tpublic readonly cart: CartAPI = {\n\t\tsetCart: async (cart: CartInput): ReturnType<CartAPI[\"setCart\"]> => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.setCart(cart);\n\t\t},\n\n\t\trefetch: async (): Promise<void> => {\n\t\t\tthis._ensureInitialized();\n\t\t\tawait bridge.refetchCart();\n\t\t},\n\n\t\tclear: async (): Promise<void> => {\n\t\t\tthis._ensureInitialized();\n\t\t\tawait bridge.clearCart();\n\t\t}\n\t};\n\n\tpublic readonly toast: ToastAPI = {\n\t\tshow: (options: ToastOptions): string => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.showToast(options);\n\t\t},\n\n\t\tdismiss: (id: string): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.dismissToast(id);\n\t\t},\n\n\t\tclear: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.clearToasts();\n\t\t}\n\t};\n\n\tasync init(config: ReturnflowsConfig = {}): Promise<void> {\n\t\tif (this._initPromise) {\n\t\t\tconsole.warn(\"[RF] Already initializing. Returning existing promise.\");\n\t\t\treturn this._initPromise;\n\t\t}\n\n\t\tif (bridge.isInitialized()) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[RF] Already initialized. Call destroy() first to reinitialize.\"\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initPromise = new Promise<void>((resolve, reject) => {\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { onReady, onError, cartProvider, ...rest } = config;\n\n\t\t\t\t\tif (cartProvider) {\n\t\t\t\t\t\tbridge.setCartProvider(cartProvider);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { default: initialize } = await import(\n\t\t\t\t\t\t\"../widget/lib/utils/initialization\"\n\t\t\t\t\t);\n\t\t\t\t\tconst { default: WidgetContainer } = await import(\n\t\t\t\t\t\t\"../widget/components/widget-container\"\n\t\t\t\t\t);\n\t\t\t\t\tconst { h } = await import(\"preact\");\n\n\t\t\t\t\tconst result = await initialize(\n\t\t\t\t\t\twidgetConfig => h(WidgetContainer, widgetConfig),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnetworkInterceptionMethod: \"none\",\n\t\t\t\t\t\t\t...rest\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (result.reason === \"CONTAINER_EXISTS\") {\n\t\t\t\t\t\t\tawait this._waitForBridge();\n\t\t\t\t\t\t\tconfig.onReady?.();\n\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result.reason === \"MISSING_SESSION_ID\") {\n\t\t\t\t\t\t\tthis._initPromise = null;\n\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Widget initialization failed: ${result.message} (${result.reason})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait this._waitForBridge();\n\t\t\t\t\tconfig.onReady?.();\n\t\t\t\t\tresolve();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\t\t\t\tconfig.onError?.(error);\n\t\t\t\t\tbridge.setCartProvider(null);\n\t\t\t\t\tthis._initPromise = null;\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t})();\n\t\t});\n\n\t\treturn this._initPromise;\n\t}\n\n\tdestroy(): void {\n\t\tbridge.setCartProvider(null);\n\t\tbridge.unregisterBridge();\n\n\t\tif (typeof document !== \"undefined\") {\n\t\t\tconst container = document.getElementById(\"rf-overlay-widget\");\n\t\t\tif (container) {\n\t\t\t\tcontainer.remove();\n\t\t\t}\n\t\t}\n\n\t\tthis._initPromise = null;\n\t}\n\n\tisInitialized(): boolean {\n\t\treturn bridge.isInitialized();\n\t}\n\n\ton<K extends EventName>(event: K, callback: EventCallback<K>): () => void {\n\t\tbridge.addEventListener(event, callback);\n\t\treturn () => bridge.removeEventListener(event, callback);\n\t}\n\n\toff<K extends EventName>(event: K, callback: EventCallback<K>): void {\n\t\tbridge.removeEventListener(event, callback);\n\t}\n\n\tprivate _ensureInitialized(): void {\n\t\tif (!bridge.isInitialized()) {\n\t\t\tthrow new Error(\"[RF] Widget not initialized. Call init() first.\");\n\t\t}\n\t}\n\n\tprivate async _waitForBridge(timeout = 10000): Promise<void> {\n\t\tconst start = Date.now();\n\t\twhile (!bridge.isInitialized()) {\n\t\t\tif (Date.now() - start > timeout) {\n\t\t\t\tthrow new Error(\"[RF] Initialization timeout\");\n\t\t\t}\n\t\t\tawait new Promise(r => setTimeout(r, 50));\n\t\t}\n\t}\n}\n\nexport const Returnflows = new ReturnflowsWidget();\n\nif (typeof window !== \"undefined\") {\n\t(window as Window & { Returnflows?: ReturnflowsWidget }).Returnflows =\n\t\tReturnflows;\n}\n\nexport default Returnflows;\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){if(n.__P&&n.__d){var u=n.__v,t=u.__e,i=[],r=[],o=w({},u);o.__v=u.__v+1,l.vnode&&l.vnode(o),z(n.__P,o,u,n.__n,n.__P.namespaceURI,32&u.__u?[t]:null,i,null==t?S(u):t,!!(32&u.__u),r),o.__v=u.__v,o.__.__k[o.__i]=o,V(i,o,r),u.__e=u.__=null,o.__e!=t&&M(o)}}function M(n){if(null!=(n=n.__)&&null!=n.__c)return n.__e=n.__c.base=null,n.__k.some(function(l){if(null!=l&&null!=l.__e)return n.__e=n.__c.base=l.__e}),M(n)}function $(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!I.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)(I)}function I(){for(var n,l=1;i.length;)i.length>l&&i.sort(e),n=i.shift(),l=i.length,C(n);I.__r=0}function P(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,d,w,g,_,m=t&&t.__k||v,b=l.length;for(f=A(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1!=y.__i&&m[y.__i]||p,y.__i=a,g=z(n,y,h,i,r,o,e,f,c,s),d=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&D(h.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),(_=!!(4&y.__u))||h.__k===y.__k?f=H(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:d&&(f=d.nextSibling),y.__u&=-7);return u.__e=w,f}function A(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=m(null,o,null,null,null):d(o)?o=n.__k[r]=m(k,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?o=n.__k[r]=m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=T(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),E(e,e));return t}function H(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=H(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function L(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(d(n)?n.some(function(n){L(n,l)}):l.push(n)),l}function T(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==e||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function j(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function F(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||j(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||j(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function O(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function z(n,u,t,i,r,o,e,f,c,s){var a,h,p,y,_,m,b,S,C,M,$,I,A,H,L,T=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof T)try{if(S=u.props,C=\"prototype\"in T&&T.prototype.render,M=(a=T.contextType)&&i[a.__c],$=a?M?M.props.value:a.__:i,t.__c?b=(h=u.__c=t.__c).__=h.__E:(C?u.__c=h=new T(S,$):(u.__c=h=new x(S,$),h.constructor=T,h.render=G),M&&M.sub(h),h.state||(h.state={}),h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),C&&null==h.__s&&(h.__s=h.state),C&&null!=T.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=w({},h.__s)),w(h.__s,T.getDerivedStateFromProps(S,h.__s))),y=h.props,_=h.state,h.__v=u,p)C&&null==T.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),C&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(C&&null==T.getDerivedStateFromProps&&S!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(S,$),u.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(S,h.__s,$)){u.__v!=t.__v&&(h.props=S,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),v.push.apply(h.__h,h._sb),h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(S,h.__s,$),C&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,_,m)})}if(h.context=$,h.props=S,h.__P=n,h.__e=!1,I=l.__r,A=0,C)h.state=h.__s,h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),v.push.apply(h.__h,h._sb),h._sb=[];else do{h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=w(w({},i),h.getChildContext())),C&&!p&&null!=h.getSnapshotBeforeUpdate&&(m=h.getSnapshotBeforeUpdate(y,_)),H=null!=a&&a.type===k&&null==a.key?q(a.props.children):a,f=P(n,d(H)?H:[H],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),b&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(L=o.length;L--;)g(o[L]);N(u)}else u.__e=t.__e,u.__k=t.__k,n.then||N(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=B(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function N(n){n&&(n.__c&&(n.__c.__e=!0),n.__k&&n.__k.some(N))}function V(n,u,t){for(var i=0;i<t.length;i++)D(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function q(n){return\"object\"!=typeof n||null==n||n.__b>0?n:d(n)?n.map(q):w({},n)}function B(u,t,i,r,o,e,f,c,s){var a,h,v,y,w,_,m,b=i.props||p,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((w=e[a])&&\"setAttribute\"in w==!!x&&(x?w.localName==x:3==w.nodeType)){u=w,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(w=u.attributes[a]).name]=w.value;for(a in b)w=b[a],\"dangerouslySetInnerHTML\"==a?v=w:\"children\"==a||a in k||\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k||F(u,a,null,w,o);for(a in k)w=k[a],\"children\"==a?y=w:\"dangerouslySetInnerHTML\"==a?h=w:\"value\"==a?_=w:\"checked\"==a?m=w:c&&\"function\"!=typeof w||b[a]===w||F(u,a,w,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),P(\"template\"==t.type?u.content:u,d(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&F(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&F(u,a,m,b[a],o))}return u}function D(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function E(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||D(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&E(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function G(n,l,u){return this.constructor(n,u)}function J(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],z(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),V(e,u,f)}function K(n,l){J(n,l,K)}function Q(l,u,t){var i,r,o,e,f=w({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function R(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,$(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),$(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),$(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},I.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=O(!1),a=O(!0),h=0;export{x as Component,k as Fragment,Q as cloneElement,R as createContext,_ as createElement,b as createRef,_ as h,K as hydrate,t as isValidElement,l as options,J as render,L as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","export function resolveEnvVar<T = undefined>(\n\tvarKey: string,\n\tfallback?: T\n): string | T {\n\tlet value;\n\ttry {\n\t\tvalue = process.env?.[varKey];\n\t} catch (err) {\n\t\tvalue = import.meta.env?.[varKey];\n\t\tvoid err;\n\t}\n\tvalue ??= fallback;\n\treturn value;\n}\n\n// General\nexport const IMAGE_FALLBACK_URL =\n\t\"https://cdn.shopify.com/s/files/1/0849/6526/1638/files/RF-SO-Placeholder2.png?v=1735826638\";\n\n// URLs\nexport const API_URL = resolveEnvVar(\"VITE_API_URL\", \"http://localhost:8080\");\nexport const PLATFORM_URL = resolveEnvVar(\n\t\"VITE_PLATFORM_URL\",\n\t\"http://localhost:3000\"\n);\nexport const WIDGET_BASE_URL = resolveEnvVar(\n\t\"VITE_WIDGET_BASE_URL\",\n\t\"http://localhost:3334\"\n);\n\n/* Consistent Search Params */\nexport const SEARCH_PARAM_ID_NAME = \"rflowsId\";\n\n/* Legacy Search Params */\nexport const LEGACY_PARAMS = [\"lineItems\", \"slug\", \"locale\", \"currency\"];\n\n/* Element Indendifiers */\nexport const ROOT_ELEMENT_ID = \"root\";\nexport const SHADOW_ROOT_ELEMENT_ID = \"shadow-root\";\nexport const CONTAINER_ELEMENT_ID = \"rf-overlay-widget\";\nexport const CUSTOM_CSS_DATA_ATTR = \"rf-custom-css\";\n\nexport const SCRIPT_ID = \"rf-embedded-script\";\nexport const SETTINGS_SCRIPT_ID = \"rf-settings-json\";\n","import { WidgetViewState } from \"../types\";\nimport { WidgetConfiguration } from \"./initialization/types\";\n\n// Define a union of allowed event names\nexport const enum InternalCustomEvent {\n\tFetchInterception = \"RF_FETCH_INTERCEPTION\",\n\tXHRInterception = \"RF_XHR_INTERCEPTION\",\n\tDrawerStateChange = \"RF_DRAWER_STATE_CHANGE\",\n\tWidgetInitialization = \"RF_WIDGET_INITIALIZATION\"\n}\n\nexport const enum ExternalCustomEvent {\n\tDrawerOpen = \"RF_DRAWER_OPEN\",\n\tDrawerClose = \"RF_DRAWER_CLOSE\",\n\tDrawerToggle = \"RF_DRAWER_TOGGLE\",\n\tCalculationRefetch = \"RF_CALCULATION_REFETCH\",\n\tCartRefetch = \"RF_CART_REFETCH\",\n\tCartAndCalculationRefetch = \"RF_CART_AND_CALCULATION_REFETCH\",\n\tDrawerOpenAndRefetch = \"RF_DRAWER_OPEN_AND_REFETCH\"\n}\n\nexport type XHRResponse = string | Record<string, unknown> | undefined;\nexport type FetchResponse = Response | undefined;\n\nexport type InterceptionResponse = XHRResponse | FetchResponse;\n\nexport interface InterceptionPayload {\n\tresponse: InterceptionResponse;\n\trequestUrl: string | URL;\n}\n\n// Define the expected data types for each event\nexport type CustomEventPayloadMap = {\n\t[InternalCustomEvent.FetchInterception]: InterceptionPayload;\n\t[InternalCustomEvent.XHRInterception]: InterceptionPayload;\n\t[InternalCustomEvent.DrawerStateChange]: { state: WidgetViewState };\n\t[InternalCustomEvent.WidgetInitialization]: WidgetConfiguration;\n\t[ExternalCustomEvent.DrawerOpen]: undefined;\n\t[ExternalCustomEvent.DrawerClose]: undefined;\n\t[ExternalCustomEvent.DrawerToggle]: undefined;\n\t[ExternalCustomEvent.CalculationRefetch]: undefined;\n\t[ExternalCustomEvent.CartRefetch]: undefined;\n\t[ExternalCustomEvent.CartAndCalculationRefetch]: undefined;\n\t[ExternalCustomEvent.DrawerOpenAndRefetch]: undefined;\n};\n\n// Subscribe function with typed event name and payload\nfunction subscribe<K extends keyof CustomEventPayloadMap>(\n\teventName: K,\n\tcallback: (event: CustomEvent<CustomEventPayloadMap[K]>) => void\n): () => void {\n\tconst handler = (event: CustomEvent<CustomEventPayloadMap[K]>) =>\n\t\tcallback(event);\n\tdocument.addEventListener(eventName, handler as EventListener);\n\treturn () => {\n\t\tdocument.removeEventListener(eventName, handler as EventListener);\n\t};\n}\n\n// Publish function with typed event name and payload\nfunction publish<K extends InternalCustomEvent>(\n\teventName: K,\n\t...args: K extends keyof CustomEventPayloadMap\n\t\t? [detail: CustomEventPayloadMap[K]]\n\t\t: [detail?: undefined]\n): void {\n\tconst event = new CustomEvent(eventName, {\n\t\tdetail: args[0]\n\t});\n\tdocument.dispatchEvent(event);\n}\n\n// Unsubscribe function\nfunction unsubscribe<K extends keyof CustomEventPayloadMap>(\n\teventName: K,\n\tcallback: (event: CustomEvent<CustomEventPayloadMap[K]>) => void\n): void {\n\tdocument.removeEventListener(eventName, callback as EventListener);\n}\n\n// Exported object\nconst customEvents = {\n\tsubscribe,\n\tpublish,\n\tunsubscribe\n};\n\nexport default customEvents;\n","import { Messages } from \"use-intl\";\nimport { WIDGET_BASE_URL } from \"../constants\";\nimport { logger } from \"./logger\";\n\nexport type Locale = string;\n\nexport const DEFAULT_LOCALE: Locale = \"en\";\nexport const DEFAULT_CURRENCY: string = \"DKK\";\n\nexport async function loadMessages(\n\t...locales: Locale[]\n): Promise<{ messages: Messages; locale: Locale }> {\n\t// If no locales provided, use default\n\tconst localesList = locales.length > 0 ? locales : [DEFAULT_LOCALE];\n\n\tfor (const locale of localesList) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${WIDGET_BASE_URL}/messages/${locale}.json`\n\t\t\t);\n\t\t\tif (response.ok) {\n\t\t\t\tconst messages = await response.json();\n\t\t\t\treturn { messages, locale };\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error(`Error loading messages for locale ${locale}:`, error);\n\t\t}\n\t}\n\n\t// If all locales fail, throw an error\n\tthrow new Error(\n\t\t`No messages found for any of the locales: ${localesList.join(\", \")}`\n\t);\n}\n","import { CalculationParams } from \"../../components/providers/return-context-provider\";\nimport { API_URL, LEGACY_PARAMS, SEARCH_PARAM_ID_NAME } from \"../constants\";\nimport { CalculationResponse, ShopifyCart, ShopOverlayData } from \"../types\";\nimport { clearCart, setCartItems, updateCartStorage } from \"./cart\";\nimport { WidgetConfiguration } from \"./initialization/types\";\nimport { logger } from \"./logger\";\nimport storage, {\n\tSTORAGE_OVERLAY_DIALOG_EXPIRATION,\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY,\n\tSTORAGE_SESSION_KEY,\n\tStorageKey\n} from \"./storage\";\n\ninterface APIResponse<T> {\n\tsuccess?: boolean;\n\tresponseObject: T;\n\tmessage?: string;\n\terror?: string;\n\tstatusCode?: number;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"OPTIONS\";\n\ninterface FetchStoreOptions extends StorageKey {\n\tstoreResult?: boolean; // If false, do not store the result\n\tshouldUseCachedResult?: boolean;\n\tlogging?: boolean;\n\texpiration?: number; // in ms\n}\n\ninterface FetchAPIOptions extends Omit<RequestInit, \"body\" | \"method\"> {\n\tmethod?: HttpMethod;\n\tbody?: unknown;\n\tparams?: Record<string, string | number | boolean> | URLSearchParams;\n\tclientStorage?: FetchStoreOptions;\n}\n\nexport async function apiQuery<T>(\n\tpath: string,\n\t{ clientStorage: storageOptions, ...init }: FetchAPIOptions = {}\n): Promise<T> {\n\t// Storage handling\n\tconst isStorageEnabled = !!storageOptions;\n\n\tif (isStorageEnabled && storageOptions.shouldUseCachedResult !== false) {\n\t\tconst { key, type, logging } = storageOptions;\n\t\tconst cachedData = storage.get<T>({\n\t\t\tkey,\n\t\t\ttype\n\t\t});\n\t\tif (cachedData) {\n\t\t\tif (logging !== false) {\n\t\t\t\tlogger.info(`Using cached data for ${key} from ${type}`);\n\t\t\t}\n\t\t\treturn cachedData;\n\t\t}\n\t}\n\n\tconst fetchUrl = new URL(`${API_URL}${path}`);\n\n\t// Append query parameters if provided\n\tif (init?.params) {\n\t\tif (init.params instanceof URLSearchParams) {\n\t\t\tfetchUrl.search = init.params.toString();\n\t\t} else {\n\t\t\tObject.entries(init.params).forEach(([key, value]) => {\n\t\t\t\tfetchUrl.searchParams.set(key, String(value));\n\t\t\t});\n\t\t}\n\t}\n\n\t// Fetch request\n\tconst response = await fetch(fetchUrl.toString(), {\n\t\t...init,\n\t\tbody: init?.body ? JSON.stringify(init.body) : undefined,\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...init?.headers\n\t\t}\n\t});\n\n\t// JSON parsing\n\tconst data = await parseJsonRes<APIResponse<T>>(response);\n\n\t// Error handling\n\tif (!data || data.error || data.success === false) {\n\t\tconst message =\n\t\t\tdata?.error || data?.message || \"Error fetching calculation data\";\n\t\tthrow new Error(message);\n\t}\n\n\tif (isStorageEnabled && storageOptions.storeResult !== false) {\n\t\tconst { key, type, expiration } = storageOptions;\n\t\t// Store the response in the specified storage\n\t\tstorage.set(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\ttype,\n\t\t\t\texpiration\n\t\t\t},\n\t\t\tdata.responseObject\n\t\t);\n\t}\n\n\treturn data.responseObject;\n}\n\nasync function parseJsonRes<T>(response: Response): Promise<T> {\n\ttry {\n\t\treturn (await response.json()) as T;\n\t} catch (error) {\n\t\tlogger.error(\"Error parsing JSON response:\", error);\n\t\tthrow new Error(\"Failed to parse JSON response\");\n\t}\n}\n\n// REST API Queries\nexport async function getCalculation(\n\t{ orderId, cart, lineItems }: CalculationParams,\n\tlabelCount: number\n): Promise<CalculationResponse> {\n\tconst formattedLineItems = (lineItems || []).map(item => {\n\t\tlet action = item.action?.toUpperCase() ?? \"EXCHANGE\";\n\t\tif (action === \"SWAP\") action = \"EXCHANGE\";\n\t\treturn {\n\t\t\tid: item.id,\n\t\t\treturnOrderLineId: item.id,\n\t\t\tlineItemId: item.lineItemId,\n\t\t\tquantity: 1,\n\t\t\taction\n\t\t};\n\t});\n\n\tconst formattedExchangeTo = (cart.items || []).map(item => ({\n\t\tvariantId: `gid://shopify/ProductVariant/${item.variant_id}`,\n\t\tquantity: item.quantity\n\t}));\n\n\treturn apiQuery<CalculationResponse>(`/calculation/${orderId}`, {\n\t\tmethod: \"POST\",\n\t\tbody: {\n\t\t\tlineItems: formattedLineItems,\n\t\t\texchangeTo: formattedExchangeTo,\n\t\t\tnumOfLabels: labelCount\n\t\t}\n\t});\n}\n\nexport async function getShopOverlayData(\n\tisFirstLoad: boolean,\n\tinternalReturnId: string,\n\tlineIds: string\n): Promise<ShopOverlayData> {\n\tconst cacheKey = `${internalReturnId}_${lineIds}`;\n\n\tconst response = await apiQuery<ShopOverlayData>(\"/shop-overlay\", {\n\t\tparams: {\n\t\t\tinternalId: internalReturnId,\n\t\t\torderLines: lineIds\n\t\t},\n\t\tclientStorage: {\n\t\t\tshouldUseCachedResult: !isFirstLoad,\n\t\t\tkey: cacheKey,\n\t\t\ttype: \"sessionStorage\"\n\t\t}\n\t});\n\n\treturn response;\n}\n\nexport type ProcessOrderInitializationReturn = {\n\torderData: ShopOverlayData;\n\tupdatedCart: ShopifyCart | null;\n};\n\nexport async function processOrderInitialization({\n\tisFirstLoad,\n\toptions: { clearCartOnStart },\n\tid: internalId,\n\tdata: cache\n}: WidgetConfiguration): Promise<ProcessOrderInitializationReturn> {\n\tlet updatedCart: ShopifyCart | null = null;\n\n\tif (isFirstLoad) {\n\t\tconst cachedReturnItems = cache.returnItems ?? [];\n\n\t\tif (cachedReturnItems.length > 0) {\n\t\t\tconst mappedItems = cachedReturnItems.map(item => ({\n\t\t\t\tid: item.variantId,\n\t\t\t\tquantity: item.quantity\n\t\t\t}));\n\t\t\tlogger.info(\n\t\t\t\t\"Setting cart items from cached return items on initialization.\",\n\t\t\t\tmappedItems\n\t\t\t);\n\t\t\t// If there are cached return items, set them in the cart\n\t\t\tupdatedCart = await setCartItems(mappedItems);\n\t\t} else if (clearCartOnStart) {\n\t\t\tlogger.info(\"Clearing cart on initialization as per configuration.\");\n\t\t\t// Clear the cart if it's the first load and clearCartOnStart is true\n\t\t\tupdatedCart = await clearCart();\n\t\t}\n\n\t\tupdateCartStorage(updatedCart);\n\n\t\t// Set the dialog expiration in session storage\n\t\tconst dialogExpiration =\n\t\t\tnew Date().getTime() + STORAGE_OVERLAY_DIALOG_EXPIRATION;\n\n\t\tstorage.set(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY, dialogExpiration);\n\n\t\t// Remove the search param from the URL\n\t\tconst url = new URL(window.location.href);\n\n\t\turl.searchParams.delete(SEARCH_PARAM_ID_NAME);\n\n\t\tLEGACY_PARAMS.forEach(param => {\n\t\t\turl.searchParams.delete(param);\n\t\t});\n\n\t\twindow.history.replaceState(null, \"\", url);\n\t}\n\n\tstorage.set(STORAGE_SESSION_KEY, internalId);\n\n\tconst lineIds = cache.returnData?.items?.map(item => item.id).join(\",\") ?? \"\";\n\n\tconst orderData = await getShopOverlayData(isFirstLoad, internalId, lineIds);\n\n\treturn {\n\t\torderData,\n\t\tupdatedCart\n\t};\n}\n","import { ReturnAction } from \"../types\";\nimport { apiQuery } from \"./api\";\nimport { Locale } from \"./i18n\";\nimport { logger } from \"./logger\";\n\ntype FieldValues = {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t[key: string]: any;\n};\n\nexport interface ReturnDataState {\n\titems: Array<{\n\t\tid: string;\n\t\tlineItemId: string;\n\t\thasAvailableVariantsForSale?: boolean;\n\t\treasonId?: string;\n\t\taction?: ReturnAction;\n\t}>;\n\tnumOfLabels?: number;\n\tshippingProductId?: string;\n}\n\nexport interface CacheLineItem {\n\tid: string;\n\tvariantId: string;\n\tquantity: number;\n\taction?: ReturnAction;\n}\n\nexport interface CacheReturnItem {\n\tvariantId: number;\n\thandle: string;\n\tprice: number;\n\ttitle: string;\n\tvariantTitle: string;\n\timage: string;\n\tquantity: number;\n}\n\nexport interface SessionCachePayload {\n\tlastPath?: string;\n\tslug?: string;\n\tlocale?: Locale;\n\tcurrency?: string;\n\treturnData?: ReturnDataState;\n\tformData?: FieldValues;\n\treturnItems?: Array<CacheReturnItem>;\n}\n\nexport interface SessionCacheMetadata {\n\tcreatedAt: string; // ISO date string\n\tupdatedAt: string; // ISO date string\n\tttl: number; // Time to live in seconds\n}\n\nexport interface SessionCache {\n\tid: string;\n\tdata: SessionCachePayload;\n\tmetadata: SessionCacheMetadata;\n}\n\nexport async function updateSessionCache(\n\tinternalId: string,\n\tdata: SessionCachePayload\n) {\n\ttry {\n\t\tlogger.info(\"Setting session cache for internalId:\", internalId, data);\n\t\tconst response = await apiQuery<SessionCache>(\n\t\t\t`/shop-overlay/session/${internalId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PATCH\",\n\t\t\t\tbody: { data }\n\t\t\t}\n\t\t);\n\n\t\tlogger.info(\"Session cache set successfully:\", response);\n\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error setting session cache:\", error);\n\t\tthrow error;\n\t}\n}\n\nexport async function getSessionCache(\n\tinternalId?: string\n): Promise<SessionCache | null> {\n\tif (!internalId) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tconst response = await apiQuery<SessionCache | null>(\n\t\t\t`/shop-overlay/session/${internalId}`\n\t\t);\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error getting session cache:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function clearSessionCache(internalId: string) {\n\ttry {\n\t\tconst response = await apiQuery<null>(\n\t\t\t`/shop-overlay/session/${internalId}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\"\n\t\t\t}\n\t\t);\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error clearing session cache:\", error);\n\t\tthrow error;\n\t}\n}\n","import { SEARCH_PARAM_ID_NAME, SETTINGS_SCRIPT_ID } from \"../../constants\";\nimport {\n\tgetResolvedSearchParams,\n\tisNil,\n\tisNumber,\n\tsetNestedValue\n} from \"../helpers\";\nimport { DEFAULT_CURRENCY, DEFAULT_LOCALE, loadMessages } from \"../i18n\";\nimport { logger } from \"../logger\";\nimport { getSessionCache } from \"../session\";\nimport storage, {\n\tSTORAGE_DEBUG_MODE_KEY,\n\tSTORAGE_SESSION_KEY\n} from \"../storage\";\nimport {\n\tInitOptions,\n\tInitResult,\n\tWidgetConfiguration,\n\tWidgetSettings\n} from \"./types\";\n\nexport function isDOMStringMap(\n\tvalue: DOMStringMap | InitOptions\n): value is DOMStringMap {\n\treturn (\n\t\t(typeof DOMStringMap !== \"undefined\" && value instanceof DOMStringMap) ||\n\t\tObject.prototype.toString.call(value) === \"[object DOMStringMap]\"\n\t);\n}\n\n// Get and parse dataset options from the script element\nexport function parseScriptDataset(dataset: DOMStringMap): InitOptions {\n\tconst datasetRecord: Record<PropertyKey, unknown> = {};\n\n\tObject.entries(dataset).forEach(([key, value]) => {\n\t\tif (isNil(value)) return value;\n\n\t\tlet resolvedValue: unknown = value;\n\n\t\tif (value === \"true\") {\n\t\t\tresolvedValue = true;\n\t\t} else if (value === \"false\") {\n\t\t\tresolvedValue = false;\n\t\t} else if (isNumber(value)) {\n\t\t\tresolvedValue = Number(value);\n\t\t} else if (value === \"null\") {\n\t\t\tresolvedValue = null;\n\t\t} else if (value === \"undefined\") {\n\t\t\tresolvedValue = undefined;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tresolvedValue = JSON.parse(value);\n\t\t\t} catch {\n\t\t\t\t// Keep as string if JSON parsing fails\n\t\t\t}\n\t\t}\n\n\t\tdatasetRecord[key] = resolvedValue;\n\t});\n\n\treturn datasetRecord;\n}\n\n// Get settings from script with application json\nexport function getSettingsFromScript(): WidgetSettings | null {\n\tconst scriptElement = document.getElementById(\n\t\tSETTINGS_SCRIPT_ID\n\t) as HTMLScriptElement | null;\n\n\tif (!scriptElement) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst settings: WidgetSettings = JSON.parse(scriptElement.innerHTML);\n\t\treturn settings;\n\t} catch (error) {\n\t\tlogger.error(\"Failed to parse widget settings JSON\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function prepareInitializationOptions(\n\tdataset: DOMStringMap | InitOptions\n): Promise<InitResult> {\n\tconst options = isDOMStringMap(dataset)\n\t\t? parseScriptDataset(dataset)\n\t\t: dataset;\n\tconst settings = getSettingsFromScript();\n\n\tconst searchParams = getResolvedSearchParams();\n\n\tconst searchParamsId = searchParams.get(SEARCH_PARAM_ID_NAME);\n\tconst isFirstLoad = Boolean(searchParamsId);\n\n\tconst internalId = searchParamsId || storage.get(STORAGE_SESSION_KEY);\n\n\tif (!internalId) {\n\t\tconst message = \"Session ID is missing from URL and storage\";\n\t\tlogger.warn(message);\n\t\treturn { success: false, reason: \"MISSING_SESSION_ID\", message };\n\t}\n\n\tconst cache = await getSessionCache(internalId);\n\n\tif (!cache) {\n\t\tconst message = `No session cache found for id: ${internalId}`;\n\t\tlogger.warn(message);\n\t\treturn { success: false, reason: \"SESSION_NOT_FOUND\", message };\n\t}\n\n\tconst resolvedCurrency =\n\t\tcache.data.currency || options.defaultCurrency || DEFAULT_CURRENCY;\n\n\tconst isDevEnvironment =\n\t\toptions.env === \"development\" || options.env === \"test\";\n\tconst hasDebugParameter = searchParams.get(\"debug\") === \"true\";\n\n\tconst storedDebugModeValue = storage.get<boolean>(STORAGE_DEBUG_MODE_KEY);\n\n\tif (isDevEnvironment || hasDebugParameter) {\n\t\tstorage.set(STORAGE_DEBUG_MODE_KEY, true);\n\t}\n\n\tconst isDebugModeEnabled = Boolean(\n\t\tstoredDebugModeValue ?? (isDevEnvironment || hasDebugParameter)\n\t);\n\n\tconst localesList = [\n\t\tcache.data.locale,\n\t\toptions.defaultLocale,\n\t\tDEFAULT_LOCALE\n\t].filter(val => val !== undefined);\n\n\tconst { locale: resolvedLocale, messages } = await loadMessages(\n\t\t...localesList\n\t);\n\n\tconst customMessages = settings?.translations?.messages;\n\n\tif (customMessages) {\n\t\tlogger.info(\"Merging custom translations into messages...\");\n\t\tObject.entries(customMessages).forEach(([key, value]) => {\n\t\t\tsetNestedValue(messages, key, value);\n\t\t});\n\t}\n\n\tconst config: WidgetConfiguration = {\n\t\tlocale: resolvedLocale,\n\t\tcurrency: resolvedCurrency,\n\t\tdebugMode: isDebugModeEnabled,\n\t\tisFirstLoad,\n\t\tmessages,\n\t\toptions,\n\t\ttheme: settings?.theme ?? null,\n\t\t...cache\n\t};\n\n\treturn { success: true, config };\n}\n","import { logger } from \"../logger\";\n\ntype InjectFontReturn = Promise<\n\t[HTMLLinkElement, HTMLLinkElement, HTMLLinkElement]\n>;\n\n// Function responsible for injecting font styles into the document head\nexport function injectFont(): InjectFontReturn {\n\treturn new Promise((resolve, reject) => {\n\t\t// Preconnect to the font provider\n\t\tconst preconnect = createSafeLinkElement({\n\t\t\trel: \"preconnect\",\n\t\t\thref: \"https://fonts.googleapis.com\"\n\t\t});\n\n\t\t// Preconnect to the font provider (gstatic)\n\t\tconst preconnect2 = createSafeLinkElement({\n\t\t\trel: \"preconnect\",\n\t\t\thref: \"https://fonts.gstatic.com\",\n\t\t\tcrossOrigin: \"anonymous\"\n\t\t});\n\n\t\tconst fontLink = createSafeLinkElement({\n\t\t\trel: \"stylesheet\",\n\t\t\thref: \"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap\"\n\t\t});\n\n\t\tfontLink.onload = () => {\n\t\t\tlogger.info(\"Font stylesheet loaded successfully\");\n\t\t\tresolve([preconnect, preconnect2, fontLink]);\n\t\t};\n\t\tfontLink.onerror = () => {\n\t\t\tlogger.error(\"Failed to load font stylesheet\");\n\t\t\treject(new Error(\"Failed to load font stylesheet\"));\n\t\t};\n\n\t\tdocument.head.appendChild(fontLink);\n\t});\n}\n\n// Creates a link element only if a same link does not already exist in the document head\nfunction createSafeLinkElement<T extends Partial<HTMLLinkElement>>(\n\tattributes: T\n): HTMLLinkElement {\n\tconst selector = Object.entries(attributes)\n\t\t.filter(\n\t\t\t([_, value]) => typeof value === \"string\" || typeof value === \"number\"\n\t\t)\n\t\t.map(([key, value]) => `[${key}=\"${value}\"]`)\n\t\t.join(\"\");\n\n\tconst existing = document.querySelector<HTMLLinkElement>(`link${selector}`);\n\n\tif (existing) {\n\t\tlogger.warn(\n\t\t\t`Link element with attributes ${JSON.stringify(attributes)} already exists.`\n\t\t);\n\t\treturn existing;\n\t}\n\n\tconst link = document.createElement(\"link\");\n\tObject.assign(link, attributes);\n\tdocument.head.appendChild(link);\n\n\treturn link;\n}\n","import {\n\tCUSTOM_CSS_DATA_ATTR,\n\tresolveEnvVar,\n\tWIDGET_BASE_URL\n} from \"../../constants\";\nimport { logger } from \"../logger\";\n\n// Lightweight CSS validation without heavy parsing library\nexport function validateCSS(css: string): boolean {\n\t// Basic CSS validation - check for balanced braces and common patterns\n\tconst openBraces = (css.match(/{/g) || []).length;\n\tconst closeBraces = (css.match(/}/g) || []).length;\n\n\tif (openBraces !== closeBraces) {\n\t\treturn false;\n\t}\n\n\t// Check for dangerous patterns (script injection, etc.)\n\tconst dangerousPatterns = [\n\t\t/javascript:/gi,\n\t\t/expression\\s*\\(/gi,\n\t\t/behavior\\s*:/gi,\n\t\t/binding\\s*:/gi,\n\t\t/@import.*url\\s*\\(\\s*[\"']?javascript:/gi\n\t];\n\n\treturn !dangerousPatterns.some(pattern => pattern.test(css));\n}\n\nexport function injectCustomCSS(\n\tcss: string | undefined,\n\tcontainer: HTMLElement = document.head\n) {\n\tif (!css) return;\n\n\tif (!validateCSS(css)) {\n\t\tthrow new Error(\n\t\t\t\"Invalid CSS detected. Please check your CSS syntax and remove any dangerous patterns.\"\n\t\t);\n\t}\n\n\t// Create a style element and inject the custom CSS directly\n\tconst styleElement = document.createElement(\"style\");\n\tstyleElement.setAttribute(`data-${CUSTOM_CSS_DATA_ATTR}`, \"true\");\n\tstyleElement.textContent = css;\n\n\tlogger.info(\"Injecting custom CSS...\");\n\t// Append the style element to parent document body\n\tcontainer.appendChild(styleElement);\n\n\treturn styleElement;\n}\n\n// Function responsible for injecting the styles into the shadow DOM\nexport function injectStyle(shadowRoot: HTMLElement): HTMLLinkElement {\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\n\tconst fileName = resolveEnvVar(\"WIDGET_NAME\") || \"widget\";\n\tlink.href = `${WIDGET_BASE_URL}/${fileName}.css`;\n\n\tlink.onload = () => {\n\t\tlogger.info(\"Stylesheet loaded successfully\");\n\t};\n\n\tshadowRoot.appendChild(link);\n\n\treturn link;\n}\n\n// Function responsible for injecting public CSS variables into the document head\nexport function injectPublicVariables(): HTMLLinkElement {\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\n\tlink.href = `${WIDGET_BASE_URL}/variables.css`;\n\n\tlink.onload = () => {\n\t\tlogger.info(\"Public CSS variables loaded successfully\");\n\t};\n\n\tlink.onerror = () => {\n\t\tlogger.warn(\"Failed to load public CSS variables\");\n\t};\n\n\tdocument.head.appendChild(link);\n\n\treturn link;\n}\n","import { ComponentChild, render } from \"preact\";\nimport { CONTAINER_ELEMENT_ID, SHADOW_ROOT_ELEMENT_ID } from \"../../constants\";\nimport customEvents, { InternalCustomEvent } from \"../custom-events\";\nimport { logger } from \"../logger\";\nimport { prepareInitializationOptions } from \"./dataset\";\nimport { injectFont } from \"./font\";\nimport { injectCustomCSS, injectPublicVariables, injectStyle } from \"./styles\";\nimport { InitOptions, InitResult, WidgetConfiguration } from \"./types\";\n\ntype ContainerElement = HTMLDivElement;\ntype ShadowRootElement = HTMLDivElement;\ntype ShadowRootResult =\n\t| { success: true; value: [ContainerElement, ShadowRootElement] }\n\t| { success: false; reason: \"CONTAINER_EXISTS\"; message: string };\n\nfunction createShadowRoot(): ShadowRootResult {\n\tconst existingContainer = document.getElementById(CONTAINER_ELEMENT_ID);\n\n\tif (existingContainer) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\treason: \"CONTAINER_EXISTS\",\n\t\t\tmessage: `Container with ID \"${CONTAINER_ELEMENT_ID}\" already exists`\n\t\t};\n\t}\n\n\tconst container = document.createElement(\"div\");\n\tcontainer.id = CONTAINER_ELEMENT_ID;\n\tcontainer.style.display = \"block\";\n\n\tconst shadow = container.attachShadow({ mode: \"closed\" });\n\tconst shadowRoot = document.createElement(\"div\");\n\n\tshadowRoot.className = \"rf-container\";\n\tshadowRoot.id = SHADOW_ROOT_ELEMENT_ID;\n\tshadowRoot.style.display = \"none\";\n\n\tshadow.appendChild(shadowRoot);\n\n\treturn { success: true, value: [container, shadowRoot] };\n}\n\ntype RenderNode = (config: WidgetConfiguration) => ComponentChild;\n\nfunction injectWidget(\n\trenderNode: RenderNode,\n\tshadowRoot: HTMLElement,\n\tconfig: WidgetConfiguration\n) {\n\tlogger.info(\"Injecting widget with options...\", config);\n\trender(renderNode(config), shadowRoot);\n}\n\nasync function initialize(\n\trenderNode: RenderNode,\n\toptions: DOMStringMap | InitOptions\n): Promise<InitResult> {\n\ttry {\n\t\tconst result = await prepareInitializationOptions(options);\n\n\t\tif (!result.success) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst containerResult = createShadowRoot();\n\t\tif (!containerResult.success) {\n\t\t\treturn containerResult;\n\t\t}\n\n\t\tconst [container, shadowRoot] = containerResult.value;\n\n\t\tconst { config } = result;\n\t\tconst {\n\t\t\toptions: { customCssOverlay, customCssPage }\n\t\t} = config;\n\n\t\tinjectStyle(shadowRoot);\n\t\tinjectPublicVariables();\n\t\tinjectFont();\n\t\tinjectCustomCSS(customCssPage);\n\t\tinjectCustomCSS(customCssOverlay, shadowRoot);\n\t\tinjectWidget(renderNode, shadowRoot, config);\n\n\t\tdocument.body.appendChild(container);\n\t\tcustomEvents.publish(InternalCustomEvent.WidgetInitialization, config);\n\n\t\treturn { success: true, config };\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tlogger.error(\"Initialization failed\", err);\n\t\treturn { success: false, reason: \"UNKNOWN_ERROR\", message };\n\t}\n}\n\nexport type { InitResult };\nexport default initialize;\n","export function memoize(fn, options) {\n\tconst cache = options && options.cache ? options.cache : cacheDefault;\n\tconst serializer = options && options.serializer ? options.serializer : serializerDefault;\n\tconst strategy = options && options.strategy ? options.strategy : strategyDefault;\n\treturn strategy(fn, {\n\t\tcache,\n\t\tserializer\n\t});\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n\treturn value == null || typeof value === \"number\" || typeof value === \"boolean\";\n}\nfunction monadic(fn, cache, serializer, arg) {\n\tconst cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n\tlet computedValue = cache.get(cacheKey);\n\tif (typeof computedValue === \"undefined\") {\n\t\tcomputedValue = fn.call(this, arg);\n\t\tcache.set(cacheKey, computedValue);\n\t}\n\treturn computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n\tconst args = Array.prototype.slice.call(arguments, 3);\n\tconst cacheKey = serializer(args);\n\tlet computedValue = cache.get(cacheKey);\n\tif (typeof computedValue === \"undefined\") {\n\t\tcomputedValue = fn.apply(this, args);\n\t\tcache.set(cacheKey, computedValue);\n\t}\n\treturn computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n\treturn strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n\tconst strategy = fn.length === 1 ? monadic : variadic;\n\treturn assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n\treturn assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n\treturn assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nconst serializerDefault = function() {\n\treturn JSON.stringify(arguments);\n};\n//\n// Cache\n//\nclass ObjectWithoutPrototypeCache {\n\tcache;\n\tconstructor() {\n\t\tthis.cache = Object.create(null);\n\t}\n\tget(key) {\n\t\treturn this.cache[key];\n\t}\n\tset(key, value) {\n\t\tthis.cache[key] = value;\n\t}\n}\nconst cacheDefault = { create: function create() {\n\treturn new ObjectWithoutPrototypeCache();\n} };\nexport const strategies = {\n\tvariadic: strategyVariadic,\n\tmonadic: strategyMonadic\n};\n","import{memoize as e,strategies as t}from\"@formatjs/fast-memoize\";class a extends Error{constructor(e,t){let a=e;t&&(a+=\": \"+t),super(a),this.code=e,t&&(this.originalMessage=t)}}var r=function(e){return e.MISSING_MESSAGE=\"MISSING_MESSAGE\",e.MISSING_FORMAT=\"MISSING_FORMAT\",e.ENVIRONMENT_FALLBACK=\"ENVIRONMENT_FALLBACK\",e.INSUFFICIENT_PATH=\"INSUFFICIENT_PATH\",e.INVALID_MESSAGE=\"INVALID_MESSAGE\",e.INVALID_KEY=\"INVALID_KEY\",e.FORMATTING_ERROR=\"FORMATTING_ERROR\",e}(r||{});function s(){return{dateTime:{},number:{},message:{},relativeTime:{},pluralRules:{},list:{},displayNames:{}}}function i(a,r){return e(a,{cache:(s=r,{create:()=>({get:e=>s[e],set(e,t){s[e]=t}})}),strategy:t.variadic});var s}function I(e,t){return i(((...t)=>new e(...t)),t)}function l(e){return{getDateTimeFormat:I(Intl.DateTimeFormat,e.dateTime),getNumberFormat:I(Intl.NumberFormat,e.number),getPluralRules:I(Intl.PluralRules,e.pluralRules),getRelativeTimeFormat:I(Intl.RelativeTimeFormat,e.relativeTime),getListFormat:I(Intl.ListFormat,e.list),getDisplayNames:I(Intl.DisplayNames,e.displayNames)}}export{a as I,r as a,s as b,l as c,i as m};\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.some(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();){var t=n.__H;if(n.__P&&t)try{t.__h.some(z),t.__h.some(B),t.__h=[]}catch(r){t.__h=[],c.__e(r,n.__v)}}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.some(z),i.__h.some(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.some(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.some(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,R(u)&&o({t:u})},[n,e,t]),h(function(){return R(u)&&o({t:u}),n(function(){R(u)&&o({t:u})})},[n]),e}function R(n){try{return!((t=n.__)===(e=n.u())&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}var t,e}function x(n){n()}function w(n){return n}function k(){return[!1,x]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u.type=n,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},U=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);U(n,t,e,r)};var F=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){if(!n.__)return null;var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u,o=null;function i(i){if(e||(e=n()).then(function(n){n&&(o=n.default||n),u=!0},function(n){r=n,u=!0}),r)throw r;if(!u)throw e;return o?t(o,i):null}return i.displayName=\"Lazy\",i.__f=!0,i}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),F&&F(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||r.__z||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var l=e.__P;e.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=l,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},namespaceURI:r.namespaceURI,insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var ln,cn={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",cn)):t.className&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),ln=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),ln=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return ln.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function mn(n){return!!n&&n.$$typeof===q}function pn(n){return mn(n)&&n.type===u}function yn(n){return!!n&&\"string\"==typeof n.displayName&&n.displayName.startsWith(\"Memo(\")}function _n(n){return mn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,Rn=mn,xn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:x,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:l,createFactory:dn,cloneElement:_n,createRef:c,Fragment:u,isValidElement:mn,isElement:Rn,isFragment:pn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,xn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,Rn as isElement,pn as isFragment,yn as isMemo,mn as isValidElement,z as lazy,M as memo,nn as render,x as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","/**\n* https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n* Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n* with some tweaks\n*/\nconst DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n* Parse Date time skeleton into Intl.DateTimeFormatOptions\n* Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n* @public\n* @param skeleton skeleton string\n*/\nexport function parseDateTimeSkeleton(skeleton) {\n\tconst result = {};\n\tskeleton.replace(DATE_TIME_REGEX, (match) => {\n\t\tconst len = match.length;\n\t\tswitch (match[0]) {\n\t\t\tcase \"G\":\n\t\t\t\tresult.era = len === 4 ? \"long\" : len === 5 ? \"narrow\" : \"short\";\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\tresult.year = len === 2 ? \"2-digit\" : \"numeric\";\n\t\t\t\tbreak;\n\t\t\tcase \"Y\":\n\t\t\tcase \"u\":\n\t\t\tcase \"U\":\n\t\t\tcase \"r\": throw new RangeError(\"`Y/u/U/r` (year) patterns are not supported, use `y` instead\");\n\t\t\tcase \"q\":\n\t\t\tcase \"Q\": throw new RangeError(\"`q/Q` (quarter) patterns are not supported\");\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tresult.month = [\n\t\t\t\t\t\"numeric\",\n\t\t\t\t\t\"2-digit\",\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\"\n\t\t\t\t][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"w\":\n\t\t\tcase \"W\": throw new RangeError(\"`w/W` (week) patterns are not supported\");\n\t\t\tcase \"d\":\n\t\t\t\tresult.day = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"D\":\n\t\t\tcase \"F\":\n\t\t\tcase \"g\": throw new RangeError(\"`D/F/g` (day) patterns are not supported, use `d` instead\");\n\t\t\tcase \"E\":\n\t\t\t\tresult.weekday = len === 4 ? \"long\" : len === 5 ? \"narrow\" : \"short\";\n\t\t\t\tbreak;\n\t\t\tcase \"e\":\n\t\t\t\tif (len < 4) {\n\t\t\t\t\tthrow new RangeError(\"`e..eee` (weekday) patterns are not supported\");\n\t\t\t\t}\n\t\t\t\tresult.weekday = [\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\",\n\t\t\t\t\t\"short\"\n\t\t\t\t][len - 4];\n\t\t\t\tbreak;\n\t\t\tcase \"c\":\n\t\t\t\tif (len < 4) {\n\t\t\t\t\tthrow new RangeError(\"`c..ccc` (weekday) patterns are not supported\");\n\t\t\t\t}\n\t\t\t\tresult.weekday = [\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\",\n\t\t\t\t\t\"short\"\n\t\t\t\t][len - 4];\n\t\t\t\tbreak;\n\t\t\tcase \"a\":\n\t\t\t\tresult.hour12 = true;\n\t\t\t\tbreak;\n\t\t\tcase \"b\":\n\t\t\tcase \"B\": throw new RangeError(\"`b/B` (period) patterns are not supported, use `a` instead\");\n\t\t\tcase \"h\":\n\t\t\t\tresult.hourCycle = \"h12\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"H\":\n\t\t\t\tresult.hourCycle = \"h23\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"K\":\n\t\t\t\tresult.hourCycle = \"h11\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"k\":\n\t\t\t\tresult.hourCycle = \"h24\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"j\":\n\t\t\tcase \"J\":\n\t\t\tcase \"C\": throw new RangeError(\"`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead\");\n\t\t\tcase \"m\":\n\t\t\t\tresult.minute = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"s\":\n\t\t\t\tresult.second = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"S\":\n\t\t\tcase \"A\": throw new RangeError(\"`S/A` (second) patterns are not supported, use `s` instead\");\n\t\t\tcase \"z\":\n\t\t\t\tresult.timeZoneName = len < 4 ? \"short\" : \"long\";\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\tcase \"O\":\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\": throw new RangeError(\"`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead\");\n\t\t}\n\t\treturn \"\";\n\t});\n\treturn result;\n}\n","// @generated from regex-gen.ts\nexport const WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { WHITE_SPACE_REGEX } from \"./regex.generated.js\";\nexport function parseNumberSkeletonFromString(skeleton) {\n\tif (skeleton.length === 0) {\n\t\tthrow new Error(\"Number skeleton cannot be empty\");\n\t}\n\t// Parse the skeleton\n\tconst stringTokens = skeleton.split(WHITE_SPACE_REGEX).filter((x) => x.length > 0);\n\tconst tokens = [];\n\tfor (const stringToken of stringTokens) {\n\t\tlet stemAndOptions = stringToken.split(\"/\");\n\t\tif (stemAndOptions.length === 0) {\n\t\t\tthrow new Error(\"Invalid number skeleton\");\n\t\t}\n\t\tconst [stem, ...options] = stemAndOptions;\n\t\tfor (const option of options) {\n\t\t\tif (option.length === 0) {\n\t\t\t\tthrow new Error(\"Invalid number skeleton\");\n\t\t\t}\n\t\t}\n\t\ttokens.push({\n\t\t\tstem,\n\t\t\toptions\n\t\t});\n\t}\n\treturn tokens;\n}\nfunction icuUnitToEcma(unit) {\n\treturn unit.replace(/^(.*?)-/, \"\");\n}\nconst FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nconst SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nconst INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nconst CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n\tconst result = {};\n\tif (str[str.length - 1] === \"r\") {\n\t\tresult.roundingPriority = \"morePrecision\";\n\t} else if (str[str.length - 1] === \"s\") {\n\t\tresult.roundingPriority = \"lessPrecision\";\n\t}\n\tstr.replace(SIGNIFICANT_PRECISION_REGEX, function(_, g1, g2) {\n\t\t// @@@ case\n\t\tif (typeof g2 !== \"string\") {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t\tresult.maximumSignificantDigits = g1.length;\n\t\t} else if (g2 === \"+\") {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t} else if (g1[0] === \"#\") {\n\t\t\tresult.maximumSignificantDigits = g1.length;\n\t\t} else {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t\tresult.maximumSignificantDigits = g1.length + (typeof g2 === \"string\" ? g2.length : 0);\n\t\t}\n\t\treturn \"\";\n\t});\n\treturn result;\n}\nfunction parseSign(str) {\n\tswitch (str) {\n\t\tcase \"sign-auto\": return { signDisplay: \"auto\" };\n\t\tcase \"sign-accounting\":\n\t\tcase \"()\": return { currencySign: \"accounting\" };\n\t\tcase \"sign-always\":\n\t\tcase \"+!\": return { signDisplay: \"always\" };\n\t\tcase \"sign-accounting-always\":\n\t\tcase \"()!\": return {\n\t\t\tsignDisplay: \"always\",\n\t\t\tcurrencySign: \"accounting\"\n\t\t};\n\t\tcase \"sign-except-zero\":\n\t\tcase \"+?\": return { signDisplay: \"exceptZero\" };\n\t\tcase \"sign-accounting-except-zero\":\n\t\tcase \"()?\": return {\n\t\t\tsignDisplay: \"exceptZero\",\n\t\t\tcurrencySign: \"accounting\"\n\t\t};\n\t\tcase \"sign-never\":\n\t\tcase \"+_\": return { signDisplay: \"never\" };\n\t}\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n\t// Engineering\n\tlet result;\n\tif (stem[0] === \"E\" && stem[1] === \"E\") {\n\t\tresult = { notation: \"engineering\" };\n\t\tstem = stem.slice(2);\n\t} else if (stem[0] === \"E\") {\n\t\tresult = { notation: \"scientific\" };\n\t\tstem = stem.slice(1);\n\t}\n\tif (result) {\n\t\tconst signDisplay = stem.slice(0, 2);\n\t\tif (signDisplay === \"+!\") {\n\t\t\tresult.signDisplay = \"always\";\n\t\t\tstem = stem.slice(2);\n\t\t} else if (signDisplay === \"+?\") {\n\t\t\tresult.signDisplay = \"exceptZero\";\n\t\t\tstem = stem.slice(2);\n\t\t}\n\t\tif (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n\t\t\tthrow new Error(\"Malformed concise eng/scientific notation\");\n\t\t}\n\t\tresult.minimumIntegerDigits = stem.length;\n\t}\n\treturn result;\n}\nfunction parseNotationOptions(opt) {\n\tconst result = {};\n\tconst signOpts = parseSign(opt);\n\tif (signOpts) {\n\t\treturn signOpts;\n\t}\n\treturn result;\n}\n/**\n* https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n*/\nexport function parseNumberSkeleton(tokens) {\n\tlet result = {};\n\tfor (const token of tokens) {\n\t\tswitch (token.stem) {\n\t\t\tcase \"percent\":\n\t\t\tcase \"%\":\n\t\t\t\tresult.style = \"percent\";\n\t\t\t\tcontinue;\n\t\t\tcase \"%x100\":\n\t\t\t\tresult.style = \"percent\";\n\t\t\t\tresult.scale = 100;\n\t\t\t\tcontinue;\n\t\t\tcase \"currency\":\n\t\t\t\tresult.style = \"currency\";\n\t\t\t\tresult.currency = token.options[0];\n\t\t\t\tcontinue;\n\t\t\tcase \"group-off\":\n\t\t\tcase \",_\":\n\t\t\t\tresult.useGrouping = false;\n\t\t\t\tcontinue;\n\t\t\tcase \"precision-integer\":\n\t\t\tcase \".\":\n\t\t\t\tresult.maximumFractionDigits = 0;\n\t\t\t\tcontinue;\n\t\t\tcase \"measure-unit\":\n\t\t\tcase \"unit\":\n\t\t\t\tresult.style = \"unit\";\n\t\t\t\tresult.unit = icuUnitToEcma(token.options[0]);\n\t\t\t\tcontinue;\n\t\t\tcase \"compact-short\":\n\t\t\tcase \"K\":\n\t\t\t\tresult.notation = \"compact\";\n\t\t\t\tresult.compactDisplay = \"short\";\n\t\t\t\tcontinue;\n\t\t\tcase \"compact-long\":\n\t\t\tcase \"KK\":\n\t\t\t\tresult.notation = \"compact\";\n\t\t\t\tresult.compactDisplay = \"long\";\n\t\t\t\tcontinue;\n\t\t\tcase \"scientific\":\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\tnotation: \"scientific\",\n\t\t\t\t\t...token.options.reduce((all, opt) => ({\n\t\t\t\t\t\t...all,\n\t\t\t\t\t\t...parseNotationOptions(opt)\n\t\t\t\t\t}), {})\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\tcase \"engineering\":\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\tnotation: \"engineering\",\n\t\t\t\t\t...token.options.reduce((all, opt) => ({\n\t\t\t\t\t\t...all,\n\t\t\t\t\t\t...parseNotationOptions(opt)\n\t\t\t\t\t}), {})\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\tcase \"notation-simple\":\n\t\t\t\tresult.notation = \"standard\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-narrow\":\n\t\t\t\tresult.currencyDisplay = \"narrowSymbol\";\n\t\t\t\tresult.unitDisplay = \"narrow\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-short\":\n\t\t\t\tresult.currencyDisplay = \"code\";\n\t\t\t\tresult.unitDisplay = \"short\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-full-name\":\n\t\t\t\tresult.currencyDisplay = \"name\";\n\t\t\t\tresult.unitDisplay = \"long\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-iso-code\":\n\t\t\t\tresult.currencyDisplay = \"symbol\";\n\t\t\t\tcontinue;\n\t\t\tcase \"scale\":\n\t\t\t\tresult.scale = parseFloat(token.options[0]);\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-floor\":\n\t\t\t\tresult.roundingMode = \"floor\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-ceiling\":\n\t\t\t\tresult.roundingMode = \"ceil\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-down\":\n\t\t\t\tresult.roundingMode = \"trunc\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-up\":\n\t\t\t\tresult.roundingMode = \"expand\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-even\":\n\t\t\t\tresult.roundingMode = \"halfEven\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-down\":\n\t\t\t\tresult.roundingMode = \"halfTrunc\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-up\":\n\t\t\t\tresult.roundingMode = \"halfExpand\";\n\t\t\t\tcontinue;\n\t\t\tcase \"integer-width\":\n\t\t\t\tif (token.options.length > 1) {\n\t\t\t\t\tthrow new RangeError(\"integer-width stems only accept a single optional option\");\n\t\t\t\t}\n\t\t\t\ttoken.options[0].replace(INTEGER_WIDTH_REGEX, function(_, g1, g2, g3, g4, g5) {\n\t\t\t\t\tif (g1) {\n\t\t\t\t\t\tresult.minimumIntegerDigits = g2.length;\n\t\t\t\t\t} else if (g3 && g4) {\n\t\t\t\t\t\tthrow new Error(\"We currently do not support maximum integer digits\");\n\t\t\t\t\t} else if (g5) {\n\t\t\t\t\t\tthrow new Error(\"We currently do not support exact integer digits\");\n\t\t\t\t\t}\n\t\t\t\t\treturn \"\";\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t}\n\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n\t\tif (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n\t\t\tresult.minimumIntegerDigits = token.stem.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (FRACTION_PRECISION_REGEX.test(token.stem)) {\n\t\t\t// Precision\n\t\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n\t\t\t// precision-integer case\n\t\t\tif (token.options.length > 1) {\n\t\t\t\tthrow new RangeError(\"Fraction-precision stems only accept a single optional option\");\n\t\t\t}\n\t\t\ttoken.stem.replace(FRACTION_PRECISION_REGEX, function(_, g1, g2, g3, g4, g5) {\n\t\t\t\t// .000* case (before ICU67 it was .000+)\n\t\t\t\tif (g2 === \"*\") {\n\t\t\t\t\tresult.minimumFractionDigits = g1.length;\n\t\t\t\t} else if (g3 && g3[0] === \"#\") {\n\t\t\t\t\tresult.maximumFractionDigits = g3.length;\n\t\t\t\t} else if (g4 && g5) {\n\t\t\t\t\tresult.minimumFractionDigits = g4.length;\n\t\t\t\t\tresult.maximumFractionDigits = g4.length + g5.length;\n\t\t\t\t} else {\n\t\t\t\t\tresult.minimumFractionDigits = g1.length;\n\t\t\t\t\tresult.maximumFractionDigits = g1.length;\n\t\t\t\t}\n\t\t\t\treturn \"\";\n\t\t\t});\n\t\t\tconst opt = token.options[0];\n\t\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n\t\t\tif (opt === \"w\") {\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\ttrailingZeroDisplay: \"stripIfInteger\"\n\t\t\t\t};\n\t\t\t} else if (opt) {\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\t...parseSignificantPrecision(opt)\n\t\t\t\t};\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n\t\tif (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...parseSignificantPrecision(token.stem)\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\t\tconst signOpts = parseSign(token.stem);\n\t\tif (signOpts) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...signOpts\n\t\t\t};\n\t\t}\n\t\tconst conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n\t\tif (conciseScientificAndEngineeringOpts) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...conciseScientificAndEngineeringOpts\n\t\t\t};\n\t\t}\n\t}\n\treturn result;\n}\n","import \"@formatjs/icu-skeleton-parser\";\nexport let TYPE = /* @__PURE__ */ function(TYPE) {\n\t/**\n\t* Raw text\n\t*/\n\tTYPE[TYPE[\"literal\"] = 0] = \"literal\";\n\t/**\n\t* Variable w/o any format, e.g `var` in `this is a {var}`\n\t*/\n\tTYPE[TYPE[\"argument\"] = 1] = \"argument\";\n\t/**\n\t* Variable w/ number format\n\t*/\n\tTYPE[TYPE[\"number\"] = 2] = \"number\";\n\t/**\n\t* Variable w/ date format\n\t*/\n\tTYPE[TYPE[\"date\"] = 3] = \"date\";\n\t/**\n\t* Variable w/ time format\n\t*/\n\tTYPE[TYPE[\"time\"] = 4] = \"time\";\n\t/**\n\t* Variable w/ select format\n\t*/\n\tTYPE[TYPE[\"select\"] = 5] = \"select\";\n\t/**\n\t* Variable w/ plural format\n\t*/\n\tTYPE[TYPE[\"plural\"] = 6] = \"plural\";\n\t/**\n\t* Only possible within plural argument.\n\t* This is the `#` symbol that will be substituted with the count.\n\t*/\n\tTYPE[TYPE[\"pound\"] = 7] = \"pound\";\n\t/**\n\t* XML-like tag\n\t*/\n\tTYPE[TYPE[\"tag\"] = 8] = \"tag\";\n\treturn TYPE;\n}({});\nexport let SKELETON_TYPE = /* @__PURE__ */ function(SKELETON_TYPE) {\n\tSKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n\tSKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n\treturn SKELETON_TYPE;\n}({});\n/**\n* Type Guards\n*/\nexport function isLiteralElement(el) {\n\treturn el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n\treturn el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n\treturn el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n\treturn el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n\treturn el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n\treturn el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n\treturn el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n\treturn el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n\treturn el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n\treturn !!(el && typeof el === \"object\" && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n\treturn !!(el && typeof el === \"object\" && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n\treturn {\n\t\ttype: TYPE.literal,\n\t\tvalue\n\t};\n}\nexport function createNumberElement(value, style) {\n\treturn {\n\t\ttype: TYPE.number,\n\t\tvalue,\n\t\tstyle\n\t};\n}\n","import \"./types.js\";\nexport let ErrorKind = /* @__PURE__ */ function(ErrorKind) {\n\t/** Argument is unclosed (e.g. `{0`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n\t/** Argument is empty (e.g. `{}`). */\n\tErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n\t/** Argument is malformed (e.g. `{foo!}``) */\n\tErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n\t/** Expect an argument type (e.g. `{foo,}`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n\t/** Unsupported argument type (e.g. `{foo,foo}`) */\n\tErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n\t/** Expect an argument style (e.g. `{foo, number, }`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n\t/** The number skeleton is invalid. */\n\tErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n\t/** The date time skeleton is invalid. */\n\tErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n\t/** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n\tErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n\t/** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n\tErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n\t/** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n\tErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n\t/** Missing select argument options (e.g. `{foo, select}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n\t/** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n\t/** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n\tErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n\t/** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n\t/** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n\t/** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n\t/**\n\t* Expecting a message fragment after the `plural` or `selectordinal` selector\n\t* (e.g. `{foo, plural, one}`)\n\t*/\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n\t/** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n\tErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n\t/**\n\t* Duplicate selectors in `plural` or `selectordinal` argument.\n\t* (e.g. {foo, plural, one {#} one {#}})\n\t*/\n\tErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n\t/** Duplicate selectors in `select` argument.\n\t* (e.g. {foo, select, apple {apple} apple {apple}})\n\t*/\n\tErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n\t/** Plural or select argument option must have `other` clause. */\n\tErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n\t/** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n\tErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n\t/** The tag name is invalid. (e.g. `<123>foo</123>`) */\n\tErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n\t/** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n\tErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n\t/** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n\tErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n\treturn ErrorKind;\n}({});\n","// @generated from regex-gen.ts\nexport const SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport const WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","// @generated from time-data-gen.ts\n// prettier-ignore\nexport const timeData = {\n\t\"001\": [\"H\", \"h\"],\n\t\"419\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"AC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"AD\": [\"H\", \"hB\"],\n\t\"AE\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"AF\": [\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"AG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AI\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"AL\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AM\": [\"H\", \"hB\"],\n\t\"AO\": [\"H\", \"hB\"],\n\t\"AR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"AS\": [\"h\", \"H\"],\n\t\"AT\": [\"H\", \"hB\"],\n\t\"AU\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AW\": [\"H\", \"hB\"],\n\t\"AX\": [\"H\"],\n\t\"AZ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BB\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BD\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"H\"\n\t],\n\t\"BE\": [\"H\", \"hB\"],\n\t\"BF\": [\"H\", \"hB\"],\n\t\"BG\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"BI\": [\"H\", \"h\"],\n\t\"BJ\": [\"H\", \"hB\"],\n\t\"BL\": [\"H\", \"hB\"],\n\t\"BM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BN\": [\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"BO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"BQ\": [\"H\"],\n\t\"BR\": [\"H\", \"hB\"],\n\t\"BS\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BT\": [\"h\", \"H\"],\n\t\"BW\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"BY\": [\"H\", \"h\"],\n\t\"BZ\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CA\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"CC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CD\": [\"hB\", \"H\"],\n\t\"CF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"CG\": [\"H\", \"hB\"],\n\t\"CH\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"CI\": [\"H\", \"hB\"],\n\t\"CK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CL\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"CN\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"CO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CP\": [\"H\"],\n\t\"CR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CU\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CV\": [\"H\", \"hB\"],\n\t\"CW\": [\"H\", \"hB\"],\n\t\"CX\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CZ\": [\"H\"],\n\t\"DE\": [\"H\", \"hB\"],\n\t\"DG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"DJ\": [\"h\", \"H\"],\n\t\"DK\": [\"H\"],\n\t\"DM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"DO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"DZ\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"EA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"EC\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"EE\": [\"H\", \"hB\"],\n\t\"EG\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"EH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"ER\": [\"h\", \"H\"],\n\t\"ES\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\"\n\t],\n\t\"ET\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"FI\": [\"H\"],\n\t\"FJ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"FK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"FM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"FO\": [\"H\", \"h\"],\n\t\"FR\": [\"H\", \"hB\"],\n\t\"GA\": [\"H\", \"hB\"],\n\t\"GB\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GD\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GE\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"GF\": [\"H\", \"hB\"],\n\t\"GG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GH\": [\"h\", \"H\"],\n\t\"GI\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GL\": [\"H\", \"h\"],\n\t\"GM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GN\": [\"H\", \"hB\"],\n\t\"GP\": [\"H\", \"hB\"],\n\t\"GQ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\"\n\t],\n\t\"GR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GS\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GT\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"GU\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GW\": [\"H\", \"hB\"],\n\t\"GY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"HK\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"HN\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"HR\": [\"H\", \"hB\"],\n\t\"HU\": [\"H\", \"h\"],\n\t\"IC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"ID\": [\"H\"],\n\t\"IE\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IL\": [\"H\", \"hB\"],\n\t\"IM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IN\": [\"h\", \"H\"],\n\t\"IO\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IQ\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"IR\": [\"hB\", \"H\"],\n\t\"IS\": [\"H\"],\n\t\"IT\": [\"H\", \"hB\"],\n\t\"JE\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"JM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"JO\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"JP\": [\n\t\t\"H\",\n\t\t\"K\",\n\t\t\"h\"\n\t],\n\t\"KE\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"KG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KH\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\"\n\t],\n\t\"KI\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KN\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KP\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KW\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"KY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KZ\": [\"H\", \"hB\"],\n\t\"LA\": [\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"LB\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"LC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"LI\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"LK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"LR\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"LS\": [\"h\", \"H\"],\n\t\"LT\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"LU\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"LV\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"LY\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"MC\": [\"H\", \"hB\"],\n\t\"MD\": [\"H\", \"hB\"],\n\t\"ME\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"MF\": [\"H\", \"hB\"],\n\t\"MG\": [\"H\", \"h\"],\n\t\"MH\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"ML\": [\"H\"],\n\t\"MM\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"MN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"MO\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MP\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MQ\": [\"H\", \"hB\"],\n\t\"MR\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MS\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"MT\": [\"H\", \"h\"],\n\t\"MU\": [\"H\", \"h\"],\n\t\"MV\": [\"H\", \"h\"],\n\t\"MW\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MX\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"MY\": [\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"MZ\": [\"H\", \"hB\"],\n\t\"NA\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"NC\": [\"H\", \"hB\"],\n\t\"NE\": [\"H\"],\n\t\"NF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NI\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"NL\": [\"H\", \"hB\"],\n\t\"NO\": [\"H\", \"h\"],\n\t\"NP\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"NR\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NU\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NZ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"OM\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PA\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PE\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"PG\": [\"h\", \"H\"],\n\t\"PH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PK\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"H\"\n\t],\n\t\"PL\": [\"H\", \"h\"],\n\t\"PM\": [\"H\", \"hB\"],\n\t\"PN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"PR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PS\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PT\": [\"H\", \"hB\"],\n\t\"PW\": [\"h\", \"H\"],\n\t\"PY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"QA\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"RE\": [\"H\", \"hB\"],\n\t\"RO\": [\"H\", \"hB\"],\n\t\"RS\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"RU\": [\"H\"],\n\t\"RW\": [\"H\", \"h\"],\n\t\"SA\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SB\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SD\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SE\": [\"H\"],\n\t\"SG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SH\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"SI\": [\"H\", \"hB\"],\n\t\"SJ\": [\"H\"],\n\t\"SK\": [\"H\"],\n\t\"SL\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SO\": [\"h\", \"H\"],\n\t\"SR\": [\"H\", \"hB\"],\n\t\"SS\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"ST\": [\"H\", \"hB\"],\n\t\"SV\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"SX\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"SY\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SZ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"TC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TD\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"TG\": [\"H\", \"hB\"],\n\t\"TH\": [\"H\", \"h\"],\n\t\"TJ\": [\"H\", \"h\"],\n\t\"TL\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"TM\": [\"H\", \"h\"],\n\t\"TN\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"TO\": [\"h\", \"H\"],\n\t\"TR\": [\"H\", \"hB\"],\n\t\"TT\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TW\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"TZ\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"UA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"UG\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"UM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"US\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"UY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"UZ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"VA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"VC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VE\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"VG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VI\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VN\": [\"H\", \"h\"],\n\t\"VU\": [\"h\", \"H\"],\n\t\"WF\": [\"H\", \"hB\"],\n\t\"WS\": [\"h\", \"H\"],\n\t\"XK\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"YE\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"YT\": [\"H\", \"hB\"],\n\t\"ZA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"ZM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"ZW\": [\"H\", \"h\"],\n\t\"af-ZA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"ar-001\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"ca-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"en-001\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"en-HK\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"en-IL\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"en-MY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"es-BR\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"es-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"es-GQ\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"fr-CA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"gl-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"gu-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"hi-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"it-CH\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"it-IT\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"kn-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"ku-SY\": [\"H\", \"hB\"],\n\t\"ml-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"mr-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"pa-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"ta-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"te-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"zu-ZA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t]\n};\n","import { timeData } from \"./time-data.generated.js\";\n/**\n* Returns the best matching date time pattern if a date time skeleton\n* pattern is provided with a locale. Follows the Unicode specification:\n* https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n* @param skeleton date time skeleton pattern that possibly includes j, J or C\n* @param locale\n*/\nexport function getBestPattern(skeleton, locale) {\n\tlet skeletonCopy = \"\";\n\tfor (let patternPos = 0; patternPos < skeleton.length; patternPos++) {\n\t\tconst patternChar = skeleton.charAt(patternPos);\n\t\tif (patternChar === \"j\") {\n\t\t\tlet extraLength = 0;\n\t\t\twhile (patternPos + 1 < skeleton.length && skeleton.charAt(patternPos + 1) === patternChar) {\n\t\t\t\textraLength++;\n\t\t\t\tpatternPos++;\n\t\t\t}\n\t\t\tlet hourLen = 1 + (extraLength & 1);\n\t\t\tlet dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n\t\t\tlet dayPeriodChar = \"a\";\n\t\t\tlet hourChar = getDefaultHourSymbolFromLocale(locale);\n\t\t\tif (hourChar == \"H\" || hourChar == \"k\") {\n\t\t\t\tdayPeriodLen = 0;\n\t\t\t}\n\t\t\twhile (dayPeriodLen-- > 0) {\n\t\t\t\tskeletonCopy += dayPeriodChar;\n\t\t\t}\n\t\t\twhile (hourLen-- > 0) {\n\t\t\t\tskeletonCopy = hourChar + skeletonCopy;\n\t\t\t}\n\t\t} else if (patternChar === \"J\") {\n\t\t\tskeletonCopy += \"H\";\n\t\t} else {\n\t\t\tskeletonCopy += patternChar;\n\t\t}\n\t}\n\treturn skeletonCopy;\n}\n/**\n* Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n* of the given `locale` to the corresponding time pattern.\n* @param locale\n*/\nfunction getDefaultHourSymbolFromLocale(locale) {\n\tlet hourCycle = locale.hourCycle;\n\tif (hourCycle === undefined && locale.hourCycles && locale.hourCycles.length) {\n\t\t// @ts-ignore\n\t\thourCycle = locale.hourCycles[0];\n\t}\n\tif (hourCycle) {\n\t\tswitch (hourCycle) {\n\t\t\tcase \"h24\": return \"k\";\n\t\t\tcase \"h23\": return \"H\";\n\t\t\tcase \"h12\": return \"h\";\n\t\t\tcase \"h11\": return \"K\";\n\t\t\tdefault: throw new Error(\"Invalid hourCycle\");\n\t\t}\n\t}\n\t// TODO: Once hourCycle is fully supported remove the following with data generation\n\tconst languageTag = locale.language;\n\tlet regionTag;\n\tif (languageTag !== \"root\") {\n\t\tregionTag = locale.maximize().region;\n\t}\n\tconst hourCycles = timeData[regionTag || \"\"] || timeData[languageTag || \"\"] || timeData[`${languageTag}-001`] || timeData[\"001\"];\n\treturn hourCycles[0];\n}\n","import { ErrorKind } from \"./error.js\";\nimport { SKELETON_TYPE, TYPE } from \"./types.js\";\nimport { SPACE_SEPARATOR_REGEX } from \"./regex.generated.js\";\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton } from \"@formatjs/icu-skeleton-parser\";\nimport { getBestPattern } from \"./date-time-pattern-generator.js\";\nconst SPACE_SEPARATOR_START_REGEX = new RegExp(`^${SPACE_SEPARATOR_REGEX.source}*`);\nconst SPACE_SEPARATOR_END_REGEX = new RegExp(`${SPACE_SEPARATOR_REGEX.source}*$`);\nfunction createLocation(start, end) {\n\treturn {\n\t\tstart,\n\t\tend\n\t};\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nconst hasNativeFromEntries = !!Object.fromEntries;\nconst hasTrimStart = !!String.prototype.trimStart;\nconst hasTrimEnd = !!String.prototype.trimEnd;\nconst fromEntries = hasNativeFromEntries ? Object.fromEntries : function fromEntries(entries) {\n\tconst obj = {};\n\tfor (const [k, v] of entries) {\n\t\tobj[k] = v;\n\t}\n\treturn obj;\n};\nconst trimStart = hasTrimStart ? function trimStart(s) {\n\treturn s.trimStart();\n} : function trimStart(s) {\n\treturn s.replace(SPACE_SEPARATOR_START_REGEX, \"\");\n};\nconst trimEnd = hasTrimEnd ? function trimEnd(s) {\n\treturn s.trimEnd();\n} : function trimEnd(s) {\n\treturn s.replace(SPACE_SEPARATOR_END_REGEX, \"\");\n};\n// #endregion\nconst IDENTIFIER_PREFIX_RE = new RegExp(\"([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)\", \"yu\");\nfunction matchIdentifierAtIndex(s, index) {\n\tIDENTIFIER_PREFIX_RE.lastIndex = index;\n\tconst match = IDENTIFIER_PREFIX_RE.exec(s);\n\treturn match[1] ?? \"\";\n}\nexport class Parser {\n\tmessage;\n\tposition;\n\tlocale;\n\tignoreTag;\n\trequiresOtherClause;\n\tshouldParseSkeletons;\n\tconstructor(message, options = {}) {\n\t\tthis.message = message;\n\t\tthis.position = {\n\t\t\toffset: 0,\n\t\t\tline: 1,\n\t\t\tcolumn: 1\n\t\t};\n\t\tthis.ignoreTag = !!options.ignoreTag;\n\t\tthis.locale = options.locale;\n\t\tthis.requiresOtherClause = !!options.requiresOtherClause;\n\t\tthis.shouldParseSkeletons = !!options.shouldParseSkeletons;\n\t}\n\tparse() {\n\t\tif (this.offset() !== 0) {\n\t\t\tthrow Error(\"parser can only be used once\");\n\t\t}\n\t\treturn this.parseMessage(0, \"\", false);\n\t}\n\tparseMessage(nestingLevel, parentArgType, expectingCloseTag) {\n\t\tlet elements = [];\n\t\twhile (!this.isEOF()) {\n\t\t\tconst char = this.char();\n\t\t\tif (char === 123) {\n\t\t\t\tconst result = this.parseArgument(nestingLevel, expectingCloseTag);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t} else if (char === 125 && nestingLevel > 0) {\n\t\t\t\tbreak;\n\t\t\t} else if (char === 35 && (parentArgType === \"plural\" || parentArgType === \"selectordinal\")) {\n\t\t\t\tconst position = this.clonePosition();\n\t\t\t\tthis.bump();\n\t\t\t\telements.push({\n\t\t\t\t\ttype: TYPE.pound,\n\t\t\t\t\tlocation: createLocation(position, this.clonePosition())\n\t\t\t\t});\n\t\t\t} else if (char === 60 && !this.ignoreTag && this.peek() === 47) {\n\t\t\t\tif (expectingCloseTag) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t}\n\t\t\t} else if (char === 60 && !this.ignoreTag && _isAlpha(this.peek() || 0)) {\n\t\t\t\tconst result = this.parseTag(nestingLevel, parentArgType);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t} else {\n\t\t\t\tconst result = this.parseLiteral(nestingLevel, parentArgType);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tval: elements,\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n\t* [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n\t* are accepted:\n\t*\n\t* ```\n\t* tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n\t* tagName ::= [a-z] (PENChar)*\n\t* PENChar ::=\n\t* \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n\t* [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n\t* [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n\t* ```\n\t*\n\t* [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n\t* NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n\t* since other tag-based engines like React allow it\n\t*/\n\tparseTag(nestingLevel, parentArgType) {\n\t\tconst startPosition = this.clonePosition();\n\t\tthis.bump();\n\t\tconst tagName = this.parseTagName();\n\t\tthis.bumpSpace();\n\t\tif (this.bumpIf(\"/>\")) {\n\t\t\t// Self closing tag\n\t\t\treturn {\n\t\t\t\tval: {\n\t\t\t\t\ttype: TYPE.literal,\n\t\t\t\t\tvalue: `<${tagName}/>`,\n\t\t\t\t\tlocation: createLocation(startPosition, this.clonePosition())\n\t\t\t\t},\n\t\t\t\terr: null\n\t\t\t};\n\t\t} else if (this.bumpIf(\">\")) {\n\t\t\tconst childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n\t\t\tif (childrenResult.err) {\n\t\t\t\treturn childrenResult;\n\t\t\t}\n\t\t\tconst children = childrenResult.val;\n\t\t\t// Expecting a close tag\n\t\t\tconst endTagStartPosition = this.clonePosition();\n\t\t\tif (this.bumpIf(\"</\")) {\n\t\t\t\tif (this.isEOF() || !_isAlpha(this.char())) {\n\t\t\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\tconst closingTagNameStartPosition = this.clonePosition();\n\t\t\t\tconst closingTagName = this.parseTagName();\n\t\t\t\tif (tagName !== closingTagName) {\n\t\t\t\t\treturn this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (!this.bumpIf(\">\")) {\n\t\t\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: TYPE.tag,\n\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\tchildren,\n\t\t\t\t\t\tlocation: createLocation(startPosition, this.clonePosition())\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n\t\t}\n\t}\n\t/**\n\t* This method assumes that the caller has peeked ahead for the first tag character.\n\t*/\n\tparseTagName() {\n\t\tconst startOffset = this.offset();\n\t\tthis.bump();\n\t\twhile (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n\t\t\tthis.bump();\n\t\t}\n\t\treturn this.message.slice(startOffset, this.offset());\n\t}\n\tparseLiteral(nestingLevel, parentArgType) {\n\t\tconst start = this.clonePosition();\n\t\tlet value = \"\";\n\t\twhile (true) {\n\t\t\tconst parseQuoteResult = this.tryParseQuote(parentArgType);\n\t\t\tif (parseQuoteResult) {\n\t\t\t\tvalue += parseQuoteResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n\t\t\tif (parseUnquotedResult) {\n\t\t\t\tvalue += parseUnquotedResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst parseLeftAngleResult = this.tryParseLeftAngleBracket();\n\t\t\tif (parseLeftAngleResult) {\n\t\t\t\tvalue += parseLeftAngleResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tconst location = createLocation(start, this.clonePosition());\n\t\treturn {\n\t\t\tval: {\n\t\t\t\ttype: TYPE.literal,\n\t\t\t\tvalue,\n\t\t\t\tlocation\n\t\t\t},\n\t\t\terr: null\n\t\t};\n\t}\n\ttryParseLeftAngleBracket() {\n\t\tif (!this.isEOF() && this.char() === 60 && (this.ignoreTag || !_isAlphaOrSlash(this.peek() || 0))) {\n\t\t\tthis.bump();\n\t\t\treturn \"<\";\n\t\t}\n\t\treturn null;\n\t}\n\t/**\n\t* Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n\t* a character that requires quoting (that is, \"only where needed\"), and works the same in\n\t* nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n\t*/\n\ttryParseQuote(parentArgType) {\n\t\tif (this.isEOF() || this.char() !== 39) {\n\t\t\treturn null;\n\t\t}\n\t\t// Parse escaped char following the apostrophe, or early return if there is no escaped char.\n\t\t// Check if is valid escaped character\n\t\tswitch (this.peek()) {\n\t\t\tcase 39:\n\t\t\t\t// double quote, should return as a single quote.\n\t\t\t\tthis.bump();\n\t\t\t\tthis.bump();\n\t\t\t\treturn \"'\";\n\t\t\tcase 123:\n\t\t\tcase 60:\n\t\t\tcase 62:\n\t\t\tcase 125: break;\n\t\t\tcase 35:\n\t\t\t\tif (parentArgType === \"plural\" || parentArgType === \"selectordinal\") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\tdefault: return null;\n\t\t}\n\t\tthis.bump();\n\t\tconst codePoints = [this.char()];\n\t\tthis.bump();\n\t\t// read chars until the optional closing apostrophe is found\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tif (ch === 39) {\n\t\t\t\tif (this.peek() === 39) {\n\t\t\t\t\tcodePoints.push(39);\n\t\t\t\t\t// Bump one more time because we need to skip 2 characters.\n\t\t\t\t\tthis.bump();\n\t\t\t\t} else {\n\t\t\t\t\t// Optional closing apostrophe.\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcodePoints.push(ch);\n\t\t\t}\n\t\t\tthis.bump();\n\t\t}\n\t\treturn String.fromCodePoint(...codePoints);\n\t}\n\ttryParseUnquoted(nestingLevel, parentArgType) {\n\t\tif (this.isEOF()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst ch = this.char();\n\t\tif (ch === 60 || ch === 123 || ch === 35 && (parentArgType === \"plural\" || parentArgType === \"selectordinal\") || ch === 125 && nestingLevel > 0) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tthis.bump();\n\t\t\treturn String.fromCodePoint(ch);\n\t\t}\n\t}\n\tparseArgument(nestingLevel, expectingCloseTag) {\n\t\tconst openingBracePosition = this.clonePosition();\n\t\tthis.bump();\n\t\tthis.bumpSpace();\n\t\tif (this.isEOF()) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tif (this.char() === 125) {\n\t\t\tthis.bump();\n\t\t\treturn this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\t// argument name\n\t\tlet value = this.parseIdentifierIfPossible().value;\n\t\tif (!value) {\n\t\t\treturn this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tthis.bumpSpace();\n\t\tif (this.isEOF()) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tswitch (this.char()) {\n\t\t\tcase 125: {\n\t\t\t\tthis.bump();\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: TYPE.argument,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlocation: createLocation(openingBracePosition, this.clonePosition())\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase 44: {\n\t\t\t\tthis.bump();\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (this.isEOF()) {\n\t\t\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\treturn this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n\t\t\t}\n\t\t\tdefault: return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t}\n\t/**\n\t* Advance the parser until the end of the identifier, if it is currently on\n\t* an identifier character. Return an empty string otherwise.\n\t*/\n\tparseIdentifierIfPossible() {\n\t\tconst startingPosition = this.clonePosition();\n\t\tconst startOffset = this.offset();\n\t\tconst value = matchIdentifierAtIndex(this.message, startOffset);\n\t\tconst endOffset = startOffset + value.length;\n\t\tthis.bumpTo(endOffset);\n\t\tconst endPosition = this.clonePosition();\n\t\tconst location = createLocation(startingPosition, endPosition);\n\t\treturn {\n\t\t\tvalue,\n\t\t\tlocation\n\t\t};\n\t}\n\tparseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition) {\n\t\t// Parse this range:\n\t\t// {name, type, style}\n\t\t// ^---^\n\t\tlet typeStartPosition = this.clonePosition();\n\t\tlet argType = this.parseIdentifierIfPossible().value;\n\t\tlet typeEndPosition = this.clonePosition();\n\t\tswitch (argType) {\n\t\t\tcase \"\":\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n\t\t\tcase \"number\":\n\t\t\tcase \"date\":\n\t\t\tcase \"time\": {\n\t\t\t\t// Parse this range:\n\t\t\t\t// {name, number, style}\n\t\t\t\t// ^-------^\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tlet styleAndLocation = null;\n\t\t\t\tif (this.bumpIf(\",\")) {\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tconst styleStartPosition = this.clonePosition();\n\t\t\t\t\tconst result = this.parseSimpleArgStyleIfPossible();\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tconst style = trimEnd(result.val);\n\t\t\t\t\tif (style.length === 0) {\n\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tconst styleLocation = createLocation(styleStartPosition, this.clonePosition());\n\t\t\t\t\tstyleAndLocation = {\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t\tstyleLocation\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\t\tif (argCloseResult.err) {\n\t\t\t\t\treturn argCloseResult;\n\t\t\t\t}\n\t\t\t\tconst location = createLocation(openingBracePosition, this.clonePosition());\n\t\t\t\t// Extract style or skeleton\n\t\t\t\tif (styleAndLocation && styleAndLocation.style.startsWith(\"::\")) {\n\t\t\t\t\t// Skeleton starts with `::`.\n\t\t\t\t\tlet skeleton = trimStart(styleAndLocation.style.slice(2));\n\t\t\t\t\tif (argType === \"number\") {\n\t\t\t\t\t\tconst result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n\t\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\t\ttype: TYPE.number,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\tstyle: result.val\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (skeleton.length === 0) {\n\t\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet dateTimePattern = skeleton;\n\t\t\t\t\t\t// Get \"best match\" pattern only if locale is passed, if not, let it\n\t\t\t\t\t\t// pass as-is where `parseDateTimeSkeleton()` will throw an error\n\t\t\t\t\t\t// for unsupported patterns.\n\t\t\t\t\t\tif (this.locale) {\n\t\t\t\t\t\t\tdateTimePattern = getBestPattern(skeleton, this.locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst style = {\n\t\t\t\t\t\t\ttype: SKELETON_TYPE.dateTime,\n\t\t\t\t\t\t\tpattern: dateTimePattern,\n\t\t\t\t\t\t\tlocation: styleAndLocation.styleLocation,\n\t\t\t\t\t\t\tparsedOptions: this.shouldParseSkeletons ? parseDateTimeSkeleton(dateTimePattern) : {}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst type = argType === \"date\" ? TYPE.date : TYPE.time;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\tstyle\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Regular style or no style.\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: argType === \"number\" ? TYPE.number : argType === \"date\" ? TYPE.date : TYPE.time,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlocation,\n\t\t\t\t\t\tstyle: styleAndLocation?.style ?? null\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"plural\":\n\t\t\tcase \"selectordinal\":\n\t\t\tcase \"select\": {\n\t\t\t\t// Parse this range:\n\t\t\t\t// {name, plural, options}\n\t\t\t\t// ^---------^\n\t\t\t\tconst typeEndPosition = this.clonePosition();\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (!this.bumpIf(\",\")) {\n\t\t\t\t\treturn this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition, { ...typeEndPosition }));\n\t\t\t\t}\n\t\t\t\tthis.bumpSpace();\n\t\t\t\t// Parse offset:\n\t\t\t\t// {name, plural, offset:1, options}\n\t\t\t\t// ^-----^\n\t\t\t\t//\n\t\t\t\t// or the first option:\n\t\t\t\t//\n\t\t\t\t// {name, plural, one {...} other {...}}\n\t\t\t\t// ^--^\n\t\t\t\tlet identifierAndLocation = this.parseIdentifierIfPossible();\n\t\t\t\tlet pluralOffset = 0;\n\t\t\t\tif (argType !== \"select\" && identifierAndLocation.value === \"offset\") {\n\t\t\t\t\tif (!this.bumpIf(\":\")) {\n\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tconst result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\t// Parse another identifier for option parsing\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tidentifierAndLocation = this.parseIdentifierIfPossible();\n\t\t\t\t\tpluralOffset = result.val;\n\t\t\t\t}\n\t\t\t\tconst optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n\t\t\t\tif (optionsResult.err) {\n\t\t\t\t\treturn optionsResult;\n\t\t\t\t}\n\t\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\t\tif (argCloseResult.err) {\n\t\t\t\t\treturn argCloseResult;\n\t\t\t\t}\n\t\t\t\tconst location = createLocation(openingBracePosition, this.clonePosition());\n\t\t\t\tif (argType === \"select\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\ttype: TYPE.select,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\toptions: fromEntries(optionsResult.val),\n\t\t\t\t\t\t\tlocation\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr: null\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\ttype: TYPE.plural,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\toptions: fromEntries(optionsResult.val),\n\t\t\t\t\t\t\toffset: pluralOffset,\n\t\t\t\t\t\t\tpluralType: argType === \"plural\" ? \"cardinal\" : \"ordinal\",\n\t\t\t\t\t\t\tlocation\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr: null\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n\t\t}\n\t}\n\ttryParseArgumentClose(openingBracePosition) {\n\t\t// Parse: {value, number, ::currency/GBP }\n\t\t//\n\t\tif (this.isEOF() || this.char() !== 125) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tthis.bump();\n\t\treturn {\n\t\t\tval: true,\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n\t*/\n\tparseSimpleArgStyleIfPossible() {\n\t\tlet nestedBraces = 0;\n\t\tconst startPosition = this.clonePosition();\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tswitch (ch) {\n\t\t\t\tcase 39: {\n\t\t\t\t\t// Treat apostrophe as quoting but include it in the style part.\n\t\t\t\t\t// Find the end of the quoted literal text.\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tlet apostrophePosition = this.clonePosition();\n\t\t\t\t\tif (!this.bumpUntil(\"'\")) {\n\t\t\t\t\t\treturn this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 123: {\n\t\t\t\t\tnestedBraces += 1;\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 125: {\n\t\t\t\t\tif (nestedBraces > 0) {\n\t\t\t\t\t\tnestedBraces -= 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: this.message.slice(startPosition.offset, this.offset()),\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tval: this.message.slice(startPosition.offset, this.offset()),\n\t\t\terr: null\n\t\t};\n\t}\n\tparseNumberSkeletonFromString(skeleton, location) {\n\t\tlet tokens = [];\n\t\ttry {\n\t\t\ttokens = parseNumberSkeletonFromString(skeleton);\n\t\t} catch {\n\t\t\treturn this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n\t\t}\n\t\treturn {\n\t\t\tval: {\n\t\t\t\ttype: SKELETON_TYPE.number,\n\t\t\t\ttokens,\n\t\t\t\tlocation,\n\t\t\t\tparsedOptions: this.shouldParseSkeletons ? parseNumberSkeleton(tokens) : {}\n\t\t\t},\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* @param nesting_level The current nesting level of messages.\n\t* This can be positive when parsing message fragment in select or plural argument options.\n\t* @param parent_arg_type The parent argument's type.\n\t* @param parsed_first_identifier If provided, this is the first identifier-like selector of\n\t* the argument. It is a by-product of a previous parsing attempt.\n\t* @param expecting_close_tag If true, this message is directly or indirectly nested inside\n\t* between a pair of opening and closing tags. The nested message will not parse beyond\n\t* the closing tag boundary.\n\t*/\n\ttryParsePluralOrSelectOptions(nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n\t\tlet hasOtherClause = false;\n\t\tconst options = [];\n\t\tconst parsedSelectors = new Set();\n\t\tlet { value: selector, location: selectorLocation } = parsedFirstIdentifier;\n\t\t// Parse:\n\t\t// one {one apple}\n\t\t// ^--^\n\t\twhile (true) {\n\t\t\tif (selector.length === 0) {\n\t\t\t\tconst startPosition = this.clonePosition();\n\t\t\t\tif (parentArgType !== \"select\" && this.bumpIf(\"=\")) {\n\t\t\t\t\t// Try parse `={number}` selector\n\t\t\t\t\tconst result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tselectorLocation = createLocation(startPosition, this.clonePosition());\n\t\t\t\t\tselector = this.message.slice(startPosition.offset, this.offset());\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Duplicate selector clauses\n\t\t\tif (parsedSelectors.has(selector)) {\n\t\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n\t\t\t}\n\t\t\tif (selector === \"other\") {\n\t\t\t\thasOtherClause = true;\n\t\t\t}\n\t\t\t// Parse:\n\t\t\t// one {one apple}\n\t\t\t// ^----------^\n\t\t\tthis.bumpSpace();\n\t\t\tconst openingBracePosition = this.clonePosition();\n\t\t\tif (!this.bumpIf(\"{\")) {\n\t\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t}\n\t\t\tconst fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n\t\t\tif (fragmentResult.err) {\n\t\t\t\treturn fragmentResult;\n\t\t\t}\n\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\tif (argCloseResult.err) {\n\t\t\t\treturn argCloseResult;\n\t\t\t}\n\t\t\toptions.push([selector, {\n\t\t\t\tvalue: fragmentResult.val,\n\t\t\t\tlocation: createLocation(openingBracePosition, this.clonePosition())\n\t\t\t}]);\n\t\t\t// Keep track of the existing selectors\n\t\t\tparsedSelectors.add(selector);\n\t\t\t// Prep next selector clause.\n\t\t\tthis.bumpSpace();\n\t\t\t({value: selector, location: selectorLocation} = this.parseIdentifierIfPossible());\n\t\t}\n\t\tif (options.length === 0) {\n\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t}\n\t\tif (this.requiresOtherClause && !hasOtherClause) {\n\t\t\treturn this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t}\n\t\treturn {\n\t\t\tval: options,\n\t\t\terr: null\n\t\t};\n\t}\n\ttryParseDecimalInteger(expectNumberError, invalidNumberError) {\n\t\tlet sign = 1;\n\t\tconst startingPosition = this.clonePosition();\n\t\tif (this.bumpIf(\"+\")) {} else if (this.bumpIf(\"-\")) {\n\t\t\tsign = -1;\n\t\t}\n\t\tlet hasDigits = false;\n\t\tlet decimal = 0;\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tif (ch >= 48 && ch <= 57) {\n\t\t\t\thasDigits = true;\n\t\t\t\tdecimal = decimal * 10 + (ch - 48);\n\t\t\t\tthis.bump();\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst location = createLocation(startingPosition, this.clonePosition());\n\t\tif (!hasDigits) {\n\t\t\treturn this.error(expectNumberError, location);\n\t\t}\n\t\tdecimal *= sign;\n\t\tif (!Number.isSafeInteger(decimal)) {\n\t\t\treturn this.error(invalidNumberError, location);\n\t\t}\n\t\treturn {\n\t\t\tval: decimal,\n\t\t\terr: null\n\t\t};\n\t}\n\toffset() {\n\t\treturn this.position.offset;\n\t}\n\tisEOF() {\n\t\treturn this.offset() === this.message.length;\n\t}\n\tclonePosition() {\n\t\t// This is much faster than `Object.assign` or spread.\n\t\treturn {\n\t\t\toffset: this.position.offset,\n\t\t\tline: this.position.line,\n\t\t\tcolumn: this.position.column\n\t\t};\n\t}\n\t/**\n\t* Return the code point at the current position of the parser.\n\t* Throws if the index is out of bound.\n\t*/\n\tchar() {\n\t\tconst offset = this.position.offset;\n\t\tif (offset >= this.message.length) {\n\t\t\tthrow Error(\"out of bound\");\n\t\t}\n\t\tconst code = this.message.codePointAt(offset);\n\t\tif (code === undefined) {\n\t\t\tthrow Error(`Offset ${offset} is at invalid UTF-16 code unit boundary`);\n\t\t}\n\t\treturn code;\n\t}\n\terror(kind, location) {\n\t\treturn {\n\t\t\tval: null,\n\t\t\terr: {\n\t\t\t\tkind,\n\t\t\t\tmessage: this.message,\n\t\t\t\tlocation\n\t\t\t}\n\t\t};\n\t}\n\t/** Bump the parser to the next UTF-16 code unit. */\n\tbump() {\n\t\tif (this.isEOF()) {\n\t\t\treturn;\n\t\t}\n\t\tconst code = this.char();\n\t\tif (code === 10) {\n\t\t\tthis.position.line += 1;\n\t\t\tthis.position.column = 1;\n\t\t\tthis.position.offset += 1;\n\t\t} else {\n\t\t\tthis.position.column += 1;\n\t\t\t// 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n\t\t\tthis.position.offset += code < 65536 ? 1 : 2;\n\t\t}\n\t}\n\t/**\n\t* If the substring starting at the current position of the parser has\n\t* the given prefix, then bump the parser to the character immediately\n\t* following the prefix and return true. Otherwise, don't bump the parser\n\t* and return false.\n\t*/\n\tbumpIf(prefix) {\n\t\tif (this.message.startsWith(prefix, this.offset())) {\n\t\t\tfor (let i = 0; i < prefix.length; i++) {\n\t\t\t\tthis.bump();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Bump the parser until the pattern character is found and return `true`.\n\t* Otherwise bump to the end of the file and return `false`.\n\t*/\n\tbumpUntil(pattern) {\n\t\tconst currentOffset = this.offset();\n\t\tconst index = this.message.indexOf(pattern, currentOffset);\n\t\tif (index >= 0) {\n\t\t\tthis.bumpTo(index);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.bumpTo(this.message.length);\n\t\t\treturn false;\n\t\t}\n\t}\n\t/**\n\t* Bump the parser to the target offset.\n\t* If target offset is beyond the end of the input, bump the parser to the end of the input.\n\t*/\n\tbumpTo(targetOffset) {\n\t\tif (this.offset() > targetOffset) {\n\t\t\tthrow Error(`targetOffset ${targetOffset} must be greater than or equal to the current offset ${this.offset()}`);\n\t\t}\n\t\ttargetOffset = Math.min(targetOffset, this.message.length);\n\t\twhile (true) {\n\t\t\tconst offset = this.offset();\n\t\t\tif (offset === targetOffset) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (offset > targetOffset) {\n\t\t\t\tthrow Error(`targetOffset ${targetOffset} is at invalid UTF-16 code unit boundary`);\n\t\t\t}\n\t\t\tthis.bump();\n\t\t\tif (this.isEOF()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/** advance the parser through all whitespace to the next non-whitespace code unit. */\n\tbumpSpace() {\n\t\twhile (!this.isEOF() && _isWhiteSpace(this.char())) {\n\t\t\tthis.bump();\n\t\t}\n\t}\n\t/**\n\t* Peek at the *next* Unicode codepoint in the input without advancing the parser.\n\t* If the input has been exhausted, then this returns null.\n\t*/\n\tpeek() {\n\t\tif (this.isEOF()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst code = this.char();\n\t\tconst offset = this.offset();\n\t\tconst nextCode = this.message.charCodeAt(offset + (code >= 65536 ? 2 : 1));\n\t\treturn nextCode ?? null;\n\t}\n}\n/**\n* This check if codepoint is alphabet (lower & uppercase)\n* @param codepoint\n* @returns\n*/\nfunction _isAlpha(codepoint) {\n\treturn codepoint >= 97 && codepoint <= 122 || codepoint >= 65 && codepoint <= 90;\n}\nfunction _isAlphaOrSlash(codepoint) {\n\treturn _isAlpha(codepoint) || codepoint === 47;\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n\treturn c === 45 || c === 46 || c >= 48 && c <= 57 || c === 95 || c >= 97 && c <= 122 || c >= 65 && c <= 90 || c == 183 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 893 || c >= 895 && c <= 8191 || c >= 8204 && c <= 8205 || c >= 8255 && c <= 8256 || c >= 8304 && c <= 8591 || c >= 11264 && c <= 12271 || c >= 12289 && c <= 55295 || c >= 63744 && c <= 64975 || c >= 65008 && c <= 65533 || c >= 65536 && c <= 983039;\n}\n/**\n* Code point equivalent of regex `\\p{White_Space}`.\n* From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n*/\nfunction _isWhiteSpace(c) {\n\treturn c >= 9 && c <= 13 || c === 32 || c === 133 || c >= 8206 && c <= 8207 || c === 8232 || c === 8233;\n}\n","import { ErrorKind } from \"./error.js\";\nimport { Parser } from \"./parser.js\";\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement } from \"./types.js\";\nfunction pruneLocation(els) {\n\tels.forEach((el) => {\n\t\tdelete el.location;\n\t\tif (isSelectElement(el) || isPluralElement(el)) {\n\t\t\tfor (const k in el.options) {\n\t\t\t\tdelete el.options[k].location;\n\t\t\t\tpruneLocation(el.options[k].value);\n\t\t\t}\n\t\t} else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n\t\t\tdelete el.style.location;\n\t\t} else if ((isDateElement(el) || isTimeElement(el)) && isDateTimeSkeleton(el.style)) {\n\t\t\tdelete el.style.location;\n\t\t} else if (isTagElement(el)) {\n\t\t\tpruneLocation(el.children);\n\t\t}\n\t});\n}\nexport function parse(message, opts = {}) {\n\topts = {\n\t\tshouldParseSkeletons: true,\n\t\trequiresOtherClause: true,\n\t\t...opts\n\t};\n\tconst result = new Parser(message, opts).parse();\n\tif (result.err) {\n\t\tconst error = SyntaxError(ErrorKind[result.err.kind]);\n\t\t// @ts-expect-error Assign to error object\n\t\terror.location = result.err.location;\n\t\t// @ts-expect-error Assign to error object\n\t\terror.originalMessage = result.err.message;\n\t\tthrow error;\n\t}\n\tif (!opts?.captureLocation) {\n\t\tpruneLocation(result.val);\n\t}\n\treturn result.val;\n}\nexport * from \"./types.js\";\n// only for testing\nexport const _Parser = Parser;\nexport { isStructurallySame } from \"./manipulator.js\";\n","export let ErrorCode = /* @__PURE__ */ function(ErrorCode) {\n\t// When we have a placeholder but no value to format\n\tErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n\t// When value supplied is invalid\n\tErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n\t// When we need specific Intl API but it's not available\n\tErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n\treturn ErrorCode;\n}({});\nexport class FormatError extends Error {\n\tcode;\n\t/**\n\t* Original message we're trying to format\n\t* `undefined` if we're only dealing w/ AST\n\t*\n\t* @type {(string | undefined)}\n\t* @memberof FormatError\n\t*/\n\toriginalMessage;\n\tconstructor(msg, code, originalMessage) {\n\t\tsuper(msg);\n\t\tthis.code = code;\n\t\tthis.originalMessage = originalMessage;\n\t}\n\ttoString() {\n\t\treturn `[formatjs Error: ${this.code}] ${this.message}`;\n\t}\n}\nexport class InvalidValueError extends FormatError {\n\tconstructor(variableId, value, options, originalMessage) {\n\t\tsuper(`Invalid values for \"${variableId}\": \"${value}\". Options are \"${Object.keys(options).join(\"\\\", \\\"\")}\"`, ErrorCode.INVALID_VALUE, originalMessage);\n\t}\n}\nexport class InvalidValueTypeError extends FormatError {\n\tconstructor(value, type, originalMessage) {\n\t\tsuper(`Value for \"${value}\" must be of type ${type}`, ErrorCode.INVALID_VALUE, originalMessage);\n\t}\n}\nexport class MissingValueError extends FormatError {\n\tconstructor(variableId, originalMessage) {\n\t\tsuper(`The intl string context variable \"${variableId}\" was not provided to the string \"${originalMessage}\"`, ErrorCode.MISSING_VALUE, originalMessage);\n\t}\n}\n","import \"@formatjs/ecma402-abstract\";\nimport { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTagElement, isTimeElement } from \"@formatjs/icu-messageformat-parser\";\nimport { ErrorCode, FormatError, InvalidValueError, InvalidValueTypeError, MissingValueError } from \"./error.js\";\nexport let PART_TYPE = /* @__PURE__ */ function(PART_TYPE) {\n\tPART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n\tPART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n\treturn PART_TYPE;\n}({});\nfunction mergeLiteral(parts) {\n\tif (parts.length < 2) {\n\t\treturn parts;\n\t}\n\treturn parts.reduce((all, part) => {\n\t\tconst lastPart = all[all.length - 1];\n\t\tif (!lastPart || lastPart.type !== PART_TYPE.literal || part.type !== PART_TYPE.literal) {\n\t\t\tall.push(part);\n\t\t} else {\n\t\t\tlastPart.value += part.value;\n\t\t}\n\t\treturn all;\n\t}, []);\n}\nexport function isFormatXMLElementFn(el) {\n\treturn typeof el === \"function\";\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, originalMessage) {\n\t// Hot path for straight simple msg translations\n\tif (els.length === 1 && isLiteralElement(els[0])) {\n\t\treturn [{\n\t\t\ttype: PART_TYPE.literal,\n\t\t\tvalue: els[0].value\n\t\t}];\n\t}\n\tconst result = [];\n\tfor (const el of els) {\n\t\t// Exit early for string parts.\n\t\tif (isLiteralElement(el)) {\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: el.value\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\t// TODO: should this part be literal type?\n\t\t// Replace `#` in plural rules with the actual numeric value.\n\t\tif (isPoundElement(el)) {\n\t\t\tif (typeof currentPluralValue === \"number\") {\n\t\t\t\tresult.push({\n\t\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\t\tvalue: formatters.getNumberFormat(locales).format(currentPluralValue)\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst { value: varName } = el;\n\t\t// Enforce that all required values are provided by the caller.\n\t\tif (!(values && varName in values)) {\n\t\t\tthrow new MissingValueError(varName, originalMessage);\n\t\t}\n\t\tlet value = values[varName];\n\t\tif (isArgumentElement(el)) {\n\t\t\tif (!value || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\") {\n\t\t\t\tvalue = typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" ? String(value) : \"\";\n\t\t\t}\n\t\t\tresult.push({\n\t\t\t\ttype: typeof value === \"string\" ? PART_TYPE.literal : PART_TYPE.object,\n\t\t\t\tvalue\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\t// Recursively format plural and select parts' option — which can be a\n\t\t// nested pattern structure. The choosing of the option to use is\n\t\t// abstracted-by and delegated-to the part helper object.\n\t\tif (isDateElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.date[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : undefined;\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getDateTimeFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isTimeElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.time[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : formats.time.medium;\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getDateTimeFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isNumberElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.number[el.style] : isNumberSkeleton(el.style) ? el.style.parsedOptions : undefined;\n\t\t\tif (style && style.scale) {\n\t\t\t\tconst scale = style.scale || 1;\n\t\t\t\t// Handle bigint scale multiplication\n\t\t\t\t// BigInt can only be multiplied by BigInt\n\t\t\t\tif (typeof value === \"bigint\") {\n\t\t\t\t\t// Check if scale is a safe integer that can be converted to BigInt\n\t\t\t\t\tif (!Number.isInteger(scale)) {\n\t\t\t\t\t\tthrow new TypeError(`Cannot apply fractional scale ${scale} to bigint value. Scale must be an integer when formatting bigint.`);\n\t\t\t\t\t}\n\t\t\t\t\tvalue = value * BigInt(scale);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value * scale;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getNumberFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isTagElement(el)) {\n\t\t\tconst { children, value } = el;\n\t\t\tconst formatFn = values[value];\n\t\t\tif (!isFormatXMLElementFn(formatFn)) {\n\t\t\t\tthrow new InvalidValueTypeError(value, \"function\", originalMessage);\n\t\t\t}\n\t\t\tconst parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n\t\t\tlet chunks = formatFn(parts.map((p) => p.value));\n\t\t\tif (!Array.isArray(chunks)) {\n\t\t\t\tchunks = [chunks];\n\t\t\t}\n\t\t\tresult.push(...chunks.map((c) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: typeof c === \"string\" ? PART_TYPE.literal : PART_TYPE.object,\n\t\t\t\t\tvalue: c\n\t\t\t\t};\n\t\t\t}));\n\t\t}\n\t\tif (isSelectElement(el)) {\n\t\t\t// GH #4490: Use hasOwnProperty to avoid prototype chain issues with keys like \"constructor\"\n\t\t\tconst key = value;\n\t\t\tconst opt = (Object.prototype.hasOwnProperty.call(el.options, key) ? el.options[key] : undefined) || el.options.other;\n\t\t\tif (!opt) {\n\t\t\t\tthrow new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n\t\t\t}\n\t\t\tresult.push(...formatToParts(opt.value, locales, formatters, formats, values));\n\t\t\tcontinue;\n\t\t}\n\t\tif (isPluralElement(el)) {\n\t\t\t// GH #4490: Use hasOwnProperty to avoid prototype chain issues\n\t\t\tconst exactKey = `=${value}`;\n\t\t\tlet opt = Object.prototype.hasOwnProperty.call(el.options, exactKey) ? el.options[exactKey] : undefined;\n\t\t\tif (!opt) {\n\t\t\t\tif (!Intl.PluralRules) {\n\t\t\t\t\tthrow new FormatError(`Intl.PluralRules is not available in this environment.\nTry polyfilling it using \"@formatjs/intl-pluralrules\"\n`, ErrorCode.MISSING_INTL_API, originalMessage);\n\t\t\t\t}\n\t\t\t\t// Convert bigint to number for PluralRules (which only accepts number)\n\t\t\t\tconst numericValue = typeof value === \"bigint\" ? Number(value) : value;\n\t\t\t\tconst rule = formatters.getPluralRules(locales, { type: el.pluralType }).select(numericValue - (el.offset || 0));\n\t\t\t\topt = (Object.prototype.hasOwnProperty.call(el.options, rule) ? el.options[rule] : undefined) || el.options.other;\n\t\t\t}\n\t\t\tif (!opt) {\n\t\t\t\tthrow new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n\t\t\t}\n\t\t\t// Convert bigint to number for currentPluralValue\n\t\t\tconst numericValue = typeof value === \"bigint\" ? Number(value) : value;\n\t\t\tresult.push(...formatToParts(opt.value, locales, formatters, formats, values, numericValue - (el.offset || 0)));\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { memoize, strategies } from \"@formatjs/fast-memoize\";\nimport { parse } from \"@formatjs/icu-messageformat-parser\";\nimport { formatToParts, PART_TYPE } from \"./formatters.js\";\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n\tif (!c2) {\n\t\treturn c1;\n\t}\n\treturn {\n\t\t...c1,\n\t\t...c2,\n\t\t...Object.keys(c1).reduce((all, k) => {\n\t\t\tall[k] = {\n\t\t\t\t...c1[k],\n\t\t\t\t...c2[k]\n\t\t\t};\n\t\t\treturn all;\n\t\t}, {})\n\t};\n}\nfunction mergeConfigs(defaultConfig, configs) {\n\tif (!configs) {\n\t\treturn defaultConfig;\n\t}\n\treturn Object.keys(defaultConfig).reduce((all, k) => {\n\t\tall[k] = mergeConfig(defaultConfig[k], configs[k]);\n\t\treturn all;\n\t}, { ...defaultConfig });\n}\nfunction createFastMemoizeCache(store) {\n\treturn { create() {\n\t\treturn {\n\t\t\tget(key) {\n\t\t\t\treturn store[key];\n\t\t\t},\n\t\t\tset(key, value) {\n\t\t\t\tstore[key] = value;\n\t\t\t}\n\t\t};\n\t} };\n}\nfunction createDefaultFormatters(cache = {\n\tnumber: {},\n\tdateTime: {},\n\tpluralRules: {}\n}) {\n\treturn {\n\t\tgetNumberFormat: memoize((...args) => new Intl.NumberFormat(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.number),\n\t\t\tstrategy: strategies.variadic\n\t\t}),\n\t\tgetDateTimeFormat: memoize((...args) => new Intl.DateTimeFormat(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.dateTime),\n\t\t\tstrategy: strategies.variadic\n\t\t}),\n\t\tgetPluralRules: memoize((...args) => new Intl.PluralRules(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.pluralRules),\n\t\t\tstrategy: strategies.variadic\n\t\t})\n\t};\n}\nexport class IntlMessageFormat {\n\tast;\n\tlocales;\n\tresolvedLocale;\n\tformatters;\n\tformats;\n\tmessage;\n\tformatterCache = {\n\t\tnumber: {},\n\t\tdateTime: {},\n\t\tpluralRules: {}\n\t};\n\tconstructor(message, locales = IntlMessageFormat.defaultLocale, overrideFormats, opts) {\n\t\t// Defined first because it's used to build the format pattern.\n\t\tthis.locales = locales;\n\t\tthis.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n\t\tif (typeof message === \"string\") {\n\t\t\tthis.message = message;\n\t\t\tif (!IntlMessageFormat.__parse) {\n\t\t\t\tthrow new TypeError(\"IntlMessageFormat.__parse must be set to process `message` of type `string`\");\n\t\t\t}\n\t\t\tconst { ...parseOpts } = opts || {};\n\t\t\t// Parse string messages into an AST.\n\t\t\tthis.ast = IntlMessageFormat.__parse(message, {\n\t\t\t\t...parseOpts,\n\t\t\t\tlocale: this.resolvedLocale\n\t\t\t});\n\t\t} else {\n\t\t\tthis.ast = message;\n\t\t}\n\t\tif (!Array.isArray(this.ast)) {\n\t\t\tthrow new TypeError(\"A message must be provided as a String or AST.\");\n\t\t}\n\t\t// Creates a new object with the specified `formats` merged with the default\n\t\t// formats.\n\t\tthis.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n\t\tthis.formatters = opts && opts.formatters || createDefaultFormatters(this.formatterCache);\n\t}\n\tformat = (values) => {\n\t\tconst parts = this.formatToParts(values);\n\t\t// Hot path for straight simple msg translations\n\t\tif (parts.length === 1) {\n\t\t\treturn parts[0].value;\n\t\t}\n\t\tconst result = parts.reduce((all, part) => {\n\t\t\tif (!all.length || part.type !== PART_TYPE.literal || typeof all[all.length - 1] !== \"string\") {\n\t\t\t\tall.push(part.value);\n\t\t\t} else {\n\t\t\t\tall[all.length - 1] += part.value;\n\t\t\t}\n\t\t\treturn all;\n\t\t}, []);\n\t\tif (result.length <= 1) {\n\t\t\treturn result[0] || \"\";\n\t\t}\n\t\treturn result;\n\t};\n\tformatToParts = (values) => formatToParts(this.ast, this.locales, this.formatters, this.formats, values, undefined, this.message);\n\tresolvedOptions = () => ({ locale: this.resolvedLocale?.toString() || Intl.NumberFormat.supportedLocalesOf(this.locales)[0] });\n\tgetAst = () => this.ast;\n\tstatic memoizedDefaultLocale = null;\n\tstatic get defaultLocale() {\n\t\tif (!IntlMessageFormat.memoizedDefaultLocale) {\n\t\t\tIntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n\t\t}\n\t\treturn IntlMessageFormat.memoizedDefaultLocale;\n\t}\n\tstatic resolveLocale = (locales) => {\n\t\tif (typeof Intl.Locale === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\t\tconst supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n\t\tif (supportedLocales.length > 0) {\n\t\t\treturn new Intl.Locale(supportedLocales[0]);\n\t\t}\n\t\treturn new Intl.Locale(typeof locales === \"string\" ? locales : locales[0]);\n\t};\n\tstatic __parse = parse;\n\t// Default format options used as the prototype of the `formats` provided to the\n\t// constructor. These are used when constructing the internal Intl.NumberFormat\n\t// and Intl.DateTimeFormat instances.\n\tstatic formats = {\n\t\tnumber: {\n\t\t\tinteger: { maximumFractionDigits: 0 },\n\t\t\tcurrency: { style: \"currency\" },\n\t\t\tpercent: { style: \"percent\" }\n\t\t},\n\t\tdate: {\n\t\t\tshort: {\n\t\t\t\tmonth: \"numeric\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"2-digit\"\n\t\t\t},\n\t\t\tmedium: {\n\t\t\t\tmonth: \"short\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t},\n\t\t\tlong: {\n\t\t\t\tmonth: \"long\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t},\n\t\t\tfull: {\n\t\t\t\tweekday: \"long\",\n\t\t\t\tmonth: \"long\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t}\n\t\t},\n\t\ttime: {\n\t\t\tshort: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\"\n\t\t\t},\n\t\t\tmedium: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\"\n\t\t\t},\n\t\t\tlong: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\",\n\t\t\t\ttimeZoneName: \"short\"\n\t\t\t},\n\t\t\tfull: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\",\n\t\t\t\ttimeZoneName: \"short\"\n\t\t\t}\n\t\t}\n\t};\n}\n","import{IntlMessageFormat as t}from\"intl-messageformat\";import{isValidElement as e}from\"react\";import{I as r,a as o,m as a}from\"../formatters-CJcico0N.js\";function m(...[m,s,i,n]){if(Array.isArray(s))throw new r(o.INVALID_MESSAGE,void 0);if(\"object\"==typeof s)throw new r(o.INSUFFICIENT_PATH,void 0);if(\"string\"==typeof s){const t=function(t,e){return e||/'[{}]/.test(t)?void 0:t}(s,i);if(t)return t}const{cache:f,formats:c,formatters:g,globalFormats:u,locale:d,timeZone:A}=n;let p;g.getMessageFormat||(g.getMessageFormat=function(e,r){return a(((...e)=>new t(e[0],e[1],e[2],{formatters:r,...e[3]})),e.message)}(f,g));try{p=g.getMessageFormat(s,d,function(e,r,o){const a=t.formats.date,m=t.formats.time,s={...e?.dateTime,...r?.dateTime},i={date:{...a,...s},time:{...m,...s},number:{...e?.number,...r?.number}};return o&&[\"date\",\"time\"].forEach((t=>{const e=i[t];for(const[t,r]of Object.entries(e))e[t]={timeZone:o,...r}})),i}(u,c,A),{formatters:{...g,getDateTimeFormat:(t,e)=>g.getDateTimeFormat(t,{...e,timeZone:e?.timeZone??A})}})}catch(t){throw new r(o.INVALID_MESSAGE,void 0)}const w=p.format(i);return e(w)||Array.isArray(w)||\"string\"==typeof w?w:String(w)}m.raw=!0;export{m as default};\n","import{cloneElement as e,isValidElement as t}from\"react\";import r from\"use-intl/format-message\";import{I as n,a as o,c as a,b as s}from\"./formatters-CJcico0N.js\";function c(...e){return e.filter(Boolean).join(\".\")}function i(e){return c(e.namespace,e.key)}function u(e){console.error(e)}function m(e,t,r,n){const o=c(n,r);if(!t)throw new Error(o);let a=t;return r.split(\".\").forEach((t=>{const r=a[t];if(null==t||null==r)throw new Error(o+` (${e})`);a=r})),a}function f(a){const s=function(e,t,r){try{if(!t)throw new Error(void 0);const n=r?m(e,t,r):t;if(!n)throw new Error(r);return n}catch(e){return new n(o.MISSING_MESSAGE,e.message)}}(a.locale,a.messages,a.namespace);return function({cache:a,formats:s,formatters:u,getMessageFallback:f=i,locale:l,messagesOrError:g,namespace:y,onError:h,timeZone:w}){const E=g instanceof n;function S(e,t,r,o){const a=new n(t,r);return h(a),o??f({error:a,key:e,namespace:y})}function d(i,d,p,M){const T=M;let R;if(E){if(!T)return h(g),f({error:g,key:i,namespace:y});R=T}else{const e=g;try{R=m(l,e,i,y)}catch(e){if(!T)return S(i,o.MISSING_MESSAGE,e.message,T);R=T}}try{const n=c(y,i);return r(n,R,d?function(r){const n={};return Object.keys(r).forEach((o=>{let a=0;const s=r[o];let c;c=\"function\"==typeof s?r=>{const n=s(r);return t(n)?e(n,{key:o+a++}):n}:s,n[o]=c})),n}(d):d,{cache:a,formatters:u,globalFormats:s,formats:p,locale:l,timeZone:w})}catch(e){let t,r;return e instanceof n?(t=e.code,r=e.originalMessage):(t=o.FORMATTING_ERROR,r=e.message),S(i,t,r,T)}}function p(e,t,r,n){const a=d(e,t,r,n);return\"string\"!=typeof a?S(e,o.INVALID_MESSAGE,void 0):a}return p.rich=d,p.markup=(e,t,r,n)=>d(e,t,r,n),p.raw=e=>{if(E)return h(g),f({error:g,key:e,namespace:y});const t=g;try{return m(l,t,e,y)}catch(t){return S(e,o.MISSING_MESSAGE,t.message)}},p.has=e=>{if(E)return!1;try{return m(l,g,e,y),!0}catch{return!1}},p}({...a,messagesOrError:s})}function l(e,t){return e===t?void 0:e.slice((t+\".\").length)}const g=3600,y=86400,h=7*y,w=2628e3,E=7884e3,S=365*y,d={second:1,seconds:1,minute:60,minutes:60,hour:g,hours:g,day:y,days:y,week:h,weeks:h,month:w,months:w,quarter:E,quarters:E,year:S,years:S};function p(e){const{_cache:t=s(),_formatters:r=a(t),formats:c,locale:i,onError:m=u,timeZone:f}=e;function l(e){return e?.timeZone||(f?e={...e,timeZone:f}:m(new n(o.ENVIRONMENT_FALLBACK,void 0))),e}function E(e,t,r,a,s){let c;try{c=function(e,t,r){let a;if(\"string\"==typeof t){const r=t;if(a=e?.[r],!a){const e=new n(o.MISSING_FORMAT,void 0);throw m(e),e}}else a=t;return r&&(a={...a,...r}),a}(r,e,t)}catch{return s()}try{return a(c)}catch(e){return m(new n(o.FORMATTING_ERROR,e.message)),s()}}function p(e,t,n){return E(t,n,c?.dateTime,(t=>(t=l(t),r.getDateTimeFormat(i,t).format(e))),(()=>String(e)))}function M(){return e.now?e.now:(m(new n(o.ENVIRONMENT_FALLBACK,void 0)),new Date)}return{dateTime:p,number:function(e,t,n){return E(t,n,c?.number,(t=>r.getNumberFormat(i,t).format(e)),(()=>String(e)))},relativeTime:function(e,t){try{let n,o;const a={};t instanceof Date||\"number\"==typeof t?n=new Date(t):t&&(n=null!=t.now?new Date(t.now):M(),o=t.unit,a.style=t.style,a.numberingSystem=t.numberingSystem),n||(n=M());const s=(new Date(e).getTime()-n.getTime())/1e3;o||(o=function(e){const t=Math.abs(e);return t<60?\"second\":t<g?\"minute\":t<y?\"hour\":t<h?\"day\":t<w?\"week\":t<S?\"month\":\"year\"}(s)),a.numeric=\"second\"===o?\"auto\":\"always\";const c=function(e,t){return Math.round(e/d[t])}(s,o);return r.getRelativeTimeFormat(i,a).format(c,o)}catch(t){return m(new n(o.FORMATTING_ERROR,t.message)),String(e)}},list:function(e,t,n){const o=[],a=new Map;let s=0;for(const t of e){let e;\"object\"==typeof t?(e=String(s),a.set(e,t)):e=String(t),o.push(e),s++}return E(t,n,c?.list,(e=>{const t=r.getListFormat(i,e).formatToParts(o).map((e=>\"literal\"===e.type?e.value:a.get(e.value)||e.value));return a.size>0?t:t.join(\"\")}),(()=>String(e)))},dateTimeRange:function(e,t,n,o){return E(n,o,c?.dateTime,(n=>(n=l(n),r.getDateTimeFormat(i,n).formatRange(e,t))),(()=>[p(e),p(t)].join(\" – \")))}}}function M({formats:e,getMessageFallback:t,messages:r,onError:n,...o}){return{...o,formats:e||void 0,messages:r||void 0,onError:n||u,getMessageFallback:t||i}}export{f as a,u as b,p as c,i as d,M as i,l as r};\n","import{createContext as e,useContext as r,useMemo as t,useState as o,useEffect as n}from\"react\";import{b as a,c as s,I as c,a as i}from\"./formatters-CJcico0N.js\";import{i as m,r as f,a as u,c as l}from\"./initializeConfig-Brh10fyG.js\";import{jsx as g}from\"react/jsx-runtime\";const d=e(void 0);function v({children:e,formats:o,getMessageFallback:n,locale:c,messages:i,now:f,onError:u,timeZone:l}){const v=r(d),w=t((()=>v?.cache||a()),[c,v?.cache]),p=t((()=>v?.formatters||s(w)),[w,v?.formatters]),h=t((()=>({...m({locale:c,formats:void 0===o?v?.formats:o,getMessageFallback:n||v?.getMessageFallback,messages:void 0===i?v?.messages:i,now:f||v?.now,onError:u||v?.onError,timeZone:l||v?.timeZone}),formatters:p,cache:w})),[w,o,p,n,c,i,f,u,v,l]);return g(d.Provider,{value:h,children:e})}function w(){const e=r(d);if(!e)throw new Error(void 0);return e}let p=!1;const h=\"undefined\"==typeof window;function E(e){return function(e,r,o){const{cache:n,formats:a,formatters:s,getMessageFallback:m,locale:l,onError:g,timeZone:d}=w(),v=e[o],E=f(r,o);return d||p||!h||(p=!0,g(new c(i.ENVIRONMENT_FALLBACK,void 0))),t((()=>u({cache:n,formatters:s,getMessageFallback:m,messages:v,namespace:E,onError:g,formats:a,locale:l,timeZone:d})),[n,s,m,v,E,g,a,l,d])}({\"!\":w().messages},e?`!.${e}`:\"!\",\"!\")}function Z(){return w().locale}function k(){return new Date}function b(e){const r=e?.updateInterval,{now:t}=w(),[a,s]=o(t||k());return n((()=>{if(!r)return;const e=setInterval((()=>{s(k())}),r);return()=>{clearInterval(e)}}),[t,r]),null==r&&t?t:a}function F(){return w().timeZone}function M(){const e=w();if(!e.messages)throw new Error(void 0);return e.messages}function I(){const{formats:e,formatters:r,locale:o,now:n,onError:a,timeZone:s}=w();return t((()=>l({formats:e,locale:o,now:n,onError:a,timeZone:s,_formatters:r})),[e,r,n,o,a,s])}function j(e,...r){let t,o;return\"string\"==typeof e?(t=r[0],o=r[1]):(t=e.values,o=e.formats),[void 0,t,o,void 0]}function x(e){const r=E(e);function t(...e){return r(...j(...e))}return t.rich=(...e)=>r.rich(...j(...e)),t.markup=(...e)=>r.markup(...j(...e)),t.has=function(e){return!0},t}export{v as IntlProvider,x as _useExtracted,I as useFormatter,Z as useLocale,M as useMessages,b as useNow,F as useTimeZone,E as useTranslations};\n","import { useState } from \"preact/hooks\";\nimport { resolveSetStateAction } from \"../../utils/helpers\";\n\ntype Setter<T> = React.Dispatch<React.SetStateAction<T>>;\n\nexport interface ValueState<T> {\n\tvalue: T;\n\tset: Setter<T>;\n}\n\nconst useValueState = <T>(\n\tinitialState: T,\n\tstateUpdateCallback?: (newValue: T) => void\n): Readonly<ValueState<T>> => {\n\tconst [state, setState] = useState<T>(initialState);\n\n\tconst wrappedSetState = (action: React.SetStateAction<T>) => {\n\t\tif (!stateUpdateCallback) {\n\t\t\treturn setState(action);\n\t\t}\n\t\tsetState(prev => {\n\t\t\tconst resolvedValue = resolveSetStateAction(action, prev);\n\t\t\tstateUpdateCallback(resolvedValue);\n\t\t\treturn resolvedValue;\n\t\t});\n\t};\n\treturn { value: state, set: wrappedSetState } as const;\n};\n\nexport default useValueState;\n","import useValueState, { ValueState } from \"./use-value-state\";\n\nexport interface UseDialogRegisterReturn {\n\tisOpen: boolean;\n\tonClose: () => void;\n}\n\nexport interface UseDialogReturn {\n\tregister: () => UseDialogRegisterReturn;\n\tstate: ValueState<boolean>;\n}\n\nconst useDialog = (initialState: boolean = false): UseDialogReturn => {\n\tconst state = useValueState<boolean>(initialState);\n\n\tconst onClose = () => state.set(false);\n\n\tfunction register() {\n\t\treturn {\n\t\t\tisOpen: state.value,\n\t\t\tonClose\n\t\t};\n\t}\n\n\treturn {\n\t\tregister,\n\t\tstate\n\t} as const;\n};\n\nexport default useDialog;\n","import { Inputs, useEffect, useRef, useState } from \"preact/hooks\";\n\nconst useOnce = (callback: (resolve: () => void) => void, deps?: Inputs) => {\n\tconst state = useState(false);\n\tconst effectRef = useRef(false);\n\n\tuseEffect(() => {\n\t\tif (!effectRef.current) {\n\t\t\tcallback(() => {\n\t\t\t\tstate[1](true);\n\t\t\t\teffectRef.current = true;\n\t\t\t});\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, deps);\n\n\treturn state;\n};\n\nexport default useOnce;\n","import { createContext } from \"preact\";\nimport { ValueState } from \"../hooks/common/use-value-state\";\nimport { ReturnViewState, WidgetViewState } from \"../types\";\nimport { WidgetConfiguration } from \"../utils/initialization/types\";\n\nexport interface IWidgetContext {\n\twidgetViewState: ValueState<WidgetViewState>;\n\treturnViewState: ValueState<ReturnViewState>;\n\tconfig: WidgetConfiguration;\n}\n\nexport const WidgetContext = createContext<IWidgetContext>(\n\t{} as IWidgetContext\n);\n","import { useContext } from \"preact/hooks\";\nimport { WidgetContext } from \"../../context/widget-context\";\n\nconst useWidgetContext = () => {\n\tconst context = useContext(WidgetContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t\"useWidgetContext must be used within a WidgetContextProvider\"\n\t\t);\n\t}\n\treturn context;\n};\n\nexport default useWidgetContext;\n","import { PLATFORM_URL } from \"../constants\";\nimport { clearCart } from \"./cart\";\nimport { getResolvedSearchParams } from \"./helpers\";\nimport { Locale } from \"./i18n\";\nimport { logger } from \"./logger\";\nimport { clearSession } from \"./shopify\";\n\nexport default {\n\tback: async (locale: Locale, slug: string, fallbackProductId?: string) => {\n\t\tconst constructedPlatformUrl = new URL(`/${locale}`, PLATFORM_URL);\n\n\t\tif (slug) {\n\t\t\tconstructedPlatformUrl.pathname += `/${slug}`;\n\t\t}\n\n\t\tconst searchParams = getResolvedSearchParams();\n\t\tconst lastExchangeProductId = searchParams.get(\"from\") ?? fallbackProductId;\n\n\t\tif (lastExchangeProductId) {\n\t\t\tconst strippedProductId = lastExchangeProductId.split(\"/\").at(-1);\n\n\t\t\tif (strippedProductId) {\n\t\t\t\tconstructedPlatformUrl.pathname += `/${strippedProductId}`;\n\t\t\t\tconstructedPlatformUrl.searchParams.append(\"step\", \"-1\");\n\t\t\t}\n\t\t}\n\n\t\tawait clearCart();\n\t\tclearSession();\n\n\t\twindow.location.href = constructedPlatformUrl.toString();\n\t},\n\tcontinue: (locale: Locale, slug: string) => {\n\t\tconst confirmationUrl = new URL(\n\t\t\t`/${locale}/${slug}/confirmation`,\n\t\t\tPLATFORM_URL\n\t\t);\n\n\t\tconst encodedSlug = encodeURIComponent(window.location.pathname);\n\t\tconfirmationUrl.searchParams.append(\"from\", encodedSlug);\n\n\t\twindow.location.href = confirmationUrl.toString();\n\t},\n\texit: async (clearCartOnExit: boolean = true) => {\n\t\tif (clearCartOnExit) {\n\t\t\ttry {\n\t\t\t\tawait clearCart();\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Failed to clear cart on exit\", err);\n\t\t\t}\n\t\t}\n\t\tclearSession();\n\t\twindow.location.reload();\n\t}\n};\n","import { createContext } from \"preact\";\nimport {\n\tCalculationParams,\n\tCartState\n} from \"../../components/providers/return-context-provider\";\nimport { IUseAsyncStateReturn } from \"../hooks/common/use-async-state\";\nimport { CalculationResponse } from \"../types\";\nimport { ProcessOrderInitializationReturn } from \"../utils/api\";\n\nexport interface IReturnContext {\n\torderState: IUseAsyncStateReturn<ProcessOrderInitializationReturn>;\n\tcartState: IUseAsyncStateReturn<CartState, ProcessOrderInitializationReturn>;\n\tcalculationState: IUseAsyncStateReturn<\n\t\tCalculationResponse,\n\t\tCalculationParams\n\t>;\n\tisPending: boolean;\n\thasFailed: boolean;\n}\n\nexport const ReturnContext = createContext<IReturnContext>(\n\t{} as IReturnContext\n);\n","import { useContext } from \"preact/hooks\";\nimport { ReturnContext } from \"../../context/return-context\";\n\nconst useReturnContext = () => {\n\tconst context = useContext(ReturnContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t\"useReturnContext must be used within a ReturnContextProvider\"\n\t\t);\n\t}\n\treturn context;\n};\n\nexport default useReturnContext;\n","import { IMAGE_FALLBACK_URL } from \"../../lib/constants\";\nimport { cn } from \"../../lib/utils/helpers\";\n\ninterface ImageProps\n\textends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n\tsrc: string | null | undefined;\n}\n\nconst Image = ({ src, className, ...props }: ImageProps) => {\n\treturn (\n\t\t<img\n\t\t\tsrc={src || IMAGE_FALLBACK_URL}\n\t\t\tclassName={cn(\"rf-image\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default Image;\n","const SkeletonContainer = ({\n\tpending = false,\n\tskeleton,\n\tchildren\n}: {\n\tpending?: boolean;\n\tskeleton: preact.ComponentChildren;\n\tchildren?: preact.ComponentChildren;\n}) => {\n\tswitch (pending) {\n\t\tcase true:\n\t\t\treturn skeleton;\n\t\tdefault:\n\t\t\treturn children;\n\t}\n};\n\nexport default SkeletonContainer;\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../../lib/utils/helpers\";\n\nconst avatarVariants = cva(\n\t\"rf-avatar size-[26px] rounded-full border overflow-hidden\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tlight: \"bg-white text-black border-[#E1E1E1]\",\n\t\t\t\tdark: \"bg-[#555555] text-white border-black\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"light\"\n\t\t}\n\t}\n);\n\nexport type AvatarVariants = VariantProps<typeof avatarVariants>;\n\ninterface AvatarProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tAvatarVariants {\n\tchildren: preact.ComponentChildren;\n}\n\nconst Avatar = ({ children, className, variant, ...props }: AvatarProps) => {\n\treturn (\n\t\t<div className={cn(avatarVariants({ variant }), className)} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default memo(Avatar);\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst Skeleton = ({\n\tclassName,\n\t...props\n}: Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-skeleton bg-neutral-2 animate-pulse rounded-md h-[1.5em]\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<span className=\"rf-skeleton__sr-text sr-only\">Loading...</span>\n\t\t</div>\n\t);\n};\n\nexport default Skeleton;\n","import Skeleton from \"../skeleton/skeleton\";\n\nconst AvatarStackSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-avatar-stack-skeleton flex -space-x-1\">\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[1]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[2]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[3]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AvatarStackSkeleton;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport Image from \"../image\";\nimport SkeletonContainer from \"../skeleton/skeleton-container\";\nimport Avatar, { AvatarVariants } from \"./avatar\";\nimport AvatarStackSkeleton from \"./avatar-stack-skeleton\";\n\nexport interface AvatarImage {\n\tsrc: string | undefined;\n\talt: string;\n}\n\ninterface AvatarStackProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n\t\tAvatarVariants {\n\timages: AvatarImage[];\n\tmaxVisibleAvatars?: number | null;\n\tpending?: boolean;\n}\n\nconst AvatarStack = ({\n\timages,\n\tvariant,\n\tmaxVisibleAvatars = 2,\n\tclassName,\n\tpending = false,\n\t...props\n}: AvatarStackProps) => {\n\tconst sliceIndex = maxVisibleAvatars ?? images.length;\n\n\treturn (\n\t\t<SkeletonContainer skeleton={<AvatarStackSkeleton />} pending={pending}>\n\t\t\t{images.length > 0 && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\"rf-avatar-stack flex -space-x-1\", className)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{images.slice(0, sliceIndex).map(({ src, alt }, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\t\tclassName=\"relative\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tzIndex: index + 1\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tclassName=\"rf-avatar-stack__image size-full object-cover\"\n\t\t\t\t\t\t\t\t\tsrc={src}\n\t\t\t\t\t\t\t\t\talt={alt}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t{sliceIndex < images.length && (\n\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tzIndex: sliceIndex + 1\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"flex items-center justify-center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"rf-avatar-stack__count text-[10px]\">\n\t\t\t\t\t\t\t\t+{images.length - sliceIndex}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default AvatarStack;\n","import { useMemo } from \"preact/hooks\";\nimport useReturnContext from \"../lib/hooks/context/use-return-context\";\nimport AvatarStack, { AvatarImage } from \"./ui/avatar/avatar-stack\";\n\nconst ReturnAvatarStack = () => {\n\tconst { orderState } = useReturnContext();\n\n\tconst formattedImages = useMemo(() => {\n\t\tconst exchangeProducts =\n\t\t\torderState.value.data?.orderData.productsToExchange ?? [];\n\t\treturn exchangeProducts.reduce<AvatarImage[]>((acc, product) => {\n\t\t\tfor (let i = 0; i < product.quantity; i++) {\n\t\t\t\tacc.push({\n\t\t\t\t\tsrc: product.image,\n\t\t\t\t\talt: product.title\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\t}, [orderState.value.data?.orderData.productsToExchange]);\n\n\treturn (\n\t\t<AvatarStack\n\t\t\tpending={orderState.value.pending}\n\t\t\tvariant=\"light\"\n\t\t\timages={formattedImages}\n\t\t/>\n\t);\n};\n\nexport default ReturnAvatarStack;\n","import { createContext } from \"preact\";\nimport { UseDialogRegisterReturn } from \"../hooks/common/use-dialog\";\n\nexport type IDialogContext = UseDialogRegisterReturn;\n\nexport const DialogContext = createContext<IDialogContext | null>(null);\n","import { useEffect, useState } from \"preact/hooks\";\n\nconst useIsMounted = () => {\n\tconst [mounted, setMounted] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\treturn mounted;\n};\n\nexport default useIsMounted;\n","import { createContext, RefObject } from \"preact\";\n\nexport const RootContext = createContext<RefObject<HTMLDivElement> | null>(\n\tnull\n);\n","import { useContext } from \"preact/hooks\";\nimport { ROOT_ELEMENT_ID } from \"../../constants\";\nimport { RootContext } from \"../../context/root-context\";\n\nconst useRoot = () => {\n\tconst context = useContext(RootContext);\n\tif (!context) {\n\t\tthrow new Error(\"useRoot must be used within a RootProvider\");\n\t}\n\treturn () => {\n\t\tconst rootElement = context.current;\n\t\tif (!rootElement) {\n\t\t\treturn document.getElementById(ROOT_ELEMENT_ID);\n\t\t}\n\t\treturn rootElement;\n\t};\n};\n\nexport default useRoot;\n","import { useRef } from \"preact/hooks\";\nimport { cn } from \"../../../lib/utils/helpers\";\n\ninterface DialogBackdropProps extends React.HTMLAttributes<HTMLElement> {\n\tisVisible?: boolean;\n\tonClick?: () => void;\n}\n\nconst DialogBackdrop = ({\n\tonClick,\n\tclassName,\n\tchildren,\n\tisVisible = true,\n\t...props\n}: DialogBackdropProps) => {\n\tconst elementRef = useRef<HTMLElement>(null);\n\n\tfunction handleClick(event: preact.JSX.TargetedMouseEvent<HTMLElement>) {\n\t\tif (onClick && event.target === elementRef.current) {\n\t\t\tonClick();\n\t\t}\n\t}\n\n\treturn (\n\t\t<aside\n\t\t\tonClick={handleClick}\n\t\t\tref={elementRef}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__backdrop fixed inset-0 size-full z-50 flex items-center justify-center p-6\",\n\t\t\t\tisVisible && \"rf-dialog__backdrop--visible bg-black/50\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</aside>\n\t);\n};\n\nexport default DialogBackdrop;\n","import { createPortal } from \"preact/compat\";\nimport { useEffect } from \"preact/hooks\";\nimport {\n\tDialogContext,\n\tIDialogContext\n} from \"../../../lib/context/dialog-context\";\nimport { UseDialogRegisterReturn } from \"../../../lib/hooks/common/use-dialog\";\nimport useIsMounted from \"../../../lib/hooks/common/use-is-mounted\";\nimport useRoot from \"../../../lib/hooks/context/use-root\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport DialogBackdrop from \"./dialog-backdrop\";\n\nexport interface DialogModalProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"onClose\">,\n\t\tUseDialogRegisterReturn {\n\tfadeIn?: boolean;\n\tshowBackdrop?: boolean;\n\tdismissOnBackdropClick?: boolean;\n\tdismissOnEscape?: boolean;\n}\n\nconst DialogModal = ({\n\tisOpen,\n\tonClose,\n\tfadeIn = true,\n\tshowBackdrop = true,\n\tdismissOnBackdropClick = true,\n\tdismissOnEscape,\n\tclassName,\n\t...props\n}: DialogModalProps) => {\n\tconst getRoot = useRoot();\n\tconst isMounted = useIsMounted();\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClose?.();\n\t\t\t}\n\t\t};\n\n\t\tif (dismissOnEscape) {\n\t\t\tif (isOpen) {\n\t\t\t\tdocument.addEventListener(\"keydown\", handleEscape);\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener(\"keydown\", handleEscape);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (dismissOnEscape) {\n\t\t\t\tdocument.removeEventListener(\"keydown\", handleEscape);\n\t\t\t}\n\t\t};\n\t}, [dismissOnEscape, onClose, isOpen]);\n\n\tif (!isOpen || !isMounted) {\n\t\treturn null;\n\t}\n\n\tconst root = getRoot();\n\n\tif (!root) {\n\t\tlogger.error(\"Root element not found\");\n\t\treturn null;\n\t}\n\n\tconst contextValue: IDialogContext = {\n\t\tisOpen,\n\t\tonClose\n\t};\n\n\treturn createPortal(\n\t\t<DialogBackdrop\n\t\t\tclassName={fadeIn ? \"animate-fade-in\" : undefined}\n\t\t\tisVisible={showBackdrop}\n\t\t\tonClick={dismissOnBackdropClick ? onClose : undefined}\n\t\t>\n\t\t\t<DialogContext.Provider value={contextValue}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-dialog m-auto w-full p-8 rounded-lg bg-white shadow-lg max-w-2xl\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</DialogContext.Provider>\n\t\t</DialogBackdrop>,\n\t\troot\n\t);\n};\n\nexport default DialogModal;\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst DialogTitle = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLHeadingElement>) => {\n\treturn (\n\t\t<h2\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__title text-2xl font-medium leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default DialogTitle;\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst DialogSubtitle = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => {\n\treturn (\n\t\t<p\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__subtitle text-neutral-3 py-2.5 leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default DialogSubtitle;\n","const ArrowRightIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={9}\n\t\tviewBox=\"0 0 11 9\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-right ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M10.273 4.427 6.66.954a.55.55 0 0 0-.387-.153.56.56 0 0 0-.387.153l-.328.316a.52.52 0 0 0 0 .749l2.107 2.03H.973a.524.524 0 0 0-.54.517v.446c0 .29.238.54.54.54H7.69L5.56 7.594a.505.505 0 0 0 0 .74l.327.314c.103.099.24.153.387.153a.56.56 0 0 0 .387-.154l3.612-3.473a.513.513 0 0 0 0-.747\" />\n\t</svg>\n);\nexport default ArrowRightIcon;\n","const XIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={11}\n\t\tviewBox=\"0 0 11 11\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--x ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M1.45 10.572a.92.92 0 0 1-.655-.221.92.92 0 0 1 0-1.299l7.82-7.82a.921.921 0 0 1 1.344 1.253l-7.865 7.866a.92.92 0 0 1-.645.22\" />\n\t\t<path d=\"M9.26 10.572a.92.92 0 0 1-.645-.267l-7.82-7.82a.921.921 0 0 1 1.299-1.298l7.865 7.82a.92.92 0 0 1 0 1.344.92.92 0 0 1-.7.22\" />\n\t</svg>\n);\nexport default XIcon;\n","const Spinner = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => {\n\treturn (\n\t\t<svg\n\t\t\twidth=\"1.5em\"\n\t\t\theight=\"1.5em\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tfill=\"currentColor\"\n\t\t\tclassName={`rf-icon rf-icon--spinner ${className || \"\"}`}\n\t\t\t{...props}\n\t\t>\n\t\t\t<g>\n\t\t\t\t<path opacity={0.14} d=\"M11 1h2v5h-2z\" />\n\t\t\t\t<path opacity={0.29} d=\"m16.634 1.974 1.732 1-2.5 4.33-1.732-1z\" />\n\t\t\t\t<path opacity={0.43} d=\"m21.026 5.634 1 1.732-4.33 2.5-1-1.732z\" />\n\t\t\t\t<path opacity={0.57} d=\"M23 11v2h-5v-2z\" />\n\t\t\t\t<path opacity={0.71} d=\"m22.026 16.634-1 1.732-4.33-2.5 1-1.732z\" />\n\t\t\t\t<path opacity={0.86} d=\"m18.366 21.026-1.732 1-2.5-4.33 1.732-1z\" />\n\t\t\t\t<path d=\"M13 23h-2v-5h2z\" />\n\t\t\t\t<animateTransform\n\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\ttype=\"rotate\"\n\t\t\t\t\tcalcMode=\"discrete\"\n\t\t\t\t\tdur=\"0.75s\"\n\t\t\t\t\tvalues=\"0 12 12;30 12 12;60 12 12;90 12 12;120 12 12;150 12 12;180 12 12;210 12 12;240 12 12;270 12 12;300 12 12;330 12 12;360 12 12\"\n\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t);\n};\n\nexport default Spinner;\n","// components/ui/Button.tsx\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Spinner from \"../icons/spinner\";\n\nconst buttonVariants = cva(\n\t\"disabled:cursor-not-allowed h-12 rounded-md text-base font-medium flex items-center justify-center whitespace-nowrap gap-2 px-8 relative transition-all duration-300 ease-in-out [--icon-width:auto] [--icon-height:0.65em] desktop:[--icon-height:0.75em]\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-button-background text-button-foreground disabled:!bg-button-background-disabled disabled:!text-button-foreground-disabled desktop:hover:opacity-80\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-neutral-2 text-black bg-transparent disabled:!text-button-foreground-disabled desktop:hover:opacity-80\",\n\t\t\t\tghost:\n\t\t\t\t\t\"text-neutral-3 font-normal gap-1 disabled:!opacity-50 disabled:cursor-not-allowed desktop:hover:opacity-80\"\n\t\t\t}\n\t\t}\n\t}\n);\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof buttonVariants> {\n\ticon?: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;\n\ticonPosition?: \"left\" | \"right\";\n\tpending?: boolean;\n}\n\nconst Button = ({\n\tchildren,\n\tclassName,\n\ticon: Icon,\n\tvariant = \"primary\",\n\tpending = false,\n\tdisabled = false,\n\ticonPosition = \"right\",\n\t...props\n}: ButtonProps) => {\n\treturn (\n\t\t<button\n\t\t\taria-busy={pending}\n\t\t\tdisabled={disabled || pending}\n\t\t\ttype=\"button\"\n\t\t\tclassName={cn(\n\t\t\t\tbuttonVariants({ variant }),\n\t\t\t\t\"rf-button\",\n\t\t\t\t`rf-button--${variant}`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{pending && <Spinner className=\"absolute inset-0 m-auto\" />}\n\t\t\t<span\n\t\t\t\tclassName=\"rf-button__text\"\n\t\t\t\tstyle={{\n\t\t\t\t\tvisibility: pending ? \"hidden\" : \"visible\"\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t{!!Icon && (\n\t\t\t\t<Icon\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tvisibility: pending ? \"hidden\" : \"visible\"\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-button__icon w-[var(--icon-width)] h-[var(--icon-height)]\",\n\t\t\t\t\t\ticonPosition === \"left\" ? \"-order-1\" : \"order-1\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</button>\n\t);\n};\n\nexport default memo(Button);\n","import { cn } from \"../../../lib/utils/helpers\";\nimport ArrowRightIcon from \"../../icons/arrow-right\";\nimport XIcon from \"../../icons/x\";\nimport Button from \"../../ui/button\";\nimport { ButtonProps } from \"../../ui/button\";\n\n// eslint-disable-next-line react-refresh/only-export-components\nconst Accept = ({ className, ...props }: ButtonProps) => {\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__button rf-dialog__button--accept w-full\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\ticon={ArrowRightIcon}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n// eslint-disable-next-line react-refresh/only-export-components\nconst Reject = ({ className, ...props }: ButtonProps) => {\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__button rf-dialog__button--reject w-full\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tvariant=\"outline\"\n\t\t\ticon={XIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default {\n\tAccept,\n\tReject\n};\n","import DialogModal, { type DialogModalProps } from \"./dialog-modal\";\nimport DialogTitle from \"./dialog-title\";\nimport DialogSubtitle from \"./dialog-subtitle\";\nimport DialogButton from \"./dialog-button\";\n\nexport type { DialogModalProps };\n\nconst Dialog = {\n\tModal: DialogModal,\n\tTitle: DialogTitle,\n\tSubtitle: DialogSubtitle,\n\tAccept: DialogButton.Accept,\n\tReject: DialogButton.Reject\n};\n\nexport default Dialog;\n","import { useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useDialog from \"../../lib/hooks/common/use-dialog\";\nimport useOnce from \"../../lib/hooks/common/use-once\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { isOnCartPage } from \"../../lib/utils/helpers\";\nimport navigation from \"../../lib/utils/navigation\";\nimport storage, {\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY\n} from \"../../lib/utils/storage\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\nimport Dialog from \"./common\";\n\ntype DecisionState = \"cart_detection\" | \"cookie_detection\";\n\nconst ReturnDecisionDialog = () => {\n\tconst {\n\t\tconfig: { isFirstLoad }\n\t} = useWidgetContext();\n\tconst [decisionState, setDecisionState] = useState<DecisionState | null>(\n\t\tnull\n\t);\n\n\tuseOnce(resolve => {\n\t\tresolve();\n\n\t\tif (isOnCartPage()) {\n\t\t\tsetDecisionState(\"cart_detection\");\n\t\t} else if (!isFirstLoad) {\n\t\t\tconst expiration = storage.get<number>(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\t\t\tif (expiration && Date.now() > expiration) {\n\t\t\t\tstorage.remove(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\t\t\t\tsetDecisionState(\"cookie_detection\");\n\t\t\t}\n\t\t}\n\t}, []);\n\n\tif (!decisionState) {\n\t\treturn null;\n\t}\n\n\treturn <DecisionDialog decisionState={decisionState} />;\n};\n\nfunction DecisionDialog({ decisionState }: { decisionState: DecisionState }) {\n\tconst t = useTranslations(`dialog.return_decision.${decisionState}`);\n\tconst { widgetViewState } = useWidgetContext();\n\tconst modal = useDialog(true);\n\n\tconst dialog = modal.register();\n\n\tfunction handleConfirm() {\n\t\tdialog.onClose();\n\t\tif (decisionState === \"cart_detection\") {\n\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t}\n\t}\n\n\tfunction handleReject() {\n\t\tnavigation.exit();\n\t}\n\n\treturn (\n\t\t<Dialog.Modal\n\t\t\tclassName=\"text-center flex flex-col gap-2 items-center\"\n\t\t\t{...dialog}\n\t\t>\n\t\t\t<ReturnAvatarStack />\n\t\t\t<Dialog.Title>{t(\"title\")}</Dialog.Title>\n\t\t\t<Dialog.Subtitle>{t(\"subtext\")}</Dialog.Subtitle>\n\t\t\t<Dialog.Accept onClick={handleConfirm}>{t(\"confirm\")}</Dialog.Accept>\n\t\t\t<Dialog.Reject onClick={handleReject}>{t(\"reject\")}</Dialog.Reject>\n\t\t</Dialog.Modal>\n\t);\n}\n\nexport default ReturnDecisionDialog;\n","import ReturnDecisionDialog from \"../dialog/return-decision-dialog\";\n\nconst DialogHandler = () => {\n\treturn (\n\t\t<>\n\t\t\t<ReturnDecisionDialog />\n\t\t</>\n\t);\n};\n\nexport default DialogHandler;\n","import { createContext } from \"preact\";\nimport { ToastOptions, ToastQueue } from \"../../components/toast/toast\";\n\nexport interface ToastConfiguration extends Omit<ToastOptions, \"id\"> {\n\tid?: string; // Make id optional for easier usage\n}\n\nexport const DEFAULT_TOAST_DURATION = 5000; // Default duration in milliseconds\nexport const TOAST_ANIMATION_DURATION = 300; // Default animation duration in milliseconds\n\nexport interface IToastContext {\n\tqueue: ToastQueue[];\n\tadd: (options: ToastConfiguration) => string; // Returns the ID of the added toast\n\tremove: (id: string) => void;\n\tclear: () => void;\n}\n\nexport const ToastContext = createContext<IToastContext>({} as IToastContext);\n","import { useContext } from \"preact/hooks\";\nimport { ToastContext } from \"../../context/toast-context\";\n\nconst useToast = () => {\n\tconst context = useContext(ToastContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"useToast must be used within a ToastProvider\");\n\t}\n\n\treturn context;\n};\n\nexport default useToast;\n","import { useEffect } from \"preact/hooks\";\nimport {\n\temitEvent,\n\tregisterBridge,\n\tunregisterBridge\n} from \"../../../../api/state-bridge\";\nimport { WidgetViewState } from \"../../types\";\nimport useReturnContext from \"../context/use-return-context\";\nimport useToast from \"../context/use-toast\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\n/**\n * Hook that registers the widget's React state with the API bridge.\n * This allows the public API to interact with the widget's internal state.\n */\nconst useApiBridge = () => {\n\tconst { widgetViewState, config } = useWidgetContext();\n\tconst returnContext = useReturnContext();\n\tconst toastContext = useToast();\n\n\t// Register the bridge on mount, unregister on unmount\n\tuseEffect(() => {\n\t\tregisterBridge({ widgetViewState, returnContext, toastContext, config });\n\n\t\treturn () => {\n\t\t\tunregisterBridge();\n\t\t};\n\t}, [widgetViewState, returnContext, toastContext, config]);\n\n\t// Emit drawer state change events\n\tuseEffect(() => {\n\t\tconst state = widgetViewState.value;\n\t\tif (state === WidgetViewState.Open) {\n\t\t\temitEvent(\"drawer:open\");\n\t\t} else {\n\t\t\temitEvent(\"drawer:close\");\n\t\t}\n\t}, [widgetViewState.value]);\n\n\t// Emit cart update events\n\tuseEffect(() => {\n\t\tconst cart = returnContext.cartState.value.data?.original;\n\t\tif (cart) {\n\t\t\temitEvent(\"cart:updated\", cart);\n\t\t}\n\t}, [returnContext.cartState.value.data]);\n\n\t// Emit calculation update events\n\tuseEffect(() => {\n\t\tconst calculation = returnContext.calculationState.value.data;\n\t\tif (calculation) {\n\t\t\temitEvent(\"calculation:updated\", calculation);\n\t\t}\n\t}, [returnContext.calculationState.value.data]);\n};\n\nexport default useApiBridge;\n","export enum ProductErrorState {\n\tUnknown = \"unknown_error\",\n\tNetworkError = \"network_error\",\n\tProductLimit = \"product_limit\"\n}\n\nconst PRODUCT_ERROR_CODE_TO_STATE = {\n\t422: ProductErrorState.ProductLimit\n} satisfies Partial<Record<number, ProductErrorState>>;\n\nexport function getErrorStateFromCode(code: number | null): ProductErrorState {\n\tif (code !== null && code in PRODUCT_ERROR_CODE_TO_STATE) {\n\t\treturn PRODUCT_ERROR_CODE_TO_STATE[\n\t\t\tcode as keyof typeof PRODUCT_ERROR_CODE_TO_STATE\n\t\t];\n\t}\n\treturn ProductErrorState.Unknown;\n}\n","import { TimeoutInterceptorHandler } from \".\";\nimport { CustomEventPayloadMap, InternalCustomEvent } from \"../custom-events\";\nimport { logger } from \"../logger\";\n\nexport type FetchInterceptionCallback = (\n\tpayload: CustomEventPayloadMap[InternalCustomEvent.FetchInterception]\n) => void;\n\nfunction createFetchInterceptor(\n\tcallback?: FetchInterceptionCallback\n): TimeoutInterceptorHandler {\n\tlogger.info(\"Initializing fetch interceptor\");\n\n\tconst originalFetch = window.fetch;\n\n\twindow.__rf_original_fetch ??= originalFetch;\n\twindow.fetch.rf_interception = true;\n\n\tconst proxy = new Proxy(originalFetch, {\n\t\tapply: async function (target, arg, argumentsList) {\n\t\t\tconst requestUrl: string | URL = argumentsList[0];\n\n\t\t\t// Call the original fetch and get the response\n\t\t\tconst response = (await Reflect.apply(target, arg, argumentsList)) as\n\t\t\t\t| Response\n\t\t\t\t| undefined;\n\n\t\t\t// Clone the response for our processing (so other scripts can still use the original)\n\t\t\tconst clonedResponse = response?.clone();\n\n\t\t\tcallback?.({\n\t\t\t\tresponse: clonedResponse,\n\t\t\t\trequestUrl\n\t\t\t});\n\n\t\t\treturn response;\n\t\t}\n\t});\n\n\twindow.fetch = proxy;\n\n\t// Return cleanup function\n\treturn (interval: NodeJS.Timeout | undefined) => {\n\t\tif (!window.__rf_original_fetch) return;\n\n\t\tlogger.info(\"Resetting fetch interceptor\");\n\t\twindow.fetch = window.__rf_original_fetch;\n\t\twindow.fetch.rf_interception = false;\n\n\t\tif (interval) {\n\t\t\tclearInterval(interval);\n\t\t}\n\t};\n}\n\nexport default createFetchInterceptor;\n","import { TimeoutInterceptorHandler } from \".\";\nimport {\n\tCustomEventPayloadMap,\n\tInterceptionPayload,\n\tInternalCustomEvent,\n\tXHRResponse\n} from \"../custom-events\";\nimport { logger } from \"../logger\";\n\nexport type XHRInterceptionCallback = (\n\tpayload: CustomEventPayloadMap[InternalCustomEvent.XHRInterception]\n) => void;\n\nfunction createXHRInterceptor(\n\tcallback?: XHRInterceptionCallback\n): TimeoutInterceptorHandler {\n\tlogger.info(\"Initializing XHR interceptor\");\n\n\tconst originalXHR = window.XMLHttpRequest;\n\twindow.__rf_original_xhr ??= originalXHR;\n\n\t// Create a proxy for the XMLHttpRequest constructor\n\tconst XHRProxy = new Proxy(originalXHR, {\n\t\tconstruct: function (target, argumentsList) {\n\t\t\t// Create the original XHR instance\n\t\t\tconst xhr = new target(\n\t\t\t\t...(argumentsList as ConstructorParameters<typeof XMLHttpRequest>)\n\t\t\t);\n\n\t\t\t// Store original methods\n\t\t\tconst originalOpen = xhr.open;\n\t\t\tconst originalSend = xhr.send;\n\n\t\t\t// Track request data\n\t\t\tlet requestUrl: string = \"\";\n\n\t\t\t// Intercept open method to capture URL and method\n\t\t\txhr.open = function (\n\t\t\t\tmethod: string,\n\t\t\t\turl: string,\n\t\t\t\tasync?: boolean,\n\t\t\t\tuser?: string,\n\t\t\t\tpassword?: string\n\t\t\t) {\n\t\t\t\trequestUrl = url;\n\t\t\t\treturn originalOpen.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl,\n\t\t\t\t\tasync ?? false,\n\t\t\t\t\tuser,\n\t\t\t\t\tpassword\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Intercept send method to capture request body and set up response handling\n\t\t\txhr.send = function (body) {\n\t\t\t\t// Set up event listeners for response handling\n\t\t\t\tconst originalOnReadyStateChange = xhr.onreadystatechange;\n\n\t\t\t\txhr.onreadystatechange = function (event) {\n\t\t\t\t\t// Call original handler first\n\t\t\t\t\tif (originalOnReadyStateChange) {\n\t\t\t\t\t\toriginalOnReadyStateChange.call(this, event);\n\t\t\t\t\t}\n\n\t\t\t\t\t// If request is complete, trigger our callback\n\t\t\t\t\tif (xhr.readyState === XMLHttpRequest.DONE) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcallback?.(resolveXHRPayload(xhr, requestUrl));\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tlogger.error(\"Error in XHR interception callback:\", error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Also handle load event as backup\n\t\t\t\tconst originalOnLoad = xhr.onload;\n\n\t\t\t\txhr.onload = function (event) {\n\t\t\t\t\tif (originalOnLoad) {\n\t\t\t\t\t\toriginalOnLoad.call(this, event);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trigger callback if onreadystatechange didn't fire\n\t\t\t\t\tif (xhr.readyState === XMLHttpRequest.DONE) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcallback?.(resolveXHRPayload(xhr, requestUrl));\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tlogger.error(\"Error in XHR interception callback:\", error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn originalSend.call(this, body);\n\t\t\t};\n\n\t\t\treturn xhr;\n\t\t}\n\t});\n\n\t// Mark as intercepted and replace global XMLHttpRequest\n\twindow.XMLHttpRequest.rf_interception = true;\n\twindow.XMLHttpRequest = XHRProxy;\n\n\t// Return cleanup function\n\treturn (interval?: NodeJS.Timeout) => {\n\t\tif (!window.__rf_original_xhr) return;\n\n\t\tlogger.info(\"Resetting XHR interceptor\");\n\t\twindow.XMLHttpRequest = window.__rf_original_xhr;\n\t\twindow.XMLHttpRequest.rf_interception = false;\n\n\t\tif (interval) {\n\t\t\tclearInterval(interval);\n\t\t}\n\t};\n}\n\nfunction resolveXHRPayload(\n\txhr: XMLHttpRequest,\n\turl: string\n): InterceptionPayload {\n\tlet response: XHRResponse;\n\n\tconst isTextResponse = xhr.responseType === \"text\";\n\tconst isJsonResponse =\n\t\txhr.responseType === \"json\" ||\n\t\txhr.getResponseHeader(\"Content-Type\")?.includes(\"application/json\");\n\n\tif (isTextResponse) {\n\t\ttry {\n\t\t\tresponse = JSON.parse(xhr.response);\n\t\t} catch (_) {\n\t\t\t// Ignore JSON parsing errors\n\t\t}\n\t} else if (isJsonResponse) {\n\t\tresponse = xhr.response;\n\t}\n\n\treturn {\n\t\tresponse,\n\t\trequestUrl: url\n\t};\n}\n\nexport default createXHRInterceptor;\n","import { InterceptionResponse } from \"../custom-events\";\nimport {\n\tAutoOpenTriggerEndpoint,\n\tNetworkInterceptionMethod\n} from \"../initialization/types\";\nimport { logger } from \"../logger\";\nimport createFetchInterceptor, { FetchInterceptionCallback } from \"./fetch\";\nimport createXHRInterceptor, { XHRInterceptionCallback } from \"./xhr\";\n\nconst ADD_ENDPOINTS = [\"/cart/add\", \"/cart/add.js\"] as const;\nconst UPDATE_ENDPOINTS = [\"/cart/update\", \"/cart/update.js\"] as const;\nconst CHANGE_ENDPOINTS = [\"/cart/change\", \"/cart/change.js\"] as const;\nconst CLEAR_ENDPOINTS = [\"/cart/clear\", \"/cart/clear.js\"] as const;\n\nconst ENDPOINTS = {\n\tadd: ADD_ENDPOINTS,\n\tupdate: UPDATE_ENDPOINTS,\n\tchange: CHANGE_ENDPOINTS\n} as const satisfies Record<AutoOpenTriggerEndpoint, readonly string[]>;\n\ntype Endpoints = (typeof ENDPOINTS)[keyof typeof ENDPOINTS];\n\nconst ENDPOINTS_TO_INTERCEPT = [\n\t...ADD_ENDPOINTS,\n\t...UPDATE_ENDPOINTS,\n\t...CHANGE_ENDPOINTS,\n\t...CLEAR_ENDPOINTS,\n\t\"/?section_id=cart-drawer\", // Shopify Dawn and other themes use this on item add\n\t\"/api/unstable/graphql.json?operation_name=cartQuery\" // Sometimes Cranks&Coffee calls this on item add\n];\n\ntype InterceptionCallback = FetchInterceptionCallback | XHRInterceptionCallback;\nexport type TimeoutInterceptorHandler = (\n\tinterval?: NodeJS.Timeout | undefined\n) => void;\n\ntype InitializeNetworkOptions = {\n\tmonitor?: boolean;\n\tmethod?: NetworkInterceptionMethod;\n};\n\nexport function initializeNetworkInterceptors(\n\tcallback: InterceptionCallback,\n\topts: InitializeNetworkOptions = {}\n) {\n\tconst { monitor = false, method } = opts;\n\n\tif (method === \"none\") {\n\t\tlogger.warn(\n\t\t\t\"Network interception method set to 'none'; skipping interceptor initialization.\"\n\t\t);\n\t\treturn () => {};\n\t}\n\n\tlet cleanupFetchHandler: TimeoutInterceptorHandler | undefined;\n\tlet cleanupXHRHandler: TimeoutInterceptorHandler | undefined;\n\n\tlet resolvedMethod: Exclude<NetworkInterceptionMethod, \"none\">;\n\n\tswitch (method) {\n\t\tcase \"fetch\": {\n\t\t\tresolvedMethod = \"fetch\";\n\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"xhr\": {\n\t\t\tresolvedMethod = \"xhr\";\n\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"both\":\n\t\tdefault: {\n\t\t\tresolvedMethod = \"both\";\n\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlogger.info(`Using network interception method: ${resolvedMethod}`);\n\n\tlet interval: NodeJS.Timeout | undefined;\n\n\tif (monitor) {\n\t\tlogger.info(\"Monitoring network interceptors\");\n\n\t\tinterval = setInterval(() => {\n\t\t\tif (cleanupFetchHandler && !window.fetch.rf_interception) {\n\t\t\t\tlogger.info(\"Re-initializing fetch interceptor\");\n\t\t\t\tcleanupFetchHandler(interval);\n\t\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\t}\n\t\t\tif (cleanupXHRHandler && !window.XMLHttpRequest.rf_interception) {\n\t\t\t\tlogger.info(\"Re-initializing XHR interceptor\");\n\t\t\t\tcleanupXHRHandler(interval);\n\t\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\t}\n\t\t}, 200);\n\t}\n\n\treturn () => {\n\t\tcleanupFetchHandler?.(interval);\n\t\tcleanupXHRHandler?.(interval);\n\t};\n}\n\nexport interface UrlValidationResult {\n\tisValid: boolean;\n\tisForbidden: boolean;\n\tisTriggerEndpoint: boolean;\n\ttriggerEndpointPaths: Endpoints;\n}\n\nexport function validateInterceptionRequestUrl(\n\trequestUrl: string | undefined | null,\n\ttriggerEndpoint?: AutoOpenTriggerEndpoint\n): UrlValidationResult {\n\tconst triggerEndpointValue = triggerEndpoint ?? \"add\";\n\tconst triggerEndpointPaths = ENDPOINTS[triggerEndpointValue];\n\n\t// Early return for invalid input\n\tif (!requestUrl || typeof requestUrl !== \"string\") {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisForbidden: false,\n\t\t\tisTriggerEndpoint: false,\n\t\t\ttriggerEndpointPaths\n\t\t};\n\t}\n\n\tconst BLOCKED_PATTERNS = [\"?_\", \"rf=true\"];\n\n\t// Check for forbidden patterns\n\tconst isForbidden = BLOCKED_PATTERNS.some(pattern =>\n\t\trequestUrl.includes(pattern)\n\t);\n\n\t// Check if URL matches any intercepted endpoints\n\tconst matchesInterceptedEndpoint = ENDPOINTS_TO_INTERCEPT.some(endpoint =>\n\t\trequestUrl.includes(endpoint)\n\t);\n\n\t// Check if it's an add endpoint (only if valid)\n\tconst isTriggerEndpoint = triggerEndpointPaths.some(endpoint =>\n\t\trequestUrl.includes(endpoint)\n\t);\n\n\tconst isValid = !isForbidden && matchesInterceptedEndpoint;\n\n\t// Early return if not valid\n\tif (!isValid) {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisForbidden,\n\t\t\tisTriggerEndpoint,\n\t\t\ttriggerEndpointPaths\n\t\t};\n\t}\n\n\treturn {\n\t\tisValid: true,\n\t\tisForbidden: false,\n\t\tisTriggerEndpoint,\n\t\ttriggerEndpointPaths\n\t};\n}\n\nexport async function parseInterceptionResponse(\n\tresponse: InterceptionResponse\n): Promise<Record<string, unknown> | undefined> {\n\tif (!response) return undefined;\n\n\tif (response instanceof Response) {\n\t\t// If it's a Response, we need to parse it\n\t\treturn (await response.json().catch(() => undefined)) as\n\t\t\t| Record<string, unknown>\n\t\t\t| undefined;\n\t} else if (typeof response === \"string\") {\n\t\t// If it's a string, attempt to parse as JSON (typically from XHR)\n\t\ttry {\n\t\t\treturn JSON.parse(response);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\treturn response;\n}\n","import { createContext } from \"preact\";\nimport { UseArrayReturn } from \"../hooks/common/use-array\";\n\nexport type CustomError = {\n\tid: string;\n\tmessage: preact.ComponentChildren;\n\tblocking?: boolean; // Indicates if the error is blocking the flow\n};\n\nexport interface IErrorContext\n\textends Omit<UseArrayReturn<CustomError>, \"array\"> {\n\terrors: UseArrayReturn<CustomError>[\"array\"];\n}\n\nexport const ErrorContext = createContext<IErrorContext>({} as IErrorContext);\n","import { useContext } from \"preact/hooks\";\nimport { ErrorContext } from \"../../context/error-context\";\n\nconst useErrors = () => {\n\tconst context = useContext(ErrorContext);\n\tif (!context) {\n\t\tthrow new Error(\"useErrors must be used within an ErrorProvider\");\n\t}\n\treturn context;\n};\n\nexport default useErrors;\n","import { useCallback, useMemo } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport { ShopifyCart, ShopifyCartItem } from \"../../types\";\nimport {\n\tcompareCarts,\n\tgetCart,\n\tnormalizeCart,\n\tNormalizeCartResult,\n\tupdateCartStorage\n} from \"../../utils/cart\";\nimport { InterceptionResponse } from \"../../utils/custom-events\";\nimport { getErrorStateFromCode } from \"../../utils/errors\";\nimport { parseInterceptionResponse } from \"../../utils/interceptor\";\nimport useErrors from \"../context/use-errors\";\nimport useReturnContext from \"../context/use-return-context\";\nimport useToast from \"../context/use-toast\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useCartActions = () => {\n\tconst t = useTranslations();\n\tconst { add: addToast } = useToast();\n\tconst { cartState, orderState, calculationState } = useReturnContext();\n\tconst {\n\t\tconfig: {\n\t\t\tdata: { returnData }\n\t\t}\n\t} = useWidgetContext();\n\tconst errors = useErrors();\n\n\tconst lineItems = useMemo(() => returnData?.items ?? [], [returnData?.items]);\n\n\tconst isNewItem = useCallback(\n\t\t(item: ShopifyCartItem, originalCart: ShopifyCart | null) => {\n\t\t\tconst existing = originalCart?.items.find(\n\t\t\t\te => e.variant_id === item.variant_id\n\t\t\t);\n\t\t\tif (!existing) return true;\n\t\t\treturn existing.quantity !== item.quantity;\n\t\t},\n\t\t[]\n\t);\n\n\tconst notifyExclusions = useCallback(\n\t\t(\n\t\t\tresult: NormalizeCartResult<ShopifyCart>,\n\t\t\toriginalCart: ShopifyCart | null\n\t\t) => {\n\t\t\tconst newExcludedItems = result.excludedItems.filter(item =>\n\t\t\t\tisNewItem(item, originalCart)\n\t\t\t);\n\t\t\tconst newBundleItems = result.bundleItems.filter(item =>\n\t\t\t\tisNewItem(item, originalCart)\n\t\t\t);\n\n\t\t\tif (newExcludedItems.length > 0) {\n\t\t\t\taddToast({\n\t\t\t\t\ttone: \"error\",\n\t\t\t\t\tmessage: t.rich(\"toast.product_exchange_error\", {\n\t\t\t\t\t\tproduct_name: newExcludedItems[0].title,\n\t\t\t\t\t\tb: chunks => (\n\t\t\t\t\t\t\t<span className=\"text-neutral-3 inline-block\">{chunks}</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (newBundleItems.length > 0) {\n\t\t\t\taddToast({\n\t\t\t\t\ttone: \"error\",\n\t\t\t\t\tmessage: t.rich(\"toast.bundle_exchange_error\", {\n\t\t\t\t\t\tproduct_name: newBundleItems[0].title,\n\t\t\t\t\t\tb: chunks => (\n\t\t\t\t\t\t\t<span className=\"text-neutral-3 inline-block\">{chunks}</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[isNewItem, t, addToast]\n\t);\n\n\t// --- Public API ---\n\n\tconst fetchAndUpdateCart = useCallback(async () => {\n\t\tconst order = orderState.value.data;\n\t\tif (!order) return null;\n\n\t\tconst originalCart = cartState.value.data?.original ?? null;\n\n\t\tlet freshCart: ShopifyCart;\n\t\ttry {\n\t\t\tfreshCart = await getCart(false);\n\t\t} catch (err) {\n\t\t\tcartState.set(prev => ({\n\t\t\t\t...prev,\n\t\t\t\tpending: false,\n\t\t\t\terror: err as Error\n\t\t\t}));\n\t\t\treturn null;\n\t\t}\n\n\t\tconst productRules = order.orderData.productRules;\n\t\tconst result = normalizeCart(freshCart, productRules);\n\n\t\tnotifyExclusions(result, originalCart);\n\n\t\tconst hasChanged =\n\t\t\t!originalCart ||\n\t\t\t!compareCarts({\n\t\t\t\tcart1: originalCart,\n\t\t\t\tcart2: freshCart,\n\t\t\t\trules: productRules\n\t\t\t});\n\n\t\t// Always update state so the raw original cart stays in sync\n\t\t// (e.g. bundle items filtered by normalizeCart need to be in\n\t\t// originalCart for notifyExclusions to work on subsequent changes)\n\t\tcartState.set({\n\t\t\tdata: {\n\t\t\t\toriginal: freshCart,\n\t\t\t\ttransformed: result.cart\n\t\t\t},\n\t\t\tpending: false,\n\t\t\terror: null\n\t\t});\n\t\tupdateCartStorage(freshCart);\n\n\t\treturn {\n\t\t\torder,\n\t\t\toriginalCart,\n\t\t\tfreshCart,\n\t\t\ttransformedCart: result.cart,\n\t\t\tproductRules,\n\t\t\thasChanged\n\t\t};\n\t}, [orderState, cartState, notifyExclusions]);\n\n\tconst processCartUpdate = useCallback(\n\t\tasync (cart: ShopifyCart) => {\n\t\t\tconst order = orderState.value.data;\n\t\t\tif (!order) return null;\n\n\t\t\tconst originalCart = cartState.value.data?.original ?? null;\n\t\t\tconst productRules = order.orderData.productRules;\n\t\t\tconst result = normalizeCart(cart, productRules);\n\n\t\t\tnotifyExclusions(result, originalCart);\n\n\t\t\tcartState.set({\n\t\t\t\tdata: {\n\t\t\t\t\toriginal: cart,\n\t\t\t\t\ttransformed: result.cart\n\t\t\t\t},\n\t\t\t\tpending: false,\n\t\t\t\terror: null\n\t\t\t});\n\n\t\t\tupdateCartStorage(cart);\n\n\t\t\tawait calculationState.query({\n\t\t\t\tcart: result.cart,\n\t\t\t\torderId: order.orderData.id,\n\t\t\t\tlineItems\n\t\t\t});\n\n\t\t\treturn { transformedCart: result.cart, productRules };\n\t\t},\n\t\t[orderState, cartState, calculationState, lineItems, notifyExclusions]\n\t);\n\n\tconst handleResponseErrors = useCallback(\n\t\tasync (response: InterceptionResponse) => {\n\t\t\tconst responseBody = await parseInterceptionResponse(response);\n\n\t\t\tif (responseBody) {\n\t\t\t\tlet status: number | undefined;\n\n\t\t\t\tif (\"status\" in responseBody) {\n\t\t\t\t\tconst raw = responseBody.status;\n\t\t\t\t\tstatus = typeof raw === \"number\" ? raw : undefined;\n\t\t\t\t}\n\n\t\t\t\tif (status && !errors.has(status)) {\n\t\t\t\t\tconst errState = getErrorStateFromCode(status);\n\t\t\t\t\terrors.push({\n\t\t\t\t\t\tid: errState,\n\t\t\t\t\t\tmessage: t(`product.error.${errState}`)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[t, errors]\n\t);\n\n\tconst triggerCalculation = useCallback(\n\t\t(transformedCart: ShopifyCart, orderId: string) => {\n\t\t\tcalculationState.query({\n\t\t\t\tcart: transformedCart,\n\t\t\t\torderId,\n\t\t\t\tlineItems\n\t\t\t});\n\t\t},\n\t\t[calculationState, lineItems]\n\t);\n\n\treturn {\n\t\tfetchAndUpdateCart,\n\t\tprocessCartUpdate,\n\t\thandleResponseErrors,\n\t\ttriggerCalculation\n\t};\n};\n\nexport default useCartActions;\n","import { useCallback, useEffect } from \"preact/hooks\";\nimport { WidgetViewState } from \"../../types\";\nimport customEvents, { ExternalCustomEvent } from \"../../utils/custom-events\";\nimport useWidgetContext from \"../context/use-widget-context\";\nimport useCartActions from \"./use-cart-actions\";\n\nconst useExternalEvents = () => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\tconst { fetchAndUpdateCart, triggerCalculation } = useCartActions();\n\n\t// Drawer state handlers\n\tconst handleOpenDrawer = useCallback(() => {\n\t\twidgetViewState.set(WidgetViewState.Open);\n\t}, [widgetViewState]);\n\n\tconst handleCloseDrawer = useCallback(() => {\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\t}, [widgetViewState]);\n\n\tconst handleToggleDrawer = useCallback(() => {\n\t\tlet targetState: WidgetViewState;\n\n\t\tif (widgetViewState.value === WidgetViewState.Open) {\n\t\t\ttargetState = WidgetViewState.Collapsed;\n\t\t} else {\n\t\t\ttargetState = WidgetViewState.Open;\n\t\t}\n\n\t\twidgetViewState.set(targetState);\n\t}, [widgetViewState]);\n\n\t// Calculation handlers\n\tconst handleRefetchCalculation = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, triggerCalculation]);\n\n\tconst handleRefetchCart = useCallback(async () => {\n\t\tawait fetchAndUpdateCart();\n\t}, [fetchAndUpdateCart]);\n\n\tconst handleRefetchCartAndCalculation = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, triggerCalculation]);\n\n\tconst handleOpenDrawerAndRefetch = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\thandleOpenDrawer();\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, handleOpenDrawer, triggerCalculation]);\n\n\tuseEffect(() => {\n\t\t// Subscribe to all events\n\t\tconst unsubscribeOpenDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerOpen,\n\t\t\thandleOpenDrawer\n\t\t);\n\n\t\tconst unsubscribeCloseDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerClose,\n\t\t\thandleCloseDrawer\n\t\t);\n\n\t\tconst unsubscribeToggleDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerToggle,\n\t\t\thandleToggleDrawer\n\t\t);\n\n\t\tconst unsubscribeRefetchCalculation = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CalculationRefetch,\n\t\t\thandleRefetchCalculation\n\t\t);\n\n\t\tconst unsubscribeRefetchCart = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CartRefetch,\n\t\t\thandleRefetchCart\n\t\t);\n\n\t\tconst unsubscribeRefetchCartAndCalculation = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CartAndCalculationRefetch,\n\t\t\thandleRefetchCartAndCalculation\n\t\t);\n\n\t\tconst unsubscribeOpenDrawerAndRefetchCartAndCalculation =\n\t\t\tcustomEvents.subscribe(\n\t\t\t\tExternalCustomEvent.DrawerOpenAndRefetch,\n\t\t\t\thandleOpenDrawerAndRefetch\n\t\t\t);\n\n\t\treturn () => {\n\t\t\tunsubscribeOpenDrawer();\n\t\t\tunsubscribeCloseDrawer();\n\t\t\tunsubscribeToggleDrawer();\n\t\t\tunsubscribeRefetchCalculation();\n\t\t\tunsubscribeRefetchCart();\n\t\t\tunsubscribeRefetchCartAndCalculation();\n\t\t\tunsubscribeOpenDrawerAndRefetchCartAndCalculation();\n\t\t};\n\t}, [\n\t\thandleOpenDrawer,\n\t\thandleCloseDrawer,\n\t\thandleToggleDrawer,\n\t\thandleRefetchCalculation,\n\t\thandleRefetchCart,\n\t\thandleRefetchCartAndCalculation,\n\t\thandleOpenDrawerAndRefetch\n\t]);\n};\n\nexport default useExternalEvents;\n","import { useCallback, useEffect, useState } from \"preact/hooks\";\nimport { ReturnViewState, WidgetViewState } from \"../../types\";\nimport customEvents, {\n\tCustomEventPayloadMap,\n\tInternalCustomEvent\n} from \"../../utils/custom-events\";\nimport {\n\tinitializeNetworkInterceptors,\n\tvalidateInterceptionRequestUrl\n} from \"../../utils/interceptor\";\nimport { logger } from \"../../utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\nimport useCartActions from \"./use-cart-actions\";\n\nconst useFetchInterceptor = () => {\n\tconst {\n\t\twidgetViewState,\n\t\treturnViewState,\n\t\tconfig: {\n\t\t\toptions: {\n\t\t\t\tautoOpen,\n\t\t\t\tautoOpenTriggerEndpoint: triggerEndpoint,\n\t\t\t\tautoOpenTriggerMethod: triggerMethod,\n\t\t\t\tmonitorNetworkOverwrites,\n\t\t\t\tnetworkInterceptionMethod\n\t\t\t}\n\t\t}\n\t} = useWidgetContext();\n\n\tconst { fetchAndUpdateCart, handleResponseErrors, triggerCalculation } =\n\t\tuseCartActions();\n\n\tconst [initialized, setInitialized] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (networkInterceptionMethod !== \"none\") {\n\t\t\tlet resetInterceptor:\n\t\t\t\t| ReturnType<typeof initializeNetworkInterceptors>\n\t\t\t\t| undefined;\n\n\t\t\ttry {\n\t\t\t\t// Initialize the fetch interceptor only once\n\t\t\t\tresetInterceptor = initializeNetworkInterceptors(\n\t\t\t\t\tpayload =>\n\t\t\t\t\t\tcustomEvents.publish(\n\t\t\t\t\t\t\tInternalCustomEvent.FetchInterception,\n\t\t\t\t\t\t\tpayload\n\t\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tmonitor: monitorNetworkOverwrites,\n\t\t\t\t\t\tmethod: networkInterceptionMethod\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tsetInitialized(true);\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Error initializing fetch interceptor:\", error);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tresetInterceptor?.();\n\t\t\t};\n\t\t}\n\t\tsetInitialized(false);\n\t}, [monitorNetworkOverwrites, networkInterceptionMethod]);\n\n\ttype FetchInterceptionEvent = CustomEvent<\n\t\tCustomEventPayloadMap[InternalCustomEvent.FetchInterception]\n\t>;\n\n\tconst handleInterceptionEvent = useCallback(\n\t\tasync ({ detail: { response, requestUrl } }: FetchInterceptionEvent) => {\n\t\t\tconst stringifiedUrl =\n\t\t\t\trequestUrl instanceof URL ? requestUrl.toString() : requestUrl;\n\n\t\t\tconst urlValidation = validateInterceptionRequestUrl(\n\t\t\t\tstringifiedUrl,\n\t\t\t\ttriggerEndpoint\n\t\t\t);\n\t\t\tconst { isValid, isForbidden, isTriggerEndpoint } = urlValidation;\n\n\t\t\tif (!isValid || isForbidden) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Intercepted request to ${stringifiedUrl} is invalid or forbidden.`,\n\t\t\t\t\turlValidation\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlogger.info(`Intercepted request to ${stringifiedUrl}`, urlValidation);\n\n\t\t\tconst result = await fetchAndUpdateCart();\n\t\t\tif (!result) return;\n\n\t\t\tconst { transformedCart, hasChanged } = result;\n\n\t\t\tawait handleResponseErrors(response);\n\n\t\t\tif (hasChanged) {\n\t\t\t\ttriggerCalculation(transformedCart, result.order.orderData.id);\n\t\t\t}\n\n\t\t\t// Determine if the widget overlay should be triggered\n\t\t\tswitch (triggerMethod) {\n\t\t\t\tcase \"change\":\n\t\t\t\t\tif (!hasChanged) return;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"endpoint\":\n\t\t\t\t\tif (!isTriggerEndpoint) return;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"combination\":\n\t\t\t\tdefault:\n\t\t\t\t\tif (!isTriggerEndpoint || !hasChanged) return;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Collapse the return view state\n\t\t\treturnViewState.set(ReturnViewState.Collapsed);\n\t\t\tif (autoOpen !== false) {\n\t\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tfetchAndUpdateCart,\n\t\t\thandleResponseErrors,\n\t\t\ttriggerCalculation,\n\t\t\twidgetViewState,\n\t\t\treturnViewState,\n\t\t\tautoOpen,\n\t\t\ttriggerEndpoint,\n\t\t\ttriggerMethod\n\t\t]\n\t);\n\n\tuseEffect(() => {\n\t\t// Subscribe to fetch interception events\n\t\tconst unsubscribe = customEvents.subscribe(\n\t\t\tInternalCustomEvent.FetchInterception,\n\t\t\thandleInterceptionEvent\n\t\t);\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, [handleInterceptionEvent]);\n\n\treturn {\n\t\tinitialized\n\t};\n};\n\nexport default useFetchInterceptor;\n","import { useEffect } from \"preact/hooks\";\nimport { logger } from \"../../utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useOverrideScrollBlocking = () => {\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions: { overrideScrollBlocking }\n\t\t}\n\t} = useWidgetContext();\n\n\t/* This is a fix for CSM-1094 */\n\tuseEffect(() => {\n\t\tif (!overrideScrollBlocking) return;\n\n\t\tlogger.info(\"Overriding scroll blocking behavior\");\n\n\t\tconst originalPreventDefault = Event.prototype.preventDefault;\n\n\t\t// Override the default preventDefault method\n\t\tEvent.prototype.preventDefault = function () {\n\t\t\tif (\n\t\t\t\tthis.type === \"wheel\" ||\n\t\t\t\tthis.type === \"mousewheel\" ||\n\t\t\t\tthis.type === \"DOMMouseScroll\" ||\n\t\t\t\tthis.type === \"touchmove\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\toriginalPreventDefault.call(this);\n\t\t};\n\n\t\treturn () => {\n\t\t\tEvent.prototype.preventDefault = originalPreventDefault;\n\t\t};\n\t}, [overrideScrollBlocking, widgetViewState.value]);\n};\n\nexport default useOverrideScrollBlocking;\n","export const removeInertFromElements = () => {\n\tconst inertElements = document.querySelectorAll(\"[inert]\");\n\tinertElements.forEach(element => {\n\t\telement.removeAttribute(\"inert\");\n\t});\n};\n\nexport function cloneAndReplaceElement<T extends HTMLElement>(element: T): T {\n\tconst parent = element.parentNode;\n\tif (parent) {\n\t\tconst newElement = element.cloneNode(true) as T;\n\t\tparent.replaceChild(newElement, element);\n\t\treturn newElement;\n\t}\n\treturn element;\n}\n","import { useEffect } from \"preact/hooks\";\nimport { WidgetViewState } from \"../../../lib/types\";\nimport { cloneAndReplaceElement } from \"../../../lib/utils/dom\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useCartActivator = () => {\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions: { cartActivatorSelector }\n\t\t}\n\t} = useWidgetContext();\n\n\tuseEffect(() => {\n\t\tif (!cartActivatorSelector) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst processedElements = new WeakSet<Element>();\n\n\t\tconst onActivatorClick = (event: MouseEvent) => {\n\t\t\tlogger.info(\"Cart activator clicked\", event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t};\n\n\t\tconst attachListenersToElements = (elements: NodeListOf<Element>) => {\n\t\t\telements.forEach(element => {\n\t\t\t\t// Skip if we've already processed this element\n\t\t\t\tif (processedElements.has(element)) return;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Clone the element to avoid issues with event listeners\n\t\t\t\t\tconst clone = cloneAndReplaceElement(element as HTMLElement);\n\n\t\t\t\t\t// Remove potential inline onclick attributes\n\t\t\t\t\tclone.removeAttribute(\"onclick\");\n\n\t\t\t\t\t// Add the click event listener to the cloned element\n\t\t\t\t\tclone.addEventListener(\"click\", onActivatorClick, {\n\t\t\t\t\t\tsignal: controller.signal\n\t\t\t\t\t});\n\n\t\t\t\t\t// Mark this element as processed\n\t\t\t\t\tprocessedElements.add(clone);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\"Failed to attach listener to cart activator\", error);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst initializeActivators = () => {\n\t\t\ttry {\n\t\t\t\tconst elements = document.querySelectorAll(cartActivatorSelector);\n\t\t\t\tif (elements.length > 0) {\n\t\t\t\t\tlogger.info(\"Attaching click listeners to cart activators\", elements);\n\t\t\t\t\tattachListenersToElements(elements);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Failed to set cart activator selector\", error);\n\t\t\t}\n\t\t};\n\n\t\t// Initial setup\n\t\tinitializeActivators();\n\n\t\t// Set up MutationObserver to watch for DOM changes\n\t\tconst observer = new MutationObserver(mutations => {\n\t\t\tlet shouldReinitialize = false;\n\n\t\t\tmutations.forEach(mutation => {\n\t\t\t\t// Check for added nodes\n\t\t\t\tmutation.addedNodes.forEach(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\tconst element = node as Element;\n\n\t\t\t\t\t\t// Check if the added element matches our selector\n\t\t\t\t\t\tif (element.matches?.(cartActivatorSelector)) {\n\t\t\t\t\t\t\tshouldReinitialize = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if any children of the added element match our selector\n\t\t\t\t\t\tif (element.querySelectorAll?.(cartActivatorSelector).length > 0) {\n\t\t\t\t\t\t\tshouldReinitialize = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Check for removed nodes (optional - helps with cleanup)\n\t\t\t\tmutation.removedNodes.forEach(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\tconst element = node as Element;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\telement.matches?.(cartActivatorSelector) ||\n\t\t\t\t\t\t\telement.querySelectorAll?.(cartActivatorSelector).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Element was removed - WeakSet will automatically handle cleanup\n\t\t\t\t\t\t\t// since removed elements become unreachable\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (shouldReinitialize) {\n\t\t\t\tlogger.info(\"Reinitializing cart activators\");\n\t\t\t\t// Small delay to ensure DOM is fully updated\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tinitializeActivators();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t});\n\n\t\t// Start observing\n\t\tobserver.observe(document.body, {\n\t\t\tchildList: true, // Watch for added/removed children\n\t\t\tsubtree: true, // Watch the entire subtree\n\t\t\tattributes: false, // We don't need attribute changes\n\t\t\tcharacterData: false // We don't need text content changes\n\t\t});\n\n\t\treturn () => {\n\t\t\t// Cleanup\n\t\t\tcontroller.abort();\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [cartActivatorSelector, widgetViewState]);\n};\n\nexport default useCartActivator;\n","import useApiBridge from \"../../lib/hooks/feature/use-api-bridge\";\nimport useExternalEvents from \"../../lib/hooks/feature/use-external-events\";\nimport useFetchInterceptor from \"../../lib/hooks/feature/use-fetch-interceptor\";\nimport useOverrideScrollBlocking from \"../../lib/hooks/feature/use-override-scroll-blocking\";\nimport useCartActivator from \"../../lib/hooks/feature/use-cart-activator\";\n\n// Handles the initialization of all necessary interceptors and contexts\n// Note: This is handled as a component, so the context providers can be used within hooks\nconst InitializationHandler = () => {\n\t// Initialize the fetch interceptor to handle incoming HTTP requests\n\tuseFetchInterceptor();\n\n\t// Initialize the cart activator to manage cart-related interactions\n\tuseCartActivator();\n\n\t// Override scroll blocking behavior if configured\n\tuseOverrideScrollBlocking();\n\n\t// Handle external custom events\n\tuseExternalEvents();\n\n\t// Register the API bridge for programmatic control\n\tuseApiBridge();\n\n\treturn null;\n};\n\nexport default InitializationHandler;\n","import useIsMounted from \"../lib/hooks/common/use-is-mounted\";\n\nconst IsMounted = ({ children }: { children: preact.ComponentChildren }) => {\n\tconst mounted = useIsMounted();\n\n\tif (!mounted) return null;\n\n\treturn children;\n};\n\nexport default IsMounted;\n","import { useCallback, useState } from \"preact/hooks\";\n\ntype ArrayId = string | number;\n\ninterface ArrayItem {\n\tid: ArrayId;\n}\n\nexport interface UseArrayReturn<T extends ArrayItem> {\n\tarray: T[];\n\tset: (newArray: T[]) => void;\n\tpush: (item: T) => void;\n\tremove: (id: ArrayId) => void;\n\tclear: () => void;\n\thas: (id: ArrayId) => boolean;\n}\n\nconst useArray = <T extends ArrayItem>(\n\tinitialArray: T[] = []\n): UseArrayReturn<T> => {\n\tconst [array, setArray] = useState<T[]>(initialArray);\n\n\tconst set = useCallback((newArray: T[]) => {\n\t\tsetArray(newArray);\n\t}, []);\n\n\tconst push = useCallback((item: T | T[]) => {\n\t\tsetArray(prev => {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tconst filtered = item.filter(i => !prev.some(p => p.id === i.id));\n\t\t\t\treturn [...prev, ...filtered];\n\t\t\t}\n\t\t\tif (prev.some(p => p.id === item.id)) {\n\t\t\t\treturn prev; // Avoid duplicates\n\t\t\t}\n\t\t\treturn [...prev, item];\n\t\t});\n\t}, []);\n\n\tconst remove = useCallback((id: ArrayId) => {\n\t\tsetArray(prev => prev.filter(item => item.id !== id));\n\t}, []);\n\n\tconst clear = useCallback(() => {\n\t\tsetArray([]);\n\t}, []);\n\n\tconst has = useCallback(\n\t\t(id: ArrayId) => {\n\t\t\treturn array.some(item => item.id === id);\n\t\t},\n\t\t[array]\n\t);\n\n\treturn {\n\t\tarray,\n\t\tset,\n\t\tpush,\n\t\tremove,\n\t\tclear,\n\t\thas\n\t};\n};\n\nexport default useArray;\n","import { ReactNode } from \"preact/compat\";\nimport { useMemo } from \"preact/hooks\";\nimport { Fragment } from \"preact/jsx-runtime\";\nimport { useTranslations } from \"use-intl\";\nimport {\n\tCustomError,\n\tErrorContext,\n\tIErrorContext\n} from \"../../lib/context/error-context\";\nimport useArray from \"../../lib/hooks/common/use-array\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { getRuleProductIds } from \"../../lib/utils/cart\";\nimport { stripShopifyId } from \"../../lib/utils/shopify\";\n\nconst ErrorProvider = ({\n\tchildren\n}: {\n\tchildren: preact.ComponentChildren;\n}) => {\n\tconst t = useTranslations();\n\tconst { array: errors, ...methods } = useArray<CustomError>();\n\tconst { cartState, orderState, calculationState } = useReturnContext();\n\n\tconst orderData = orderState.value.data?.orderData;\n\tconst calcItems = calculationState.value.data?.lineItems;\n\tconst cartItemCount = cartState.value.data?.transformed.item_count ?? 0;\n\n\t// Combine errors that are pushed from anywhere in within the context with static errors\n\t// These static errors are based on the order data and calculation items\n\tconst resolvedErrors: CustomError[] = useMemo(() => {\n\t\tconst trackedErrors: CustomError[] = [];\n\t\tif (orderData && calcItems && Array.isArray(calcItems)) {\n\t\t\t// Reufund window expired error\n\t\t\tconst { refundReturnWindow = true } = orderData.returnWindows ?? {};\n\n\t\t\tconst errorId = \"refund-window-expired\";\n\n\t\t\tif (!refundReturnWindow && cartItemCount === 0) {\n\t\t\t\tconst message: string | preact.ComponentChildren = t(\n\t\t\t\t\t\"product.error.refund_expired\"\n\t\t\t\t);\n\n\t\t\t\ttrackedErrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tblocking: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Product rules\n\t\t\tconst noRefundItemIds = getRuleProductIds(\n\t\t\t\torderData.productRules,\n\t\t\t\t\"NO_REFUND\"\n\t\t\t);\n\t\t\tconst noRefundItems = calcItems.filter(item => {\n\t\t\t\tconst strippedId = stripShopifyId(item.productId);\n\t\t\t\tif (!strippedId) return false;\n\t\t\t\treturn noRefundItemIds.includes(Number(strippedId));\n\t\t\t});\n\n\t\t\tif (noRefundItems.length > 0 && cartItemCount === 0) {\n\t\t\t\tconst joinedProductNames = noRefundItems\n\t\t\t\t\t.map(item => {\n\t\t\t\t\t\tconst product = orderData.productsToExchange.find(\n\t\t\t\t\t\t\tp => p.id === item.id\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!product) return null;\n\n\t\t\t\t\t\tlet title = product.title;\n\t\t\t\t\t\tif (product.variantTitle) {\n\t\t\t\t\t\t\ttitle += ` (${product.variantTitle})`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn title;\n\t\t\t\t\t})\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\", \");\n\n\t\t\t\tconst message = t.rich(\"product.error.no_refund\", {\n\t\t\t\t\tproduct_name: joinedProductNames,\n\t\t\t\t\tb: chunks => {\n\t\t\t\t\t\tif (!chunks) return null;\n\t\t\t\t\t\tconst splitChunks = (chunks as NonNullable<ReactNode>)\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.split(\", \");\n\n\t\t\t\t\t\treturn splitChunks.map((chunk, index) => {\n\t\t\t\t\t\t\tlet dividerString: string | null = null;\n\n\t\t\t\t\t\t\tif (index === splitChunks.length - 2) {\n\t\t\t\t\t\t\t\tdividerString = ` ${t(\"common.and\")} `;\n\t\t\t\t\t\t\t} else if (index < splitChunks.length - 1) {\n\t\t\t\t\t\t\t\tdividerString = \", \";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Fragment key={index}>\n\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-3\">{chunk}</span>\n\t\t\t\t\t\t\t\t\t{dividerString}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttrackedErrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tblocking: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn trackedErrors.concat(errors);\n\t}, [errors, orderData, calcItems, cartItemCount, t]);\n\n\tconst contextValue: IErrorContext = {\n\t\terrors: resolvedErrors,\n\t\t...methods\n\t};\n\n\treturn (\n\t\t<ErrorContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ErrorContext.Provider>\n\t);\n};\n\nexport default ErrorProvider;\n","import { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport { logger } from \"../../utils/logger\";\n\ntype IAsyncStatePending<T> = {\n\tdata: T | null;\n\tpending: true;\n\terror: null;\n};\n\ntype IAsyncStateResolved<T> = {\n\tdata: T | null;\n\tpending: false;\n\terror: null;\n};\n\ntype IAsyncStateError<T> = {\n\tdata: T | null;\n\tpending: false;\n\terror: Error;\n};\n\nexport type IAsyncState<T> =\n\t| IAsyncStatePending<T>\n\t| IAsyncStateResolved<T>\n\t| IAsyncStateError<T>;\n\ntype TAsyncStateCommonProps<T> = {\n\tid?: string;\n\tinitialValue?: T | null;\n\tqueryOnInit?: boolean;\n\tstartCount?: number;\n\tonError?: (error: Error) => void;\n};\n\ntype TUseAsyncStatePropsWithoutParams<T> = TAsyncStateCommonProps<T> & {\n\tqueryFn: (count: number) => T | Promise<T>;\n};\n\ntype TUseAsyncStatePropsWithParams<\n\tT,\n\tP = undefined\n> = TAsyncStateCommonProps<T> & {\n\tqueryFn: (count: number, params: P) => T | Promise<T>;\n\tinitialParams?: P;\n};\n\n// Props interface with conditional queryFn and conditional initialParams\ntype TUseAsyncStateProps<T, P = undefined> = P extends undefined\n\t? TUseAsyncStatePropsWithoutParams<T>\n\t: TUseAsyncStatePropsWithParams<T, P>;\n\nexport interface IUseAsyncStateReturn<T, P = undefined> {\n\tvalue: IAsyncState<T>;\n\tset: React.Dispatch<React.SetStateAction<IAsyncState<T>>>;\n\tquery: P extends undefined ? () => Promise<T> : (params: P) => Promise<T>;\n\tinitialFetch: boolean;\n\tcount: number;\n}\n\nconst useAsyncState = <T, Params = undefined>(\n\tprops: TUseAsyncStateProps<T, Params>\n): IUseAsyncStateReturn<T, Params> => {\n\tconst {\n\t\tid,\n\t\tinitialValue = null,\n\t\tqueryFn,\n\t\tqueryOnInit = true,\n\t\tonError,\n\t\tstartCount = 0\n\t} = props;\n\n\tconst [state, setState] = useState<IAsyncState<T>>({\n\t\tdata: initialValue,\n\t\tpending: queryOnInit,\n\t\terror: null\n\t} as IAsyncStatePending<T>);\n\tconst initialRender = useRef(true);\n\n\tconst [countState, setCountState] = useState(startCount);\n\tconst countRef = useRef(countState);\n\n\tconst query = useCallback(\n\t\t(...args: Params extends undefined ? [] : [Params]): Promise<T | null> => {\n\t\t\tconst params = args[0] as Params;\n\n\t\t\t// Increment count at the START and capture it for this request\n\t\t\tconst requestCount = countRef.current + 1;\n\t\t\tcountRef.current = requestCount;\n\t\t\tsetCountState(requestCount);\n\n\t\t\tsetState(prev => ({\n\t\t\t\t...prev,\n\t\t\t\tpending: true,\n\t\t\t\terror: null\n\t\t\t}));\n\n\t\t\tconst run = async () => {\n\t\t\t\ttry {\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t`AsyncState Query Started (Count: ${requestCount})`,\n\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\"\n\t\t\t\t\t);\n\t\t\t\t\tconst data = await (args.length === 0\n\t\t\t\t\t\t? (queryFn as (count: number) => T | Promise<T>)(requestCount)\n\t\t\t\t\t\t: (queryFn as (count: number, params: Params) => T | Promise<T>)(\n\t\t\t\t\t\t\t\trequestCount,\n\t\t\t\t\t\t\t\tparams\n\t\t\t\t\t\t\t));\n\n\t\t\t\t\t// Only update state if this is still the latest request\n\t\t\t\t\tif (countRef.current !== requestCount) {\n\t\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\t`AsyncState Query Stale - Ignoring (Count: ${requestCount}, Current: ${countRef.current})`,\n\t\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Success handling\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\terror: null\n\t\t\t\t\t});\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t`AsyncState Query Resolved (Count: ${requestCount})`,\n\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\",\n\t\t\t\t\t\tdata\n\t\t\t\t\t);\n\t\t\t\t\treturn data;\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Only update state if this is still the latest request\n\t\t\t\t\tif (countRef.current !== requestCount) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Error handling\n\t\t\t\t\tconst error = err as Error;\n\n\t\t\t\t\tlet consoleMessage = `AsyncState Query Failed (Count: ${requestCount})`;\n\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tconsoleMessage += ` (ID: ${id})`;\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.error(`${consoleMessage}:`, `[${error}]`, params);\n\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\terror\n\t\t\t\t\t});\n\t\t\t\t\tonError?.(error);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn run();\n\t\t},\n\t\t[queryFn, id, onError]\n\t);\n\n\tuseEffect(() => {\n\t\tif (initialRender.current && queryOnInit) {\n\t\t\tinitialRender.current = false;\n\t\t\tconst initialParams = props as TUseAsyncStatePropsWithParams<T, Params>;\n\t\t\tif (initialParams !== undefined && \"initialParams\" in initialParams) {\n\t\t\t\t(query as (params: Params) => Promise<T>)(\n\t\t\t\t\tinitialParams.initialParams as Params\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t(query as () => Promise<T>)();\n\t\t\t}\n\t\t}\n\t}, [query, queryOnInit, props]);\n\n\tconst initialFetch = state.pending && state.data === null;\n\n\treturn {\n\t\tvalue: state,\n\t\tset: setState,\n\t\tquery: query as IUseAsyncStateReturn<T, Params>[\"query\"],\n\t\tcount: countState,\n\t\tinitialFetch\n\t};\n};\n\nexport default useAsyncState;\n","import { useMemo } from \"preact/hooks\";\nimport { SEARCH_PARAM_ID_NAME } from \"../../lib/constants\";\nimport {\n\tIReturnContext,\n\tReturnContext\n} from \"../../lib/context/return-context\";\nimport useOnce from \"../../lib/hooks/common/use-once\";\nimport type { IUseAsyncStateReturn } from \"../../lib/hooks/common/use-async-state\";\nimport useAsyncState from \"../../lib/hooks/common/use-async-state\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationResponse,\n\tReturnViewState,\n\tShopifyCart,\n\tShopifyCartChangeResponse\n} from \"../../lib/types\";\nimport {\n\tgetCalculation,\n\tprocessOrderInitialization,\n\tProcessOrderInitializationReturn\n} from \"../../lib/utils/api\";\nimport { getCart, normalizeCart } from \"../../lib/utils/cart\";\nimport { ReturnDataState, updateSessionCache } from \"../../lib/utils/session\";\nimport { normalizeShopifyPrice } from \"../../lib/utils/shopify\";\n\ninterface ReturnContextProviderProps {\n\tchildren: preact.ComponentChildren;\n}\n\nexport interface CalculationParams {\n\tcart: ShopifyCart;\n\torderId: string;\n\tlineItems: ReturnDataState[\"items\"];\n}\n\ntype Cart = ShopifyCart | ShopifyCartChangeResponse;\n\nexport interface CartState {\n\ttransformed: Cart;\n\toriginal: Cart;\n}\n\nconst ReturnContextProvider = ({ children }: ReturnContextProviderProps) => {\n\tconst { returnViewState, config } = useWidgetContext();\n\n\tconst isFirstLoad = config.isFirstLoad;\n\n\tconst cartState = useAsyncState<CartState, ProcessOrderInitializationReturn>({\n\t\tid: \"cart\",\n\t\tqueryOnInit: false,\n\t\tqueryFn: async (\n\t\t\tqueryCount: number,\n\t\t\torderResult: ProcessOrderInitializationReturn\n\t\t) => {\n\t\t\tconst pathname = window.location.pathname;\n\t\t\tconst isCartPage = pathname.startsWith(\"/cart\");\n\n\t\t\tconst isFirstQuery = queryCount === 1;\n\n\t\t\tconst shouldFetchFreshCart = !isFirstQuery || isCartPage;\n\n\t\t\tconst cart = await getCart(!shouldFetchFreshCart);\n\n\t\t\tif (cart.item_count !== 0 && isFirstQuery) {\n\t\t\t\t// If the cart has items and this is the first query, collapse the return view state\n\t\t\t\treturnViewState.set(ReturnViewState.Collapsed);\n\t\t\t}\n\n\t\t\tconst { cart: transformedCart } = normalizeCart(\n\t\t\t\tcart,\n\t\t\t\torderResult.orderData.productRules\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttransformed: transformedCart,\n\t\t\t\toriginal: cart\n\t\t\t};\n\t\t}\n\t});\n\n\t// Initialize the order state & set cookies/storage\n\tconst orderState = useAsyncState<ProcessOrderInitializationReturn>({\n\t\tid: \"order\",\n\t\tqueryFn: async () => {\n\t\t\tconst result = await processOrderInitialization(config);\n\n\t\t\tif (result.updatedCart && isFirstLoad) {\n\t\t\t\tconst { cart: normalizedCart } = normalizeCart(\n\t\t\t\t\tresult.updatedCart,\n\t\t\t\t\tresult.orderData.productRules\n\t\t\t\t);\n\t\t\t\tcartState.set({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toriginal: result.updatedCart,\n\t\t\t\t\t\ttransformed: normalizedCart\n\t\t\t\t\t},\n\t\t\t\t\tpending: false,\n\t\t\t\t\terror: null\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcartState.query(result);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t});\n\n\tconst calculationState = useAsyncState<\n\t\tCalculationResponse,\n\t\tCalculationParams\n\t>({\n\t\tid: \"calculation\",\n\t\tqueryOnInit: false,\n\t\tqueryFn: async (_: unknown, params: CalculationParams) => {\n\t\t\tconst internalId = config.id;\n\t\t\tconst cartItems = params.cart?.items || [];\n\t\t\t// Update session cache with the current cart items\n\t\t\tif (internalId) {\n\t\t\t\tconst { origin, pathname, search } = window.location;\n\n\t\t\t\tconst searchParams = new URLSearchParams(search);\n\n\t\t\t\tsearchParams.set(SEARCH_PARAM_ID_NAME, internalId);\n\n\t\t\t\tconst lastPath = `${origin}${pathname}?${searchParams.toString()}`;\n\n\t\t\t\tconst formattedCartItems = Array.isArray(cartItems)\n\t\t\t\t\t? cartItems.map(item => ({\n\t\t\t\t\t\t\tvariantId: item.variant_id,\n\t\t\t\t\t\t\thandle: item.handle,\n\t\t\t\t\t\t\tprice: normalizeShopifyPrice(item.price), // Convert cents to dollars\n\t\t\t\t\t\t\ttitle: item.product_title,\n\t\t\t\t\t\t\tvariantTitle: item.variant_title ?? \"\",\n\t\t\t\t\t\t\timage: item.image,\n\t\t\t\t\t\t\tquantity: item.quantity || 1\n\t\t\t\t\t\t}))\n\t\t\t\t\t: [];\n\n\t\t\t\tupdateSessionCache(internalId, {\n\t\t\t\t\tlastPath,\n\t\t\t\t\treturnItems: formattedCartItems\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst labelCount = config.data.returnData?.numOfLabels ?? 1;\n\t\t\treturn getCalculation(params, labelCount);\n\t\t}\n\t});\n\n\tconst [initialized] = useOnce(\n\t\tresolve => {\n\t\t\tconst order = orderState.value.data;\n\t\t\tconst cart = cartState.value.data?.transformed;\n\t\t\tif (order && cart) {\n\t\t\t\tresolve();\n\t\t\t\tconst lineItems = config.data.returnData?.items ?? [];\n\t\t\t\tcalculationState.query({\n\t\t\t\t\tcart,\n\t\t\t\t\torderId: order.orderData.id,\n\t\t\t\t\tlineItems\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\torderState.value.data,\n\t\t\tcartState.value.data,\n\t\t\tcalculationState.query,\n\t\t\tconfig.data.returnData?.items\n\t\t]\n\t);\n\n\tconst isPending =\n\t\t!initialized || cartState.value.pending || calculationState.value.pending;\n\n\tconst contextError = useMemo(\n\t\t() =>\n\t\t\torderState.value.error ||\n\t\t\tcartState.value.error ||\n\t\t\tcalculationState.value.error,\n\t\t[\n\t\t\torderState.value.error,\n\t\t\tcartState.value.error,\n\t\t\tcalculationState.value.error\n\t\t]\n\t);\n\n\tconst hasFailed = Boolean(contextError);\n\n\tconst contextValue = useMemo(\n\t\t(): IReturnContext => ({\n\t\t\torderState:\n\t\t\t\torderState as IUseAsyncStateReturn<ProcessOrderInitializationReturn>,\n\t\t\tcartState,\n\t\t\tcalculationState,\n\t\t\tisPending,\n\t\t\thasFailed\n\t\t}),\n\t\t[orderState, cartState, calculationState, isPending, hasFailed]\n\t);\n\n\treturn (\n\t\t<ReturnContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ReturnContext.Provider>\n\t);\n};\n\nexport default ReturnContextProvider;\n","import { useMemo } from \"preact/hooks\";\nimport { hexToHsl } from \"../../utils/helpers\";\nimport useWidgetContext from \"./use-widget-context\";\n\nconst useTheme = () => {\n\tconst {\n\t\tconfig: { theme }\n\t} = useWidgetContext();\n\n\tconst themeVariables = useMemo(() => {\n\t\tif (!theme) return;\n\t\treturn Object.entries(theme).reduce<Record<string, string>>(\n\t\t\t(acc, [key, color]) => {\n\t\t\t\tconst convertedColor = hexToHsl(color);\n\t\t\t\tconst propertyKey = `--${key}`;\n\t\t\t\tacc[propertyKey] = convertedColor;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record<string, string>\n\t\t) as React.CSSProperties;\n\t}, [theme]);\n\n\treturn {\n\t\ttheme,\n\t\tcssVariables: themeVariables\n\t};\n};\n\nexport default useTheme;\n","import { useRef } from \"preact/hooks\";\nimport { ROOT_ELEMENT_ID } from \"../../lib/constants\";\nimport { RootContext } from \"../../lib/context/root-context\";\nimport useTheme from \"../../lib/hooks/context/use-theme\";\n\nconst RootProvider = (\n\tprops: Omit<\n\t\tReact.HTMLAttributes<HTMLDivElement>,\n\t\t\"id\" | \"style\" | \"className\"\n\t>\n) => {\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst { cssVariables } = useTheme();\n\n\treturn (\n\t\t<RootContext.Provider value={rootRef}>\n\t\t\t<div\n\t\t\t\t/* stopPropagation was added to prevent double clicks in ios safari */\n\t\t\t\t/* Fix for CSM-1094 */\n\t\t\t\tonTouchStart={e => e.stopPropagation()}\n\t\t\t\tclassName=\"rf-root\"\n\t\t\t\tref={rootRef}\n\t\t\t\tid={ROOT_ELEMENT_ID}\n\t\t\t\tstyle={cssVariables}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</RootContext.Provider>\n\t);\n};\n\nexport default RootProvider;\n","import { useMemo } from \"preact/hooks\";\nimport {\n\tIWidgetContext,\n\tWidgetContext\n} from \"../../lib/context/widget-context\";\nimport useValueState from \"../../lib/hooks/common/use-value-state\";\nimport { ReturnViewState, WidgetViewState } from \"../../lib/types\";\nimport customEvents, {\n\tInternalCustomEvent\n} from \"../../lib/utils/custom-events\";\nimport { removeInertFromElements } from \"../../lib/utils/dom\";\nimport { WidgetConfiguration } from \"../../lib/utils/initialization/types\";\n\ninterface WidgetContextProviderProps extends WidgetConfiguration {\n\tchildren: preact.ComponentChildren;\n}\n\nconst WidgetContextProvider = ({\n\tchildren,\n\t...config\n}: WidgetContextProviderProps) => {\n\t// Drawer state (collapsed, expanded, etc.)\n\tconst widgetViewState = useValueState<WidgetViewState>(\n\t\tWidgetViewState.Collapsed,\n\t\tstate => {\n\t\t\tcustomEvents.publish(InternalCustomEvent.DrawerStateChange, { state });\n\t\t\t// (DEV-1559) Ensure inert is removed from elements when drawer state changes\n\t\t\tremoveInertFromElements();\n\t\t}\n\t);\n\t// Inner drawer state: return product list state (collapsed, expanded, etc.)\n\tconst returnViewState = useValueState<ReturnViewState>(ReturnViewState.Open);\n\n\tconst contextValue = useMemo(\n\t\t(): IWidgetContext => ({\n\t\t\twidgetViewState,\n\t\t\treturnViewState,\n\t\t\tconfig\n\t\t}),\n\t\t[widgetViewState, returnViewState, config]\n\t);\n\n\treturn (\n\t\t<WidgetContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</WidgetContext.Provider>\n\t);\n};\n\nexport default WidgetContextProvider;\n","import { useCallback, useState } from \"preact/hooks\";\nimport {\n\tDEFAULT_TOAST_DURATION,\n\tIToastContext,\n\tTOAST_ANIMATION_DURATION,\n\tToastConfiguration,\n\tToastContext\n} from \"../../lib/context/toast-context\";\nimport { ToastQueue } from \"./toast\";\n\nconst ToastProvider = ({\n\tchildren\n}: {\n\tchildren: preact.ComponentChildren;\n}) => {\n\tconst [queue, setQueue] = useState<ToastQueue[]>([]);\n\n\tconst remove = useCallback((id: string) => {\n\t\tsetQueue(prev =>\n\t\t\tprev.map(toast => {\n\t\t\t\tif (toast.id === id) {\n\t\t\t\t\t// Optionally, you can call the onClose callback if it exists\n\t\t\t\t\ttoast.onClose?.();\n\t\t\t\t}\n\t\t\t\treturn toast.id === id ? { ...toast, isVisible: false } : toast;\n\t\t\t})\n\t\t);\n\t\t// Set a timeout to remove the toast from the queue after the animation duration\n\t\tsetTimeout(() => {\n\t\t\tsetQueue(prev => prev.filter(toast => toast.id !== id));\n\t\t}, TOAST_ANIMATION_DURATION); // Adjust the timeout to match your animation duration\n\t}, []);\n\n\tconst add = useCallback(\n\t\t({ duration = DEFAULT_TOAST_DURATION, ...options }: ToastConfiguration) => {\n\t\t\tconst id = options.id || generateToastId();\n\n\t\t\tsetQueue(prev => {\n\t\t\t\tconst newToast = {\n\t\t\t\t\t...options,\n\t\t\t\t\tid,\n\t\t\t\t\tduration,\n\t\t\t\t\tisVisible: true\n\t\t\t\t};\n\t\t\t\treturn [...prev, newToast];\n\t\t\t});\n\n\t\t\tsetTimeout(() => remove(id), duration);\n\n\t\t\treturn id;\n\t\t},\n\t\t[remove]\n\t);\n\n\tconst clear = useCallback(() => {\n\t\tsetQueue(prev =>\n\t\t\tprev.map(toast => {\n\t\t\t\t// Optionally, you can call the onClose callback for each toast\n\t\t\t\ttoast.onClose?.();\n\t\t\t\treturn { ...toast, isVisible: false };\n\t\t\t})\n\t\t);\n\t\t// Set a timeout to clear the queue after the animation duration\n\t\tsetTimeout(() => {\n\t\t\tsetQueue([]);\n\t\t}, TOAST_ANIMATION_DURATION); // Adjust the timeout to match your animation duration\n\t}, []);\n\n\tconst contextValue: IToastContext = {\n\t\tqueue,\n\t\tadd,\n\t\tremove,\n\t\tclear\n\t};\n\n\treturn (\n\t\t<ToastContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ToastContext.Provider>\n\t);\n};\n\nfunction generateToastId() {\n\treturn `toast-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport default ToastProvider;\n","const ActionIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={21}\n\t\theight={21}\n\t\tviewBox=\"0 0 21 21\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--action ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<rect\n\t\t\tx={0.5}\n\t\t\ty={0.679}\n\t\t\twidth={20}\n\t\t\theight={20}\n\t\t\trx={10}\n\t\t\tclassName=\"fill-[var(--icon-fill-1,_#000)]\"\n\t\t/>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M11.517 6.04q.088.055.127.157c.025.066.03.14.013.209l-.775 3.13h2.826q.088 0 .16.052a.3.3 0 0 1 .108.14.35.35 0 0 1-.055.348l-4.083 4.822a.3.3 0 0 1-.168.098.27.27 0 0 1-.187-.037.3.3 0 0 1-.127-.156.35.35 0 0 1-.013-.21l.775-3.129H7.292a.27.27 0 0 1-.16-.053.3.3 0 0 1-.108-.14.35.35 0 0 1 .055-.348l4.083-4.821a.3.3 0 0 1 .168-.098.27.27 0 0 1 .187.037\"\n\t\t\tclassName=\"fill-[var(--icon-fill-2,_#fff)]\"\n\t\t/>\n\t</svg>\n);\nexport default ActionIcon;\n","const InfoIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={21}\n\t\theight={21}\n\t\tviewBox=\"0 0 21 21\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--info ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tclassName=\"fill-[var(--icon-fill-2,_#fff)]\"\n\t\t\td=\"M6.856 4.628h7.288v12.226H6.856z\"\n\t\t/>\n\t\t<path\n\t\t\tclassName=\"fill-[var(--icon-fill-1,_#000)]\"\n\t\t\td=\"M17.572 3.67C13.666-.235 7.335-.236 3.429 3.67c-3.905 3.905-3.905 10.237 0 14.143 3.905 3.904 10.237 3.904 14.143 0 3.905-3.906 3.904-10.238 0-14.143m-5.768 11.419a1.304 1.304 0 1 1-2.609 0V9.87a1.304 1.304 0 1 1 2.61 0zm-1.327-7.447c-.752 0-1.252-.532-1.237-1.19-.015-.688.485-1.204 1.252-1.204s1.252.516 1.268 1.205c0 .657-.5 1.189-1.283 1.189\"\n\t\t/>\n\t</svg>\n);\nexport default InfoIcon;\n","const GiftcardIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={20}\n\t\theight={15}\n\t\tviewBox=\"0 0 20 15\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--giftcard fill-[var(--icon-fill-1,_currentColor)] ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M8.23 3.129c-.288 0-.602.11-.82.37-.284.342-.373 1.362-.363 1.877.48.012 1.4-.001 1.771-.395.39-.411.496-1.13.082-1.568a.9.9 0 0 0-.67-.284m-3.666 0c.288 0 .603.11.82.37.284.342.373 1.362.363 1.877-.48.012-1.399-.001-1.77-.395-.39-.411-.496-1.13-.083-1.568a.9.9 0 0 1 .67-.284\" />\n\t\t<path d=\"M9.806 2.447c.73.773.828 1.99.328 2.929H20V1.948C20 .872 19.178 0 18.165 0H7.038v2.103c.9-.54 2.036-.43 2.768.344.417.44-.732-.775 0 0M4.347 9.21l-.91-.962L4.85 6.74H0v6.312C0 14.128.821 15 1.835 15h3.919V7.71zm3.589-2.47L9.33 8.236l-.912.959-1.38-1.48V15h11.126C19.18 15 20 14.128 20 13.052V6.74zM2.659 5.376c-.5-.939-.403-2.157.327-2.929.732-.775 1.869-.883 2.768-.344V0h-3.92C.822 0 0 .872 0 1.948v3.428z\" />\n\t</svg>\n);\nexport default GiftcardIcon;\n","const WarningIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={30}\n\t\theight={27}\n\t\tviewBox=\"0 0 30 27\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--warning fill-[var(--icon-fill-1,_#000)] ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M15 18.904c-.81 0-1.49.68-1.49 1.49s.68 1.489 1.49 1.489c.78 0 1.489-.68 1.453-1.454A1.454 1.454 0 0 0 15 18.904\" />\n\t\t<path d=\"M28.784 24.182a5.09 5.09 0 0 0 .012-5.147L19.467 2.88A5.07 5.07 0 0 0 15.006.289c-1.87 0-3.539.97-4.462 2.585l-9.34 16.173a5.13 5.13 0 0 0 .017 5.177 5.1 5.1 0 0 0 4.45 2.555h18.633c1.865 0 3.539-.97 4.48-2.597m-2.025-1.167a2.82 2.82 0 0 1-2.46 1.423H5.665a2.78 2.78 0 0 1-2.43-1.394 2.82 2.82 0 0 1-.006-2.841l9.34-16.167a2.76 2.76 0 0 1 2.437-1.412c1.018 0 1.93.53 2.436 1.417l9.335 16.168c.5.87.494 1.918-.018 2.806\" />\n\t\t<path d=\"M14.63 8.45c-.709.202-1.15.846-1.15 1.626.036.47.066.947.102 1.418l.303 5.343A1.09 1.09 0 0 0 15 17.886c.608 0 1.085-.471 1.114-1.085 0-.369 0-.708.036-1.084.066-1.15.137-2.3.203-3.449.035-.744.101-1.49.137-2.234a1.8 1.8 0 0 0-.137-.744 1.49 1.49 0 0 0-1.722-.84\" />\n\t</svg>\n);\nexport default WarningIcon;\n","import Skeleton from \"../skeleton/skeleton\";\n\nconst BannerSkeleton = () => {\n\treturn <Skeleton className=\"h-12 rounded-lg\" />;\n};\n\nexport default BannerSkeleton;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport ActionIcon from \"../../icons/banner/action\";\nimport InfoIcon from \"../../icons/banner/info\";\nimport GiftcardIcon from \"../../icons/giftcard\";\nimport WarningIcon from \"../../icons/warning\";\nimport SkeletonContainer from \"../skeleton/skeleton-container\";\nimport BannerSkeleton from \"./banner-skeleton\";\n\nconst variants = cva(\n\t\"rf-banner text-black rounded-lg flex items-center gap-2.5 p-3 min-h-12 font-medium leading-tight\",\n\t{\n\t\tvariants: {\n\t\t\ttone: {\n\t\t\t\tinfo: \"rf-banner--info bg-banner-info-background [--icon-fill-1:hsl(var(--rf-c-banner-info-foreground))]\",\n\t\t\t\ttip: \"rf-banner--tip bg-banner-tip-background [--icon-fill-1:hsl(var(--rf-c-banner-tip-foreground))]\",\n\t\t\t\taction:\n\t\t\t\t\t\"rf-banner--action bg-banner-action-background [--icon-fill-1:hsl(var(--rf-c-banner-action-foreground))]\",\n\t\t\t\terror:\n\t\t\t\t\t\"rf-banner--error bg-banner-error-background [--icon-fill-1:hsl(var(--rf-c-banner-error-foreground))]\",\n\t\t\t\tgiftcard:\n\t\t\t\t\t\"rf-banner--giftcard bg-[#F1F3FE] [--icon-fill-1:hsl(var(--rf-c-primary))]\"\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tdashed: \"border border-dashed border-[color:var(--icon-fill-1)]\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\ttone: \"info\"\n\t\t}\n\t}\n);\n\ntype Variants = VariantProps<typeof variants>;\n\nexport type BannerTone = NonNullable<Variants[\"tone\"]>;\n\ninterface BannerProps extends React.HTMLAttributes<HTMLElement>, Variants {\n\ticon?: BannerTone;\n\tpending?: boolean;\n}\n\nconst Banner = ({\n\tclassName,\n\tchildren,\n\ttone,\n\tborder,\n\ticon,\n\tpending = false,\n\t...props\n}: BannerProps) => {\n\treturn (\n\t\t<SkeletonContainer skeleton={<BannerSkeleton />} pending={pending}>\n\t\t\t<aside className={cn(variants({ tone, border }), className)} {...props}>\n\t\t\t\t{renderIcon(icon ?? tone ?? \"info\")}\n\t\t\t\t<span className=\"rf-banner__text flex-1\">{children}</span>\n\t\t\t</aside>\n\t\t</SkeletonContainer>\n\t);\n};\n\nconst COMMON_ICON_PROPS: React.SVGProps<SVGSVGElement> = {\n\tclassName: \"rf-banner__icon\",\n\twidth: 20,\n\theight: 20\n};\n\nfunction renderIcon(icon: BannerTone) {\n\tswitch (icon) {\n\t\tcase \"action\":\n\t\t\treturn <ActionIcon {...COMMON_ICON_PROPS} />;\n\t\tcase \"error\":\n\t\t\treturn <WarningIcon {...COMMON_ICON_PROPS} />;\n\t\tcase \"giftcard\":\n\t\t\treturn <GiftcardIcon {...COMMON_ICON_PROPS} />;\n\t\tdefault:\n\t\t\treturn <InfoIcon {...COMMON_ICON_PROPS} />;\n\t}\n}\n\nexport default memo(Banner);\n","import { useTranslations } from \"use-intl\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport Banner from \"../../ui/banner/banner\";\nimport BannerSkeleton from \"../../ui/banner/banner-skeleton\";\n\nconst ExchangeBanner = () => {\n\tconst t = useTranslations(\"banner\");\n\tconst { orderState, calculationState } = useReturnContext();\n\n\tconst hasInstantExchange =\n\t\torderState.value.data?.orderData.instantExchange ?? false;\n\tconst returnLabelPrice = calculationState.value.data?.returnLabelPrice ?? 0;\n\n\tif (!orderState.value.data || !calculationState.value.data) {\n\t\treturn <BannerSkeleton />;\n\t}\n\n\tif (hasInstantExchange) {\n\t\treturn (\n\t\t\t<Banner className=\"rf-exchange-banner\" tone=\"action\">\n\t\t\t\t{t(\"fast_exchange\")}\n\t\t\t</Banner>\n\t\t);\n\t}\n\n\tif (returnLabelPrice === 0) {\n\t\treturn (\n\t\t\t<Banner className=\"rf-exchange-banner\" tone=\"tip\">\n\t\t\t\t{t(\"free_shipping_label\")}\n\t\t\t</Banner>\n\t\t);\n\t}\n\n\treturn <Banner>{t(\"exchange_info\")}</Banner>;\n};\n\nexport default ExchangeBanner;\n","import { useCallback } from \"preact/hooks\";\nimport { NumberFormatOptions, useFormatter } from \"use-intl\";\nimport { parseToNumber } from \"../../utils/helpers\";\nimport { DEFAULT_CURRENCY } from \"../../utils/i18n\";\nimport useReturnContext from \"./use-return-context\";\nimport useWidgetContext from \"./use-widget-context\";\n\ntype TCurrencyDisplayOptions = NumberFormatOptions[\"currencyDisplay\"] | \"none\";\n\ninterface ICurrencyFormatOptions\n\textends Omit<NumberFormatOptions, \"style\" | \"currencyDisplay\"> {\n\tcurrencyDisplay?: TCurrencyDisplayOptions;\n\tfractionDigits?: number;\n}\n\nconst useCurrency = (hookOptions: ICurrencyFormatOptions = {}) => {\n\tconst { config } = useWidgetContext();\n\tconst { calculationState, cartState } = useReturnContext();\n\n\tconst cartCurrency = cartState.value.data?.transformed.currency;\n\tconst calcCurrency = calculationState.value.data?.currency.localCurrency;\n\n\tconst resolvedCurrencyCode =\n\t\thookOptions.currency ||\n\t\tcalcCurrency ||\n\t\tconfig.currency ||\n\t\tcartCurrency ||\n\t\tDEFAULT_CURRENCY;\n\n\tconst formatter = useFormatter();\n\n\tconst applyExchangeRate = useCallback(\n\t\t(value: number) => {\n\t\t\tconst currencyObject = calculationState.value.data?.currency;\n\t\t\tconst exchangeRate = parseToNumber(currencyObject?.exchangeRate, 1);\n\t\t\treturn value * exchangeRate;\n\t\t},\n\t\t[calculationState.value.data]\n\t);\n\n\tconst format = useCallback(\n\t\t(value: number | string, options?: ICurrencyFormatOptions) => {\n\t\t\tif (typeof value === \"string\") {\n\t\t\t\tvalue = parseFloat(value);\n\t\t\t}\n\n\t\t\tconst { fractionDigits = 2, ...mergedOptions } = {\n\t\t\t\t...hookOptions,\n\t\t\t\t...options\n\t\t\t};\n\t\t\tconst { currencyDisplay, ...formatOptions }: ICurrencyFormatOptions = {\n\t\t\t\tcurrency: resolvedCurrencyCode,\n\t\t\t\tminimumFractionDigits: fractionDigits,\n\t\t\t\tmaximumFractionDigits: fractionDigits,\n\t\t\t\t...mergedOptions\n\t\t\t};\n\n\t\t\tif (currencyDisplay === \"none\") {\n\t\t\t\treturn formatter.number(value, formatOptions);\n\t\t\t}\n\n\t\t\treturn formatter.number(value, {\n\t\t\t\tstyle: \"currency\",\n\t\t\t\tcurrencyDisplay,\n\t\t\t\t...formatOptions\n\t\t\t});\n\t\t},\n\t\t[formatter, hookOptions, resolvedCurrencyCode]\n\t);\n\n\treturn { format, applyExchangeRate, currency: resolvedCurrencyCode };\n};\n\nexport default useCurrency;\n","import { useMemo } from \"preact/hooks\";\nimport { parseToNumber } from \"../../utils/helpers\";\nimport useCurrency from \"./use-currency\";\nimport useReturnContext from \"./use-return-context\";\n\ninterface CalculationComputationResult {\n\torderTotal: number;\n\tcartTotal: number;\n\treturnTotal: number;\n\tgiftcardValue: number;\n\ttotalPriceDiscount: number;\n\tgiftCardBonusAmount: number;\n\treturnLabelPrice: number;\n\tisRefunding: boolean;\n}\n\nconst useCalculation = () => {\n\tconst { applyExchangeRate } = useCurrency();\n\tconst { calculationState, cartState } = useReturnContext();\n\n\tconst cart = cartState.value.data;\n\tconst calculation = calculationState.value.data;\n\n\tconst itemCount = cartState.value.data?.transformed.item_count ?? 0;\n\n\tconst computedTotals: CalculationComputationResult = useMemo(() => {\n\t\tif (!calculation || !cart) {\n\t\t\treturn {\n\t\t\t\torderTotal: 0,\n\t\t\t\tcartTotal: 0,\n\t\t\t\treturnTotal: 0,\n\t\t\t\tgiftcardValue: 0,\n\t\t\t\ttotalPriceDiscount: 0,\n\t\t\t\tgiftCardBonusAmount: 0,\n\t\t\t\treturnLabelPrice: 0,\n\t\t\t\tisRefunding: false\n\t\t\t};\n\t\t}\n\t\tconst {\n\t\t\torderSubtotal: orderTotal,\n\t\t\treturnSubtotal,\n\t\t\ttotal,\n\t\t\trefundMethods,\n\t\t\tdiscountSummary,\n\t\t\tgiftCardBonusAmount,\n\t\t\treturnLabelPrice\n\t\t} = calculation;\n\n\t\t// Exchange coverage + discount applied to return subtotal\n\t\tconst totalPriceDiscount = applyExchangeRate(\n\t\t\tdiscountSummary?.appliedToReturnSubtotal ?? 0\n\t\t);\n\n\t\tconst giftcardValue = parseToNumber(\n\t\t\tapplyExchangeRate(refundMethods?.giftcard)\n\t\t);\n\n\t\tconst cartTotal = applyExchangeRate(returnSubtotal) - giftcardValue;\n\n\t\tconst returnTotal = Math.abs(applyExchangeRate(total));\n\n\t\treturn {\n\t\t\torderTotal: applyExchangeRate(orderTotal),\n\t\t\tcartTotal,\n\t\t\treturnTotal,\n\t\t\tgiftcardValue,\n\t\t\ttotalPriceDiscount,\n\t\t\tgiftCardBonusAmount: applyExchangeRate(giftCardBonusAmount),\n\t\t\treturnLabelPrice: applyExchangeRate(returnLabelPrice),\n\t\t\tisRefunding: total > 0\n\t\t};\n\t}, [calculation, cart, applyExchangeRate]);\n\n\treturn {\n\t\titemCount,\n\t\t...computedTotals\n\t};\n};\n\nexport default useCalculation;\n","const StarIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={12}\n\t\theight={12}\n\t\tviewBox=\"0 0 13 13\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--star ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"m6.11 1.06 1.7 3.62 3.8.584-2.75 2.817.65 3.979-3.4-1.88-3.398 1.88.649-3.98L.61 5.265l3.8-.584z\"\n\t\t\tfill=\"currentColor\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.111}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t/>\n\t</svg>\n);\nexport default StarIcon;\n","import { memo } from \"preact/compat\";\nimport useCurrency from \"../../lib/hooks/context/use-currency\";\nimport { cn, isNil } from \"../../lib/utils/helpers\";\nimport Skeleton from \"./skeleton/skeleton\";\nimport SkeletonContainer from \"./skeleton/skeleton-container\";\n\ninterface PriceProps\n\textends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n\tvalue?: number;\n\tcompareAtValue?: number;\n\tpending?: boolean;\n}\n\nconst Price = ({\n\tvalue = 0,\n\tcompareAtValue,\n\tpending,\n\tclassName,\n\t...props\n}: PriceProps) => {\n\tconst { format: formatToCurrency } = useCurrency();\n\n\treturn (\n\t\t<SkeletonContainer\n\t\t\tskeleton={<Skeleton className=\"w-20\" />}\n\t\t\tpending={pending}\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-price font-medium text-base inline-flex flex-col items-end\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"rf-price__value\">{formatToCurrency(value)}</span>\n\t\t\t\t{!isNil(compareAtValue) && compareAtValue > value && (\n\t\t\t\t\t<span className=\"rf-price__compare-at text-affirmative line-through text-xs\">\n\t\t\t\t\t\t{formatToCurrency(compareAtValue)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default memo(Price);\n","import Skeleton from \"../../../ui/skeleton/skeleton\";\n\nconst AdjustmentsTableSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-adjustments-table-skeleton space-y-2\">\n\t\t\t<Skeleton className=\"h-5 w-full\" />\n\t\t\t<Skeleton className=\"h-5 w-full\" />\n\t\t</div>\n\t);\n};\n\nexport default AdjustmentsTableSkeleton;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../../../lib/hooks/context/use-calculation\";\nimport useCurrency from \"../../../../lib/hooks/context/use-currency\";\nimport useReturnContext from \"../../../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../../../lib/utils/helpers\";\nimport GiftcardIcon from \"../../../icons/giftcard\";\nimport StarIcon from \"../../../icons/star\";\nimport Price from \"../../../ui/price\";\nimport AdjustmentsTableSkeleton from \"./adjustments-table-skeleton\";\n\nconst AdjustmentsTable = () => {\n\tconst t = useTranslations();\n\tconst { format: formatToCurrency } = useCurrency();\n\tconst { calculationState } = useReturnContext();\n\n\tconst {\n\t\tcartTotal,\n\t\tgiftcardValue,\n\t\tgiftCardBonusAmount,\n\t\treturnLabelPrice,\n\t\ttotalPriceDiscount\n\t} = useCalculation();\n\n\tconst showDiscountRow = totalPriceDiscount > 0;\n\tconst showGiftcardRow = giftcardValue > 0;\n\tconst showLabelPriceRow = returnLabelPrice > 0;\n\n\tif (!calculationState.value.data) {\n\t\treturn (\n\t\t\t<div className=\"rf-adjustments-table-loading p-base border-t border-neutral-2\">\n\t\t\t\t<AdjustmentsTableSkeleton />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"rf-adjustments-table p-base border-t border-neutral-2\">\n\t\t\t<table className=\"rf-adjustments-table__table w-full\">\n\t\t\t\t<tbody className=\"rf-adjustments-table__body\">\n\t\t\t\t\t{showDiscountRow && (\n\t\t\t\t\t\t<Row value={totalPriceDiscount * -1} className=\"text-affirmative\">\n\t\t\t\t\t\t\t{t(\"price_details.price_change\")}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{showLabelPriceRow && (\n\t\t\t\t\t\t<Row value={returnLabelPrice} className=\"text-neutral-3\">\n\t\t\t\t\t\t\t{t(\"price_details.return_label\")}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{cartTotal > 0 && (\n\t\t\t\t\t\t<Row value={cartTotal}>{t(\"price_details.products\")}</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{showGiftcardRow && (\n\t\t\t\t\t\t<Row className=\"text-primary\" value={giftcardValue}>\n\t\t\t\t\t\t\t<span className=\"align-middle\">\n\t\t\t\t\t\t\t\t<GiftcardIcon className=\"inline -mt-1 w-4 h-auto\" />{\" \"}\n\t\t\t\t\t\t\t\t{t(\"price_details.giftcard\")}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{giftCardBonusAmount > 0 && (\n\t\t\t\t\t\t\t\t<span className=\"text-sm text-reward align-middle\">\n\t\t\t\t\t\t\t\t\t+{formatToCurrency(giftCardBonusAmount)}{\" \"}\n\t\t\t\t\t\t\t\t\t<StarIcon className=\"inline -mt-0.5\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n};\n\nfunction Row({\n\tvalue,\n\tchildren,\n\tclassName\n}: {\n\tvalue: number;\n} & React.HTMLAttributes<HTMLTableRowElement>) {\n\treturn (\n\t\t<tr className={cn(\"rf-adjustments-table__row h-6 group/row\", className)}>\n\t\t\t<th\n\t\t\t\tscope=\"row\"\n\t\t\t\tclassName=\"rf-adjustments-table__label space-x-2 font-normal text-left group-first/row:pt-0 group-last/row:pb-0 py-0.5\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</th>\n\t\t\t<td className=\"rf-adjustments-table__value text-right\">\n\t\t\t\t<Price value={value} />\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\nexport default AdjustmentsTable;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport ExchangeBanner from \"./exchange-banner\";\nimport AdjustmentsTable from \"./table/adjustments-table\";\n\nconst ExchangeAdjustments = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-exchange-adjustments border-t border-neutral-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-exchange-adjustments__banner p-base\">\n\t\t\t\t<ExchangeBanner />\n\t\t\t</div>\n\t\t\t<AdjustmentsTable />\n\t\t</div>\n\t);\n};\n\nexport default ExchangeAdjustments;\n","import { useTranslations } from \"use-intl\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\n\nconst AnnoucementBar = () => {\n\tconst t = useTranslations(\"announcement\");\n\tconst { cartState } = useReturnContext();\n\n\tconst itemCount = cartState.value.data?.transformed.item_count;\n\n\tconst stepSnippet = itemCount === 0 ? \"step_1\" : \"step_2\";\n\n\treturn (\n\t\t<div className=\"rf-announcement-bar h-14 bg-announcement-background text-announcement-foreground px-base flex items-center justify-between text-sm\">\n\t\t\t<ReturnAvatarStack />\n\t\t\t<div className=\"rf-announcement-bar__content space-x-1\">\n\t\t\t\t<span className=\"rf-announcement-bar__step-label text-neutral-3\">\n\t\t\t\t\t{t(\"this_step\")}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"rf-announcement-bar__step-text\">{t(stepSnippet)}</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AnnoucementBar;\n","import { cn } from \"../../lib/utils/helpers\";\nimport WarningIcon from \"../icons/warning\";\n\ninterface ErrorScreenProps extends React.HTMLAttributes<HTMLDivElement> {\n\terrorMessage?: string;\n\tinstructionMessage?: string;\n}\n\nconst ErrorScreen = ({\n\tclassName,\n\terrorMessage = \"Der skete en fejl!\",\n\tinstructionMessage = \"Opdater siden og prøv igen.\",\n\t...props\n}: ErrorScreenProps) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"rf-error-screen p-base flex-1\", className)}\n\t\t\trole=\"alert\"\n\t\t\taria-live=\"assertive\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-error-screen__content bg-[#FEF2F2] rounded-lg p-base flex flex-col items-center justify-center gap-1 text-center size-full\">\n\t\t\t\t<WarningIcon className=\"mb-2 fill-destructive\" aria-hidden=\"true\" />\n\t\t\t\t<p\n\t\t\t\t\tclassName=\"rf-error-screen__message text-neutral-3\"\n\t\t\t\t\tid=\"error-heading\"\n\t\t\t\t>\n\t\t\t\t\t{errorMessage}\n\t\t\t\t</p>\n\t\t\t\t<p className=\"rf-error-screen__instruction\">{instructionMessage}</p>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ErrorScreen;\n","import { useLocale } from \"use-intl\";\nimport { Locale } from \"../../utils/i18n\";\nimport navigation from \"../../utils/navigation\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useNavigation = () => {\n\tconst locale = useLocale() as Locale;\n\tconst {\n\t\tconfig: {\n\t\t\tdata: { slug }\n\t\t}\n\t} = useWidgetContext();\n\n\tif (!slug) {\n\t\tthrow new Error(\n\t\t\t\"useNavigation must be used within a WidgetContextProvider with a valid slug\"\n\t\t);\n\t}\n\n\treturn {\n\t\tback: (fallbackProductId?: string) =>\n\t\t\tnavigation.back(locale, slug, fallbackProductId),\n\t\tcontinue: () => navigation.continue(locale, slug),\n\t\texit: navigation.exit\n\t};\n};\n\nexport default useNavigation;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../lib/hooks/context/use-calculation\";\nimport useErrors from \"../../lib/hooks/context/use-errors\";\nimport useNavigation from \"../../lib/hooks/context/use-navigation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport ArrowRightIcon from \"../icons/arrow-right\";\nimport Button from \"../ui/button\";\nimport Price from \"../ui/price\";\n\nconst ExchangeConfirmation = () => {\n\tconst t = useTranslations(\"confirmation\");\n\tconst navigation = useNavigation();\n\n\tconst {\n\t\tcalculationState,\n\t\tisPending: globalPendingState,\n\t\thasFailed\n\t} = useReturnContext();\n\tconst { isRefunding, returnTotal } = useCalculation();\n\tconst { errors } = useErrors();\n\n\tconst blockingErrors = errors.filter(error => error.blocking);\n\n\tconst canContinue =\n\t\t!hasFailed && !globalPendingState && blockingErrors.length === 0;\n\n\tfunction handleContinue() {\n\t\tif (!canContinue) return;\n\t\tnavigation.continue();\n\t}\n\n\treturn (\n\t\t<div className=\"rf-exchange-confirmation rounded-t-2xl bg-neutral-1 p-base pb-safe-offset-base space-y-2\">\n\t\t\t<div className=\"rf-exchange-confirmation__header flex justify-between items-center pb-2\">\n\t\t\t\t<h3 className=\"rf-exchange-confirmation__title font-medium\">\n\t\t\t\t\t{isRefunding ? t(\"title_refund\") : t(\"title_checkout\")}\n\t\t\t\t</h3>\n\t\t\t\t<Price value={returnTotal} pending={calculationState.value.pending} />\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tdisabled={!canContinue}\n\t\t\t\tonClick={handleContinue}\n\t\t\t\tclassName=\"w-full\"\n\t\t\t\ticon={ArrowRightIcon}\n\t\t\t>\n\t\t\t\t<span>{t(\"confirm\")}</span>\n\t\t\t</Button>\n\t\t\t<p className=\"rf-exchange-confirmation__disclaimer text-sm text-neutral-3 text-center mx-auto font-normal\">\n\t\t\t\t{t(\"disclaimer\")}\n\t\t\t</p>\n\t\t</div>\n\t);\n};\n\nexport default ExchangeConfirmation;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils/helpers\";\n\nconst iconVariants = cva(\n\t\"rf-icon size-8 rounded-full flex items-center justify-center text-2xl p-[9px]\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary: \"rf-icon--primary border border-neutral-2 text-black\",\n\t\t\t\tsolid: \"rf-icon--solid bg-black text-white\",\n\t\t\t\t\"solid-inverse\": \"rf-icon--solid-inverse bg-neutral-1 text-neutral-3\"\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tsm: \"size-7 p-[8px]\",\n\t\t\t\tmd: \"size-8 p-[9px]\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"primary\",\n\t\t\tsize: \"md\"\n\t\t}\n\t}\n);\n\ninterface IconAttributesWithChildren {\n\ticon?: never;\n\tchildren: preact.ComponentChildren;\n}\n\ninterface IconAttributesWithoutChildren {\n\ticon: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;\n\tchildren?: never;\n}\n\ntype IconAttributes =\n\t| IconAttributesWithChildren\n\t| IconAttributesWithoutChildren;\n\ntype IconProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> &\n\tVariantProps<typeof iconVariants> &\n\tIconAttributes;\n\nconst Icon = ({\n\ticon: IconComponent,\n\tvariant,\n\tsize,\n\tclassName,\n\tchildren,\n\t...props\n}: IconProps) => {\n\treturn (\n\t\t<div className={cn(iconVariants({ variant, size }), className)} {...props}>\n\t\t\t{IconComponent && <IconComponent className=\"size-full\" />}\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default Icon;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport Icon from \"../icons/icon\";\nimport XIcon from \"../icons/x\";\n\nconst ExchangeHeader = () => {\n\tconst t = useTranslations(\"common\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-exchange-header border-t border-neutral-3 p-base flex items-center justify-between\">\n\t\t\t<h2 className=\"rf-exchange-header__title text-xl font-semibold\">\n\t\t\t\t{t(\"title\")}\n\t\t\t</h2>\n\t\t\t<button\n\t\t\t\tclassName=\"rf-exchange-header__close-button flex items-center gap-2 group\"\n\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<span className=\"rf-exchange-header__close-text\">{t(\"close\")}</span>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"group-hover:bg-neutral-2 transition-colors\"\n\t\t\t\t\ticon={XIcon}\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default ExchangeHeader;\n","const CartIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={28}\n\t\theight={27}\n\t\tviewBox=\"0 0 28 27\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--cart ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"M8.094 20.443c-1.223-.066-1.2-1.856 0-1.919 3.4.013 12.367.004 15.875.006.96 0 1.78-.68 1.996-1.652l1.992-8.979a1.77 1.77 0 0 0-.316-1.46 1.62 1.62 0 0 0-1.293-.653c-1.41 0-13.39-.057-19.525-.082L5.85 1.947C5.617 1.05 4.83.423 3.936.423H.821C.367.423 0 .805 0 1.277s.367.854.82.854h3.116c.154 0 .29.108.33.262L8 16.818a2.5 2.5 0 0 0-1.732.793 2.7 2.7 0 0 0-.738 1.919c.025 1.445 1.174 2.621 2.563 2.621H9.29a3.1 3.1 0 0 0-.278 1.282c0 1.648 1.289 2.99 2.873 2.99s2.872-1.341 2.872-2.99c0-.459-.1-.893-.277-1.282h5.182a3.1 3.1 0 0 0-.277 1.281c0 1.649 1.288 2.99 2.872 2.99s2.873-1.341 2.873-2.99a3.1 3.1 0 0 0-.299-1.326.85.85 0 0 0 .56-.81c0-.47-.368-.853-.822-.853zm5.023 2.99c0 .706-.552 1.281-1.231 1.281-.68 0-1.232-.575-1.232-1.281 0-.707.552-1.281 1.23-1.282h.003c.678 0 1.23.575 1.23 1.282m9.141 1.28c-.678 0-1.23-.574-1.23-1.28 0-.7.54-1.27 1.21-1.282h.04c.67.011 1.212.582 1.212 1.281 0 .707-.553 1.282-1.232 1.282M26.355 7.5q.005.009.003.015l-.84 3.783h-2.842l.484-3.817 3.182.013q.006-.002.013.006m-8.462 9.322v-3.815h2.91l-.483 3.815zm-4.07 0-.488-3.815h2.916v3.815zm-3.779 0h-.002a.45.45 0 0 1-.428-.341l-.9-3.475h2.965l.488 3.816zm3.073-5.524-.494-3.861 3.628.015v3.846zm4.776 0v-3.84l3.612.016-.485 3.824zM10.966 7.43l.495 3.868H8.27L7.267 7.414zm13.003 9.392h-1.993l.483-3.815h2.68l-.773 3.486a.41.41 0 0 1-.397.329\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default CartIcon;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport CartIcon from \"../icons/cart\";\n\nconst ExchangePlaceholder = () => {\n\tconst t = useTranslations(\"exchange_placeholder\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-exchange-placeholder px-base pb-base\">\n\t\t\t<div className=\"rf-exchange-placeholder__content border border-dashed border-[#DDDDDD] h-36 rounded-md flex items-center justify-center flex-col gap-2 font-medium text-base p-base\">\n\t\t\t\t<CartIcon className=\"text-neutral-3\" />\n\t\t\t\t<span className=\"rf-exchange-placeholder__text\">\n\t\t\t\t\t{t(\"prompt_text\")}\n\t\t\t\t</span>\n\t\t\t\t<button\n\t\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\t\tclassName=\"rf-exchange-placeholder__continue text-button-background decoration-[color:hsla(var(--rf-c-button-background),_0.25)] underline-offset-4 underline text-sm cursor-pointer\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t{t(\"continue\")}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ExchangePlaceholder;\n","import useErrors from \"../../../lib/hooks/context/use-errors\";\nimport Banner from \"../../ui/banner/banner\";\n\nconst ProductErrors = () => {\n\tconst { errors } = useErrors();\n\n\tif (errors.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"rf-product-view__error-list px-base pb-base space-y-base\">\n\t\t\t{errors.map(({ id, message }) => (\n\t\t\t\t<Banner\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName=\"rf-product-view__error animate-slide-up-and-fade-in\"\n\t\t\t\t\ttone=\"error\"\n\t\t\t\t>\n\t\t\t\t\t{message}\n\t\t\t\t</Banner>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default ProductErrors;\n","import { useMemo } from \"preact/hooks\";\nimport { ExtendedShopifyProduct } from \"../../../components/drawer/product/product\";\nimport { CalculationExchangeProduct } from \"../../types\";\nimport { stripShopifyId } from \"../../utils/shopify\";\nimport useReturnContext from \"./use-return-context\";\n\n/**\n * Merges cart items with their corresponding exchange calculation details.\n * Returns cart items enriched with pricing information from the calculation state.\n */\nconst useCartItems = () => {\n\tconst { cartState, calculationState } = useReturnContext();\n\n\tconst transformedCart = cartState.value.data?.transformed;\n\tconst exchangeDetails =\n\t\tcalculationState.value.data?.exchange?.exchangeDetails;\n\n\tconst cartItems: ExtendedShopifyProduct[] = useMemo(() => {\n\t\tconst items = transformedCart?.items;\n\n\t\tif (!items) return [];\n\n\t\treturn items.map(item => {\n\t\t\tlet calculation: Omit<CalculationExchangeProduct, \"coverage\"> | undefined;\n\n\t\t\tconst exchangeDetailItems = exchangeDetails?.filter(exchangeItem => {\n\t\t\t\tif (exchangeItem.variantId) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tNumber(stripShopifyId(exchangeItem.variantId)) === item.variant_id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\tNumber(stripShopifyId(exchangeItem.productId)) === item.product_id\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tif (exchangeDetailItems && exchangeDetailItems.length > 0) {\n\t\t\t\t// Aggregate pricing from all matching exchange detail items for this cart item\n\t\t\t\tcalculation = exchangeDetailItems.reduce(\n\t\t\t\t\t(acc, { coverage, ...curr }) => {\n\t\t\t\t\t\tconst resolvedCurrPrice = coverage?.originalUnitPrice ?? curr.price;\n\n\t\t\t\t\t\tconst resolvedCompareAt =\n\t\t\t\t\t\t\tcoverage?.exchangeUnitPrice ?? curr.compareAtPrice ?? null;\n\n\t\t\t\t\t\tif (resolvedCompareAt) {\n\t\t\t\t\t\t\tif (!acc.compareAtPrice) {\n\t\t\t\t\t\t\t\tacc.compareAtPrice = resolvedCompareAt;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.compareAtPrice += resolvedCompareAt;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tacc.price += resolvedCurrPrice;\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...curr,\n\t\t\t\t\t\t\t...acc\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tprice: 0,\n\t\t\t\t\t\tcompareAtPrice: null\n\t\t\t\t\t} as Omit<CalculationExchangeProduct, \"coverage\">\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\tcalculation\n\t\t\t};\n\t\t});\n\t}, [transformedCart, exchangeDetails]);\n\n\treturn { cartItems };\n};\n\nexport default useCartItems;\n","import { ShopifyCartItem } from \"../../../lib/types\";\n\nexport interface QuantityPickerConstraints {\n\tmin: {\n\t\tlimit: number;\n\t\tdisabled: boolean;\n\t};\n\tmax: {\n\t\tlimit: number;\n\t\tdisabled: boolean;\n\t};\n}\n\nexport const DEFAULT_CONSTRAINTS: QuantityPickerConstraints = {\n\tmin: { limit: 1, disabled: false },\n\tmax: { limit: 99, disabled: true }\n};\n\nexport function getNormalizedQuantityRule(\n\tquantityRule: ShopifyCartItem[\"quantity_rule\"]\n) {\n\tconst minQuantity = quantityRule?.min ?? 1;\n\tconst maxQuantity = quantityRule?.max ?? 99;\n\tconst increment = quantityRule?.increment ?? 1;\n\n\tconst constraints: QuantityPickerConstraints = {\n\t\tmin: { limit: minQuantity, disabled: false },\n\t\tmax: { limit: maxQuantity, disabled: true }\n\t};\n\n\treturn {\n\t\tmin: minQuantity,\n\t\tmax: maxQuantity,\n\t\tincrement,\n\t\tconstraints\n\t};\n}\n\nexport function clampQuantity(\n\tquantity: number,\n\tconstraints: QuantityPickerConstraints = DEFAULT_CONSTRAINTS\n) {\n\treturn Math.max(\n\t\tconstraints.min.limit,\n\t\tMath.min(quantity, constraints.max.limit)\n\t);\n}\n","import { useCallback } from \"preact/hooks\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport Icon from \"../../icons/icon\";\nimport {\n\tclampQuantity,\n\tDEFAULT_CONSTRAINTS,\n\tQuantityPickerConstraints\n} from \"./product.utils\";\n\ninterface QuantityPickerProps extends React.HTMLAttributes<HTMLDivElement> {\n\tonIncrement: (isAtBound: boolean) => void | Promise<void>;\n\tonDecrement: (isAtBound: boolean) => void | Promise<void>;\n\tquantity: number;\n\tconstraints?: QuantityPickerConstraints;\n\tpending?: boolean;\n\tdisabled?: boolean;\n}\n\nconst QuantityPicker = ({\n\tonIncrement,\n\tonDecrement,\n\tconstraints = DEFAULT_CONSTRAINTS,\n\tquantity,\n\tpending = false,\n\tdisabled = false,\n\tclassName,\n\t...props\n}: QuantityPickerProps) => {\n\tconst isDisabled = pending || disabled;\n\n\tconst isAtMin = quantity === constraints.min.limit;\n\tconst isAtMax = quantity === constraints.max.limit;\n\n\tconst incrementDisabled = (constraints.max.disabled && isAtMax) || isDisabled;\n\tconst decrementDisabled = (constraints.min.disabled && isAtMin) || isDisabled;\n\n\tconst handleIncrement = useCallback(async () => {\n\t\tif (incrementDisabled) return;\n\t\ttry {\n\t\t\tawait onIncrement(isAtMax);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Increment failed:\", err);\n\t\t}\n\t}, [incrementDisabled, onIncrement, isAtMax]);\n\n\tconst handleDecrement = useCallback(async () => {\n\t\tif (decrementDisabled) return;\n\t\ttry {\n\t\t\tawait onDecrement(isAtMin);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"decrement failed:\", err);\n\t\t}\n\t}, [decrementDisabled, onDecrement, isAtMin]);\n\n\tconst clampedQuantity = clampQuantity(quantity, constraints);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-quantity-picker rounded-full p-1 border border-neutral-1 flex items-center h-min gap-2 transition-opacity\",\n\t\t\t\tisDisabled &&\n\t\t\t\t\t\"rf-quantity-picker--disabled opacity-50 cursor-not-allowed\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"rf-quantity-picker__decrement-button disabled:!opacity-50 desktop:hover:opacity-80 disabled:cursor-not-allowed transition-opacity\"\n\t\t\t\tdisabled={decrementDisabled}\n\t\t\t\tonClick={handleDecrement}\n\t\t\t>\n\t\t\t\t<Icon variant=\"solid-inverse\" size=\"sm\">\n\t\t\t\t\t<span className=\"rf-quantity-picker__decrement-icon text-base leading-none -mt-0.5\">\n\t\t\t\t\t\t-\n\t\t\t\t\t</span>\n\t\t\t\t</Icon>\n\t\t\t</button>\n\t\t\t<div className=\"rf-quantity-picker__quantity px-1.5 flex-1 text-base\">\n\t\t\t\t{clampedQuantity}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"rf-quantity-picker__increment-button disabled:!opacity-50 desktop:hover:opacity-80 disabled:cursor-not-allowed transition-opacity\"\n\t\t\t\tdisabled={incrementDisabled}\n\t\t\t\tonClick={handleIncrement}\n\t\t\t>\n\t\t\t\t<Icon variant=\"solid-inverse\" size=\"sm\">\n\t\t\t\t\t<span className=\"rf-quantity-picker__increment-icon text-base leading-none -mt-0.5\">\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t</Icon>\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default QuantityPicker;\n","import { memo } from \"preact/compat\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useErrors from \"../../../lib/hooks/context/use-errors\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport useCartActions from \"../../../lib/hooks/feature/use-cart-actions\";\nimport { ShopifyCartItem } from \"../../../lib/types\";\nimport { updateCartItemQuantity } from \"../../../lib/utils/cart\";\nimport {\n\tgetErrorStateFromCode,\n\tProductErrorState\n} from \"../../../lib/utils/errors\";\nimport { isNil } from \"../../../lib/utils/helpers\";\nimport { getNormalizedQuantityRule } from \"./product.utils\";\nimport QuantityPicker from \"./quantity-picker\";\n\ninterface ProductActionsProps {\n\tvariantId: number;\n\tquantity?: number;\n\tquantityRule: ShopifyCartItem[\"quantity_rule\"];\n}\n\nconst ProductActions = ({\n\tvariantId,\n\tquantity,\n\tquantityRule\n}: ProductActionsProps) => {\n\tconst t = useTranslations(\"product\");\n\tconst [isPending, setIsPending] = useState(false);\n\tconst { cartState, isPending: anyStatePending } = useReturnContext();\n\tconst errors = useErrors();\n\tconst { processCartUpdate } = useCartActions();\n\n\tconst handleQuantityChange = useCallback(\n\t\tasync (newQuantity: number) => {\n\t\t\tsetIsPending(true);\n\n\t\t\tconst errorId = ProductErrorState.ProductLimit;\n\n\t\t\ttry {\n\t\t\t\t// Start loading state\n\t\t\t\tcartState.set(prev => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tpending: true,\n\t\t\t\t\terror: null\n\t\t\t\t}));\n\n\t\t\t\tconst updatedCart = await updateCartItemQuantity({\n\t\t\t\t\tvariantId,\n\t\t\t\t\tquantity: newQuantity\n\t\t\t\t});\n\n\t\t\t\tawait processCartUpdate(updatedCart);\n\n\t\t\t\t// Remove the error if it exists\n\t\t\t\tif (errors.has(errorId)) {\n\t\t\t\t\terrors.remove(errorId);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconst error = err as Error;\n\t\t\t\tconst parsed = parseInt(error.message);\n\t\t\t\tconst errorCode = isNaN(parsed) ? null : parsed;\n\n\t\t\t\tcartState.set(prev => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tpending: false\n\t\t\t\t}));\n\n\t\t\t\terrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage: t(`error.${getErrorStateFromCode(errorCode)}`)\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tsetIsPending(false);\n\t\t\t}\n\t\t},\n\t\t[cartState, variantId, errors, t, processCartUpdate]\n\t);\n\n\tif (isNil(quantity)) {\n\t\treturn null;\n\t}\n\n\tconst { increment, constraints } = getNormalizedQuantityRule(quantityRule);\n\n\treturn (\n\t\t<div className=\"rf-product-actions flex items-center\">\n\t\t\t<QuantityPicker\n\t\t\t\tpending={anyStatePending || isPending}\n\t\t\t\tconstraints={constraints}\n\t\t\t\tonDecrement={isAtBound => {\n\t\t\t\t\tconst newQuantity = isAtBound ? 0 : quantity - increment;\n\t\t\t\t\thandleQuantityChange(newQuantity);\n\t\t\t\t}}\n\t\t\t\tonIncrement={() => {\n\t\t\t\t\tconst newQuantity = quantity + increment;\n\t\t\t\t\thandleQuantityChange(newQuantity);\n\t\t\t\t}}\n\t\t\t\tquantity={quantity}\n\t\t\t/>\n\t\t\t<button\n\t\t\t\tdisabled={anyStatePending || isPending}\n\t\t\t\tclassName=\"rf-product-actions__remove-button underline ml-auto text-sm disabled:cursor-not-allowed disabled:opacity-50 transition-opacity cursor-pointer\"\n\t\t\t\tonClick={() => handleQuantityChange(0)}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t{t(\"remove\")}\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default memo(ProductActions);\n","import { cn } from \"../../lib/utils/helpers\";\n\ninterface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n\tdisabled?: boolean;\n\tunstyled?: boolean;\n\tonDisabledClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = ({\n\tclassName,\n\thref,\n\tunstyled = false,\n\tonClick,\n\tonDisabledClick,\n\tdisabled = false,\n\t...props\n}: LinkProps) => {\n\tconst isDisabled = disabled || !href;\n\n\tfunction handleClick(e: React.MouseEvent<HTMLAnchorElement>) {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\tonDisabledClick?.(e);\n\t\t\treturn;\n\t\t}\n\t\tonClick?.(e);\n\t}\n\n\treturn (\n\t\t<a\n\t\t\tonClick={handleClick}\n\t\t\thref={isDisabled ? undefined : href}\n\t\t\taria-disabled={isDisabled}\n\t\t\tclassName={cn(\n\t\t\t\t\"block\",\n\t\t\t\t!unstyled && \"transition-opacity\",\n\t\t\t\tisDisabled\n\t\t\t\t\t? unstyled\n\t\t\t\t\t\t? \"cursor-default\"\n\t\t\t\t\t\t: \"cursor-not-allowed opacity-50\"\n\t\t\t\t\t: \"cursor-pointer\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default Link;\n","import { memo } from \"preact/compat\";\nimport { useTranslations } from \"use-intl\";\nimport useCurrency from \"../../../lib/hooks/context/use-currency\";\nimport { cn, isNil, parseToNumber } from \"../../../lib/utils/helpers\";\nimport Link from \"../../ui/link\";\nimport Price from \"../../ui/price\";\n\nexport interface ProductAttributesAttributes {\n\ttitle: string;\n\tvariantTitle: string | null | undefined;\n\tpending?: boolean;\n\tprice: number | null | undefined;\n\tcompareAtPrice: number | null | undefined;\n\tquantity: number;\n\thref?: string;\n}\n\ninterface ProductAttributesProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"title\">,\n\t\tProductAttributesAttributes {\n\tshowQuantity?: boolean;\n}\n\nconst ProductAttributes = ({\n\ttitle,\n\tvariantTitle,\n\tpending = false,\n\tprice,\n\tcompareAtPrice,\n\tclassName,\n\tquantity = 1,\n\thref,\n\tshowQuantity = true,\n\t...props\n}: ProductAttributesProps) => {\n\tconst t = useTranslations();\n\tconst { applyExchangeRate } = useCurrency();\n\tconst quantityIsVisible = quantity > 1 && showQuantity;\n\n\tconst resolvedCompareAt = !isNil(compareAtPrice)\n\t\t? applyExchangeRate(compareAtPrice)\n\t\t: undefined;\n\n\tconst resolvedPrice = applyExchangeRate(parseToNumber(price));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-product-attributes flex justify-between gap-4 text-sm leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-product-attributes__info flex-1 min-w-0\">\n\t\t\t\t<Link unstyled href={href} className=\"rf-product-attributes__link\">\n\t\t\t\t\t<h3 className=\"rf-product-attributes__title text-base font-medium line-clamp-1\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</h3>\n\t\t\t\t</Link>\n\t\t\t\t{(variantTitle || quantityIsVisible) && (\n\t\t\t\t\t<h4 className=\"rf-product-attributes__variant text-neutral-3\">\n\t\t\t\t\t\t{variantTitle}{\" \"}\n\t\t\t\t\t\t{quantityIsVisible && (\n\t\t\t\t\t\t\t<span className=\"rf-product-attributes__quantity\">\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t{t(\"piece\", {\n\t\t\t\t\t\t\t\t\tcount: quantity\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</h4>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Price\n\t\t\t\tpending={pending}\n\t\t\t\tvalue={resolvedPrice}\n\t\t\t\tcompareAtValue={resolvedCompareAt}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default memo(ProductAttributes);\n","import { memo } from \"preact/compat\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../../lib/types\";\nimport Image from \"../../ui/image\";\n\ninterface ProductImageProps {\n\timageSource: string;\n\ttitle: string;\n\thref: string;\n}\n\nconst ProductImage = ({ imageSource, title, href }: ProductImageProps) => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\tconst handleAnchorClick = () =>\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\n\treturn (\n\t\t<a className=\"rf-product-image\" href={href} onClick={handleAnchorClick}>\n\t\t\t<Image\n\t\t\t\tclassName=\"rf-product-image__img w-[70px] h-24 rounded-lg border border-neutral-1 object-cover\"\n\t\t\t\tsrc={imageSource}\n\t\t\t\talt={title}\n\t\t\t/>\n\t\t</a>\n\t);\n};\n\nexport default memo(ProductImage);\n","import useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationExchangeProduct,\n\tShopifyCartItem\n} from \"../../../lib/types\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport ProductActions from \"./product-actions\";\nimport ProductAttributes from \"./product-attributes\";\nimport ProductImage from \"./product-image\";\n\nexport interface ExtendedShopifyProduct extends ShopifyCartItem {\n\tcalculation: Omit<CalculationExchangeProduct, \"coverage\"> | undefined;\n}\n\ninterface ProductProps\n\textends Omit<\n\t\tReact.HTMLAttributes<HTMLLIElement>,\n\t\t\"children\" | \"title\" | \"id\" | \"key\"\n\t> {\n\tproduct: ExtendedShopifyProduct;\n}\n\nconst Product = ({\n\tproduct: { calculation, ...product },\n\tclassName,\n\t...props\n}: ProductProps) => {\n\tconst {\n\t\tconfig: { options }\n\t} = useWidgetContext();\n\n\tconst href = options.getProductUrl\n\t\t? options.getProductUrl(product)\n\t\t: `/products/${product.handle}`;\n\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\"rf-product flex gap-4 p-base first:pt-0\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ProductImage\n\t\t\t\timageSource={product.image}\n\t\t\t\ttitle={product.product_title}\n\t\t\t\thref={href}\n\t\t\t/>\n\t\t\t<div className=\"rf-product__content space-y-2 flex-1\">\n\t\t\t\t<ProductAttributes\n\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\thref={href}\n\t\t\t\t\ttitle={product.product_title}\n\t\t\t\t\tvariantTitle={product.variant_title}\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tprice={calculation?.price}\n\t\t\t\t\tcompareAtPrice={calculation?.compareAtPrice}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t\tshowQuantity={false}\n\t\t\t\t/>\n\t\t\t\t<ProductActions\n\t\t\t\t\tvariantId={product.variant_id}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t\tquantityRule={product.quantity_rule}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</li>\n\t);\n};\n\nexport default Product;\n","import useCartItems from \"../../../lib/hooks/context/use-cart-items\";\nimport Product from \"./product\";\n\nconst ProductList = () => {\n\tconst { cartItems } = useCartItems();\n\n\treturn (\n\t\t<ul className=\"rf-product-list border-neutral-2 divide-y divide-neutral-2\">\n\t\t\t{cartItems.map((product, i) => {\n\t\t\t\tconst key = `${product.id}-${i}`;\n\t\t\t\treturn <Product key={key} product={product} />;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nexport default ProductList;\n","const ArrowDownIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={9}\n\t\theight={11}\n\t\tviewBox=\"0 0 9 11\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-down ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"m4.92 10.824 3.907-3.972A.6.6 0 0 0 9 6.426.6.6 0 0 0 8.827 6l-.355-.36a.594.594 0 0 0-.842 0L5.346 7.957V.594A.583.583 0 0 0 4.764 0h-.502a.605.605 0 0 0-.608.594v7.39L1.357 5.64a.58.58 0 0 0-.831 0L.172 6A.6.6 0 0 0 0 6.426c0 .161.062.312.173.426l3.907 3.972A.58.58 0 0 0 4.5 11a.58.58 0 0 0 .42-.176\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\n\nexport default ArrowDownIcon;\n","const ChevronIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={7}\n\t\tviewBox=\"0 0 11 7\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--chevron ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M10.632 6.183a.95.95 0 0 1-.673.24.97.97 0 0 1-.652-.288l-3.375-3.49-3.375 3.49a.96.96 0 0 1-.652.287.96.96 0 0 1-.673-.24.9.9 0 0 1-.299-.625.88.88 0 0 1 .25-.646L5.244.71a.97.97 0 0 1 1.375 0l4.062 4.2a.9.9 0 0 1 .25.646.9.9 0 0 1-.3.626\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default ChevronIcon;\n","import { useEffect, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils/helpers\";\n\ninterface ExpanderProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"onToggle\"> {\n\tisOpen: boolean;\n\tcollapseDelay?: number;\n\tautoCloseAfter?: number;\n\tonToggle?: (isOpen: boolean) => void;\n}\n\nconst Expander = ({\n\tisOpen,\n\tclassName,\n\tstyle,\n\tchildren,\n\tcollapseDelay = 300,\n\tautoCloseAfter,\n\tonToggle,\n\t...props\n}: ExpanderProps) => {\n\tconst [isRendered, setIsRendered] = useState(isOpen);\n\tconst [height, setHeight] = useState<number | undefined>(\n\t\tisOpen ? undefined : 0\n\t);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst collapseTimeoutRef = useRef<NodeJS.Timeout>();\n\tconst autoCloseTimeoutRef = useRef<NodeJS.Timeout>();\n\n\t// Measure height whenever content might change\n\tconst measureHeight = () => {\n\t\tconst container = containerRef.current;\n\t\tif (container) {\n\t\t\tsetHeight(container.scrollHeight);\n\t\t}\n\t};\n\n\t// Handle opening/closing state changes\n\tuseEffect(() => {\n\t\tif (collapseTimeoutRef.current) {\n\t\t\tclearTimeout(collapseTimeoutRef.current);\n\t\t}\n\t\tif (autoCloseTimeoutRef.current) {\n\t\t\tclearTimeout(autoCloseTimeoutRef.current);\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\t// Opening: render first, then measure height\n\t\t\tsetIsRendered(true);\n\n\t\t\t// Set up auto-close timer if specified\n\t\t\tif (autoCloseAfter && onToggle) {\n\t\t\t\tautoCloseTimeoutRef.current = setTimeout(() => {\n\t\t\t\t\tonToggle(false);\n\t\t\t\t}, autoCloseAfter);\n\t\t\t}\n\t\t} else {\n\t\t\t// Closing: set height to 0 immediately, unmount after delay\n\t\t\tsetHeight(0);\n\t\t\tcollapseTimeoutRef.current = setTimeout(() => {\n\t\t\t\tsetIsRendered(false);\n\t\t\t}, collapseDelay);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (collapseTimeoutRef.current) {\n\t\t\t\tclearTimeout(collapseTimeoutRef.current);\n\t\t\t}\n\t\t\tif (autoCloseTimeoutRef.current) {\n\t\t\t\tclearTimeout(autoCloseTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [isOpen, collapseDelay, autoCloseAfter, onToggle]);\n\n\t// Measure height when rendered and opened\n\tuseEffect(() => {\n\t\tif (isRendered && isOpen) {\n\t\t\t// Use requestAnimationFrame to ensure DOM is updated\n\t\t\tconst frame = requestAnimationFrame(() => {\n\t\t\t\tmeasureHeight();\n\t\t\t});\n\t\t\treturn () => cancelAnimationFrame(frame);\n\t\t}\n\t}, [isRendered, isOpen, children]);\n\n\t// Re-measure height if content changes while open\n\tuseEffect(() => {\n\t\tif (isOpen && isRendered) {\n\t\t\tmeasureHeight();\n\t\t}\n\t}, [children, isOpen, isRendered]);\n\n\tif (!isRendered) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"overflow-hidden transition-all duration-300 ease-in-out\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\theight: height !== undefined ? `${height}px` : \"auto\",\n\t\t\t\t...(typeof style === \"object\" ? style : {})\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div ref={containerRef}>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Expander;\n","import { useTranslations } from \"use-intl\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport GiftcardIcon from \"../../icons/giftcard\";\n\nexport type BadgeType = \"giftcard\";\n\nexport interface ProductBadgeProps {\n\ttype: BadgeType | null;\n}\n\ntype ReturnProductBadgeProps = React.HTMLAttributes<HTMLDivElement> &\n\tProductBadgeProps;\n\nconst ReturnProductBadge = ({\n\tclassName,\n\ttype,\n\t...props\n}: ReturnProductBadgeProps) => {\n\tconst t = useTranslations(\"product.badge\");\n\n\tswitch (type) {\n\t\tcase \"giftcard\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-return-product__badge rf-return-product__badge--giftcard text-base text-primary\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<GiftcardIcon className=\"inline -mt-1 w-4 h-auto\" /> {t(\"giftcard\")}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport default ReturnProductBadge;\n","import { useTranslations } from \"use-intl\";\nimport Link from \"../../ui/link\";\nimport ReturnProductBadge, { ProductBadgeProps } from \"./return-product-badge\";\n\ninterface ReturnProductActionsProps extends ProductBadgeProps {\n\tpending?: boolean;\n\tdeleted?: boolean;\n\tonDeletedClick?: () => void;\n\thref: string;\n\thandleAnchorClick: () => void;\n}\n\nconst ReturnProductActions = ({\n\tpending = false,\n\tdeleted = false,\n\thref,\n\tonDeletedClick,\n\thandleAnchorClick,\n\t...rest\n}: ReturnProductActionsProps) => {\n\tconst t = useTranslations(\"product\");\n\n\tfunction handleDeletedClick() {\n\t\tif (deleted) {\n\t\t\tonDeletedClick?.();\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"rf-return-product__actions flex justify-between items-center\">\n\t\t\t<Link\n\t\t\t\tonDisabledClick={handleDeletedClick}\n\t\t\t\tdisabled={pending || deleted}\n\t\t\t\tonClick={handleAnchorClick}\n\t\t\t\tclassName=\"rf-return-product__link text-sm underline block\"\n\t\t\t\thref={href}\n\t\t\t>\n\t\t\t\t{t(\"go_to_product\")}\n\t\t\t</Link>\n\t\t\t<ReturnProductBadge {...rest} />\n\t\t</div>\n\t);\n};\n\nexport default ReturnProductActions;\n","import { useMemo, useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationLineItem,\n\tOrderProduct,\n\tWidgetViewState\n} from \"../../../lib/types\";\nimport { cn, isNil } from \"../../../lib/utils/helpers\";\nimport Banner from \"../../ui/banner/banner\";\nimport Expander from \"../../ui/expander\";\nimport Image from \"../../ui/image\";\nimport Link from \"../../ui/link\";\nimport ProductAttributes from \"../product/product-attributes\";\nimport ReturnProductActions from \"./return-product-actions\";\nimport { BadgeType } from \"./return-product-badge\";\n\nexport interface ExtendedCalculationLineItem extends OrderProduct {\n\tcalculation: CalculationLineItem | undefined;\n}\n\nexport interface IReturnProductAttributes {\n\thandle: string;\n\timageSource: string;\n}\n\ninterface ReturnProductProps\n\textends Omit<React.HTMLAttributes<HTMLLIElement>, \"children\" | \"title\"> {\n\tproduct: ExtendedCalculationLineItem;\n\tallProducts: ExtendedCalculationLineItem[];\n}\n\nconst ReturnProduct = ({\n\tproduct: { calculation, ...product },\n\tallProducts,\n\tclassName,\n\t...props\n}: ReturnProductProps) => {\n\tconst t = useTranslations(\"product.error\");\n\tconst [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions,\n\t\t\tdata: { returnData }\n\t\t}\n\t} = useWidgetContext();\n\n\tconst href = options.getProductUrl\n\t\t? options.getProductUrl(product)\n\t\t: `/products/${product.handle}`;\n\n\tfunction handleAnchorClick() {\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\t}\n\n\tconst qty = product?.quantity ?? 1;\n\n\tconst price = (calculation?.discountedPrice ?? calculation?.price ?? 0) * qty;\n\tconst compareAtPrice = (calculation?.originalPrice ?? 0) * qty;\n\n\tconst badgeType: BadgeType | null = useMemo(() => {\n\t\tconst allActions = allProducts\n\t\t\t.flatMap(item => {\n\t\t\t\tif (item.id !== product.id) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst returnItems = returnData?.items.filter(\n\t\t\t\t\treturnItem => returnItem.lineItemId === item.shopifyLineId\n\t\t\t\t);\n\t\t\t\tif (!returnItems || returnItems.length === 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn returnItems.map(item => item.action);\n\t\t\t})\n\t\t\t.filter(item => !isNil(item));\n\n\t\tconst multipleTypes = new Set(allActions).size > 1;\n\n\t\tconst action = calculation?.action;\n\n\t\tif (multipleTypes || !action) {\n\t\t\treturn null;\n\t\t}\n\n\t\tswitch (action) {\n\t\t\tcase \"GIFTCARD\":\n\t\t\t\treturn \"giftcard\";\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}, [calculation?.action, allProducts, product.id, returnData?.items]);\n\n\tconst isDeleted = !calculation?.variantId;\n\n\tfunction handleDeletedClick() {\n\t\tif (!isDeleted) {\n\t\t\treturn;\n\t\t}\n\t\tsetErrorMessage(t(\"product_unavailable\"));\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-return-product grid grid-cols-[max-content_1fr] gap-x-4 p-base\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Link\n\t\t\t\tdisabled={isDeleted}\n\t\t\t\tonDisabledClick={handleDeletedClick}\n\t\t\t\tclassName=\"rf-return-product__image-link\"\n\t\t\t\tonClick={handleAnchorClick}\n\t\t\t\thref={href}\n\t\t\t\tunstyled\n\t\t\t>\n\t\t\t\t<Image\n\t\t\t\t\tclassName=\"rf-return-product__image size-[70px] rounded-lg border border-neutral-1 object-cover\"\n\t\t\t\t\tsrc={product.image}\n\t\t\t\t\talt={product.title}\n\t\t\t\t/>\n\t\t\t</Link>\n\t\t\t<div className=\"rf-return-product__content flex-1 space-y-1 flex flex-col justify-between\">\n\t\t\t\t<ProductAttributes\n\t\t\t\t\tclassName=\"text-neutral-3\"\n\t\t\t\t\thref={href}\n\t\t\t\t\ttitle={product.title}\n\t\t\t\t\tvariantTitle={product.variantTitle}\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tprice={price}\n\t\t\t\t\tcompareAtPrice={compareAtPrice}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t/>\n\t\t\t\t<ReturnProductActions\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tdeleted={isDeleted}\n\t\t\t\t\thref={href}\n\t\t\t\t\tonDeletedClick={handleDeletedClick}\n\t\t\t\t\thandleAnchorClick={handleAnchorClick}\n\t\t\t\t\ttype={badgeType}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Expander\n\t\t\t\tclassName=\"col-span-full\"\n\t\t\t\tisOpen={!!errorMessage}\n\t\t\t\tautoCloseAfter={5000}\n\t\t\t\tonToggle={bool => setErrorMessage(!bool ? null : errorMessage)}\n\t\t\t>\n\t\t\t\t<div className=\"pt-4\">\n\t\t\t\t\t<Banner tone=\"error\">{errorMessage}</Banner>\n\t\t\t\t</div>\n\t\t\t</Expander>\n\t\t</li>\n\t);\n};\n\nexport default ReturnProduct;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport Skeleton from \"../../ui/skeleton/skeleton\";\n\nconst ReturnProductSkeleton = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLLIElement>) => {\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-return-product-skeleton flex gap-4 p-base text-sm\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Skeleton className=\"size-[70px] rounded-lg\" />\n\t\t\t<div className=\"rf-return-product-skeleton__content flex-1 space-y-1 flex flex-col justify-between\">\n\t\t\t\t<div className=\"rf-return-product-skeleton__info space-y-1\">\n\t\t\t\t\t<Skeleton className=\"w-[16ch]\" />\n\t\t\t\t\t<Skeleton className=\"text-xs w-[12ch]\" />\n\t\t\t\t</div>\n\t\t\t\t<Skeleton className=\"text-xs w-[16ch]\" />\n\t\t\t</div>\n\t\t\t<Skeleton className=\"w-[8ch]\" />\n\t\t</li>\n\t);\n};\n\nexport default ReturnProductSkeleton;\n","import { useMemo } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../../lib/hooks/context/use-calculation\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport { ReturnViewState } from \"../../../lib/types\";\nimport ArrowDownIcon from \"../../icons/arrow-down\";\nimport ChevronIcon from \"../../icons/chevron\";\nimport Icon from \"../../icons/icon\";\nimport Banner from \"../../ui/banner/banner\";\nimport Price from \"../../ui/price\";\nimport SkeletonContainer from \"../../ui/skeleton/skeleton-container\";\nimport ReturnProduct, { ExtendedCalculationLineItem } from \"./return-product\";\nimport ReturnProductSkeleton from \"./return-product-skeleton\";\n\nconst ReturnProductList = () => {\n\tconst t = useTranslations(\"return_products\");\n\tconst { returnViewState } = useWidgetContext();\n\tconst { orderState, calculationState } = useReturnContext();\n\n\tconst { orderTotal } = useCalculation();\n\n\tconst isPending = calculationState.initialFetch;\n\n\tconst lineItems = calculationState.value.data?.lineItems;\n\tconst exchangeProducts = orderState.value.data?.orderData.productsToExchange;\n\n\tconst extendedLineItems: ExtendedCalculationLineItem[] = useMemo(() => {\n\t\tif (!lineItems || !exchangeProducts) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn exchangeProducts.map(exchangeProduct => {\n\t\t\tconst lineItem = lineItems.find(\n\t\t\t\titem => item.lineItemId === exchangeProduct.shopifyLineId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...exchangeProduct,\n\t\t\t\tcalculation: lineItem\n\t\t\t};\n\t\t});\n\t}, [lineItems, exchangeProducts]);\n\n\tconst hasGiftcardItem = Boolean(\n\t\textendedLineItems?.some(item => item.calculation?.action === \"GIFTCARD\")\n\t);\n\n\tfunction onToggle() {\n\t\treturnViewState.set(prev =>\n\t\t\tprev === ReturnViewState.Collapsed\n\t\t\t\t? ReturnViewState.Open\n\t\t\t\t: ReturnViewState.Collapsed\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rf-return-product-list border-b border-neutral-2 relative mb-base group [&[data-state='OPEN']]:mb-[calc(var(--rf-base-spacing)*2)]\"\n\t\t\tdata-state={returnViewState.value}\n\t\t>\n\t\t\t<div className=\"rf-return-product-list__header flex justify-between items-center p-base\">\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"rf-return-product-list__toggle-button flex items-center gap-2 font-medium\"\n\t\t\t\t\tonClick={onToggle}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<span className=\"rf-return-product-list__toggle-text\">\n\t\t\t\t\t\t{t(\"action\")}\n\t\t\t\t\t</span>\n\t\t\t\t\t<ChevronIcon\n\t\t\t\t\t\tclassName={`transition-transform will-change-transform ${\n\t\t\t\t\t\t\treturnViewState.value === ReturnViewState.Open\n\t\t\t\t\t\t\t\t? \"rotate-180\"\n\t\t\t\t\t\t\t\t: \"rotate-0\"\n\t\t\t\t\t\t}`}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t\t<Price value={orderTotal} pending={isPending} />\n\t\t\t</div>\n\t\t\t{/* This is being set with CSS to later support a potential animation */}\n\t\t\t<div className=\"rf-return-product-list__content pb-base group-[&[data-state='COLLAPSED']]:hidden\">\n\t\t\t\t{hasGiftcardItem && (\n\t\t\t\t\t<div className=\"rf-return-product-list__container p-base pt-0\">\n\t\t\t\t\t\t<Banner className=\"rf-return-product-list__banner\" tone=\"giftcard\">\n\t\t\t\t\t\t\t{t(\"banner.giftcard\")}\n\t\t\t\t\t\t</Banner>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ul className=\"rf-return-product-list__items divide-y divide-neutral-2\">\n\t\t\t\t\t<SkeletonContainer\n\t\t\t\t\t\tpending={isPending}\n\t\t\t\t\t\tskeleton={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ReturnProductSkeleton />\n\t\t\t\t\t\t\t\t<ReturnProductSkeleton />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{extendedLineItems.map(lineItem => (\n\t\t\t\t\t\t\t<ReturnProduct\n\t\t\t\t\t\t\t\tclassName=\"first:pt-0\"\n\t\t\t\t\t\t\t\tkey={lineItem.id}\n\t\t\t\t\t\t\t\tproduct={lineItem}\n\t\t\t\t\t\t\t\tallProducts={extendedLineItems}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SkeletonContainer>\n\t\t\t\t</ul>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"absolute inset-x-0 mx-auto bottom-0 translate-y-1/2\"\n\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\ticon={ArrowDownIcon}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ReturnProductList;\n","import type { RefObject } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\n\ninterface UseYScrollableReturn extends ScrollState {\n\tisYScrollable: boolean;\n}\n\ninterface ScrollState {\n\tisDirty: boolean;\n\tisScrolling: boolean;\n}\n\nconst useYScrollable = <T extends HTMLElement>(\n\tref: RefObject<T>\n): UseYScrollableReturn => {\n\tconst [isYScrollable, setIsYScrollable] = useState(false);\n\tconst [{ isScrolling, isDirty }, setScrollState] = useState<ScrollState>({\n\t\tisDirty: false,\n\t\tisScrolling: false\n\t});\n\n\tuseEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\n\t\tconst checkScrollable = () => {\n\t\t\tconst scrollable = element.scrollHeight > element.clientHeight;\n\t\t\tsetIsYScrollable(scrollable);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tconst currentScrollTop = element.scrollTop;\n\t\t\tconst hasScrolled = currentScrollTop > 0;\n\t\t\tsetScrollState(prev => ({\n\t\t\t\tisDirty: hasScrolled ? true : prev.isDirty,\n\t\t\t\tisScrolling: hasScrolled\n\t\t\t}));\n\t\t};\n\n\t\t// Initial checks\n\t\tcheckScrollable();\n\t\thandleScroll();\n\n\t\t// Use ResizeObserver for element size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tcheckScrollable();\n\t\t});\n\t\tresizeObserver.observe(element);\n\n\t\t// Use MutationObserver to detect content changes (like dropdown visibility)\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tcheckScrollable();\n\t\t});\n\n\t\tmutationObserver.observe(element, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t\tattributes: true,\n\t\t\tattributeFilter: [\"style\", \"class\"] // Common attributes that affect visibility\n\t\t});\n\n\t\t// Listen to scroll events\n\t\telement.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\telement.removeEventListener(\"scroll\", handleScroll);\n\t\t};\n\t}, [ref]);\n\n\treturn { isYScrollable, isScrolling, isDirty };\n};\n\nexport default useYScrollable;\n","import useYScrollable from \"../../lib/hooks/common/use-y-scrollable\";\nimport ArrowDownIcon from \"../icons/arrow-down\";\n\ninterface ScrollIndicatorProps {\n\tcontainerRef: React.RefObject<HTMLDivElement>;\n}\n\nconst ScrollIndicator = ({ containerRef }: ScrollIndicatorProps) => {\n\tconst { isYScrollable, isDirty } = useYScrollable(containerRef);\n\n\tconst isVisible = !isDirty && isYScrollable;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rf-scroll-indicator w-full h-36 bg-gradient-to-t from-white to-transparent absolute bottom-full inset-x-0 flex items-end justify-center p-base transition-all pointer-events-none\"\n\t\t\tstyle={{\n\t\t\t\topacity: isVisible ? 1 : 0,\n\t\t\t\tvisibility: isVisible ? \"visible\" : \"hidden\"\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"rf-scroll-indicator__content rounded-full py-2.5 w-24 bg-neutral-1 text-center space-x-1 align-middle\">\n\t\t\t\t<span className=\"rf-scroll-indicator__text\">Scroll</span>{\" \"}\n\t\t\t\t<ArrowDownIcon className=\"inline text-neutral-3 -mt-0.5\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ScrollIndicator;\n","import { useRef } from \"preact/hooks\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport ExchangeAdjustments from \"./adjustments/exchange-adjustments\";\nimport AnnoucementBar from \"./annoucement-bar\";\nimport ErrorScreen from \"./error-screen\";\nimport ExchangeConfirmation from \"./exchange-confirmation\";\nimport ExchangeHeader from \"./exchange-header\";\nimport ExchangePlaceholder from \"./exchange-placeholder\";\nimport ProductErrors from \"./product/product-errors\";\nimport ProductList from \"./product/product-list\";\nimport ReturnProductList from \"./return/return-product-list\";\nimport ScrollIndicator from \"./scroll-indicator\";\n\ninterface ExchangeDrawerProps {\n\tstate?: boolean;\n}\n\nconst ExchangeDrawer = ({ state }: ExchangeDrawerProps) => {\n\tconst { widgetViewState } = useWidgetContext();\n\tconst { cartState, hasFailed } = useReturnContext();\n\tconst scrollContainerRef = useRef<HTMLDivElement>(null);\n\n\tconst hasItems =\n\t\tcartState.value.data &&\n\t\t!cartState.value.error &&\n\t\tcartState.value.data.transformed.item_count !== 0;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\taria-hidden\n\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"max-desktop:hidden transition-[background-color,visibility] inset-0 size-full fixed z-10 duration-300 ease-in-out\",\n\t\t\t\t\tstate\n\t\t\t\t\t\t? \"bg-black/30 visible\"\n\t\t\t\t\t\t: \"bg-black/0 pointer-events-none invisible\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-drawer bg-background text-foreground transition-[transform,visibility] duration-300 ease-in-out z-20 fixed max-desktop:inset-0 desktop:right-0 desktop:inset-y-0 size-full pt-safe flex flex-col desktop:max-w-[var(--rf-desktop-widget-width)]\",\n\t\t\t\t\tstate\n\t\t\t\t\t\t? \"max-desktop:translate-y-0 desktop:translate-x-0 visible\"\n\t\t\t\t\t\t: \"max-desktop:translate-y-full desktop:translate-x-full pointer-events-none invisible\"\n\t\t\t\t)}\n\t\t\t\taria-hidden={!state}\n\t\t\t\tinert={!state}\n\t\t\t\ttabIndex={!state ? -1 : undefined}\n\t\t\t>\n\t\t\t\t<ExchangeHeader />\n\t\t\t\t<AnnoucementBar />\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rf-drawer__content flex-1 min-h-0 overflow-y-auto flex flex-col\"\n\t\t\t\t\tref={scrollContainerRef}\n\t\t\t\t>\n\t\t\t\t\t{hasFailed ? (\n\t\t\t\t\t\t<ErrorScreen />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ReturnProductList />\n\t\t\t\t\t\t\t{hasItems ? <ProductList /> : <ExchangePlaceholder />}\n\t\t\t\t\t\t\t<ProductErrors />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t<ExchangeAdjustments className=\"rf-drawer__adjustments mt-auto\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rf-drawer__footer relative mt-auto\">\n\t\t\t\t\t<ScrollIndicator containerRef={scrollContainerRef} />\n\t\t\t\t\t<ExchangeConfirmation />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default ExchangeDrawer;\n","const BagIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={14}\n\t\theight={17}\n\t\tviewBox=\"0 0 14 17\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--bag ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M3.175 4.146H2.103c-.74 0-1.355.589-1.408 1.348l-.691 9.952c-.028.401.107.797.374 1.092A1.4 1.4 0 0 0 1.412 17h11.176a1.4 1.4 0 0 0 1.034-.462c.267-.295.402-.69.374-1.093l-.691-9.95c-.053-.76-.668-1.349-1.408-1.349h-1.065V3.94C10.832 1.763 9.117 0 7 0 4.96 0 3.076 1.67 3.168 3.939zm7.657 1.244V8.5a.614.614 0 0 1-.605.622.614.614 0 0 1-.605-.622V5.39H4.378V8.5a.614.614 0 0 1-.605.622.614.614 0 0 1-.605-.622s.052-1.453.035-3.11h-1.1a.204.204 0 0 0-.2.193l-.692 9.95a.2.2 0 0 0 .053.157.2.2 0 0 0 .148.066h11.176a.2.2 0 0 0 .148-.066.2.2 0 0 0 .053-.156l-.691-9.951a.204.204 0 0 0-.201-.193zm-1.21-1.244V3.94c0-1.49-1.174-2.696-2.622-2.696S4.378 2.45 4.378 3.939v.207z\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default BagIcon;\n","import { TOAST_ANIMATION_DURATION } from \"../../lib/context/toast-context\";\nimport useToast from \"../../lib/hooks/context/use-toast\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Banner, { BannerTone } from \"../ui/banner/banner\";\n\nexport interface ToastOptions {\n\tid: string;\n\tmessage: preact.ComponentChildren;\n\ttone?: BannerTone;\n\tduration?: number; // Duration in milliseconds\n\tonClose?: () => void; // Callback when the toast is closed\n}\n\nexport interface ToastQueue extends ToastOptions {\n\tisVisible: boolean; // Indicates if the toast is currently visible\n}\n\nexport interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {\n\toptions: ToastQueue;\n}\n\nconst Toast = ({\n\toptions: { id, tone = \"info\", message, isVisible },\n\tclassName,\n\tstyle,\n\t...props\n}: ToastProps) => {\n\tconst { remove } = useToast();\n\n\treturn (\n\t\t<div\n\t\t\tonClick={() => remove(id)}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-toast animate-slide-up-and-fade-in overflow-hidden shadow-sm max-w-screen-lg mx-auto\",\n\t\t\t\t`rf-toast--${tone}`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tstyle={{\n\t\t\t\tvisibility: isVisible ? \"visible\" : \"hidden\",\n\t\t\t\topacity: isVisible ? 1 : 0,\n\t\t\t\ttransform: !isVisible ? \"translateY(-20px)\" : undefined,\n\t\t\t\ttransition: `all ${TOAST_ANIMATION_DURATION}ms ease-in-out`,\n\t\t\t\t...(typeof style === \"object\" ? style : undefined) // Spread any additional styles\n\t\t\t}}\n\t\t>\n\t\t\t<Banner tone={tone} className=\"font-medium\" border=\"dashed\">\n\t\t\t\t{message}\n\t\t\t</Banner>\n\t\t</div>\n\t);\n};\n\nexport default Toast;\n","import { useContext } from \"preact/hooks\";\nimport { ToastContext } from \"../../lib/context/toast-context\";\nimport Toast from \"./toast\";\n\nconst ToastContainer = () => {\n\tconst { queue } = useContext(ToastContext);\n\n\tif (queue.length === 0) {\n\t\treturn null; // Return null if there are no toasts to display\n\t}\n\n\treturn (\n\t\t<div className=\"rf-toast__container p-base space-y-base\">\n\t\t\t{queue.map(toast => (\n\t\t\t\t<Toast key={toast.id} options={toast} />\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default ToastContainer;\n","const ArrowLeftIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={9}\n\t\tviewBox=\"0 0 11 9\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-left ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"m.66 5.202 3.61 3.473c.103.1.24.154.387.154a.56.56 0 0 0 .387-.154l.328-.315a.52.52 0 0 0 0-.749l-2.107-2.03H9.96c.301 0 .54-.228.54-.518v-.446c0-.29-.239-.54-.54-.54H3.242l2.131-2.042a.505.505 0 0 0 0-.739L5.045.982a.55.55 0 0 0-.387-.153.56.56 0 0 0-.387.153L.66 4.455a.513.513 0 0 0 0 .747\" />\n\t</svg>\n);\nexport default ArrowLeftIcon;\n","import { useTranslations } from \"use-intl\";\nimport useNavigation from \"../../lib/hooks/context/use-navigation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport ArrowLeftIcon from \"../icons/arrow-left\";\nimport Button from \"../ui/button\";\n\nconst BackButton = ({\n\tclassName,\n\t...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) => {\n\tconst t = useTranslations(\"summary\");\n\tconst { orderState } = useReturnContext();\n\tconst navigation = useNavigation();\n\n\tconst isPending = orderState.value.pending;\n\n\tasync function handleClick() {\n\t\tif (isPending) return;\n\n\t\tconst lastExchangeProductId =\n\t\t\torderState.value.data?.orderData.productsToExchange?.at(-1)?.id;\n\n\t\tnavigation.back(lastExchangeProductId);\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"ghost\"\n\t\t\ticon={ArrowLeftIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tonClick={handleClick}\n\t\t\tdisabled={isPending}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-back-button desktop:text-black desktop:bg-neutral-2 desktop:hover:opacity-50 desktop:font-semibold max-desktop:text-sm max-desktop:px-0 max-desktop:h-auto\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\ttype=\"button\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"rf-back-button__text\">{t(\"back\")}</span>\n\t\t</Button>\n\t);\n};\n\nexport default BackButton;\n","import Skeleton from \"../ui/skeleton/skeleton\";\n\nconst ExchangeTotalSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-exchange-total-skeleton max-desktop:max-w-48 w-full desktop:w-48 space-y-1 text-xs\">\n\t\t\t<Skeleton className=\"w-full rounded-md\" />\n\t\t\t<Skeleton className=\"w-full rounded-md\" />\n\t\t</div>\n\t);\n};\n\nexport default ExchangeTotalSkeleton;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../lib/hooks/context/use-calculation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Price from \"../ui/price\";\nimport SkeletonContainer from \"../ui/skeleton/skeleton-container\";\nimport ExchangeTotalSkeleton from \"./exchange-total-skeleton\";\n\nconst ExchangeTotal = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => {\n\tconst t = useTranslations(\"summary\");\n\tconst { orderState, isPending } = useReturnContext();\n\n\tconst { orderTotal, cartTotal } = useCalculation();\n\n\treturn (\n\t\t<SkeletonContainer skeleton={<ExchangeTotalSkeleton />} pending={isPending}>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-exchange-total font-normal text-sm max-desktop:max-w-48 w-full desktop:w-48 flex-1\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"rf-exchange-total__row flex justify-between\">\n\t\t\t\t\t<span className=\"rf-exchange-total__label text-neutral-3\">\n\t\t\t\t\t\t{t(\"order\")} {orderState.value.data?.orderData.orderName}:\n\t\t\t\t\t</span>\n\t\t\t\t\t<Price className=\"text-sm font-normal\" value={orderTotal} />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rf-exchange-total__row flex justify-between\">\n\t\t\t\t\t<span className=\"rf-exchange-total__label text-neutral-3\">\n\t\t\t\t\t\t{t(\"cart_contents\")}:\n\t\t\t\t\t</span>\n\t\t\t\t\t<Price\n\t\t\t\t\t\tclassName=\"text-sm font-normal\"\n\t\t\t\t\t\tvalue={Math.max(0, cartTotal)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default ExchangeTotal;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport BagIcon from \"../icons/bag\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\nimport ToastContainer from \"../toast/toast-container\";\nimport Button from \"../ui/button\";\nimport BackButton from \"./back-button\";\nimport ExchangeTotal from \"./exchange-total\";\n\nconst ExchangeSummary = () => {\n\tconst t = useTranslations(\"summary\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-summary__container fixed bottom-0 inset-x-0 pb-safe animate-slide-up\">\n\t\t\t<ToastContainer />\n\t\t\t<div className=\"rf-summary h-[var(--rf-summary-height,_auto)] bg-widget-background text-widget-foreground max-desktop:rounded-t-3xl flex max-desktop:flex-col desktop:justify-between desktop:px-5\">\n\t\t\t\t<div className=\"rf-summary__header flex items-center max-desktop:px-5 max-desktop:flex-1 gap-2 desktop:gap-4 text-sm desktop:text-base\">\n\t\t\t\t\t<BackButton className=\"rf-summary__back max-desktop:mr-auto\" />\n\t\t\t\t\t{/* <ExitButton className=\"rf-summary__cancel max-desktop:hidden\" /> */}\n\t\t\t\t\t<Divider className=\"max-desktop:hidden\" />\n\t\t\t\t\t<div className=\"flex items-center gap-2 desktop:flex-row-reverse\">\n\t\t\t\t\t\t<ReturnAvatarStack />\n\t\t\t\t\t\t<span className=\"rf-summary__title font-medium\">{t(\"title\")}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Divider className=\"desktop:hidden\" />\n\t\t\t\t<div className=\"rf-summary__actions max-desktop:px-5 max-desktop:py-3 gap-4 flex desktop:flex-row-reverse items-end desktop:items-center justify-between\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"rf-summary__button ![--icon-height:initial]\"\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\twidgetViewState.set(prev =>\n\t\t\t\t\t\t\t\tprev === WidgetViewState.Collapsed\n\t\t\t\t\t\t\t\t\t? WidgetViewState.Open\n\t\t\t\t\t\t\t\t\t: WidgetViewState.Collapsed\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={BagIcon}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"view_cart\")}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Divider className=\"max-desktop:hidden\" />\n\t\t\t\t\t<ExchangeTotal />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst Divider = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n\t<div\n\t\tclassName={cn(\n\t\t\t\"rf-summary__divider max-desktop:h-px w-full desktop:w-px desktop:self-stretch bg-neutral-2 shrink-0\",\n\t\t\tclassName\n\t\t)}\n\t\t{...props}\n\t/>\n);\n\nexport default ExchangeSummary;\n","import useWidgetContext from \"../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../lib/types\";\nimport ExchangeDrawer from \"./drawer/exchange-drawer\";\nimport ExchangeSummary from \"./summary/exchange-summary\";\n\nconst Widget = () => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<>\n\t\t\t<ExchangeSummary />\n\t\t\t<ExchangeDrawer state={widgetViewState.value === WidgetViewState.Open} />\n\t\t</>\n\t);\n};\n\nexport default Widget;\n","import { IntlProvider } from \"use-intl\";\nimport { WidgetConfiguration } from \"../lib/utils/initialization/types\";\nimport DialogHandler from \"./handlers/dialog-handler\";\nimport InitializationHandler from \"./handlers/initialization-handler\";\nimport IsMounted from \"./is-mounted\";\nimport ErrorProvider from \"./providers/error-provider\";\nimport ReturnContextProvider from \"./providers/return-context-provider\";\nimport RootProvider from \"./providers/root-provider\";\nimport WidgetContextProvider from \"./providers/widget-context-provider\";\nimport ToastProvider from \"./toast/toast-provider\";\nimport Widget from \"./widget\";\n\n// This is the main entry point for the widget.\n// It initializes the widget with the provided options and renders it within the context providers.\nconst WidgetContainer = (config: WidgetConfiguration) => {\n\tconst { locale, messages } = config;\n\n\treturn (\n\t\t<IsMounted>\n\t\t\t<IntlProvider messages={messages} locale={locale}>\n\t\t\t\t<WidgetContextProvider {...config}>\n\t\t\t\t\t<ReturnContextProvider>\n\t\t\t\t\t\t<ErrorProvider>\n\t\t\t\t\t\t\t<RootProvider>\n\t\t\t\t\t\t\t\t<ToastProvider>\n\t\t\t\t\t\t\t\t\t<Widget />\n\t\t\t\t\t\t\t\t\t<DialogHandler />\n\t\t\t\t\t\t\t\t\t<InitializationHandler />\n\t\t\t\t\t\t\t\t</ToastProvider>\n\t\t\t\t\t\t\t</RootProvider>\n\t\t\t\t\t\t</ErrorProvider>\n\t\t\t\t\t</ReturnContextProvider>\n\t\t\t\t</WidgetContextProvider>\n\t\t\t</IntlProvider>\n\t\t</IsMounted>\n\t);\n};\n\nexport default WidgetContainer;\n"],"names":["WidgetViewState","ReturnViewState","getInternalCartProvider","_window$Returnflows$_","_window$Returnflows","window","Returnflows","_cartProvider","hasCartProvider","_window$Returnflows2","r","e","t","f","n","Array","isArray","o","length","clsx","arguments","concatArrays","array1","array2","combinedArray","i","hoursToMilliseconds","hours","minutesToMilliseconds","minutes","STORAGE_SESSION_KEY","key","type","expiration","STORAGE_OVERLAY_DIALOG_EXPIRY_KEY","STORAGE_OVERLAY_DIALOG_EXPIRATION","STORAGE_CART_KEY","STORAGE_DEBUG_MODE_KEY","STORAGE_PREFIX","getStorageKey","concat","set","_ref","value","data","Date","now","undefined","storage","getStorage","setItem","JSON","stringify","get","_ref2","storageItem","getItem","parsedData","parse","removeItem","_","has","_ref3","Boolean","remove","_ref4","sessionStorage","localStorage","Error","LOG_PREFIX","LogLevel","Logger","constructor","getInstance","instance","checkDebugMode","storedDebugModeValue","log","level","message","_len","args","_key","DEBUG","console","debug","INFO","info","WARN","warn","ERROR","error","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","logger","cn","inputs","twMerge","assert","variable","isNil","ensureHttpUrl","url","secure","startsWith","isNumber","isNaN","Number","isFinite","hexToHsl","hex","replace","parseInt","substring","g","b","max","Math","min","diff","l","h","s","hDeg","round","sPercent","lPercent","isOnCartPage","path","location","pathname","includes","parseToNumber","fallback","parseFloat","toString","setNestedValue","obj","keys","split","lastKey","pop","target","reduce","current","next","getResolvedSearchParams","searchString","__rf_original_search","search","URLSearchParams","resolveSetStateAction","action","currentState","constructShopifyUrl","endpoint","queryParams","root","host","searchParams","Object","entries","forEach","handleShopifyFetch","init","_init$method","fetchUrl","rf","response","fetch","_objectSpread","method","body","cache","headers","ok","errorResponse","json","clearSession","normalizeShopifyPrice","formatShopifyId","id","stripShopifyId","segment","toMerchandiseGid","variantId","getRuleProductIds","rules","filter","rule","flatMap","products","map","product","shopifyProductId","normalizeCart","cart","noExchangeTo","excludedItems","bundleItems","items","itemCount","acc","item","product_id","push","has_components","existingItem","find","variant_id","quantity","normalizedCart","item_count","compareCarts","cart1","cart2","normalizedCart1","normalizedCart2","items1","items2","quantityMap1","Map","getCart","preferStorage","usedStore","usedProvider","storedCart","getCartStorage","provider","updateCartStorage","source","clearCart","setCartItems","clearedCart","addItems","cartItems","merchandiseId","updateCartItemQuantity","isRetry","currentCart","updateCartItemQuantityViaShopify","lineId","line_id","merchandise_id","removeItems","updateItems","updateItem","err","status","_existingItems$existi","String","existingCart","existingItems","itemsWtihSameVariantId","totalQuantity","existingItemIndex","findIndex","increment","existingQuantity","calculatedQuantity","cartChange","line","resolveConnection","connections","edges","edge","node","isStorefrontCart","lines","toCents","amount","parsed","resolveLineImage","_line$merchandise$ima","_line$merchandise$pro","_line$merchandise$pro2","merchandise","image","featuredImage","productImages","images","normalizeStorefrontLine","_line$cost","productId","unitPrice","lineTotal","cost","amountPerQuantity","totalAmount","price","variantTitle","title","productTitle","isDefaultVariant","product_title","handle","grams","line_price","final_price","final_line_price","variant_title","sku","vendor","product_type","productType","requires_shipping","requiresShipping","normalizeStorefrontCart","_cart$totalQuantity","_cart$note","sum","token","note","normalizeCartInput","normalizeAndStore","normalized","wrapCartProvider","ids","bridge","widgetViewState","config","returnContext","toastContext","cartProvider","isInitialized","eventListeners","registerBridge","emitEvent","unregisterBridge","clear","setCartProvider","wrapped","getDrawerState","_bridge$widgetViewSta","_bridge$widgetViewSta2","setDrawerState","state","isDrawerOpen","_bridge$widgetViewSta3","Open","_bridge$returnContext","cartState","original","getCalculation","_bridge$returnContext2","_bridge$returnContext3","calculationState","getOrder","_bridge$returnContext4","orderData","orderState","orderId","orderName","instantExchange","freeExchangeLabel","productsToExchange","totalPrice","isLoading","_bridge$returnContext5","_bridge$returnContext6","isPending","setCart","_bridge$returnContext7","_bridge$returnContext8","_bridge$returnContext9","_bridge$config","_cartState$value$data","returnState","returnData","calculation","hasChanged","order","normalizedInput","productRules","_calculationState$val","transformedCart","transformed","pending","calculationResponse","query","lineItems","refetchCart","_bridge$returnContext0","_bridge$returnContext1","_bridge$cartProvider","document","dispatchEvent","CustomEvent","showToast","options","add","tone","duration","onClose","dismissToast","clearToasts","addEventListener","event","callback","Set","removeEventListener","_bridge$eventListener","delete","listeners","ReturnflowsWidget","defineProperty","open","_ensureInitialized","close","Collapsed","toggle","isOpen","refetch","show","dismiss","_initPromise","Promise","resolve","reject","_config$onReady2","onReady","onError","rest","_objectWithoutProperties","_excluded","default","initialize","WidgetContainer","result","widgetConfig","networkInterceptionMethod","success","reason","_config$onReady","_waitForBridge","call","_config$onError","destroy","container","getElementById","on","off","timeout","start","setTimeout","p","v","y","resolveEnvVar","varKey","_process$env","process","env","_import$meta$env","import","meta","IMAGE_FALLBACK_URL","API_URL","PLATFORM_URL","WIDGET_BASE_URL","SEARCH_PARAM_ID_NAME","LEGACY_PARAMS","ROOT_ELEMENT_ID","SHADOW_ROOT_ELEMENT_ID","CONTAINER_ELEMENT_ID","CUSTOM_CSS_DATA_ATTR","SETTINGS_SCRIPT_ID","InternalCustomEvent","ExternalCustomEvent","subscribe","eventName","handler","publish","detail","unsubscribe","customEvents","DEFAULT_LOCALE","DEFAULT_CURRENCY","loadMessages","locales","localesList","locale","messages","join","apiQuery","clientStorage","storageOptions","isStorageEnabled","shouldUseCachedResult","logging","cachedData","URL","params","parseJsonRes","storeResult","responseObject","labelCount","formattedLineItems","_item$action$toUpperC","_item$action","toUpperCase","returnOrderLineId","lineItemId","formattedExchangeTo","exchangeTo","numOfLabels","getShopOverlayData","isFirstLoad","internalReturnId","lineIds","cacheKey","internalId","orderLines","processOrderInitialization","_cache$returnData$ite","_cache$returnData","clearCartOnStart","updatedCart","_cache$returnItems","cachedReturnItems","returnItems","mappedItems","dialogExpiration","getTime","href","param","history","replaceState","updateSessionCache","getSessionCache","isDOMStringMap","DOMStringMap","prototype","parseScriptDataset","dataset","datasetRecord","resolvedValue","_unused","getSettingsFromScript","scriptElement","settings","innerHTML","prepareInitializationOptions","_settings$translation","_settings$theme","searchParamsId","resolvedCurrency","currency","defaultCurrency","isDevEnvironment","hasDebugParameter","isDebugModeEnabled","defaultLocale","val","resolvedLocale","customMessages","translations","debugMode","theme","injectFont","preconnect","createSafeLinkElement","rel","preconnect2","crossOrigin","fontLink","onload","onerror","head","appendChild","attributes","selector","existing","querySelector","link","createElement","assign","validateCSS","css","openBraces","match","closeBraces","dangerousPatterns","some","pattern","test","injectCustomCSS","styleElement","setAttribute","textContent","injectStyle","shadowRoot","fileName","injectPublicVariables","createShadowRoot","existingContainer","style","display","shadow","attachShadow","mode","className","injectWidget","renderNode","render","containerResult","customCssOverlay","customCssPage","WidgetInitialization","memoize","fn","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","isPrimitive","monadic","arg","computedValue","variadic","slice","apply","assemble","context","serialize","bind","create","strategyVariadic","ObjectWithoutPrototypeCache","_defineProperty","strategies","a","code","originalMessage","MISSING_MESSAGE","MISSING_FORMAT","ENVIRONMENT_FALLBACK","INSUFFICIENT_PATH","INVALID_MESSAGE","INVALID_KEY","FORMATTING_ERROR","dateTime","number","relativeTime","pluralRules","list","displayNames","I","getDateTimeFormat","Intl","DateTimeFormat","getNumberFormat","NumberFormat","getPluralRules","PluralRules","getRelativeTimeFormat","RelativeTimeFormat","getListFormat","ListFormat","getDisplayNames","DisplayNames","u","c","__b","__r","diffed","__c","m","unmount","__","__h","__H","d","D","__N","setState","__f","every","props","shouldComponentUpdate","componentWillUpdate","__e","__s","C","A","T","q","x","sub","j","shift","__P","z","B","__v","__k","__m","requestAnimationFrame","w","k","clearTimeout","cancelAnimationFrame","E","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","len","era","year","RangeError","month","day","weekday","hour12","hourCycle","hour","minute","second","timeZoneName","WHITE_SPACE_REGEX","parseNumberSkeletonFromString","stringTokens","tokens","stringToken","stemAndOptions","stem","option","icuUnitToEcma","unit","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","str","roundingPriority","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","notation","minimumIntegerDigits","parseNotationOptions","opt","signOpts","parseNumberSkeleton","scale","useGrouping","maximumFractionDigits","compactDisplay","all","currencyDisplay","unitDisplay","roundingMode","g3","g4","g5","minimumFractionDigits","trailingZeroDisplay","conciseScientificAndEngineeringOpts","TYPE","SKELETON_TYPE","isLiteralElement","el","literal","isArgumentElement","argument","isNumberElement","isDateElement","date","isTimeElement","time","isSelectElement","select","isPluralElement","plural","isPoundElement","pound","isTagElement","tag","isNumberSkeleton","isDateTimeSkeleton","ErrorKind","SPACE_SEPARATOR_REGEX","timeData","getBestPattern","skeletonCopy","patternPos","patternChar","charAt","extraLength","hourLen","dayPeriodLen","dayPeriodChar","hourChar","getDefaultHourSymbolFromLocale","hourCycles","languageTag","language","regionTag","maximize","region","SPACE_SEPARATOR_START_REGEX","RegExp","SPACE_SEPARATOR_END_REGEX","createLocation","end","hasNativeFromEntries","fromEntries","hasTrimStart","trimStart","hasTrimEnd","trimEnd","IDENTIFIER_PREFIX_RE","matchIdentifierAtIndex","index","_match$","lastIndex","exec","Parser","position","offset","column","ignoreTag","requiresOtherClause","shouldParseSkeletons","parseMessage","nestingLevel","parentArgType","expectingCloseTag","elements","isEOF","char","parseArgument","clonePosition","bump","peek","UNMATCHED_CLOSING_TAG","_isAlpha","parseTag","parseLiteral","startPosition","tagName","parseTagName","bumpSpace","bumpIf","childrenResult","children","endTagStartPosition","INVALID_TAG","closingTagNameStartPosition","closingTagName","UNCLOSED_TAG","startOffset","_isPotentialElementNameChar","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","_isAlphaOrSlash","codePoints","ch","fromCodePoint","openingBracePosition","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","parseIdentifierIfPossible","MALFORMED_ARGUMENT","parseArgumentOptions","startingPosition","endOffset","bumpTo","endPosition","typeStartPosition","argType","typeEndPosition","EXPECT_ARGUMENT_TYPE","_styleAndLocation$sty","_styleAndLocation","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","EXPECT_ARGUMENT_STYLE","styleLocation","argCloseResult","tryParseArgumentClose","EXPECT_DATE_TIME_SKELETON","dateTimePattern","parsedOptions","EXPECT_SELECT_ARGUMENT_OPTIONS","identifierAndLocation","pluralOffset","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","tryParseDecimalInteger","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","optionsResult","tryParsePluralOrSelectOptions","pluralType","INVALID_ARGUMENT_TYPE","nestedBraces","apostrophePosition","bumpUntil","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","INVALID_NUMBER_SKELETON","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","EXPECT_PLURAL_ARGUMENT_SELECTOR","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","fragmentResult","EXPECT_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","expectNumberError","invalidNumberError","sign","hasDigits","decimal","isSafeInteger","codePointAt","kind","prefix","currentOffset","indexOf","targetOffset","_isWhiteSpace","nextCode","charCodeAt","codepoint","pruneLocation","els","_opts","opts","SyntaxError","captureLocation","ErrorCode","FormatError","msg","InvalidValueError","variableId","INVALID_VALUE","InvalidValueTypeError","MissingValueError","MISSING_VALUE","PART_TYPE","mergeLiteral","parts","part","lastPart","isFormatXMLElementFn","formatToParts","formatters","formats","values","currentPluralValue","format","varName","object","medium","isInteger","TypeError","BigInt","formatFn","chunks","hasOwnProperty","other","exactKey","MISSING_INTL_API","numericValue","mergeConfig","c1","c2","mergeConfigs","defaultConfig","configs","createFastMemoizeCache","store","createDefaultFormatters","IntlMessageFormat","overrideFormats","ast","_this$resolvedLocale","supportedLocalesOf","resolveLocale","__parse","parseOpts","_extends","_objectDestructuringEmpty","formatterCache","memoizedDefaultLocale","resolvedOptions","Locale","supportedLocales","integer","percent","short","long","full","globalFormats","timeZone","getMessageFormat","_e$timeZone","raw","namespace","getMessageFallback","messagesOrError","S","M","R","rich","markup","seconds","days","week","weeks","months","quarter","quarters","years","_cache","_formatters","_e","_unused2","numberingSystem","abs","numeric","size","dateTimeRange","formatRange","Provider","Z","useValueState","initialState","stateUpdateCallback","useState","wrappedSetState","prev","useDialog","register","useOnce","deps","effectRef","useRef","useEffect","WidgetContext","createContext","useWidgetContext","useContext","back","slug","fallbackProductId","_searchParams$get","constructedPlatformUrl","lastExchangeProductId","strippedProductId","at","append","continue","confirmationUrl","encodedSlug","encodeURIComponent","exit","clearCartOnExit","reload","ReturnContext","useReturnContext","Image","src","_jsx","SkeletonContainer","falsyToString","cx","cva","base","_config_compoundVariants","variants","class","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","getCompoundVariantClassNames","compoundVariants","cvClass","cvClassName","compoundVariantOptions","avatarVariants","light","dark","Avatar","memo","Skeleton","role","AvatarStackSkeleton","_jsxs","AvatarStack","maxVisibleAvatars","sliceIndex","alt","zIndex","ReturnAvatarStack","_orderState$value$dat3","formattedImages","useMemo","_orderState$value$dat","_orderState$value$dat2","exchangeProducts","DialogContext","useIsMounted","mounted","setMounted","RootContext","useRoot","rootElement","DialogBackdrop","onClick","isVisible","elementRef","handleClick","ref","DialogModal","fadeIn","showBackdrop","dismissOnBackdropClick","dismissOnEscape","getRoot","isMounted","handleEscape","preventDefault","contextValue","createPortal","DialogTitle","DialogSubtitle","ArrowRightIcon","width","height","viewBox","fill","xmlns","XIcon","Spinner","opacity","attributeName","calcMode","dur","repeatCount","buttonVariants","primary","outline","ghost","Button","icon","Icon","disabled","iconPosition","visibility","Accept","Reject","_excluded2","Dialog","Modal","Title","Subtitle","DialogButton","ReturnDecisionDialog","decisionState","setDecisionState","DecisionDialog","useTranslations","modal","dialog","handleConfirm","handleReject","navigation","DialogHandler","_Fragment","DEFAULT_TOAST_DURATION","TOAST_ANIMATION_DURATION","ToastContext","useToast","useApiBridge","_returnContext$cartSt","ProductErrorState","PRODUCT_ERROR_CODE_TO_STATE","ProductLimit","getErrorStateFromCode","Unknown","createFetchInterceptor","_window$__rf_original","originalFetch","__rf_original_fetch","rf_interception","proxy","Proxy","argumentsList","requestUrl","Reflect","clonedResponse","clone","interval","clearInterval","createXHRInterceptor","originalXHR","XMLHttpRequest","__rf_original_xhr","XHRProxy","construct","xhr","originalOpen","originalSend","send","async","user","password","originalOnReadyStateChange","onreadystatechange","readyState","DONE","resolveXHRPayload","originalOnLoad","_xhr$getResponseHeade","isTextResponse","responseType","isJsonResponse","getResponseHeader","ADD_ENDPOINTS","UPDATE_ENDPOINTS","CHANGE_ENDPOINTS","CLEAR_ENDPOINTS","ENDPOINTS","update","change","ENDPOINTS_TO_INTERCEPT","initializeNetworkInterceptors","monitor","cleanupFetchHandler","cleanupXHRHandler","resolvedMethod","setInterval","_cleanupFetchHandler","_cleanupXHRHandler","validateInterceptionRequestUrl","triggerEndpoint","triggerEndpointValue","triggerEndpointPaths","isValid","isForbidden","isTriggerEndpoint","BLOCKED_PATTERNS","matchesInterceptedEndpoint","parseInterceptionResponse","Response","catch","ErrorContext","useErrors","useCartActions","addToast","errors","_returnData$items","isNewItem","useCallback","originalCart","notifyExclusions","newExcludedItems","newBundleItems","product_name","fetchAndUpdateCart","_cartState$value$data2","freshCart","processCartUpdate","_cartState$value$data3","_cartState$value$data4","handleResponseErrors","responseBody","errState","triggerCalculation","useExternalEvents","handleOpenDrawer","handleCloseDrawer","handleToggleDrawer","targetState","handleRefetchCalculation","handleRefetchCart","handleRefetchCartAndCalculation","handleOpenDrawerAndRefetch","unsubscribeOpenDrawer","DrawerOpen","unsubscribeCloseDrawer","DrawerClose","unsubscribeToggleDrawer","DrawerToggle","unsubscribeRefetchCalculation","CalculationRefetch","unsubscribeRefetchCart","CartRefetch","unsubscribeRefetchCartAndCalculation","CartAndCalculationRefetch","unsubscribeOpenDrawerAndRefetchCartAndCalculation","DrawerOpenAndRefetch","useFetchInterceptor","returnViewState","autoOpen","autoOpenTriggerEndpoint","autoOpenTriggerMethod","triggerMethod","monitorNetworkOverwrites","initialized","setInitialized","resetInterceptor","payload","FetchInterception","_resetInterceptor","handleInterceptionEvent","stringifiedUrl","urlValidation","useOverrideScrollBlocking","overrideScrollBlocking","originalPreventDefault","Event","removeInertFromElements","inertElements","querySelectorAll","element","removeAttribute","cloneAndReplaceElement","parent","parentNode","newElement","cloneNode","replaceChild","useCartActivator","cartActivatorSelector","controller","AbortController","processedElements","WeakSet","onActivatorClick","stopPropagation","attachListenersToElements","signal","initializeActivators","observer","MutationObserver","mutations","shouldReinitialize","mutation","addedNodes","nodeType","Node","ELEMENT_NODE","_element$matches","_element$querySelecto","matches","removedNodes","_element$matches2","_element$querySelecto2","observe","childList","subtree","characterData","abort","disconnect","InitializationHandler","IsMounted","useArray","initialArray","array","setArray","newArray","filtered","ErrorProvider","_useArray","methods","calcItems","cartItemCount","resolvedErrors","trackedErrors","_orderData$returnWind","refundReturnWindow","returnWindows","errorId","blocking","noRefundItemIds","noRefundItems","strippedId","joinedProductNames","splitChunks","chunk","dividerString","Fragment","useAsyncState","initialValue","queryFn","queryOnInit","startCount","initialRender","countState","setCountState","countRef","requestCount","run","consoleMessage","initialParams","initialFetch","count","ReturnContextProvider","_config$data$returnDa5","queryCount","orderResult","isCartPage","isFirstQuery","shouldFetchFreshCart","_params$cart","_config$data$returnDa","_config$data$returnDa2","origin","lastPath","formattedCartItems","_item$variant_title","_config$data$returnDa3","_config$data$returnDa4","contextError","hasFailed","useTheme","themeVariables","color","convertedColor","propertyKey","cssVariables","RootProvider","rootRef","onTouchStart","WidgetContextProvider","DrawerStateChange","ToastProvider","queue","setQueue","toast","_toast$onClose","generateToastId","newToast","_toast$onClose2","random","substr","ActionIcon","rx","fillRule","clipRule","InfoIcon","GiftcardIcon","WarningIcon","BannerSkeleton","tip","giftcard","border","dashed","Banner","renderIcon","COMMON_ICON_PROPS","ExchangeBanner","_calculationState$val2","hasInstantExchange","returnLabelPrice","useCurrency","hookOptions","cartCurrency","calcCurrency","localCurrency","resolvedCurrencyCode","formatter","useFormatter","applyExchangeRate","currencyObject","exchangeRate","_hookOptions$options","fractionDigits","mergedOptions","_currency$minimumFrac","formatOptions","useCalculation","computedTotals","_discountSummary$appl","orderTotal","cartTotal","returnTotal","giftcardValue","totalPriceDiscount","giftCardBonusAmount","isRefunding","orderSubtotal","returnSubtotal","total","refundMethods","discountSummary","appliedToReturnSubtotal","StarIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Price","compareAtValue","formatToCurrency","AdjustmentsTableSkeleton","AdjustmentsTable","showDiscountRow","showGiftcardRow","showLabelPriceRow","Row","scope","ExchangeAdjustments","AnnoucementBar","stepSnippet","ErrorScreen","errorMessage","instructionMessage","useNavigation","useLocale","ExchangeConfirmation","globalPendingState","blockingErrors","canContinue","handleContinue","iconVariants","solid","sm","md","IconComponent","ExchangeHeader","CartIcon","ExchangePlaceholder","ProductErrors","useCartItems","exchangeDetails","exchange","exchangeDetailItems","exchangeItem","_coverage$originalUni","_coverage$exchangeUni","coverage","curr","resolvedCurrPrice","originalUnitPrice","resolvedCompareAt","exchangeUnitPrice","compareAtPrice","DEFAULT_CONSTRAINTS","limit","getNormalizedQuantityRule","quantityRule","_quantityRule$min","_quantityRule$max","_quantityRule$increme","minQuantity","maxQuantity","constraints","clampQuantity","QuantityPicker","onIncrement","onDecrement","isDisabled","isAtMin","isAtMax","incrementDisabled","decrementDisabled","handleIncrement","handleDecrement","clampedQuantity","ProductActions","setIsPending","anyStatePending","handleQuantityChange","newQuantity","errorCode","isAtBound","Link","unstyled","onDisabledClick","ProductAttributes","showQuantity","quantityIsVisible","resolvedPrice","ProductImage","imageSource","handleAnchorClick","Product","getProductUrl","quantity_rule","ProductList","ArrowDownIcon","ChevronIcon","Expander","collapseDelay","autoCloseAfter","onToggle","isRendered","setIsRendered","setHeight","containerRef","collapseTimeoutRef","autoCloseTimeoutRef","measureHeight","scrollHeight","frame","ReturnProductBadge","ReturnProductActions","deleted","onDeletedClick","handleDeletedClick","ReturnProduct","_product$quantity","_calculation$discount","_calculation$original","allProducts","setErrorMessage","qty","discountedPrice","originalPrice","badgeType","allActions","returnItem","shopifyLineId","multipleTypes","isDeleted","bool","ReturnProductSkeleton","ReturnProductList","extendedLineItems","exchangeProduct","lineItem","hasGiftcardItem","_item$calculation","useYScrollable","isYScrollable","setIsYScrollable","isScrolling","isDirty","setScrollState","checkScrollable","scrollable","clientHeight","handleScroll","currentScrollTop","scrollTop","hasScrolled","resizeObserver","ResizeObserver","mutationObserver","attributeFilter","passive","ScrollIndicator","ExchangeDrawer","scrollContainerRef","hasItems","inert","tabIndex","BagIcon","Toast","transform","transition","ToastContainer","ArrowLeftIcon","BackButton","ExchangeTotalSkeleton","ExchangeTotal","ExchangeSummary","Divider","Widget","IntlProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AA0YA,IAAYA,eAGX;AAHD,CAAA,UAAYA,eAAe,EAAA;AAC1BA,EAAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvBA,EAAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACd,CAAC,EAHWA,eAAe,KAAfA,eAAe,GAAA,EAAA,CAAA,CAAA;AAK3B,IAAYC,eAGX;AAHD,CAAA,UAAYA,eAAe,EAAA;AAC1BA,EAAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvBA,EAAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACd,CAAC,EAHWA,eAAe,KAAfA,eAAe,GAAA,EAAA,CAAA,CAAA;;SC1YXC,uBAAuBA,GAAA;EAAA,IAAAC,qBAAA,EAAAC,mBAAA;AAGtC,EAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;AAClC,IAAA,OAAO,IAAI;AACZ,EAAA;AACA,EAAA,OAAA,CAAAF,qBAAA,GAAA,CAAAC,mBAAA,GAASC,MAAyD,CAACC,WAAW,MAAA,IAAA,IAAAF,mBAAA,KAAA,MAAA,GAAA,MAAA,GAArEA,mBAAA,CACNG,aAAa,MAAA,IAAA,IAAAJ,qBAAA,KAAA,MAAA,GAAAA,qBAAA,GAAI,IAAI;AACzB;SAEgBK,eAAeA,GAAA;AAAA,EAAA,IAAAC,oBAAA;AAC9B,EAAA,IAAI,OAAOJ,MAAM,KAAK,WAAW,EAAE;AAClC,IAAA,OAAO,KAAK;AACb,EAAA;AACA,EAAA,OACE,CAAA,CAAAI,oBAAA,GAAAJ,MAAyD,CAACC,WAAW,MAAA,IAAA,IAAAG,oBAAA,KAAA,MAAA,GAAA,MAAA,GAArEA,oBAAA,CACEF,aAAa,KAAI,IAAI;AAE1B;;ACxBA,SAASG,GAACA,CAACC,CAAC,EAAC;AAAC,EAAA,IAAIC,CAAC;IAACC,CAAC;AAACC,IAAAA,CAAC,GAAC,EAAE;AAAC,EAAA,IAAG,QAAQ,IAAE,OAAOH,CAAC,IAAE,QAAQ,IAAE,OAAOA,CAAC,EAACG,CAAC,IAAEH,CAAC,CAAC,KAAK,IAAG,QAAQ,IAAE,OAAOA,CAAC,EAAC,IAAGI,KAAK,CAACC,OAAO,CAACL,CAAC,CAAC,EAAC;AAAC,IAAA,IAAIM,CAAC,GAACN,CAAC,CAACO,MAAM;AAAC,IAAA,KAAIN,CAAC,GAAC,CAAC,EAACA,CAAC,GAACK,CAAC,EAACL,CAAC,EAAE,EAACD,CAAC,CAACC,CAAC,CAAC,KAAGC,CAAC,GAACH,GAAC,CAACC,CAAC,CAACC,CAAC,CAAC,CAAC,CAAC,KAAGE,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAED,CAAC,CAAC;EAAA,CAAC,MAAK,KAAIA,CAAC,IAAIF,CAAC,EAACA,CAAC,CAACE,CAAC,CAAC,KAAGC,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAED,CAAC,CAAC;AAAC,EAAA,OAAOC,CAAC;AAAA;AAAQ,SAASK,IAAIA,GAAE;EAAC,KAAI,IAAIR,CAAC,EAACC,CAAC,EAACC,CAAC,GAAC,CAAC,EAACC,CAAC,GAAC,EAAE,EAACG,CAAC,GAACG,SAAS,CAACF,MAAM,EAACL,CAAC,GAACI,CAAC,EAACJ,CAAC,EAAE,EAAC,CAACF,CAAC,GAACS,SAAS,CAACP,CAAC,CAAC,MAAID,CAAC,GAACF,GAAC,CAACC,CAAC,CAAC,CAAC,KAAGG,CAAC,KAAGA,CAAC,IAAE,GAAG,CAAC,EAACA,CAAC,IAAEF,CAAC,CAAC;AAAC,EAAA,OAAOE,CAAC;AAAA;;ACA/W;;AAEG;AACI,MAAMO,YAAY,GAAGA,CACxBC,MAAoB,EACpBC,MAAoB,KACA;;AAEpB,EAAA,MAAMC,aAAa,GAAc,IAAIT,KAAK,CAACO,MAAM,CAACJ,MAAM,GAAGK,MAAM,CAACL,MAAM,CAAC;AACzE,EAAA,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,MAAM,CAACJ,MAAM,EAAEO,CAAC,EAAE,EAAE;AACpCD,IAAAA,aAAa,CAACC,CAAC,CAAC,GAAGH,MAAM,CAACG,CAAC,CAAE;AACjC,EAAA;AACA,EAAA,KAAK,IAAIA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACL,MAAM,EAAEO,CAAC,EAAE,EAAE;IACpCD,aAAa,CAACF,MAAM,CAACJ,MAAM,GAAGO,CAAC,CAAC,GAAGF,MAAM,CAACE,CAAC,CAAE;AACjD,EAAA;AACA,EAAA,OAAOD,aAAa;AACxB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[2,3,12,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,52]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/widget/lib/types.ts","../src/widget/lib/utils/cart-provider-store.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/widget/lib/utils/storage.ts","../src/widget/lib/utils/logger.ts","../src/widget/lib/utils/helpers.ts","../src/widget/lib/utils/shopify.ts","../src/widget/lib/utils/cart.ts","../src/api/storefront-cart.ts","../src/api/state-bridge.ts","../src/api/widget-api.ts","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/dist/preact.module.js","../src/widget/lib/constants.ts","../src/widget/lib/utils/custom-events.ts","../src/widget/lib/utils/i18n.ts","../src/widget/lib/utils/api.ts","../src/widget/lib/utils/initialization/dataset.ts","../src/widget/lib/utils/session.ts","../src/widget/lib/utils/initialization/font.ts","../src/widget/lib/utils/initialization/styles.ts","../src/widget/lib/utils/initialization/index.ts","../node_modules/.pnpm/@formatjs+fast-memoize@3.1.0/node_modules/@formatjs/fast-memoize/index.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/formatters-CJcico0N.js","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/hooks/dist/hooks.module.js","../node_modules/.pnpm/preact@10.28.4/node_modules/preact/compat/dist/compat.module.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/date-time.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/regex.generated.js","../node_modules/.pnpm/@formatjs+icu-skeleton-parser@2.1.1/node_modules/@formatjs/icu-skeleton-parser/number.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/types.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/error.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/regex.generated.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/time-data.generated.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/date-time-pattern-generator.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/parser.js","../node_modules/.pnpm/@formatjs+icu-messageformat-parser@3.5.1/node_modules/@formatjs/icu-messageformat-parser/index.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/error.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/formatters.js","../node_modules/.pnpm/intl-messageformat@11.1.2/node_modules/intl-messageformat/src/core.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/format-message/index.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/initializeConfig-Brh10fyG.js","../node_modules/.pnpm/use-intl@4.8.3_react@19.2.4/node_modules/use-intl/dist/esm/production/react.js","../src/widget/lib/hooks/common/use-value-state.ts","../src/widget/lib/hooks/common/use-once.ts","../src/widget/lib/context/widget-context.ts","../src/widget/lib/hooks/context/use-widget-context.ts","../src/widget/lib/utils/navigation.ts","../src/widget/lib/context/return-context.ts","../src/widget/lib/hooks/context/use-return-context.ts","../src/widget/components/ui/image.tsx","../src/widget/components/ui/skeleton/skeleton-container.tsx","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/widget/components/ui/avatar/avatar.tsx","../src/widget/components/ui/skeleton/skeleton.tsx","../src/widget/components/ui/avatar/avatar-stack-skeleton.tsx","../src/widget/components/ui/avatar/avatar-stack.tsx","../src/widget/components/return-avatar-stack.tsx","../src/widget/lib/context/dialog-context.ts","../src/widget/lib/hooks/common/use-is-mounted.ts","../src/widget/lib/context/root-context.ts","../src/widget/components/dialog/common/dialog-backdrop.tsx","../src/widget/components/icons/arrow-right.tsx","../src/widget/components/icons/x.tsx","../src/widget/components/icons/spinner.tsx","../src/widget/components/ui/button.tsx","../src/widget/components/dialog/common/dialog-button.tsx","../src/widget/components/dialog/common/index.ts","../src/widget/components/dialog/common/dialog-modal.tsx","../src/widget/lib/hooks/context/use-root.ts","../src/widget/components/dialog/common/dialog-title.tsx","../src/widget/components/dialog/common/dialog-subtitle.tsx","../src/widget/components/dialog/return-decision-dialog.tsx","../src/widget/lib/hooks/common/use-dialog.ts","../src/widget/components/handlers/dialog-handler.tsx","../src/widget/lib/context/toast-context.ts","../src/widget/lib/hooks/context/use-toast.ts","../src/widget/lib/hooks/feature/use-api-bridge.ts","../src/widget/lib/utils/errors.ts","../src/widget/lib/utils/interceptor/fetch.ts","../src/widget/lib/utils/interceptor/xhr.ts","../src/widget/lib/utils/interceptor/index.ts","../src/widget/lib/context/error-context.ts","../src/widget/lib/hooks/context/use-errors.ts","../src/widget/lib/hooks/feature/use-cart-actions.tsx","../src/widget/lib/hooks/feature/use-fetch-interceptor.tsx","../src/widget/lib/hooks/feature/use-override-scroll-blocking.ts","../src/widget/lib/hooks/feature/use-cart-activator.ts","../src/widget/lib/utils/dom.ts","../src/widget/components/handlers/initialization-handler.tsx","../src/widget/lib/hooks/feature/use-external-events.ts","../src/widget/components/is-mounted.tsx","../src/widget/components/providers/error-provider.tsx","../src/widget/lib/hooks/common/use-array.ts","../src/widget/lib/hooks/common/use-async-state.ts","../src/widget/components/providers/return-context-provider.tsx","../src/widget/lib/hooks/context/use-theme.ts","../src/widget/components/providers/root-provider.tsx","../src/widget/components/providers/widget-context-provider.tsx","../src/widget/components/toast/toast-provider.tsx","../src/widget/components/icons/banner/action.tsx","../src/widget/components/icons/banner/info.tsx","../src/widget/components/icons/giftcard.tsx","../src/widget/components/icons/warning.tsx","../src/widget/components/ui/banner/banner-skeleton.tsx","../src/widget/components/ui/banner/banner.tsx","../src/widget/components/drawer/adjustments/exchange-banner.tsx","../src/widget/lib/hooks/context/use-currency.ts","../src/widget/lib/hooks/context/use-calculation.ts","../src/widget/components/icons/star.tsx","../src/widget/components/ui/price.tsx","../src/widget/components/drawer/adjustments/table/adjustments-table-skeleton.tsx","../src/widget/components/drawer/adjustments/table/adjustments-table.tsx","../src/widget/components/drawer/adjustments/exchange-adjustments.tsx","../src/widget/components/drawer/annoucement-bar.tsx","../src/widget/components/drawer/error-screen.tsx","../src/widget/lib/hooks/context/use-navigation.ts","../src/widget/components/drawer/exchange-confirmation.tsx","../src/widget/components/icons/icon.tsx","../src/widget/components/drawer/exchange-header.tsx","../src/widget/components/icons/cart.tsx","../src/widget/components/drawer/exchange-placeholder.tsx","../src/widget/components/drawer/product/product-errors.tsx","../src/widget/components/drawer/product/product.utils.ts","../src/widget/components/drawer/product/quantity-picker.tsx","../src/widget/components/drawer/product/product-actions.tsx","../src/widget/components/ui/link.tsx","../src/widget/components/drawer/product/product-attributes.tsx","../src/widget/components/drawer/product/product-image.tsx","../src/widget/components/drawer/product/product.tsx","../src/widget/components/drawer/product/product-list.tsx","../src/widget/lib/hooks/context/use-cart-items.ts","../src/widget/components/icons/arrow-down.tsx","../src/widget/components/icons/chevron.tsx","../src/widget/components/ui/expander.tsx","../src/widget/components/drawer/return/return-product-badge.tsx","../src/widget/components/drawer/return/return-product-actions.tsx","../src/widget/components/drawer/return/return-product.tsx","../src/widget/components/drawer/return/return-product-skeleton.tsx","../src/widget/components/drawer/return/return-product-list.tsx","../src/widget/components/drawer/scroll-indicator.tsx","../src/widget/lib/hooks/common/use-y-scrollable.ts","../src/widget/components/drawer/exchange-drawer.tsx","../src/widget/components/icons/bag.tsx","../src/widget/components/toast/toast.tsx","../src/widget/components/toast/toast-container.tsx","../src/widget/components/icons/arrow-left.tsx","../src/widget/components/summary/back-button.tsx","../src/widget/components/summary/exchange-total-skeleton.tsx","../src/widget/components/summary/exchange-total.tsx","../src/widget/components/summary/exchange-summary.tsx","../src/widget/components/widget.tsx","../src/widget/components/widget-container.tsx"],"sourcesContent":["// This file is used to declare the global types for the Shopify object.\n// This is necessary because globals.d.ts is not automatically included in the build process.\n\ntype GlobalShopify = {\n\tshop: string;\n\tlocale: string;\n\tcurrency: {\n\t\tactive: string;\n\t\trate: string;\n\t};\n\tcountry: string;\n\ttheme: {\n\t\tname: string;\n\t\tid: number;\n\t\tschema_name: string;\n\t\tschema_version: string;\n\t\ttheme_store_id?: number;\n\t\trole: string;\n\t\thandle: string;\n\t\tstyle: {\n\t\t\tid?: string | null;\n\t\t\thandle?: string | null;\n\t\t};\n\t};\n\tcdnHost: string;\n\troutes: {\n\t\troot: string;\n\t};\n\tce_forms: {\n\t\tq: Array<unknown>;\n\t};\n\tcaptcha: unknown;\n\tPaymentButton: {\n\t\tisStorefrontPortableWallets: boolean;\n\t};\n\tanalytics: {\n\t\treplayQueue: Array<unknown>;\n\t\tinitialized: boolean;\n\t};\n\tmodules: boolean;\n\tfeatureAssets: {\n\t\t\"shop-js\": unknown;\n\t};\n};\n\ntype InterceptionProperties = {\n\trf_interception?: boolean;\n};\n\ndeclare global {\n\tinterface Window {\n\t\t__rf_original_fetch?: typeof fetch;\n\t\tfetch: typeof fetch & InterceptionProperties;\n\n\t\t__rf_original_xhr?: typeof XMLHttpRequest;\n\t\tXMLHttpRequest: typeof XMLHttpRequest & InterceptionProperties;\n\n\t\t__rf_original_search?: string;\n\t\tShopify: GlobalShopify;\n\t}\n}\n\nexport type ReturnAction = \"swap\" | \"exchange\" | \"giftcard\" | \"refund\";\n\nexport type ProductRule = {\n\tid: string;\n\ttype: \"NO_RETURN\" | \"NO_REFUND\" | \"EXTEND_PERIOD\" | \"NO_EXCHANGE_TO\";\n\textendedBy: number;\n\tmarketId: string;\n\tupdatedAt: string;\n\tcreatedAt: string;\n\tproducts: Array<{\n\t\ttitle: string;\n\t\timage: string;\n\t\tid: string;\n\t\truleId: string;\n\t\tshopifyProductId: string;\n\t\tcreatedAt: string;\n\t}>;\n};\n\nexport interface ShopOverlayData {\n\tid: string;\n\torderId: string;\n\torderName: string;\n\tinstantExchange: boolean;\n\tfreeExchangeLabel: boolean;\n\tproductsToExchange: Array<OrderProduct>;\n\ttotalPrice: number;\n\tproductRules: Array<ProductRule>;\n\treturnWindows: {\n\t\texchangeReturnWindow: boolean;\n\t\trefundReturnWindow: boolean;\n\t};\n}\n\nexport interface OrderProduct {\n\tid: string;\n\tshopifyLineId: string;\n\ttitle: string;\n\tvariantTitle: string;\n\timage: string;\n\thandle: string;\n\tprice: number;\n\tquantity: number;\n}\n\nexport interface ShopifyCartAddResponse {\n\tid: number;\n\tproperties: Record<string, unknown>;\n\tquantity: number;\n\tvariant_id: number;\n\tkey: string;\n\ttitle: string;\n\tproduct_title: string;\n\tvariant_title: string;\n\tprice: number;\n\toriginal_price: number;\n\tdiscounted_price: number;\n\tline_price: number;\n\toriginal_line_price: number;\n\tpresentment_price: number;\n\ttotal_discount: number;\n\tdiscounts: Array<unknown>;\n\tsku: string;\n\tgrams: number;\n\tvendor: string;\n\ttaxable: boolean;\n\tproduct_id: number;\n\tproduct_has_only_default_variant: boolean;\n\tgift_card: boolean;\n\tfinal_price: number;\n\tfinal_line_price: number;\n\turl: string;\n\tfeatured_image: {\n\t\talt: string;\n\t\taspect_ratio: number;\n\t\theight: number;\n\t\turl: string;\n\t\twidth: number;\n\t};\n\timage: string;\n\thandle: string;\n\trequires_shipping: boolean;\n\tproduct_type: string;\n\tuntranslated_product_title: string;\n\tproduct_description: string;\n\tuntranslated_variant_title: string;\n\tvariant_options: Array<string>;\n\toptions_with_values: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t}>;\n\tline_level_discount_allocations: Array<unknown>;\n\tline_level_total_discount: number;\n\tsections: {\n\t\t\"cart-notification-product\": string;\n\t\t\"cart-notification-button\": string;\n\t\t\"cart-icon-bubble\": string;\n\t};\n}\n\nexport interface ShopifyCart {\n\titems: Array<ShopifyCartItem>;\n\titem_count: number;\n\ttoken?: string;\n\tnote?: string;\n\tattributes?: Record<string, unknown>;\n\toriginal_total_price?: number;\n\ttotal_price?: number;\n\ttotal_discount?: number;\n\ttotal_weight?: number;\n\trequires_shipping?: boolean;\n\tcurrency?: string;\n\titems_subtotal_price?: number;\n\tcart_level_discount_applications?: Array<unknown>;\n\tdiscount_codes?: Array<unknown>;\n}\n\nexport interface ShopifyCartChangeResponse extends ShopifyCart {\n\titems_added: Array<ShopifyCartItem>;\n\titems_removed: Array<ShopifyCartItem>;\n}\n\nexport interface ShopifyCartItem {\n\tvariant_id: number;\n\tquantity: number;\n\ttitle: string;\n\tprice: number;\n\tproduct_id: number;\n\tproduct_title: string;\n\thandle: string;\n\timage: string;\n\tgrams: number;\n\tline_price: number;\n\tfinal_price: number;\n\tfinal_line_price: number;\n\n\t// Optional fields\n\tid?: number;\n\tline_id?: string;\n\tmerchandise_id?: string;\n\tproperties?: Record<string, unknown>;\n\tkey?: string;\n\tvariant_title?: string;\n\tquantity_rule?: {\n\t\tmin: number | null;\n\t\tmax: number | null;\n\t\tincrement: number | null;\n\t};\n\toriginal_price?: number;\n\tpresentment_price?: number;\n\tdiscounted_price?: number;\n\toriginal_line_price?: number;\n\ttotal_discount?: number;\n\tdiscounts?: Array<unknown>;\n\tsku?: string;\n\tvendor?: string;\n\ttaxable?: boolean;\n\tproduct_has_only_default_variant?: boolean;\n\tgift_card?: boolean;\n\turl?: string;\n\tfeatured_image?: {\n\t\taspect_ratio: number;\n\t\talt: string;\n\t\theight: number;\n\t\turl: string;\n\t\twidth: number;\n\t};\n\trequires_shipping?: boolean;\n\tproduct_type?: string;\n\tproduct_description?: string;\n\tvariant_options?: Array<string>;\n\toptions_with_values?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t}>;\n\tline_level_discount_allocations?: Array<unknown>;\n\tline_level_total_discount?: number;\n\thas_components?: boolean;\n}\n\nexport interface ShopifyErrorResponse {\n\tstatus: string;\n\tmessage: string;\n\tdescription: string;\n}\n\nexport interface CalculationExchangeProduct {\n\tvariantId: string | undefined; // Undefined if product is deleted\n\tproductId: string;\n\tproductTitle: string;\n\tprice: number;\n\tcompareAtPrice: number | null;\n\tcoverage: {\n\t\toriginalProductId: string;\n\t\toriginalVariantId: string;\n\t\tquantityCovered: number;\n\t\toriginalUnitPrice: number;\n\t\texchangeUnitPrice: number;\n\t\tcoveredAmount: number;\n\t} | null;\n}\n\nexport interface CalculationLineItem {\n\tid: string;\n\tlineItemId: string;\n\tvariantId: string;\n\tproductId: string;\n\tquantity: number;\n\tlineItemDistributionKey: number;\n\taction: \"NOT_DECIDED\" | \"REFUND\" | \"EXCHANGE\" | \"SWAP\" | \"GIFTCARD\";\n\toriginalPrice: number;\n\tprice: number;\n\tdiscountedPrice: number;\n\toriginalTotal: number;\n\ttotal: number;\n\tdiscountedTotal: number;\n\tmetafield: {\n\t\tnamespace: unknown;\n\t\tkey: unknown;\n\t\tvalue: unknown;\n\t};\n}\n\nexport interface CalculationResponse {\n\tpercentageOfReturn: number;\n\treturnLabelPrice: number;\n\tgiftCardBonusAmount: number;\n\trefundMethods: {\n\t\trefund: number;\n\t\tgiftcard: number;\n\t\texchange: number;\n\t};\n\tdistributionKeysByAction: {\n\t\tREFUND: number;\n\t\tEXCHANGE: number;\n\t\tGIFTCARD: number;\n\t};\n\tshipping: {\n\t\tamount: number;\n\t\tamountInCurrency: number;\n\t\toriginalOrderShipping: number;\n\t};\n\torderDiscounts: Array<unknown>;\n\tdiscountSummary: {\n\t\toriginalDiscountTotal: number;\n\t\tadjustedDiscountTotal: number;\n\t\tappliedToReturnSubtotal: number;\n\t\thasDiscounts: boolean;\n\t\thasAdjustedDiscounts: boolean;\n\t\tdiscountAppliedToExchange: boolean;\n\t\tdiscountAddedToReturnSubtotal: boolean;\n\t\tshippingRefundAppliedToReturnSubtotal: boolean;\n\t};\n\tlineItems: Array<CalculationLineItem>;\n\texchange: {\n\t\toriginalTotal: number;\n\t\tnewTotal: number;\n\t\tpriceDifference: number;\n\t\tisUpsell: boolean;\n\t\tadditionalCharge: number;\n\t\ttotalCoveredAmount: number;\n\t\tdiscountSummary: {\n\t\t\toriginalDiscountTotal: number;\n\t\t\tadjustedDiscountTotal: number;\n\t\t\tappliedToReturnSubtotal: number;\n\t\t\thasDiscounts: boolean;\n\t\t\thasAdjustedDiscounts: boolean;\n\t\t\tdiscountAppliedToExchange: boolean;\n\t\t\tdiscountAddedToReturnSubtotal: boolean;\n\t\t\tshippingRefundAppliedToReturnSubtotal: boolean;\n\t\t};\n\t\texchangeDetails: Array<CalculationExchangeProduct>;\n\t};\n\tcurrency: {\n\t\tlocalCurrency: string;\n\t\tshopCurrency: string;\n\t\texchangeRate: number;\n\t};\n\toptions: {\n\t\tcoverPriceChange: boolean;\n\t\torderDiscountMatch: boolean;\n\t\tproductDiscountMatch: boolean;\n\t\tgiftCardBonusPercentage: number;\n\t\trefundOriginalShippingType: string;\n\t};\n\treturnSubtotal: number;\n\torderSubtotal: number;\n\tpreferedLabelDeduction: string;\n\ttotal: number;\n\tcalculatedAt: string;\n\tdetailedBreakdown: {\n\t\toriginalOrder: {\n\t\t\tsubtotal: number;\n\t\t\tshipping: number;\n\t\t\tdiscounts: Array<unknown>;\n\t\t\ttotal: number;\n\t\t};\n\t\treturn: {\n\t\t\tsubtotal: {\n\t\t\t\titems: number;\n\t\t\t\treturnLabelPrice: number;\n\t\t\t\tshippingRefund: number;\n\t\t\t\tdiscounts: Array<unknown>;\n\t\t\t\ttotal: number;\n\t\t\t};\n\t\t\trefundMethods: {\n\t\t\t\trefund: {\n\t\t\t\t\tamount: number;\n\t\t\t\t\tdescription: string;\n\t\t\t\t};\n\t\t\t\tgiftcard: {\n\t\t\t\t\tbaseAmount: number;\n\t\t\t\t\tbonusAmount: number;\n\t\t\t\t\tbonusPercentage: number;\n\t\t\t\t\ttotalAmount: number;\n\t\t\t\t};\n\t\t\t\texchange: {\n\t\t\t\t\tamount: number;\n\t\t\t\t\tpriceDifference: number;\n\t\t\t\t\tfinalAmount: number;\n\t\t\t\t};\n\t\t\t};\n\t\t\ttotal: number;\n\t\t};\n\t\tpreferedLabelDeduction: string;\n\t\tcurrency: {\n\t\t\tlocalCurrency: string;\n\t\t\tshopCurrency: string;\n\t\t\texchangeRate: number;\n\t\t};\n\t};\n}\n\nexport enum WidgetViewState {\n\tCollapsed = \"COLLAPSED\",\n\tOpen = \"OPEN\"\n}\n\nexport enum ReturnViewState {\n\tCollapsed = \"COLLAPSED\",\n\tOpen = \"OPEN\"\n}\n","import type { CartInput, CartProvider, ShopifyCart } from \"../../../api/types\";\n\ninterface ReturnflowsGlobal {\n\t_cartProvider?: CartProvider | null;\n}\n\nexport function getInternalCartProvider<\n\tT extends CartInput = ShopifyCart\n>(): CartProvider<T> | null {\n\tif (typeof window === \"undefined\") {\n\t\treturn null;\n\t}\n\treturn ((window as unknown as { Returnflows?: ReturnflowsGlobal }).Returnflows\n\t\t?._cartProvider ?? null) as CartProvider<T> | null;\n}\n\nexport function hasCartProvider(): boolean {\n\tif (typeof window === \"undefined\") {\n\t\treturn false;\n\t}\n\treturn (\n\t\t(window as unknown as { Returnflows?: ReturnflowsGlobal }).Returnflows\n\t\t\t?._cartProvider != null\n\t);\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","function hoursToMilliseconds(hours: number): number {\n\treturn hours * 60 * 60 * 1000;\n}\nfunction minutesToMilliseconds(minutes: number): number {\n\treturn minutes * 60 * 1000;\n}\n\nexport type StorageType = \"sessionStorage\" | \"localStorage\";\n\ninterface StorageData<T = unknown> {\n\tvalue: T;\n\texpiration?: number; // Timestamp in milliseconds\n}\n\nexport interface StorageKey {\n\tkey: string;\n\ttype: StorageType;\n\texpiration?: number; // Expiration time in milliseconds\n}\n\n// Storage keys and expiration times\nexport const STORAGE_SESSION_KEY = {\n\tkey: \"session_id\",\n\ttype: \"sessionStorage\",\n\texpiration: hoursToMilliseconds(1)\n} satisfies StorageKey;\n\nexport const STORAGE_OVERLAY_DIALOG_EXPIRY_KEY = {\n\tkey: \"dialog_expiration\",\n\ttype: \"sessionStorage\"\n} satisfies StorageKey;\n\nexport const STORAGE_OVERLAY_DIALOG_EXPIRATION = minutesToMilliseconds(10);\n\nexport const STORAGE_CART_KEY = {\n\tkey: \"cart\",\n\ttype: \"sessionStorage\",\n\texpiration: minutesToMilliseconds(5) // 5 minutes\n} satisfies StorageKey;\n\nexport const STORAGE_DEBUG_MODE_KEY = {\n\tkey: \"debug_mode\",\n\ttype: \"sessionStorage\"\n} satisfies StorageKey;\n\nexport const STORAGE_PREFIX = \"rflows_\";\n\nfunction getStorageKey(key: string): string {\n\treturn `${STORAGE_PREFIX}${key}`;\n}\n\nexport default {\n\tset: <T>({ key, type, expiration }: StorageKey, value: T) => {\n\t\tconst data: StorageData = {\n\t\t\tvalue,\n\t\t\texpiration: expiration ? Date.now() + expiration : undefined\n\t\t};\n\t\tconst storage = getStorage(type);\n\t\tstorage.setItem(getStorageKey(key), JSON.stringify(data));\n\t},\n\n\tget: <T>({ key, type }: StorageKey): T | null => {\n\t\tconst storage = getStorage(type);\n\n\t\tconst storageItem = storage.getItem(getStorageKey(key));\n\n\t\tif (!storageItem) return null;\n\n\t\ttry {\n\t\t\tconst parsedData = JSON.parse(storageItem) as StorageData<T>;\n\t\t\tif (parsedData.expiration && Date.now() > parsedData.expiration) {\n\t\t\t\t// Expired\n\t\t\t\tstorage.removeItem(getStorageKey(key));\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn parsedData.value;\n\t\t} catch (_) {\n\t\t\treturn null;\n\t\t}\n\t},\n\n\thas: ({ key, type }: StorageKey): boolean => {\n\t\treturn Boolean(getStorage(type).getItem(getStorageKey(key)));\n\t},\n\n\tremove: ({ key, type }: StorageKey) => {\n\t\tgetStorage(type).removeItem(getStorageKey(key));\n\t}\n};\n\nfunction getStorage(type: StorageType): Storage {\n\tif (type === \"sessionStorage\") {\n\t\treturn sessionStorage;\n\t} else if (type === \"localStorage\") {\n\t\treturn localStorage;\n\t} else {\n\t\tthrow new Error(`Invalid storage type: ${type}`);\n\t}\n}\n","/* eslint-disable no-restricted-syntax */\nimport storage, { STORAGE_DEBUG_MODE_KEY } from \"./storage\";\n\nconst LOG_PREFIX = \"[RF]\";\n\nenum LogLevel {\n\tDEBUG = 0,\n\tINFO = 1,\n\tWARN = 2,\n\tERROR = 3\n}\n\nclass Logger {\n\tprivate static instance: Logger;\n\n\tprivate constructor() {}\n\n\tpublic static getInstance(): Logger {\n\t\tif (!Logger.instance) {\n\t\t\tLogger.instance = new Logger();\n\t\t}\n\t\treturn Logger.instance;\n\t}\n\n\tprivate checkDebugMode(): boolean {\n\t\tconst storedDebugModeValue = storage.get<boolean>(STORAGE_DEBUG_MODE_KEY);\n\t\treturn Boolean(storedDebugModeValue);\n\t}\n\n\tprivate log(level: LogLevel, message: string, ...args: unknown[]): void {\n\t\tif (!this.checkDebugMode()) {\n\t\t\treturn; // Skip logs if the script data attribute is not set\n\t\t}\n\t\tswitch (level) {\n\t\t\tcase LogLevel.DEBUG:\n\t\t\t\tconsole.debug(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.INFO:\n\t\t\t\tconsole.info(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.WARN:\n\t\t\t\tconsole.warn(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t\tcase LogLevel.ERROR:\n\t\t\t\tconsole.error(`${LOG_PREFIX} ${message}`, ...args);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdebug(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.DEBUG, message, ...args);\n\t}\n\n\tinfo(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.INFO, message, ...args);\n\t}\n\n\twarn(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.WARN, message, ...args);\n\t}\n\n\terror(message: string, ...args: unknown[]): void {\n\t\tthis.log(LogLevel.ERROR, message, ...args);\n\t}\n}\n\nexport const logger = Logger.getInstance();\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { logger } from \"./logger\";\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function assert(variable: unknown, message: string): asserts variable {\n\tif (isNil(variable) || variable === \"\") {\n\t\tthrow new Error(message);\n\t}\n}\n\nexport async function wait(ms: number) {\n\treturn new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function isNil(value: unknown): value is null | undefined {\n\treturn value === null || value === undefined;\n}\n\nexport function ensureHttpUrl(url: string, secure: boolean = true): string {\n\tif (!url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n\t\tif (secure) {\n\t\t\treturn `https://${url}`;\n\t\t}\n\t\treturn `http://${url}`;\n\t}\n\treturn url;\n}\n\nexport function isNumber(value: unknown): value is number {\n\tif (typeof value === \"number\") {\n\t\treturn true;\n\t}\n\treturn !isNaN(Number(value)) && isFinite(Number(value));\n}\n\nexport function hexToHsl(hex: string): string {\n\t// Remove the hash if present\n\thex = hex.replace(\"#\", \"\");\n\n\t// Parse hex values\n\tconst r = parseInt(hex.substring(0, 2), 16) / 255;\n\tconst g = parseInt(hex.substring(2, 4), 16) / 255;\n\tconst b = parseInt(hex.substring(4, 6), 16) / 255;\n\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst diff = max - min;\n\n\t// Calculate lightness\n\tconst l = (max + min) / 2;\n\n\tlet h = 0;\n\tlet s = 0;\n\n\tif (diff !== 0) {\n\t\t// Calculate saturation\n\t\ts = l > 0.5 ? diff / (2 - max - min) : diff / (max + min);\n\n\t\t// Calculate hue\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = ((g - b) / diff + (g < b ? 6 : 0)) / 6;\n\t\t\t\tbreak;\n\t\t\tcase g:\n\t\t\t\th = ((b - r) / diff + 2) / 6;\n\t\t\t\tbreak;\n\t\t\tcase b:\n\t\t\t\th = ((r - g) / diff + 4) / 6;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Convert to degrees and percentages\n\tconst hDeg = Math.round(h * 360);\n\tconst sPercent = Math.round(s * 100);\n\tconst lPercent = Math.round(l * 100);\n\n\treturn `${hDeg}, ${sPercent}%, ${lPercent}%`;\n}\n\nexport function isOnCartPage(): boolean {\n\tconst path = window.location.pathname;\n\treturn path.includes(\"/cart\") || path.includes(\"/checkout\");\n}\n\ninterface WrapperOptions {\n\tshouldThrow?: boolean;\n\tlogError?: boolean;\n\tfallbackValue?: unknown;\n}\n\nexport function attempt<T, TThrow extends boolean = false>(\n\tfn: () => T,\n\terrorMessage: string,\n\toptions: WrapperOptions & { shouldThrow?: TThrow } = {}\n): TThrow extends true ? T : T | undefined {\n\tconst {\n\t\tshouldThrow = false as TThrow,\n\t\tlogError = true,\n\t\tfallbackValue\n\t} = options;\n\n\ttry {\n\t\treturn fn() as TThrow extends true ? T : T | undefined;\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\n\t\tif (logError) {\n\t\t\tlogger.error(`${errorMessage} (${error.message})`);\n\t\t}\n\n\t\tif (shouldThrow) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn ((fallbackValue as T) ?? undefined) as TThrow extends true\n\t\t\t? T\n\t\t\t: T | undefined;\n\t}\n}\n\nexport function parseToNumber(\n\tvalue: string | number | null | undefined,\n\tfallback = 0\n): number {\n\tif (isNil(value) || value === \"\") return fallback;\n\tif (typeof value !== \"number\") value = parseFloat(value);\n\tif (isNaN(value) || value.toString() === \"Infinity\") return fallback;\n\treturn value;\n}\n\n// Conversion functions for time units to milliseconds\nexport function daysToMilliseconds(days: number): number {\n\treturn days * 24 * 60 * 60 * 1000;\n}\nexport function secondsToMilliseconds(seconds: number): number {\n\treturn seconds * 1000;\n}\n\nexport function setNestedValue<T>(\n\tobj: Record<string, unknown>,\n\tpath: string,\n\tvalue: T\n): T {\n\tconst keys = path.split(\".\");\n\tconst lastKey = keys.pop();\n\n\tif (!lastKey) {\n\t\tthrow new Error(\"Invalid path\");\n\t}\n\n\tconst target = keys.reduce(\n\t\t(current: unknown, key: string): Record<string, unknown> => {\n\t\t\tif (current && typeof current === \"object\" && key in current) {\n\t\t\t\tconst next = (current as Record<string, unknown>)[key];\n\t\t\t\tif (next && typeof next === \"object\") {\n\t\t\t\t\treturn next as Record<string, unknown>;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error(`Cannot access property '${key}' on path '${path}'`);\n\t\t},\n\t\tobj\n\t);\n\n\ttarget[lastKey] = value;\n\treturn value;\n}\n\nexport function getResolvedSearchParams(): URLSearchParams {\n\tlet searchString = window.__rf_original_search;\n\tsearchString ||= window.location.search;\n\treturn new URLSearchParams(searchString);\n}\n\nexport function resolveSetStateAction<T>(\n\taction: React.SetStateAction<T>,\n\tcurrentState: T\n): T {\n\tif (typeof action === \"function\") {\n\t\t// TypeScript needs a type assertion here because SetStateAction<T>\n\t\t// could be T | ((prevState: T) => T), and TS can't narrow the function type automatically\n\t\treturn (action as (prevState: T) => T)(currentState);\n\t}\n\treturn action;\n}\n","import { ShopifyErrorResponse } from \"../types\";\nimport { assert, ensureHttpUrl, isNil } from \"./helpers\";\nimport storage, {\n\tSTORAGE_CART_KEY,\n\tSTORAGE_DEBUG_MODE_KEY,\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY,\n\tSTORAGE_SESSION_KEY\n} from \"./storage\";\n\nexport function constructShopifyUrl(\n\tendpoint: string,\n\tqueryParams?: Record<string, string>\n) {\n\tconst root = ensureHttpUrl(window.location.host);\n\n\tassert(root, \"Shopify root URL is not defined\");\n\n\tconst searchParams = new URLSearchParams();\n\n\tif (queryParams) {\n\t\tObject.entries(queryParams).forEach(([key, value]) => {\n\t\t\tsearchParams.set(key, value);\n\t\t});\n\t}\n\n\tlet url = root;\n\n\tif (!endpoint.startsWith(\"/\")) {\n\t\turl += \"/\";\n\t}\n\turl += endpoint;\n\n\tif (searchParams.toString()) {\n\t\turl += `?${searchParams.toString()}`;\n\t}\n\n\treturn url;\n}\n\nexport async function handleShopifyFetch<T = unknown>(\n\tendpoint: string,\n\tinit?: RequestInit\n): Promise<T> {\n\tconst fetchUrl = constructShopifyUrl(endpoint, {\n\t\trf: \"true\"\n\t});\n\tconst response = await fetch(fetchUrl, {\n\t\tmethod: init?.method ?? (init?.body ? \"POST\" : \"GET\"),\n\t\tcache: \"no-cache\",\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\"\n\t\t},\n\t\t...init\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorResponse = (await response.json()) as ShopifyErrorResponse;\n\t\tif (errorResponse && \"message\" in errorResponse) {\n\t\t\tthrow errorResponse;\n\t\t}\n\t\tthrow new Error(\"Unknown error\");\n\t}\n\n\tconst json = (await response.json()) as T;\n\treturn json;\n}\n\nexport function clearSession() {\n\tstorage.remove(STORAGE_CART_KEY);\n\tstorage.remove(STORAGE_SESSION_KEY);\n\tstorage.remove(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\tstorage.remove(STORAGE_DEBUG_MODE_KEY);\n}\n\nexport function normalizeShopifyPrice(\n\tvalue: number | null | undefined\n): number {\n\tif (isNil(value)) {\n\t\treturn 0;\n\t}\n\treturn value / 100;\n}\n\nexport function formatShopifyId(id: number | string, type: string): string {\n\tif (typeof id === \"string\" && id.startsWith(\"gid://\")) return id;\n\treturn `gid://shopify/${type}/${id}`;\n}\n\nexport function stripShopifyId(id: string | number | null | undefined): string {\n\tif (!id) return \"\";\n\n\tconst segment = id.toString().split(\"/\").pop();\n\tif (!segment) return \"\";\n\n\treturn segment;\n}\n","import { ProductRule, ShopifyCart, ShopifyCartChangeResponse } from \"../types\";\nimport {\n\tgetInternalCartProvider,\n\thasCartProvider\n} from \"./cart-provider-store\";\nimport { isNil, parseToNumber } from \"./helpers\";\nimport { logger } from \"./logger\";\nimport { formatShopifyId, handleShopifyFetch, stripShopifyId } from \"./shopify\";\nimport storage, { STORAGE_CART_KEY } from \"./storage\";\n\nfunction toMerchandiseGid(variantId: number | string): string {\n\treturn formatShopifyId(variantId, \"ProductVariant\");\n}\n\nexport function getRuleProductIds(\n\trules: ProductRule[],\n\ttype: ProductRule[\"type\"]\n) {\n\treturn rules\n\t\t.filter(rule => rule.type === type)\n\t\t.flatMap(rule =>\n\t\t\trule.products.map(product =>\n\t\t\t\tNumber(stripShopifyId(product.shopifyProductId))\n\t\t\t)\n\t\t);\n}\n\nexport interface NormalizeCartResult<T extends ShopifyCart> {\n\tcart: T;\n\texcludedItems: T[\"items\"];\n\tbundleItems: T[\"items\"];\n}\n\n// Normalizes the cart by merging items with the same variant_id\nexport function normalizeCart<T extends ShopifyCart>(\n\tcart: T,\n\trules: ProductRule[]\n): NormalizeCartResult<T> {\n\tconst noExchangeTo = getRuleProductIds(rules, \"NO_EXCHANGE_TO\");\n\n\tconst excludedItems: T[\"items\"] = [];\n\tconst bundleItems: T[\"items\"] = [];\n\n\tconst { items, itemCount } = (cart.items || []).reduce<{\n\t\titems: ShopifyCart[\"items\"];\n\t\titemCount: number;\n\t}>(\n\t\t(acc, item) => {\n\t\t\t// Blocked product id exclusion\n\t\t\tif (noExchangeTo.includes(item.product_id)) {\n\t\t\t\texcludedItems.push(item);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// Bundle product exclusion\n\t\t\tif (item.has_components) {\n\t\t\t\tbundleItems.push(item);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// Find existing item in the accumulated items\n\t\t\tconst existingItem = acc.items.find(\n\t\t\t\ti => i.variant_id === item.variant_id\n\t\t\t);\n\n\t\t\tacc.itemCount += item.quantity || 0;\n\n\t\t\tif (existingItem) {\n\t\t\t\t// If the item already exists, merge the quantities\n\t\t\t\texistingItem.quantity += item.quantity;\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\t// If the item does not exist, add it to the list\n\t\t\tacc.items.push({ ...item });\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\titems: [],\n\t\t\titemCount: 0\n\t\t}\n\t);\n\n\tconst normalizedCart: T = {\n\t\t...cart,\n\t\titems,\n\t\titem_count: itemCount\n\t};\n\n\treturn {\n\t\tcart: normalizedCart,\n\t\texcludedItems,\n\t\tbundleItems\n\t};\n}\n\n// Compares two Shopify carts to see if they are the same\nexport function compareCarts({\n\tcart1,\n\tcart2,\n\trules\n}: {\n\tcart1: ShopifyCart;\n\tcart2: ShopifyCart;\n\trules: ProductRule[];\n}): boolean {\n\tconst { cart: normalizedCart1 } = normalizeCart(cart1, rules);\n\tconst { cart: normalizedCart2 } = normalizeCart(cart2, rules);\n\n\tconst items1 = normalizedCart1.items || [];\n\tconst items2 = normalizedCart2.items || [];\n\n\tif (items1.length !== items2.length) {\n\t\treturn false;\n\t}\n\n\tconst quantityMap1 = new Map(\n\t\titems1.map(item => [item.variant_id, item.quantity])\n\t);\n\n\tfor (const item of items2) {\n\t\tif (quantityMap1.get(item.variant_id) !== item.quantity) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport async function getCart(\n\tpreferStorage: boolean = true\n): Promise<ShopifyCart> {\n\tlet cart: ShopifyCart | undefined = undefined;\n\tlet usedStore: boolean = false;\n\tlet usedProvider: boolean = false;\n\n\tif (preferStorage) {\n\t\tconst storedCart = getCartStorage();\n\t\tif (storedCart) {\n\t\t\tusedStore = true;\n\t\t\tcart = storedCart;\n\t\t}\n\t}\n\n\tif (!cart) {\n\t\t// Use cart provider if configured (for headless/external setups)\n\t\tif (hasCartProvider()) {\n\t\t\tconst provider = getInternalCartProvider();\n\t\t\tif (provider) {\n\t\t\t\tlogger.info(\"[CartProvider] Using provider.getCart()\");\n\t\t\t\tcart = await provider.getCart();\n\t\t\t\tusedProvider = true;\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to direct Shopify fetch if no provider\n\t\tif (!cart) {\n\t\t\tlogger.info(\"[CartProvider] No provider, falling back to /cart.js\");\n\t\t\tcart = await handleShopifyFetch<ShopifyCart>(\"/cart.js\");\n\t\t}\n\n\t\tupdateCartStorage(cart);\n\t}\n\n\tconst source = usedStore ? \"Storage\" : usedProvider ? \"Provider\" : \"API\";\n\tlogger.info(`Fetched cart (${source})`, cart);\n\n\treturn cart;\n}\n\nexport async function clearCart(): Promise<ShopifyCart> {\n\t// Use cart provider if configured and has clearCart method\n\tif (hasCartProvider()) {\n\t\tconst provider = getInternalCartProvider();\n\t\tif (provider?.clearCart) {\n\t\t\tlogger.info(\"[CartProvider] Using provider.clearCart()\");\n\t\t\tconst cart = await provider.clearCart();\n\t\t\tupdateCartStorage(cart);\n\t\t\treturn cart;\n\t\t}\n\t\tlogger.info(\n\t\t\t\"[CartProvider] Provider exists but clearCart not implemented, falling back to /cart/clear.js\"\n\t\t);\n\t}\n\n\t// Fall back to direct Shopify fetch\n\tconst cart = await handleShopifyFetch<ShopifyCart>(\"/cart/clear.js\", {\n\t\tmethod: \"POST\"\n\t});\n\tupdateCartStorage(cart);\n\treturn cart;\n}\n\nexport async function setCartItems(\n\titems: Array<{\n\t\tid: number;\n\t\tquantity: number;\n\t}>\n): Promise<ShopifyCart> {\n\tconst clearedCart = await clearCart();\n\n\tif (items.length === 0) {\n\t\treturn clearedCart;\n\t}\n\n\t// Use cart provider if configured and has addItems method\n\tif (hasCartProvider()) {\n\t\tconst provider = getInternalCartProvider();\n\t\tif (provider?.addItems) {\n\t\t\tconst cartItems = items.map(item => {\n\t\t\t\tconst merchandiseId = toMerchandiseGid(item.id);\n\t\t\t\treturn {\n\t\t\t\t\tmerchandiseId,\n\t\t\t\t\tquantity: item.quantity\n\t\t\t\t};\n\t\t\t});\n\t\t\tlogger.info(\n\t\t\t\t\"[CartProvider] Using provider.addItems() (setCartItems)\",\n\t\t\t\tcartItems\n\t\t\t);\n\t\t\tconst cart = await provider.addItems(cartItems);\n\t\t\tupdateCartStorage(cart);\n\t\t\treturn cart;\n\t\t}\n\t\tlogger.info(\n\t\t\t\"[CartProvider] Provider exists but addItems not implemented, falling back to /cart/add.js\"\n\t\t);\n\t}\n\n\t// Fall back to direct Shopify fetch\n\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/add.js\", {\n\t\tmethod: \"POST\",\n\t\tbody: JSON.stringify({\n\t\t\titems\n\t\t})\n\t});\n\n\treturn getCart(false);\n}\n\nexport async function updateCartItemQuantity({\n\tvariantId,\n\tquantity,\n\tisRetry = false\n}: {\n\tvariantId: number;\n\tquantity: number;\n\tisRetry?: boolean;\n}): Promise<ShopifyCart> {\n\ttry {\n\t\tif (isNil(quantity)) {\n\t\t\tthrow new Error(\"Quantity cannot be null or undefined\");\n\t\t}\n\n\t\t// Use cart provider if configured\n\t\tif (hasCartProvider()) {\n\t\t\tconst provider = getInternalCartProvider();\n\t\t\tif (provider) {\n\t\t\t\t// Get current cart (storage is synced by wrapped provider)\n\t\t\t\t// On retry, bypass storage to get fresh cart data\n\t\t\t\tconst currentCart = await getCart(!isRetry);\n\t\t\t\tconst item = currentCart.items.find(i => i.variant_id === variantId);\n\n\t\t\t\tif (!item) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`[CartProvider] Item with variantId ${variantId} not found in cart`\n\t\t\t\t\t);\n\t\t\t\t\t// If first attempt and item not found, retry with fresh cart\n\t\t\t\t\tif (!isRetry) {\n\t\t\t\t\t\tlogger.info(\"[CartProvider] Retrying with fresh cart data...\");\n\t\t\t\t\t\treturn updateCartItemQuantity({\n\t\t\t\t\t\t\tvariantId,\n\t\t\t\t\t\t\tquantity,\n\t\t\t\t\t\t\tisRetry: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t\treturn getCart(false);\n\t\t\t\t}\n\n\t\t\t\tconst lineId = item.line_id;\n\t\t\t\tconst merchandiseId =\n\t\t\t\t\titem.merchandise_id || toMerchandiseGid(variantId);\n\n\t\t\t\tif (!lineId) {\n\t\t\t\t\tlogger.warn(\"[CartProvider] No line_id on cart item\");\n\t\t\t\t\t// If first attempt and no line_id, retry with fresh cart\n\t\t\t\t\tif (!isRetry) {\n\t\t\t\t\t\tlogger.info(\"[CartProvider] Retrying with fresh cart data...\");\n\t\t\t\t\t\treturn updateCartItemQuantity({\n\t\t\t\t\t\t\tvariantId,\n\t\t\t\t\t\t\tquantity,\n\t\t\t\t\t\t\tisRetry: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\"[CartProvider] Still no line_id after retry, falling back to /cart/change.js\"\n\t\t\t\t\t);\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t\treturn getCart(false);\n\t\t\t\t}\n\n\t\t\t\tif (quantity === 0 && provider.removeItems) {\n\t\t\t\t\tlogger.info(`[CartProvider] Using provider.removeItems([${lineId}])`);\n\t\t\t\t\tawait provider.removeItems([lineId]);\n\t\t\t\t} else if (provider.updateItems) {\n\t\t\t\t\tconst updateItem = { id: lineId, merchandiseId, quantity };\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\"[CartProvider] Using provider.updateItems()\",\n\t\t\t\t\t\tupdateItem\n\t\t\t\t\t);\n\t\t\t\t\tawait provider.updateItems([updateItem]);\n\t\t\t\t} else {\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\"[CartProvider] Provider exists but removeItems/updateItems not implemented, falling back to /cart/change.js\"\n\t\t\t\t\t);\n\t\t\t\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\t\t\t}\n\n\t\t\t\t// Always fetch fresh cart to get complete data (e.g. has_components)\n\t\t\t\treturn getCart(false);\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to direct Shopify fetch\n\t\tawait updateCartItemQuantityViaShopify(variantId, quantity);\n\t\treturn getCart(false);\n\t} catch (err) {\n\t\tconst error = err as Error | { status: number; message: string };\n\t\tlogger.error(\"Error updating cart item quantity:\", error);\n\t\tif (\"status\" in error) {\n\t\t\tthrow new Error(error.status.toString());\n\t\t}\n\t\tthrow new Error(error.message);\n\t}\n}\n\n/**\n * Internal: Update cart item quantity via direct Shopify API calls.\n * Used when no cart provider is configured.\n */\nasync function updateCartItemQuantityViaShopify(\n\tvariantId: number,\n\tquantity: number\n): Promise<void> {\n\tif (quantity === 0) {\n\t\t// If quantity is 0, remove the item from the cart\n\t\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/change.js\", {\n\t\t\tbody: JSON.stringify({\n\t\t\t\tid: String(variantId), // Shopify expects variantId as a string\n\t\t\t\tquantity\n\t\t\t})\n\t\t});\n\t\treturn;\n\t}\n\n\t// This calculation is necessary to handle cases where there are multiple identical items in the cart.\n\tconst existingCart = await getCart();\n\n\tconst existingItems = existingCart.items || [];\n\n\tconst itemsWtihSameVariantId = existingItems.filter(\n\t\titem => item.variant_id === variantId\n\t);\n\tconst totalQuantity = itemsWtihSameVariantId.reduce(\n\t\t(acc, item) => acc + (item.quantity || 0),\n\t\t0\n\t);\n\tconst existingItemIndex = existingItems.findIndex(\n\t\titem => item.variant_id === variantId\n\t);\n\n\tconst increment = quantity - totalQuantity;\n\n\tconst existingQuantity = parseToNumber(\n\t\texistingItems[existingItemIndex]?.quantity\n\t);\n\tconst calculatedQuantity = existingQuantity + increment;\n\n\tif (existingItemIndex !== -1) {\n\t\tconst cartChange = {\n\t\t\tline: String(existingItemIndex + 1), // Shopify uses 1-based index\n\t\t\tquantity: calculatedQuantity\n\t\t};\n\t\tawait handleShopifyFetch<ShopifyCartChangeResponse>(\"/cart/change.js\", {\n\t\t\tbody: JSON.stringify(cartChange)\n\t\t});\n\t}\n}\n\nexport function updateCartStorage(cart: ShopifyCart | null): void {\n\tif (cart) {\n\t\tstorage.set(STORAGE_CART_KEY, cart);\n\t\treturn;\n\t}\n\tstorage.remove(STORAGE_CART_KEY);\n}\n\nexport function getCartStorage(): ShopifyCart | null {\n\treturn storage.get<ShopifyCart>(STORAGE_CART_KEY);\n}\n","import { updateCartStorage } from \"../widget/lib/utils/cart\";\nimport { stripShopifyId } from \"../widget/lib/utils/shopify\";\nimport type {\n\tCartInput,\n\tCartProvider,\n\tConnection,\n\tShopifyCart,\n\tShopifyCartItem,\n\tStorefrontCart,\n\tStorefrontCartLine\n} from \"./types\";\n\nfunction resolveConnection<T extends object>(connections: Connection<T>): T[] {\n\tif (\"edges\" in connections) {\n\t\treturn connections.edges.map(edge => edge.node);\n\t}\n\treturn connections.map(edge => {\n\t\tif (\"node\" in edge) {\n\t\t\treturn edge.node;\n\t\t}\n\t\treturn edge;\n\t});\n}\n\nfunction isStorefrontCart(cart: CartInput): cart is StorefrontCart {\n\tif (!(\"lines\" in cart)) return false;\n\tconst lines = (cart as StorefrontCart).lines;\n\treturn (\n\t\tArray.isArray(lines) ||\n\t\t(lines != null && typeof lines === \"object\" && \"edges\" in lines)\n\t);\n}\n\nfunction toCents(amount: string): number {\n\tconst parsed = parseFloat(amount);\n\treturn Number.isNaN(parsed) ? 0 : Math.round(parsed * 100);\n}\n\nfunction resolveLineImage(line: StorefrontCartLine): string {\n\tif (line.merchandise.image?.url) {\n\t\treturn line.merchandise.image.url;\n\t}\n\tif (line.merchandise.product.featuredImage?.url) {\n\t\treturn line.merchandise.product.featuredImage.url;\n\t}\n\tconst productImages = resolveConnection(\n\t\tline.merchandise.product.images ?? []\n\t);\n\tif (productImages.length > 0) {\n\t\treturn productImages[0].url;\n\t}\n\treturn \"\";\n}\n\nfunction normalizeStorefrontLine(line: StorefrontCartLine): ShopifyCartItem {\n\tconst { merchandise, quantity } = line;\n\tconst { product } = merchandise;\n\n\tconst variantId = Number(stripShopifyId(merchandise.id));\n\tconst productId = Number(stripShopifyId(product.id));\n\n\t// Prefer line.cost, fall back to merchandise.price\n\tlet unitPrice: number;\n\tlet lineTotal: number;\n\n\tif (line.cost?.amountPerQuantity) {\n\t\tunitPrice = toCents(line.cost.amountPerQuantity.amount);\n\t\tlineTotal = line.cost.totalAmount\n\t\t\t? toCents(line.cost.totalAmount.amount)\n\t\t\t: unitPrice * quantity;\n\t} else if (merchandise.price) {\n\t\tunitPrice = toCents(merchandise.price.amount);\n\t\tlineTotal = unitPrice * quantity;\n\t} else {\n\t\tunitPrice = 0;\n\t\tlineTotal = 0;\n\t}\n\n\tconst variantTitle = merchandise.title;\n\tconst productTitle = product.title;\n\n\tconst isDefaultVariant =\n\t\t!variantTitle ||\n\t\tvariantTitle === \"Default Title\" ||\n\t\tvariantTitle === \"Default\";\n\n\tconst title = isDefaultVariant\n\t\t? productTitle\n\t\t: `${productTitle} - ${variantTitle}`;\n\n\treturn {\n\t\tvariant_id: variantId,\n\t\tquantity,\n\t\ttitle,\n\t\tprice: unitPrice,\n\t\tproduct_id: productId,\n\t\tproduct_title: productTitle,\n\t\thandle: product.handle,\n\t\timage: resolveLineImage(line),\n\t\tgrams: 0,\n\t\tline_price: lineTotal,\n\t\tfinal_price: unitPrice,\n\t\tfinal_line_price: lineTotal,\n\t\tline_id: line.id,\n\t\tmerchandise_id: merchandise.id,\n\t\tvariant_title: isDefaultVariant ? undefined : variantTitle,\n\t\tsku: merchandise.sku,\n\t\tvendor: product.vendor,\n\t\tproduct_type: product.productType,\n\t\trequires_shipping: merchandise.requiresShipping\n\t};\n}\n\nfunction normalizeStorefrontCart(cart: StorefrontCart): ShopifyCart {\n\tconst lines = resolveConnection(cart.lines);\n\tconst items = lines.map(normalizeStorefrontLine);\n\tconst itemCount =\n\t\tcart.totalQuantity ?? items.reduce((sum, i) => sum + i.quantity, 0);\n\n\treturn {\n\t\titems,\n\t\titem_count: itemCount,\n\t\ttoken: cart.id,\n\t\tnote: cart.note ?? \"\"\n\t};\n}\n\nexport function normalizeCartInput(cart: CartInput): ShopifyCart {\n\tif (isStorefrontCart(cart)) {\n\t\treturn normalizeStorefrontCart(cart);\n\t}\n\treturn cart;\n}\n\nfunction normalizeAndStore(cart: CartInput): ShopifyCart {\n\tconst normalized = normalizeCartInput(cart);\n\tupdateCartStorage(normalized);\n\treturn normalized;\n}\n\nexport function wrapCartProvider(provider: CartProvider): CartProvider {\n\treturn {\n\t\tasync getCart(): Promise<ShopifyCart | undefined> {\n\t\t\tconst cart = await provider.getCart();\n\t\t\treturn cart ? normalizeAndStore(cart) : undefined;\n\t\t},\n\t\tclearCart: async () => normalizeAndStore(await provider.clearCart()),\n\t\taddItems: async items => normalizeAndStore(await provider.addItems(items)),\n\t\tupdateItems: async items =>\n\t\t\tnormalizeAndStore(await provider.updateItems(items)),\n\t\tremoveItems: async ids => normalizeAndStore(await provider.removeItems(ids))\n\t};\n}\n","import type { IReturnContext } from \"../widget/lib/context/return-context\";\nimport type { IToastContext } from \"../widget/lib/context/toast-context\";\nimport type { ValueState } from \"../widget/lib/hooks/common/use-value-state\";\nimport {\n\tCalculationResponse,\n\tShopifyCart,\n\tWidgetViewState\n} from \"../widget/lib/types\";\nimport {\n\tcompareCarts,\n\tnormalizeCart,\n\tupdateCartStorage\n} from \"../widget/lib/utils/cart\";\nimport type { WidgetConfiguration } from \"../widget/lib/utils/initialization/types\";\nimport { normalizeCartInput, wrapCartProvider } from \"./storefront-cart\";\nimport type {\n\tCartInput,\n\tCartProvider,\n\tEventCallback,\n\tEventName,\n\tOrderData,\n\tSetCartOutput\n} from \"./types\";\n\ninterface StateBridge {\n\twidgetViewState: ValueState<WidgetViewState> | null;\n\tconfig: WidgetConfiguration | null;\n\treturnContext: IReturnContext | null;\n\ttoastContext: IToastContext | null;\n\tcartProvider: CartProvider | null;\n\tisInitialized: boolean;\n\teventListeners: Map<string, Set<EventCallback<EventName>>>;\n}\n\nconst bridge: StateBridge = {\n\twidgetViewState: null,\n\tconfig: null,\n\treturnContext: null,\n\ttoastContext: null,\n\tcartProvider: null,\n\tisInitialized: false,\n\teventListeners: new Map()\n};\n\nexport function registerBridge({\n\twidgetViewState,\n\treturnContext,\n\ttoastContext,\n\tconfig\n}: {\n\twidgetViewState: ValueState<WidgetViewState>;\n\treturnContext: IReturnContext;\n\ttoastContext: IToastContext;\n\tconfig: WidgetConfiguration;\n}): void {\n\tbridge.widgetViewState = widgetViewState;\n\tbridge.returnContext = returnContext;\n\tbridge.toastContext = toastContext;\n\tbridge.config = config;\n\tbridge.isInitialized = true;\n\n\temitEvent(\"ready\");\n}\n\nexport function unregisterBridge(): void {\n\tbridge.widgetViewState = null;\n\tbridge.returnContext = null;\n\tbridge.toastContext = null;\n\tbridge.config = null;\n\tbridge.cartProvider = null;\n\tbridge.isInitialized = false;\n\tbridge.eventListeners.clear();\n}\n\nexport function setCartProvider(provider: CartProvider | null): void {\n\tconst wrapped = provider ? wrapCartProvider(provider) : null;\n\n\tbridge.cartProvider = wrapped;\n\n\tif (typeof window !== \"undefined\") {\n\t\tconst rf = (\n\t\t\twindow as Window & {\n\t\t\t\tReturnflows?: { _cartProvider?: CartProvider | null };\n\t\t\t}\n\t\t).Returnflows;\n\t\tif (rf) {\n\t\t\trf._cartProvider = wrapped;\n\t\t}\n\t}\n\n\tif (provider) {\n\t\tconsole.info(`[RF] Cart provider registered.`);\n\t} else {\n\t\tconsole.info(\"[RF] Cart provider cleared.\");\n\t}\n}\n\nexport function getCartProvider(): CartProvider | null {\n\treturn bridge.cartProvider;\n}\n\nexport function isInitialized(): boolean {\n\treturn bridge.isInitialized;\n}\n\nexport function getDrawerState(): WidgetViewState | null {\n\treturn bridge.widgetViewState?.value ?? null;\n}\n\nexport function setDrawerState(state: WidgetViewState): void {\n\tif (!bridge.widgetViewState) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn;\n\t}\n\tbridge.widgetViewState.set(state);\n}\n\nexport function isDrawerOpen(): boolean {\n\treturn bridge.widgetViewState?.value === WidgetViewState.Open;\n}\n\nexport function getCart(): ShopifyCart | null {\n\tconst cartState = bridge.returnContext?.cartState;\n\tif (!cartState?.value.data) return null;\n\treturn cartState.value.data.original as ShopifyCart;\n}\n\nexport function getCalculation(): CalculationResponse | null {\n\treturn bridge.returnContext?.calculationState.value.data ?? null;\n}\n\nexport function getOrder(): OrderData | null {\n\tconst orderData = bridge.returnContext?.orderState.value.data?.orderData;\n\tif (!orderData) return null;\n\n\treturn {\n\t\tid: orderData.id,\n\t\torderId: orderData.orderId,\n\t\torderName: orderData.orderName,\n\t\tinstantExchange: orderData.instantExchange,\n\t\tfreeExchangeLabel: orderData.freeExchangeLabel,\n\t\tproductsToExchange: orderData.productsToExchange,\n\t\ttotalPrice: orderData.totalPrice\n\t};\n}\n\nexport function isLoading(): boolean {\n\treturn bridge.returnContext?.isPending ?? true;\n}\n\nexport async function setCart(cart: CartInput): Promise<SetCartOutput> {\n\tconst cartState = bridge.returnContext?.cartState;\n\tconst orderState = bridge.returnContext?.orderState;\n\tconst calculationState = bridge.returnContext?.calculationState;\n\tconst returnState = bridge.config?.data.returnData;\n\n\tif (!cartState || !orderState?.value.data) {\n\t\tconsole.warn(\"[RF] Widget not initialized or order not loaded.\");\n\t\treturn {\n\t\t\tcart: null,\n\t\t\tcalculation: null,\n\t\t\thasChanged: false\n\t\t};\n\t}\n\n\tconst order = orderState.value.data;\n\n\tconst normalizedInput = normalizeCartInput(cart);\n\tconst productRules = order.orderData.productRules || [];\n\n\t// Check if cart has actually changed\n\tconst currentCart = cartState.value.data?.original as ShopifyCart | undefined;\n\tif (\n\t\tcurrentCart &&\n\t\tcompareCarts({\n\t\t\tcart1: currentCart,\n\t\t\tcart2: normalizedInput,\n\t\t\trules: productRules\n\t\t})\n\t) {\n\t\treturn {\n\t\t\tcart: currentCart,\n\t\t\tcalculation: calculationState?.value.data ?? null,\n\t\t\thasChanged: false\n\t\t};\n\t}\n\n\tconst { cart: transformedCart } = normalizeCart(\n\t\tnormalizedInput,\n\t\tproductRules\n\t);\n\n\tcartState.set({\n\t\tdata: {\n\t\t\toriginal: normalizedInput,\n\t\t\ttransformed: transformedCart\n\t\t},\n\t\tpending: false,\n\t\terror: null\n\t});\n\n\tupdateCartStorage(normalizedInput);\n\n\temitEvent(\"cart:updated\", normalizedInput);\n\n\tconst calculationResponse = await calculationState?.query({\n\t\tcart: transformedCart,\n\t\torderId: order.orderData.id,\n\t\tlineItems: returnState?.items || []\n\t});\n\n\treturn {\n\t\tcart: transformedCart,\n\t\tcalculation: calculationResponse ?? null,\n\t\thasChanged: true\n\t};\n}\n\nexport async function refetchCart(): Promise<SetCartOutput | void> {\n\tconst cartState = bridge.returnContext?.cartState;\n\tconst orderState = bridge.returnContext?.orderState;\n\n\tif (!cartState || !orderState?.value.data) {\n\t\tconsole.warn(\"[RF] Widget not initialized or order not loaded.\");\n\t\treturn;\n\t}\n\n\tif (bridge.cartProvider) {\n\t\ttry {\n\t\t\tconst cart = await bridge.cartProvider.getCart();\n\t\t\tif (!cart) return;\n\t\t\treturn setCart(cart);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[RF] Cart provider getCart failed:\", error);\n\t\t\temitEvent(\n\t\t\t\t\"error\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tawait cartState.query(orderState.value.data);\n}\n\nexport async function clearCart(): Promise<SetCartOutput | void> {\n\tif (!bridge.isInitialized) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn;\n\t}\n\n\tif (bridge.cartProvider?.clearCart) {\n\t\ttry {\n\t\t\tconst cart = await bridge.cartProvider.clearCart();\n\t\t\treturn setCart(cart);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[RF] Cart provider clearCart failed:\", error);\n\t\t\temitEvent(\n\t\t\t\t\"error\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error))\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tdocument.dispatchEvent(new CustomEvent(\"RF_CART_AND_CALCULATION_REFETCH\"));\n}\n\nexport function showToast(options: {\n\tmessage: string;\n\ttone?: \"info\" | \"tip\" | \"action\" | \"error\" | \"giftcard\";\n\tduration?: number;\n\tonClose?: () => void;\n}): string {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized. Call init() first.\");\n\t\treturn \"\";\n\t}\n\n\treturn bridge.toastContext.add({\n\t\tmessage: options.message,\n\t\ttone: options.tone,\n\t\tduration: options.duration,\n\t\tonClose: options.onClose\n\t});\n}\n\nexport function dismissToast(id: string): void {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized.\");\n\t\treturn;\n\t}\n\tbridge.toastContext.remove(id);\n}\n\nexport function clearToasts(): void {\n\tif (!bridge.toastContext) {\n\t\tconsole.warn(\"[RF] Widget not initialized.\");\n\t\treturn;\n\t}\n\tbridge.toastContext.clear();\n}\n\nexport function addEventListener<K extends EventName>(\n\tevent: K,\n\tcallback: EventCallback<K>\n): void {\n\tif (!bridge.eventListeners.has(event)) {\n\t\tbridge.eventListeners.set(event, new Set());\n\t}\n\tbridge.eventListeners.get(event)!.add(callback as EventCallback<EventName>);\n}\n\nexport function removeEventListener<K extends EventName>(\n\tevent: K,\n\tcallback: EventCallback<K>\n): void {\n\tbridge.eventListeners\n\t\t.get(event)\n\t\t?.delete(callback as EventCallback<EventName>);\n}\n\nexport function emitEvent<K extends EventName>(\n\tevent: K,\n\t...args: K extends \"error\"\n\t\t? [Error]\n\t\t: K extends \"calculation:updated\"\n\t\t\t? [CalculationResponse]\n\t\t\t: K extends \"cart:updated\"\n\t\t\t\t? [ShopifyCart]\n\t\t\t\t: []\n): void {\n\tconst listeners = bridge.eventListeners.get(event);\n\tif (!listeners) return;\n\n\tlisteners.forEach(callback => {\n\t\ttry {\n\t\t\t// @ts-expect-error - TypeScript can't verify the callback signature matches the args\n\t\t\tcallback(...args);\n\t\t} catch (error) {\n\t\t\tconsole.error(`[RF] Error in ${event} event handler:`, error);\n\t\t}\n\t});\n}\n","import { WidgetViewState } from \"../widget/lib/types\";\nimport * as bridge from \"./state-bridge\";\nimport type {\n\tCartAPI,\n\tCartInput,\n\tCartProvider,\n\tDataAPI,\n\tDrawerAPI,\n\tEventCallback,\n\tEventName,\n\tReturnflowsAPI,\n\tReturnflowsConfig,\n\tToastAPI,\n\tToastOptions\n} from \"./types\";\n\ndeclare const __VERSION__: string;\n\nclass ReturnflowsWidget implements ReturnflowsAPI {\n\tprivate _initPromise: Promise<void> | null = null;\n\n\t/** @internal */\n\t_cartProvider: CartProvider | null = null;\n\n\tpublic readonly version =\n\t\ttypeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0\";\n\n\tpublic readonly drawer: DrawerAPI = {\n\t\topen: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.setDrawerState(WidgetViewState.Open);\n\t\t},\n\n\t\tclose: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.setDrawerState(WidgetViewState.Collapsed);\n\t\t},\n\n\t\ttoggle: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tconst current = bridge.getDrawerState();\n\t\t\tbridge.setDrawerState(\n\t\t\t\tcurrent === WidgetViewState.Open\n\t\t\t\t\t? WidgetViewState.Collapsed\n\t\t\t\t\t: WidgetViewState.Open\n\t\t\t);\n\t\t},\n\n\t\tisOpen: (): boolean => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.isDrawerOpen();\n\t\t}\n\t};\n\n\tpublic readonly data: DataAPI = {\n\t\tgetCart: () => bridge.getCart(),\n\t\tgetCalculation: () => bridge.getCalculation(),\n\t\tgetOrder: () => bridge.getOrder(),\n\t\tisLoading: () => bridge.isLoading()\n\t};\n\n\tpublic readonly cart: CartAPI = {\n\t\tsetCart: async (cart: CartInput): ReturnType<CartAPI[\"setCart\"]> => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.setCart(cart);\n\t\t},\n\n\t\trefetch: async (): Promise<void> => {\n\t\t\tthis._ensureInitialized();\n\t\t\tawait bridge.refetchCart();\n\t\t},\n\n\t\tclear: async (): Promise<void> => {\n\t\t\tthis._ensureInitialized();\n\t\t\tawait bridge.clearCart();\n\t\t}\n\t};\n\n\tpublic readonly toast: ToastAPI = {\n\t\tshow: (options: ToastOptions): string => {\n\t\t\tthis._ensureInitialized();\n\t\t\treturn bridge.showToast(options);\n\t\t},\n\n\t\tdismiss: (id: string): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.dismissToast(id);\n\t\t},\n\n\t\tclear: (): void => {\n\t\t\tthis._ensureInitialized();\n\t\t\tbridge.clearToasts();\n\t\t}\n\t};\n\n\tasync init(config: ReturnflowsConfig = {}): Promise<void> {\n\t\tif (this._initPromise) {\n\t\t\tconsole.warn(\"[RF] Already initializing. Returning existing promise.\");\n\t\t\treturn this._initPromise;\n\t\t}\n\n\t\tif (bridge.isInitialized()) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[RF] Already initialized. Call destroy() first to reinitialize.\"\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initPromise = new Promise<void>((resolve, reject) => {\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst { onReady, onError, cartProvider, ...rest } = config;\n\n\t\t\t\t\tif (cartProvider) {\n\t\t\t\t\t\tbridge.setCartProvider(cartProvider);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { default: initialize } = await import(\n\t\t\t\t\t\t\"../widget/lib/utils/initialization\"\n\t\t\t\t\t);\n\t\t\t\t\tconst { default: WidgetContainer } = await import(\n\t\t\t\t\t\t\"../widget/components/widget-container\"\n\t\t\t\t\t);\n\t\t\t\t\tconst { h } = await import(\"preact\");\n\n\t\t\t\t\tconst result = await initialize(\n\t\t\t\t\t\twidgetConfig => h(WidgetContainer, widgetConfig),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnetworkInterceptionMethod: \"none\",\n\t\t\t\t\t\t\t...rest\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!result.success) {\n\t\t\t\t\t\tif (result.reason === \"CONTAINER_EXISTS\") {\n\t\t\t\t\t\t\tawait this._waitForBridge();\n\t\t\t\t\t\t\tconfig.onReady?.();\n\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result.reason === \"MISSING_SESSION_ID\") {\n\t\t\t\t\t\t\tthis._initPromise = null;\n\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Widget initialization failed: ${result.message} (${result.reason})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait this._waitForBridge();\n\t\t\t\t\tconfig.onReady?.();\n\t\t\t\t\tresolve();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\t\t\t\tconfig.onError?.(error);\n\t\t\t\t\tbridge.setCartProvider(null);\n\t\t\t\t\tthis._initPromise = null;\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t})();\n\t\t});\n\n\t\treturn this._initPromise;\n\t}\n\n\tdestroy(): void {\n\t\tbridge.setCartProvider(null);\n\t\tbridge.unregisterBridge();\n\n\t\tif (typeof document !== \"undefined\") {\n\t\t\tconst container = document.getElementById(\"rf-overlay-widget\");\n\t\t\tif (container) {\n\t\t\t\tcontainer.remove();\n\t\t\t}\n\t\t}\n\n\t\tthis._initPromise = null;\n\t}\n\n\tisInitialized(): boolean {\n\t\treturn bridge.isInitialized();\n\t}\n\n\ton<K extends EventName>(event: K, callback: EventCallback<K>): () => void {\n\t\tbridge.addEventListener(event, callback);\n\t\treturn () => bridge.removeEventListener(event, callback);\n\t}\n\n\toff<K extends EventName>(event: K, callback: EventCallback<K>): void {\n\t\tbridge.removeEventListener(event, callback);\n\t}\n\n\tprivate _ensureInitialized(): void {\n\t\tif (!bridge.isInitialized()) {\n\t\t\tthrow new Error(\"[RF] Widget not initialized. Call init() first.\");\n\t\t}\n\t}\n\n\tprivate async _waitForBridge(timeout = 10000): Promise<void> {\n\t\tconst start = Date.now();\n\t\twhile (!bridge.isInitialized()) {\n\t\t\tif (Date.now() - start > timeout) {\n\t\t\t\tthrow new Error(\"[RF] Initialization timeout\");\n\t\t\t}\n\t\t\tawait new Promise(r => setTimeout(r, 50));\n\t\t}\n\t}\n}\n\nexport const Returnflows = new ReturnflowsWidget();\n\nif (typeof window !== \"undefined\") {\n\t(window as Window & { Returnflows?: ReturnflowsWidget }).Returnflows =\n\t\tReturnflows;\n}\n\nexport default Returnflows;\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function g(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function _(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function S(n,l){if(null==l)return n.__?S(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?S(n):null}function C(n){if(n.__P&&n.__d){var u=n.__v,t=u.__e,i=[],r=[],o=w({},u);o.__v=u.__v+1,l.vnode&&l.vnode(o),z(n.__P,o,u,n.__n,n.__P.namespaceURI,32&u.__u?[t]:null,i,null==t?S(u):t,!!(32&u.__u),r),o.__v=u.__v,o.__.__k[o.__i]=o,V(i,o,r),u.__e=u.__=null,o.__e!=t&&M(o)}}function M(n){if(null!=(n=n.__)&&null!=n.__c)return n.__e=n.__c.base=null,n.__k.some(function(l){if(null!=l&&null!=l.__e)return n.__e=n.__c.base=l.__e}),M(n)}function $(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!I.__r++||r!=l.debounceRendering)&&((r=l.debounceRendering)||o)(I)}function I(){for(var n,l=1;i.length;)i.length>l&&i.sort(e),n=i.shift(),l=i.length,C(n);I.__r=0}function P(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,d,w,g,_,m=t&&t.__k||v,b=l.length;for(f=A(u,l,m,f,b),a=0;a<b;a++)null!=(y=u.__k[a])&&(h=-1!=y.__i&&m[y.__i]||p,y.__i=a,g=z(n,y,h,i,r,o,e,f,c,s),d=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&D(h.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),(_=!!(4&y.__u))||h.__k===y.__k?f=H(y,f,n,_):\"function\"==typeof y.type&&void 0!==g?f=g:d&&(f=d.nextSibling),y.__u&=-7);return u.__e=w,f}function A(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?o=n.__k[r]=m(null,o,null,null,null):d(o)?o=n.__k[r]=m(k,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?o=n.__k[r]=m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):n.__k[r]=o,f=r+h,o.__=n,o.__b=n.__b+1,e=null,-1!=(c=o.__i=T(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null==e.__v?(-1==c&&(i>s?h--:i<s&&h++),\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=S(e)),E(e,e));return t}function H(n,l,u,t){var i,r;if(\"function\"==typeof n.type){for(i=n.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=n,l=H(i[r],l,u,t));return l}n.__e!=l&&(t&&(l&&n.type&&!l.parentNode&&(l=S(n)),u.insertBefore(n.__e,l||null)),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function L(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(d(n)?n.some(function(n){L(n,l)}):l.push(n)),l}function T(n,l,u,t){var i,r,o,e=n.key,f=n.type,c=l[u],s=null!=c&&0==(2&c.__u);if(null===c&&null==e||s&&e==c.key&&f==c.type)return u;if(t>(s?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;)if(null!=(c=l[o=i>=0?i--:r++])&&0==(2&c.__u)&&e==c.key&&f==c.type)return o;return-1}function j(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function F(n,l,u,t,i){var r,o;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||j(n.style,l,\"\");if(u)for(l in u)t&&u[l]==t[l]||j(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),o=l.toLowerCase(),l=o in n||\"onFocusOut\"==l||\"onFocusIn\"==l?o.slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function O(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function z(n,u,t,i,r,o,e,f,c,s){var a,h,p,y,_,m,b,S,C,M,$,I,A,H,L,T=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof T)try{if(S=u.props,C=\"prototype\"in T&&T.prototype.render,M=(a=T.contextType)&&i[a.__c],$=a?M?M.props.value:a.__:i,t.__c?b=(h=u.__c=t.__c).__=h.__E:(C?u.__c=h=new T(S,$):(u.__c=h=new x(S,$),h.constructor=T,h.render=G),M&&M.sub(h),h.state||(h.state={}),h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),C&&null==h.__s&&(h.__s=h.state),C&&null!=T.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=w({},h.__s)),w(h.__s,T.getDerivedStateFromProps(S,h.__s))),y=h.props,_=h.state,h.__v=u,p)C&&null==T.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),C&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(C&&null==T.getDerivedStateFromProps&&S!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(S,$),u.__v==t.__v||!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(S,h.__s,$)){u.__v!=t.__v&&(h.props=S,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),v.push.apply(h.__h,h._sb),h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(S,h.__s,$),C&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,_,m)})}if(h.context=$,h.props=S,h.__P=n,h.__e=!1,I=l.__r,A=0,C)h.state=h.__s,h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),v.push.apply(h.__h,h._sb),h._sb=[];else do{h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=w(w({},i),h.getChildContext())),C&&!p&&null!=h.getSnapshotBeforeUpdate&&(m=h.getSnapshotBeforeUpdate(y,_)),H=null!=a&&a.type===k&&null==a.key?q(a.props.children):a,f=P(n,d(H)?H:[H],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),b&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else{for(L=o.length;L--;)g(o[L]);N(u)}else u.__e=t.__e,u.__k=t.__k,n.then||N(u);l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=B(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function N(n){n&&(n.__c&&(n.__c.__e=!0),n.__k&&n.__k.some(N))}function V(n,u,t){for(var i=0;i<t.length;i++)D(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function q(n){return\"object\"!=typeof n||null==n||n.__b>0?n:d(n)?n.map(q):w({},n)}function B(u,t,i,r,o,e,f,c,s){var a,h,v,y,w,_,m,b=i.props||p,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((w=e[a])&&\"setAttribute\"in w==!!x&&(x?w.localName==x:3==w.nodeType)){u=w,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null==x)b===k||c&&u.data==k||(u.data=k);else{if(e=e&&n.call(u.childNodes),!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(w=u.attributes[a]).name]=w.value;for(a in b)w=b[a],\"dangerouslySetInnerHTML\"==a?v=w:\"children\"==a||a in k||\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k||F(u,a,null,w,o);for(a in k)w=k[a],\"children\"==a?y=w:\"dangerouslySetInnerHTML\"==a?h=w:\"value\"==a?_=w:\"checked\"==a?m=w:c&&\"function\"!=typeof w||b[a]===w||F(u,a,w,b[a],o);if(h)c||v&&(h.__html==v.__html||h.__html==u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),P(\"template\"==t.type?u.content:u,d(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&S(i,0),c,s),null!=e)for(a=e.length;a--;)g(e[a]);c||(a=\"value\",\"progress\"==x&&null==_?u.removeAttribute(\"value\"):null!=_&&(_!==u[a]||\"progress\"==x&&!_||\"option\"==x&&_!=b[a])&&F(u,a,_,b[a],o),a=\"checked\",null!=m&&m!=u[a]&&F(u,a,m,b[a],o))}return u}function D(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function E(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!=n.__e||D(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&E(i[r],u,t||\"function\"!=typeof n.type);t||g(n.__e),n.__c=n.__=n.__e=void 0}function G(n,l,u){return this.constructor(n,u)}function J(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],z(t,u=(!r&&i||t).__k=_(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),V(e,u,f)}function K(n,l){J(n,l,K)}function Q(l,u,t){var i,r,o,e,f=w({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&null!=e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function R(n){function l(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l.__c]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!=n.value&&u.forEach(function(n){n.__e=!0,$(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}return l.__c=\"__cC\"+h++,l.__=n,l.Provider=l.__l=(l.Consumer=function(n,l){return n.children(l)}).contextType=l,l}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&void 0===n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!=this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),$(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),$(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},I.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=O(!1),a=O(!0),h=0;export{x as Component,k as Fragment,Q as cloneElement,R as createContext,_ as createElement,b as createRef,_ as h,K as hydrate,t as isValidElement,l as options,J as render,L as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","export function resolveEnvVar<T = undefined>(\n\tvarKey: string,\n\tfallback?: T\n): string | T {\n\tlet value;\n\ttry {\n\t\tvalue = process.env?.[varKey];\n\t} catch (err) {\n\t\tvalue = import.meta.env?.[varKey];\n\t\tvoid err;\n\t}\n\tvalue ??= fallback;\n\treturn value;\n}\n\n// General\nexport const IMAGE_FALLBACK_URL =\n\t\"https://cdn.shopify.com/s/files/1/0849/6526/1638/files/RF-SO-Placeholder2.png?v=1735826638\";\n\n// URLs\nexport const API_URL = resolveEnvVar(\"VITE_API_URL\", \"http://localhost:8080\");\nexport const PLATFORM_URL = resolveEnvVar(\n\t\"VITE_PLATFORM_URL\",\n\t\"http://localhost:3000\"\n);\nexport const WIDGET_BASE_URL = resolveEnvVar(\n\t\"VITE_WIDGET_BASE_URL\",\n\t\"http://localhost:3334\"\n);\n\n/* Consistent Search Params */\nexport const SEARCH_PARAM_ID_NAME = \"rflowsId\";\n\n/* Legacy Search Params */\nexport const LEGACY_PARAMS = [\"lineItems\", \"slug\", \"locale\", \"currency\"];\n\n/* Element Indendifiers */\nexport const ROOT_ELEMENT_ID = \"root\";\nexport const SHADOW_ROOT_ELEMENT_ID = \"shadow-root\";\nexport const CONTAINER_ELEMENT_ID = \"rf-overlay-widget\";\nexport const CUSTOM_CSS_DATA_ATTR = \"rf-custom-css\";\n\nexport const SCRIPT_ID = \"rf-embedded-script\";\nexport const SETTINGS_SCRIPT_ID = \"rf-settings-json\";\n","import { WidgetViewState } from \"../types\";\nimport { WidgetConfiguration } from \"./initialization/types\";\n\n// Define a union of allowed event names\nexport const enum InternalCustomEvent {\n\tFetchInterception = \"RF_FETCH_INTERCEPTION\",\n\tXHRInterception = \"RF_XHR_INTERCEPTION\",\n\tDrawerStateChange = \"RF_DRAWER_STATE_CHANGE\",\n\tWidgetInitialization = \"RF_WIDGET_INITIALIZATION\"\n}\n\nexport const enum ExternalCustomEvent {\n\tDrawerOpen = \"RF_DRAWER_OPEN\",\n\tDrawerClose = \"RF_DRAWER_CLOSE\",\n\tDrawerToggle = \"RF_DRAWER_TOGGLE\",\n\tCalculationRefetch = \"RF_CALCULATION_REFETCH\",\n\tCartRefetch = \"RF_CART_REFETCH\",\n\tCartAndCalculationRefetch = \"RF_CART_AND_CALCULATION_REFETCH\",\n\tDrawerOpenAndRefetch = \"RF_DRAWER_OPEN_AND_REFETCH\"\n}\n\nexport type XHRResponse = string | Record<string, unknown> | undefined;\nexport type FetchResponse = Response | undefined;\n\nexport type InterceptionResponse = XHRResponse | FetchResponse;\n\nexport interface InterceptionPayload {\n\tresponse: InterceptionResponse;\n\trequestUrl: string | URL;\n}\n\n// Define the expected data types for each event\nexport type CustomEventPayloadMap = {\n\t[InternalCustomEvent.FetchInterception]: InterceptionPayload;\n\t[InternalCustomEvent.XHRInterception]: InterceptionPayload;\n\t[InternalCustomEvent.DrawerStateChange]: { state: WidgetViewState };\n\t[InternalCustomEvent.WidgetInitialization]: WidgetConfiguration;\n\t[ExternalCustomEvent.DrawerOpen]: undefined;\n\t[ExternalCustomEvent.DrawerClose]: undefined;\n\t[ExternalCustomEvent.DrawerToggle]: undefined;\n\t[ExternalCustomEvent.CalculationRefetch]: undefined;\n\t[ExternalCustomEvent.CartRefetch]: undefined;\n\t[ExternalCustomEvent.CartAndCalculationRefetch]: undefined;\n\t[ExternalCustomEvent.DrawerOpenAndRefetch]: undefined;\n};\n\n// Subscribe function with typed event name and payload\nfunction subscribe<K extends keyof CustomEventPayloadMap>(\n\teventName: K,\n\tcallback: (event: CustomEvent<CustomEventPayloadMap[K]>) => void\n): () => void {\n\tconst handler = (event: CustomEvent<CustomEventPayloadMap[K]>) =>\n\t\tcallback(event);\n\tdocument.addEventListener(eventName, handler as EventListener);\n\treturn () => {\n\t\tdocument.removeEventListener(eventName, handler as EventListener);\n\t};\n}\n\n// Publish function with typed event name and payload\nfunction publish<K extends InternalCustomEvent>(\n\teventName: K,\n\t...args: K extends keyof CustomEventPayloadMap\n\t\t? [detail: CustomEventPayloadMap[K]]\n\t\t: [detail?: undefined]\n): void {\n\tconst event = new CustomEvent(eventName, {\n\t\tdetail: args[0]\n\t});\n\tdocument.dispatchEvent(event);\n}\n\n// Unsubscribe function\nfunction unsubscribe<K extends keyof CustomEventPayloadMap>(\n\teventName: K,\n\tcallback: (event: CustomEvent<CustomEventPayloadMap[K]>) => void\n): void {\n\tdocument.removeEventListener(eventName, callback as EventListener);\n}\n\n// Exported object\nconst customEvents = {\n\tsubscribe,\n\tpublish,\n\tunsubscribe\n};\n\nexport default customEvents;\n","import { Messages } from \"use-intl\";\nimport { WIDGET_BASE_URL } from \"../constants\";\nimport { logger } from \"./logger\";\n\nexport type Locale = string;\n\nexport const DEFAULT_LOCALE: Locale = \"en\";\nexport const DEFAULT_CURRENCY: string = \"DKK\";\n\nexport async function loadMessages(\n\t...locales: Locale[]\n): Promise<{ messages: Messages; locale: Locale }> {\n\t// If no locales provided, use default\n\tconst localesList = locales.length > 0 ? locales : [DEFAULT_LOCALE];\n\n\tfor (const locale of localesList) {\n\t\ttry {\n\t\t\tconst response = await fetch(\n\t\t\t\t`${WIDGET_BASE_URL}/messages/${locale}.json`\n\t\t\t);\n\t\t\tif (response.ok) {\n\t\t\t\tconst messages = await response.json();\n\t\t\t\treturn { messages, locale };\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error(`Error loading messages for locale ${locale}:`, error);\n\t\t}\n\t}\n\n\t// If all locales fail, throw an error\n\tthrow new Error(\n\t\t`No messages found for any of the locales: ${localesList.join(\", \")}`\n\t);\n}\n","import { CalculationParams } from \"../../components/providers/return-context-provider\";\nimport { API_URL, LEGACY_PARAMS, SEARCH_PARAM_ID_NAME } from \"../constants\";\nimport { CalculationResponse, ShopifyCart, ShopOverlayData } from \"../types\";\nimport { clearCart, setCartItems, updateCartStorage } from \"./cart\";\nimport { WidgetConfiguration } from \"./initialization/types\";\nimport { logger } from \"./logger\";\nimport storage, {\n\tSTORAGE_OVERLAY_DIALOG_EXPIRATION,\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY,\n\tSTORAGE_SESSION_KEY,\n\tStorageKey\n} from \"./storage\";\n\ninterface APIResponse<T> {\n\tsuccess?: boolean;\n\tresponseObject: T;\n\tmessage?: string;\n\terror?: string;\n\tstatusCode?: number;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"OPTIONS\";\n\ninterface FetchStoreOptions extends StorageKey {\n\tstoreResult?: boolean; // If false, do not store the result\n\tshouldUseCachedResult?: boolean;\n\tlogging?: boolean;\n\texpiration?: number; // in ms\n}\n\ninterface FetchAPIOptions extends Omit<RequestInit, \"body\" | \"method\"> {\n\tmethod?: HttpMethod;\n\tbody?: unknown;\n\tparams?: Record<string, string | number | boolean> | URLSearchParams;\n\tclientStorage?: FetchStoreOptions;\n}\n\nexport async function apiQuery<T>(\n\tpath: string,\n\t{ clientStorage: storageOptions, ...init }: FetchAPIOptions = {}\n): Promise<T> {\n\t// Storage handling\n\tconst isStorageEnabled = !!storageOptions;\n\n\tif (isStorageEnabled && storageOptions.shouldUseCachedResult !== false) {\n\t\tconst { key, type, logging } = storageOptions;\n\t\tconst cachedData = storage.get<T>({\n\t\t\tkey,\n\t\t\ttype\n\t\t});\n\t\tif (cachedData) {\n\t\t\tif (logging !== false) {\n\t\t\t\tlogger.info(`Using cached data for ${key} from ${type}`);\n\t\t\t}\n\t\t\treturn cachedData;\n\t\t}\n\t}\n\n\tconst fetchUrl = new URL(`${API_URL}${path}`);\n\n\t// Append query parameters if provided\n\tif (init?.params) {\n\t\tif (init.params instanceof URLSearchParams) {\n\t\t\tfetchUrl.search = init.params.toString();\n\t\t} else {\n\t\t\tObject.entries(init.params).forEach(([key, value]) => {\n\t\t\t\tfetchUrl.searchParams.set(key, String(value));\n\t\t\t});\n\t\t}\n\t}\n\n\t// Fetch request\n\tconst response = await fetch(fetchUrl.toString(), {\n\t\t...init,\n\t\tbody: init?.body ? JSON.stringify(init.body) : undefined,\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...init?.headers\n\t\t}\n\t});\n\n\t// JSON parsing\n\tconst data = await parseJsonRes<APIResponse<T>>(response);\n\n\t// Error handling\n\tif (!data || data.error || data.success === false) {\n\t\tconst message =\n\t\t\tdata?.error || data?.message || \"Error fetching calculation data\";\n\t\tthrow new Error(message);\n\t}\n\n\tif (isStorageEnabled && storageOptions.storeResult !== false) {\n\t\tconst { key, type, expiration } = storageOptions;\n\t\t// Store the response in the specified storage\n\t\tstorage.set(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\ttype,\n\t\t\t\texpiration\n\t\t\t},\n\t\t\tdata.responseObject\n\t\t);\n\t}\n\n\treturn data.responseObject;\n}\n\nasync function parseJsonRes<T>(response: Response): Promise<T> {\n\ttry {\n\t\treturn (await response.json()) as T;\n\t} catch (error) {\n\t\tlogger.error(\"Error parsing JSON response:\", error);\n\t\tthrow new Error(\"Failed to parse JSON response\");\n\t}\n}\n\n// REST API Queries\nexport async function getCalculation(\n\t{ orderId, cart, lineItems }: CalculationParams,\n\tlabelCount: number\n): Promise<CalculationResponse> {\n\tconst formattedLineItems = (lineItems || []).map(item => {\n\t\tlet action = item.action?.toUpperCase() ?? \"EXCHANGE\";\n\t\tif (action === \"SWAP\") action = \"EXCHANGE\";\n\t\treturn {\n\t\t\tid: item.id,\n\t\t\treturnOrderLineId: item.id,\n\t\t\tlineItemId: item.lineItemId,\n\t\t\tquantity: 1,\n\t\t\taction\n\t\t};\n\t});\n\n\tconst formattedExchangeTo = (cart.items || []).map(item => ({\n\t\tvariantId: `gid://shopify/ProductVariant/${item.variant_id}`,\n\t\tquantity: item.quantity\n\t}));\n\n\treturn apiQuery<CalculationResponse>(`/calculation/${orderId}`, {\n\t\tmethod: \"POST\",\n\t\tbody: {\n\t\t\tlineItems: formattedLineItems,\n\t\t\texchangeTo: formattedExchangeTo,\n\t\t\tnumOfLabels: labelCount\n\t\t}\n\t});\n}\n\nexport async function getShopOverlayData(\n\tisFirstLoad: boolean,\n\tinternalReturnId: string,\n\tlineIds: string\n): Promise<ShopOverlayData> {\n\tconst cacheKey = `${internalReturnId}_${lineIds}`;\n\n\tconst response = await apiQuery<ShopOverlayData>(\"/shop-overlay\", {\n\t\tparams: {\n\t\t\tinternalId: internalReturnId,\n\t\t\torderLines: lineIds\n\t\t},\n\t\tclientStorage: {\n\t\t\tshouldUseCachedResult: !isFirstLoad,\n\t\t\tkey: cacheKey,\n\t\t\ttype: \"sessionStorage\"\n\t\t}\n\t});\n\n\treturn response;\n}\n\nexport type ProcessOrderInitializationReturn = {\n\torderData: ShopOverlayData;\n\tupdatedCart: ShopifyCart | null;\n};\n\nexport async function processOrderInitialization({\n\tisFirstLoad,\n\toptions: { clearCartOnStart },\n\tid: internalId,\n\tdata: cache\n}: WidgetConfiguration): Promise<ProcessOrderInitializationReturn> {\n\tlet updatedCart: ShopifyCart | null = null;\n\n\tif (isFirstLoad) {\n\t\tconst cachedReturnItems = cache.returnItems ?? [];\n\n\t\tif (cachedReturnItems.length > 0) {\n\t\t\tconst mappedItems = cachedReturnItems.map(item => ({\n\t\t\t\tid: item.variantId,\n\t\t\t\tquantity: item.quantity\n\t\t\t}));\n\t\t\tlogger.info(\n\t\t\t\t\"Setting cart items from cached return items on initialization.\",\n\t\t\t\tmappedItems\n\t\t\t);\n\t\t\t// If there are cached return items, set them in the cart\n\t\t\tupdatedCart = await setCartItems(mappedItems);\n\t\t} else if (clearCartOnStart) {\n\t\t\tlogger.info(\"Clearing cart on initialization as per configuration.\");\n\t\t\t// Clear the cart if it's the first load and clearCartOnStart is true\n\t\t\tupdatedCart = await clearCart();\n\t\t}\n\n\t\tupdateCartStorage(updatedCart);\n\n\t\t// Set the dialog expiration in session storage\n\t\tconst dialogExpiration =\n\t\t\tnew Date().getTime() + STORAGE_OVERLAY_DIALOG_EXPIRATION;\n\n\t\tstorage.set(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY, dialogExpiration);\n\n\t\t// Remove the search param from the URL\n\t\tconst url = new URL(window.location.href);\n\n\t\turl.searchParams.delete(SEARCH_PARAM_ID_NAME);\n\n\t\tLEGACY_PARAMS.forEach(param => {\n\t\t\turl.searchParams.delete(param);\n\t\t});\n\n\t\twindow.history.replaceState(null, \"\", url);\n\t}\n\n\tstorage.set(STORAGE_SESSION_KEY, internalId);\n\n\tconst lineIds = cache.returnData?.items?.map(item => item.id).join(\",\") ?? \"\";\n\n\tconst orderData = await getShopOverlayData(isFirstLoad, internalId, lineIds);\n\n\treturn {\n\t\torderData,\n\t\tupdatedCart\n\t};\n}\n","import { SEARCH_PARAM_ID_NAME, SETTINGS_SCRIPT_ID } from \"../../constants\";\nimport {\n\tgetResolvedSearchParams,\n\tisNil,\n\tisNumber,\n\tsetNestedValue\n} from \"../helpers\";\nimport { DEFAULT_CURRENCY, DEFAULT_LOCALE, loadMessages } from \"../i18n\";\nimport { logger } from \"../logger\";\nimport { getSessionCache } from \"../session\";\nimport storage, {\n\tSTORAGE_DEBUG_MODE_KEY,\n\tSTORAGE_SESSION_KEY\n} from \"../storage\";\nimport {\n\tInitOptions,\n\tInitResult,\n\tWidgetConfiguration,\n\tWidgetSettings\n} from \"./types\";\n\nexport function isDOMStringMap(\n\tvalue: DOMStringMap | InitOptions\n): value is DOMStringMap {\n\treturn (\n\t\t(typeof DOMStringMap !== \"undefined\" && value instanceof DOMStringMap) ||\n\t\tObject.prototype.toString.call(value) === \"[object DOMStringMap]\"\n\t);\n}\n\n// Get and parse dataset options from the script element\nexport function parseScriptDataset(dataset: DOMStringMap): InitOptions {\n\tconst datasetRecord: Record<PropertyKey, unknown> = {};\n\n\tObject.entries(dataset).forEach(([key, value]) => {\n\t\tif (isNil(value)) return value;\n\n\t\tlet resolvedValue: unknown = value;\n\n\t\tif (value === \"true\") {\n\t\t\tresolvedValue = true;\n\t\t} else if (value === \"false\") {\n\t\t\tresolvedValue = false;\n\t\t} else if (isNumber(value)) {\n\t\t\tresolvedValue = Number(value);\n\t\t} else if (value === \"null\") {\n\t\t\tresolvedValue = null;\n\t\t} else if (value === \"undefined\") {\n\t\t\tresolvedValue = undefined;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tresolvedValue = JSON.parse(value);\n\t\t\t} catch {\n\t\t\t\t// Keep as string if JSON parsing fails\n\t\t\t}\n\t\t}\n\n\t\tdatasetRecord[key] = resolvedValue;\n\t});\n\n\treturn datasetRecord;\n}\n\n// Get settings from script with application json\nexport function getSettingsFromScript(): WidgetSettings | null {\n\tconst scriptElement = document.getElementById(\n\t\tSETTINGS_SCRIPT_ID\n\t) as HTMLScriptElement | null;\n\n\tif (!scriptElement) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst settings: WidgetSettings = JSON.parse(scriptElement.innerHTML);\n\t\treturn settings;\n\t} catch (error) {\n\t\tlogger.error(\"Failed to parse widget settings JSON\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function prepareInitializationOptions(\n\tdataset: DOMStringMap | InitOptions\n): Promise<InitResult> {\n\tconst options = isDOMStringMap(dataset)\n\t\t? parseScriptDataset(dataset)\n\t\t: dataset;\n\tconst settings = getSettingsFromScript();\n\n\tconst searchParams = getResolvedSearchParams();\n\n\tconst searchParamsId = searchParams.get(SEARCH_PARAM_ID_NAME);\n\tconst isFirstLoad = Boolean(searchParamsId);\n\n\tconst internalId = searchParamsId || storage.get(STORAGE_SESSION_KEY);\n\n\tif (!internalId) {\n\t\tconst message = \"Session ID is missing from URL and storage\";\n\t\tlogger.warn(message);\n\t\treturn { success: false, reason: \"MISSING_SESSION_ID\", message };\n\t}\n\n\tconst cache = await getSessionCache(internalId);\n\n\tif (!cache) {\n\t\tconst message = `No session cache found for id: ${internalId}`;\n\t\tlogger.warn(message);\n\t\treturn { success: false, reason: \"SESSION_NOT_FOUND\", message };\n\t}\n\n\tconst resolvedCurrency =\n\t\tcache.data.currency || options.defaultCurrency || DEFAULT_CURRENCY;\n\n\tconst isDevEnvironment =\n\t\toptions.env === \"development\" || options.env === \"test\";\n\tconst hasDebugParameter = searchParams.get(\"debug\") === \"true\";\n\n\tconst storedDebugModeValue = storage.get<boolean>(STORAGE_DEBUG_MODE_KEY);\n\n\tif (isDevEnvironment || hasDebugParameter) {\n\t\tstorage.set(STORAGE_DEBUG_MODE_KEY, true);\n\t}\n\n\tconst isDebugModeEnabled = Boolean(\n\t\tstoredDebugModeValue ?? (isDevEnvironment || hasDebugParameter)\n\t);\n\n\tconst localesList = [\n\t\tcache.data.locale,\n\t\toptions.defaultLocale,\n\t\tDEFAULT_LOCALE\n\t].filter(val => val !== undefined);\n\n\tconst { locale: resolvedLocale, messages } = await loadMessages(\n\t\t...localesList\n\t);\n\n\tconst customMessages = settings?.translations?.messages;\n\n\tif (customMessages) {\n\t\tlogger.info(\"Merging custom translations into messages...\");\n\t\tObject.entries(customMessages).forEach(([key, value]) => {\n\t\t\tsetNestedValue(messages, key, value);\n\t\t});\n\t}\n\n\tconst config: WidgetConfiguration = {\n\t\tlocale: resolvedLocale,\n\t\tcurrency: resolvedCurrency,\n\t\tdebugMode: isDebugModeEnabled,\n\t\tisFirstLoad,\n\t\tmessages,\n\t\toptions,\n\t\ttheme: settings?.theme ?? null,\n\t\t...cache\n\t};\n\n\treturn { success: true, config };\n}\n","import { ReturnAction } from \"../types\";\nimport { apiQuery } from \"./api\";\nimport { Locale } from \"./i18n\";\nimport { logger } from \"./logger\";\n\ntype FieldValues = {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t[key: string]: any;\n};\n\nexport interface ReturnDataState {\n\titems: Array<{\n\t\tid: string;\n\t\tlineItemId: string;\n\t\thasAvailableVariantsForSale?: boolean;\n\t\treasonId?: string;\n\t\taction?: ReturnAction;\n\t}>;\n\tnumOfLabels?: number;\n\tshippingProductId?: string;\n}\n\nexport interface CacheLineItem {\n\tid: string;\n\tvariantId: string;\n\tquantity: number;\n\taction?: ReturnAction;\n}\n\nexport interface CacheReturnItem {\n\tvariantId: number;\n\thandle: string;\n\tprice: number;\n\ttitle: string;\n\tvariantTitle: string;\n\timage: string;\n\tquantity: number;\n}\n\nexport interface SessionCachePayload {\n\tlastPath?: string;\n\tslug?: string;\n\tlocale?: Locale;\n\tcurrency?: string;\n\treturnData?: ReturnDataState;\n\tformData?: FieldValues;\n\treturnItems?: Array<CacheReturnItem>;\n}\n\nexport interface SessionCacheMetadata {\n\tcreatedAt: string; // ISO date string\n\tupdatedAt: string; // ISO date string\n\tttl: number; // Time to live in seconds\n}\n\nexport interface SessionCache {\n\tid: string;\n\tdata: SessionCachePayload;\n\tmetadata: SessionCacheMetadata;\n}\n\nexport async function updateSessionCache(\n\tinternalId: string,\n\tdata: SessionCachePayload\n) {\n\ttry {\n\t\tlogger.info(\"Setting session cache for internalId:\", internalId, data);\n\t\tconst response = await apiQuery<SessionCache>(\n\t\t\t`/shop-overlay/session/${internalId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PATCH\",\n\t\t\t\tbody: { data }\n\t\t\t}\n\t\t);\n\n\t\tlogger.info(\"Session cache set successfully:\", response);\n\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error setting session cache:\", error);\n\t\tthrow error;\n\t}\n}\n\nexport async function getSessionCache(\n\tinternalId?: string\n): Promise<SessionCache | null> {\n\tif (!internalId) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tconst response = await apiQuery<SessionCache | null>(\n\t\t\t`/shop-overlay/session/${internalId}`\n\t\t);\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error getting session cache:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function clearSessionCache(internalId: string) {\n\ttry {\n\t\tconst response = await apiQuery<null>(\n\t\t\t`/shop-overlay/session/${internalId}`,\n\t\t\t{\n\t\t\t\tmethod: \"DELETE\"\n\t\t\t}\n\t\t);\n\t\treturn response;\n\t} catch (error) {\n\t\tlogger.error(\"Error clearing session cache:\", error);\n\t\tthrow error;\n\t}\n}\n","import { logger } from \"../logger\";\n\ntype InjectFontReturn = Promise<\n\t[HTMLLinkElement, HTMLLinkElement, HTMLLinkElement]\n>;\n\n// Function responsible for injecting font styles into the document head\nexport function injectFont(): InjectFontReturn {\n\treturn new Promise((resolve, reject) => {\n\t\t// Preconnect to the font provider\n\t\tconst preconnect = createSafeLinkElement({\n\t\t\trel: \"preconnect\",\n\t\t\thref: \"https://fonts.googleapis.com\"\n\t\t});\n\n\t\t// Preconnect to the font provider (gstatic)\n\t\tconst preconnect2 = createSafeLinkElement({\n\t\t\trel: \"preconnect\",\n\t\t\thref: \"https://fonts.gstatic.com\",\n\t\t\tcrossOrigin: \"anonymous\"\n\t\t});\n\n\t\tconst fontLink = createSafeLinkElement({\n\t\t\trel: \"stylesheet\",\n\t\t\thref: \"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap\"\n\t\t});\n\n\t\tfontLink.onload = () => {\n\t\t\tlogger.info(\"Font stylesheet loaded successfully\");\n\t\t\tresolve([preconnect, preconnect2, fontLink]);\n\t\t};\n\t\tfontLink.onerror = () => {\n\t\t\tlogger.error(\"Failed to load font stylesheet\");\n\t\t\treject(new Error(\"Failed to load font stylesheet\"));\n\t\t};\n\n\t\tdocument.head.appendChild(fontLink);\n\t});\n}\n\n// Creates a link element only if a same link does not already exist in the document head\nfunction createSafeLinkElement<T extends Partial<HTMLLinkElement>>(\n\tattributes: T\n): HTMLLinkElement {\n\tconst selector = Object.entries(attributes)\n\t\t.filter(\n\t\t\t([_, value]) => typeof value === \"string\" || typeof value === \"number\"\n\t\t)\n\t\t.map(([key, value]) => `[${key}=\"${value}\"]`)\n\t\t.join(\"\");\n\n\tconst existing = document.querySelector<HTMLLinkElement>(`link${selector}`);\n\n\tif (existing) {\n\t\tlogger.warn(\n\t\t\t`Link element with attributes ${JSON.stringify(attributes)} already exists.`\n\t\t);\n\t\treturn existing;\n\t}\n\n\tconst link = document.createElement(\"link\");\n\tObject.assign(link, attributes);\n\tdocument.head.appendChild(link);\n\n\treturn link;\n}\n","import {\n\tCUSTOM_CSS_DATA_ATTR,\n\tresolveEnvVar,\n\tWIDGET_BASE_URL\n} from \"../../constants\";\nimport { logger } from \"../logger\";\n\n// Lightweight CSS validation without heavy parsing library\nexport function validateCSS(css: string): boolean {\n\t// Basic CSS validation - check for balanced braces and common patterns\n\tconst openBraces = (css.match(/{/g) || []).length;\n\tconst closeBraces = (css.match(/}/g) || []).length;\n\n\tif (openBraces !== closeBraces) {\n\t\treturn false;\n\t}\n\n\t// Check for dangerous patterns (script injection, etc.)\n\tconst dangerousPatterns = [\n\t\t/javascript:/gi,\n\t\t/expression\\s*\\(/gi,\n\t\t/behavior\\s*:/gi,\n\t\t/binding\\s*:/gi,\n\t\t/@import.*url\\s*\\(\\s*[\"']?javascript:/gi\n\t];\n\n\treturn !dangerousPatterns.some(pattern => pattern.test(css));\n}\n\nexport function injectCustomCSS(\n\tcss: string | undefined,\n\tcontainer: HTMLElement = document.head\n) {\n\tif (!css) return;\n\n\tif (!validateCSS(css)) {\n\t\tthrow new Error(\n\t\t\t\"Invalid CSS detected. Please check your CSS syntax and remove any dangerous patterns.\"\n\t\t);\n\t}\n\n\t// Create a style element and inject the custom CSS directly\n\tconst styleElement = document.createElement(\"style\");\n\tstyleElement.setAttribute(`data-${CUSTOM_CSS_DATA_ATTR}`, \"true\");\n\tstyleElement.textContent = css;\n\n\tlogger.info(\"Injecting custom CSS...\");\n\t// Append the style element to parent document body\n\tcontainer.appendChild(styleElement);\n\n\treturn styleElement;\n}\n\n// Function responsible for injecting the styles into the shadow DOM\nexport function injectStyle(shadowRoot: HTMLElement): HTMLLinkElement {\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\n\tconst fileName = resolveEnvVar(\"WIDGET_NAME\") || \"widget\";\n\tlink.href = `${WIDGET_BASE_URL}/${fileName}.css`;\n\n\tlink.onload = () => {\n\t\tlogger.info(\"Stylesheet loaded successfully\");\n\t};\n\n\tshadowRoot.appendChild(link);\n\n\treturn link;\n}\n\n// Function responsible for injecting public CSS variables into the document head\nexport function injectPublicVariables(): HTMLLinkElement {\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\n\tlink.href = `${WIDGET_BASE_URL}/variables.css`;\n\n\tlink.onload = () => {\n\t\tlogger.info(\"Public CSS variables loaded successfully\");\n\t};\n\n\tlink.onerror = () => {\n\t\tlogger.warn(\"Failed to load public CSS variables\");\n\t};\n\n\tdocument.head.appendChild(link);\n\n\treturn link;\n}\n","import { ComponentChild, render } from \"preact\";\nimport { CONTAINER_ELEMENT_ID, SHADOW_ROOT_ELEMENT_ID } from \"../../constants\";\nimport customEvents, { InternalCustomEvent } from \"../custom-events\";\nimport { logger } from \"../logger\";\nimport { prepareInitializationOptions } from \"./dataset\";\nimport { injectFont } from \"./font\";\nimport { injectCustomCSS, injectPublicVariables, injectStyle } from \"./styles\";\nimport { InitOptions, InitResult, WidgetConfiguration } from \"./types\";\n\ntype ContainerElement = HTMLDivElement;\ntype ShadowRootElement = HTMLDivElement;\ntype ShadowRootResult =\n\t| { success: true; value: [ContainerElement, ShadowRootElement] }\n\t| { success: false; reason: \"CONTAINER_EXISTS\"; message: string };\n\nfunction createShadowRoot(): ShadowRootResult {\n\tconst existingContainer = document.getElementById(CONTAINER_ELEMENT_ID);\n\n\tif (existingContainer) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\treason: \"CONTAINER_EXISTS\",\n\t\t\tmessage: `Container with ID \"${CONTAINER_ELEMENT_ID}\" already exists`\n\t\t};\n\t}\n\n\tconst container = document.createElement(\"div\");\n\tcontainer.id = CONTAINER_ELEMENT_ID;\n\tcontainer.style.display = \"block\";\n\n\tconst shadow = container.attachShadow({ mode: \"closed\" });\n\tconst shadowRoot = document.createElement(\"div\");\n\n\tshadowRoot.className = \"rf-container\";\n\tshadowRoot.id = SHADOW_ROOT_ELEMENT_ID;\n\tshadowRoot.style.display = \"none\";\n\n\tshadow.appendChild(shadowRoot);\n\n\treturn { success: true, value: [container, shadowRoot] };\n}\n\ntype RenderNode = (config: WidgetConfiguration) => ComponentChild;\n\nfunction injectWidget(\n\trenderNode: RenderNode,\n\tshadowRoot: HTMLElement,\n\tconfig: WidgetConfiguration\n) {\n\tlogger.info(\"Injecting widget with options...\", config);\n\trender(renderNode(config), shadowRoot);\n}\n\nasync function initialize(\n\trenderNode: RenderNode,\n\toptions: DOMStringMap | InitOptions\n): Promise<InitResult> {\n\ttry {\n\t\tconst result = await prepareInitializationOptions(options);\n\n\t\tif (!result.success) {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst containerResult = createShadowRoot();\n\t\tif (!containerResult.success) {\n\t\t\treturn containerResult;\n\t\t}\n\n\t\tconst [container, shadowRoot] = containerResult.value;\n\n\t\tconst { config } = result;\n\t\tconst {\n\t\t\toptions: { customCssOverlay, customCssPage }\n\t\t} = config;\n\n\t\tinjectStyle(shadowRoot);\n\t\tinjectPublicVariables();\n\t\tinjectFont();\n\t\tinjectCustomCSS(customCssPage);\n\t\tinjectCustomCSS(customCssOverlay, shadowRoot);\n\t\tinjectWidget(renderNode, shadowRoot, config);\n\n\t\tdocument.body.appendChild(container);\n\t\tcustomEvents.publish(InternalCustomEvent.WidgetInitialization, config);\n\n\t\treturn { success: true, config };\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tlogger.error(\"Initialization failed\", err);\n\t\treturn { success: false, reason: \"UNKNOWN_ERROR\", message };\n\t}\n}\n\nexport type { InitResult };\nexport default initialize;\n","export function memoize(fn, options) {\n\tconst cache = options && options.cache ? options.cache : cacheDefault;\n\tconst serializer = options && options.serializer ? options.serializer : serializerDefault;\n\tconst strategy = options && options.strategy ? options.strategy : strategyDefault;\n\treturn strategy(fn, {\n\t\tcache,\n\t\tserializer\n\t});\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n\treturn value == null || typeof value === \"number\" || typeof value === \"boolean\";\n}\nfunction monadic(fn, cache, serializer, arg) {\n\tconst cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n\tlet computedValue = cache.get(cacheKey);\n\tif (typeof computedValue === \"undefined\") {\n\t\tcomputedValue = fn.call(this, arg);\n\t\tcache.set(cacheKey, computedValue);\n\t}\n\treturn computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n\tconst args = Array.prototype.slice.call(arguments, 3);\n\tconst cacheKey = serializer(args);\n\tlet computedValue = cache.get(cacheKey);\n\tif (typeof computedValue === \"undefined\") {\n\t\tcomputedValue = fn.apply(this, args);\n\t\tcache.set(cacheKey, computedValue);\n\t}\n\treturn computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n\treturn strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n\tconst strategy = fn.length === 1 ? monadic : variadic;\n\treturn assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n\treturn assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n\treturn assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nconst serializerDefault = function() {\n\treturn JSON.stringify(arguments);\n};\n//\n// Cache\n//\nclass ObjectWithoutPrototypeCache {\n\tcache;\n\tconstructor() {\n\t\tthis.cache = Object.create(null);\n\t}\n\tget(key) {\n\t\treturn this.cache[key];\n\t}\n\tset(key, value) {\n\t\tthis.cache[key] = value;\n\t}\n}\nconst cacheDefault = { create: function create() {\n\treturn new ObjectWithoutPrototypeCache();\n} };\nexport const strategies = {\n\tvariadic: strategyVariadic,\n\tmonadic: strategyMonadic\n};\n","import{memoize as e,strategies as t}from\"@formatjs/fast-memoize\";class a extends Error{constructor(e,t){let a=e;t&&(a+=\": \"+t),super(a),this.code=e,t&&(this.originalMessage=t)}}var r=function(e){return e.MISSING_MESSAGE=\"MISSING_MESSAGE\",e.MISSING_FORMAT=\"MISSING_FORMAT\",e.ENVIRONMENT_FALLBACK=\"ENVIRONMENT_FALLBACK\",e.INSUFFICIENT_PATH=\"INSUFFICIENT_PATH\",e.INVALID_MESSAGE=\"INVALID_MESSAGE\",e.INVALID_KEY=\"INVALID_KEY\",e.FORMATTING_ERROR=\"FORMATTING_ERROR\",e}(r||{});function s(){return{dateTime:{},number:{},message:{},relativeTime:{},pluralRules:{},list:{},displayNames:{}}}function i(a,r){return e(a,{cache:(s=r,{create:()=>({get:e=>s[e],set(e,t){s[e]=t}})}),strategy:t.variadic});var s}function I(e,t){return i(((...t)=>new e(...t)),t)}function l(e){return{getDateTimeFormat:I(Intl.DateTimeFormat,e.dateTime),getNumberFormat:I(Intl.NumberFormat,e.number),getPluralRules:I(Intl.PluralRules,e.pluralRules),getRelativeTimeFormat:I(Intl.RelativeTimeFormat,e.relativeTime),getListFormat:I(Intl.ListFormat,e.list),getDisplayNames:I(Intl.DisplayNames,e.displayNames)}}export{a as I,r as a,s as b,l as c,i as m};\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function p(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function d(n){return o=1,h(D,n)}function h(n,u,i){var o=p(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.__f)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.some(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.__f=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=p(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__H.__h.push(i))}function _(n,u){var i=p(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.u=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){if(\"function\"==typeof n){var r=n(t());return function(){n(null),r&&\"function\"==typeof r&&r()}}if(n)return n.current=t(),function(){return n.current=null}},null==r?r:r.concat(n))}function T(n,r){var u=p(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=p(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=p(t++,10),i=d();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=p(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();){var t=n.__H;if(n.__P&&t)try{t.__h.some(z),t.__h.some(B),t.__h=[]}catch(r){t.__h=[],c.__e(r,n.__v)}}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(i.__h.some(z),i.__h.some(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.some(function(n){n.u&&(n.__H=n.u),n.u=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.some(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.some(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,35);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,h as useReducer,A as useRef,d as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as m,useId as p,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,R(u)&&o({t:u})},[n,e,t]),h(function(){return R(u)&&o({t:u}),n(function(){R(u)&&o({t:u})})},[n]),e}function R(n){try{return!((t=n.__)===(e=n.u())&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}var t,e}function x(n){n()}function w(n){return n}function k(){return[!1,x]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u.type=n,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=n,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},U=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);U(n,t,e,r)};var F=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c.__e=!0,n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){if(!n.__)return null;var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u,o=null;function i(i){if(e||(e=n()).then(function(n){n&&(o=n.default||n),u=!0},function(n){r=n,u=!0}),r)throw r;if(!u)throw e;return o?t(o,i):null}return i.displayName=\"Lazy\",i.__f=!0,i}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),F&&F(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||r.__z||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var l=e.__P;e.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=l,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;if(e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),!e.v){for(var u=e.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],__k:{__m:u.__m},contains:function(){return!0},namespaceURI:r.namespaceURI,insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}}o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var ln,cn={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var l=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==l||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var c=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===l?l=\"\":\"translate\"===c&&\"no\"===l?l=!1:\"o\"===c[0]&&\"n\"===c[1]?\"ondoubleclick\"===c?i=\"ondblclick\":\"onchange\"!==c||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===c?i=\"onfocusin\":\"onblur\"===c?i=\"onfocusout\":J.test(i)&&(i=c):c=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===l&&(l=void 0),\"oninput\"===c&&u[i=c]&&(i=\"oninputCapture\"),u[i]=l}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",cn)):t.className&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),ln=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),ln=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return ln.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:m,useDeferredValue:w,useEffect:h,useId:p,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function mn(n){return!!n&&n.$$typeof===q}function pn(n){return mn(n)&&n.type===u}function yn(n){return!!n&&\"string\"==typeof n.displayName&&n.displayName.startsWith(\"Memo(\")}function _n(n){return mn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,Rn=mn,xn={useState:a,useId:p,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:x,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:m,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:l,createFactory:dn,cloneElement:_n,createRef:c,Fragment:u,isValidElement:mn,isElement:Rn,isFragment:pn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,xn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,Rn as isElement,pn as isFragment,yn as isMemo,mn as isValidElement,z as lazy,M as memo,nn as render,x as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","/**\n* https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n* Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n* with some tweaks\n*/\nconst DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n* Parse Date time skeleton into Intl.DateTimeFormatOptions\n* Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n* @public\n* @param skeleton skeleton string\n*/\nexport function parseDateTimeSkeleton(skeleton) {\n\tconst result = {};\n\tskeleton.replace(DATE_TIME_REGEX, (match) => {\n\t\tconst len = match.length;\n\t\tswitch (match[0]) {\n\t\t\tcase \"G\":\n\t\t\t\tresult.era = len === 4 ? \"long\" : len === 5 ? \"narrow\" : \"short\";\n\t\t\t\tbreak;\n\t\t\tcase \"y\":\n\t\t\t\tresult.year = len === 2 ? \"2-digit\" : \"numeric\";\n\t\t\t\tbreak;\n\t\t\tcase \"Y\":\n\t\t\tcase \"u\":\n\t\t\tcase \"U\":\n\t\t\tcase \"r\": throw new RangeError(\"`Y/u/U/r` (year) patterns are not supported, use `y` instead\");\n\t\t\tcase \"q\":\n\t\t\tcase \"Q\": throw new RangeError(\"`q/Q` (quarter) patterns are not supported\");\n\t\t\tcase \"M\":\n\t\t\tcase \"L\":\n\t\t\t\tresult.month = [\n\t\t\t\t\t\"numeric\",\n\t\t\t\t\t\"2-digit\",\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\"\n\t\t\t\t][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"w\":\n\t\t\tcase \"W\": throw new RangeError(\"`w/W` (week) patterns are not supported\");\n\t\t\tcase \"d\":\n\t\t\t\tresult.day = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"D\":\n\t\t\tcase \"F\":\n\t\t\tcase \"g\": throw new RangeError(\"`D/F/g` (day) patterns are not supported, use `d` instead\");\n\t\t\tcase \"E\":\n\t\t\t\tresult.weekday = len === 4 ? \"long\" : len === 5 ? \"narrow\" : \"short\";\n\t\t\t\tbreak;\n\t\t\tcase \"e\":\n\t\t\t\tif (len < 4) {\n\t\t\t\t\tthrow new RangeError(\"`e..eee` (weekday) patterns are not supported\");\n\t\t\t\t}\n\t\t\t\tresult.weekday = [\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\",\n\t\t\t\t\t\"short\"\n\t\t\t\t][len - 4];\n\t\t\t\tbreak;\n\t\t\tcase \"c\":\n\t\t\t\tif (len < 4) {\n\t\t\t\t\tthrow new RangeError(\"`c..ccc` (weekday) patterns are not supported\");\n\t\t\t\t}\n\t\t\t\tresult.weekday = [\n\t\t\t\t\t\"short\",\n\t\t\t\t\t\"long\",\n\t\t\t\t\t\"narrow\",\n\t\t\t\t\t\"short\"\n\t\t\t\t][len - 4];\n\t\t\t\tbreak;\n\t\t\tcase \"a\":\n\t\t\t\tresult.hour12 = true;\n\t\t\t\tbreak;\n\t\t\tcase \"b\":\n\t\t\tcase \"B\": throw new RangeError(\"`b/B` (period) patterns are not supported, use `a` instead\");\n\t\t\tcase \"h\":\n\t\t\t\tresult.hourCycle = \"h12\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"H\":\n\t\t\t\tresult.hourCycle = \"h23\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"K\":\n\t\t\t\tresult.hourCycle = \"h11\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"k\":\n\t\t\t\tresult.hourCycle = \"h24\";\n\t\t\t\tresult.hour = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"j\":\n\t\t\tcase \"J\":\n\t\t\tcase \"C\": throw new RangeError(\"`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead\");\n\t\t\tcase \"m\":\n\t\t\t\tresult.minute = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"s\":\n\t\t\t\tresult.second = [\"numeric\", \"2-digit\"][len - 1];\n\t\t\t\tbreak;\n\t\t\tcase \"S\":\n\t\t\tcase \"A\": throw new RangeError(\"`S/A` (second) patterns are not supported, use `s` instead\");\n\t\t\tcase \"z\":\n\t\t\t\tresult.timeZoneName = len < 4 ? \"short\" : \"long\";\n\t\t\t\tbreak;\n\t\t\tcase \"Z\":\n\t\t\tcase \"O\":\n\t\t\tcase \"v\":\n\t\t\tcase \"V\":\n\t\t\tcase \"X\":\n\t\t\tcase \"x\": throw new RangeError(\"`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead\");\n\t\t}\n\t\treturn \"\";\n\t});\n\treturn result;\n}\n","// @generated from regex-gen.ts\nexport const WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { WHITE_SPACE_REGEX } from \"./regex.generated.js\";\nexport function parseNumberSkeletonFromString(skeleton) {\n\tif (skeleton.length === 0) {\n\t\tthrow new Error(\"Number skeleton cannot be empty\");\n\t}\n\t// Parse the skeleton\n\tconst stringTokens = skeleton.split(WHITE_SPACE_REGEX).filter((x) => x.length > 0);\n\tconst tokens = [];\n\tfor (const stringToken of stringTokens) {\n\t\tlet stemAndOptions = stringToken.split(\"/\");\n\t\tif (stemAndOptions.length === 0) {\n\t\t\tthrow new Error(\"Invalid number skeleton\");\n\t\t}\n\t\tconst [stem, ...options] = stemAndOptions;\n\t\tfor (const option of options) {\n\t\t\tif (option.length === 0) {\n\t\t\t\tthrow new Error(\"Invalid number skeleton\");\n\t\t\t}\n\t\t}\n\t\ttokens.push({\n\t\t\tstem,\n\t\t\toptions\n\t\t});\n\t}\n\treturn tokens;\n}\nfunction icuUnitToEcma(unit) {\n\treturn unit.replace(/^(.*?)-/, \"\");\n}\nconst FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nconst SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nconst INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nconst CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n\tconst result = {};\n\tif (str[str.length - 1] === \"r\") {\n\t\tresult.roundingPriority = \"morePrecision\";\n\t} else if (str[str.length - 1] === \"s\") {\n\t\tresult.roundingPriority = \"lessPrecision\";\n\t}\n\tstr.replace(SIGNIFICANT_PRECISION_REGEX, function(_, g1, g2) {\n\t\t// @@@ case\n\t\tif (typeof g2 !== \"string\") {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t\tresult.maximumSignificantDigits = g1.length;\n\t\t} else if (g2 === \"+\") {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t} else if (g1[0] === \"#\") {\n\t\t\tresult.maximumSignificantDigits = g1.length;\n\t\t} else {\n\t\t\tresult.minimumSignificantDigits = g1.length;\n\t\t\tresult.maximumSignificantDigits = g1.length + (typeof g2 === \"string\" ? g2.length : 0);\n\t\t}\n\t\treturn \"\";\n\t});\n\treturn result;\n}\nfunction parseSign(str) {\n\tswitch (str) {\n\t\tcase \"sign-auto\": return { signDisplay: \"auto\" };\n\t\tcase \"sign-accounting\":\n\t\tcase \"()\": return { currencySign: \"accounting\" };\n\t\tcase \"sign-always\":\n\t\tcase \"+!\": return { signDisplay: \"always\" };\n\t\tcase \"sign-accounting-always\":\n\t\tcase \"()!\": return {\n\t\t\tsignDisplay: \"always\",\n\t\t\tcurrencySign: \"accounting\"\n\t\t};\n\t\tcase \"sign-except-zero\":\n\t\tcase \"+?\": return { signDisplay: \"exceptZero\" };\n\t\tcase \"sign-accounting-except-zero\":\n\t\tcase \"()?\": return {\n\t\t\tsignDisplay: \"exceptZero\",\n\t\t\tcurrencySign: \"accounting\"\n\t\t};\n\t\tcase \"sign-never\":\n\t\tcase \"+_\": return { signDisplay: \"never\" };\n\t}\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n\t// Engineering\n\tlet result;\n\tif (stem[0] === \"E\" && stem[1] === \"E\") {\n\t\tresult = { notation: \"engineering\" };\n\t\tstem = stem.slice(2);\n\t} else if (stem[0] === \"E\") {\n\t\tresult = { notation: \"scientific\" };\n\t\tstem = stem.slice(1);\n\t}\n\tif (result) {\n\t\tconst signDisplay = stem.slice(0, 2);\n\t\tif (signDisplay === \"+!\") {\n\t\t\tresult.signDisplay = \"always\";\n\t\t\tstem = stem.slice(2);\n\t\t} else if (signDisplay === \"+?\") {\n\t\t\tresult.signDisplay = \"exceptZero\";\n\t\t\tstem = stem.slice(2);\n\t\t}\n\t\tif (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n\t\t\tthrow new Error(\"Malformed concise eng/scientific notation\");\n\t\t}\n\t\tresult.minimumIntegerDigits = stem.length;\n\t}\n\treturn result;\n}\nfunction parseNotationOptions(opt) {\n\tconst result = {};\n\tconst signOpts = parseSign(opt);\n\tif (signOpts) {\n\t\treturn signOpts;\n\t}\n\treturn result;\n}\n/**\n* https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n*/\nexport function parseNumberSkeleton(tokens) {\n\tlet result = {};\n\tfor (const token of tokens) {\n\t\tswitch (token.stem) {\n\t\t\tcase \"percent\":\n\t\t\tcase \"%\":\n\t\t\t\tresult.style = \"percent\";\n\t\t\t\tcontinue;\n\t\t\tcase \"%x100\":\n\t\t\t\tresult.style = \"percent\";\n\t\t\t\tresult.scale = 100;\n\t\t\t\tcontinue;\n\t\t\tcase \"currency\":\n\t\t\t\tresult.style = \"currency\";\n\t\t\t\tresult.currency = token.options[0];\n\t\t\t\tcontinue;\n\t\t\tcase \"group-off\":\n\t\t\tcase \",_\":\n\t\t\t\tresult.useGrouping = false;\n\t\t\t\tcontinue;\n\t\t\tcase \"precision-integer\":\n\t\t\tcase \".\":\n\t\t\t\tresult.maximumFractionDigits = 0;\n\t\t\t\tcontinue;\n\t\t\tcase \"measure-unit\":\n\t\t\tcase \"unit\":\n\t\t\t\tresult.style = \"unit\";\n\t\t\t\tresult.unit = icuUnitToEcma(token.options[0]);\n\t\t\t\tcontinue;\n\t\t\tcase \"compact-short\":\n\t\t\tcase \"K\":\n\t\t\t\tresult.notation = \"compact\";\n\t\t\t\tresult.compactDisplay = \"short\";\n\t\t\t\tcontinue;\n\t\t\tcase \"compact-long\":\n\t\t\tcase \"KK\":\n\t\t\t\tresult.notation = \"compact\";\n\t\t\t\tresult.compactDisplay = \"long\";\n\t\t\t\tcontinue;\n\t\t\tcase \"scientific\":\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\tnotation: \"scientific\",\n\t\t\t\t\t...token.options.reduce((all, opt) => ({\n\t\t\t\t\t\t...all,\n\t\t\t\t\t\t...parseNotationOptions(opt)\n\t\t\t\t\t}), {})\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\tcase \"engineering\":\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\tnotation: \"engineering\",\n\t\t\t\t\t...token.options.reduce((all, opt) => ({\n\t\t\t\t\t\t...all,\n\t\t\t\t\t\t...parseNotationOptions(opt)\n\t\t\t\t\t}), {})\n\t\t\t\t};\n\t\t\t\tcontinue;\n\t\t\tcase \"notation-simple\":\n\t\t\t\tresult.notation = \"standard\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-narrow\":\n\t\t\t\tresult.currencyDisplay = \"narrowSymbol\";\n\t\t\t\tresult.unitDisplay = \"narrow\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-short\":\n\t\t\t\tresult.currencyDisplay = \"code\";\n\t\t\t\tresult.unitDisplay = \"short\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-full-name\":\n\t\t\t\tresult.currencyDisplay = \"name\";\n\t\t\t\tresult.unitDisplay = \"long\";\n\t\t\t\tcontinue;\n\t\t\tcase \"unit-width-iso-code\":\n\t\t\t\tresult.currencyDisplay = \"symbol\";\n\t\t\t\tcontinue;\n\t\t\tcase \"scale\":\n\t\t\t\tresult.scale = parseFloat(token.options[0]);\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-floor\":\n\t\t\t\tresult.roundingMode = \"floor\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-ceiling\":\n\t\t\t\tresult.roundingMode = \"ceil\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-down\":\n\t\t\t\tresult.roundingMode = \"trunc\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-up\":\n\t\t\t\tresult.roundingMode = \"expand\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-even\":\n\t\t\t\tresult.roundingMode = \"halfEven\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-down\":\n\t\t\t\tresult.roundingMode = \"halfTrunc\";\n\t\t\t\tcontinue;\n\t\t\tcase \"rounding-mode-half-up\":\n\t\t\t\tresult.roundingMode = \"halfExpand\";\n\t\t\t\tcontinue;\n\t\t\tcase \"integer-width\":\n\t\t\t\tif (token.options.length > 1) {\n\t\t\t\t\tthrow new RangeError(\"integer-width stems only accept a single optional option\");\n\t\t\t\t}\n\t\t\t\ttoken.options[0].replace(INTEGER_WIDTH_REGEX, function(_, g1, g2, g3, g4, g5) {\n\t\t\t\t\tif (g1) {\n\t\t\t\t\t\tresult.minimumIntegerDigits = g2.length;\n\t\t\t\t\t} else if (g3 && g4) {\n\t\t\t\t\t\tthrow new Error(\"We currently do not support maximum integer digits\");\n\t\t\t\t\t} else if (g5) {\n\t\t\t\t\t\tthrow new Error(\"We currently do not support exact integer digits\");\n\t\t\t\t\t}\n\t\t\t\t\treturn \"\";\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t}\n\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n\t\tif (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n\t\t\tresult.minimumIntegerDigits = token.stem.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (FRACTION_PRECISION_REGEX.test(token.stem)) {\n\t\t\t// Precision\n\t\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n\t\t\t// precision-integer case\n\t\t\tif (token.options.length > 1) {\n\t\t\t\tthrow new RangeError(\"Fraction-precision stems only accept a single optional option\");\n\t\t\t}\n\t\t\ttoken.stem.replace(FRACTION_PRECISION_REGEX, function(_, g1, g2, g3, g4, g5) {\n\t\t\t\t// .000* case (before ICU67 it was .000+)\n\t\t\t\tif (g2 === \"*\") {\n\t\t\t\t\tresult.minimumFractionDigits = g1.length;\n\t\t\t\t} else if (g3 && g3[0] === \"#\") {\n\t\t\t\t\tresult.maximumFractionDigits = g3.length;\n\t\t\t\t} else if (g4 && g5) {\n\t\t\t\t\tresult.minimumFractionDigits = g4.length;\n\t\t\t\t\tresult.maximumFractionDigits = g4.length + g5.length;\n\t\t\t\t} else {\n\t\t\t\t\tresult.minimumFractionDigits = g1.length;\n\t\t\t\t\tresult.maximumFractionDigits = g1.length;\n\t\t\t\t}\n\t\t\t\treturn \"\";\n\t\t\t});\n\t\t\tconst opt = token.options[0];\n\t\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n\t\t\tif (opt === \"w\") {\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\ttrailingZeroDisplay: \"stripIfInteger\"\n\t\t\t\t};\n\t\t\t} else if (opt) {\n\t\t\t\tresult = {\n\t\t\t\t\t...result,\n\t\t\t\t\t...parseSignificantPrecision(opt)\n\t\t\t\t};\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\t// https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n\t\tif (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...parseSignificantPrecision(token.stem)\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\t\tconst signOpts = parseSign(token.stem);\n\t\tif (signOpts) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...signOpts\n\t\t\t};\n\t\t}\n\t\tconst conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n\t\tif (conciseScientificAndEngineeringOpts) {\n\t\t\tresult = {\n\t\t\t\t...result,\n\t\t\t\t...conciseScientificAndEngineeringOpts\n\t\t\t};\n\t\t}\n\t}\n\treturn result;\n}\n","import \"@formatjs/icu-skeleton-parser\";\nexport let TYPE = /* @__PURE__ */ function(TYPE) {\n\t/**\n\t* Raw text\n\t*/\n\tTYPE[TYPE[\"literal\"] = 0] = \"literal\";\n\t/**\n\t* Variable w/o any format, e.g `var` in `this is a {var}`\n\t*/\n\tTYPE[TYPE[\"argument\"] = 1] = \"argument\";\n\t/**\n\t* Variable w/ number format\n\t*/\n\tTYPE[TYPE[\"number\"] = 2] = \"number\";\n\t/**\n\t* Variable w/ date format\n\t*/\n\tTYPE[TYPE[\"date\"] = 3] = \"date\";\n\t/**\n\t* Variable w/ time format\n\t*/\n\tTYPE[TYPE[\"time\"] = 4] = \"time\";\n\t/**\n\t* Variable w/ select format\n\t*/\n\tTYPE[TYPE[\"select\"] = 5] = \"select\";\n\t/**\n\t* Variable w/ plural format\n\t*/\n\tTYPE[TYPE[\"plural\"] = 6] = \"plural\";\n\t/**\n\t* Only possible within plural argument.\n\t* This is the `#` symbol that will be substituted with the count.\n\t*/\n\tTYPE[TYPE[\"pound\"] = 7] = \"pound\";\n\t/**\n\t* XML-like tag\n\t*/\n\tTYPE[TYPE[\"tag\"] = 8] = \"tag\";\n\treturn TYPE;\n}({});\nexport let SKELETON_TYPE = /* @__PURE__ */ function(SKELETON_TYPE) {\n\tSKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n\tSKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n\treturn SKELETON_TYPE;\n}({});\n/**\n* Type Guards\n*/\nexport function isLiteralElement(el) {\n\treturn el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n\treturn el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n\treturn el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n\treturn el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n\treturn el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n\treturn el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n\treturn el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n\treturn el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n\treturn el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n\treturn !!(el && typeof el === \"object\" && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n\treturn !!(el && typeof el === \"object\" && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n\treturn {\n\t\ttype: TYPE.literal,\n\t\tvalue\n\t};\n}\nexport function createNumberElement(value, style) {\n\treturn {\n\t\ttype: TYPE.number,\n\t\tvalue,\n\t\tstyle\n\t};\n}\n","import \"./types.js\";\nexport let ErrorKind = /* @__PURE__ */ function(ErrorKind) {\n\t/** Argument is unclosed (e.g. `{0`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n\t/** Argument is empty (e.g. `{}`). */\n\tErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n\t/** Argument is malformed (e.g. `{foo!}``) */\n\tErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n\t/** Expect an argument type (e.g. `{foo,}`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n\t/** Unsupported argument type (e.g. `{foo,foo}`) */\n\tErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n\t/** Expect an argument style (e.g. `{foo, number, }`) */\n\tErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n\t/** The number skeleton is invalid. */\n\tErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n\t/** The date time skeleton is invalid. */\n\tErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n\t/** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n\tErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n\t/** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n\tErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n\t/** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n\tErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n\t/** Missing select argument options (e.g. `{foo, select}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n\t/** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n\t/** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n\tErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n\t/** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n\t/** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n\t/** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n\tErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n\t/**\n\t* Expecting a message fragment after the `plural` or `selectordinal` selector\n\t* (e.g. `{foo, plural, one}`)\n\t*/\n\tErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n\t/** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n\tErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n\t/**\n\t* Duplicate selectors in `plural` or `selectordinal` argument.\n\t* (e.g. {foo, plural, one {#} one {#}})\n\t*/\n\tErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n\t/** Duplicate selectors in `select` argument.\n\t* (e.g. {foo, select, apple {apple} apple {apple}})\n\t*/\n\tErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n\t/** Plural or select argument option must have `other` clause. */\n\tErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n\t/** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n\tErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n\t/** The tag name is invalid. (e.g. `<123>foo</123>`) */\n\tErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n\t/** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n\tErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n\t/** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n\tErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n\treturn ErrorKind;\n}({});\n","// @generated from regex-gen.ts\nexport const SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport const WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","// @generated from time-data-gen.ts\n// prettier-ignore\nexport const timeData = {\n\t\"001\": [\"H\", \"h\"],\n\t\"419\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"AC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"AD\": [\"H\", \"hB\"],\n\t\"AE\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"AF\": [\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"AG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AI\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"AL\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AM\": [\"H\", \"hB\"],\n\t\"AO\": [\"H\", \"hB\"],\n\t\"AR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"AS\": [\"h\", \"H\"],\n\t\"AT\": [\"H\", \"hB\"],\n\t\"AU\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"AW\": [\"H\", \"hB\"],\n\t\"AX\": [\"H\"],\n\t\"AZ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BB\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BD\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"H\"\n\t],\n\t\"BE\": [\"H\", \"hB\"],\n\t\"BF\": [\"H\", \"hB\"],\n\t\"BG\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"BH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"BI\": [\"H\", \"h\"],\n\t\"BJ\": [\"H\", \"hB\"],\n\t\"BL\": [\"H\", \"hB\"],\n\t\"BM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BN\": [\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"BO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"BQ\": [\"H\"],\n\t\"BR\": [\"H\", \"hB\"],\n\t\"BS\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"BT\": [\"h\", \"H\"],\n\t\"BW\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"BY\": [\"H\", \"h\"],\n\t\"BZ\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CA\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"CC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CD\": [\"hB\", \"H\"],\n\t\"CF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"CG\": [\"H\", \"hB\"],\n\t\"CH\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"CI\": [\"H\", \"hB\"],\n\t\"CK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CL\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"CN\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"CO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CP\": [\"H\"],\n\t\"CR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CU\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"CV\": [\"H\", \"hB\"],\n\t\"CW\": [\"H\", \"hB\"],\n\t\"CX\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"CZ\": [\"H\"],\n\t\"DE\": [\"H\", \"hB\"],\n\t\"DG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"DJ\": [\"h\", \"H\"],\n\t\"DK\": [\"H\"],\n\t\"DM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"DO\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"DZ\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"EA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"EC\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"EE\": [\"H\", \"hB\"],\n\t\"EG\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"EH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"ER\": [\"h\", \"H\"],\n\t\"ES\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\"\n\t],\n\t\"ET\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"FI\": [\"H\"],\n\t\"FJ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"FK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"FM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"FO\": [\"H\", \"h\"],\n\t\"FR\": [\"H\", \"hB\"],\n\t\"GA\": [\"H\", \"hB\"],\n\t\"GB\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GD\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GE\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"GF\": [\"H\", \"hB\"],\n\t\"GG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GH\": [\"h\", \"H\"],\n\t\"GI\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GL\": [\"H\", \"h\"],\n\t\"GM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GN\": [\"H\", \"hB\"],\n\t\"GP\": [\"H\", \"hB\"],\n\t\"GQ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\"\n\t],\n\t\"GR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GS\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"GT\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"GU\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"GW\": [\"H\", \"hB\"],\n\t\"GY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"HK\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"HN\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"HR\": [\"H\", \"hB\"],\n\t\"HU\": [\"H\", \"h\"],\n\t\"IC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"ID\": [\"H\"],\n\t\"IE\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IL\": [\"H\", \"hB\"],\n\t\"IM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IN\": [\"h\", \"H\"],\n\t\"IO\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"IQ\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"IR\": [\"hB\", \"H\"],\n\t\"IS\": [\"H\"],\n\t\"IT\": [\"H\", \"hB\"],\n\t\"JE\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"JM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"JO\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"JP\": [\n\t\t\"H\",\n\t\t\"K\",\n\t\t\"h\"\n\t],\n\t\"KE\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"KG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KH\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hb\"\n\t],\n\t\"KI\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KN\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KP\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"KW\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"KY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"KZ\": [\"H\", \"hB\"],\n\t\"LA\": [\n\t\t\"H\",\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"LB\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"LC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"LI\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"LK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"LR\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"LS\": [\"h\", \"H\"],\n\t\"LT\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"LU\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"LV\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"LY\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"MC\": [\"H\", \"hB\"],\n\t\"MD\": [\"H\", \"hB\"],\n\t\"ME\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"MF\": [\"H\", \"hB\"],\n\t\"MG\": [\"H\", \"h\"],\n\t\"MH\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MK\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"ML\": [\"H\"],\n\t\"MM\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"MN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"MO\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MP\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MQ\": [\"H\", \"hB\"],\n\t\"MR\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"MS\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"MT\": [\"H\", \"h\"],\n\t\"MU\": [\"H\", \"h\"],\n\t\"MV\": [\"H\", \"h\"],\n\t\"MW\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"MX\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"MY\": [\n\t\t\"hb\",\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"MZ\": [\"H\", \"hB\"],\n\t\"NA\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"NC\": [\"H\", \"hB\"],\n\t\"NE\": [\"H\"],\n\t\"NF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NG\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NI\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"NL\": [\"H\", \"hB\"],\n\t\"NO\": [\"H\", \"h\"],\n\t\"NP\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"NR\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NU\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"NZ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"OM\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PA\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PE\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"PG\": [\"h\", \"H\"],\n\t\"PH\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PK\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"H\"\n\t],\n\t\"PL\": [\"H\", \"h\"],\n\t\"PM\": [\"H\", \"hB\"],\n\t\"PN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"PR\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"PS\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"PT\": [\"H\", \"hB\"],\n\t\"PW\": [\"h\", \"H\"],\n\t\"PY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"QA\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"RE\": [\"H\", \"hB\"],\n\t\"RO\": [\"H\", \"hB\"],\n\t\"RS\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"RU\": [\"H\"],\n\t\"RW\": [\"H\", \"h\"],\n\t\"SA\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SB\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SC\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SD\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SE\": [\"H\"],\n\t\"SG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SH\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"SI\": [\"H\", \"hB\"],\n\t\"SJ\": [\"H\"],\n\t\"SK\": [\"H\"],\n\t\"SL\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"SM\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SN\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"SO\": [\"h\", \"H\"],\n\t\"SR\": [\"H\", \"hB\"],\n\t\"SS\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"ST\": [\"H\", \"hB\"],\n\t\"SV\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"SX\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"SY\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"SZ\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"TC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TD\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TF\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"TG\": [\"H\", \"hB\"],\n\t\"TH\": [\"H\", \"h\"],\n\t\"TJ\": [\"H\", \"h\"],\n\t\"TL\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t],\n\t\"TM\": [\"H\", \"h\"],\n\t\"TN\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"TO\": [\"h\", \"H\"],\n\t\"TR\": [\"H\", \"hB\"],\n\t\"TT\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"TW\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"TZ\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"UA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"UG\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"h\"\n\t],\n\t\"UM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"US\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"UY\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"UZ\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"VA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"VC\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VE\": [\n\t\t\"h\",\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"VG\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VI\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"VN\": [\"H\", \"h\"],\n\t\"VU\": [\"h\", \"H\"],\n\t\"WF\": [\"H\", \"hB\"],\n\t\"WS\": [\"h\", \"H\"],\n\t\"XK\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"h\"\n\t],\n\t\"YE\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"YT\": [\"H\", \"hB\"],\n\t\"ZA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"ZM\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"ZW\": [\"H\", \"h\"],\n\t\"af-ZA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"ar-001\": [\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"ca-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"en-001\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"en-HK\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"en-IL\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"hB\"\n\t],\n\t\"en-MY\": [\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\",\n\t\t\"hB\"\n\t],\n\t\"es-BR\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"es-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"es-GQ\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\",\n\t\t\"hb\"\n\t],\n\t\"fr-CA\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"gl-ES\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"gu-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"hi-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"it-CH\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"it-IT\": [\n\t\t\"H\",\n\t\t\"h\",\n\t\t\"hB\"\n\t],\n\t\"kn-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"ku-SY\": [\"H\", \"hB\"],\n\t\"ml-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"mr-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"pa-IN\": [\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"ta-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"hb\",\n\t\t\"H\"\n\t],\n\t\"te-IN\": [\n\t\t\"hB\",\n\t\t\"h\",\n\t\t\"H\"\n\t],\n\t\"zu-ZA\": [\n\t\t\"H\",\n\t\t\"hB\",\n\t\t\"hb\",\n\t\t\"h\"\n\t]\n};\n","import { timeData } from \"./time-data.generated.js\";\n/**\n* Returns the best matching date time pattern if a date time skeleton\n* pattern is provided with a locale. Follows the Unicode specification:\n* https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n* @param skeleton date time skeleton pattern that possibly includes j, J or C\n* @param locale\n*/\nexport function getBestPattern(skeleton, locale) {\n\tlet skeletonCopy = \"\";\n\tfor (let patternPos = 0; patternPos < skeleton.length; patternPos++) {\n\t\tconst patternChar = skeleton.charAt(patternPos);\n\t\tif (patternChar === \"j\") {\n\t\t\tlet extraLength = 0;\n\t\t\twhile (patternPos + 1 < skeleton.length && skeleton.charAt(patternPos + 1) === patternChar) {\n\t\t\t\textraLength++;\n\t\t\t\tpatternPos++;\n\t\t\t}\n\t\t\tlet hourLen = 1 + (extraLength & 1);\n\t\t\tlet dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n\t\t\tlet dayPeriodChar = \"a\";\n\t\t\tlet hourChar = getDefaultHourSymbolFromLocale(locale);\n\t\t\tif (hourChar == \"H\" || hourChar == \"k\") {\n\t\t\t\tdayPeriodLen = 0;\n\t\t\t}\n\t\t\twhile (dayPeriodLen-- > 0) {\n\t\t\t\tskeletonCopy += dayPeriodChar;\n\t\t\t}\n\t\t\twhile (hourLen-- > 0) {\n\t\t\t\tskeletonCopy = hourChar + skeletonCopy;\n\t\t\t}\n\t\t} else if (patternChar === \"J\") {\n\t\t\tskeletonCopy += \"H\";\n\t\t} else {\n\t\t\tskeletonCopy += patternChar;\n\t\t}\n\t}\n\treturn skeletonCopy;\n}\n/**\n* Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n* of the given `locale` to the corresponding time pattern.\n* @param locale\n*/\nfunction getDefaultHourSymbolFromLocale(locale) {\n\tlet hourCycle = locale.hourCycle;\n\tif (hourCycle === undefined && locale.hourCycles && locale.hourCycles.length) {\n\t\t// @ts-ignore\n\t\thourCycle = locale.hourCycles[0];\n\t}\n\tif (hourCycle) {\n\t\tswitch (hourCycle) {\n\t\t\tcase \"h24\": return \"k\";\n\t\t\tcase \"h23\": return \"H\";\n\t\t\tcase \"h12\": return \"h\";\n\t\t\tcase \"h11\": return \"K\";\n\t\t\tdefault: throw new Error(\"Invalid hourCycle\");\n\t\t}\n\t}\n\t// TODO: Once hourCycle is fully supported remove the following with data generation\n\tconst languageTag = locale.language;\n\tlet regionTag;\n\tif (languageTag !== \"root\") {\n\t\tregionTag = locale.maximize().region;\n\t}\n\tconst hourCycles = timeData[regionTag || \"\"] || timeData[languageTag || \"\"] || timeData[`${languageTag}-001`] || timeData[\"001\"];\n\treturn hourCycles[0];\n}\n","import { ErrorKind } from \"./error.js\";\nimport { SKELETON_TYPE, TYPE } from \"./types.js\";\nimport { SPACE_SEPARATOR_REGEX } from \"./regex.generated.js\";\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton } from \"@formatjs/icu-skeleton-parser\";\nimport { getBestPattern } from \"./date-time-pattern-generator.js\";\nconst SPACE_SEPARATOR_START_REGEX = new RegExp(`^${SPACE_SEPARATOR_REGEX.source}*`);\nconst SPACE_SEPARATOR_END_REGEX = new RegExp(`${SPACE_SEPARATOR_REGEX.source}*$`);\nfunction createLocation(start, end) {\n\treturn {\n\t\tstart,\n\t\tend\n\t};\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nconst hasNativeFromEntries = !!Object.fromEntries;\nconst hasTrimStart = !!String.prototype.trimStart;\nconst hasTrimEnd = !!String.prototype.trimEnd;\nconst fromEntries = hasNativeFromEntries ? Object.fromEntries : function fromEntries(entries) {\n\tconst obj = {};\n\tfor (const [k, v] of entries) {\n\t\tobj[k] = v;\n\t}\n\treturn obj;\n};\nconst trimStart = hasTrimStart ? function trimStart(s) {\n\treturn s.trimStart();\n} : function trimStart(s) {\n\treturn s.replace(SPACE_SEPARATOR_START_REGEX, \"\");\n};\nconst trimEnd = hasTrimEnd ? function trimEnd(s) {\n\treturn s.trimEnd();\n} : function trimEnd(s) {\n\treturn s.replace(SPACE_SEPARATOR_END_REGEX, \"\");\n};\n// #endregion\nconst IDENTIFIER_PREFIX_RE = new RegExp(\"([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)\", \"yu\");\nfunction matchIdentifierAtIndex(s, index) {\n\tIDENTIFIER_PREFIX_RE.lastIndex = index;\n\tconst match = IDENTIFIER_PREFIX_RE.exec(s);\n\treturn match[1] ?? \"\";\n}\nexport class Parser {\n\tmessage;\n\tposition;\n\tlocale;\n\tignoreTag;\n\trequiresOtherClause;\n\tshouldParseSkeletons;\n\tconstructor(message, options = {}) {\n\t\tthis.message = message;\n\t\tthis.position = {\n\t\t\toffset: 0,\n\t\t\tline: 1,\n\t\t\tcolumn: 1\n\t\t};\n\t\tthis.ignoreTag = !!options.ignoreTag;\n\t\tthis.locale = options.locale;\n\t\tthis.requiresOtherClause = !!options.requiresOtherClause;\n\t\tthis.shouldParseSkeletons = !!options.shouldParseSkeletons;\n\t}\n\tparse() {\n\t\tif (this.offset() !== 0) {\n\t\t\tthrow Error(\"parser can only be used once\");\n\t\t}\n\t\treturn this.parseMessage(0, \"\", false);\n\t}\n\tparseMessage(nestingLevel, parentArgType, expectingCloseTag) {\n\t\tlet elements = [];\n\t\twhile (!this.isEOF()) {\n\t\t\tconst char = this.char();\n\t\t\tif (char === 123) {\n\t\t\t\tconst result = this.parseArgument(nestingLevel, expectingCloseTag);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t} else if (char === 125 && nestingLevel > 0) {\n\t\t\t\tbreak;\n\t\t\t} else if (char === 35 && (parentArgType === \"plural\" || parentArgType === \"selectordinal\")) {\n\t\t\t\tconst position = this.clonePosition();\n\t\t\t\tthis.bump();\n\t\t\t\telements.push({\n\t\t\t\t\ttype: TYPE.pound,\n\t\t\t\t\tlocation: createLocation(position, this.clonePosition())\n\t\t\t\t});\n\t\t\t} else if (char === 60 && !this.ignoreTag && this.peek() === 47) {\n\t\t\t\tif (expectingCloseTag) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t}\n\t\t\t} else if (char === 60 && !this.ignoreTag && _isAlpha(this.peek() || 0)) {\n\t\t\t\tconst result = this.parseTag(nestingLevel, parentArgType);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t} else {\n\t\t\t\tconst result = this.parseLiteral(nestingLevel, parentArgType);\n\t\t\t\tif (result.err) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\telements.push(result.val);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tval: elements,\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n\t* [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n\t* are accepted:\n\t*\n\t* ```\n\t* tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n\t* tagName ::= [a-z] (PENChar)*\n\t* PENChar ::=\n\t* \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n\t* [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n\t* [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n\t* ```\n\t*\n\t* [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n\t* NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n\t* since other tag-based engines like React allow it\n\t*/\n\tparseTag(nestingLevel, parentArgType) {\n\t\tconst startPosition = this.clonePosition();\n\t\tthis.bump();\n\t\tconst tagName = this.parseTagName();\n\t\tthis.bumpSpace();\n\t\tif (this.bumpIf(\"/>\")) {\n\t\t\t// Self closing tag\n\t\t\treturn {\n\t\t\t\tval: {\n\t\t\t\t\ttype: TYPE.literal,\n\t\t\t\t\tvalue: `<${tagName}/>`,\n\t\t\t\t\tlocation: createLocation(startPosition, this.clonePosition())\n\t\t\t\t},\n\t\t\t\terr: null\n\t\t\t};\n\t\t} else if (this.bumpIf(\">\")) {\n\t\t\tconst childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n\t\t\tif (childrenResult.err) {\n\t\t\t\treturn childrenResult;\n\t\t\t}\n\t\t\tconst children = childrenResult.val;\n\t\t\t// Expecting a close tag\n\t\t\tconst endTagStartPosition = this.clonePosition();\n\t\t\tif (this.bumpIf(\"</\")) {\n\t\t\t\tif (this.isEOF() || !_isAlpha(this.char())) {\n\t\t\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\tconst closingTagNameStartPosition = this.clonePosition();\n\t\t\t\tconst closingTagName = this.parseTagName();\n\t\t\t\tif (tagName !== closingTagName) {\n\t\t\t\t\treturn this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (!this.bumpIf(\">\")) {\n\t\t\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: TYPE.tag,\n\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\tchildren,\n\t\t\t\t\t\tlocation: createLocation(startPosition, this.clonePosition())\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n\t\t}\n\t}\n\t/**\n\t* This method assumes that the caller has peeked ahead for the first tag character.\n\t*/\n\tparseTagName() {\n\t\tconst startOffset = this.offset();\n\t\tthis.bump();\n\t\twhile (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n\t\t\tthis.bump();\n\t\t}\n\t\treturn this.message.slice(startOffset, this.offset());\n\t}\n\tparseLiteral(nestingLevel, parentArgType) {\n\t\tconst start = this.clonePosition();\n\t\tlet value = \"\";\n\t\twhile (true) {\n\t\t\tconst parseQuoteResult = this.tryParseQuote(parentArgType);\n\t\t\tif (parseQuoteResult) {\n\t\t\t\tvalue += parseQuoteResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n\t\t\tif (parseUnquotedResult) {\n\t\t\t\tvalue += parseUnquotedResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst parseLeftAngleResult = this.tryParseLeftAngleBracket();\n\t\t\tif (parseLeftAngleResult) {\n\t\t\t\tvalue += parseLeftAngleResult;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tconst location = createLocation(start, this.clonePosition());\n\t\treturn {\n\t\t\tval: {\n\t\t\t\ttype: TYPE.literal,\n\t\t\t\tvalue,\n\t\t\t\tlocation\n\t\t\t},\n\t\t\terr: null\n\t\t};\n\t}\n\ttryParseLeftAngleBracket() {\n\t\tif (!this.isEOF() && this.char() === 60 && (this.ignoreTag || !_isAlphaOrSlash(this.peek() || 0))) {\n\t\t\tthis.bump();\n\t\t\treturn \"<\";\n\t\t}\n\t\treturn null;\n\t}\n\t/**\n\t* Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n\t* a character that requires quoting (that is, \"only where needed\"), and works the same in\n\t* nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n\t*/\n\ttryParseQuote(parentArgType) {\n\t\tif (this.isEOF() || this.char() !== 39) {\n\t\t\treturn null;\n\t\t}\n\t\t// Parse escaped char following the apostrophe, or early return if there is no escaped char.\n\t\t// Check if is valid escaped character\n\t\tswitch (this.peek()) {\n\t\t\tcase 39:\n\t\t\t\t// double quote, should return as a single quote.\n\t\t\t\tthis.bump();\n\t\t\t\tthis.bump();\n\t\t\t\treturn \"'\";\n\t\t\tcase 123:\n\t\t\tcase 60:\n\t\t\tcase 62:\n\t\t\tcase 125: break;\n\t\t\tcase 35:\n\t\t\t\tif (parentArgType === \"plural\" || parentArgType === \"selectordinal\") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\tdefault: return null;\n\t\t}\n\t\tthis.bump();\n\t\tconst codePoints = [this.char()];\n\t\tthis.bump();\n\t\t// read chars until the optional closing apostrophe is found\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tif (ch === 39) {\n\t\t\t\tif (this.peek() === 39) {\n\t\t\t\t\tcodePoints.push(39);\n\t\t\t\t\t// Bump one more time because we need to skip 2 characters.\n\t\t\t\t\tthis.bump();\n\t\t\t\t} else {\n\t\t\t\t\t// Optional closing apostrophe.\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcodePoints.push(ch);\n\t\t\t}\n\t\t\tthis.bump();\n\t\t}\n\t\treturn String.fromCodePoint(...codePoints);\n\t}\n\ttryParseUnquoted(nestingLevel, parentArgType) {\n\t\tif (this.isEOF()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst ch = this.char();\n\t\tif (ch === 60 || ch === 123 || ch === 35 && (parentArgType === \"plural\" || parentArgType === \"selectordinal\") || ch === 125 && nestingLevel > 0) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\tthis.bump();\n\t\t\treturn String.fromCodePoint(ch);\n\t\t}\n\t}\n\tparseArgument(nestingLevel, expectingCloseTag) {\n\t\tconst openingBracePosition = this.clonePosition();\n\t\tthis.bump();\n\t\tthis.bumpSpace();\n\t\tif (this.isEOF()) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tif (this.char() === 125) {\n\t\t\tthis.bump();\n\t\t\treturn this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\t// argument name\n\t\tlet value = this.parseIdentifierIfPossible().value;\n\t\tif (!value) {\n\t\t\treturn this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tthis.bumpSpace();\n\t\tif (this.isEOF()) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tswitch (this.char()) {\n\t\t\tcase 125: {\n\t\t\t\tthis.bump();\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: TYPE.argument,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlocation: createLocation(openingBracePosition, this.clonePosition())\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase 44: {\n\t\t\t\tthis.bump();\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (this.isEOF()) {\n\t\t\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t\t\t}\n\t\t\t\treturn this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n\t\t\t}\n\t\t\tdefault: return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t}\n\t/**\n\t* Advance the parser until the end of the identifier, if it is currently on\n\t* an identifier character. Return an empty string otherwise.\n\t*/\n\tparseIdentifierIfPossible() {\n\t\tconst startingPosition = this.clonePosition();\n\t\tconst startOffset = this.offset();\n\t\tconst value = matchIdentifierAtIndex(this.message, startOffset);\n\t\tconst endOffset = startOffset + value.length;\n\t\tthis.bumpTo(endOffset);\n\t\tconst endPosition = this.clonePosition();\n\t\tconst location = createLocation(startingPosition, endPosition);\n\t\treturn {\n\t\t\tvalue,\n\t\t\tlocation\n\t\t};\n\t}\n\tparseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition) {\n\t\t// Parse this range:\n\t\t// {name, type, style}\n\t\t// ^---^\n\t\tlet typeStartPosition = this.clonePosition();\n\t\tlet argType = this.parseIdentifierIfPossible().value;\n\t\tlet typeEndPosition = this.clonePosition();\n\t\tswitch (argType) {\n\t\t\tcase \"\":\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n\t\t\tcase \"number\":\n\t\t\tcase \"date\":\n\t\t\tcase \"time\": {\n\t\t\t\t// Parse this range:\n\t\t\t\t// {name, number, style}\n\t\t\t\t// ^-------^\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tlet styleAndLocation = null;\n\t\t\t\tif (this.bumpIf(\",\")) {\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tconst styleStartPosition = this.clonePosition();\n\t\t\t\t\tconst result = this.parseSimpleArgStyleIfPossible();\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tconst style = trimEnd(result.val);\n\t\t\t\t\tif (style.length === 0) {\n\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tconst styleLocation = createLocation(styleStartPosition, this.clonePosition());\n\t\t\t\t\tstyleAndLocation = {\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t\tstyleLocation\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\t\tif (argCloseResult.err) {\n\t\t\t\t\treturn argCloseResult;\n\t\t\t\t}\n\t\t\t\tconst location = createLocation(openingBracePosition, this.clonePosition());\n\t\t\t\t// Extract style or skeleton\n\t\t\t\tif (styleAndLocation && styleAndLocation.style.startsWith(\"::\")) {\n\t\t\t\t\t// Skeleton starts with `::`.\n\t\t\t\t\tlet skeleton = trimStart(styleAndLocation.style.slice(2));\n\t\t\t\t\tif (argType === \"number\") {\n\t\t\t\t\t\tconst result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n\t\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\t\ttype: TYPE.number,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\tstyle: result.val\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (skeleton.length === 0) {\n\t\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet dateTimePattern = skeleton;\n\t\t\t\t\t\t// Get \"best match\" pattern only if locale is passed, if not, let it\n\t\t\t\t\t\t// pass as-is where `parseDateTimeSkeleton()` will throw an error\n\t\t\t\t\t\t// for unsupported patterns.\n\t\t\t\t\t\tif (this.locale) {\n\t\t\t\t\t\t\tdateTimePattern = getBestPattern(skeleton, this.locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst style = {\n\t\t\t\t\t\t\ttype: SKELETON_TYPE.dateTime,\n\t\t\t\t\t\t\tpattern: dateTimePattern,\n\t\t\t\t\t\t\tlocation: styleAndLocation.styleLocation,\n\t\t\t\t\t\t\tparsedOptions: this.shouldParseSkeletons ? parseDateTimeSkeleton(dateTimePattern) : {}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst type = argType === \"date\" ? TYPE.date : TYPE.time;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\tstyle\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Regular style or no style.\n\t\t\t\treturn {\n\t\t\t\t\tval: {\n\t\t\t\t\t\ttype: argType === \"number\" ? TYPE.number : argType === \"date\" ? TYPE.date : TYPE.time,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlocation,\n\t\t\t\t\t\tstyle: styleAndLocation?.style ?? null\n\t\t\t\t\t},\n\t\t\t\t\terr: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"plural\":\n\t\t\tcase \"selectordinal\":\n\t\t\tcase \"select\": {\n\t\t\t\t// Parse this range:\n\t\t\t\t// {name, plural, options}\n\t\t\t\t// ^---------^\n\t\t\t\tconst typeEndPosition = this.clonePosition();\n\t\t\t\tthis.bumpSpace();\n\t\t\t\tif (!this.bumpIf(\",\")) {\n\t\t\t\t\treturn this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition, { ...typeEndPosition }));\n\t\t\t\t}\n\t\t\t\tthis.bumpSpace();\n\t\t\t\t// Parse offset:\n\t\t\t\t// {name, plural, offset:1, options}\n\t\t\t\t// ^-----^\n\t\t\t\t//\n\t\t\t\t// or the first option:\n\t\t\t\t//\n\t\t\t\t// {name, plural, one {...} other {...}}\n\t\t\t\t// ^--^\n\t\t\t\tlet identifierAndLocation = this.parseIdentifierIfPossible();\n\t\t\t\tlet pluralOffset = 0;\n\t\t\t\tif (argType !== \"select\" && identifierAndLocation.value === \"offset\") {\n\t\t\t\t\tif (!this.bumpIf(\":\")) {\n\t\t\t\t\t\treturn this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tconst result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\t// Parse another identifier for option parsing\n\t\t\t\t\tthis.bumpSpace();\n\t\t\t\t\tidentifierAndLocation = this.parseIdentifierIfPossible();\n\t\t\t\t\tpluralOffset = result.val;\n\t\t\t\t}\n\t\t\t\tconst optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n\t\t\t\tif (optionsResult.err) {\n\t\t\t\t\treturn optionsResult;\n\t\t\t\t}\n\t\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\t\tif (argCloseResult.err) {\n\t\t\t\t\treturn argCloseResult;\n\t\t\t\t}\n\t\t\t\tconst location = createLocation(openingBracePosition, this.clonePosition());\n\t\t\t\tif (argType === \"select\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\ttype: TYPE.select,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\toptions: fromEntries(optionsResult.val),\n\t\t\t\t\t\t\tlocation\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr: null\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: {\n\t\t\t\t\t\t\ttype: TYPE.plural,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\toptions: fromEntries(optionsResult.val),\n\t\t\t\t\t\t\toffset: pluralOffset,\n\t\t\t\t\t\t\tpluralType: argType === \"plural\" ? \"cardinal\" : \"ordinal\",\n\t\t\t\t\t\t\tlocation\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr: null\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n\t\t}\n\t}\n\ttryParseArgumentClose(openingBracePosition) {\n\t\t// Parse: {value, number, ::currency/GBP }\n\t\t//\n\t\tif (this.isEOF() || this.char() !== 125) {\n\t\t\treturn this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n\t\t}\n\t\tthis.bump();\n\t\treturn {\n\t\t\tval: true,\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n\t*/\n\tparseSimpleArgStyleIfPossible() {\n\t\tlet nestedBraces = 0;\n\t\tconst startPosition = this.clonePosition();\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tswitch (ch) {\n\t\t\t\tcase 39: {\n\t\t\t\t\t// Treat apostrophe as quoting but include it in the style part.\n\t\t\t\t\t// Find the end of the quoted literal text.\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tlet apostrophePosition = this.clonePosition();\n\t\t\t\t\tif (!this.bumpUntil(\"'\")) {\n\t\t\t\t\t\treturn this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n\t\t\t\t\t}\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 123: {\n\t\t\t\t\tnestedBraces += 1;\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 125: {\n\t\t\t\t\tif (nestedBraces > 0) {\n\t\t\t\t\t\tnestedBraces -= 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tval: this.message.slice(startPosition.offset, this.offset()),\n\t\t\t\t\t\t\terr: null\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tthis.bump();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tval: this.message.slice(startPosition.offset, this.offset()),\n\t\t\terr: null\n\t\t};\n\t}\n\tparseNumberSkeletonFromString(skeleton, location) {\n\t\tlet tokens = [];\n\t\ttry {\n\t\t\ttokens = parseNumberSkeletonFromString(skeleton);\n\t\t} catch {\n\t\t\treturn this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n\t\t}\n\t\treturn {\n\t\t\tval: {\n\t\t\t\ttype: SKELETON_TYPE.number,\n\t\t\t\ttokens,\n\t\t\t\tlocation,\n\t\t\t\tparsedOptions: this.shouldParseSkeletons ? parseNumberSkeleton(tokens) : {}\n\t\t\t},\n\t\t\terr: null\n\t\t};\n\t}\n\t/**\n\t* @param nesting_level The current nesting level of messages.\n\t* This can be positive when parsing message fragment in select or plural argument options.\n\t* @param parent_arg_type The parent argument's type.\n\t* @param parsed_first_identifier If provided, this is the first identifier-like selector of\n\t* the argument. It is a by-product of a previous parsing attempt.\n\t* @param expecting_close_tag If true, this message is directly or indirectly nested inside\n\t* between a pair of opening and closing tags. The nested message will not parse beyond\n\t* the closing tag boundary.\n\t*/\n\ttryParsePluralOrSelectOptions(nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n\t\tlet hasOtherClause = false;\n\t\tconst options = [];\n\t\tconst parsedSelectors = new Set();\n\t\tlet { value: selector, location: selectorLocation } = parsedFirstIdentifier;\n\t\t// Parse:\n\t\t// one {one apple}\n\t\t// ^--^\n\t\twhile (true) {\n\t\t\tif (selector.length === 0) {\n\t\t\t\tconst startPosition = this.clonePosition();\n\t\t\t\tif (parentArgType !== \"select\" && this.bumpIf(\"=\")) {\n\t\t\t\t\t// Try parse `={number}` selector\n\t\t\t\t\tconst result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n\t\t\t\t\tif (result.err) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t\tselectorLocation = createLocation(startPosition, this.clonePosition());\n\t\t\t\t\tselector = this.message.slice(startPosition.offset, this.offset());\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Duplicate selector clauses\n\t\t\tif (parsedSelectors.has(selector)) {\n\t\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n\t\t\t}\n\t\t\tif (selector === \"other\") {\n\t\t\t\thasOtherClause = true;\n\t\t\t}\n\t\t\t// Parse:\n\t\t\t// one {one apple}\n\t\t\t// ^----------^\n\t\t\tthis.bumpSpace();\n\t\t\tconst openingBracePosition = this.clonePosition();\n\t\t\tif (!this.bumpIf(\"{\")) {\n\t\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t\t}\n\t\t\tconst fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n\t\t\tif (fragmentResult.err) {\n\t\t\t\treturn fragmentResult;\n\t\t\t}\n\t\t\tconst argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n\t\t\tif (argCloseResult.err) {\n\t\t\t\treturn argCloseResult;\n\t\t\t}\n\t\t\toptions.push([selector, {\n\t\t\t\tvalue: fragmentResult.val,\n\t\t\t\tlocation: createLocation(openingBracePosition, this.clonePosition())\n\t\t\t}]);\n\t\t\t// Keep track of the existing selectors\n\t\t\tparsedSelectors.add(selector);\n\t\t\t// Prep next selector clause.\n\t\t\tthis.bumpSpace();\n\t\t\t({value: selector, location: selectorLocation} = this.parseIdentifierIfPossible());\n\t\t}\n\t\tif (options.length === 0) {\n\t\t\treturn this.error(parentArgType === \"select\" ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t}\n\t\tif (this.requiresOtherClause && !hasOtherClause) {\n\t\t\treturn this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n\t\t}\n\t\treturn {\n\t\t\tval: options,\n\t\t\terr: null\n\t\t};\n\t}\n\ttryParseDecimalInteger(expectNumberError, invalidNumberError) {\n\t\tlet sign = 1;\n\t\tconst startingPosition = this.clonePosition();\n\t\tif (this.bumpIf(\"+\")) {} else if (this.bumpIf(\"-\")) {\n\t\t\tsign = -1;\n\t\t}\n\t\tlet hasDigits = false;\n\t\tlet decimal = 0;\n\t\twhile (!this.isEOF()) {\n\t\t\tconst ch = this.char();\n\t\t\tif (ch >= 48 && ch <= 57) {\n\t\t\t\thasDigits = true;\n\t\t\t\tdecimal = decimal * 10 + (ch - 48);\n\t\t\t\tthis.bump();\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst location = createLocation(startingPosition, this.clonePosition());\n\t\tif (!hasDigits) {\n\t\t\treturn this.error(expectNumberError, location);\n\t\t}\n\t\tdecimal *= sign;\n\t\tif (!Number.isSafeInteger(decimal)) {\n\t\t\treturn this.error(invalidNumberError, location);\n\t\t}\n\t\treturn {\n\t\t\tval: decimal,\n\t\t\terr: null\n\t\t};\n\t}\n\toffset() {\n\t\treturn this.position.offset;\n\t}\n\tisEOF() {\n\t\treturn this.offset() === this.message.length;\n\t}\n\tclonePosition() {\n\t\t// This is much faster than `Object.assign` or spread.\n\t\treturn {\n\t\t\toffset: this.position.offset,\n\t\t\tline: this.position.line,\n\t\t\tcolumn: this.position.column\n\t\t};\n\t}\n\t/**\n\t* Return the code point at the current position of the parser.\n\t* Throws if the index is out of bound.\n\t*/\n\tchar() {\n\t\tconst offset = this.position.offset;\n\t\tif (offset >= this.message.length) {\n\t\t\tthrow Error(\"out of bound\");\n\t\t}\n\t\tconst code = this.message.codePointAt(offset);\n\t\tif (code === undefined) {\n\t\t\tthrow Error(`Offset ${offset} is at invalid UTF-16 code unit boundary`);\n\t\t}\n\t\treturn code;\n\t}\n\terror(kind, location) {\n\t\treturn {\n\t\t\tval: null,\n\t\t\terr: {\n\t\t\t\tkind,\n\t\t\t\tmessage: this.message,\n\t\t\t\tlocation\n\t\t\t}\n\t\t};\n\t}\n\t/** Bump the parser to the next UTF-16 code unit. */\n\tbump() {\n\t\tif (this.isEOF()) {\n\t\t\treturn;\n\t\t}\n\t\tconst code = this.char();\n\t\tif (code === 10) {\n\t\t\tthis.position.line += 1;\n\t\t\tthis.position.column = 1;\n\t\t\tthis.position.offset += 1;\n\t\t} else {\n\t\t\tthis.position.column += 1;\n\t\t\t// 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n\t\t\tthis.position.offset += code < 65536 ? 1 : 2;\n\t\t}\n\t}\n\t/**\n\t* If the substring starting at the current position of the parser has\n\t* the given prefix, then bump the parser to the character immediately\n\t* following the prefix and return true. Otherwise, don't bump the parser\n\t* and return false.\n\t*/\n\tbumpIf(prefix) {\n\t\tif (this.message.startsWith(prefix, this.offset())) {\n\t\t\tfor (let i = 0; i < prefix.length; i++) {\n\t\t\t\tthis.bump();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Bump the parser until the pattern character is found and return `true`.\n\t* Otherwise bump to the end of the file and return `false`.\n\t*/\n\tbumpUntil(pattern) {\n\t\tconst currentOffset = this.offset();\n\t\tconst index = this.message.indexOf(pattern, currentOffset);\n\t\tif (index >= 0) {\n\t\t\tthis.bumpTo(index);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.bumpTo(this.message.length);\n\t\t\treturn false;\n\t\t}\n\t}\n\t/**\n\t* Bump the parser to the target offset.\n\t* If target offset is beyond the end of the input, bump the parser to the end of the input.\n\t*/\n\tbumpTo(targetOffset) {\n\t\tif (this.offset() > targetOffset) {\n\t\t\tthrow Error(`targetOffset ${targetOffset} must be greater than or equal to the current offset ${this.offset()}`);\n\t\t}\n\t\ttargetOffset = Math.min(targetOffset, this.message.length);\n\t\twhile (true) {\n\t\t\tconst offset = this.offset();\n\t\t\tif (offset === targetOffset) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (offset > targetOffset) {\n\t\t\t\tthrow Error(`targetOffset ${targetOffset} is at invalid UTF-16 code unit boundary`);\n\t\t\t}\n\t\t\tthis.bump();\n\t\t\tif (this.isEOF()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/** advance the parser through all whitespace to the next non-whitespace code unit. */\n\tbumpSpace() {\n\t\twhile (!this.isEOF() && _isWhiteSpace(this.char())) {\n\t\t\tthis.bump();\n\t\t}\n\t}\n\t/**\n\t* Peek at the *next* Unicode codepoint in the input without advancing the parser.\n\t* If the input has been exhausted, then this returns null.\n\t*/\n\tpeek() {\n\t\tif (this.isEOF()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst code = this.char();\n\t\tconst offset = this.offset();\n\t\tconst nextCode = this.message.charCodeAt(offset + (code >= 65536 ? 2 : 1));\n\t\treturn nextCode ?? null;\n\t}\n}\n/**\n* This check if codepoint is alphabet (lower & uppercase)\n* @param codepoint\n* @returns\n*/\nfunction _isAlpha(codepoint) {\n\treturn codepoint >= 97 && codepoint <= 122 || codepoint >= 65 && codepoint <= 90;\n}\nfunction _isAlphaOrSlash(codepoint) {\n\treturn _isAlpha(codepoint) || codepoint === 47;\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n\treturn c === 45 || c === 46 || c >= 48 && c <= 57 || c === 95 || c >= 97 && c <= 122 || c >= 65 && c <= 90 || c == 183 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 893 || c >= 895 && c <= 8191 || c >= 8204 && c <= 8205 || c >= 8255 && c <= 8256 || c >= 8304 && c <= 8591 || c >= 11264 && c <= 12271 || c >= 12289 && c <= 55295 || c >= 63744 && c <= 64975 || c >= 65008 && c <= 65533 || c >= 65536 && c <= 983039;\n}\n/**\n* Code point equivalent of regex `\\p{White_Space}`.\n* From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n*/\nfunction _isWhiteSpace(c) {\n\treturn c >= 9 && c <= 13 || c === 32 || c === 133 || c >= 8206 && c <= 8207 || c === 8232 || c === 8233;\n}\n","import { ErrorKind } from \"./error.js\";\nimport { Parser } from \"./parser.js\";\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement } from \"./types.js\";\nfunction pruneLocation(els) {\n\tels.forEach((el) => {\n\t\tdelete el.location;\n\t\tif (isSelectElement(el) || isPluralElement(el)) {\n\t\t\tfor (const k in el.options) {\n\t\t\t\tdelete el.options[k].location;\n\t\t\t\tpruneLocation(el.options[k].value);\n\t\t\t}\n\t\t} else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n\t\t\tdelete el.style.location;\n\t\t} else if ((isDateElement(el) || isTimeElement(el)) && isDateTimeSkeleton(el.style)) {\n\t\t\tdelete el.style.location;\n\t\t} else if (isTagElement(el)) {\n\t\t\tpruneLocation(el.children);\n\t\t}\n\t});\n}\nexport function parse(message, opts = {}) {\n\topts = {\n\t\tshouldParseSkeletons: true,\n\t\trequiresOtherClause: true,\n\t\t...opts\n\t};\n\tconst result = new Parser(message, opts).parse();\n\tif (result.err) {\n\t\tconst error = SyntaxError(ErrorKind[result.err.kind]);\n\t\t// @ts-expect-error Assign to error object\n\t\terror.location = result.err.location;\n\t\t// @ts-expect-error Assign to error object\n\t\terror.originalMessage = result.err.message;\n\t\tthrow error;\n\t}\n\tif (!opts?.captureLocation) {\n\t\tpruneLocation(result.val);\n\t}\n\treturn result.val;\n}\nexport * from \"./types.js\";\n// only for testing\nexport const _Parser = Parser;\nexport { isStructurallySame } from \"./manipulator.js\";\n","export let ErrorCode = /* @__PURE__ */ function(ErrorCode) {\n\t// When we have a placeholder but no value to format\n\tErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n\t// When value supplied is invalid\n\tErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n\t// When we need specific Intl API but it's not available\n\tErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n\treturn ErrorCode;\n}({});\nexport class FormatError extends Error {\n\tcode;\n\t/**\n\t* Original message we're trying to format\n\t* `undefined` if we're only dealing w/ AST\n\t*\n\t* @type {(string | undefined)}\n\t* @memberof FormatError\n\t*/\n\toriginalMessage;\n\tconstructor(msg, code, originalMessage) {\n\t\tsuper(msg);\n\t\tthis.code = code;\n\t\tthis.originalMessage = originalMessage;\n\t}\n\ttoString() {\n\t\treturn `[formatjs Error: ${this.code}] ${this.message}`;\n\t}\n}\nexport class InvalidValueError extends FormatError {\n\tconstructor(variableId, value, options, originalMessage) {\n\t\tsuper(`Invalid values for \"${variableId}\": \"${value}\". Options are \"${Object.keys(options).join(\"\\\", \\\"\")}\"`, ErrorCode.INVALID_VALUE, originalMessage);\n\t}\n}\nexport class InvalidValueTypeError extends FormatError {\n\tconstructor(value, type, originalMessage) {\n\t\tsuper(`Value for \"${value}\" must be of type ${type}`, ErrorCode.INVALID_VALUE, originalMessage);\n\t}\n}\nexport class MissingValueError extends FormatError {\n\tconstructor(variableId, originalMessage) {\n\t\tsuper(`The intl string context variable \"${variableId}\" was not provided to the string \"${originalMessage}\"`, ErrorCode.MISSING_VALUE, originalMessage);\n\t}\n}\n","import \"@formatjs/ecma402-abstract\";\nimport { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTagElement, isTimeElement } from \"@formatjs/icu-messageformat-parser\";\nimport { ErrorCode, FormatError, InvalidValueError, InvalidValueTypeError, MissingValueError } from \"./error.js\";\nexport let PART_TYPE = /* @__PURE__ */ function(PART_TYPE) {\n\tPART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n\tPART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n\treturn PART_TYPE;\n}({});\nfunction mergeLiteral(parts) {\n\tif (parts.length < 2) {\n\t\treturn parts;\n\t}\n\treturn parts.reduce((all, part) => {\n\t\tconst lastPart = all[all.length - 1];\n\t\tif (!lastPart || lastPart.type !== PART_TYPE.literal || part.type !== PART_TYPE.literal) {\n\t\t\tall.push(part);\n\t\t} else {\n\t\t\tlastPart.value += part.value;\n\t\t}\n\t\treturn all;\n\t}, []);\n}\nexport function isFormatXMLElementFn(el) {\n\treturn typeof el === \"function\";\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, originalMessage) {\n\t// Hot path for straight simple msg translations\n\tif (els.length === 1 && isLiteralElement(els[0])) {\n\t\treturn [{\n\t\t\ttype: PART_TYPE.literal,\n\t\t\tvalue: els[0].value\n\t\t}];\n\t}\n\tconst result = [];\n\tfor (const el of els) {\n\t\t// Exit early for string parts.\n\t\tif (isLiteralElement(el)) {\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: el.value\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\t// TODO: should this part be literal type?\n\t\t// Replace `#` in plural rules with the actual numeric value.\n\t\tif (isPoundElement(el)) {\n\t\t\tif (typeof currentPluralValue === \"number\") {\n\t\t\t\tresult.push({\n\t\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\t\tvalue: formatters.getNumberFormat(locales).format(currentPluralValue)\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst { value: varName } = el;\n\t\t// Enforce that all required values are provided by the caller.\n\t\tif (!(values && varName in values)) {\n\t\t\tthrow new MissingValueError(varName, originalMessage);\n\t\t}\n\t\tlet value = values[varName];\n\t\tif (isArgumentElement(el)) {\n\t\t\tif (!value || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\") {\n\t\t\t\tvalue = typeof value === \"string\" || typeof value === \"number\" || typeof value === \"bigint\" ? String(value) : \"\";\n\t\t\t}\n\t\t\tresult.push({\n\t\t\t\ttype: typeof value === \"string\" ? PART_TYPE.literal : PART_TYPE.object,\n\t\t\t\tvalue\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\t// Recursively format plural and select parts' option — which can be a\n\t\t// nested pattern structure. The choosing of the option to use is\n\t\t// abstracted-by and delegated-to the part helper object.\n\t\tif (isDateElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.date[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : undefined;\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getDateTimeFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isTimeElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.time[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : formats.time.medium;\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getDateTimeFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isNumberElement(el)) {\n\t\t\tconst style = typeof el.style === \"string\" ? formats.number[el.style] : isNumberSkeleton(el.style) ? el.style.parsedOptions : undefined;\n\t\t\tif (style && style.scale) {\n\t\t\t\tconst scale = style.scale || 1;\n\t\t\t\t// Handle bigint scale multiplication\n\t\t\t\t// BigInt can only be multiplied by BigInt\n\t\t\t\tif (typeof value === \"bigint\") {\n\t\t\t\t\t// Check if scale is a safe integer that can be converted to BigInt\n\t\t\t\t\tif (!Number.isInteger(scale)) {\n\t\t\t\t\t\tthrow new TypeError(`Cannot apply fractional scale ${scale} to bigint value. Scale must be an integer when formatting bigint.`);\n\t\t\t\t\t}\n\t\t\t\t\tvalue = value * BigInt(scale);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value * scale;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.push({\n\t\t\t\ttype: PART_TYPE.literal,\n\t\t\t\tvalue: formatters.getNumberFormat(locales, style).format(value)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (isTagElement(el)) {\n\t\t\tconst { children, value } = el;\n\t\t\tconst formatFn = values[value];\n\t\t\tif (!isFormatXMLElementFn(formatFn)) {\n\t\t\t\tthrow new InvalidValueTypeError(value, \"function\", originalMessage);\n\t\t\t}\n\t\t\tconst parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n\t\t\tlet chunks = formatFn(parts.map((p) => p.value));\n\t\t\tif (!Array.isArray(chunks)) {\n\t\t\t\tchunks = [chunks];\n\t\t\t}\n\t\t\tresult.push(...chunks.map((c) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: typeof c === \"string\" ? PART_TYPE.literal : PART_TYPE.object,\n\t\t\t\t\tvalue: c\n\t\t\t\t};\n\t\t\t}));\n\t\t}\n\t\tif (isSelectElement(el)) {\n\t\t\t// GH #4490: Use hasOwnProperty to avoid prototype chain issues with keys like \"constructor\"\n\t\t\tconst key = value;\n\t\t\tconst opt = (Object.prototype.hasOwnProperty.call(el.options, key) ? el.options[key] : undefined) || el.options.other;\n\t\t\tif (!opt) {\n\t\t\t\tthrow new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n\t\t\t}\n\t\t\tresult.push(...formatToParts(opt.value, locales, formatters, formats, values));\n\t\t\tcontinue;\n\t\t}\n\t\tif (isPluralElement(el)) {\n\t\t\t// GH #4490: Use hasOwnProperty to avoid prototype chain issues\n\t\t\tconst exactKey = `=${value}`;\n\t\t\tlet opt = Object.prototype.hasOwnProperty.call(el.options, exactKey) ? el.options[exactKey] : undefined;\n\t\t\tif (!opt) {\n\t\t\t\tif (!Intl.PluralRules) {\n\t\t\t\t\tthrow new FormatError(`Intl.PluralRules is not available in this environment.\nTry polyfilling it using \"@formatjs/intl-pluralrules\"\n`, ErrorCode.MISSING_INTL_API, originalMessage);\n\t\t\t\t}\n\t\t\t\t// Convert bigint to number for PluralRules (which only accepts number)\n\t\t\t\tconst numericValue = typeof value === \"bigint\" ? Number(value) : value;\n\t\t\t\tconst rule = formatters.getPluralRules(locales, { type: el.pluralType }).select(numericValue - (el.offset || 0));\n\t\t\t\topt = (Object.prototype.hasOwnProperty.call(el.options, rule) ? el.options[rule] : undefined) || el.options.other;\n\t\t\t}\n\t\t\tif (!opt) {\n\t\t\t\tthrow new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n\t\t\t}\n\t\t\t// Convert bigint to number for currentPluralValue\n\t\t\tconst numericValue = typeof value === \"bigint\" ? Number(value) : value;\n\t\t\tresult.push(...formatToParts(opt.value, locales, formatters, formats, values, numericValue - (el.offset || 0)));\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { memoize, strategies } from \"@formatjs/fast-memoize\";\nimport { parse } from \"@formatjs/icu-messageformat-parser\";\nimport { formatToParts, PART_TYPE } from \"./formatters.js\";\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n\tif (!c2) {\n\t\treturn c1;\n\t}\n\treturn {\n\t\t...c1,\n\t\t...c2,\n\t\t...Object.keys(c1).reduce((all, k) => {\n\t\t\tall[k] = {\n\t\t\t\t...c1[k],\n\t\t\t\t...c2[k]\n\t\t\t};\n\t\t\treturn all;\n\t\t}, {})\n\t};\n}\nfunction mergeConfigs(defaultConfig, configs) {\n\tif (!configs) {\n\t\treturn defaultConfig;\n\t}\n\treturn Object.keys(defaultConfig).reduce((all, k) => {\n\t\tall[k] = mergeConfig(defaultConfig[k], configs[k]);\n\t\treturn all;\n\t}, { ...defaultConfig });\n}\nfunction createFastMemoizeCache(store) {\n\treturn { create() {\n\t\treturn {\n\t\t\tget(key) {\n\t\t\t\treturn store[key];\n\t\t\t},\n\t\t\tset(key, value) {\n\t\t\t\tstore[key] = value;\n\t\t\t}\n\t\t};\n\t} };\n}\nfunction createDefaultFormatters(cache = {\n\tnumber: {},\n\tdateTime: {},\n\tpluralRules: {}\n}) {\n\treturn {\n\t\tgetNumberFormat: memoize((...args) => new Intl.NumberFormat(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.number),\n\t\t\tstrategy: strategies.variadic\n\t\t}),\n\t\tgetDateTimeFormat: memoize((...args) => new Intl.DateTimeFormat(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.dateTime),\n\t\t\tstrategy: strategies.variadic\n\t\t}),\n\t\tgetPluralRules: memoize((...args) => new Intl.PluralRules(...args), {\n\t\t\tcache: createFastMemoizeCache(cache.pluralRules),\n\t\t\tstrategy: strategies.variadic\n\t\t})\n\t};\n}\nexport class IntlMessageFormat {\n\tast;\n\tlocales;\n\tresolvedLocale;\n\tformatters;\n\tformats;\n\tmessage;\n\tformatterCache = {\n\t\tnumber: {},\n\t\tdateTime: {},\n\t\tpluralRules: {}\n\t};\n\tconstructor(message, locales = IntlMessageFormat.defaultLocale, overrideFormats, opts) {\n\t\t// Defined first because it's used to build the format pattern.\n\t\tthis.locales = locales;\n\t\tthis.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n\t\tif (typeof message === \"string\") {\n\t\t\tthis.message = message;\n\t\t\tif (!IntlMessageFormat.__parse) {\n\t\t\t\tthrow new TypeError(\"IntlMessageFormat.__parse must be set to process `message` of type `string`\");\n\t\t\t}\n\t\t\tconst { ...parseOpts } = opts || {};\n\t\t\t// Parse string messages into an AST.\n\t\t\tthis.ast = IntlMessageFormat.__parse(message, {\n\t\t\t\t...parseOpts,\n\t\t\t\tlocale: this.resolvedLocale\n\t\t\t});\n\t\t} else {\n\t\t\tthis.ast = message;\n\t\t}\n\t\tif (!Array.isArray(this.ast)) {\n\t\t\tthrow new TypeError(\"A message must be provided as a String or AST.\");\n\t\t}\n\t\t// Creates a new object with the specified `formats` merged with the default\n\t\t// formats.\n\t\tthis.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n\t\tthis.formatters = opts && opts.formatters || createDefaultFormatters(this.formatterCache);\n\t}\n\tformat = (values) => {\n\t\tconst parts = this.formatToParts(values);\n\t\t// Hot path for straight simple msg translations\n\t\tif (parts.length === 1) {\n\t\t\treturn parts[0].value;\n\t\t}\n\t\tconst result = parts.reduce((all, part) => {\n\t\t\tif (!all.length || part.type !== PART_TYPE.literal || typeof all[all.length - 1] !== \"string\") {\n\t\t\t\tall.push(part.value);\n\t\t\t} else {\n\t\t\t\tall[all.length - 1] += part.value;\n\t\t\t}\n\t\t\treturn all;\n\t\t}, []);\n\t\tif (result.length <= 1) {\n\t\t\treturn result[0] || \"\";\n\t\t}\n\t\treturn result;\n\t};\n\tformatToParts = (values) => formatToParts(this.ast, this.locales, this.formatters, this.formats, values, undefined, this.message);\n\tresolvedOptions = () => ({ locale: this.resolvedLocale?.toString() || Intl.NumberFormat.supportedLocalesOf(this.locales)[0] });\n\tgetAst = () => this.ast;\n\tstatic memoizedDefaultLocale = null;\n\tstatic get defaultLocale() {\n\t\tif (!IntlMessageFormat.memoizedDefaultLocale) {\n\t\t\tIntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n\t\t}\n\t\treturn IntlMessageFormat.memoizedDefaultLocale;\n\t}\n\tstatic resolveLocale = (locales) => {\n\t\tif (typeof Intl.Locale === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\t\tconst supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n\t\tif (supportedLocales.length > 0) {\n\t\t\treturn new Intl.Locale(supportedLocales[0]);\n\t\t}\n\t\treturn new Intl.Locale(typeof locales === \"string\" ? locales : locales[0]);\n\t};\n\tstatic __parse = parse;\n\t// Default format options used as the prototype of the `formats` provided to the\n\t// constructor. These are used when constructing the internal Intl.NumberFormat\n\t// and Intl.DateTimeFormat instances.\n\tstatic formats = {\n\t\tnumber: {\n\t\t\tinteger: { maximumFractionDigits: 0 },\n\t\t\tcurrency: { style: \"currency\" },\n\t\t\tpercent: { style: \"percent\" }\n\t\t},\n\t\tdate: {\n\t\t\tshort: {\n\t\t\t\tmonth: \"numeric\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"2-digit\"\n\t\t\t},\n\t\t\tmedium: {\n\t\t\t\tmonth: \"short\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t},\n\t\t\tlong: {\n\t\t\t\tmonth: \"long\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t},\n\t\t\tfull: {\n\t\t\t\tweekday: \"long\",\n\t\t\t\tmonth: \"long\",\n\t\t\t\tday: \"numeric\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t}\n\t\t},\n\t\ttime: {\n\t\t\tshort: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\"\n\t\t\t},\n\t\t\tmedium: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\"\n\t\t\t},\n\t\t\tlong: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\",\n\t\t\t\ttimeZoneName: \"short\"\n\t\t\t},\n\t\t\tfull: {\n\t\t\t\thour: \"numeric\",\n\t\t\t\tminute: \"numeric\",\n\t\t\t\tsecond: \"numeric\",\n\t\t\t\ttimeZoneName: \"short\"\n\t\t\t}\n\t\t}\n\t};\n}\n","import{IntlMessageFormat as t}from\"intl-messageformat\";import{isValidElement as e}from\"react\";import{I as r,a as o,m as a}from\"../formatters-CJcico0N.js\";function m(...[m,s,i,n]){if(Array.isArray(s))throw new r(o.INVALID_MESSAGE,void 0);if(\"object\"==typeof s)throw new r(o.INSUFFICIENT_PATH,void 0);if(\"string\"==typeof s){const t=function(t,e){return e||/'[{}]/.test(t)?void 0:t}(s,i);if(t)return t}const{cache:f,formats:c,formatters:g,globalFormats:u,locale:d,timeZone:A}=n;let p;g.getMessageFormat||(g.getMessageFormat=function(e,r){return a(((...e)=>new t(e[0],e[1],e[2],{formatters:r,...e[3]})),e.message)}(f,g));try{p=g.getMessageFormat(s,d,function(e,r,o){const a=t.formats.date,m=t.formats.time,s={...e?.dateTime,...r?.dateTime},i={date:{...a,...s},time:{...m,...s},number:{...e?.number,...r?.number}};return o&&[\"date\",\"time\"].forEach((t=>{const e=i[t];for(const[t,r]of Object.entries(e))e[t]={timeZone:o,...r}})),i}(u,c,A),{formatters:{...g,getDateTimeFormat:(t,e)=>g.getDateTimeFormat(t,{...e,timeZone:e?.timeZone??A})}})}catch(t){throw new r(o.INVALID_MESSAGE,void 0)}const w=p.format(i);return e(w)||Array.isArray(w)||\"string\"==typeof w?w:String(w)}m.raw=!0;export{m as default};\n","import{cloneElement as e,isValidElement as t}from\"react\";import r from\"use-intl/format-message\";import{I as n,a as o,c as a,b as s}from\"./formatters-CJcico0N.js\";function c(...e){return e.filter(Boolean).join(\".\")}function i(e){return c(e.namespace,e.key)}function u(e){console.error(e)}function m(e,t,r,n){const o=c(n,r);if(!t)throw new Error(o);let a=t;return r.split(\".\").forEach((t=>{const r=a[t];if(null==t||null==r)throw new Error(o+` (${e})`);a=r})),a}function f(a){const s=function(e,t,r){try{if(!t)throw new Error(void 0);const n=r?m(e,t,r):t;if(!n)throw new Error(r);return n}catch(e){return new n(o.MISSING_MESSAGE,e.message)}}(a.locale,a.messages,a.namespace);return function({cache:a,formats:s,formatters:u,getMessageFallback:f=i,locale:l,messagesOrError:g,namespace:y,onError:h,timeZone:w}){const E=g instanceof n;function S(e,t,r,o){const a=new n(t,r);return h(a),o??f({error:a,key:e,namespace:y})}function d(i,d,p,M){const T=M;let R;if(E){if(!T)return h(g),f({error:g,key:i,namespace:y});R=T}else{const e=g;try{R=m(l,e,i,y)}catch(e){if(!T)return S(i,o.MISSING_MESSAGE,e.message,T);R=T}}try{const n=c(y,i);return r(n,R,d?function(r){const n={};return Object.keys(r).forEach((o=>{let a=0;const s=r[o];let c;c=\"function\"==typeof s?r=>{const n=s(r);return t(n)?e(n,{key:o+a++}):n}:s,n[o]=c})),n}(d):d,{cache:a,formatters:u,globalFormats:s,formats:p,locale:l,timeZone:w})}catch(e){let t,r;return e instanceof n?(t=e.code,r=e.originalMessage):(t=o.FORMATTING_ERROR,r=e.message),S(i,t,r,T)}}function p(e,t,r,n){const a=d(e,t,r,n);return\"string\"!=typeof a?S(e,o.INVALID_MESSAGE,void 0):a}return p.rich=d,p.markup=(e,t,r,n)=>d(e,t,r,n),p.raw=e=>{if(E)return h(g),f({error:g,key:e,namespace:y});const t=g;try{return m(l,t,e,y)}catch(t){return S(e,o.MISSING_MESSAGE,t.message)}},p.has=e=>{if(E)return!1;try{return m(l,g,e,y),!0}catch{return!1}},p}({...a,messagesOrError:s})}function l(e,t){return e===t?void 0:e.slice((t+\".\").length)}const g=3600,y=86400,h=7*y,w=2628e3,E=7884e3,S=365*y,d={second:1,seconds:1,minute:60,minutes:60,hour:g,hours:g,day:y,days:y,week:h,weeks:h,month:w,months:w,quarter:E,quarters:E,year:S,years:S};function p(e){const{_cache:t=s(),_formatters:r=a(t),formats:c,locale:i,onError:m=u,timeZone:f}=e;function l(e){return e?.timeZone||(f?e={...e,timeZone:f}:m(new n(o.ENVIRONMENT_FALLBACK,void 0))),e}function E(e,t,r,a,s){let c;try{c=function(e,t,r){let a;if(\"string\"==typeof t){const r=t;if(a=e?.[r],!a){const e=new n(o.MISSING_FORMAT,void 0);throw m(e),e}}else a=t;return r&&(a={...a,...r}),a}(r,e,t)}catch{return s()}try{return a(c)}catch(e){return m(new n(o.FORMATTING_ERROR,e.message)),s()}}function p(e,t,n){return E(t,n,c?.dateTime,(t=>(t=l(t),r.getDateTimeFormat(i,t).format(e))),(()=>String(e)))}function M(){return e.now?e.now:(m(new n(o.ENVIRONMENT_FALLBACK,void 0)),new Date)}return{dateTime:p,number:function(e,t,n){return E(t,n,c?.number,(t=>r.getNumberFormat(i,t).format(e)),(()=>String(e)))},relativeTime:function(e,t){try{let n,o;const a={};t instanceof Date||\"number\"==typeof t?n=new Date(t):t&&(n=null!=t.now?new Date(t.now):M(),o=t.unit,a.style=t.style,a.numberingSystem=t.numberingSystem),n||(n=M());const s=(new Date(e).getTime()-n.getTime())/1e3;o||(o=function(e){const t=Math.abs(e);return t<60?\"second\":t<g?\"minute\":t<y?\"hour\":t<h?\"day\":t<w?\"week\":t<S?\"month\":\"year\"}(s)),a.numeric=\"second\"===o?\"auto\":\"always\";const c=function(e,t){return Math.round(e/d[t])}(s,o);return r.getRelativeTimeFormat(i,a).format(c,o)}catch(t){return m(new n(o.FORMATTING_ERROR,t.message)),String(e)}},list:function(e,t,n){const o=[],a=new Map;let s=0;for(const t of e){let e;\"object\"==typeof t?(e=String(s),a.set(e,t)):e=String(t),o.push(e),s++}return E(t,n,c?.list,(e=>{const t=r.getListFormat(i,e).formatToParts(o).map((e=>\"literal\"===e.type?e.value:a.get(e.value)||e.value));return a.size>0?t:t.join(\"\")}),(()=>String(e)))},dateTimeRange:function(e,t,n,o){return E(n,o,c?.dateTime,(n=>(n=l(n),r.getDateTimeFormat(i,n).formatRange(e,t))),(()=>[p(e),p(t)].join(\" – \")))}}}function M({formats:e,getMessageFallback:t,messages:r,onError:n,...o}){return{...o,formats:e||void 0,messages:r||void 0,onError:n||u,getMessageFallback:t||i}}export{f as a,u as b,p as c,i as d,M as i,l as r};\n","import{createContext as e,useContext as r,useMemo as t,useState as o,useEffect as n}from\"react\";import{b as a,c as s,I as c,a as i}from\"./formatters-CJcico0N.js\";import{i as m,r as f,a as u,c as l}from\"./initializeConfig-Brh10fyG.js\";import{jsx as g}from\"react/jsx-runtime\";const d=e(void 0);function v({children:e,formats:o,getMessageFallback:n,locale:c,messages:i,now:f,onError:u,timeZone:l}){const v=r(d),w=t((()=>v?.cache||a()),[c,v?.cache]),p=t((()=>v?.formatters||s(w)),[w,v?.formatters]),h=t((()=>({...m({locale:c,formats:void 0===o?v?.formats:o,getMessageFallback:n||v?.getMessageFallback,messages:void 0===i?v?.messages:i,now:f||v?.now,onError:u||v?.onError,timeZone:l||v?.timeZone}),formatters:p,cache:w})),[w,o,p,n,c,i,f,u,v,l]);return g(d.Provider,{value:h,children:e})}function w(){const e=r(d);if(!e)throw new Error(void 0);return e}let p=!1;const h=\"undefined\"==typeof window;function E(e){return function(e,r,o){const{cache:n,formats:a,formatters:s,getMessageFallback:m,locale:l,onError:g,timeZone:d}=w(),v=e[o],E=f(r,o);return d||p||!h||(p=!0,g(new c(i.ENVIRONMENT_FALLBACK,void 0))),t((()=>u({cache:n,formatters:s,getMessageFallback:m,messages:v,namespace:E,onError:g,formats:a,locale:l,timeZone:d})),[n,s,m,v,E,g,a,l,d])}({\"!\":w().messages},e?`!.${e}`:\"!\",\"!\")}function Z(){return w().locale}function k(){return new Date}function b(e){const r=e?.updateInterval,{now:t}=w(),[a,s]=o(t||k());return n((()=>{if(!r)return;const e=setInterval((()=>{s(k())}),r);return()=>{clearInterval(e)}}),[t,r]),null==r&&t?t:a}function F(){return w().timeZone}function M(){const e=w();if(!e.messages)throw new Error(void 0);return e.messages}function I(){const{formats:e,formatters:r,locale:o,now:n,onError:a,timeZone:s}=w();return t((()=>l({formats:e,locale:o,now:n,onError:a,timeZone:s,_formatters:r})),[e,r,n,o,a,s])}function j(e,...r){let t,o;return\"string\"==typeof e?(t=r[0],o=r[1]):(t=e.values,o=e.formats),[void 0,t,o,void 0]}function x(e){const r=E(e);function t(...e){return r(...j(...e))}return t.rich=(...e)=>r.rich(...j(...e)),t.markup=(...e)=>r.markup(...j(...e)),t.has=function(e){return!0},t}export{v as IntlProvider,x as _useExtracted,I as useFormatter,Z as useLocale,M as useMessages,b as useNow,F as useTimeZone,E as useTranslations};\n","import { useState } from \"preact/hooks\";\nimport { resolveSetStateAction } from \"../../utils/helpers\";\n\ntype Setter<T> = React.Dispatch<React.SetStateAction<T>>;\n\nexport interface ValueState<T> {\n\tvalue: T;\n\tset: Setter<T>;\n}\n\nconst useValueState = <T>(\n\tinitialState: T,\n\tstateUpdateCallback?: (newValue: T) => void\n): Readonly<ValueState<T>> => {\n\tconst [state, setState] = useState<T>(initialState);\n\n\tconst wrappedSetState = (action: React.SetStateAction<T>) => {\n\t\tif (!stateUpdateCallback) {\n\t\t\treturn setState(action);\n\t\t}\n\t\tsetState(prev => {\n\t\t\tconst resolvedValue = resolveSetStateAction(action, prev);\n\t\t\tstateUpdateCallback(resolvedValue);\n\t\t\treturn resolvedValue;\n\t\t});\n\t};\n\treturn { value: state, set: wrappedSetState } as const;\n};\n\nexport default useValueState;\n","import { Inputs, useEffect, useRef, useState } from \"preact/hooks\";\n\nconst useOnce = (callback: (resolve: () => void) => void, deps?: Inputs) => {\n\tconst state = useState(false);\n\tconst effectRef = useRef(false);\n\n\tuseEffect(() => {\n\t\tif (!effectRef.current) {\n\t\t\tcallback(() => {\n\t\t\t\tstate[1](true);\n\t\t\t\teffectRef.current = true;\n\t\t\t});\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, deps);\n\n\treturn state;\n};\n\nexport default useOnce;\n","import { createContext } from \"preact\";\nimport { ValueState } from \"../hooks/common/use-value-state\";\nimport { ReturnViewState, WidgetViewState } from \"../types\";\nimport { WidgetConfiguration } from \"../utils/initialization/types\";\n\nexport interface IWidgetContext {\n\twidgetViewState: ValueState<WidgetViewState>;\n\treturnViewState: ValueState<ReturnViewState>;\n\tconfig: WidgetConfiguration;\n}\n\nexport const WidgetContext = createContext<IWidgetContext>(\n\t{} as IWidgetContext\n);\n","import { useContext } from \"preact/hooks\";\nimport { WidgetContext } from \"../../context/widget-context\";\n\nconst useWidgetContext = () => {\n\tconst context = useContext(WidgetContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t\"useWidgetContext must be used within a WidgetContextProvider\"\n\t\t);\n\t}\n\treturn context;\n};\n\nexport default useWidgetContext;\n","import { PLATFORM_URL } from \"../constants\";\nimport { clearCart } from \"./cart\";\nimport { getResolvedSearchParams } from \"./helpers\";\nimport { Locale } from \"./i18n\";\nimport { logger } from \"./logger\";\nimport { clearSession } from \"./shopify\";\n\nexport default {\n\tback: async (locale: Locale, slug: string, fallbackProductId?: string) => {\n\t\tconst constructedPlatformUrl = new URL(`/${locale}`, PLATFORM_URL);\n\n\t\tif (slug) {\n\t\t\tconstructedPlatformUrl.pathname += `/${slug}`;\n\t\t}\n\n\t\tconst searchParams = getResolvedSearchParams();\n\t\tconst lastExchangeProductId = searchParams.get(\"from\") ?? fallbackProductId;\n\n\t\tif (lastExchangeProductId) {\n\t\t\tconst strippedProductId = lastExchangeProductId.split(\"/\").at(-1);\n\n\t\t\tif (strippedProductId) {\n\t\t\t\tconstructedPlatformUrl.pathname += `/${strippedProductId}`;\n\t\t\t\tconstructedPlatformUrl.searchParams.append(\"step\", \"-1\");\n\t\t\t}\n\t\t}\n\n\t\tawait clearCart();\n\t\tclearSession();\n\n\t\twindow.location.href = constructedPlatformUrl.toString();\n\t},\n\tcontinue: (locale: Locale, slug: string) => {\n\t\tconst confirmationUrl = new URL(\n\t\t\t`/${locale}/${slug}/confirmation`,\n\t\t\tPLATFORM_URL\n\t\t);\n\n\t\tconst encodedSlug = encodeURIComponent(window.location.pathname);\n\t\tconfirmationUrl.searchParams.append(\"from\", encodedSlug);\n\n\t\twindow.location.href = confirmationUrl.toString();\n\t},\n\texit: async (clearCartOnExit: boolean = true) => {\n\t\tif (clearCartOnExit) {\n\t\t\ttry {\n\t\t\t\tawait clearCart();\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Failed to clear cart on exit\", err);\n\t\t\t}\n\t\t}\n\t\tclearSession();\n\t\twindow.location.reload();\n\t}\n};\n","import { createContext } from \"preact\";\nimport {\n\tCalculationParams,\n\tCartState\n} from \"../../components/providers/return-context-provider\";\nimport { IUseAsyncStateReturn } from \"../hooks/common/use-async-state\";\nimport { CalculationResponse } from \"../types\";\nimport { ProcessOrderInitializationReturn } from \"../utils/api\";\n\nexport interface IReturnContext {\n\torderState: IUseAsyncStateReturn<ProcessOrderInitializationReturn>;\n\tcartState: IUseAsyncStateReturn<CartState, ProcessOrderInitializationReturn>;\n\tcalculationState: IUseAsyncStateReturn<\n\t\tCalculationResponse,\n\t\tCalculationParams\n\t>;\n\tisPending: boolean;\n\thasFailed: boolean;\n}\n\nexport const ReturnContext = createContext<IReturnContext>(\n\t{} as IReturnContext\n);\n","import { useContext } from \"preact/hooks\";\nimport { ReturnContext } from \"../../context/return-context\";\n\nconst useReturnContext = () => {\n\tconst context = useContext(ReturnContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t\"useReturnContext must be used within a ReturnContextProvider\"\n\t\t);\n\t}\n\treturn context;\n};\n\nexport default useReturnContext;\n","import { IMAGE_FALLBACK_URL } from \"../../lib/constants\";\nimport { cn } from \"../../lib/utils/helpers\";\n\ninterface ImageProps\n\textends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n\tsrc: string | null | undefined;\n}\n\nconst Image = ({ src, className, ...props }: ImageProps) => {\n\treturn (\n\t\t<img\n\t\t\tsrc={src || IMAGE_FALLBACK_URL}\n\t\t\tclassName={cn(\"rf-image\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default Image;\n","const SkeletonContainer = ({\n\tpending = false,\n\tskeleton,\n\tchildren\n}: {\n\tpending?: boolean;\n\tskeleton: preact.ComponentChildren;\n\tchildren?: preact.ComponentChildren;\n}) => {\n\tswitch (pending) {\n\t\tcase true:\n\t\t\treturn skeleton;\n\t\tdefault:\n\t\t\treturn children;\n\t}\n};\n\nexport default SkeletonContainer;\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../../lib/utils/helpers\";\n\nconst avatarVariants = cva(\n\t\"rf-avatar size-[26px] rounded-full border overflow-hidden\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tlight: \"bg-white text-black border-[#E1E1E1]\",\n\t\t\t\tdark: \"bg-[#555555] text-white border-black\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"light\"\n\t\t}\n\t}\n);\n\nexport type AvatarVariants = VariantProps<typeof avatarVariants>;\n\ninterface AvatarProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tAvatarVariants {\n\tchildren: preact.ComponentChildren;\n}\n\nconst Avatar = ({ children, className, variant, ...props }: AvatarProps) => {\n\treturn (\n\t\t<div className={cn(avatarVariants({ variant }), className)} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default memo(Avatar);\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst Skeleton = ({\n\tclassName,\n\t...props\n}: Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-skeleton bg-neutral-2 animate-pulse rounded-md h-[1.5em]\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<span className=\"rf-skeleton__sr-text sr-only\">Loading...</span>\n\t\t</div>\n\t);\n};\n\nexport default Skeleton;\n","import Skeleton from \"../skeleton/skeleton\";\n\nconst AvatarStackSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-avatar-stack-skeleton flex -space-x-1\">\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[1]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[2]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t\t<div className=\"rf-avatar-stack-skeleton__item relative bg-neutral-2 rounded-full z-[3]\">\n\t\t\t\t<Skeleton className=\"size-[26px] rounded-full\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AvatarStackSkeleton;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport Image from \"../image\";\nimport SkeletonContainer from \"../skeleton/skeleton-container\";\nimport Avatar, { AvatarVariants } from \"./avatar\";\nimport AvatarStackSkeleton from \"./avatar-stack-skeleton\";\n\nexport interface AvatarImage {\n\tsrc: string | undefined;\n\talt: string;\n}\n\ninterface AvatarStackProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n\t\tAvatarVariants {\n\timages: AvatarImage[];\n\tmaxVisibleAvatars?: number | null;\n\tpending?: boolean;\n}\n\nconst AvatarStack = ({\n\timages,\n\tvariant,\n\tmaxVisibleAvatars = 2,\n\tclassName,\n\tpending = false,\n\t...props\n}: AvatarStackProps) => {\n\tconst sliceIndex = maxVisibleAvatars ?? images.length;\n\n\treturn (\n\t\t<SkeletonContainer skeleton={<AvatarStackSkeleton />} pending={pending}>\n\t\t\t{images.length > 0 && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\"rf-avatar-stack flex -space-x-1\", className)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{images.slice(0, sliceIndex).map(({ src, alt }, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\t\tclassName=\"relative\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tzIndex: index + 1\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tclassName=\"rf-avatar-stack__image size-full object-cover\"\n\t\t\t\t\t\t\t\t\tsrc={src}\n\t\t\t\t\t\t\t\t\talt={alt}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\t{sliceIndex < images.length && (\n\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tzIndex: sliceIndex + 1\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"flex items-center justify-center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"rf-avatar-stack__count text-[10px]\">\n\t\t\t\t\t\t\t\t+{images.length - sliceIndex}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default AvatarStack;\n","import { useMemo } from \"preact/hooks\";\nimport useReturnContext from \"../lib/hooks/context/use-return-context\";\nimport AvatarStack, { AvatarImage } from \"./ui/avatar/avatar-stack\";\n\nconst ReturnAvatarStack = () => {\n\tconst { orderState } = useReturnContext();\n\n\tconst formattedImages = useMemo(() => {\n\t\tconst exchangeProducts =\n\t\t\torderState.value.data?.orderData.productsToExchange ?? [];\n\t\treturn exchangeProducts.reduce<AvatarImage[]>((acc, product) => {\n\t\t\tfor (let i = 0; i < product.quantity; i++) {\n\t\t\t\tacc.push({\n\t\t\t\t\tsrc: product.image,\n\t\t\t\t\talt: product.title\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\t}, [orderState.value.data?.orderData.productsToExchange]);\n\n\treturn (\n\t\t<AvatarStack\n\t\t\tpending={orderState.value.pending}\n\t\t\tvariant=\"light\"\n\t\t\timages={formattedImages}\n\t\t/>\n\t);\n};\n\nexport default ReturnAvatarStack;\n","import { createContext } from \"preact\";\nimport { UseDialogRegisterReturn } from \"../hooks/common/use-dialog\";\n\nexport type IDialogContext = UseDialogRegisterReturn;\n\nexport const DialogContext = createContext<IDialogContext | null>(null);\n","import { useEffect, useState } from \"preact/hooks\";\n\nconst useIsMounted = () => {\n\tconst [mounted, setMounted] = useState(false);\n\n\tuseEffect(() => {\n\t\tsetMounted(true);\n\t}, []);\n\n\treturn mounted;\n};\n\nexport default useIsMounted;\n","import { createContext, RefObject } from \"preact\";\n\nexport const RootContext = createContext<RefObject<HTMLDivElement> | null>(\n\tnull\n);\n","import { useRef } from \"preact/hooks\";\nimport { cn } from \"../../../lib/utils/helpers\";\n\ninterface DialogBackdropProps extends React.HTMLAttributes<HTMLElement> {\n\tisVisible?: boolean;\n\tonClick?: () => void;\n}\n\nconst DialogBackdrop = ({\n\tonClick,\n\tclassName,\n\tchildren,\n\tisVisible = true,\n\t...props\n}: DialogBackdropProps) => {\n\tconst elementRef = useRef<HTMLElement>(null);\n\n\tfunction handleClick(event: preact.JSX.TargetedMouseEvent<HTMLElement>) {\n\t\tif (onClick && event.target === elementRef.current) {\n\t\t\tonClick();\n\t\t}\n\t}\n\n\treturn (\n\t\t<aside\n\t\t\tonClick={handleClick}\n\t\t\tref={elementRef}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__backdrop fixed inset-0 size-full z-50 flex items-center justify-center p-6\",\n\t\t\t\tisVisible && \"rf-dialog__backdrop--visible bg-black/50\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</aside>\n\t);\n};\n\nexport default DialogBackdrop;\n","const ArrowRightIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={9}\n\t\tviewBox=\"0 0 11 9\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-right ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M10.273 4.427 6.66.954a.55.55 0 0 0-.387-.153.56.56 0 0 0-.387.153l-.328.316a.52.52 0 0 0 0 .749l2.107 2.03H.973a.524.524 0 0 0-.54.517v.446c0 .29.238.54.54.54H7.69L5.56 7.594a.505.505 0 0 0 0 .74l.327.314c.103.099.24.153.387.153a.56.56 0 0 0 .387-.154l3.612-3.473a.513.513 0 0 0 0-.747\" />\n\t</svg>\n);\nexport default ArrowRightIcon;\n","const XIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={11}\n\t\tviewBox=\"0 0 11 11\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--x ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M1.45 10.572a.92.92 0 0 1-.655-.221.92.92 0 0 1 0-1.299l7.82-7.82a.921.921 0 0 1 1.344 1.253l-7.865 7.866a.92.92 0 0 1-.645.22\" />\n\t\t<path d=\"M9.26 10.572a.92.92 0 0 1-.645-.267l-7.82-7.82a.921.921 0 0 1 1.299-1.298l7.865 7.82a.92.92 0 0 1 0 1.344.92.92 0 0 1-.7.22\" />\n\t</svg>\n);\nexport default XIcon;\n","const Spinner = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => {\n\treturn (\n\t\t<svg\n\t\t\twidth=\"1.5em\"\n\t\t\theight=\"1.5em\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tfill=\"currentColor\"\n\t\t\tclassName={`rf-icon rf-icon--spinner ${className || \"\"}`}\n\t\t\t{...props}\n\t\t>\n\t\t\t<g>\n\t\t\t\t<path opacity={0.14} d=\"M11 1h2v5h-2z\" />\n\t\t\t\t<path opacity={0.29} d=\"m16.634 1.974 1.732 1-2.5 4.33-1.732-1z\" />\n\t\t\t\t<path opacity={0.43} d=\"m21.026 5.634 1 1.732-4.33 2.5-1-1.732z\" />\n\t\t\t\t<path opacity={0.57} d=\"M23 11v2h-5v-2z\" />\n\t\t\t\t<path opacity={0.71} d=\"m22.026 16.634-1 1.732-4.33-2.5 1-1.732z\" />\n\t\t\t\t<path opacity={0.86} d=\"m18.366 21.026-1.732 1-2.5-4.33 1.732-1z\" />\n\t\t\t\t<path d=\"M13 23h-2v-5h2z\" />\n\t\t\t\t<animateTransform\n\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\ttype=\"rotate\"\n\t\t\t\t\tcalcMode=\"discrete\"\n\t\t\t\t\tdur=\"0.75s\"\n\t\t\t\t\tvalues=\"0 12 12;30 12 12;60 12 12;90 12 12;120 12 12;150 12 12;180 12 12;210 12 12;240 12 12;270 12 12;300 12 12;330 12 12;360 12 12\"\n\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t);\n};\n\nexport default Spinner;\n","// components/ui/Button.tsx\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Spinner from \"../icons/spinner\";\n\nconst buttonVariants = cva(\n\t\"disabled:cursor-not-allowed h-12 rounded-md text-base font-medium flex items-center justify-center whitespace-nowrap gap-2 px-8 relative transition-all duration-300 ease-in-out [--icon-width:auto] [--icon-height:0.65em] desktop:[--icon-height:0.75em]\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-button-background text-button-foreground disabled:!bg-button-background-disabled disabled:!text-button-foreground-disabled desktop:hover:opacity-80\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-neutral-2 text-black bg-transparent disabled:!text-button-foreground-disabled desktop:hover:opacity-80\",\n\t\t\t\tghost:\n\t\t\t\t\t\"text-neutral-3 font-normal gap-1 disabled:!opacity-50 disabled:cursor-not-allowed desktop:hover:opacity-80\"\n\t\t\t}\n\t\t}\n\t}\n);\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof buttonVariants> {\n\ticon?: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;\n\ticonPosition?: \"left\" | \"right\";\n\tpending?: boolean;\n}\n\nconst Button = ({\n\tchildren,\n\tclassName,\n\ticon: Icon,\n\tvariant = \"primary\",\n\tpending = false,\n\tdisabled = false,\n\ticonPosition = \"right\",\n\t...props\n}: ButtonProps) => {\n\treturn (\n\t\t<button\n\t\t\taria-busy={pending}\n\t\t\tdisabled={disabled || pending}\n\t\t\ttype=\"button\"\n\t\t\tclassName={cn(\n\t\t\t\tbuttonVariants({ variant }),\n\t\t\t\t\"rf-button\",\n\t\t\t\t`rf-button--${variant}`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{pending && <Spinner className=\"absolute inset-0 m-auto\" />}\n\t\t\t<span\n\t\t\t\tclassName=\"rf-button__text\"\n\t\t\t\tstyle={{\n\t\t\t\t\tvisibility: pending ? \"hidden\" : \"visible\"\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t\t{!!Icon && (\n\t\t\t\t<Icon\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tvisibility: pending ? \"hidden\" : \"visible\"\n\t\t\t\t\t}}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-button__icon w-[var(--icon-width)] h-[var(--icon-height)]\",\n\t\t\t\t\t\ticonPosition === \"left\" ? \"-order-1\" : \"order-1\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</button>\n\t);\n};\n\nexport default memo(Button);\n","import { cn } from \"../../../lib/utils/helpers\";\nimport ArrowRightIcon from \"../../icons/arrow-right\";\nimport XIcon from \"../../icons/x\";\nimport Button from \"../../ui/button\";\nimport { ButtonProps } from \"../../ui/button\";\n\n// eslint-disable-next-line react-refresh/only-export-components\nconst Accept = ({ className, ...props }: ButtonProps) => {\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__button rf-dialog__button--accept w-full\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\ticon={ArrowRightIcon}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n// eslint-disable-next-line react-refresh/only-export-components\nconst Reject = ({ className, ...props }: ButtonProps) => {\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__button rf-dialog__button--reject w-full\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tvariant=\"outline\"\n\t\t\ticon={XIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default {\n\tAccept,\n\tReject\n};\n","import DialogModal, { type DialogModalProps } from \"./dialog-modal\";\nimport DialogTitle from \"./dialog-title\";\nimport DialogSubtitle from \"./dialog-subtitle\";\nimport DialogButton from \"./dialog-button\";\n\nexport type { DialogModalProps };\n\nconst Dialog = {\n\tModal: DialogModal,\n\tTitle: DialogTitle,\n\tSubtitle: DialogSubtitle,\n\tAccept: DialogButton.Accept,\n\tReject: DialogButton.Reject\n};\n\nexport default Dialog;\n","import { createPortal } from \"preact/compat\";\nimport { useEffect } from \"preact/hooks\";\nimport {\n\tDialogContext,\n\tIDialogContext\n} from \"../../../lib/context/dialog-context\";\nimport { UseDialogRegisterReturn } from \"../../../lib/hooks/common/use-dialog\";\nimport useIsMounted from \"../../../lib/hooks/common/use-is-mounted\";\nimport useRoot from \"../../../lib/hooks/context/use-root\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport DialogBackdrop from \"./dialog-backdrop\";\n\nexport interface DialogModalProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"onClose\">,\n\t\tUseDialogRegisterReturn {\n\tfadeIn?: boolean;\n\tshowBackdrop?: boolean;\n\tdismissOnBackdropClick?: boolean;\n\tdismissOnEscape?: boolean;\n}\n\nconst DialogModal = ({\n\tisOpen,\n\tonClose,\n\tfadeIn = true,\n\tshowBackdrop = true,\n\tdismissOnBackdropClick = true,\n\tdismissOnEscape,\n\tclassName,\n\t...props\n}: DialogModalProps) => {\n\tconst getRoot = useRoot();\n\tconst isMounted = useIsMounted();\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\tif (event.key === \"Escape\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClose?.();\n\t\t\t}\n\t\t};\n\n\t\tif (dismissOnEscape) {\n\t\t\tif (isOpen) {\n\t\t\t\tdocument.addEventListener(\"keydown\", handleEscape);\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener(\"keydown\", handleEscape);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (dismissOnEscape) {\n\t\t\t\tdocument.removeEventListener(\"keydown\", handleEscape);\n\t\t\t}\n\t\t};\n\t}, [dismissOnEscape, onClose, isOpen]);\n\n\tif (!isOpen || !isMounted) {\n\t\treturn null;\n\t}\n\n\tconst root = getRoot();\n\n\tif (!root) {\n\t\tlogger.error(\"Root element not found\");\n\t\treturn null;\n\t}\n\n\tconst contextValue: IDialogContext = {\n\t\tisOpen,\n\t\tonClose\n\t};\n\n\treturn createPortal(\n\t\t<DialogBackdrop\n\t\t\tclassName={fadeIn ? \"animate-fade-in\" : undefined}\n\t\t\tisVisible={showBackdrop}\n\t\t\tonClick={dismissOnBackdropClick ? onClose : undefined}\n\t\t>\n\t\t\t<DialogContext.Provider value={contextValue}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-dialog m-auto w-full p-8 rounded-lg bg-white shadow-lg max-w-2xl\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</DialogContext.Provider>\n\t\t</DialogBackdrop>,\n\t\troot\n\t);\n};\n\nexport default DialogModal;\n","import { useContext } from \"preact/hooks\";\nimport { ROOT_ELEMENT_ID } from \"../../constants\";\nimport { RootContext } from \"../../context/root-context\";\n\nconst useRoot = () => {\n\tconst context = useContext(RootContext);\n\tif (!context) {\n\t\tthrow new Error(\"useRoot must be used within a RootProvider\");\n\t}\n\treturn () => {\n\t\tconst rootElement = context.current;\n\t\tif (!rootElement) {\n\t\t\treturn document.getElementById(ROOT_ELEMENT_ID);\n\t\t}\n\t\treturn rootElement;\n\t};\n};\n\nexport default useRoot;\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst DialogTitle = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLHeadingElement>) => {\n\treturn (\n\t\t<h2\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__title text-2xl font-medium leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default DialogTitle;\n","import { cn } from \"../../../lib/utils/helpers\";\n\nconst DialogSubtitle = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => {\n\treturn (\n\t\t<p\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-dialog__subtitle text-neutral-3 py-2.5 leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default DialogSubtitle;\n","import { useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useDialog from \"../../lib/hooks/common/use-dialog\";\nimport useOnce from \"../../lib/hooks/common/use-once\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { isOnCartPage } from \"../../lib/utils/helpers\";\nimport navigation from \"../../lib/utils/navigation\";\nimport storage, {\n\tSTORAGE_OVERLAY_DIALOG_EXPIRY_KEY\n} from \"../../lib/utils/storage\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\nimport Dialog from \"./common\";\n\ntype DecisionState = \"cart_detection\" | \"cookie_detection\";\n\nconst ReturnDecisionDialog = () => {\n\tconst {\n\t\tconfig: { isFirstLoad }\n\t} = useWidgetContext();\n\tconst [decisionState, setDecisionState] = useState<DecisionState | null>(\n\t\tnull\n\t);\n\n\tuseOnce(resolve => {\n\t\tresolve();\n\n\t\tif (isOnCartPage()) {\n\t\t\tsetDecisionState(\"cart_detection\");\n\t\t} else if (!isFirstLoad) {\n\t\t\tconst expiration = storage.get<number>(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\t\t\tif (expiration && Date.now() > expiration) {\n\t\t\t\tstorage.remove(STORAGE_OVERLAY_DIALOG_EXPIRY_KEY);\n\t\t\t\tsetDecisionState(\"cookie_detection\");\n\t\t\t}\n\t\t}\n\t}, []);\n\n\tif (!decisionState) {\n\t\treturn null;\n\t}\n\n\treturn <DecisionDialog decisionState={decisionState} />;\n};\n\nfunction DecisionDialog({ decisionState }: { decisionState: DecisionState }) {\n\tconst t = useTranslations(`dialog.return_decision.${decisionState}`);\n\tconst { widgetViewState } = useWidgetContext();\n\tconst modal = useDialog(true);\n\n\tconst dialog = modal.register();\n\n\tfunction handleConfirm() {\n\t\tdialog.onClose();\n\t\tif (decisionState === \"cart_detection\") {\n\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t}\n\t}\n\n\tfunction handleReject() {\n\t\tnavigation.exit();\n\t}\n\n\treturn (\n\t\t<Dialog.Modal\n\t\t\tclassName=\"text-center flex flex-col gap-2 items-center\"\n\t\t\t{...dialog}\n\t\t>\n\t\t\t<ReturnAvatarStack />\n\t\t\t<Dialog.Title>{t(\"title\")}</Dialog.Title>\n\t\t\t<Dialog.Subtitle>{t(\"subtext\")}</Dialog.Subtitle>\n\t\t\t<Dialog.Accept onClick={handleConfirm}>{t(\"confirm\")}</Dialog.Accept>\n\t\t\t<Dialog.Reject onClick={handleReject}>{t(\"reject\")}</Dialog.Reject>\n\t\t</Dialog.Modal>\n\t);\n}\n\nexport default ReturnDecisionDialog;\n","import useValueState, { ValueState } from \"./use-value-state\";\n\nexport interface UseDialogRegisterReturn {\n\tisOpen: boolean;\n\tonClose: () => void;\n}\n\nexport interface UseDialogReturn {\n\tregister: () => UseDialogRegisterReturn;\n\tstate: ValueState<boolean>;\n}\n\nconst useDialog = (initialState: boolean = false): UseDialogReturn => {\n\tconst state = useValueState<boolean>(initialState);\n\n\tconst onClose = () => state.set(false);\n\n\tfunction register() {\n\t\treturn {\n\t\t\tisOpen: state.value,\n\t\t\tonClose\n\t\t};\n\t}\n\n\treturn {\n\t\tregister,\n\t\tstate\n\t} as const;\n};\n\nexport default useDialog;\n","import ReturnDecisionDialog from \"../dialog/return-decision-dialog\";\n\nconst DialogHandler = () => {\n\treturn (\n\t\t<>\n\t\t\t<ReturnDecisionDialog />\n\t\t</>\n\t);\n};\n\nexport default DialogHandler;\n","import { createContext } from \"preact\";\nimport { ToastOptions, ToastQueue } from \"../../components/toast/toast\";\n\nexport interface ToastConfiguration extends Omit<ToastOptions, \"id\"> {\n\tid?: string; // Make id optional for easier usage\n}\n\nexport const DEFAULT_TOAST_DURATION = 5000; // Default duration in milliseconds\nexport const TOAST_ANIMATION_DURATION = 300; // Default animation duration in milliseconds\n\nexport interface IToastContext {\n\tqueue: ToastQueue[];\n\tadd: (options: ToastConfiguration) => string; // Returns the ID of the added toast\n\tremove: (id: string) => void;\n\tclear: () => void;\n}\n\nexport const ToastContext = createContext<IToastContext>({} as IToastContext);\n","import { useContext } from \"preact/hooks\";\nimport { ToastContext } from \"../../context/toast-context\";\n\nconst useToast = () => {\n\tconst context = useContext(ToastContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"useToast must be used within a ToastProvider\");\n\t}\n\n\treturn context;\n};\n\nexport default useToast;\n","import { useEffect } from \"preact/hooks\";\nimport {\n\temitEvent,\n\tregisterBridge,\n\tunregisterBridge\n} from \"../../../../api/state-bridge\";\nimport { WidgetViewState } from \"../../types\";\nimport useReturnContext from \"../context/use-return-context\";\nimport useToast from \"../context/use-toast\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\n/**\n * Hook that registers the widget's React state with the API bridge.\n * This allows the public API to interact with the widget's internal state.\n */\nconst useApiBridge = () => {\n\tconst { widgetViewState, config } = useWidgetContext();\n\tconst returnContext = useReturnContext();\n\tconst toastContext = useToast();\n\n\t// Register the bridge on mount, unregister on unmount\n\tuseEffect(() => {\n\t\tregisterBridge({ widgetViewState, returnContext, toastContext, config });\n\n\t\treturn () => {\n\t\t\tunregisterBridge();\n\t\t};\n\t}, [widgetViewState, returnContext, toastContext, config]);\n\n\t// Emit drawer state change events\n\tuseEffect(() => {\n\t\tconst state = widgetViewState.value;\n\t\tif (state === WidgetViewState.Open) {\n\t\t\temitEvent(\"drawer:open\");\n\t\t} else {\n\t\t\temitEvent(\"drawer:close\");\n\t\t}\n\t}, [widgetViewState.value]);\n\n\t// Emit cart update events\n\tuseEffect(() => {\n\t\tconst cart = returnContext.cartState.value.data?.original;\n\t\tif (cart) {\n\t\t\temitEvent(\"cart:updated\", cart);\n\t\t}\n\t}, [returnContext.cartState.value.data]);\n\n\t// Emit calculation update events\n\tuseEffect(() => {\n\t\tconst calculation = returnContext.calculationState.value.data;\n\t\tif (calculation) {\n\t\t\temitEvent(\"calculation:updated\", calculation);\n\t\t}\n\t}, [returnContext.calculationState.value.data]);\n};\n\nexport default useApiBridge;\n","export enum ProductErrorState {\n\tUnknown = \"unknown_error\",\n\tNetworkError = \"network_error\",\n\tProductLimit = \"product_limit\"\n}\n\nconst PRODUCT_ERROR_CODE_TO_STATE = {\n\t422: ProductErrorState.ProductLimit\n} satisfies Partial<Record<number, ProductErrorState>>;\n\nexport function getErrorStateFromCode(code: number | null): ProductErrorState {\n\tif (code !== null && code in PRODUCT_ERROR_CODE_TO_STATE) {\n\t\treturn PRODUCT_ERROR_CODE_TO_STATE[\n\t\t\tcode as keyof typeof PRODUCT_ERROR_CODE_TO_STATE\n\t\t];\n\t}\n\treturn ProductErrorState.Unknown;\n}\n","import { TimeoutInterceptorHandler } from \".\";\nimport { CustomEventPayloadMap, InternalCustomEvent } from \"../custom-events\";\nimport { logger } from \"../logger\";\n\nexport type FetchInterceptionCallback = (\n\tpayload: CustomEventPayloadMap[InternalCustomEvent.FetchInterception]\n) => void;\n\nfunction createFetchInterceptor(\n\tcallback?: FetchInterceptionCallback\n): TimeoutInterceptorHandler {\n\tlogger.info(\"Initializing fetch interceptor\");\n\n\tconst originalFetch = window.fetch;\n\n\twindow.__rf_original_fetch ??= originalFetch;\n\twindow.fetch.rf_interception = true;\n\n\tconst proxy = new Proxy(originalFetch, {\n\t\tapply: async function (target, arg, argumentsList) {\n\t\t\tconst requestUrl: string | URL = argumentsList[0];\n\n\t\t\t// Call the original fetch and get the response\n\t\t\tconst response = (await Reflect.apply(target, arg, argumentsList)) as\n\t\t\t\t| Response\n\t\t\t\t| undefined;\n\n\t\t\t// Clone the response for our processing (so other scripts can still use the original)\n\t\t\tconst clonedResponse = response?.clone();\n\n\t\t\tcallback?.({\n\t\t\t\tresponse: clonedResponse,\n\t\t\t\trequestUrl\n\t\t\t});\n\n\t\t\treturn response;\n\t\t}\n\t});\n\n\twindow.fetch = proxy;\n\n\t// Return cleanup function\n\treturn (interval: NodeJS.Timeout | undefined) => {\n\t\tif (!window.__rf_original_fetch) return;\n\n\t\tlogger.info(\"Resetting fetch interceptor\");\n\t\twindow.fetch = window.__rf_original_fetch;\n\t\twindow.fetch.rf_interception = false;\n\n\t\tif (interval) {\n\t\t\tclearInterval(interval);\n\t\t}\n\t};\n}\n\nexport default createFetchInterceptor;\n","import { TimeoutInterceptorHandler } from \".\";\nimport {\n\tCustomEventPayloadMap,\n\tInterceptionPayload,\n\tInternalCustomEvent,\n\tXHRResponse\n} from \"../custom-events\";\nimport { logger } from \"../logger\";\n\nexport type XHRInterceptionCallback = (\n\tpayload: CustomEventPayloadMap[InternalCustomEvent.XHRInterception]\n) => void;\n\nfunction createXHRInterceptor(\n\tcallback?: XHRInterceptionCallback\n): TimeoutInterceptorHandler {\n\tlogger.info(\"Initializing XHR interceptor\");\n\n\tconst originalXHR = window.XMLHttpRequest;\n\twindow.__rf_original_xhr ??= originalXHR;\n\n\t// Create a proxy for the XMLHttpRequest constructor\n\tconst XHRProxy = new Proxy(originalXHR, {\n\t\tconstruct: function (target, argumentsList) {\n\t\t\t// Create the original XHR instance\n\t\t\tconst xhr = new target(\n\t\t\t\t...(argumentsList as ConstructorParameters<typeof XMLHttpRequest>)\n\t\t\t);\n\n\t\t\t// Store original methods\n\t\t\tconst originalOpen = xhr.open;\n\t\t\tconst originalSend = xhr.send;\n\n\t\t\t// Track request data\n\t\t\tlet requestUrl: string = \"\";\n\n\t\t\t// Intercept open method to capture URL and method\n\t\t\txhr.open = function (\n\t\t\t\tmethod: string,\n\t\t\t\turl: string,\n\t\t\t\tasync?: boolean,\n\t\t\t\tuser?: string,\n\t\t\t\tpassword?: string\n\t\t\t) {\n\t\t\t\trequestUrl = url;\n\t\t\t\treturn originalOpen.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl,\n\t\t\t\t\tasync ?? false,\n\t\t\t\t\tuser,\n\t\t\t\t\tpassword\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Intercept send method to capture request body and set up response handling\n\t\t\txhr.send = function (body) {\n\t\t\t\t// Set up event listeners for response handling\n\t\t\t\tconst originalOnReadyStateChange = xhr.onreadystatechange;\n\n\t\t\t\txhr.onreadystatechange = function (event) {\n\t\t\t\t\t// Call original handler first\n\t\t\t\t\tif (originalOnReadyStateChange) {\n\t\t\t\t\t\toriginalOnReadyStateChange.call(this, event);\n\t\t\t\t\t}\n\n\t\t\t\t\t// If request is complete, trigger our callback\n\t\t\t\t\tif (xhr.readyState === XMLHttpRequest.DONE) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcallback?.(resolveXHRPayload(xhr, requestUrl));\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tlogger.error(\"Error in XHR interception callback:\", error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Also handle load event as backup\n\t\t\t\tconst originalOnLoad = xhr.onload;\n\n\t\t\t\txhr.onload = function (event) {\n\t\t\t\t\tif (originalOnLoad) {\n\t\t\t\t\t\toriginalOnLoad.call(this, event);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trigger callback if onreadystatechange didn't fire\n\t\t\t\t\tif (xhr.readyState === XMLHttpRequest.DONE) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcallback?.(resolveXHRPayload(xhr, requestUrl));\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tlogger.error(\"Error in XHR interception callback:\", error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn originalSend.call(this, body);\n\t\t\t};\n\n\t\t\treturn xhr;\n\t\t}\n\t});\n\n\t// Mark as intercepted and replace global XMLHttpRequest\n\twindow.XMLHttpRequest.rf_interception = true;\n\twindow.XMLHttpRequest = XHRProxy;\n\n\t// Return cleanup function\n\treturn (interval?: NodeJS.Timeout) => {\n\t\tif (!window.__rf_original_xhr) return;\n\n\t\tlogger.info(\"Resetting XHR interceptor\");\n\t\twindow.XMLHttpRequest = window.__rf_original_xhr;\n\t\twindow.XMLHttpRequest.rf_interception = false;\n\n\t\tif (interval) {\n\t\t\tclearInterval(interval);\n\t\t}\n\t};\n}\n\nfunction resolveXHRPayload(\n\txhr: XMLHttpRequest,\n\turl: string\n): InterceptionPayload {\n\tlet response: XHRResponse;\n\n\tconst isTextResponse = xhr.responseType === \"text\";\n\tconst isJsonResponse =\n\t\txhr.responseType === \"json\" ||\n\t\txhr.getResponseHeader(\"Content-Type\")?.includes(\"application/json\");\n\n\tif (isTextResponse) {\n\t\ttry {\n\t\t\tresponse = JSON.parse(xhr.response);\n\t\t} catch (_) {\n\t\t\t// Ignore JSON parsing errors\n\t\t}\n\t} else if (isJsonResponse) {\n\t\tresponse = xhr.response;\n\t}\n\n\treturn {\n\t\tresponse,\n\t\trequestUrl: url\n\t};\n}\n\nexport default createXHRInterceptor;\n","import { InterceptionResponse } from \"../custom-events\";\nimport {\n\tAutoOpenTriggerEndpoint,\n\tNetworkInterceptionMethod\n} from \"../initialization/types\";\nimport { logger } from \"../logger\";\nimport createFetchInterceptor, { FetchInterceptionCallback } from \"./fetch\";\nimport createXHRInterceptor, { XHRInterceptionCallback } from \"./xhr\";\n\nconst ADD_ENDPOINTS = [\"/cart/add\", \"/cart/add.js\"] as const;\nconst UPDATE_ENDPOINTS = [\"/cart/update\", \"/cart/update.js\"] as const;\nconst CHANGE_ENDPOINTS = [\"/cart/change\", \"/cart/change.js\"] as const;\nconst CLEAR_ENDPOINTS = [\"/cart/clear\", \"/cart/clear.js\"] as const;\n\nconst ENDPOINTS = {\n\tadd: ADD_ENDPOINTS,\n\tupdate: UPDATE_ENDPOINTS,\n\tchange: CHANGE_ENDPOINTS\n} as const satisfies Record<AutoOpenTriggerEndpoint, readonly string[]>;\n\ntype Endpoints = (typeof ENDPOINTS)[keyof typeof ENDPOINTS];\n\nconst ENDPOINTS_TO_INTERCEPT = [\n\t...ADD_ENDPOINTS,\n\t...UPDATE_ENDPOINTS,\n\t...CHANGE_ENDPOINTS,\n\t...CLEAR_ENDPOINTS,\n\t\"/?section_id=cart-drawer\", // Shopify Dawn and other themes use this on item add\n\t\"/api/unstable/graphql.json?operation_name=cartQuery\" // Sometimes Cranks&Coffee calls this on item add\n];\n\ntype InterceptionCallback = FetchInterceptionCallback | XHRInterceptionCallback;\nexport type TimeoutInterceptorHandler = (\n\tinterval?: NodeJS.Timeout | undefined\n) => void;\n\ntype InitializeNetworkOptions = {\n\tmonitor?: boolean;\n\tmethod?: NetworkInterceptionMethod;\n};\n\nexport function initializeNetworkInterceptors(\n\tcallback: InterceptionCallback,\n\topts: InitializeNetworkOptions = {}\n) {\n\tconst { monitor = false, method } = opts;\n\n\tif (method === \"none\") {\n\t\tlogger.warn(\n\t\t\t\"Network interception method set to 'none'; skipping interceptor initialization.\"\n\t\t);\n\t\treturn () => {};\n\t}\n\n\tlet cleanupFetchHandler: TimeoutInterceptorHandler | undefined;\n\tlet cleanupXHRHandler: TimeoutInterceptorHandler | undefined;\n\n\tlet resolvedMethod: Exclude<NetworkInterceptionMethod, \"none\">;\n\n\tswitch (method) {\n\t\tcase \"fetch\": {\n\t\t\tresolvedMethod = \"fetch\";\n\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"xhr\": {\n\t\t\tresolvedMethod = \"xhr\";\n\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"both\":\n\t\tdefault: {\n\t\t\tresolvedMethod = \"both\";\n\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlogger.info(`Using network interception method: ${resolvedMethod}`);\n\n\tlet interval: NodeJS.Timeout | undefined;\n\n\tif (monitor) {\n\t\tlogger.info(\"Monitoring network interceptors\");\n\n\t\tinterval = setInterval(() => {\n\t\t\tif (cleanupFetchHandler && !window.fetch.rf_interception) {\n\t\t\t\tlogger.info(\"Re-initializing fetch interceptor\");\n\t\t\t\tcleanupFetchHandler(interval);\n\t\t\t\tcleanupFetchHandler = createFetchInterceptor(callback);\n\t\t\t}\n\t\t\tif (cleanupXHRHandler && !window.XMLHttpRequest.rf_interception) {\n\t\t\t\tlogger.info(\"Re-initializing XHR interceptor\");\n\t\t\t\tcleanupXHRHandler(interval);\n\t\t\t\tcleanupXHRHandler = createXHRInterceptor(callback);\n\t\t\t}\n\t\t}, 200);\n\t}\n\n\treturn () => {\n\t\tcleanupFetchHandler?.(interval);\n\t\tcleanupXHRHandler?.(interval);\n\t};\n}\n\nexport interface UrlValidationResult {\n\tisValid: boolean;\n\tisForbidden: boolean;\n\tisTriggerEndpoint: boolean;\n\ttriggerEndpointPaths: Endpoints;\n}\n\nexport function validateInterceptionRequestUrl(\n\trequestUrl: string | undefined | null,\n\ttriggerEndpoint?: AutoOpenTriggerEndpoint\n): UrlValidationResult {\n\tconst triggerEndpointValue = triggerEndpoint ?? \"add\";\n\tconst triggerEndpointPaths = ENDPOINTS[triggerEndpointValue];\n\n\t// Early return for invalid input\n\tif (!requestUrl || typeof requestUrl !== \"string\") {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisForbidden: false,\n\t\t\tisTriggerEndpoint: false,\n\t\t\ttriggerEndpointPaths\n\t\t};\n\t}\n\n\tconst BLOCKED_PATTERNS = [\"?_\", \"rf=true\"];\n\n\t// Check for forbidden patterns\n\tconst isForbidden = BLOCKED_PATTERNS.some(pattern =>\n\t\trequestUrl.includes(pattern)\n\t);\n\n\t// Check if URL matches any intercepted endpoints\n\tconst matchesInterceptedEndpoint = ENDPOINTS_TO_INTERCEPT.some(endpoint =>\n\t\trequestUrl.includes(endpoint)\n\t);\n\n\t// Check if it's an add endpoint (only if valid)\n\tconst isTriggerEndpoint = triggerEndpointPaths.some(endpoint =>\n\t\trequestUrl.includes(endpoint)\n\t);\n\n\tconst isValid = !isForbidden && matchesInterceptedEndpoint;\n\n\t// Early return if not valid\n\tif (!isValid) {\n\t\treturn {\n\t\t\tisValid: false,\n\t\t\tisForbidden,\n\t\t\tisTriggerEndpoint,\n\t\t\ttriggerEndpointPaths\n\t\t};\n\t}\n\n\treturn {\n\t\tisValid: true,\n\t\tisForbidden: false,\n\t\tisTriggerEndpoint,\n\t\ttriggerEndpointPaths\n\t};\n}\n\nexport async function parseInterceptionResponse(\n\tresponse: InterceptionResponse\n): Promise<Record<string, unknown> | undefined> {\n\tif (!response) return undefined;\n\n\tif (response instanceof Response) {\n\t\t// If it's a Response, we need to parse it\n\t\treturn (await response.json().catch(() => undefined)) as\n\t\t\t| Record<string, unknown>\n\t\t\t| undefined;\n\t} else if (typeof response === \"string\") {\n\t\t// If it's a string, attempt to parse as JSON (typically from XHR)\n\t\ttry {\n\t\t\treturn JSON.parse(response);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\treturn response;\n}\n","import { createContext } from \"preact\";\nimport { UseArrayReturn } from \"../hooks/common/use-array\";\n\nexport type CustomError = {\n\tid: string;\n\tmessage: preact.ComponentChildren;\n\tblocking?: boolean; // Indicates if the error is blocking the flow\n};\n\nexport interface IErrorContext\n\textends Omit<UseArrayReturn<CustomError>, \"array\"> {\n\terrors: UseArrayReturn<CustomError>[\"array\"];\n}\n\nexport const ErrorContext = createContext<IErrorContext>({} as IErrorContext);\n","import { useContext } from \"preact/hooks\";\nimport { ErrorContext } from \"../../context/error-context\";\n\nconst useErrors = () => {\n\tconst context = useContext(ErrorContext);\n\tif (!context) {\n\t\tthrow new Error(\"useErrors must be used within an ErrorProvider\");\n\t}\n\treturn context;\n};\n\nexport default useErrors;\n","import { useCallback, useMemo } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport { ShopifyCart, ShopifyCartItem } from \"../../types\";\nimport {\n\tcompareCarts,\n\tgetCart,\n\tnormalizeCart,\n\tNormalizeCartResult,\n\tupdateCartStorage\n} from \"../../utils/cart\";\nimport { InterceptionResponse } from \"../../utils/custom-events\";\nimport { getErrorStateFromCode } from \"../../utils/errors\";\nimport { parseInterceptionResponse } from \"../../utils/interceptor\";\nimport useErrors from \"../context/use-errors\";\nimport useReturnContext from \"../context/use-return-context\";\nimport useToast from \"../context/use-toast\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useCartActions = () => {\n\tconst t = useTranslations();\n\tconst { add: addToast } = useToast();\n\tconst { cartState, orderState, calculationState } = useReturnContext();\n\tconst {\n\t\tconfig: {\n\t\t\tdata: { returnData }\n\t\t}\n\t} = useWidgetContext();\n\tconst errors = useErrors();\n\n\tconst lineItems = useMemo(() => returnData?.items ?? [], [returnData?.items]);\n\n\tconst isNewItem = useCallback(\n\t\t(item: ShopifyCartItem, originalCart: ShopifyCart | null) => {\n\t\t\tconst existing = originalCart?.items.find(\n\t\t\t\te => e.variant_id === item.variant_id\n\t\t\t);\n\t\t\tif (!existing) return true;\n\t\t\treturn existing.quantity !== item.quantity;\n\t\t},\n\t\t[]\n\t);\n\n\tconst notifyExclusions = useCallback(\n\t\t(\n\t\t\tresult: NormalizeCartResult<ShopifyCart>,\n\t\t\toriginalCart: ShopifyCart | null\n\t\t) => {\n\t\t\tconst newExcludedItems = result.excludedItems.filter(item =>\n\t\t\t\tisNewItem(item, originalCart)\n\t\t\t);\n\t\t\tconst newBundleItems = result.bundleItems.filter(item =>\n\t\t\t\tisNewItem(item, originalCart)\n\t\t\t);\n\n\t\t\tif (newExcludedItems.length > 0) {\n\t\t\t\taddToast({\n\t\t\t\t\ttone: \"error\",\n\t\t\t\t\tmessage: t.rich(\"toast.product_exchange_error\", {\n\t\t\t\t\t\tproduct_name: newExcludedItems[0].title,\n\t\t\t\t\t\tb: chunks => (\n\t\t\t\t\t\t\t<span className=\"text-neutral-3 inline-block\">{chunks}</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (newBundleItems.length > 0) {\n\t\t\t\taddToast({\n\t\t\t\t\ttone: \"error\",\n\t\t\t\t\tmessage: t.rich(\"toast.bundle_exchange_error\", {\n\t\t\t\t\t\tproduct_name: newBundleItems[0].title,\n\t\t\t\t\t\tb: chunks => (\n\t\t\t\t\t\t\t<span className=\"text-neutral-3 inline-block\">{chunks}</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[isNewItem, t, addToast]\n\t);\n\n\t// --- Public API ---\n\n\tconst fetchAndUpdateCart = useCallback(async () => {\n\t\tconst order = orderState.value.data;\n\t\tif (!order) return null;\n\n\t\tconst originalCart = cartState.value.data?.original ?? null;\n\n\t\tlet freshCart: ShopifyCart;\n\t\ttry {\n\t\t\tfreshCart = await getCart(false);\n\t\t} catch (err) {\n\t\t\tcartState.set(prev => ({\n\t\t\t\t...prev,\n\t\t\t\tpending: false,\n\t\t\t\terror: err as Error\n\t\t\t}));\n\t\t\treturn null;\n\t\t}\n\n\t\tconst productRules = order.orderData.productRules;\n\t\tconst result = normalizeCart(freshCart, productRules);\n\n\t\tnotifyExclusions(result, originalCart);\n\n\t\tconst hasChanged =\n\t\t\t!originalCart ||\n\t\t\t!compareCarts({\n\t\t\t\tcart1: originalCart,\n\t\t\t\tcart2: freshCart,\n\t\t\t\trules: productRules\n\t\t\t});\n\n\t\t// Always update state so the raw original cart stays in sync\n\t\t// (e.g. bundle items filtered by normalizeCart need to be in\n\t\t// originalCart for notifyExclusions to work on subsequent changes)\n\t\tcartState.set({\n\t\t\tdata: {\n\t\t\t\toriginal: freshCart,\n\t\t\t\ttransformed: result.cart\n\t\t\t},\n\t\t\tpending: false,\n\t\t\terror: null\n\t\t});\n\t\tupdateCartStorage(freshCart);\n\n\t\treturn {\n\t\t\torder,\n\t\t\toriginalCart,\n\t\t\tfreshCart,\n\t\t\ttransformedCart: result.cart,\n\t\t\tproductRules,\n\t\t\thasChanged\n\t\t};\n\t}, [orderState, cartState, notifyExclusions]);\n\n\tconst processCartUpdate = useCallback(\n\t\tasync (cart: ShopifyCart) => {\n\t\t\tconst order = orderState.value.data;\n\t\t\tif (!order) return null;\n\n\t\t\tconst originalCart = cartState.value.data?.original ?? null;\n\t\t\tconst productRules = order.orderData.productRules;\n\t\t\tconst result = normalizeCart(cart, productRules);\n\n\t\t\tnotifyExclusions(result, originalCart);\n\n\t\t\tcartState.set({\n\t\t\t\tdata: {\n\t\t\t\t\toriginal: cart,\n\t\t\t\t\ttransformed: result.cart\n\t\t\t\t},\n\t\t\t\tpending: false,\n\t\t\t\terror: null\n\t\t\t});\n\n\t\t\tupdateCartStorage(cart);\n\n\t\t\tawait calculationState.query({\n\t\t\t\tcart: result.cart,\n\t\t\t\torderId: order.orderData.id,\n\t\t\t\tlineItems\n\t\t\t});\n\n\t\t\treturn { transformedCart: result.cart, productRules };\n\t\t},\n\t\t[orderState, cartState, calculationState, lineItems, notifyExclusions]\n\t);\n\n\tconst handleResponseErrors = useCallback(\n\t\tasync (response: InterceptionResponse) => {\n\t\t\tconst responseBody = await parseInterceptionResponse(response);\n\n\t\t\tif (responseBody) {\n\t\t\t\tlet status: number | undefined;\n\n\t\t\t\tif (\"status\" in responseBody) {\n\t\t\t\t\tconst raw = responseBody.status;\n\t\t\t\t\tstatus = typeof raw === \"number\" ? raw : undefined;\n\t\t\t\t}\n\n\t\t\t\tif (status && !errors.has(status)) {\n\t\t\t\t\tconst errState = getErrorStateFromCode(status);\n\t\t\t\t\terrors.push({\n\t\t\t\t\t\tid: errState,\n\t\t\t\t\t\tmessage: t(`product.error.${errState}`)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[t, errors]\n\t);\n\n\tconst triggerCalculation = useCallback(\n\t\t(transformedCart: ShopifyCart, orderId: string) => {\n\t\t\tcalculationState.query({\n\t\t\t\tcart: transformedCart,\n\t\t\t\torderId,\n\t\t\t\tlineItems\n\t\t\t});\n\t\t},\n\t\t[calculationState, lineItems]\n\t);\n\n\treturn {\n\t\tfetchAndUpdateCart,\n\t\tprocessCartUpdate,\n\t\thandleResponseErrors,\n\t\ttriggerCalculation\n\t};\n};\n\nexport default useCartActions;\n","import { useCallback, useEffect, useState } from \"preact/hooks\";\nimport { ReturnViewState, WidgetViewState } from \"../../types\";\nimport customEvents, {\n\tCustomEventPayloadMap,\n\tInternalCustomEvent\n} from \"../../utils/custom-events\";\nimport {\n\tinitializeNetworkInterceptors,\n\tvalidateInterceptionRequestUrl\n} from \"../../utils/interceptor\";\nimport { logger } from \"../../utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\nimport useCartActions from \"./use-cart-actions\";\n\nconst useFetchInterceptor = () => {\n\tconst {\n\t\twidgetViewState,\n\t\treturnViewState,\n\t\tconfig: {\n\t\t\toptions: {\n\t\t\t\tautoOpen,\n\t\t\t\tautoOpenTriggerEndpoint: triggerEndpoint,\n\t\t\t\tautoOpenTriggerMethod: triggerMethod,\n\t\t\t\tmonitorNetworkOverwrites,\n\t\t\t\tnetworkInterceptionMethod\n\t\t\t}\n\t\t}\n\t} = useWidgetContext();\n\n\tconst { fetchAndUpdateCart, handleResponseErrors, triggerCalculation } =\n\t\tuseCartActions();\n\n\tconst [initialized, setInitialized] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (networkInterceptionMethod !== \"none\") {\n\t\t\tlet resetInterceptor:\n\t\t\t\t| ReturnType<typeof initializeNetworkInterceptors>\n\t\t\t\t| undefined;\n\n\t\t\ttry {\n\t\t\t\t// Initialize the fetch interceptor only once\n\t\t\t\tresetInterceptor = initializeNetworkInterceptors(\n\t\t\t\t\tpayload =>\n\t\t\t\t\t\tcustomEvents.publish(\n\t\t\t\t\t\t\tInternalCustomEvent.FetchInterception,\n\t\t\t\t\t\t\tpayload\n\t\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tmonitor: monitorNetworkOverwrites,\n\t\t\t\t\t\tmethod: networkInterceptionMethod\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tsetInitialized(true);\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Error initializing fetch interceptor:\", error);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tresetInterceptor?.();\n\t\t\t};\n\t\t}\n\t\tsetInitialized(false);\n\t}, [monitorNetworkOverwrites, networkInterceptionMethod]);\n\n\ttype FetchInterceptionEvent = CustomEvent<\n\t\tCustomEventPayloadMap[InternalCustomEvent.FetchInterception]\n\t>;\n\n\tconst handleInterceptionEvent = useCallback(\n\t\tasync ({ detail: { response, requestUrl } }: FetchInterceptionEvent) => {\n\t\t\tconst stringifiedUrl =\n\t\t\t\trequestUrl instanceof URL ? requestUrl.toString() : requestUrl;\n\n\t\t\tconst urlValidation = validateInterceptionRequestUrl(\n\t\t\t\tstringifiedUrl,\n\t\t\t\ttriggerEndpoint\n\t\t\t);\n\t\t\tconst { isValid, isForbidden, isTriggerEndpoint } = urlValidation;\n\n\t\t\tif (!isValid || isForbidden) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Intercepted request to ${stringifiedUrl} is invalid or forbidden.`,\n\t\t\t\t\turlValidation\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlogger.info(`Intercepted request to ${stringifiedUrl}`, urlValidation);\n\n\t\t\tconst result = await fetchAndUpdateCart();\n\t\t\tif (!result) return;\n\n\t\t\tconst { transformedCart, hasChanged } = result;\n\n\t\t\tawait handleResponseErrors(response);\n\n\t\t\tif (hasChanged) {\n\t\t\t\ttriggerCalculation(transformedCart, result.order.orderData.id);\n\t\t\t}\n\n\t\t\t// Determine if the widget overlay should be triggered\n\t\t\tswitch (triggerMethod) {\n\t\t\t\tcase \"change\":\n\t\t\t\t\tif (!hasChanged) return;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"endpoint\":\n\t\t\t\t\tif (!isTriggerEndpoint) return;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"combination\":\n\t\t\t\tdefault:\n\t\t\t\t\tif (!isTriggerEndpoint || !hasChanged) return;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Collapse the return view state\n\t\t\treturnViewState.set(ReturnViewState.Collapsed);\n\t\t\tif (autoOpen !== false) {\n\t\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tfetchAndUpdateCart,\n\t\t\thandleResponseErrors,\n\t\t\ttriggerCalculation,\n\t\t\twidgetViewState,\n\t\t\treturnViewState,\n\t\t\tautoOpen,\n\t\t\ttriggerEndpoint,\n\t\t\ttriggerMethod\n\t\t]\n\t);\n\n\tuseEffect(() => {\n\t\t// Subscribe to fetch interception events\n\t\tconst unsubscribe = customEvents.subscribe(\n\t\t\tInternalCustomEvent.FetchInterception,\n\t\t\thandleInterceptionEvent\n\t\t);\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, [handleInterceptionEvent]);\n\n\treturn {\n\t\tinitialized\n\t};\n};\n\nexport default useFetchInterceptor;\n","import { useEffect } from \"preact/hooks\";\nimport { logger } from \"../../utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useOverrideScrollBlocking = () => {\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions: { overrideScrollBlocking }\n\t\t}\n\t} = useWidgetContext();\n\n\t/* This is a fix for CSM-1094 */\n\tuseEffect(() => {\n\t\tif (!overrideScrollBlocking) return;\n\n\t\tlogger.info(\"Overriding scroll blocking behavior\");\n\n\t\tconst originalPreventDefault = Event.prototype.preventDefault;\n\n\t\t// Override the default preventDefault method\n\t\tEvent.prototype.preventDefault = function () {\n\t\t\tif (\n\t\t\t\tthis.type === \"wheel\" ||\n\t\t\t\tthis.type === \"mousewheel\" ||\n\t\t\t\tthis.type === \"DOMMouseScroll\" ||\n\t\t\t\tthis.type === \"touchmove\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\toriginalPreventDefault.call(this);\n\t\t};\n\n\t\treturn () => {\n\t\t\tEvent.prototype.preventDefault = originalPreventDefault;\n\t\t};\n\t}, [overrideScrollBlocking, widgetViewState.value]);\n};\n\nexport default useOverrideScrollBlocking;\n","import { useEffect } from \"preact/hooks\";\nimport { WidgetViewState } from \"../../../lib/types\";\nimport { cloneAndReplaceElement } from \"../../../lib/utils/dom\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useCartActivator = () => {\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions: { cartActivatorSelector }\n\t\t}\n\t} = useWidgetContext();\n\n\tuseEffect(() => {\n\t\tif (!cartActivatorSelector) return;\n\n\t\tconst controller = new AbortController();\n\t\tconst processedElements = new WeakSet<Element>();\n\n\t\tconst onActivatorClick = (event: MouseEvent) => {\n\t\t\tlogger.info(\"Cart activator clicked\", event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\twidgetViewState.set(WidgetViewState.Open);\n\t\t};\n\n\t\tconst attachListenersToElements = (elements: NodeListOf<Element>) => {\n\t\t\telements.forEach(element => {\n\t\t\t\t// Skip if we've already processed this element\n\t\t\t\tif (processedElements.has(element)) return;\n\n\t\t\t\ttry {\n\t\t\t\t\t// Clone the element to avoid issues with event listeners\n\t\t\t\t\tconst clone = cloneAndReplaceElement(element as HTMLElement);\n\n\t\t\t\t\t// Remove potential inline onclick attributes\n\t\t\t\t\tclone.removeAttribute(\"onclick\");\n\n\t\t\t\t\t// Add the click event listener to the cloned element\n\t\t\t\t\tclone.addEventListener(\"click\", onActivatorClick, {\n\t\t\t\t\t\tsignal: controller.signal\n\t\t\t\t\t});\n\n\t\t\t\t\t// Mark this element as processed\n\t\t\t\t\tprocessedElements.add(clone);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\"Failed to attach listener to cart activator\", error);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst initializeActivators = () => {\n\t\t\ttry {\n\t\t\t\tconst elements = document.querySelectorAll(cartActivatorSelector);\n\t\t\t\tif (elements.length > 0) {\n\t\t\t\t\tlogger.info(\"Attaching click listeners to cart activators\", elements);\n\t\t\t\t\tattachListenersToElements(elements);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(\"Failed to set cart activator selector\", error);\n\t\t\t}\n\t\t};\n\n\t\t// Initial setup\n\t\tinitializeActivators();\n\n\t\t// Set up MutationObserver to watch for DOM changes\n\t\tconst observer = new MutationObserver(mutations => {\n\t\t\tlet shouldReinitialize = false;\n\n\t\t\tmutations.forEach(mutation => {\n\t\t\t\t// Check for added nodes\n\t\t\t\tmutation.addedNodes.forEach(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\tconst element = node as Element;\n\n\t\t\t\t\t\t// Check if the added element matches our selector\n\t\t\t\t\t\tif (element.matches?.(cartActivatorSelector)) {\n\t\t\t\t\t\t\tshouldReinitialize = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if any children of the added element match our selector\n\t\t\t\t\t\tif (element.querySelectorAll?.(cartActivatorSelector).length > 0) {\n\t\t\t\t\t\t\tshouldReinitialize = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Check for removed nodes (optional - helps with cleanup)\n\t\t\t\tmutation.removedNodes.forEach(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\tconst element = node as Element;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\telement.matches?.(cartActivatorSelector) ||\n\t\t\t\t\t\t\telement.querySelectorAll?.(cartActivatorSelector).length > 0\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Element was removed - WeakSet will automatically handle cleanup\n\t\t\t\t\t\t\t// since removed elements become unreachable\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (shouldReinitialize) {\n\t\t\t\tlogger.info(\"Reinitializing cart activators\");\n\t\t\t\t// Small delay to ensure DOM is fully updated\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tinitializeActivators();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t});\n\n\t\t// Start observing\n\t\tobserver.observe(document.body, {\n\t\t\tchildList: true, // Watch for added/removed children\n\t\t\tsubtree: true, // Watch the entire subtree\n\t\t\tattributes: false, // We don't need attribute changes\n\t\t\tcharacterData: false // We don't need text content changes\n\t\t});\n\n\t\treturn () => {\n\t\t\t// Cleanup\n\t\t\tcontroller.abort();\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [cartActivatorSelector, widgetViewState]);\n};\n\nexport default useCartActivator;\n","export const removeInertFromElements = () => {\n\tconst inertElements = document.querySelectorAll(\"[inert]\");\n\tinertElements.forEach(element => {\n\t\telement.removeAttribute(\"inert\");\n\t});\n};\n\nexport function cloneAndReplaceElement<T extends HTMLElement>(element: T): T {\n\tconst parent = element.parentNode;\n\tif (parent) {\n\t\tconst newElement = element.cloneNode(true) as T;\n\t\tparent.replaceChild(newElement, element);\n\t\treturn newElement;\n\t}\n\treturn element;\n}\n","import useApiBridge from \"../../lib/hooks/feature/use-api-bridge\";\nimport useExternalEvents from \"../../lib/hooks/feature/use-external-events\";\nimport useFetchInterceptor from \"../../lib/hooks/feature/use-fetch-interceptor\";\nimport useOverrideScrollBlocking from \"../../lib/hooks/feature/use-override-scroll-blocking\";\nimport useCartActivator from \"../../lib/hooks/feature/use-cart-activator\";\n\n// Handles the initialization of all necessary interceptors and contexts\n// Note: This is handled as a component, so the context providers can be used within hooks\nconst InitializationHandler = () => {\n\t// Initialize the fetch interceptor to handle incoming HTTP requests\n\tuseFetchInterceptor();\n\n\t// Initialize the cart activator to manage cart-related interactions\n\tuseCartActivator();\n\n\t// Override scroll blocking behavior if configured\n\tuseOverrideScrollBlocking();\n\n\t// Handle external custom events\n\tuseExternalEvents();\n\n\t// Register the API bridge for programmatic control\n\tuseApiBridge();\n\n\treturn null;\n};\n\nexport default InitializationHandler;\n","import { useCallback, useEffect } from \"preact/hooks\";\nimport { WidgetViewState } from \"../../types\";\nimport customEvents, { ExternalCustomEvent } from \"../../utils/custom-events\";\nimport useWidgetContext from \"../context/use-widget-context\";\nimport useCartActions from \"./use-cart-actions\";\n\nconst useExternalEvents = () => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\tconst { fetchAndUpdateCart, triggerCalculation } = useCartActions();\n\n\t// Drawer state handlers\n\tconst handleOpenDrawer = useCallback(() => {\n\t\twidgetViewState.set(WidgetViewState.Open);\n\t}, [widgetViewState]);\n\n\tconst handleCloseDrawer = useCallback(() => {\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\t}, [widgetViewState]);\n\n\tconst handleToggleDrawer = useCallback(() => {\n\t\tlet targetState: WidgetViewState;\n\n\t\tif (widgetViewState.value === WidgetViewState.Open) {\n\t\t\ttargetState = WidgetViewState.Collapsed;\n\t\t} else {\n\t\t\ttargetState = WidgetViewState.Open;\n\t\t}\n\n\t\twidgetViewState.set(targetState);\n\t}, [widgetViewState]);\n\n\t// Calculation handlers\n\tconst handleRefetchCalculation = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, triggerCalculation]);\n\n\tconst handleRefetchCart = useCallback(async () => {\n\t\tawait fetchAndUpdateCart();\n\t}, [fetchAndUpdateCart]);\n\n\tconst handleRefetchCartAndCalculation = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, triggerCalculation]);\n\n\tconst handleOpenDrawerAndRefetch = useCallback(async () => {\n\t\tconst result = await fetchAndUpdateCart();\n\t\tif (result?.hasChanged) {\n\t\t\thandleOpenDrawer();\n\t\t\ttriggerCalculation(result.transformedCart, result.order.orderData.id);\n\t\t}\n\t}, [fetchAndUpdateCart, handleOpenDrawer, triggerCalculation]);\n\n\tuseEffect(() => {\n\t\t// Subscribe to all events\n\t\tconst unsubscribeOpenDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerOpen,\n\t\t\thandleOpenDrawer\n\t\t);\n\n\t\tconst unsubscribeCloseDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerClose,\n\t\t\thandleCloseDrawer\n\t\t);\n\n\t\tconst unsubscribeToggleDrawer = customEvents.subscribe(\n\t\t\tExternalCustomEvent.DrawerToggle,\n\t\t\thandleToggleDrawer\n\t\t);\n\n\t\tconst unsubscribeRefetchCalculation = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CalculationRefetch,\n\t\t\thandleRefetchCalculation\n\t\t);\n\n\t\tconst unsubscribeRefetchCart = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CartRefetch,\n\t\t\thandleRefetchCart\n\t\t);\n\n\t\tconst unsubscribeRefetchCartAndCalculation = customEvents.subscribe(\n\t\t\tExternalCustomEvent.CartAndCalculationRefetch,\n\t\t\thandleRefetchCartAndCalculation\n\t\t);\n\n\t\tconst unsubscribeOpenDrawerAndRefetchCartAndCalculation =\n\t\t\tcustomEvents.subscribe(\n\t\t\t\tExternalCustomEvent.DrawerOpenAndRefetch,\n\t\t\t\thandleOpenDrawerAndRefetch\n\t\t\t);\n\n\t\treturn () => {\n\t\t\tunsubscribeOpenDrawer();\n\t\t\tunsubscribeCloseDrawer();\n\t\t\tunsubscribeToggleDrawer();\n\t\t\tunsubscribeRefetchCalculation();\n\t\t\tunsubscribeRefetchCart();\n\t\t\tunsubscribeRefetchCartAndCalculation();\n\t\t\tunsubscribeOpenDrawerAndRefetchCartAndCalculation();\n\t\t};\n\t}, [\n\t\thandleOpenDrawer,\n\t\thandleCloseDrawer,\n\t\thandleToggleDrawer,\n\t\thandleRefetchCalculation,\n\t\thandleRefetchCart,\n\t\thandleRefetchCartAndCalculation,\n\t\thandleOpenDrawerAndRefetch\n\t]);\n};\n\nexport default useExternalEvents;\n","import useIsMounted from \"../lib/hooks/common/use-is-mounted\";\n\nconst IsMounted = ({ children }: { children: preact.ComponentChildren }) => {\n\tconst mounted = useIsMounted();\n\n\tif (!mounted) return null;\n\n\treturn children;\n};\n\nexport default IsMounted;\n","import { ReactNode } from \"preact/compat\";\nimport { useMemo } from \"preact/hooks\";\nimport { Fragment } from \"preact/jsx-runtime\";\nimport { useTranslations } from \"use-intl\";\nimport {\n\tCustomError,\n\tErrorContext,\n\tIErrorContext\n} from \"../../lib/context/error-context\";\nimport useArray from \"../../lib/hooks/common/use-array\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { getRuleProductIds } from \"../../lib/utils/cart\";\nimport { stripShopifyId } from \"../../lib/utils/shopify\";\n\nconst ErrorProvider = ({\n\tchildren\n}: {\n\tchildren: preact.ComponentChildren;\n}) => {\n\tconst t = useTranslations();\n\tconst { array: errors, ...methods } = useArray<CustomError>();\n\tconst { cartState, orderState, calculationState } = useReturnContext();\n\n\tconst orderData = orderState.value.data?.orderData;\n\tconst calcItems = calculationState.value.data?.lineItems;\n\tconst cartItemCount = cartState.value.data?.transformed.item_count ?? 0;\n\n\t// Combine errors that are pushed from anywhere in within the context with static errors\n\t// These static errors are based on the order data and calculation items\n\tconst resolvedErrors: CustomError[] = useMemo(() => {\n\t\tconst trackedErrors: CustomError[] = [];\n\t\tif (orderData && calcItems && Array.isArray(calcItems)) {\n\t\t\t// Reufund window expired error\n\t\t\tconst { refundReturnWindow = true } = orderData.returnWindows ?? {};\n\n\t\t\tconst errorId = \"refund-window-expired\";\n\n\t\t\tif (!refundReturnWindow && cartItemCount === 0) {\n\t\t\t\tconst message: string | preact.ComponentChildren = t(\n\t\t\t\t\t\"product.error.refund_expired\"\n\t\t\t\t);\n\n\t\t\t\ttrackedErrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tblocking: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Product rules\n\t\t\tconst noRefundItemIds = getRuleProductIds(\n\t\t\t\torderData.productRules,\n\t\t\t\t\"NO_REFUND\"\n\t\t\t);\n\t\t\tconst noRefundItems = calcItems.filter(item => {\n\t\t\t\tconst strippedId = stripShopifyId(item.productId);\n\t\t\t\tif (!strippedId) return false;\n\t\t\t\treturn noRefundItemIds.includes(Number(strippedId));\n\t\t\t});\n\n\t\t\tif (noRefundItems.length > 0 && cartItemCount === 0) {\n\t\t\t\tconst joinedProductNames = noRefundItems\n\t\t\t\t\t.map(item => {\n\t\t\t\t\t\tconst product = orderData.productsToExchange.find(\n\t\t\t\t\t\t\tp => p.id === item.id\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!product) return null;\n\n\t\t\t\t\t\tlet title = product.title;\n\t\t\t\t\t\tif (product.variantTitle) {\n\t\t\t\t\t\t\ttitle += ` (${product.variantTitle})`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn title;\n\t\t\t\t\t})\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\", \");\n\n\t\t\t\tconst message = t.rich(\"product.error.no_refund\", {\n\t\t\t\t\tproduct_name: joinedProductNames,\n\t\t\t\t\tb: chunks => {\n\t\t\t\t\t\tif (!chunks) return null;\n\t\t\t\t\t\tconst splitChunks = (chunks as NonNullable<ReactNode>)\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.split(\", \");\n\n\t\t\t\t\t\treturn splitChunks.map((chunk, index) => {\n\t\t\t\t\t\t\tlet dividerString: string | null = null;\n\n\t\t\t\t\t\t\tif (index === splitChunks.length - 2) {\n\t\t\t\t\t\t\t\tdividerString = ` ${t(\"common.and\")} `;\n\t\t\t\t\t\t\t} else if (index < splitChunks.length - 1) {\n\t\t\t\t\t\t\t\tdividerString = \", \";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Fragment key={index}>\n\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-3\">{chunk}</span>\n\t\t\t\t\t\t\t\t\t{dividerString}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttrackedErrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage,\n\t\t\t\t\tblocking: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn trackedErrors.concat(errors);\n\t}, [errors, orderData, calcItems, cartItemCount, t]);\n\n\tconst contextValue: IErrorContext = {\n\t\terrors: resolvedErrors,\n\t\t...methods\n\t};\n\n\treturn (\n\t\t<ErrorContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ErrorContext.Provider>\n\t);\n};\n\nexport default ErrorProvider;\n","import { useCallback, useState } from \"preact/hooks\";\n\ntype ArrayId = string | number;\n\ninterface ArrayItem {\n\tid: ArrayId;\n}\n\nexport interface UseArrayReturn<T extends ArrayItem> {\n\tarray: T[];\n\tset: (newArray: T[]) => void;\n\tpush: (item: T) => void;\n\tremove: (id: ArrayId) => void;\n\tclear: () => void;\n\thas: (id: ArrayId) => boolean;\n}\n\nconst useArray = <T extends ArrayItem>(\n\tinitialArray: T[] = []\n): UseArrayReturn<T> => {\n\tconst [array, setArray] = useState<T[]>(initialArray);\n\n\tconst set = useCallback((newArray: T[]) => {\n\t\tsetArray(newArray);\n\t}, []);\n\n\tconst push = useCallback((item: T | T[]) => {\n\t\tsetArray(prev => {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tconst filtered = item.filter(i => !prev.some(p => p.id === i.id));\n\t\t\t\treturn [...prev, ...filtered];\n\t\t\t}\n\t\t\tif (prev.some(p => p.id === item.id)) {\n\t\t\t\treturn prev; // Avoid duplicates\n\t\t\t}\n\t\t\treturn [...prev, item];\n\t\t});\n\t}, []);\n\n\tconst remove = useCallback((id: ArrayId) => {\n\t\tsetArray(prev => prev.filter(item => item.id !== id));\n\t}, []);\n\n\tconst clear = useCallback(() => {\n\t\tsetArray([]);\n\t}, []);\n\n\tconst has = useCallback(\n\t\t(id: ArrayId) => {\n\t\t\treturn array.some(item => item.id === id);\n\t\t},\n\t\t[array]\n\t);\n\n\treturn {\n\t\tarray,\n\t\tset,\n\t\tpush,\n\t\tremove,\n\t\tclear,\n\t\thas\n\t};\n};\n\nexport default useArray;\n","import { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport { logger } from \"../../utils/logger\";\n\ntype IAsyncStatePending<T> = {\n\tdata: T | null;\n\tpending: true;\n\terror: null;\n};\n\ntype IAsyncStateResolved<T> = {\n\tdata: T | null;\n\tpending: false;\n\terror: null;\n};\n\ntype IAsyncStateError<T> = {\n\tdata: T | null;\n\tpending: false;\n\terror: Error;\n};\n\nexport type IAsyncState<T> =\n\t| IAsyncStatePending<T>\n\t| IAsyncStateResolved<T>\n\t| IAsyncStateError<T>;\n\ntype TAsyncStateCommonProps<T> = {\n\tid?: string;\n\tinitialValue?: T | null;\n\tqueryOnInit?: boolean;\n\tstartCount?: number;\n\tonError?: (error: Error) => void;\n};\n\ntype TUseAsyncStatePropsWithoutParams<T> = TAsyncStateCommonProps<T> & {\n\tqueryFn: (count: number) => T | Promise<T>;\n};\n\ntype TUseAsyncStatePropsWithParams<\n\tT,\n\tP = undefined\n> = TAsyncStateCommonProps<T> & {\n\tqueryFn: (count: number, params: P) => T | Promise<T>;\n\tinitialParams?: P;\n};\n\n// Props interface with conditional queryFn and conditional initialParams\ntype TUseAsyncStateProps<T, P = undefined> = P extends undefined\n\t? TUseAsyncStatePropsWithoutParams<T>\n\t: TUseAsyncStatePropsWithParams<T, P>;\n\nexport interface IUseAsyncStateReturn<T, P = undefined> {\n\tvalue: IAsyncState<T>;\n\tset: React.Dispatch<React.SetStateAction<IAsyncState<T>>>;\n\tquery: P extends undefined ? () => Promise<T> : (params: P) => Promise<T>;\n\tinitialFetch: boolean;\n\tcount: number;\n}\n\nconst useAsyncState = <T, Params = undefined>(\n\tprops: TUseAsyncStateProps<T, Params>\n): IUseAsyncStateReturn<T, Params> => {\n\tconst {\n\t\tid,\n\t\tinitialValue = null,\n\t\tqueryFn,\n\t\tqueryOnInit = true,\n\t\tonError,\n\t\tstartCount = 0\n\t} = props;\n\n\tconst [state, setState] = useState<IAsyncState<T>>({\n\t\tdata: initialValue,\n\t\tpending: queryOnInit,\n\t\terror: null\n\t} as IAsyncStatePending<T>);\n\tconst initialRender = useRef(true);\n\n\tconst [countState, setCountState] = useState(startCount);\n\tconst countRef = useRef(countState);\n\n\tconst query = useCallback(\n\t\t(...args: Params extends undefined ? [] : [Params]): Promise<T | null> => {\n\t\t\tconst params = args[0] as Params;\n\n\t\t\t// Increment count at the START and capture it for this request\n\t\t\tconst requestCount = countRef.current + 1;\n\t\t\tcountRef.current = requestCount;\n\t\t\tsetCountState(requestCount);\n\n\t\t\tsetState(prev => ({\n\t\t\t\t...prev,\n\t\t\t\tpending: true,\n\t\t\t\terror: null\n\t\t\t}));\n\n\t\t\tconst run = async () => {\n\t\t\t\ttry {\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t`AsyncState Query Started (Count: ${requestCount})`,\n\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\"\n\t\t\t\t\t);\n\t\t\t\t\tconst data = await (args.length === 0\n\t\t\t\t\t\t? (queryFn as (count: number) => T | Promise<T>)(requestCount)\n\t\t\t\t\t\t: (queryFn as (count: number, params: Params) => T | Promise<T>)(\n\t\t\t\t\t\t\t\trequestCount,\n\t\t\t\t\t\t\t\tparams\n\t\t\t\t\t\t\t));\n\n\t\t\t\t\t// Only update state if this is still the latest request\n\t\t\t\t\tif (countRef.current !== requestCount) {\n\t\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t\t`AsyncState Query Stale - Ignoring (Count: ${requestCount}, Current: ${countRef.current})`,\n\t\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\"\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Success handling\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\terror: null\n\t\t\t\t\t});\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t`AsyncState Query Resolved (Count: ${requestCount})`,\n\t\t\t\t\t\tid ? ` (ID: ${id})` : \"\",\n\t\t\t\t\t\tdata\n\t\t\t\t\t);\n\t\t\t\t\treturn data;\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Only update state if this is still the latest request\n\t\t\t\t\tif (countRef.current !== requestCount) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Error handling\n\t\t\t\t\tconst error = err as Error;\n\n\t\t\t\t\tlet consoleMessage = `AsyncState Query Failed (Count: ${requestCount})`;\n\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tconsoleMessage += ` (ID: ${id})`;\n\t\t\t\t\t}\n\n\t\t\t\t\tlogger.error(`${consoleMessage}:`, `[${error}]`, params);\n\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\tpending: false,\n\t\t\t\t\t\terror\n\t\t\t\t\t});\n\t\t\t\t\tonError?.(error);\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn run();\n\t\t},\n\t\t[queryFn, id, onError]\n\t);\n\n\tuseEffect(() => {\n\t\tif (initialRender.current && queryOnInit) {\n\t\t\tinitialRender.current = false;\n\t\t\tconst initialParams = props as TUseAsyncStatePropsWithParams<T, Params>;\n\t\t\tif (initialParams !== undefined && \"initialParams\" in initialParams) {\n\t\t\t\t(query as (params: Params) => Promise<T>)(\n\t\t\t\t\tinitialParams.initialParams as Params\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t(query as () => Promise<T>)();\n\t\t\t}\n\t\t}\n\t}, [query, queryOnInit, props]);\n\n\tconst initialFetch = state.pending && state.data === null;\n\n\treturn {\n\t\tvalue: state,\n\t\tset: setState,\n\t\tquery: query as IUseAsyncStateReturn<T, Params>[\"query\"],\n\t\tcount: countState,\n\t\tinitialFetch\n\t};\n};\n\nexport default useAsyncState;\n","import { useMemo } from \"preact/hooks\";\nimport { SEARCH_PARAM_ID_NAME } from \"../../lib/constants\";\nimport {\n\tIReturnContext,\n\tReturnContext\n} from \"../../lib/context/return-context\";\nimport useOnce from \"../../lib/hooks/common/use-once\";\nimport type { IUseAsyncStateReturn } from \"../../lib/hooks/common/use-async-state\";\nimport useAsyncState from \"../../lib/hooks/common/use-async-state\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationResponse,\n\tReturnViewState,\n\tShopifyCart,\n\tShopifyCartChangeResponse\n} from \"../../lib/types\";\nimport {\n\tgetCalculation,\n\tprocessOrderInitialization,\n\tProcessOrderInitializationReturn\n} from \"../../lib/utils/api\";\nimport { getCart, normalizeCart } from \"../../lib/utils/cart\";\nimport { ReturnDataState, updateSessionCache } from \"../../lib/utils/session\";\nimport { normalizeShopifyPrice } from \"../../lib/utils/shopify\";\n\ninterface ReturnContextProviderProps {\n\tchildren: preact.ComponentChildren;\n}\n\nexport interface CalculationParams {\n\tcart: ShopifyCart;\n\torderId: string;\n\tlineItems: ReturnDataState[\"items\"];\n}\n\ntype Cart = ShopifyCart | ShopifyCartChangeResponse;\n\nexport interface CartState {\n\ttransformed: Cart;\n\toriginal: Cart;\n}\n\nconst ReturnContextProvider = ({ children }: ReturnContextProviderProps) => {\n\tconst { returnViewState, config } = useWidgetContext();\n\n\tconst isFirstLoad = config.isFirstLoad;\n\n\tconst cartState = useAsyncState<CartState, ProcessOrderInitializationReturn>({\n\t\tid: \"cart\",\n\t\tqueryOnInit: false,\n\t\tqueryFn: async (\n\t\t\tqueryCount: number,\n\t\t\torderResult: ProcessOrderInitializationReturn\n\t\t) => {\n\t\t\tconst pathname = window.location.pathname;\n\t\t\tconst isCartPage = pathname.startsWith(\"/cart\");\n\n\t\t\tconst isFirstQuery = queryCount === 1;\n\n\t\t\tconst shouldFetchFreshCart = !isFirstQuery || isCartPage;\n\n\t\t\tconst cart = await getCart(!shouldFetchFreshCart);\n\n\t\t\tif (cart.item_count !== 0 && isFirstQuery) {\n\t\t\t\t// If the cart has items and this is the first query, collapse the return view state\n\t\t\t\treturnViewState.set(ReturnViewState.Collapsed);\n\t\t\t}\n\n\t\t\tconst { cart: transformedCart } = normalizeCart(\n\t\t\t\tcart,\n\t\t\t\torderResult.orderData.productRules\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttransformed: transformedCart,\n\t\t\t\toriginal: cart\n\t\t\t};\n\t\t}\n\t});\n\n\t// Initialize the order state & set cookies/storage\n\tconst orderState = useAsyncState<ProcessOrderInitializationReturn>({\n\t\tid: \"order\",\n\t\tqueryFn: async () => {\n\t\t\tconst result = await processOrderInitialization(config);\n\n\t\t\tif (result.updatedCart && isFirstLoad) {\n\t\t\t\tconst { cart: normalizedCart } = normalizeCart(\n\t\t\t\t\tresult.updatedCart,\n\t\t\t\t\tresult.orderData.productRules\n\t\t\t\t);\n\t\t\t\tcartState.set({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\toriginal: result.updatedCart,\n\t\t\t\t\t\ttransformed: normalizedCart\n\t\t\t\t\t},\n\t\t\t\t\tpending: false,\n\t\t\t\t\terror: null\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcartState.query(result);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t});\n\n\tconst calculationState = useAsyncState<\n\t\tCalculationResponse,\n\t\tCalculationParams\n\t>({\n\t\tid: \"calculation\",\n\t\tqueryOnInit: false,\n\t\tqueryFn: async (_: unknown, params: CalculationParams) => {\n\t\t\tconst internalId = config.id;\n\t\t\tconst cartItems = params.cart?.items || [];\n\t\t\t// Update session cache with the current cart items\n\t\t\tif (internalId) {\n\t\t\t\tconst { origin, pathname, search } = window.location;\n\n\t\t\t\tconst searchParams = new URLSearchParams(search);\n\n\t\t\t\tsearchParams.set(SEARCH_PARAM_ID_NAME, internalId);\n\n\t\t\t\tconst lastPath = `${origin}${pathname}?${searchParams.toString()}`;\n\n\t\t\t\tconst formattedCartItems = Array.isArray(cartItems)\n\t\t\t\t\t? cartItems.map(item => ({\n\t\t\t\t\t\t\tvariantId: item.variant_id,\n\t\t\t\t\t\t\thandle: item.handle,\n\t\t\t\t\t\t\tprice: normalizeShopifyPrice(item.price), // Convert cents to dollars\n\t\t\t\t\t\t\ttitle: item.product_title,\n\t\t\t\t\t\t\tvariantTitle: item.variant_title ?? \"\",\n\t\t\t\t\t\t\timage: item.image,\n\t\t\t\t\t\t\tquantity: item.quantity || 1\n\t\t\t\t\t\t}))\n\t\t\t\t\t: [];\n\n\t\t\t\tupdateSessionCache(internalId, {\n\t\t\t\t\tlastPath,\n\t\t\t\t\treturnItems: formattedCartItems\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst labelCount = config.data.returnData?.numOfLabels ?? 1;\n\t\t\treturn getCalculation(params, labelCount);\n\t\t}\n\t});\n\n\tconst [initialized] = useOnce(\n\t\tresolve => {\n\t\t\tconst order = orderState.value.data;\n\t\t\tconst cart = cartState.value.data?.transformed;\n\t\t\tif (order && cart) {\n\t\t\t\tresolve();\n\t\t\t\tconst lineItems = config.data.returnData?.items ?? [];\n\t\t\t\tcalculationState.query({\n\t\t\t\t\tcart,\n\t\t\t\t\torderId: order.orderData.id,\n\t\t\t\t\tlineItems\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\torderState.value.data,\n\t\t\tcartState.value.data,\n\t\t\tcalculationState.query,\n\t\t\tconfig.data.returnData?.items\n\t\t]\n\t);\n\n\tconst isPending =\n\t\t!initialized || cartState.value.pending || calculationState.value.pending;\n\n\tconst contextError = useMemo(\n\t\t() =>\n\t\t\torderState.value.error ||\n\t\t\tcartState.value.error ||\n\t\t\tcalculationState.value.error,\n\t\t[\n\t\t\torderState.value.error,\n\t\t\tcartState.value.error,\n\t\t\tcalculationState.value.error\n\t\t]\n\t);\n\n\tconst hasFailed = Boolean(contextError);\n\n\tconst contextValue = useMemo(\n\t\t(): IReturnContext => ({\n\t\t\torderState:\n\t\t\t\torderState as IUseAsyncStateReturn<ProcessOrderInitializationReturn>,\n\t\t\tcartState,\n\t\t\tcalculationState,\n\t\t\tisPending,\n\t\t\thasFailed\n\t\t}),\n\t\t[orderState, cartState, calculationState, isPending, hasFailed]\n\t);\n\n\treturn (\n\t\t<ReturnContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ReturnContext.Provider>\n\t);\n};\n\nexport default ReturnContextProvider;\n","import { useMemo } from \"preact/hooks\";\nimport { hexToHsl } from \"../../utils/helpers\";\nimport useWidgetContext from \"./use-widget-context\";\n\nconst useTheme = () => {\n\tconst {\n\t\tconfig: { theme }\n\t} = useWidgetContext();\n\n\tconst themeVariables = useMemo(() => {\n\t\tif (!theme) return;\n\t\treturn Object.entries(theme).reduce<Record<string, string>>(\n\t\t\t(acc, [key, color]) => {\n\t\t\t\tconst convertedColor = hexToHsl(color);\n\t\t\t\tconst propertyKey = `--${key}`;\n\t\t\t\tacc[propertyKey] = convertedColor;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record<string, string>\n\t\t) as React.CSSProperties;\n\t}, [theme]);\n\n\treturn {\n\t\ttheme,\n\t\tcssVariables: themeVariables\n\t};\n};\n\nexport default useTheme;\n","import { useRef } from \"preact/hooks\";\nimport { ROOT_ELEMENT_ID } from \"../../lib/constants\";\nimport { RootContext } from \"../../lib/context/root-context\";\nimport useTheme from \"../../lib/hooks/context/use-theme\";\n\nconst RootProvider = (\n\tprops: Omit<\n\t\tReact.HTMLAttributes<HTMLDivElement>,\n\t\t\"id\" | \"style\" | \"className\"\n\t>\n) => {\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst { cssVariables } = useTheme();\n\n\treturn (\n\t\t<RootContext.Provider value={rootRef}>\n\t\t\t<div\n\t\t\t\t/* stopPropagation was added to prevent double clicks in ios safari */\n\t\t\t\t/* Fix for CSM-1094 */\n\t\t\t\tonTouchStart={e => e.stopPropagation()}\n\t\t\t\tclassName=\"rf-root\"\n\t\t\t\tref={rootRef}\n\t\t\t\tid={ROOT_ELEMENT_ID}\n\t\t\t\tstyle={cssVariables}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</RootContext.Provider>\n\t);\n};\n\nexport default RootProvider;\n","import { useMemo } from \"preact/hooks\";\nimport {\n\tIWidgetContext,\n\tWidgetContext\n} from \"../../lib/context/widget-context\";\nimport useValueState from \"../../lib/hooks/common/use-value-state\";\nimport { ReturnViewState, WidgetViewState } from \"../../lib/types\";\nimport customEvents, {\n\tInternalCustomEvent\n} from \"../../lib/utils/custom-events\";\nimport { removeInertFromElements } from \"../../lib/utils/dom\";\nimport { WidgetConfiguration } from \"../../lib/utils/initialization/types\";\n\ninterface WidgetContextProviderProps extends WidgetConfiguration {\n\tchildren: preact.ComponentChildren;\n}\n\nconst WidgetContextProvider = ({\n\tchildren,\n\t...config\n}: WidgetContextProviderProps) => {\n\t// Drawer state (collapsed, expanded, etc.)\n\tconst widgetViewState = useValueState<WidgetViewState>(\n\t\tWidgetViewState.Collapsed,\n\t\tstate => {\n\t\t\tcustomEvents.publish(InternalCustomEvent.DrawerStateChange, { state });\n\t\t\t// (DEV-1559) Ensure inert is removed from elements when drawer state changes\n\t\t\tremoveInertFromElements();\n\t\t}\n\t);\n\t// Inner drawer state: return product list state (collapsed, expanded, etc.)\n\tconst returnViewState = useValueState<ReturnViewState>(ReturnViewState.Open);\n\n\tconst contextValue = useMemo(\n\t\t(): IWidgetContext => ({\n\t\t\twidgetViewState,\n\t\t\treturnViewState,\n\t\t\tconfig\n\t\t}),\n\t\t[widgetViewState, returnViewState, config]\n\t);\n\n\treturn (\n\t\t<WidgetContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</WidgetContext.Provider>\n\t);\n};\n\nexport default WidgetContextProvider;\n","import { useCallback, useState } from \"preact/hooks\";\nimport {\n\tDEFAULT_TOAST_DURATION,\n\tIToastContext,\n\tTOAST_ANIMATION_DURATION,\n\tToastConfiguration,\n\tToastContext\n} from \"../../lib/context/toast-context\";\nimport { ToastQueue } from \"./toast\";\n\nconst ToastProvider = ({\n\tchildren\n}: {\n\tchildren: preact.ComponentChildren;\n}) => {\n\tconst [queue, setQueue] = useState<ToastQueue[]>([]);\n\n\tconst remove = useCallback((id: string) => {\n\t\tsetQueue(prev =>\n\t\t\tprev.map(toast => {\n\t\t\t\tif (toast.id === id) {\n\t\t\t\t\t// Optionally, you can call the onClose callback if it exists\n\t\t\t\t\ttoast.onClose?.();\n\t\t\t\t}\n\t\t\t\treturn toast.id === id ? { ...toast, isVisible: false } : toast;\n\t\t\t})\n\t\t);\n\t\t// Set a timeout to remove the toast from the queue after the animation duration\n\t\tsetTimeout(() => {\n\t\t\tsetQueue(prev => prev.filter(toast => toast.id !== id));\n\t\t}, TOAST_ANIMATION_DURATION); // Adjust the timeout to match your animation duration\n\t}, []);\n\n\tconst add = useCallback(\n\t\t({ duration = DEFAULT_TOAST_DURATION, ...options }: ToastConfiguration) => {\n\t\t\tconst id = options.id || generateToastId();\n\n\t\t\tsetQueue(prev => {\n\t\t\t\tconst newToast = {\n\t\t\t\t\t...options,\n\t\t\t\t\tid,\n\t\t\t\t\tduration,\n\t\t\t\t\tisVisible: true\n\t\t\t\t};\n\t\t\t\treturn [...prev, newToast];\n\t\t\t});\n\n\t\t\tsetTimeout(() => remove(id), duration);\n\n\t\t\treturn id;\n\t\t},\n\t\t[remove]\n\t);\n\n\tconst clear = useCallback(() => {\n\t\tsetQueue(prev =>\n\t\t\tprev.map(toast => {\n\t\t\t\t// Optionally, you can call the onClose callback for each toast\n\t\t\t\ttoast.onClose?.();\n\t\t\t\treturn { ...toast, isVisible: false };\n\t\t\t})\n\t\t);\n\t\t// Set a timeout to clear the queue after the animation duration\n\t\tsetTimeout(() => {\n\t\t\tsetQueue([]);\n\t\t}, TOAST_ANIMATION_DURATION); // Adjust the timeout to match your animation duration\n\t}, []);\n\n\tconst contextValue: IToastContext = {\n\t\tqueue,\n\t\tadd,\n\t\tremove,\n\t\tclear\n\t};\n\n\treturn (\n\t\t<ToastContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ToastContext.Provider>\n\t);\n};\n\nfunction generateToastId() {\n\treturn `toast-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport default ToastProvider;\n","const ActionIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={21}\n\t\theight={21}\n\t\tviewBox=\"0 0 21 21\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--action ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<rect\n\t\t\tx={0.5}\n\t\t\ty={0.679}\n\t\t\twidth={20}\n\t\t\theight={20}\n\t\t\trx={10}\n\t\t\tclassName=\"fill-[var(--icon-fill-1,_#000)]\"\n\t\t/>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M11.517 6.04q.088.055.127.157c.025.066.03.14.013.209l-.775 3.13h2.826q.088 0 .16.052a.3.3 0 0 1 .108.14.35.35 0 0 1-.055.348l-4.083 4.822a.3.3 0 0 1-.168.098.27.27 0 0 1-.187-.037.3.3 0 0 1-.127-.156.35.35 0 0 1-.013-.21l.775-3.129H7.292a.27.27 0 0 1-.16-.053.3.3 0 0 1-.108-.14.35.35 0 0 1 .055-.348l4.083-4.821a.3.3 0 0 1 .168-.098.27.27 0 0 1 .187.037\"\n\t\t\tclassName=\"fill-[var(--icon-fill-2,_#fff)]\"\n\t\t/>\n\t</svg>\n);\nexport default ActionIcon;\n","const InfoIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={21}\n\t\theight={21}\n\t\tviewBox=\"0 0 21 21\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--info ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tclassName=\"fill-[var(--icon-fill-2,_#fff)]\"\n\t\t\td=\"M6.856 4.628h7.288v12.226H6.856z\"\n\t\t/>\n\t\t<path\n\t\t\tclassName=\"fill-[var(--icon-fill-1,_#000)]\"\n\t\t\td=\"M17.572 3.67C13.666-.235 7.335-.236 3.429 3.67c-3.905 3.905-3.905 10.237 0 14.143 3.905 3.904 10.237 3.904 14.143 0 3.905-3.906 3.904-10.238 0-14.143m-5.768 11.419a1.304 1.304 0 1 1-2.609 0V9.87a1.304 1.304 0 1 1 2.61 0zm-1.327-7.447c-.752 0-1.252-.532-1.237-1.19-.015-.688.485-1.204 1.252-1.204s1.252.516 1.268 1.205c0 .657-.5 1.189-1.283 1.189\"\n\t\t/>\n\t</svg>\n);\nexport default InfoIcon;\n","const GiftcardIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={20}\n\t\theight={15}\n\t\tviewBox=\"0 0 20 15\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--giftcard fill-[var(--icon-fill-1,_currentColor)] ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M8.23 3.129c-.288 0-.602.11-.82.37-.284.342-.373 1.362-.363 1.877.48.012 1.4-.001 1.771-.395.39-.411.496-1.13.082-1.568a.9.9 0 0 0-.67-.284m-3.666 0c.288 0 .603.11.82.37.284.342.373 1.362.363 1.877-.48.012-1.399-.001-1.77-.395-.39-.411-.496-1.13-.083-1.568a.9.9 0 0 1 .67-.284\" />\n\t\t<path d=\"M9.806 2.447c.73.773.828 1.99.328 2.929H20V1.948C20 .872 19.178 0 18.165 0H7.038v2.103c.9-.54 2.036-.43 2.768.344.417.44-.732-.775 0 0M4.347 9.21l-.91-.962L4.85 6.74H0v6.312C0 14.128.821 15 1.835 15h3.919V7.71zm3.589-2.47L9.33 8.236l-.912.959-1.38-1.48V15h11.126C19.18 15 20 14.128 20 13.052V6.74zM2.659 5.376c-.5-.939-.403-2.157.327-2.929.732-.775 1.869-.883 2.768-.344V0h-3.92C.822 0 0 .872 0 1.948v3.428z\" />\n\t</svg>\n);\nexport default GiftcardIcon;\n","const WarningIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={30}\n\t\theight={27}\n\t\tviewBox=\"0 0 30 27\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--warning fill-[var(--icon-fill-1,_#000)] ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"M15 18.904c-.81 0-1.49.68-1.49 1.49s.68 1.489 1.49 1.489c.78 0 1.489-.68 1.453-1.454A1.454 1.454 0 0 0 15 18.904\" />\n\t\t<path d=\"M28.784 24.182a5.09 5.09 0 0 0 .012-5.147L19.467 2.88A5.07 5.07 0 0 0 15.006.289c-1.87 0-3.539.97-4.462 2.585l-9.34 16.173a5.13 5.13 0 0 0 .017 5.177 5.1 5.1 0 0 0 4.45 2.555h18.633c1.865 0 3.539-.97 4.48-2.597m-2.025-1.167a2.82 2.82 0 0 1-2.46 1.423H5.665a2.78 2.78 0 0 1-2.43-1.394 2.82 2.82 0 0 1-.006-2.841l9.34-16.167a2.76 2.76 0 0 1 2.437-1.412c1.018 0 1.93.53 2.436 1.417l9.335 16.168c.5.87.494 1.918-.018 2.806\" />\n\t\t<path d=\"M14.63 8.45c-.709.202-1.15.846-1.15 1.626.036.47.066.947.102 1.418l.303 5.343A1.09 1.09 0 0 0 15 17.886c.608 0 1.085-.471 1.114-1.085 0-.369 0-.708.036-1.084.066-1.15.137-2.3.203-3.449.035-.744.101-1.49.137-2.234a1.8 1.8 0 0 0-.137-.744 1.49 1.49 0 0 0-1.722-.84\" />\n\t</svg>\n);\nexport default WarningIcon;\n","import Skeleton from \"../skeleton/skeleton\";\n\nconst BannerSkeleton = () => {\n\treturn <Skeleton className=\"h-12 rounded-lg\" />;\n};\n\nexport default BannerSkeleton;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { memo } from \"preact/compat\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport ActionIcon from \"../../icons/banner/action\";\nimport InfoIcon from \"../../icons/banner/info\";\nimport GiftcardIcon from \"../../icons/giftcard\";\nimport WarningIcon from \"../../icons/warning\";\nimport SkeletonContainer from \"../skeleton/skeleton-container\";\nimport BannerSkeleton from \"./banner-skeleton\";\n\nconst variants = cva(\n\t\"rf-banner text-black rounded-lg flex items-center gap-2.5 p-3 min-h-12 font-medium leading-tight\",\n\t{\n\t\tvariants: {\n\t\t\ttone: {\n\t\t\t\tinfo: \"rf-banner--info bg-banner-info-background [--icon-fill-1:hsl(var(--rf-c-banner-info-foreground))]\",\n\t\t\t\ttip: \"rf-banner--tip bg-banner-tip-background [--icon-fill-1:hsl(var(--rf-c-banner-tip-foreground))]\",\n\t\t\t\taction:\n\t\t\t\t\t\"rf-banner--action bg-banner-action-background [--icon-fill-1:hsl(var(--rf-c-banner-action-foreground))]\",\n\t\t\t\terror:\n\t\t\t\t\t\"rf-banner--error bg-banner-error-background [--icon-fill-1:hsl(var(--rf-c-banner-error-foreground))]\",\n\t\t\t\tgiftcard:\n\t\t\t\t\t\"rf-banner--giftcard bg-[#F1F3FE] [--icon-fill-1:hsl(var(--rf-c-primary))]\"\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tdashed: \"border border-dashed border-[color:var(--icon-fill-1)]\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\ttone: \"info\"\n\t\t}\n\t}\n);\n\ntype Variants = VariantProps<typeof variants>;\n\nexport type BannerTone = NonNullable<Variants[\"tone\"]>;\n\ninterface BannerProps extends React.HTMLAttributes<HTMLElement>, Variants {\n\ticon?: BannerTone;\n\tpending?: boolean;\n}\n\nconst Banner = ({\n\tclassName,\n\tchildren,\n\ttone,\n\tborder,\n\ticon,\n\tpending = false,\n\t...props\n}: BannerProps) => {\n\treturn (\n\t\t<SkeletonContainer skeleton={<BannerSkeleton />} pending={pending}>\n\t\t\t<aside className={cn(variants({ tone, border }), className)} {...props}>\n\t\t\t\t{renderIcon(icon ?? tone ?? \"info\")}\n\t\t\t\t<span className=\"rf-banner__text flex-1\">{children}</span>\n\t\t\t</aside>\n\t\t</SkeletonContainer>\n\t);\n};\n\nconst COMMON_ICON_PROPS: React.SVGProps<SVGSVGElement> = {\n\tclassName: \"rf-banner__icon\",\n\twidth: 20,\n\theight: 20\n};\n\nfunction renderIcon(icon: BannerTone) {\n\tswitch (icon) {\n\t\tcase \"action\":\n\t\t\treturn <ActionIcon {...COMMON_ICON_PROPS} />;\n\t\tcase \"error\":\n\t\t\treturn <WarningIcon {...COMMON_ICON_PROPS} />;\n\t\tcase \"giftcard\":\n\t\t\treturn <GiftcardIcon {...COMMON_ICON_PROPS} />;\n\t\tdefault:\n\t\t\treturn <InfoIcon {...COMMON_ICON_PROPS} />;\n\t}\n}\n\nexport default memo(Banner);\n","import { useTranslations } from \"use-intl\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport Banner from \"../../ui/banner/banner\";\nimport BannerSkeleton from \"../../ui/banner/banner-skeleton\";\n\nconst ExchangeBanner = () => {\n\tconst t = useTranslations(\"banner\");\n\tconst { orderState, calculationState } = useReturnContext();\n\n\tconst hasInstantExchange =\n\t\torderState.value.data?.orderData.instantExchange ?? false;\n\tconst returnLabelPrice = calculationState.value.data?.returnLabelPrice ?? 0;\n\n\tif (!orderState.value.data || !calculationState.value.data) {\n\t\treturn <BannerSkeleton />;\n\t}\n\n\tif (hasInstantExchange) {\n\t\treturn (\n\t\t\t<Banner className=\"rf-exchange-banner\" tone=\"action\">\n\t\t\t\t{t(\"fast_exchange\")}\n\t\t\t</Banner>\n\t\t);\n\t}\n\n\tif (returnLabelPrice === 0) {\n\t\treturn (\n\t\t\t<Banner className=\"rf-exchange-banner\" tone=\"tip\">\n\t\t\t\t{t(\"free_shipping_label\")}\n\t\t\t</Banner>\n\t\t);\n\t}\n\n\treturn <Banner>{t(\"exchange_info\")}</Banner>;\n};\n\nexport default ExchangeBanner;\n","import { useCallback } from \"preact/hooks\";\nimport { NumberFormatOptions, useFormatter } from \"use-intl\";\nimport { parseToNumber } from \"../../utils/helpers\";\nimport { DEFAULT_CURRENCY } from \"../../utils/i18n\";\nimport useReturnContext from \"./use-return-context\";\nimport useWidgetContext from \"./use-widget-context\";\n\ntype TCurrencyDisplayOptions = NumberFormatOptions[\"currencyDisplay\"] | \"none\";\n\ninterface ICurrencyFormatOptions\n\textends Omit<NumberFormatOptions, \"style\" | \"currencyDisplay\"> {\n\tcurrencyDisplay?: TCurrencyDisplayOptions;\n\tfractionDigits?: number;\n}\n\nconst useCurrency = (hookOptions: ICurrencyFormatOptions = {}) => {\n\tconst { config } = useWidgetContext();\n\tconst { calculationState, cartState } = useReturnContext();\n\n\tconst cartCurrency = cartState.value.data?.transformed.currency;\n\tconst calcCurrency = calculationState.value.data?.currency.localCurrency;\n\n\tconst resolvedCurrencyCode =\n\t\thookOptions.currency ||\n\t\tcalcCurrency ||\n\t\tconfig.currency ||\n\t\tcartCurrency ||\n\t\tDEFAULT_CURRENCY;\n\n\tconst formatter = useFormatter();\n\n\tconst applyExchangeRate = useCallback(\n\t\t(value: number) => {\n\t\t\tconst currencyObject = calculationState.value.data?.currency;\n\t\t\tconst exchangeRate = parseToNumber(currencyObject?.exchangeRate, 1);\n\t\t\treturn value * exchangeRate;\n\t\t},\n\t\t[calculationState.value.data]\n\t);\n\n\tconst format = useCallback(\n\t\t(value: number | string, options?: ICurrencyFormatOptions) => {\n\t\t\tif (typeof value === \"string\") {\n\t\t\t\tvalue = parseFloat(value);\n\t\t\t}\n\n\t\t\tconst { fractionDigits = 2, ...mergedOptions } = {\n\t\t\t\t...hookOptions,\n\t\t\t\t...options\n\t\t\t};\n\t\t\tconst { currencyDisplay, ...formatOptions }: ICurrencyFormatOptions = {\n\t\t\t\tcurrency: resolvedCurrencyCode,\n\t\t\t\tminimumFractionDigits: fractionDigits,\n\t\t\t\tmaximumFractionDigits: fractionDigits,\n\t\t\t\t...mergedOptions\n\t\t\t};\n\n\t\t\tif (currencyDisplay === \"none\") {\n\t\t\t\treturn formatter.number(value, formatOptions);\n\t\t\t}\n\n\t\t\treturn formatter.number(value, {\n\t\t\t\tstyle: \"currency\",\n\t\t\t\tcurrencyDisplay,\n\t\t\t\t...formatOptions\n\t\t\t});\n\t\t},\n\t\t[formatter, hookOptions, resolvedCurrencyCode]\n\t);\n\n\treturn { format, applyExchangeRate, currency: resolvedCurrencyCode };\n};\n\nexport default useCurrency;\n","import { useMemo } from \"preact/hooks\";\nimport { parseToNumber } from \"../../utils/helpers\";\nimport useCurrency from \"./use-currency\";\nimport useReturnContext from \"./use-return-context\";\n\ninterface CalculationComputationResult {\n\torderTotal: number;\n\tcartTotal: number;\n\treturnTotal: number;\n\tgiftcardValue: number;\n\ttotalPriceDiscount: number;\n\tgiftCardBonusAmount: number;\n\treturnLabelPrice: number;\n\tisRefunding: boolean;\n}\n\nconst useCalculation = () => {\n\tconst { applyExchangeRate } = useCurrency();\n\tconst { calculationState, cartState } = useReturnContext();\n\n\tconst cart = cartState.value.data;\n\tconst calculation = calculationState.value.data;\n\n\tconst itemCount = cartState.value.data?.transformed.item_count ?? 0;\n\n\tconst computedTotals: CalculationComputationResult = useMemo(() => {\n\t\tif (!calculation || !cart) {\n\t\t\treturn {\n\t\t\t\torderTotal: 0,\n\t\t\t\tcartTotal: 0,\n\t\t\t\treturnTotal: 0,\n\t\t\t\tgiftcardValue: 0,\n\t\t\t\ttotalPriceDiscount: 0,\n\t\t\t\tgiftCardBonusAmount: 0,\n\t\t\t\treturnLabelPrice: 0,\n\t\t\t\tisRefunding: false\n\t\t\t};\n\t\t}\n\t\tconst {\n\t\t\torderSubtotal: orderTotal,\n\t\t\treturnSubtotal,\n\t\t\ttotal,\n\t\t\trefundMethods,\n\t\t\tdiscountSummary,\n\t\t\tgiftCardBonusAmount,\n\t\t\treturnLabelPrice\n\t\t} = calculation;\n\n\t\t// Exchange coverage + discount applied to return subtotal\n\t\tconst totalPriceDiscount = applyExchangeRate(\n\t\t\tdiscountSummary?.appliedToReturnSubtotal ?? 0\n\t\t);\n\n\t\tconst giftcardValue = parseToNumber(\n\t\t\tapplyExchangeRate(refundMethods?.giftcard)\n\t\t);\n\n\t\tconst cartTotal = applyExchangeRate(returnSubtotal) - giftcardValue;\n\n\t\tconst returnTotal = Math.abs(applyExchangeRate(total));\n\n\t\treturn {\n\t\t\torderTotal: applyExchangeRate(orderTotal),\n\t\t\tcartTotal,\n\t\t\treturnTotal,\n\t\t\tgiftcardValue,\n\t\t\ttotalPriceDiscount,\n\t\t\tgiftCardBonusAmount: applyExchangeRate(giftCardBonusAmount),\n\t\t\treturnLabelPrice: applyExchangeRate(returnLabelPrice),\n\t\t\tisRefunding: total > 0\n\t\t};\n\t}, [calculation, cart, applyExchangeRate]);\n\n\treturn {\n\t\titemCount,\n\t\t...computedTotals\n\t};\n};\n\nexport default useCalculation;\n","const StarIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={12}\n\t\theight={12}\n\t\tviewBox=\"0 0 13 13\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--star ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"m6.11 1.06 1.7 3.62 3.8.584-2.75 2.817.65 3.979-3.4-1.88-3.398 1.88.649-3.98L.61 5.265l3.8-.584z\"\n\t\t\tfill=\"currentColor\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth={1.111}\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t/>\n\t</svg>\n);\nexport default StarIcon;\n","import { memo } from \"preact/compat\";\nimport useCurrency from \"../../lib/hooks/context/use-currency\";\nimport { cn, isNil } from \"../../lib/utils/helpers\";\nimport Skeleton from \"./skeleton/skeleton\";\nimport SkeletonContainer from \"./skeleton/skeleton-container\";\n\ninterface PriceProps\n\textends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n\tvalue?: number;\n\tcompareAtValue?: number;\n\tpending?: boolean;\n}\n\nconst Price = ({\n\tvalue = 0,\n\tcompareAtValue,\n\tpending,\n\tclassName,\n\t...props\n}: PriceProps) => {\n\tconst { format: formatToCurrency } = useCurrency();\n\n\treturn (\n\t\t<SkeletonContainer\n\t\t\tskeleton={<Skeleton className=\"w-20\" />}\n\t\t\tpending={pending}\n\t\t>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-price font-medium text-base inline-flex flex-col items-end\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"rf-price__value\">{formatToCurrency(value)}</span>\n\t\t\t\t{!isNil(compareAtValue) && compareAtValue > value && (\n\t\t\t\t\t<span className=\"rf-price__compare-at text-affirmative line-through text-xs\">\n\t\t\t\t\t\t{formatToCurrency(compareAtValue)}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default memo(Price);\n","import Skeleton from \"../../../ui/skeleton/skeleton\";\n\nconst AdjustmentsTableSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-adjustments-table-skeleton space-y-2\">\n\t\t\t<Skeleton className=\"h-5 w-full\" />\n\t\t\t<Skeleton className=\"h-5 w-full\" />\n\t\t</div>\n\t);\n};\n\nexport default AdjustmentsTableSkeleton;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../../../lib/hooks/context/use-calculation\";\nimport useCurrency from \"../../../../lib/hooks/context/use-currency\";\nimport useReturnContext from \"../../../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../../../lib/utils/helpers\";\nimport GiftcardIcon from \"../../../icons/giftcard\";\nimport StarIcon from \"../../../icons/star\";\nimport Price from \"../../../ui/price\";\nimport AdjustmentsTableSkeleton from \"./adjustments-table-skeleton\";\n\nconst AdjustmentsTable = () => {\n\tconst t = useTranslations();\n\tconst { format: formatToCurrency } = useCurrency();\n\tconst { calculationState } = useReturnContext();\n\n\tconst {\n\t\tcartTotal,\n\t\tgiftcardValue,\n\t\tgiftCardBonusAmount,\n\t\treturnLabelPrice,\n\t\ttotalPriceDiscount\n\t} = useCalculation();\n\n\tconst showDiscountRow = totalPriceDiscount > 0;\n\tconst showGiftcardRow = giftcardValue > 0;\n\tconst showLabelPriceRow = returnLabelPrice > 0;\n\n\tif (!calculationState.value.data) {\n\t\treturn (\n\t\t\t<div className=\"rf-adjustments-table-loading p-base border-t border-neutral-2\">\n\t\t\t\t<AdjustmentsTableSkeleton />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"rf-adjustments-table p-base border-t border-neutral-2\">\n\t\t\t<table className=\"rf-adjustments-table__table w-full\">\n\t\t\t\t<tbody className=\"rf-adjustments-table__body\">\n\t\t\t\t\t{showDiscountRow && (\n\t\t\t\t\t\t<Row value={totalPriceDiscount * -1} className=\"text-affirmative\">\n\t\t\t\t\t\t\t{t(\"price_details.price_change\")}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{showLabelPriceRow && (\n\t\t\t\t\t\t<Row value={returnLabelPrice} className=\"text-neutral-3\">\n\t\t\t\t\t\t\t{t(\"price_details.return_label\")}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{cartTotal > 0 && (\n\t\t\t\t\t\t<Row value={cartTotal}>{t(\"price_details.products\")}</Row>\n\t\t\t\t\t)}\n\t\t\t\t\t{showGiftcardRow && (\n\t\t\t\t\t\t<Row className=\"text-primary\" value={giftcardValue}>\n\t\t\t\t\t\t\t<span className=\"align-middle\">\n\t\t\t\t\t\t\t\t<GiftcardIcon className=\"inline -mt-1 w-4 h-auto\" />{\" \"}\n\t\t\t\t\t\t\t\t{t(\"price_details.giftcard\")}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{giftCardBonusAmount > 0 && (\n\t\t\t\t\t\t\t\t<span className=\"text-sm text-reward align-middle\">\n\t\t\t\t\t\t\t\t\t+{formatToCurrency(giftCardBonusAmount)}{\" \"}\n\t\t\t\t\t\t\t\t\t<StarIcon className=\"inline -mt-0.5\" />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Row>\n\t\t\t\t\t)}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n};\n\nfunction Row({\n\tvalue,\n\tchildren,\n\tclassName\n}: {\n\tvalue: number;\n} & React.HTMLAttributes<HTMLTableRowElement>) {\n\treturn (\n\t\t<tr className={cn(\"rf-adjustments-table__row h-6 group/row\", className)}>\n\t\t\t<th\n\t\t\t\tscope=\"row\"\n\t\t\t\tclassName=\"rf-adjustments-table__label space-x-2 font-normal text-left group-first/row:pt-0 group-last/row:pb-0 py-0.5\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</th>\n\t\t\t<td className=\"rf-adjustments-table__value text-right\">\n\t\t\t\t<Price value={value} />\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\nexport default AdjustmentsTable;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport ExchangeBanner from \"./exchange-banner\";\nimport AdjustmentsTable from \"./table/adjustments-table\";\n\nconst ExchangeAdjustments = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-exchange-adjustments border-t border-neutral-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-exchange-adjustments__banner p-base\">\n\t\t\t\t<ExchangeBanner />\n\t\t\t</div>\n\t\t\t<AdjustmentsTable />\n\t\t</div>\n\t);\n};\n\nexport default ExchangeAdjustments;\n","import { useTranslations } from \"use-intl\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\n\nconst AnnoucementBar = () => {\n\tconst t = useTranslations(\"announcement\");\n\tconst { cartState } = useReturnContext();\n\n\tconst itemCount = cartState.value.data?.transformed.item_count;\n\n\tconst stepSnippet = (itemCount ?? 0) === 0 ? \"step_1\" : \"step_2\";\n\n\treturn (\n\t\t<div className=\"rf-announcement-bar h-14 bg-announcement-background text-announcement-foreground px-base flex items-center justify-between text-sm\">\n\t\t\t<ReturnAvatarStack />\n\t\t\t<div className=\"rf-announcement-bar__content space-x-1\">\n\t\t\t\t<span className=\"rf-announcement-bar__step-label text-neutral-3\">\n\t\t\t\t\t{t(\"this_step\")}\n\t\t\t\t</span>\n\t\t\t\t<span className=\"rf-announcement-bar__step-text\">{t(stepSnippet)}</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AnnoucementBar;\n","import { cn } from \"../../lib/utils/helpers\";\nimport WarningIcon from \"../icons/warning\";\n\ninterface ErrorScreenProps extends React.HTMLAttributes<HTMLDivElement> {\n\terrorMessage?: string;\n\tinstructionMessage?: string;\n}\n\nconst ErrorScreen = ({\n\tclassName,\n\terrorMessage = \"Der skete en fejl!\",\n\tinstructionMessage = \"Opdater siden og prøv igen.\",\n\t...props\n}: ErrorScreenProps) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"rf-error-screen p-base flex-1\", className)}\n\t\t\trole=\"alert\"\n\t\t\taria-live=\"assertive\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-error-screen__content bg-[#FEF2F2] rounded-lg p-base flex flex-col items-center justify-center gap-1 text-center size-full\">\n\t\t\t\t<WarningIcon className=\"mb-2 fill-destructive\" aria-hidden=\"true\" />\n\t\t\t\t<p\n\t\t\t\t\tclassName=\"rf-error-screen__message text-neutral-3\"\n\t\t\t\t\tid=\"error-heading\"\n\t\t\t\t>\n\t\t\t\t\t{errorMessage}\n\t\t\t\t</p>\n\t\t\t\t<p className=\"rf-error-screen__instruction\">{instructionMessage}</p>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ErrorScreen;\n","import { useLocale } from \"use-intl\";\nimport { Locale } from \"../../utils/i18n\";\nimport navigation from \"../../utils/navigation\";\nimport useWidgetContext from \"../context/use-widget-context\";\n\nconst useNavigation = () => {\n\tconst locale = useLocale() as Locale;\n\tconst {\n\t\tconfig: {\n\t\t\tdata: { slug }\n\t\t}\n\t} = useWidgetContext();\n\n\tif (!slug) {\n\t\tthrow new Error(\n\t\t\t\"useNavigation must be used within a WidgetContextProvider with a valid slug\"\n\t\t);\n\t}\n\n\treturn {\n\t\tback: (fallbackProductId?: string) =>\n\t\t\tnavigation.back(locale, slug, fallbackProductId),\n\t\tcontinue: () => navigation.continue(locale, slug),\n\t\texit: navigation.exit\n\t};\n};\n\nexport default useNavigation;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../lib/hooks/context/use-calculation\";\nimport useErrors from \"../../lib/hooks/context/use-errors\";\nimport useNavigation from \"../../lib/hooks/context/use-navigation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport ArrowRightIcon from \"../icons/arrow-right\";\nimport Button from \"../ui/button\";\nimport Price from \"../ui/price\";\n\nconst ExchangeConfirmation = () => {\n\tconst t = useTranslations(\"confirmation\");\n\tconst navigation = useNavigation();\n\n\tconst {\n\t\tcalculationState,\n\t\tisPending: globalPendingState,\n\t\thasFailed\n\t} = useReturnContext();\n\tconst { isRefunding, returnTotal } = useCalculation();\n\tconst { errors } = useErrors();\n\n\tconst blockingErrors = errors.filter(error => error.blocking);\n\n\tconst canContinue =\n\t\t!hasFailed && !globalPendingState && blockingErrors.length === 0;\n\n\tfunction handleContinue() {\n\t\tif (!canContinue) return;\n\t\tnavigation.continue();\n\t}\n\n\treturn (\n\t\t<div className=\"rf-exchange-confirmation rounded-t-2xl bg-neutral-1 p-base pb-safe-offset-base space-y-2\">\n\t\t\t<div className=\"rf-exchange-confirmation__header flex justify-between items-center pb-2\">\n\t\t\t\t<h3 className=\"rf-exchange-confirmation__title font-medium\">\n\t\t\t\t\t{isRefunding ? t(\"title_refund\") : t(\"title_checkout\")}\n\t\t\t\t</h3>\n\t\t\t\t<Price value={returnTotal} pending={calculationState.value.pending} />\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\tdisabled={!canContinue}\n\t\t\t\tonClick={handleContinue}\n\t\t\t\tclassName=\"w-full\"\n\t\t\t\ticon={ArrowRightIcon}\n\t\t\t>\n\t\t\t\t<span>{t(\"confirm\")}</span>\n\t\t\t</Button>\n\t\t\t<p className=\"rf-exchange-confirmation__disclaimer text-sm text-neutral-3 text-center mx-auto font-normal\">\n\t\t\t\t{t(\"disclaimer\")}\n\t\t\t</p>\n\t\t</div>\n\t);\n};\n\nexport default ExchangeConfirmation;\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils/helpers\";\n\nconst iconVariants = cva(\n\t\"rf-icon size-8 rounded-full flex items-center justify-center text-2xl p-[9px]\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary: \"rf-icon--primary border border-neutral-2 text-black\",\n\t\t\t\tsolid: \"rf-icon--solid bg-black text-white\",\n\t\t\t\t\"solid-inverse\": \"rf-icon--solid-inverse bg-neutral-1 text-neutral-3\"\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tsm: \"size-7 p-[8px]\",\n\t\t\t\tmd: \"size-8 p-[9px]\"\n\t\t\t}\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"primary\",\n\t\t\tsize: \"md\"\n\t\t}\n\t}\n);\n\ninterface IconAttributesWithChildren {\n\ticon?: never;\n\tchildren: preact.ComponentChildren;\n}\n\ninterface IconAttributesWithoutChildren {\n\ticon: (props: React.SVGProps<SVGSVGElement>) => React.JSX.Element;\n\tchildren?: never;\n}\n\ntype IconAttributes =\n\t| IconAttributesWithChildren\n\t| IconAttributesWithoutChildren;\n\ntype IconProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> &\n\tVariantProps<typeof iconVariants> &\n\tIconAttributes;\n\nconst Icon = ({\n\ticon: IconComponent,\n\tvariant,\n\tsize,\n\tclassName,\n\tchildren,\n\t...props\n}: IconProps) => {\n\treturn (\n\t\t<div className={cn(iconVariants({ variant, size }), className)} {...props}>\n\t\t\t{IconComponent && <IconComponent className=\"size-full\" />}\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default Icon;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport Icon from \"../icons/icon\";\nimport XIcon from \"../icons/x\";\n\nconst ExchangeHeader = () => {\n\tconst t = useTranslations(\"common\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-exchange-header border-t border-neutral-3 p-base flex items-center justify-between\">\n\t\t\t<h2 className=\"rf-exchange-header__title text-xl font-semibold\">\n\t\t\t\t{t(\"title\")}\n\t\t\t</h2>\n\t\t\t<button\n\t\t\t\tclassName=\"rf-exchange-header__close-button flex items-center gap-2 group\"\n\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<span className=\"rf-exchange-header__close-text\">{t(\"close\")}</span>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"group-hover:bg-neutral-2 transition-colors\"\n\t\t\t\t\ticon={XIcon}\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default ExchangeHeader;\n","const CartIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={28}\n\t\theight={27}\n\t\tviewBox=\"0 0 28 27\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--cart ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"M8.094 20.443c-1.223-.066-1.2-1.856 0-1.919 3.4.013 12.367.004 15.875.006.96 0 1.78-.68 1.996-1.652l1.992-8.979a1.77 1.77 0 0 0-.316-1.46 1.62 1.62 0 0 0-1.293-.653c-1.41 0-13.39-.057-19.525-.082L5.85 1.947C5.617 1.05 4.83.423 3.936.423H.821C.367.423 0 .805 0 1.277s.367.854.82.854h3.116c.154 0 .29.108.33.262L8 16.818a2.5 2.5 0 0 0-1.732.793 2.7 2.7 0 0 0-.738 1.919c.025 1.445 1.174 2.621 2.563 2.621H9.29a3.1 3.1 0 0 0-.278 1.282c0 1.648 1.289 2.99 2.873 2.99s2.872-1.341 2.872-2.99c0-.459-.1-.893-.277-1.282h5.182a3.1 3.1 0 0 0-.277 1.281c0 1.649 1.288 2.99 2.872 2.99s2.873-1.341 2.873-2.99a3.1 3.1 0 0 0-.299-1.326.85.85 0 0 0 .56-.81c0-.47-.368-.853-.822-.853zm5.023 2.99c0 .706-.552 1.281-1.231 1.281-.68 0-1.232-.575-1.232-1.281 0-.707.552-1.281 1.23-1.282h.003c.678 0 1.23.575 1.23 1.282m9.141 1.28c-.678 0-1.23-.574-1.23-1.28 0-.7.54-1.27 1.21-1.282h.04c.67.011 1.212.582 1.212 1.281 0 .707-.553 1.282-1.232 1.282M26.355 7.5q.005.009.003.015l-.84 3.783h-2.842l.484-3.817 3.182.013q.006-.002.013.006m-8.462 9.322v-3.815h2.91l-.483 3.815zm-4.07 0-.488-3.815h2.916v3.815zm-3.779 0h-.002a.45.45 0 0 1-.428-.341l-.9-3.475h2.965l.488 3.816zm3.073-5.524-.494-3.861 3.628.015v3.846zm4.776 0v-3.84l3.612.016-.485 3.824zM10.966 7.43l.495 3.868H8.27L7.267 7.414zm13.003 9.392h-1.993l.483-3.815h2.68l-.773 3.486a.41.41 0 0 1-.397.329\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default CartIcon;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport CartIcon from \"../icons/cart\";\n\nconst ExchangePlaceholder = () => {\n\tconst t = useTranslations(\"exchange_placeholder\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-exchange-placeholder px-base pb-base\">\n\t\t\t<div className=\"rf-exchange-placeholder__content border border-dashed border-[#DDDDDD] h-36 rounded-md flex items-center justify-center flex-col gap-2 font-medium text-base p-base\">\n\t\t\t\t<CartIcon className=\"text-neutral-3\" />\n\t\t\t\t<span className=\"rf-exchange-placeholder__text\">\n\t\t\t\t\t{t(\"prompt_text\")}\n\t\t\t\t</span>\n\t\t\t\t<button\n\t\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\t\tclassName=\"rf-exchange-placeholder__continue text-button-background decoration-[color:hsla(var(--rf-c-button-background),_0.25)] underline-offset-4 underline text-sm cursor-pointer\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t{t(\"continue\")}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ExchangePlaceholder;\n","import useErrors from \"../../../lib/hooks/context/use-errors\";\nimport Banner from \"../../ui/banner/banner\";\n\nconst ProductErrors = () => {\n\tconst { errors } = useErrors();\n\n\tif (errors.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"rf-product-view__error-list px-base pb-base space-y-base\">\n\t\t\t{errors.map(({ id, message }) => (\n\t\t\t\t<Banner\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName=\"rf-product-view__error animate-slide-up-and-fade-in\"\n\t\t\t\t\ttone=\"error\"\n\t\t\t\t>\n\t\t\t\t\t{message}\n\t\t\t\t</Banner>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default ProductErrors;\n","import { OrderProduct, ShopifyCartItem } from \"../../../lib/types\";\n\nexport interface QuantityPickerConstraints {\n\tmin: {\n\t\tlimit: number;\n\t\tdisabled: boolean;\n\t};\n\tmax: {\n\t\tlimit: number;\n\t\tdisabled: boolean;\n\t};\n}\n\nexport const DEFAULT_CONSTRAINTS: QuantityPickerConstraints = {\n\tmin: { limit: 1, disabled: false },\n\tmax: { limit: 99, disabled: true }\n};\n\nexport function getNormalizedQuantityRule(\n\tquantityRule: ShopifyCartItem[\"quantity_rule\"]\n) {\n\tconst minQuantity = quantityRule?.min ?? 1;\n\tconst maxQuantity = quantityRule?.max ?? 99;\n\tconst increment = quantityRule?.increment ?? 1;\n\n\tconst constraints: QuantityPickerConstraints = {\n\t\tmin: { limit: minQuantity, disabled: false },\n\t\tmax: { limit: maxQuantity, disabled: true }\n\t};\n\n\treturn {\n\t\tmin: minQuantity,\n\t\tmax: maxQuantity,\n\t\tincrement,\n\t\tconstraints\n\t};\n}\n\nexport function getSafeProductUrl(\n\tgetProductUrl:\n\t\t| ((product: ShopifyCartItem | OrderProduct) => string)\n\t\t| undefined,\n\tproduct: ShopifyCartItem | OrderProduct\n): string {\n\tconst fallback = `/products/${product.handle}`;\n\tif (!getProductUrl) return fallback;\n\ttry {\n\t\tconst url = getProductUrl(product);\n\t\treturn typeof url === \"string\" && url ? url : fallback;\n\t} catch {\n\t\treturn fallback;\n\t}\n}\n\nexport function clampQuantity(\n\tquantity: number,\n\tconstraints: QuantityPickerConstraints = DEFAULT_CONSTRAINTS\n) {\n\treturn Math.max(\n\t\tconstraints.min.limit,\n\t\tMath.min(quantity, constraints.max.limit)\n\t);\n}\n","import { useCallback } from \"preact/hooks\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport { logger } from \"../../../lib/utils/logger\";\nimport Icon from \"../../icons/icon\";\nimport {\n\tclampQuantity,\n\tDEFAULT_CONSTRAINTS,\n\tQuantityPickerConstraints\n} from \"./product.utils\";\n\ninterface QuantityPickerProps extends React.HTMLAttributes<HTMLDivElement> {\n\tonIncrement: (isAtBound: boolean) => void | Promise<void>;\n\tonDecrement: (isAtBound: boolean) => void | Promise<void>;\n\tquantity: number;\n\tconstraints?: QuantityPickerConstraints;\n\tpending?: boolean;\n\tdisabled?: boolean;\n}\n\nconst QuantityPicker = ({\n\tonIncrement,\n\tonDecrement,\n\tconstraints = DEFAULT_CONSTRAINTS,\n\tquantity,\n\tpending = false,\n\tdisabled = false,\n\tclassName,\n\t...props\n}: QuantityPickerProps) => {\n\tconst isDisabled = pending || disabled;\n\n\tconst isAtMin = quantity === constraints.min.limit;\n\tconst isAtMax = quantity === constraints.max.limit;\n\n\tconst incrementDisabled = (constraints.max.disabled && isAtMax) || isDisabled;\n\tconst decrementDisabled = (constraints.min.disabled && isAtMin) || isDisabled;\n\n\tconst handleIncrement = useCallback(async () => {\n\t\tif (incrementDisabled) return;\n\t\ttry {\n\t\t\tawait onIncrement(isAtMax);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Increment failed:\", err);\n\t\t}\n\t}, [incrementDisabled, onIncrement, isAtMax]);\n\n\tconst handleDecrement = useCallback(async () => {\n\t\tif (decrementDisabled) return;\n\t\ttry {\n\t\t\tawait onDecrement(isAtMin);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"decrement failed:\", err);\n\t\t}\n\t}, [decrementDisabled, onDecrement, isAtMin]);\n\n\tconst clampedQuantity = clampQuantity(quantity, constraints);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-quantity-picker rounded-full p-1 border border-neutral-1 flex items-center h-min gap-2 transition-opacity\",\n\t\t\t\tisDisabled &&\n\t\t\t\t\t\"rf-quantity-picker--disabled opacity-50 cursor-not-allowed\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"rf-quantity-picker__decrement-button disabled:!opacity-50 desktop:hover:opacity-80 disabled:cursor-not-allowed transition-opacity\"\n\t\t\t\tdisabled={decrementDisabled}\n\t\t\t\tonClick={handleDecrement}\n\t\t\t>\n\t\t\t\t<Icon variant=\"solid-inverse\" size=\"sm\">\n\t\t\t\t\t<span className=\"rf-quantity-picker__decrement-icon text-base leading-none -mt-0.5\">\n\t\t\t\t\t\t-\n\t\t\t\t\t</span>\n\t\t\t\t</Icon>\n\t\t\t</button>\n\t\t\t<div className=\"rf-quantity-picker__quantity px-1.5 flex-1 text-base\">\n\t\t\t\t{clampedQuantity}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName=\"rf-quantity-picker__increment-button disabled:!opacity-50 desktop:hover:opacity-80 disabled:cursor-not-allowed transition-opacity\"\n\t\t\t\tdisabled={incrementDisabled}\n\t\t\t\tonClick={handleIncrement}\n\t\t\t>\n\t\t\t\t<Icon variant=\"solid-inverse\" size=\"sm\">\n\t\t\t\t\t<span className=\"rf-quantity-picker__increment-icon text-base leading-none -mt-0.5\">\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t</Icon>\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default QuantityPicker;\n","import { memo } from \"preact/compat\";\nimport { useCallback, useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useErrors from \"../../../lib/hooks/context/use-errors\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport useCartActions from \"../../../lib/hooks/feature/use-cart-actions\";\nimport { ShopifyCartItem } from \"../../../lib/types\";\nimport { updateCartItemQuantity } from \"../../../lib/utils/cart\";\nimport {\n\tgetErrorStateFromCode,\n\tProductErrorState\n} from \"../../../lib/utils/errors\";\nimport { isNil } from \"../../../lib/utils/helpers\";\nimport { getNormalizedQuantityRule } from \"./product.utils\";\nimport QuantityPicker from \"./quantity-picker\";\n\ninterface ProductActionsProps {\n\tvariantId: number;\n\tquantity?: number;\n\tquantityRule: ShopifyCartItem[\"quantity_rule\"];\n}\n\nconst ProductActions = ({\n\tvariantId,\n\tquantity,\n\tquantityRule\n}: ProductActionsProps) => {\n\tconst t = useTranslations(\"product\");\n\tconst [isPending, setIsPending] = useState(false);\n\tconst { cartState, isPending: anyStatePending } = useReturnContext();\n\tconst errors = useErrors();\n\tconst { processCartUpdate } = useCartActions();\n\n\tconst handleQuantityChange = useCallback(\n\t\tasync (newQuantity: number) => {\n\t\t\tsetIsPending(true);\n\n\t\t\tconst errorId = ProductErrorState.ProductLimit;\n\n\t\t\ttry {\n\t\t\t\t// Start loading state\n\t\t\t\tcartState.set(prev => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tpending: true,\n\t\t\t\t\terror: null\n\t\t\t\t}));\n\n\t\t\t\tconst updatedCart = await updateCartItemQuantity({\n\t\t\t\t\tvariantId,\n\t\t\t\t\tquantity: newQuantity\n\t\t\t\t});\n\n\t\t\t\tawait processCartUpdate(updatedCart);\n\n\t\t\t\t// Remove the error if it exists\n\t\t\t\tif (errors.has(errorId)) {\n\t\t\t\t\terrors.remove(errorId);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconst error = err as Error;\n\t\t\t\tconst parsed = parseInt(error.message);\n\t\t\t\tconst errorCode = isNaN(parsed) ? null : parsed;\n\n\t\t\t\tcartState.set(prev => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tpending: false\n\t\t\t\t}));\n\n\t\t\t\terrors.push({\n\t\t\t\t\tid: errorId,\n\t\t\t\t\tmessage: t(`error.${getErrorStateFromCode(errorCode)}`)\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tsetIsPending(false);\n\t\t\t}\n\t\t},\n\t\t[cartState, variantId, errors, t, processCartUpdate]\n\t);\n\n\tif (isNil(quantity)) {\n\t\treturn null;\n\t}\n\n\tconst { increment, constraints } = getNormalizedQuantityRule(quantityRule);\n\n\treturn (\n\t\t<div className=\"rf-product-actions flex items-center\">\n\t\t\t<QuantityPicker\n\t\t\t\tpending={anyStatePending || isPending}\n\t\t\t\tconstraints={constraints}\n\t\t\t\tonDecrement={isAtBound => {\n\t\t\t\t\tconst newQuantity = isAtBound ? 0 : quantity - increment;\n\t\t\t\t\thandleQuantityChange(newQuantity);\n\t\t\t\t}}\n\t\t\t\tonIncrement={() => {\n\t\t\t\t\tconst newQuantity = quantity + increment;\n\t\t\t\t\thandleQuantityChange(newQuantity);\n\t\t\t\t}}\n\t\t\t\tquantity={quantity}\n\t\t\t/>\n\t\t\t<button\n\t\t\t\tdisabled={anyStatePending || isPending}\n\t\t\t\tclassName=\"rf-product-actions__remove-button underline ml-auto text-sm disabled:cursor-not-allowed disabled:opacity-50 transition-opacity cursor-pointer\"\n\t\t\t\tonClick={() => handleQuantityChange(0)}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t{t(\"remove\")}\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\nexport default memo(ProductActions);\n","import { cn } from \"../../lib/utils/helpers\";\n\ninterface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n\tdisabled?: boolean;\n\tunstyled?: boolean;\n\tonDisabledClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = ({\n\tclassName,\n\thref,\n\tunstyled = false,\n\tonClick,\n\tonDisabledClick,\n\tdisabled = false,\n\t...props\n}: LinkProps) => {\n\tconst isDisabled = disabled || !href;\n\n\tfunction handleClick(e: React.MouseEvent<HTMLAnchorElement>) {\n\t\tif (disabled) {\n\t\t\te.preventDefault();\n\t\t\tonDisabledClick?.(e);\n\t\t\treturn;\n\t\t}\n\t\tonClick?.(e);\n\t}\n\n\treturn (\n\t\t<a\n\t\t\tonClick={handleClick}\n\t\t\thref={isDisabled ? undefined : href}\n\t\t\taria-disabled={isDisabled}\n\t\t\tclassName={cn(\n\t\t\t\t\"block\",\n\t\t\t\t!unstyled && \"transition-opacity\",\n\t\t\t\tisDisabled\n\t\t\t\t\t? unstyled\n\t\t\t\t\t\t? \"cursor-default\"\n\t\t\t\t\t\t: \"cursor-not-allowed opacity-50\"\n\t\t\t\t\t: \"cursor-pointer\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport default Link;\n","import { memo } from \"preact/compat\";\nimport { useTranslations } from \"use-intl\";\nimport useCurrency from \"../../../lib/hooks/context/use-currency\";\nimport { cn, isNil, parseToNumber } from \"../../../lib/utils/helpers\";\nimport Link from \"../../ui/link\";\nimport Price from \"../../ui/price\";\n\nexport interface ProductAttributesAttributes {\n\ttitle: string;\n\tvariantTitle: string | null | undefined;\n\tpending?: boolean;\n\tprice: number | null | undefined;\n\tcompareAtPrice: number | null | undefined;\n\tquantity: number;\n\thref?: string;\n}\n\ninterface ProductAttributesProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\" | \"title\">,\n\t\tProductAttributesAttributes {\n\tshowQuantity?: boolean;\n}\n\nconst ProductAttributes = ({\n\ttitle,\n\tvariantTitle,\n\tpending = false,\n\tprice,\n\tcompareAtPrice,\n\tclassName,\n\tquantity = 1,\n\thref,\n\tshowQuantity = true,\n\t...props\n}: ProductAttributesProps) => {\n\tconst t = useTranslations();\n\tconst { applyExchangeRate } = useCurrency();\n\tconst quantityIsVisible = quantity > 1 && showQuantity;\n\n\tconst resolvedCompareAt = !isNil(compareAtPrice)\n\t\t? applyExchangeRate(compareAtPrice)\n\t\t: undefined;\n\n\tconst resolvedPrice = applyExchangeRate(parseToNumber(price));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-product-attributes flex justify-between gap-4 text-sm leading-tight\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"rf-product-attributes__info flex-1 min-w-0\">\n\t\t\t\t{href ? (\n\t\t\t\t\t<Link unstyled href={href} className=\"rf-product-attributes__link\">\n\t\t\t\t\t\t<h3 className=\"rf-product-attributes__title text-base font-medium line-clamp-1\">\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t</Link>\n\t\t\t\t) : (\n\t\t\t\t\t<h3 className=\"rf-product-attributes__title text-base font-medium line-clamp-1\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</h3>\n\t\t\t\t)}\n\t\t\t\t{(variantTitle || quantityIsVisible) && (\n\t\t\t\t\t<h4 className=\"rf-product-attributes__variant text-neutral-3\">\n\t\t\t\t\t\t{variantTitle}{\" \"}\n\t\t\t\t\t\t{quantityIsVisible && (\n\t\t\t\t\t\t\t<span className=\"rf-product-attributes__quantity\">\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t{t(\"piece\", {\n\t\t\t\t\t\t\t\t\tcount: quantity\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</h4>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<Price\n\t\t\t\tpending={pending}\n\t\t\t\tvalue={resolvedPrice}\n\t\t\t\tcompareAtValue={resolvedCompareAt}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nexport default memo(ProductAttributes);\n","import { memo } from \"preact/compat\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../../lib/types\";\nimport Image from \"../../ui/image\";\n\ninterface ProductImageProps {\n\timageSource: string;\n\ttitle: string;\n\thref: string;\n}\n\nconst ProductImage = ({ imageSource, title, href }: ProductImageProps) => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\tconst handleAnchorClick = () =>\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\n\treturn (\n\t\t<a className=\"rf-product-image\" href={href} onClick={handleAnchorClick}>\n\t\t\t<Image\n\t\t\t\tclassName=\"rf-product-image__img w-[70px] h-24 rounded-lg border border-neutral-1 object-cover\"\n\t\t\t\tsrc={imageSource}\n\t\t\t\talt={title}\n\t\t\t/>\n\t\t</a>\n\t);\n};\n\nexport default memo(ProductImage);\n","import useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationExchangeProduct,\n\tShopifyCartItem\n} from \"../../../lib/types\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport ProductActions from \"./product-actions\";\nimport ProductAttributes from \"./product-attributes\";\nimport ProductImage from \"./product-image\";\nimport { getSafeProductUrl } from \"./product.utils\";\n\nexport interface ExtendedShopifyProduct extends ShopifyCartItem {\n\tcalculation: Omit<CalculationExchangeProduct, \"coverage\"> | undefined;\n}\n\ninterface ProductProps\n\textends Omit<\n\t\tReact.HTMLAttributes<HTMLLIElement>,\n\t\t\"children\" | \"title\" | \"id\" | \"key\"\n\t> {\n\tproduct: ExtendedShopifyProduct;\n}\n\nconst Product = ({\n\tproduct: { calculation, ...product },\n\tclassName,\n\t...props\n}: ProductProps) => {\n\tconst {\n\t\tconfig: { options }\n\t} = useWidgetContext();\n\n\tconst href = getSafeProductUrl(options.getProductUrl, product);\n\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\"rf-product flex gap-4 p-base first:pt-0\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ProductImage\n\t\t\t\timageSource={product.image}\n\t\t\t\ttitle={product.product_title}\n\t\t\t\thref={href}\n\t\t\t/>\n\t\t\t<div className=\"rf-product__content space-y-2 flex-1\">\n\t\t\t\t<ProductAttributes\n\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\thref={href}\n\t\t\t\t\ttitle={product.product_title}\n\t\t\t\t\tvariantTitle={product.variant_title}\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tprice={calculation?.price}\n\t\t\t\t\tcompareAtPrice={calculation?.compareAtPrice}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t\tshowQuantity={false}\n\t\t\t\t/>\n\t\t\t\t<ProductActions\n\t\t\t\t\tvariantId={product.variant_id}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t\tquantityRule={product.quantity_rule}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</li>\n\t);\n};\n\nexport default Product;\n","import useCartItems from \"../../../lib/hooks/context/use-cart-items\";\nimport Product from \"./product\";\n\nconst ProductList = () => {\n\tconst { cartItems } = useCartItems();\n\n\treturn (\n\t\t<ul className=\"rf-product-list border-neutral-2 divide-y divide-neutral-2\">\n\t\t\t{cartItems.map((product, i) => {\n\t\t\t\tconst key = `${product.id}-${i}`;\n\t\t\t\treturn <Product key={key} product={product} />;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nexport default ProductList;\n","import { useMemo } from \"preact/hooks\";\nimport { ExtendedShopifyProduct } from \"../../../components/drawer/product/product\";\nimport { CalculationExchangeProduct } from \"../../types\";\nimport { stripShopifyId } from \"../../utils/shopify\";\nimport useReturnContext from \"./use-return-context\";\n\n/**\n * Merges cart items with their corresponding exchange calculation details.\n * Returns cart items enriched with pricing information from the calculation state.\n */\nconst useCartItems = () => {\n\tconst { cartState, calculationState } = useReturnContext();\n\n\tconst transformedCart = cartState.value.data?.transformed;\n\tconst exchangeDetails =\n\t\tcalculationState.value.data?.exchange?.exchangeDetails;\n\n\tconst cartItems: ExtendedShopifyProduct[] = useMemo(() => {\n\t\tconst items = transformedCart?.items;\n\n\t\tif (!items) return [];\n\n\t\treturn items.map(item => {\n\t\t\tlet calculation: Omit<CalculationExchangeProduct, \"coverage\"> | undefined;\n\n\t\t\tconst exchangeDetailItems = exchangeDetails?.filter(exchangeItem => {\n\t\t\t\tif (exchangeItem.variantId) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tNumber(stripShopifyId(exchangeItem.variantId)) === item.variant_id\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\tNumber(stripShopifyId(exchangeItem.productId)) === item.product_id\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tif (exchangeDetailItems && exchangeDetailItems.length > 0) {\n\t\t\t\t// Aggregate pricing from all matching exchange detail items for this cart item\n\t\t\t\tcalculation = exchangeDetailItems.reduce(\n\t\t\t\t\t(acc, { coverage, ...curr }) => {\n\t\t\t\t\t\tconst resolvedCurrPrice = coverage?.originalUnitPrice ?? curr.price;\n\n\t\t\t\t\t\tconst resolvedCompareAt =\n\t\t\t\t\t\t\tcoverage?.exchangeUnitPrice ?? curr.compareAtPrice ?? null;\n\n\t\t\t\t\t\tif (resolvedCompareAt) {\n\t\t\t\t\t\t\tif (!acc.compareAtPrice) {\n\t\t\t\t\t\t\t\tacc.compareAtPrice = resolvedCompareAt;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.compareAtPrice += resolvedCompareAt;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tacc.price += resolvedCurrPrice;\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...curr,\n\t\t\t\t\t\t\t...acc\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tprice: 0,\n\t\t\t\t\t\tcompareAtPrice: null\n\t\t\t\t\t} as Omit<CalculationExchangeProduct, \"coverage\">\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\tcalculation\n\t\t\t};\n\t\t});\n\t}, [transformedCart, exchangeDetails]);\n\n\treturn { cartItems };\n};\n\nexport default useCartItems;\n","const ArrowDownIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={9}\n\t\theight={11}\n\t\tviewBox=\"0 0 9 11\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-down ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\td=\"m4.92 10.824 3.907-3.972A.6.6 0 0 0 9 6.426.6.6 0 0 0 8.827 6l-.355-.36a.594.594 0 0 0-.842 0L5.346 7.957V.594A.583.583 0 0 0 4.764 0h-.502a.605.605 0 0 0-.608.594v7.39L1.357 5.64a.58.58 0 0 0-.831 0L.172 6A.6.6 0 0 0 0 6.426c0 .161.062.312.173.426l3.907 3.972A.58.58 0 0 0 4.5 11a.58.58 0 0 0 .42-.176\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\n\nexport default ArrowDownIcon;\n","const ChevronIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={7}\n\t\tviewBox=\"0 0 11 7\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--chevron ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M10.632 6.183a.95.95 0 0 1-.673.24.97.97 0 0 1-.652-.288l-3.375-3.49-3.375 3.49a.96.96 0 0 1-.652.287.96.96 0 0 1-.673-.24.9.9 0 0 1-.299-.625.88.88 0 0 1 .25-.646L5.244.71a.97.97 0 0 1 1.375 0l4.062 4.2a.9.9 0 0 1 .25.646.9.9 0 0 1-.3.626\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default ChevronIcon;\n","import { useEffect, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils/helpers\";\n\ninterface ExpanderProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"onToggle\"> {\n\tisOpen: boolean;\n\tcollapseDelay?: number;\n\tautoCloseAfter?: number;\n\tonToggle?: (isOpen: boolean) => void;\n}\n\nconst Expander = ({\n\tisOpen,\n\tclassName,\n\tstyle,\n\tchildren,\n\tcollapseDelay = 300,\n\tautoCloseAfter,\n\tonToggle,\n\t...props\n}: ExpanderProps) => {\n\tconst [isRendered, setIsRendered] = useState(isOpen);\n\tconst [height, setHeight] = useState<number | undefined>(\n\t\tisOpen ? undefined : 0\n\t);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst collapseTimeoutRef = useRef<NodeJS.Timeout>();\n\tconst autoCloseTimeoutRef = useRef<NodeJS.Timeout>();\n\n\t// Measure height whenever content might change\n\tconst measureHeight = () => {\n\t\tconst container = containerRef.current;\n\t\tif (container) {\n\t\t\tsetHeight(container.scrollHeight);\n\t\t}\n\t};\n\n\t// Handle opening/closing state changes\n\tuseEffect(() => {\n\t\tif (collapseTimeoutRef.current) {\n\t\t\tclearTimeout(collapseTimeoutRef.current);\n\t\t}\n\t\tif (autoCloseTimeoutRef.current) {\n\t\t\tclearTimeout(autoCloseTimeoutRef.current);\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\t// Opening: render first, then measure height\n\t\t\tsetIsRendered(true);\n\n\t\t\t// Set up auto-close timer if specified\n\t\t\tif (autoCloseAfter && onToggle) {\n\t\t\t\tautoCloseTimeoutRef.current = setTimeout(() => {\n\t\t\t\t\tonToggle(false);\n\t\t\t\t}, autoCloseAfter);\n\t\t\t}\n\t\t} else {\n\t\t\t// Closing: set height to 0 immediately, unmount after delay\n\t\t\tsetHeight(0);\n\t\t\tcollapseTimeoutRef.current = setTimeout(() => {\n\t\t\t\tsetIsRendered(false);\n\t\t\t}, collapseDelay);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (collapseTimeoutRef.current) {\n\t\t\t\tclearTimeout(collapseTimeoutRef.current);\n\t\t\t}\n\t\t\tif (autoCloseTimeoutRef.current) {\n\t\t\t\tclearTimeout(autoCloseTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, [isOpen, collapseDelay, autoCloseAfter, onToggle]);\n\n\t// Measure height when rendered and opened\n\tuseEffect(() => {\n\t\tif (isRendered && isOpen) {\n\t\t\t// Use requestAnimationFrame to ensure DOM is updated\n\t\t\tconst frame = requestAnimationFrame(() => {\n\t\t\t\tmeasureHeight();\n\t\t\t});\n\t\t\treturn () => cancelAnimationFrame(frame);\n\t\t}\n\t}, [isRendered, isOpen, children]);\n\n\t// Re-measure height if content changes while open\n\tuseEffect(() => {\n\t\tif (isOpen && isRendered) {\n\t\t\tmeasureHeight();\n\t\t}\n\t}, [children, isOpen, isRendered]);\n\n\tif (!isRendered) return null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"overflow-hidden transition-all duration-300 ease-in-out\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\theight: height !== undefined ? `${height}px` : \"auto\",\n\t\t\t\t...(typeof style === \"object\" ? style : {})\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div ref={containerRef}>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Expander;\n","import { useTranslations } from \"use-intl\";\nimport { cn } from \"../../../lib/utils/helpers\";\nimport GiftcardIcon from \"../../icons/giftcard\";\n\nexport type BadgeType = \"giftcard\";\n\nexport interface ProductBadgeProps {\n\ttype: BadgeType | null;\n}\n\ntype ReturnProductBadgeProps = React.HTMLAttributes<HTMLDivElement> &\n\tProductBadgeProps;\n\nconst ReturnProductBadge = ({\n\tclassName,\n\ttype,\n\t...props\n}: ReturnProductBadgeProps) => {\n\tconst t = useTranslations(\"product.badge\");\n\n\tswitch (type) {\n\t\tcase \"giftcard\":\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rf-return-product__badge rf-return-product__badge--giftcard text-base text-primary\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<GiftcardIcon className=\"inline -mt-1 w-4 h-auto\" /> {t(\"giftcard\")}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport default ReturnProductBadge;\n","import { useTranslations } from \"use-intl\";\nimport Link from \"../../ui/link\";\nimport ReturnProductBadge, { ProductBadgeProps } from \"./return-product-badge\";\n\ninterface ReturnProductActionsProps extends ProductBadgeProps {\n\tpending?: boolean;\n\tdeleted?: boolean;\n\tonDeletedClick?: () => void;\n\thref: string;\n\thandleAnchorClick: () => void;\n}\n\nconst ReturnProductActions = ({\n\tpending = false,\n\tdeleted = false,\n\thref,\n\tonDeletedClick,\n\thandleAnchorClick,\n\t...rest\n}: ReturnProductActionsProps) => {\n\tconst t = useTranslations(\"product\");\n\n\tfunction handleDeletedClick() {\n\t\tif (deleted) {\n\t\t\tonDeletedClick?.();\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className=\"rf-return-product__actions flex justify-between items-center\">\n\t\t\t<Link\n\t\t\t\tonDisabledClick={handleDeletedClick}\n\t\t\t\tdisabled={pending || deleted}\n\t\t\t\tonClick={handleAnchorClick}\n\t\t\t\tclassName=\"rf-return-product__link text-sm underline block\"\n\t\t\t\thref={href}\n\t\t\t>\n\t\t\t\t{t(\"go_to_product\")}\n\t\t\t</Link>\n\t\t\t<ReturnProductBadge {...rest} />\n\t\t</div>\n\t);\n};\n\nexport default ReturnProductActions;\n","import { useMemo, useState } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport {\n\tCalculationLineItem,\n\tOrderProduct,\n\tWidgetViewState\n} from \"../../../lib/types\";\nimport { cn, isNil } from \"../../../lib/utils/helpers\";\nimport Banner from \"../../ui/banner/banner\";\nimport Expander from \"../../ui/expander\";\nimport Image from \"../../ui/image\";\nimport Link from \"../../ui/link\";\nimport ProductAttributes from \"../product/product-attributes\";\nimport { getSafeProductUrl } from \"../product/product.utils\";\nimport ReturnProductActions from \"./return-product-actions\";\nimport { BadgeType } from \"./return-product-badge\";\n\nexport interface ExtendedCalculationLineItem extends OrderProduct {\n\tcalculation: CalculationLineItem | undefined;\n}\n\nexport interface IReturnProductAttributes {\n\thandle: string;\n\timageSource: string;\n}\n\ninterface ReturnProductProps\n\textends Omit<React.HTMLAttributes<HTMLLIElement>, \"children\" | \"title\"> {\n\tproduct: ExtendedCalculationLineItem;\n\tallProducts: ExtendedCalculationLineItem[];\n}\n\nconst ReturnProduct = ({\n\tproduct: { calculation, ...product },\n\tallProducts,\n\tclassName,\n\t...props\n}: ReturnProductProps) => {\n\tconst t = useTranslations(\"product.error\");\n\tconst [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n\tconst {\n\t\twidgetViewState,\n\t\tconfig: {\n\t\t\toptions,\n\t\t\tdata: { returnData }\n\t\t}\n\t} = useWidgetContext();\n\n\tconst href = getSafeProductUrl(options.getProductUrl, product);\n\n\tfunction handleAnchorClick() {\n\t\twidgetViewState.set(WidgetViewState.Collapsed);\n\t}\n\n\tconst qty = product?.quantity ?? 1;\n\n\tconst price = (calculation?.discountedPrice ?? calculation?.price ?? 0) * qty;\n\tconst compareAtPrice = (calculation?.originalPrice ?? 0) * qty;\n\n\tconst badgeType: BadgeType | null = useMemo(() => {\n\t\tconst allActions = allProducts\n\t\t\t.flatMap(item => {\n\t\t\t\tif (item.id !== product.id) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst returnItems = returnData?.items.filter(\n\t\t\t\t\treturnItem => returnItem.lineItemId === item.shopifyLineId\n\t\t\t\t);\n\t\t\t\tif (!returnItems || returnItems.length === 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn returnItems.map(item => item.action);\n\t\t\t})\n\t\t\t.filter(item => !isNil(item));\n\n\t\tconst multipleTypes = new Set(allActions).size > 1;\n\n\t\tconst action = calculation?.action;\n\n\t\tif (multipleTypes || !action) {\n\t\t\treturn null;\n\t\t}\n\n\t\tswitch (action) {\n\t\t\tcase \"GIFTCARD\":\n\t\t\t\treturn \"giftcard\";\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}, [calculation?.action, allProducts, product.id, returnData?.items]);\n\n\tconst isDeleted = !calculation?.variantId;\n\n\tfunction handleDeletedClick() {\n\t\tif (!isDeleted) {\n\t\t\treturn;\n\t\t}\n\t\tsetErrorMessage(t(\"product_unavailable\"));\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-return-product grid grid-cols-[max-content_1fr] gap-x-4 p-base\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Link\n\t\t\t\tdisabled={isDeleted}\n\t\t\t\tonDisabledClick={handleDeletedClick}\n\t\t\t\tclassName=\"rf-return-product__image-link\"\n\t\t\t\tonClick={handleAnchorClick}\n\t\t\t\thref={href}\n\t\t\t\tunstyled\n\t\t\t>\n\t\t\t\t<Image\n\t\t\t\t\tclassName=\"rf-return-product__image size-[70px] rounded-lg border border-neutral-1 object-cover\"\n\t\t\t\t\tsrc={product.image}\n\t\t\t\t\talt={product.title}\n\t\t\t\t/>\n\t\t\t</Link>\n\t\t\t<div className=\"rf-return-product__content flex-1 space-y-1 flex flex-col justify-between\">\n\t\t\t\t<ProductAttributes\n\t\t\t\t\tclassName=\"text-neutral-3\"\n\t\t\t\t\thref={href}\n\t\t\t\t\ttitle={product.title}\n\t\t\t\t\tvariantTitle={product.variantTitle}\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tprice={price}\n\t\t\t\t\tcompareAtPrice={compareAtPrice}\n\t\t\t\t\tquantity={product.quantity}\n\t\t\t\t/>\n\t\t\t\t<ReturnProductActions\n\t\t\t\t\tpending={!calculation}\n\t\t\t\t\tdeleted={isDeleted}\n\t\t\t\t\thref={href}\n\t\t\t\t\tonDeletedClick={handleDeletedClick}\n\t\t\t\t\thandleAnchorClick={handleAnchorClick}\n\t\t\t\t\ttype={badgeType}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Expander\n\t\t\t\tclassName=\"col-span-full\"\n\t\t\t\tisOpen={!!errorMessage}\n\t\t\t\tautoCloseAfter={5000}\n\t\t\t\tonToggle={bool => setErrorMessage(!bool ? null : errorMessage)}\n\t\t\t>\n\t\t\t\t<div className=\"pt-4\">\n\t\t\t\t\t<Banner tone=\"error\">{errorMessage}</Banner>\n\t\t\t\t</div>\n\t\t\t</Expander>\n\t\t</li>\n\t);\n};\n\nexport default ReturnProduct;\n","import { cn } from \"../../../lib/utils/helpers\";\nimport Skeleton from \"../../ui/skeleton/skeleton\";\n\nconst ReturnProductSkeleton = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLLIElement>) => {\n\treturn (\n\t\t<li\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-return-product-skeleton flex gap-4 p-base text-sm\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Skeleton className=\"size-[70px] rounded-lg\" />\n\t\t\t<div className=\"rf-return-product-skeleton__content flex-1 space-y-1 flex flex-col justify-between\">\n\t\t\t\t<div className=\"rf-return-product-skeleton__info space-y-1\">\n\t\t\t\t\t<Skeleton className=\"w-[16ch]\" />\n\t\t\t\t\t<Skeleton className=\"text-xs w-[12ch]\" />\n\t\t\t\t</div>\n\t\t\t\t<Skeleton className=\"text-xs w-[16ch]\" />\n\t\t\t</div>\n\t\t\t<Skeleton className=\"w-[8ch]\" />\n\t\t</li>\n\t);\n};\n\nexport default ReturnProductSkeleton;\n","import { useMemo } from \"preact/hooks\";\nimport { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../../lib/hooks/context/use-calculation\";\nimport useReturnContext from \"../../../lib/hooks/context/use-return-context\";\nimport useWidgetContext from \"../../../lib/hooks/context/use-widget-context\";\nimport { ReturnViewState } from \"../../../lib/types\";\nimport ArrowDownIcon from \"../../icons/arrow-down\";\nimport ChevronIcon from \"../../icons/chevron\";\nimport Icon from \"../../icons/icon\";\nimport Banner from \"../../ui/banner/banner\";\nimport Price from \"../../ui/price\";\nimport SkeletonContainer from \"../../ui/skeleton/skeleton-container\";\nimport ReturnProduct, { ExtendedCalculationLineItem } from \"./return-product\";\nimport ReturnProductSkeleton from \"./return-product-skeleton\";\n\nconst ReturnProductList = () => {\n\tconst t = useTranslations(\"return_products\");\n\tconst { returnViewState } = useWidgetContext();\n\tconst { orderState, calculationState } = useReturnContext();\n\n\tconst { orderTotal } = useCalculation();\n\n\tconst isPending = calculationState.initialFetch;\n\n\tconst lineItems = calculationState.value.data?.lineItems;\n\tconst exchangeProducts = orderState.value.data?.orderData.productsToExchange;\n\n\tconst extendedLineItems: ExtendedCalculationLineItem[] = useMemo(() => {\n\t\tif (!lineItems || !exchangeProducts) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn exchangeProducts.map(exchangeProduct => {\n\t\t\tconst lineItem = lineItems.find(\n\t\t\t\titem => item.lineItemId === exchangeProduct.shopifyLineId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\t...exchangeProduct,\n\t\t\t\tcalculation: lineItem\n\t\t\t};\n\t\t});\n\t}, [lineItems, exchangeProducts]);\n\n\tconst hasGiftcardItem = Boolean(\n\t\textendedLineItems?.some(item => item.calculation?.action === \"GIFTCARD\")\n\t);\n\n\tfunction onToggle() {\n\t\treturnViewState.set(prev =>\n\t\t\tprev === ReturnViewState.Collapsed\n\t\t\t\t? ReturnViewState.Open\n\t\t\t\t: ReturnViewState.Collapsed\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rf-return-product-list border-b border-neutral-2 relative mb-base group [&[data-state='OPEN']]:mb-[calc(var(--rf-base-spacing)*2)]\"\n\t\t\tdata-state={returnViewState.value}\n\t\t>\n\t\t\t<div className=\"rf-return-product-list__header flex justify-between items-center p-base\">\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"rf-return-product-list__toggle-button flex items-center gap-2 font-medium\"\n\t\t\t\t\tonClick={onToggle}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<span className=\"rf-return-product-list__toggle-text\">\n\t\t\t\t\t\t{t(\"action\")}\n\t\t\t\t\t</span>\n\t\t\t\t\t<ChevronIcon\n\t\t\t\t\t\tclassName={`transition-transform will-change-transform ${\n\t\t\t\t\t\t\treturnViewState.value === ReturnViewState.Open\n\t\t\t\t\t\t\t\t? \"rotate-180\"\n\t\t\t\t\t\t\t\t: \"rotate-0\"\n\t\t\t\t\t\t}`}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t\t<Price value={orderTotal} pending={isPending} />\n\t\t\t</div>\n\t\t\t{/* This is being set with CSS to later support a potential animation */}\n\t\t\t<div className=\"rf-return-product-list__content pb-base group-[&[data-state='COLLAPSED']]:hidden\">\n\t\t\t\t{hasGiftcardItem && (\n\t\t\t\t\t<div className=\"rf-return-product-list__container p-base pt-0\">\n\t\t\t\t\t\t<Banner className=\"rf-return-product-list__banner\" tone=\"giftcard\">\n\t\t\t\t\t\t\t{t(\"banner.giftcard\")}\n\t\t\t\t\t\t</Banner>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ul className=\"rf-return-product-list__items divide-y divide-neutral-2\">\n\t\t\t\t\t<SkeletonContainer\n\t\t\t\t\t\tpending={isPending}\n\t\t\t\t\t\tskeleton={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ReturnProductSkeleton />\n\t\t\t\t\t\t\t\t<ReturnProductSkeleton />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{extendedLineItems.map(lineItem => (\n\t\t\t\t\t\t\t<ReturnProduct\n\t\t\t\t\t\t\t\tclassName=\"first:pt-0\"\n\t\t\t\t\t\t\t\tkey={lineItem.id}\n\t\t\t\t\t\t\t\tproduct={lineItem}\n\t\t\t\t\t\t\t\tallProducts={extendedLineItems}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</SkeletonContainer>\n\t\t\t\t</ul>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName=\"absolute inset-x-0 mx-auto bottom-0 translate-y-1/2\"\n\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\ticon={ArrowDownIcon}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ReturnProductList;\n","import useYScrollable from \"../../lib/hooks/common/use-y-scrollable\";\nimport ArrowDownIcon from \"../icons/arrow-down\";\n\ninterface ScrollIndicatorProps {\n\tcontainerRef: React.RefObject<HTMLDivElement>;\n}\n\nconst ScrollIndicator = ({ containerRef }: ScrollIndicatorProps) => {\n\tconst { isYScrollable, isDirty } = useYScrollable(containerRef);\n\n\tconst isVisible = !isDirty && isYScrollable;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"rf-scroll-indicator w-full h-36 bg-gradient-to-t from-white to-transparent absolute bottom-full inset-x-0 flex items-end justify-center p-base transition-all pointer-events-none\"\n\t\t\tstyle={{\n\t\t\t\topacity: isVisible ? 1 : 0,\n\t\t\t\tvisibility: isVisible ? \"visible\" : \"hidden\"\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"rf-scroll-indicator__content rounded-full py-2.5 w-24 bg-neutral-1 text-center space-x-1 align-middle\">\n\t\t\t\t<span className=\"rf-scroll-indicator__text\">Scroll</span>{\" \"}\n\t\t\t\t<ArrowDownIcon className=\"inline text-neutral-3 -mt-0.5\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ScrollIndicator;\n","import type { RefObject } from \"preact\";\nimport { useEffect, useState } from \"preact/hooks\";\n\ninterface UseYScrollableReturn extends ScrollState {\n\tisYScrollable: boolean;\n}\n\ninterface ScrollState {\n\tisDirty: boolean;\n\tisScrolling: boolean;\n}\n\nconst useYScrollable = <T extends HTMLElement>(\n\tref: RefObject<T>\n): UseYScrollableReturn => {\n\tconst [isYScrollable, setIsYScrollable] = useState(false);\n\tconst [{ isScrolling, isDirty }, setScrollState] = useState<ScrollState>({\n\t\tisDirty: false,\n\t\tisScrolling: false\n\t});\n\n\tuseEffect(() => {\n\t\tconst element = ref.current;\n\t\tif (!element) return;\n\n\t\tconst checkScrollable = () => {\n\t\t\tconst scrollable = element.scrollHeight > element.clientHeight;\n\t\t\tsetIsYScrollable(scrollable);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tconst currentScrollTop = element.scrollTop;\n\t\t\tconst hasScrolled = currentScrollTop > 0;\n\t\t\tsetScrollState(prev => ({\n\t\t\t\tisDirty: hasScrolled ? true : prev.isDirty,\n\t\t\t\tisScrolling: hasScrolled\n\t\t\t}));\n\t\t};\n\n\t\t// Initial checks\n\t\tcheckScrollable();\n\t\thandleScroll();\n\n\t\t// Use ResizeObserver for element size changes\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tcheckScrollable();\n\t\t});\n\t\tresizeObserver.observe(element);\n\n\t\t// Use MutationObserver to detect content changes (like dropdown visibility)\n\t\tconst mutationObserver = new MutationObserver(() => {\n\t\t\tcheckScrollable();\n\t\t});\n\n\t\tmutationObserver.observe(element, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t\tattributes: true,\n\t\t\tattributeFilter: [\"style\", \"class\"] // Common attributes that affect visibility\n\t\t});\n\n\t\t// Listen to scroll events\n\t\telement.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t\telement.removeEventListener(\"scroll\", handleScroll);\n\t\t};\n\t}, [ref]);\n\n\treturn { isYScrollable, isScrolling, isDirty };\n};\n\nexport default useYScrollable;\n","import { useRef } from \"preact/hooks\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport ExchangeAdjustments from \"./adjustments/exchange-adjustments\";\nimport AnnoucementBar from \"./annoucement-bar\";\nimport ErrorScreen from \"./error-screen\";\nimport ExchangeConfirmation from \"./exchange-confirmation\";\nimport ExchangeHeader from \"./exchange-header\";\nimport ExchangePlaceholder from \"./exchange-placeholder\";\nimport ProductErrors from \"./product/product-errors\";\nimport ProductList from \"./product/product-list\";\nimport ReturnProductList from \"./return/return-product-list\";\nimport ScrollIndicator from \"./scroll-indicator\";\n\ninterface ExchangeDrawerProps {\n\tstate?: boolean;\n}\n\nconst ExchangeDrawer = ({ state }: ExchangeDrawerProps) => {\n\tconst { widgetViewState } = useWidgetContext();\n\tconst { cartState, hasFailed } = useReturnContext();\n\tconst scrollContainerRef = useRef<HTMLDivElement>(null);\n\n\tconst hasItems =\n\t\tcartState.value.data &&\n\t\t!cartState.value.error &&\n\t\tcartState.value.data.transformed.item_count !== 0;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\taria-hidden\n\t\t\t\tonClick={() => widgetViewState.set(WidgetViewState.Collapsed)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"max-desktop:hidden transition-[background-color,visibility] inset-0 size-full fixed z-10 duration-300 ease-in-out\",\n\t\t\t\t\tstate\n\t\t\t\t\t\t? \"bg-black/30 visible\"\n\t\t\t\t\t\t: \"bg-black/0 pointer-events-none invisible\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-drawer bg-background text-foreground transition-[transform,visibility] duration-300 ease-in-out z-20 fixed max-desktop:inset-0 desktop:right-0 desktop:inset-y-0 size-full pt-safe flex flex-col desktop:max-w-[var(--rf-desktop-widget-width)]\",\n\t\t\t\t\tstate\n\t\t\t\t\t\t? \"max-desktop:translate-y-0 desktop:translate-x-0 visible\"\n\t\t\t\t\t\t: \"max-desktop:translate-y-full desktop:translate-x-full pointer-events-none invisible\"\n\t\t\t\t)}\n\t\t\t\taria-hidden={!state}\n\t\t\t\tinert={!state}\n\t\t\t\ttabIndex={!state ? -1 : undefined}\n\t\t\t>\n\t\t\t\t<ExchangeHeader />\n\t\t\t\t<AnnoucementBar />\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rf-drawer__content flex-1 min-h-0 overflow-y-auto flex flex-col\"\n\t\t\t\t\tref={scrollContainerRef}\n\t\t\t\t>\n\t\t\t\t\t{hasFailed ? (\n\t\t\t\t\t\t<ErrorScreen />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ReturnProductList />\n\t\t\t\t\t\t\t{hasItems ? <ProductList /> : <ExchangePlaceholder />}\n\t\t\t\t\t\t\t<ProductErrors />\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t<ExchangeAdjustments className=\"rf-drawer__adjustments mt-auto\" />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rf-drawer__footer relative mt-auto\">\n\t\t\t\t\t<ScrollIndicator containerRef={scrollContainerRef} />\n\t\t\t\t\t<ExchangeConfirmation />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default ExchangeDrawer;\n","const BagIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={14}\n\t\theight={17}\n\t\tviewBox=\"0 0 14 17\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--bag ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M3.175 4.146H2.103c-.74 0-1.355.589-1.408 1.348l-.691 9.952c-.028.401.107.797.374 1.092A1.4 1.4 0 0 0 1.412 17h11.176a1.4 1.4 0 0 0 1.034-.462c.267-.295.402-.69.374-1.093l-.691-9.95c-.053-.76-.668-1.349-1.408-1.349h-1.065V3.94C10.832 1.763 9.117 0 7 0 4.96 0 3.076 1.67 3.168 3.939zm7.657 1.244V8.5a.614.614 0 0 1-.605.622.614.614 0 0 1-.605-.622V5.39H4.378V8.5a.614.614 0 0 1-.605.622.614.614 0 0 1-.605-.622s.052-1.453.035-3.11h-1.1a.204.204 0 0 0-.2.193l-.692 9.95a.2.2 0 0 0 .053.157.2.2 0 0 0 .148.066h11.176a.2.2 0 0 0 .148-.066.2.2 0 0 0 .053-.156l-.691-9.951a.204.204 0 0 0-.201-.193zm-1.21-1.244V3.94c0-1.49-1.174-2.696-2.622-2.696S4.378 2.45 4.378 3.939v.207z\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\nexport default BagIcon;\n","import { TOAST_ANIMATION_DURATION } from \"../../lib/context/toast-context\";\nimport useToast from \"../../lib/hooks/context/use-toast\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Banner, { BannerTone } from \"../ui/banner/banner\";\n\nexport interface ToastOptions {\n\tid: string;\n\tmessage: preact.ComponentChildren;\n\ttone?: BannerTone;\n\tduration?: number; // Duration in milliseconds\n\tonClose?: () => void; // Callback when the toast is closed\n}\n\nexport interface ToastQueue extends ToastOptions {\n\tisVisible: boolean; // Indicates if the toast is currently visible\n}\n\nexport interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {\n\toptions: ToastQueue;\n}\n\nconst Toast = ({\n\toptions: { id, tone = \"info\", message, isVisible },\n\tclassName,\n\tstyle,\n\t...props\n}: ToastProps) => {\n\tconst { remove } = useToast();\n\n\treturn (\n\t\t<div\n\t\t\tonClick={() => remove(id)}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-toast animate-slide-up-and-fade-in overflow-hidden shadow-sm max-w-screen-lg mx-auto\",\n\t\t\t\t`rf-toast--${tone}`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tstyle={{\n\t\t\t\tvisibility: isVisible ? \"visible\" : \"hidden\",\n\t\t\t\topacity: isVisible ? 1 : 0,\n\t\t\t\ttransform: !isVisible ? \"translateY(-20px)\" : undefined,\n\t\t\t\ttransition: `all ${TOAST_ANIMATION_DURATION}ms ease-in-out`,\n\t\t\t\t...(typeof style === \"object\" ? style : undefined) // Spread any additional styles\n\t\t\t}}\n\t\t>\n\t\t\t<Banner tone={tone} className=\"font-medium\" border=\"dashed\">\n\t\t\t\t{message}\n\t\t\t</Banner>\n\t\t</div>\n\t);\n};\n\nexport default Toast;\n","import { useContext } from \"preact/hooks\";\nimport { ToastContext } from \"../../lib/context/toast-context\";\nimport Toast from \"./toast\";\n\nconst ToastContainer = () => {\n\tconst { queue } = useContext(ToastContext);\n\n\tif (queue.length === 0) {\n\t\treturn null; // Return null if there are no toasts to display\n\t}\n\n\treturn (\n\t\t<div className=\"rf-toast__container p-base space-y-base\">\n\t\t\t{queue.map(toast => (\n\t\t\t\t<Toast key={toast.id} options={toast} />\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nexport default ToastContainer;\n","const ArrowLeftIcon = ({\n\tclassName,\n\t...props\n}: React.SVGProps<SVGSVGElement>) => (\n\t<svg\n\t\twidth={11}\n\t\theight={9}\n\t\tviewBox=\"0 0 11 9\"\n\t\tfill=\"currentColor\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tclassName={`rf-icon rf-icon--arrow-left ${className || \"\"}`}\n\t\t{...props}\n\t>\n\t\t<path d=\"m.66 5.202 3.61 3.473c.103.1.24.154.387.154a.56.56 0 0 0 .387-.154l.328-.315a.52.52 0 0 0 0-.749l-2.107-2.03H9.96c.301 0 .54-.228.54-.518v-.446c0-.29-.239-.54-.54-.54H3.242l2.131-2.042a.505.505 0 0 0 0-.739L5.045.982a.55.55 0 0 0-.387-.153.56.56 0 0 0-.387.153L.66 4.455a.513.513 0 0 0 0 .747\" />\n\t</svg>\n);\nexport default ArrowLeftIcon;\n","import { useTranslations } from \"use-intl\";\nimport useNavigation from \"../../lib/hooks/context/use-navigation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport ArrowLeftIcon from \"../icons/arrow-left\";\nimport Button from \"../ui/button\";\n\nconst BackButton = ({\n\tclassName,\n\t...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) => {\n\tconst t = useTranslations(\"summary\");\n\tconst { orderState } = useReturnContext();\n\tconst navigation = useNavigation();\n\n\tconst isPending = orderState.value.pending;\n\n\tasync function handleClick() {\n\t\tif (isPending) return;\n\n\t\tconst lastExchangeProductId =\n\t\t\torderState.value.data?.orderData.productsToExchange?.at(-1)?.id;\n\n\t\tnavigation.back(lastExchangeProductId);\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"ghost\"\n\t\t\ticon={ArrowLeftIcon}\n\t\t\ticonPosition=\"left\"\n\t\t\tonClick={handleClick}\n\t\t\tdisabled={isPending}\n\t\t\tclassName={cn(\n\t\t\t\t\"rf-back-button desktop:text-black desktop:bg-neutral-2 desktop:hover:opacity-50 desktop:font-semibold max-desktop:text-sm max-desktop:px-0 max-desktop:h-auto\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\ttype=\"button\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"rf-back-button__text\">{t(\"back\")}</span>\n\t\t</Button>\n\t);\n};\n\nexport default BackButton;\n","import Skeleton from \"../ui/skeleton/skeleton\";\n\nconst ExchangeTotalSkeleton = () => {\n\treturn (\n\t\t<div className=\"rf-exchange-total-skeleton max-desktop:max-w-48 w-full desktop:w-48 space-y-1 text-xs\">\n\t\t\t<Skeleton className=\"w-full rounded-md\" />\n\t\t\t<Skeleton className=\"w-full rounded-md\" />\n\t\t</div>\n\t);\n};\n\nexport default ExchangeTotalSkeleton;\n","import { useTranslations } from \"use-intl\";\nimport useCalculation from \"../../lib/hooks/context/use-calculation\";\nimport useReturnContext from \"../../lib/hooks/context/use-return-context\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport Price from \"../ui/price\";\nimport SkeletonContainer from \"../ui/skeleton/skeleton-container\";\nimport ExchangeTotalSkeleton from \"./exchange-total-skeleton\";\n\nconst ExchangeTotal = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => {\n\tconst t = useTranslations(\"summary\");\n\tconst { orderState, isPending } = useReturnContext();\n\n\tconst { orderTotal, cartTotal } = useCalculation();\n\n\treturn (\n\t\t<SkeletonContainer skeleton={<ExchangeTotalSkeleton />} pending={isPending}>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"rf-exchange-total font-normal text-sm max-desktop:max-w-48 w-full desktop:w-48 flex-1\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div className=\"rf-exchange-total__row flex justify-between\">\n\t\t\t\t\t<span className=\"rf-exchange-total__label text-neutral-3\">\n\t\t\t\t\t\t{t(\"order\")} {orderState.value.data?.orderData.orderName}:\n\t\t\t\t\t</span>\n\t\t\t\t\t<Price className=\"text-sm font-normal\" value={orderTotal} />\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rf-exchange-total__row flex justify-between\">\n\t\t\t\t\t<span className=\"rf-exchange-total__label text-neutral-3\">\n\t\t\t\t\t\t{t(\"cart_contents\")}:\n\t\t\t\t\t</span>\n\t\t\t\t\t<Price\n\t\t\t\t\t\tclassName=\"text-sm font-normal\"\n\t\t\t\t\t\tvalue={Math.max(0, cartTotal)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SkeletonContainer>\n\t);\n};\n\nexport default ExchangeTotal;\n","import { useTranslations } from \"use-intl\";\nimport useWidgetContext from \"../../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../../lib/types\";\nimport { cn } from \"../../lib/utils/helpers\";\nimport BagIcon from \"../icons/bag\";\nimport ReturnAvatarStack from \"../return-avatar-stack\";\nimport ToastContainer from \"../toast/toast-container\";\nimport Button from \"../ui/button\";\nimport BackButton from \"./back-button\";\nimport ExchangeTotal from \"./exchange-total\";\n\nconst ExchangeSummary = () => {\n\tconst t = useTranslations(\"summary\");\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<div className=\"rf-summary__container fixed bottom-0 inset-x-0 pb-safe animate-slide-up\">\n\t\t\t<ToastContainer />\n\t\t\t<div className=\"rf-summary h-[var(--rf-summary-height,_auto)] bg-widget-background text-widget-foreground max-desktop:rounded-t-3xl flex max-desktop:flex-col desktop:justify-between desktop:px-5\">\n\t\t\t\t<div className=\"rf-summary__header flex items-center max-desktop:px-5 max-desktop:flex-1 gap-2 desktop:gap-4 text-sm desktop:text-base\">\n\t\t\t\t\t<BackButton className=\"rf-summary__back max-desktop:mr-auto\" />\n\t\t\t\t\t{/* <ExitButton className=\"rf-summary__cancel max-desktop:hidden\" /> */}\n\t\t\t\t\t<Divider className=\"max-desktop:hidden\" />\n\t\t\t\t\t<div className=\"flex items-center gap-2 desktop:flex-row-reverse\">\n\t\t\t\t\t\t<ReturnAvatarStack />\n\t\t\t\t\t\t<span className=\"rf-summary__title font-medium\">{t(\"title\")}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<Divider className=\"desktop:hidden\" />\n\t\t\t\t<div className=\"rf-summary__actions max-desktop:px-5 max-desktop:py-3 gap-4 flex desktop:flex-row-reverse items-end desktop:items-center justify-between\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"rf-summary__button ![--icon-height:initial]\"\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\twidgetViewState.set(prev =>\n\t\t\t\t\t\t\t\tprev === WidgetViewState.Collapsed\n\t\t\t\t\t\t\t\t\t? WidgetViewState.Open\n\t\t\t\t\t\t\t\t\t: WidgetViewState.Collapsed\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon={BagIcon}\n\t\t\t\t\t>\n\t\t\t\t\t\t{t(\"view_cart\")}\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Divider className=\"max-desktop:hidden\" />\n\t\t\t\t\t<ExchangeTotal />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst Divider = ({\n\tclassName,\n\t...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n\t<div\n\t\tclassName={cn(\n\t\t\t\"rf-summary__divider max-desktop:h-px w-full desktop:w-px desktop:self-stretch bg-neutral-2 shrink-0\",\n\t\t\tclassName\n\t\t)}\n\t\t{...props}\n\t/>\n);\n\nexport default ExchangeSummary;\n","import useWidgetContext from \"../lib/hooks/context/use-widget-context\";\nimport { WidgetViewState } from \"../lib/types\";\nimport ExchangeDrawer from \"./drawer/exchange-drawer\";\nimport ExchangeSummary from \"./summary/exchange-summary\";\n\nconst Widget = () => {\n\tconst { widgetViewState } = useWidgetContext();\n\n\treturn (\n\t\t<>\n\t\t\t<ExchangeSummary />\n\t\t\t<ExchangeDrawer state={widgetViewState.value === WidgetViewState.Open} />\n\t\t</>\n\t);\n};\n\nexport default Widget;\n","import { IntlProvider } from \"use-intl\";\nimport { WidgetConfiguration } from \"../lib/utils/initialization/types\";\nimport DialogHandler from \"./handlers/dialog-handler\";\nimport InitializationHandler from \"./handlers/initialization-handler\";\nimport IsMounted from \"./is-mounted\";\nimport ErrorProvider from \"./providers/error-provider\";\nimport ReturnContextProvider from \"./providers/return-context-provider\";\nimport RootProvider from \"./providers/root-provider\";\nimport WidgetContextProvider from \"./providers/widget-context-provider\";\nimport ToastProvider from \"./toast/toast-provider\";\nimport Widget from \"./widget\";\n\n// This is the main entry point for the widget.\n// It initializes the widget with the provided options and renders it within the context providers.\nconst WidgetContainer = (config: WidgetConfiguration) => {\n\tconst { locale, messages } = config;\n\n\treturn (\n\t\t<IsMounted>\n\t\t\t<IntlProvider messages={messages} locale={locale}>\n\t\t\t\t<WidgetContextProvider {...config}>\n\t\t\t\t\t<ReturnContextProvider>\n\t\t\t\t\t\t<ErrorProvider>\n\t\t\t\t\t\t\t<RootProvider>\n\t\t\t\t\t\t\t\t<ToastProvider>\n\t\t\t\t\t\t\t\t\t<Widget />\n\t\t\t\t\t\t\t\t\t<DialogHandler />\n\t\t\t\t\t\t\t\t\t<InitializationHandler />\n\t\t\t\t\t\t\t\t</ToastProvider>\n\t\t\t\t\t\t\t</RootProvider>\n\t\t\t\t\t\t</ErrorProvider>\n\t\t\t\t\t</ReturnContextProvider>\n\t\t\t\t</WidgetContextProvider>\n\t\t\t</IntlProvider>\n\t\t</IsMounted>\n\t);\n};\n\nexport default WidgetContainer;\n"],"names":["WidgetViewState","ReturnViewState","getInternalCartProvider","_window$Returnflows$_","_window$Returnflows","window","Returnflows","_cartProvider","hasCartProvider","_window$Returnflows2","r","e","t","f","n","Array","isArray","o","length","clsx","arguments","concatArrays","array1","array2","combinedArray","i","minutesToMilliseconds","minutes","STORAGE_SESSION_KEY","key","type","expiration","hours","STORAGE_OVERLAY_DIALOG_EXPIRY_KEY","STORAGE_OVERLAY_DIALOG_EXPIRATION","STORAGE_CART_KEY","STORAGE_DEBUG_MODE_KEY","getStorageKey","concat","storage","set","_ref","value","data","Date","now","undefined","getStorage","setItem","JSON","stringify","_ref2","storageItem","getItem","parsedData","parse","removeItem","_","_ref4","sessionStorage","localStorage","Error","LOG_PREFIX","LogLevel","Logger","constructor","getInstance","instance","checkDebugMode","storedDebugModeValue","Boolean","log","level","message","this","_len","args","_key","DEBUG","console","debug","INFO","info","WARN","warn","ERROR","error","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","logger","cn","inputs","twMerge","isNil","parseToNumber","fallback","parseFloat","isNaN","toString","getResolvedSearchParams","searchString","__rf_original_search","location","search","URLSearchParams","constructShopifyUrl","endpoint","queryParams","root","url","secure","startsWith","ensureHttpUrl","host","variable","assert","searchParams","Object","entries","forEach","async","handleShopifyFetch","init","_init$method","fetchUrl","rf","response","fetch","_objectSpread","method","body","cache","headers","ok","errorResponse","json","clearSession","stripShopifyId","id","segment","split","pop","toMerchandiseGid","variantId","getRuleProductIds","rules","filter","rule","flatMap","products","map","product","Number","shopifyProductId","normalizeCart","cart","noExchangeTo","excludedItems","bundleItems","items","itemCount","reduce","acc","item","includes","product_id","push","has_components","existingItem","find","variant_id","quantity","item_count","compareCarts","cart1","cart2","normalizedCart1","normalizedCart2","items1","items2","quantityMap1","Map","get","getCart","usedStore","usedProvider","storedCart","provider","updateCartStorage","source","clearCart","updateCartItemQuantity","isRetry","updateCartItemQuantityViaShopify","lineId","line_id","merchandiseId","merchandise_id","removeItems","updateItems","updateItem","err","status","_existingItems$existi","String","existingItems","totalQuantity","existingItemIndex","findIndex","increment","calculatedQuantity","cartChange","line","resolveConnection","connections","edges","edge","node","toCents","amount","parsed","Math","round","resolveLineImage","_line$merchandise$ima","_line$merchandise$pro","_line$merchandise$pro2","merchandise","image","featuredImage","productImages","images","normalizeStorefrontLine","_line$cost","productId","unitPrice","lineTotal","cost","amountPerQuantity","totalAmount","price","variantTitle","title","productTitle","isDefaultVariant","product_title","handle","grams","line_price","final_price","final_line_price","variant_title","sku","vendor","product_type","productType","requires_shipping","requiresShipping","normalizeCartInput","lines","isStorefrontCart","_cart$totalQuantity","_cart$note","sum","token","note","normalizeStorefrontCart","normalizeAndStore","normalized","bridge","widgetViewState","config","returnContext","toastContext","cartProvider","isInitialized","eventListeners","unregisterBridge","clear","setCartProvider","wrapped","addItems","ids","wrapCartProvider","setDrawerState","state","setCart","_bridge$returnContext7","_bridge$returnContext8","_bridge$returnContext9","_bridge$config","_cartState$value$data","cartState","orderState","calculationState","returnState","returnData","calculation","hasChanged","order","normalizedInput","productRules","orderData","currentCart","original","_calculationState$val","transformedCart","transformed","pending","emitEvent","calculationResponse","query","orderId","lineItems","removeEventListener","event","callback","_bridge$eventListener","delete","listeners","defineProperty","open","_ensureInitialized","Open","close","Collapsed","toggle","_bridge$widgetViewSta","_bridge$widgetViewSta2","isOpen","_bridge$widgetViewSta3","_bridge$returnContext","getCalculation","_bridge$returnContext2","_bridge$returnContext3","getOrder","_bridge$returnContext4","orderName","instantExchange","freeExchangeLabel","productsToExchange","totalPrice","isLoading","_bridge$returnContext5","_bridge$returnContext6","isPending","refetch","_bridge$returnContext0","_bridge$returnContext1","_bridge$cartProvider","document","dispatchEvent","CustomEvent","show","options","add","tone","duration","onClose","dismiss","remove","_initPromise","Promise","resolve","reject","_config$onReady2","onReady","onError","rest","_objectWithoutProperties","_excluded","default","initialize","then","index","WidgetContainer","widgetContainer","h","preact_module","result","widgetConfig","networkInterceptionMethod","success","_config$onReady","reason","_waitForBridge","call","_config$onError","destroy","container","getElementById","on","has","Set","off","timeout","start","setTimeout","p","v","y","resolveEnvVar","varKey","_process$env","process","env","_import$meta$env","API_URL","PLATFORM_URL","WIDGET_BASE_URL","SEARCH_PARAM_ID_NAME","LEGACY_PARAMS","ROOT_ELEMENT_ID","CONTAINER_ELEMENT_ID","InternalCustomEvent","ExternalCustomEvent","customEvents","subscribe","eventName","handler","addEventListener","publish","detail","unsubscribe","DEFAULT_LOCALE","apiQuery","path","clientStorage","storageOptions","isStorageEnabled","shouldUseCachedResult","logging","cachedData","URL","params","parseJsonRes","storeResult","responseObject","processOrderInitialization","_cache$returnData$ite","_cache$returnData","isFirstLoad","clearCartOnStart","internalId","updatedCart","_cache$returnItems","cachedReturnItems","returnItems","mappedItems","clearedCart","cartItems","setCartItems","dialogExpiration","getTime","href","param","history","replaceState","lineIds","join","internalReturnId","cacheKey","orderLines","getShopOverlayData","parseScriptDataset","dataset","datasetRecord","resolvedValue","isFinite","isNumber","_unused","prepareInitializationOptions","_settings$translation","_settings$theme","DOMStringMap","prototype","settings","scriptElement","innerHTML","getSettingsFromScript","searchParamsId","getSessionCache","resolvedCurrency","currency","defaultCurrency","isDevEnvironment","hasDebugParameter","isDebugModeEnabled","localesList","locale","defaultLocale","val","resolvedLocale","messages","locales","loadMessages","customMessages","translations","obj","keys","lastKey","current","next","setNestedValue","debugMode","theme","createSafeLinkElement","attributes","selector","existing","querySelector","link","createElement","assign","head","appendChild","injectCustomCSS","css","match","some","pattern","test","validateCSS","styleElement","setAttribute","textContent","renderNode","containerResult","style","display","shadow","attachShadow","mode","shadowRoot","className","createShadowRoot","customCssOverlay","customCssPage","rel","fileName","onload","injectStyle","onerror","injectPublicVariables","preconnect","preconnect2","crossOrigin","fontLink","render","injectWidget","WidgetInitialization","memoize","fn","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","monadic","arg","computedValue","variadic","slice","apply","assemble","context","serialize","bind","create","ObjectWithoutPrototypeCache","_defineProperty","strategies","a","super","code","originalMessage","MISSING_MESSAGE","MISSING_FORMAT","ENVIRONMENT_FALLBACK","INSUFFICIENT_PATH","INVALID_MESSAGE","INVALID_KEY","FORMATTING_ERROR","s","dateTime","number","relativeTime","pluralRules","list","displayNames","I","l","getDateTimeFormat","Intl","DateTimeFormat","getNumberFormat","NumberFormat","getPluralRules","PluralRules","getRelativeTimeFormat","RelativeTimeFormat","getListFormat","ListFormat","getDisplayNames","DisplayNames","u","c","__b","__r","diffed","__c","m","unmount","__","__h","__H","d","D","__N","setState","__f","every","props","shouldComponentUpdate","componentWillUpdate","__e","__s","C","A","T","q","x","sub","j","shift","__P","z","B","__v","__k","__m","requestAnimationFrame","w","k","clearTimeout","cancelAnimationFrame","E","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","replace","len","era","year","RangeError","month","day","weekday","hour12","hourCycle","hour","minute","second","timeZoneName","WHITE_SPACE_REGEX","icuUnitToEcma","unit","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","str","roundingPriority","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","stem","notation","minimumIntegerDigits","parseNotationOptions","opt","signOpts","parseNumberSkeleton","tokens","scale","useGrouping","maximumFractionDigits","compactDisplay","all","currencyDisplay","unitDisplay","roundingMode","g3","g4","g5","minimumFractionDigits","trailingZeroDisplay","conciseScientificAndEngineeringOpts","TYPE","SKELETON_TYPE","isLiteralElement","el","literal","isArgumentElement","argument","isNumberElement","isDateElement","date","isTimeElement","time","isSelectElement","select","isPluralElement","plural","isPoundElement","pound","isTagElement","tag","isNumberSkeleton","isDateTimeSkeleton","ErrorKind","SPACE_SEPARATOR_REGEX","timeData","AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CP","CR","CU","CV","CW","CX","CY","CZ","DE","DG","DJ","DK","DM","DO","DZ","EA","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HN","HR","HU","IC","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TF","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW","getDefaultHourSymbolFromLocale","hourCycles","languageTag","language","regionTag","maximize","region","SPACE_SEPARATOR_START_REGEX","RegExp","SPACE_SEPARATOR_END_REGEX","createLocation","end","hasNativeFromEntries","fromEntries","hasTrimStart","trimStart","hasTrimEnd","trimEnd","IDENTIFIER_PREFIX_RE","Parser","position","offset","column","ignoreTag","requiresOtherClause","shouldParseSkeletons","parseMessage","nestingLevel","parentArgType","expectingCloseTag","elements","isEOF","char","parseArgument","peek","UNMATCHED_CLOSING_TAG","clonePosition","_isAlpha","parseTag","parseLiteral","bump","startPosition","tagName","parseTagName","bumpSpace","bumpIf","childrenResult","children","endTagStartPosition","INVALID_TAG","closingTagNameStartPosition","UNCLOSED_TAG","startOffset","_isPotentialElementNameChar","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","codepoint","codePoints","ch","fromCodePoint","openingBracePosition","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","parseIdentifierIfPossible","MALFORMED_ARGUMENT","parseArgumentOptions","startingPosition","_match$","lastIndex","exec","matchIdentifierAtIndex","endOffset","bumpTo","typeStartPosition","argType","typeEndPosition","EXPECT_ARGUMENT_TYPE","_styleAndLocation$sty","_styleAndLocation","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","EXPECT_ARGUMENT_STYLE","styleLocation","argCloseResult","tryParseArgumentClose","parseNumberSkeletonFromString","EXPECT_DATE_TIME_SKELETON","dateTimePattern","skeletonCopy","patternPos","patternChar","charAt","extraLength","hourLen","dayPeriodLen","dayPeriodChar","hourChar","getBestPattern","parsedOptions","EXPECT_SELECT_ARGUMENT_OPTIONS","identifierAndLocation","pluralOffset","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","tryParseDecimalInteger","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","optionsResult","tryParsePluralOrSelectOptions","pluralType","INVALID_ARGUMENT_TYPE","nestedBraces","apostrophePosition","bumpUntil","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","stringTokens","stringToken","stemAndOptions","option","INVALID_NUMBER_SKELETON","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","EXPECT_PLURAL_ARGUMENT_SELECTOR","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","fragmentResult","EXPECT_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","expectNumberError","invalidNumberError","sign","hasDigits","decimal","isSafeInteger","codePointAt","kind","prefix","currentOffset","indexOf","targetOffset","min","_isWhiteSpace","nextCode","charCodeAt","pruneLocation","els","ErrorCode","FormatError","msg","InvalidValueError","variableId","INVALID_VALUE","InvalidValueTypeError","MissingValueError","MISSING_VALUE","PART_TYPE","isFormatXMLElementFn","formatToParts","formatters","formats","values","currentPluralValue","format","varName","object","medium","isInteger","TypeError","BigInt","formatFn","chunks","hasOwnProperty","other","exactKey","MISSING_INTL_API","numericValue","parts","part","lastPart","mergeConfigs","defaultConfig","configs","c1","c2","createFastMemoizeCache","store","IntlMessageFormat","overrideFormats","opts","ast","_this$resolvedLocale","supportedLocalesOf","resolveLocale","__parse","parseOpts","_extends","_objectDestructuringEmpty","createDefaultFormatters","formatterCache","memoizedDefaultLocale","resolvedOptions","g","globalFormats","timeZone","getMessageFormat","_e$timeZone","Locale","supportedLocales","_opts","SyntaxError","captureLocation","integer","percent","short","long","full","raw","namespace","getMessageFallback","messagesOrError","S","M","R","rich","markup","seconds","days","week","weeks","months","quarter","quarters","years","Provider","_cache","_formatters","_e","_unused2","numberingSystem","abs","numeric","size","dateTimeRange","formatRange","useValueState","initialState","stateUpdateCallback","useState","action","prev","currentState","resolveSetStateAction","useOnce","deps","effectRef","useRef","useEffect","WidgetContext","createContext","useWidgetContext","useContext","navigation","back","slug","fallbackProductId","_searchParams$get","constructedPlatformUrl","pathname","lastExchangeProductId","strippedProductId","at","append","continue","confirmationUrl","encodedSlug","encodeURIComponent","exit","reload","ReturnContext","useReturnContext","Image","src","_jsx","SkeletonContainer","falsyToString","cx","cva","base","_config_compoundVariants","variants","class","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","getCompoundVariantClassNames","compoundVariants","cvClass","cvClassName","compoundVariantOptions","avatarVariants","light","dark","Avatar$1","memo","Skeleton","role","AvatarStackSkeleton","_jsxs","AvatarStack","maxVisibleAvatars","sliceIndex","alt","Avatar","zIndex","ReturnAvatarStack","_orderState$value$dat3","formattedImages","useMemo","_orderState$value$dat","_orderState$value$dat2","DialogContext","useIsMounted","mounted","setMounted","RootContext","DialogBackdrop","onClick","isVisible","elementRef","target","ref","ArrowRightIcon","width","height","viewBox","fill","xmlns","XIcon","Spinner","opacity","attributeName","calcMode","dur","repeatCount","buttonVariants","primary","outline","ghost","Button$1","icon","Icon","disabled","iconPosition","visibility","DialogButton","Accept","Button","Reject","_excluded2","Dialog","Modal","fadeIn","showBackdrop","dismissOnBackdropClick","dismissOnEscape","getRoot","useRoot","isMounted","handleEscape","preventDefault","contextValue","createPortal","Title","Subtitle","ReturnDecisionDialog","decisionState","setDecisionState","isOnCartPage","DecisionDialog","useTranslations","modal","register","useDialog","dialog","DialogHandler","_Fragment","DEFAULT_TOAST_DURATION","ToastContext","useToast","useApiBridge","registerBridge","_returnContext$cartSt","ProductErrorState","PRODUCT_ERROR_CODE_TO_STATE","ProductLimit","getErrorStateFromCode","Unknown","createFetchInterceptor","_window$__rf_original","originalFetch","__rf_original_fetch","rf_interception","proxy","Proxy","argumentsList","requestUrl","Reflect","clonedResponse","clone","interval","clearInterval","createXHRInterceptor","originalXHR","XMLHttpRequest","__rf_original_xhr","XHRProxy","construct","xhr","originalOpen","originalSend","send","user","password","originalOnReadyStateChange","onreadystatechange","readyState","DONE","resolveXHRPayload","originalOnLoad","_xhr$getResponseHeade","isTextResponse","responseType","isJsonResponse","getResponseHeader","ADD_ENDPOINTS","UPDATE_ENDPOINTS","CHANGE_ENDPOINTS","ENDPOINTS","update","change","ENDPOINTS_TO_INTERCEPT","ErrorContext","useErrors","useCartActions","addToast","errors","_returnData$items","isNewItem","useCallback","originalCart","notifyExclusions","newExcludedItems","newBundleItems","product_name","b","fetchAndUpdateCart","_cartState$value$data2","freshCart","processCartUpdate","_cartState$value$data3","_cartState$value$data4","handleResponseErrors","responseBody","Response","catch","parseInterceptionResponse","errState","triggerCalculation","useFetchInterceptor","returnViewState","autoOpen","autoOpenTriggerEndpoint","triggerEndpoint","autoOpenTriggerMethod","triggerMethod","monitorNetworkOverwrites","initialized","setInitialized","resetInterceptor","monitor","cleanupFetchHandler","cleanupXHRHandler","resolvedMethod","setInterval","_cleanupFetchHandler","_cleanupXHRHandler","initializeNetworkInterceptors","payload","FetchInterception","_resetInterceptor","handleInterceptionEvent","stringifiedUrl","urlValidation","triggerEndpointPaths","isValid","isForbidden","isTriggerEndpoint","matchesInterceptedEndpoint","validateInterceptionRequestUrl","useOverrideScrollBlocking","overrideScrollBlocking","originalPreventDefault","Event","useCartActivator","cartActivatorSelector","controller","AbortController","processedElements","WeakSet","onActivatorClick","stopPropagation","initializeActivators","querySelectorAll","element","parent","parentNode","newElement","cloneNode","replaceChild","cloneAndReplaceElement","removeAttribute","signal","attachListenersToElements","observer","MutationObserver","mutations","shouldReinitialize","mutation","addedNodes","nodeType","Node","ELEMENT_NODE","_element$matches","_element$querySelecto","matches","removedNodes","_element$matches2","_element$querySelecto2","observe","childList","subtree","characterData","abort","disconnect","InitializationHandler","useExternalEvents","handleOpenDrawer","handleCloseDrawer","handleToggleDrawer","targetState","handleRefetchCalculation","handleRefetchCart","handleRefetchCartAndCalculation","handleOpenDrawerAndRefetch","unsubscribeOpenDrawer","DrawerOpen","unsubscribeCloseDrawer","DrawerClose","unsubscribeToggleDrawer","DrawerToggle","unsubscribeRefetchCalculation","CalculationRefetch","unsubscribeRefetchCart","CartRefetch","unsubscribeRefetchCartAndCalculation","CartAndCalculationRefetch","unsubscribeOpenDrawerAndRefetchCartAndCalculation","DrawerOpenAndRefetch","IsMounted","ErrorProvider","_useArray","initialArray","array","setArray","newArray","filtered","useArray","methods","calcItems","cartItemCount","resolvedErrors","trackedErrors","_orderData$returnWind","refundReturnWindow","returnWindows","errorId","blocking","noRefundItemIds","noRefundItems","strippedId","joinedProductNames","splitChunks","chunk","dividerString","Fragment","useAsyncState","initialValue","queryFn","queryOnInit","startCount","initialRender","countState","setCountState","countRef","requestCount","consoleMessage","run","initialParams","initialFetch","count","ReturnContextProvider","_config$data$returnDa5","queryCount","orderResult","isCartPage","isFirstQuery","shouldFetchFreshCart","normalizedCart","_params$cart","_config$data$returnDa","_config$data$returnDa2","origin","updateSessionCache","lastPath","_item$variant_title","_ref3","labelCount","formattedLineItems","_item$action$toUpperC","_item$action","toUpperCase","returnOrderLineId","lineItemId","formattedExchangeTo","exchangeTo","numOfLabels","_config$data$returnDa3","_config$data$returnDa4","contextError","hasFailed","useTheme","themeVariables","color","convertedColor","hex","parseInt","substring","max","diff","hDeg","sPercent","lPercent","hexToHsl","cssVariables","RootProvider","rootRef","onTouchStart","WidgetContextProvider","DrawerStateChange","ToastProvider","queue","setQueue","toast","_toast$onClose","random","substr","_toast$onClose2","ActionIcon","rx","fillRule","clipRule","InfoIcon","GiftcardIcon","WarningIcon","BannerSkeleton","tip","giftcard","border","dashed","COMMON_ICON_PROPS","renderIcon","Banner$1","ExchangeBanner","_calculationState$val2","hasInstantExchange","returnLabelPrice","Banner","useCurrency","hookOptions","cartCurrency","calcCurrency","localCurrency","resolvedCurrencyCode","formatter","useFormatter","applyExchangeRate","currencyObject","exchangeRate","_hookOptions$options","fractionDigits","mergedOptions","_currency$minimumFrac","formatOptions","useCalculation","_discountSummary$appl","orderTotal","cartTotal","returnTotal","giftcardValue","totalPriceDiscount","giftCardBonusAmount","isRefunding","orderSubtotal","returnSubtotal","total","refundMethods","discountSummary","appliedToReturnSubtotal","StarIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Price$1","compareAtValue","formatToCurrency","AdjustmentsTableSkeleton","AdjustmentsTable","showDiscountRow","showGiftcardRow","showLabelPriceRow","Row","scope","Price","ExchangeAdjustments","AnnoucementBar","stepSnippet","ErrorScreen","errorMessage","instructionMessage","useNavigation","ExchangeConfirmation","globalPendingState","blockingErrors","canContinue","iconVariants","solid","sm","md","IconComponent","ExchangeHeader","CartIcon","ExchangePlaceholder","ProductErrors","DEFAULT_CONSTRAINTS","limit","getSafeProductUrl","getProductUrl","QuantityPicker","onIncrement","onDecrement","constraints","isDisabled","isAtMin","isAtMax","incrementDisabled","decrementDisabled","handleIncrement","handleDecrement","clampedQuantity","clampQuantity","ProductActions$1","quantityRule","setIsPending","anyStatePending","handleQuantityChange","newQuantity","errorCode","_quantityRule$min","_quantityRule$max","_quantityRule$increme","minQuantity","maxQuantity","getNormalizedQuantityRule","isAtBound","Link","unstyled","onDisabledClick","ProductAttributes$1","compareAtPrice","showQuantity","quantityIsVisible","resolvedCompareAt","resolvedPrice","ProductImage$1","imageSource","handleAnchorClick","Product","ProductImage","ProductAttributes","ProductActions","quantity_rule","ProductList","useCartItems","exchangeDetails","exchange","exchangeDetailItems","exchangeItem","_coverage$originalUni","_coverage$exchangeUni","coverage","curr","resolvedCurrPrice","originalUnitPrice","exchangeUnitPrice","ArrowDownIcon","ChevronIcon","Expander","collapseDelay","autoCloseAfter","onToggle","isRendered","setIsRendered","setHeight","containerRef","collapseTimeoutRef","autoCloseTimeoutRef","measureHeight","scrollHeight","frame","ReturnProductBadge","ReturnProductActions","deleted","onDeletedClick","ReturnProduct","_product$quantity","_calculation$discount","_calculation$original","allProducts","setErrorMessage","qty","discountedPrice","originalPrice","badgeType","allActions","returnItem","shopifyLineId","multipleTypes","isDeleted","handleDeletedClick","bool","ReturnProductSkeleton","ReturnProductList","exchangeProducts","extendedLineItems","exchangeProduct","lineItem","hasGiftcardItem","_item$calculation","ScrollIndicator","isYScrollable","isDirty","setIsYScrollable","isScrolling","setScrollState","checkScrollable","scrollable","clientHeight","handleScroll","hasScrolled","scrollTop","resizeObserver","ResizeObserver","mutationObserver","attributeFilter","passive","useYScrollable","ExchangeDrawer","scrollContainerRef","hasItems","inert","tabIndex","BagIcon","Toast","transform","transition","ToastContainer","ArrowLeftIcon","BackButton","ExchangeTotalSkeleton","ExchangeTotal","ExchangeSummary","Divider","Widget","IntlProvider"],"mappings":"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CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KACPC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KAAM,KACbC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KACPC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,KAAM,KACbC,GAAM,CAAC,KACPC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,KACA,IACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,KACPC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CAAC,KACPC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,KACPC,GAAM,CAAC,KACPC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,KACA,KACA,IACA,KAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CAAC,IAAK,MACZC,GAAM,CAAC,IAAK,KACZC,GAAM,CACL,IACA,KACA,KAEDC,GAAM,CACL,IACA,KACA,KACA,KAEDC,GAAM,CAAC,IAAK,MACZC,GAAM,CACL,IACA,IACA,KACA,MAEDC,GAAM,CACL,IACA,KACA,IACA,MAEDC,GAAM,CAAC,IAAK,KACZ,QAAS,CACR,IACA,IACA,KACA,MAED,SAAU,CACT,IACA,KACA,KACA,KAED,QAAS,CACR,IACA,IACA,MAED,SAAU,CACT,IACA,KACA,IACA,MAED,QAAS,CACR,IACA,KACA,IACA,MAED,QAAS,CACR,IACA,IACA,KACA,MAED,QAAS,CACR,IACA,KACA,IACA,MAED,QAAS,CACR,IACA,IACA,KACA,MAED,QAAS,CACR,IACA,IACA,KACA,MAED,QAAS,CACR,IACA,IACA,KACA,MAED,QAAS,CACR,IACA,IACA,MAED,QAAS,CACR,IACA,IACA,MAED,QAAS,CACR,KACA,KACA,IACA,KAED,QAAS,CACR,KACA,IACA,KAED,QAAS,CACR,IACA,IACA,MAED,QAAS,CACR,IACA,IACA,MAED,QAAS,CACR,KACA,IACA,KAED,QAAS,CAAC,IAAK,MACf,QAAS,CACR,KACA,IACA,KAED,QAAS,CACR,KACA,KACA,IACA,KAED,QAAS,CACR,KACA,KACA,IACA,KAED,QAAS,CACR,KACA,IACA,KACA,KAED,QAAS,CACR,KACA,IACA,KAED,QAAS,CACR,IACA,KACA,KACA,MC9lCF,SAASC,GAA+B1e,GACvC,IAAI0K,EAAY1K,EAAO0K,UAKvB,QAJkB3mB,IAAd2mB,GAA2B1K,EAAO2e,YAAc3e,EAAO2e,WAAWx8B,SAErEuoB,EAAY1K,EAAO2e,WAAW,IAE3BjU,EACH,OAAQA,GACP,IAAK,MAAO,MAAO,IACnB,IAAK,MAAO,MAAO,IACnB,IAAK,MAAO,M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","x_google_ignoreList":[2,3,12,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,51]}