@dropins/storefront-checkout 3.3.0-beta.0 → 3.3.0-beta.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.
- package/CHANGELOG.md +18 -0
- package/api.js +266 -0
- package/api.js.map +1 -0
- package/chunks/PaymentOnAccount.js +1 -1
- package/chunks/PaymentOnAccount.js.map +1 -1
- package/chunks/PurchaseOrder.js +1 -1
- package/chunks/PurchaseOrder.js.map +1 -1
- package/chunks/components.js +2 -2
- package/chunks/components.js.map +1 -1
- package/chunks/events.js +4 -0
- package/chunks/events.js.map +1 -0
- package/chunks/render.js +1 -1
- package/chunks/render.js.map +1 -1
- package/chunks/ui.js +4 -0
- package/chunks/ui.js.map +1 -0
- package/containers/AddressValidation.js +1 -1
- package/containers/AddressValidation.js.map +1 -1
- package/containers/BillToShippingAddress.js +1 -1
- package/containers/BillToShippingAddress.js.map +1 -1
- package/containers/EstimateShipping.js +1 -1
- package/containers/EstimateShipping.js.map +1 -1
- package/containers/LoginForm.js +1 -1
- package/containers/LoginForm.js.map +1 -1
- package/containers/MergedCartBanner.js +1 -1
- package/containers/MergedCartBanner.js.map +1 -1
- package/containers/OutOfStock.js +1 -1
- package/containers/OutOfStock.js.map +1 -1
- package/containers/PaymentMethods.js +1 -1
- package/containers/PaymentMethods.js.map +1 -1
- package/containers/PaymentOnAccount.js +1 -1
- package/containers/PlaceOrder.js +1 -1
- package/containers/PlaceOrder.js.map +1 -1
- package/containers/PurchaseOrder.js +1 -1
- package/containers/ServerError.js +1 -1
- package/containers/ServerError.js.map +1 -1
- package/containers/ShippingMethods.js +1 -1
- package/containers/ShippingMethods.js.map +1 -1
- package/containers/TermsAndConditions.js +1 -1
- package/containers/TermsAndConditions.js.map +1 -1
- package/fragments.js +275 -1
- package/fragments.js.map +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils.js +1 -537
- package/lib/utils.js.map +1 -1
- package/package.json +1 -1
- package/render.js +1 -1
package/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sources":["/@dropins/storefront-checkout/src/lib/state.ts","/@dropins/storefront-checkout/src/api/authenticateCustomer/authenticateCustomer.ts","/@dropins/storefront-checkout/src/api/estimateShippingMethods/graphql/estimateShippingMethods.graphql.ts","/@dropins/storefront-checkout/src/data/transforms/transform-api.ts","/@dropins/storefront-checkout/src/data/transforms/transform-custom-attributes.ts","/@dropins/storefront-checkout/src/data/transforms/transform-payment-methods.ts","/@dropins/storefront-checkout/src/data/transforms/transform-cart-address.ts","/@dropins/storefront-checkout/src/data/transforms/transform-cart.ts","/@dropins/storefront-checkout/src/data/transforms/transform-company-credit.ts","/@dropins/storefront-checkout/src/data/transforms/transform-quote-address.ts","/@dropins/storefront-checkout/src/data/models/checkout.ts","/@dropins/storefront-checkout/src/data/models/store-config.ts","/@dropins/storefront-checkout/src/data/transforms/transform-checkout-agreements.ts","/@dropins/storefront-checkout/src/data/transforms/transform-country.ts","/@dropins/storefront-checkout/src/data/transforms/transform-customer.ts","/@dropins/storefront-checkout/src/data/transforms/transform-email-availability.ts","/@dropins/storefront-checkout/src/data/transforms/transform-negotiable-quote.ts","/@dropins/storefront-checkout/src/data/transforms/transform-region.ts","../node_modules/deepmerge/dist/cjs.js","../node_modules/@adobe-commerce/elsie/src/lib/deepmerge.ts","/@dropins/storefront-checkout/src/data/transforms/transform-shipping-estimate.ts","/@dropins/storefront-checkout/src/data/transforms/transform-shipping-methods.ts","/@dropins/storefront-checkout/src/lib/enqueueRequest.ts","/@dropins/storefront-checkout/src/lib/filterControlledErrors.ts","/@dropins/storefront-checkout/src/lib/errors/customErrors.ts","/@dropins/storefront-checkout/src/lib/errors/classifiers.ts","/@dropins/storefront-checkout/src/lib/errors/mapErrorToCode.ts","/@dropins/storefront-checkout/src/lib/dispatchApiCall.ts","/@dropins/storefront-checkout/src/lib/events.ts","/@dropins/storefront-checkout/src/lib/validation.ts","/@dropins/storefront-checkout/src/lib/values.ts","/@dropins/storefront-checkout/src/api/getStoreConfig/graphql/getStoreConfig.graphql.ts","/@dropins/storefront-checkout/src/api/getStoreConfig/getStoreConfig.ts","/@dropins/storefront-checkout/src/data/transforms/transform-store-config.ts","/@dropins/storefront-checkout/src/api/estimateShippingMethods/estimateShippingMethods.ts","/@dropins/storefront-checkout/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-checkout/src/api/getCart/graphql/getCart.graphql.ts","/@dropins/storefront-checkout/src/api/getCart/getCart.ts","/@dropins/storefront-checkout/src/api/getCheckoutAgreements/graphql/getCheckoutAgreements.graphql.ts","/@dropins/storefront-checkout/src/api/getCheckoutAgreements/getCheckoutAgreements.ts","/@dropins/storefront-checkout/src/api/getCompanyCredit/graphql/getCompanyCredit.graphql.ts","/@dropins/storefront-checkout/src/api/getCompanyCredit/getCompanyCredit.ts","/@dropins/storefront-checkout/src/api/getCustomer/graphql/getCustomer.graphql.ts","/@dropins/storefront-checkout/src/api/getCustomer/getCustomer.ts","/@dropins/storefront-checkout/src/api/getNegotiableQuote/graphql/getNegotiableQuote.graphql.ts","/@dropins/storefront-checkout/src/api/getNegotiableQuote/getNegotiableQuote.ts","/@dropins/storefront-checkout/src/api/initialize/listeners.ts","/@dropins/storefront-checkout/src/api/initialize/initialize.ts","/@dropins/storefront-checkout/src/types/guards.ts","/@dropins/storefront-checkout/src/api/initializeCheckout/initializeCheckout.ts","/@dropins/storefront-checkout/src/api/isEmailAvailable/graphql/isEmailAvailable.graphql.ts","/@dropins/storefront-checkout/src/api/isEmailAvailable/isEmailAvailable.ts","/@dropins/storefront-checkout/src/api/resetCheckout/resetCheckout.ts","/@dropins/storefront-checkout/src/api/setBillingAddress/graphql/setBillingAddressOnCartMutation.graphql.ts","/@dropins/storefront-checkout/src/api/setBillingAddress/graphql/setBillingAddressOnQuoteMutation.graphql.ts","/@dropins/storefront-checkout/src/lib/guards.ts","/@dropins/storefront-checkout/src/api/setBillingAddress/setBillingAddress.ts","/@dropins/storefront-checkout/src/api/setGuestEmailOnCart/graphql/setGuestEmailOnCart.graphql.ts","/@dropins/storefront-checkout/src/api/setGuestEmailOnCart/setGuestEmailOnCart.ts","/@dropins/storefront-checkout/src/api/setPaymentMethod/graphql/setPaymentMethodOnCart.graphql.ts","/@dropins/storefront-checkout/src/api/setPaymentMethod/graphql/setPaymentMethodOnQuote.graphql.ts","/@dropins/storefront-checkout/src/api/setPaymentMethod/setPaymentMethod.ts","/@dropins/storefront-checkout/src/api/setShippingAddress/graphql/setShippingAddressOnCartAndUseAsBillingMutation.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingAddress/graphql/setShippingAddressOnCartMutation.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingAddress/graphql/setShippingAddressOnQuote.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingAddress/graphql/setShippingAddressOnQuoteAndUseAsBillingMutation.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingAddress/setShippingAddress.ts","/@dropins/storefront-checkout/src/api/setShippingMethods/graphql/setShippingMethodsOnCart.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingMethods/graphql/setShippingMethodsOnQuote.graphql.ts","/@dropins/storefront-checkout/src/api/setShippingMethods/setShippingMethods.ts","/@dropins/storefront-checkout/src/api/synchronizeCheckout/synchronizeCheckout.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { StoreConfig } from '@/checkout/data/models';\n\ntype State = {\n authenticated: boolean;\n cartId?: string | null;\n config: StoreConfig | null;\n initialized: boolean;\n quoteId?: string | null;\n};\n\nconst _state: State = (() => ({\n authenticated: false,\n cartId: null,\n config: null,\n initialized: false,\n quoteId: null,\n}))();\n\n// Proxy state to allow reactivity\nexport const state = new Proxy(_state, {\n set(target, key, value) {\n // @ts-ignore\n target[key] = value;\n return true;\n },\n get(target, key) {\n return target[key as keyof State];\n },\n});\n\nexport function isQuoteCheckout(): boolean {\n return state.quoteId !== null;\n}\n\nexport function isCartCheckout(): boolean {\n return state.cartId !== null;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/checkout/lib/state';\n\nexport const authenticateCustomer = async (authenticated = false) => {\n state.authenticated = authenticated;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { ESTIMATE_SHIPPING_METHOD_FRAGMENT } from '@/checkout/api/graphql/ShippingMethodFragment.graphql';\n\nexport const estimateShippingMethodsMutation = /* GraphQL */ `\n mutation estimateShippingMethods(\n $cartId: String!\n $address: EstimateAddressInput!\n ) {\n estimateShippingMethods(input: { cart_id: $cartId, address: $address }) {\n ...ESTIMATE_SHIPPING_METHOD_FRAGMENT\n }\n }\n\n ${ESTIMATE_SHIPPING_METHOD_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n AddressInput as AddressInputModel,\n BillingAddressInput as BillingAddressInputModel,\n PaymentMethodInput as PaymentMethodInputModel,\n ShippingAddressInput as ShippingAddressInputModel,\n ShippingMethodInput as ShippingMethodInputModel,\n} from '@/checkout/data/models/api';\n\nimport {\n BillingAddressInput,\n NegotiableQuoteBillingAddressInput,\n NegotiableQuotePaymentMethodInput,\n NegotiableQuoteShippingAddressInput,\n PaymentMethodInput,\n ShippingAddressInput,\n ShippingMethodInput,\n} from '@/checkout/__generated__/types';\n\nexport function transformPaymentMethodInputModelToCartInput({\n code,\n ...additionalData\n}: PaymentMethodInputModel): PaymentMethodInput {\n return {\n code,\n ...additionalData,\n };\n}\n\nexport function transformPaymentMethodInputModelToQuoteInput({\n code,\n ...additionalData\n}: PaymentMethodInputModel): NegotiableQuotePaymentMethodInput {\n return {\n code,\n ...additionalData,\n };\n}\n\nexport const transformShippingMethodInput = (\n input: ShippingMethodInputModel | ShippingMethodInput\n): ShippingMethodInput => {\n if ('carrier_code' in input && 'method_code' in input) {\n return input as ShippingMethodInput;\n }\n\n // Transform from model format to GraphQL format\n const modelInput = input as ShippingMethodInputModel;\n\n const { carrierCode, methodCode, ...additionalData } = modelInput;\n\n return {\n carrier_code: carrierCode,\n method_code: methodCode,\n ...additionalData,\n };\n};\n\nexport function transformShippingMethodsInputModel(\n input: Array<ShippingMethodInputModel | ShippingMethodInput>\n): Array<ShippingMethodInput> {\n return input.map(transformShippingMethodInput);\n}\n\nfunction transformAddressInputModel(address: AddressInputModel) {\n return {\n fax: address.fax,\n middlename: address.middleName,\n prefix: address.prefix,\n suffix: address.suffix,\n vat_id: address.vatId,\n city: address.city,\n custom_attributes:\n address.customAttributes?.map((attribute: any) => ({\n attribute_code: attribute.code,\n value: attribute.value,\n })) || [],\n company: address.company,\n country_code: address.countryCode,\n firstname: address.firstName,\n lastname: address.lastName,\n postcode: address.postcode,\n region: address.region,\n region_id: address.regionId,\n save_in_address_book: address.saveInAddressBook,\n street: address.street,\n telephone: address.telephone,\n };\n}\n\nexport function transformShippingAddressInputModelToCartInput(\n input: ShippingAddressInputModel\n): ShippingAddressInput {\n const { customerAddressId, pickupLocationCode, address } = input;\n\n const result: ShippingAddressInput = {};\n\n if (customerAddressId) {\n return { customer_address_id: customerAddressId };\n }\n\n if (pickupLocationCode) {\n result.pickup_location_code = pickupLocationCode;\n }\n\n if (!pickupLocationCode && address) {\n result.address = transformAddressInputModel(address);\n }\n\n return result;\n}\n\nexport function transformShippingAddressInputModelToQuoteInput(\n input: ShippingAddressInputModel\n): NegotiableQuoteShippingAddressInput {\n const { customerAddressUid, address } = input;\n\n const result: NegotiableQuoteShippingAddressInput = {};\n\n if (customerAddressUid) {\n return { customer_address_uid: customerAddressUid };\n }\n\n if (address) {\n result.address = transformAddressInputModel(address);\n }\n\n return result;\n}\n\nexport function transformBillingAddressInputModelToCartInput(\n input: BillingAddressInputModel\n): BillingAddressInput {\n const {\n customerAddressId,\n sameAsShipping = false,\n useForShipping = false,\n address,\n } = input;\n\n let result: BillingAddressInput = {\n use_for_shipping: useForShipping,\n same_as_shipping: sameAsShipping,\n };\n\n if (!sameAsShipping && customerAddressId) {\n result.customer_address_id = customerAddressId;\n return result;\n }\n\n if (!sameAsShipping && address) {\n result.address = transformAddressInputModel(address);\n }\n\n return result;\n}\n\nexport function transformBillingAddressInputModelToQuoteInput(\n input: BillingAddressInputModel\n): NegotiableQuoteBillingAddressInput {\n const {\n customerAddressUid,\n sameAsShipping = false,\n useForShipping = false,\n address,\n } = input;\n\n let result: NegotiableQuoteBillingAddressInput = {\n use_for_shipping: useForShipping,\n same_as_shipping: sameAsShipping,\n };\n\n if (!sameAsShipping && customerAddressUid) {\n result.customer_address_uid = customerAddressUid;\n return result;\n }\n\n if (!sameAsShipping && address) {\n result.address = transformAddressInputModel(address);\n }\n\n return result;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CustomAttribute as CustomAttributeModel } from '@/checkout/data/models/custom-attribute';\nimport { AttributeValue } from '@/checkout/__generated__/types';\n\nconst isAttributeValue = (attribute: any): attribute is AttributeValue => {\n if (!attribute) return false;\n return 'code' in attribute && 'value' in attribute;\n};\n\nexport const transformCustomAttributes = (\n data: Array<AttributeValue | any | null> | null | undefined\n): CustomAttributeModel[] => {\n if (!data) return [];\n return data.filter(isAttributeValue).map((attribute) => {\n const { code, value } = attribute;\n return { code, value };\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PaymentMethod } from '@/checkout/data/models/payment-method';\nimport { GetCartQuery } from '@/checkout/__generated__/types';\n\ntype SelectedPaymentMethod = NonNullable<\n GetCartQuery['cart']\n>['selected_payment_method'];\n\ntype AvailablePaymentMethods = NonNullable<\n GetCartQuery['cart']\n>['available_payment_methods'];\n\ntype AvailablePaymentMethod = NonNullable<AvailablePaymentMethods>[number];\n\ntype NonNullabePaymentMethod = NonNullable<AvailablePaymentMethod>;\n\nconst transformSelectedPaymentMethod = (\n data: SelectedPaymentMethod\n): PaymentMethod | undefined => {\n if (!data) return;\n const { code, title, ...additionalData } = data;\n return { code, title, additionalData };\n};\n\nconst transformAvailablePaymentMethods = (\n data: AvailablePaymentMethods\n): PaymentMethod[] | undefined => {\n if (!data) return;\n\n return data\n .filter((method) => !!method)\n .map((method) => {\n const { code, title, ...additionalData } =\n method as NonNullabePaymentMethod;\n return { code, title, additionalData };\n });\n};\n\nexport { transformAvailablePaymentMethods, transformSelectedPaymentMethod };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n AddressInput as AddressInputModel,\n CartAddress as CartAddressModel,\n CartShippingAddress as CartShippingAddressModel,\n} from '@/checkout/data/models';\n\nimport {\n transformAddressCountry,\n transformAddressRegion,\n transformCustomAttributes,\n transformSelectedShippingMethod,\n transformShippingMethods,\n} from '@/checkout/data/transforms';\n\nimport { GetCartQuery } from '@/checkout/__generated__/types';\n\ntype ShippingAddresses = NonNullable<\n GetCartQuery['cart']\n>['shipping_addresses'];\ntype CartShippingAddress = ShippingAddresses[0];\ntype NonNullableShippingAddress = NonNullable<CartShippingAddress>;\n\ntype CartBillingAddress = NonNullable<GetCartQuery['cart']>['billing_address'];\ntype NonNullableBillingAddress = NonNullable<CartBillingAddress>;\n\nconst transformBaseCartAddress = (\n data: NonNullableShippingAddress | NonNullableBillingAddress\n): CartAddressModel => {\n const street = data.street.filter(Boolean) as string[];\n\n return {\n city: data.city,\n company: data.company || undefined,\n country: transformAddressCountry(data.country),\n customAttributes: transformCustomAttributes(data.custom_attributes),\n fax: data.fax || undefined,\n firstName: data.firstname,\n id: data?.id || undefined,\n lastName: data.lastname,\n middleName: data.middlename || undefined,\n postCode: data.postcode || undefined,\n prefix: data.prefix || undefined,\n region: transformAddressRegion(data.region),\n street,\n suffix: data.suffix || undefined,\n telephone: data.telephone || undefined,\n uid: data.uid,\n vatId: data.vat_id || undefined,\n };\n};\n\nconst transformCartBillingAddress = (\n data: CartBillingAddress\n): CartAddressModel | undefined => {\n if (!data) return;\n return transformBaseCartAddress(data);\n};\n\nconst transformCartShippingAddress = (\n data: ShippingAddresses\n): CartShippingAddressModel[] => {\n return data\n .filter((address) => !!address)\n .map((address) => {\n const {\n available_shipping_methods,\n selected_shipping_method,\n same_as_billing,\n ...baseData\n } = address as NonNullableShippingAddress;\n\n return {\n ...transformBaseCartAddress(baseData as NonNullableShippingAddress),\n availableShippingMethods: transformShippingMethods(\n available_shipping_methods\n ),\n selectedShippingMethod: transformSelectedShippingMethod(\n selected_shipping_method\n ),\n sameAsBilling: same_as_billing,\n };\n });\n};\n\nconst transformAddressToCartAddressInput = <T extends CartAddressModel>(\n address?: T | null\n): AddressInputModel | undefined => {\n if (!address) return;\n return {\n city: address.city,\n company: address.company,\n countryCode: address.country.code,\n customAttributes: address.customAttributes || [],\n firstName: address.firstName,\n lastName: address.lastName,\n postcode: address.postCode,\n region: address.region?.code,\n regionId: address.region?.id,\n street: address.street,\n telephone: address.telephone,\n vatId: address.vatId,\n prefix: address.prefix,\n suffix: address.suffix,\n middleName: address.middleName,\n fax: address.fax,\n };\n};\n\nexport {\n CartBillingAddress,\n CartShippingAddress,\n transformAddressToCartAddressInput,\n transformCartBillingAddress,\n transformCartShippingAddress,\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config } from '@/checkout/api';\nimport { Cart as CartModel } from '@/checkout/data/models';\nimport {\n transformAvailablePaymentMethods,\n transformSelectedPaymentMethod,\n} from '@/checkout/data/transforms/transform-payment-methods';\nimport { GetCartQuery } from '@/checkout/__generated__/types';\nimport { merge } from '@adobe-commerce/elsie/lib';\n\nimport {\n transformCartBillingAddress,\n transformCartShippingAddress,\n} from '@/checkout/data/transforms/transform-cart-address';\nimport { state } from '@/checkout/lib/state';\n\ntype Cart = GetCartQuery['cart'];\n\nconst transformCart = (data: Cart): CartModel | undefined => {\n if (!data) return;\n\n const model = {\n type: 'cart' as const,\n availablePaymentMethods: transformAvailablePaymentMethods(\n data.available_payment_methods\n ),\n billingAddress: transformCartBillingAddress(data.billing_address),\n email: data.email ?? undefined,\n id: data.id,\n isEmpty: data.total_quantity === 0,\n isVirtual: data.is_virtual,\n selectedPaymentMethod: transformSelectedPaymentMethod(\n data.selected_payment_method\n ),\n shippingAddresses: transformCartShippingAddress(data.shipping_addresses),\n isGuest: !state.authenticated,\n };\n\n // Extend the model merging custom transformer, if provided\n return merge(\n model, // default transformer\n config.getConfig().models?.CartModel?.transformer?.(data) // custom transformer\n );\n};\n\nexport { Cart, transformCart };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CompanyCredit as CompanyCreditModel } from '@/checkout/data/models';\nimport { CompanyCredit as CompanyCreditType } from '@/checkout/__generated__/types';\n\ntype OptionalCompanyCredit = CompanyCreditType | null | undefined;\n\nconst transformCompanyCredit = (data: OptionalCompanyCredit): CompanyCreditModel | null => {\n if (!data || !data?.available_credit || data.available_credit.value == null || !data.available_credit.currency) return null;\n\n const model = {\n availableCredit: {\n value: data.available_credit.value,\n currency: data.available_credit.currency,\n },\n exceedLimit: data?.exceed_limit || false,\n };\n\n return model;\n};\n\nexport { transformCompanyCredit };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n Address as AddressModel,\n ShippingAddress as ShippingAddressModel,\n} from '@/checkout/data/models';\n\nimport {\n transformAddressCountry,\n transformAddressRegion,\n transformCustomAttributes,\n transformSelectedShippingMethod,\n transformShippingMethods,\n} from '@/checkout/data/transforms';\nimport { GetNegotiableQuoteQuery } from '@/checkout/__generated__/types';\n\ntype QuoteShippingAddresses = NonNullable<\n GetNegotiableQuoteQuery['negotiableQuote']\n>['shipping_addresses'];\ntype QuoteShippingAddress = QuoteShippingAddresses[0];\ntype NonNullableShippingAddress = NonNullable<QuoteShippingAddress>;\n\ntype QuoteBillingAddress = NonNullable<\n GetNegotiableQuoteQuery['negotiableQuote']\n>['billing_address'];\ntype NonNullableBillingAddress = NonNullable<QuoteBillingAddress>;\n\nconst transformAddress = (\n data: NonNullableShippingAddress | NonNullableBillingAddress\n): AddressModel => {\n const street = data.street.filter(Boolean) as string[];\n\n return {\n city: data.city,\n company: data.company || undefined,\n country: transformAddressCountry(data.country),\n customAttributes: transformCustomAttributes(data.custom_attributes),\n customerAddressUid: data.customer_address_uid || undefined,\n fax: data.fax || undefined,\n firstName: data.firstname,\n lastName: data.lastname,\n middleName: data.middlename || undefined,\n postCode: data.postcode || undefined,\n prefix: data.prefix || undefined,\n region: transformAddressRegion(data.region),\n street,\n suffix: data.suffix || undefined,\n telephone: data.telephone || undefined,\n uid: data.uid,\n vatId: data.vat_id || undefined,\n };\n};\n\nconst transformQuoteBillingAddress = (\n data: QuoteBillingAddress\n): AddressModel | undefined => {\n if (!data) return;\n return transformAddress(data);\n};\n\nconst transformQuoteShippingAddress = (\n data: QuoteShippingAddresses\n): ShippingAddressModel[] => {\n return data\n .filter((address) => !!address)\n .map((address) => {\n const {\n available_shipping_methods,\n selected_shipping_method,\n ...baseData\n } = address as NonNullableShippingAddress;\n\n return {\n ...transformAddress(baseData as NonNullableShippingAddress),\n availableShippingMethods: transformShippingMethods(\n available_shipping_methods\n ),\n selectedShippingMethod: transformSelectedShippingMethod(\n selected_shipping_method\n ),\n };\n });\n};\n\nexport {\n QuoteBillingAddress,\n QuoteShippingAddress,\n transformQuoteBillingAddress,\n transformQuoteShippingAddress,\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport enum AgreementMode {\n MANUAL = 'manual',\n AUTO = 'auto',\n}\n\ntype AgreementContent = {\n value: string;\n html: boolean;\n height: string | null;\n};\n\nexport interface CheckoutAgreement {\n content: AgreementContent;\n id: number;\n mode: AgreementMode;\n name: string;\n text: string;\n}\n\nexport interface CheckoutError {\n /**\n * The primary, user-friendly error message. This should be safe to display\n * directly in the UI.\n * @example \"Your card was declined.\"\n */\n message: string;\n\n /**\n * An optional, unique error code for programmatic handling. This allows the\n * ServerError component to show specific icons, links, or actions.\n * @example \"payment_intent_declined\"\n */\n code?: string;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport enum TaxDisplay {\n EXCLUDING_TAX = 'EXCLUDING_TAX',\n INCLUDING_EXCLUDING_TAX = 'INCLUDING_AND_EXCLUDING_TAX',\n INCLUDING_TAX = 'INCLUDING_TAX',\n}\n\nexport interface StoreConfig {\n defaultCountry: string;\n agreementsEnabled: boolean;\n shoppingCartDisplaySetting: {\n shipping: TaxDisplay;\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n AgreementMode,\n CheckoutAgreement as CheckoutAgreementModel,\n} from '@/checkout/data/models';\nimport { Get_Checkout_AgreementsQuery } from '@/checkout/__generated__/types';\n\ntype CheckoutAgreements = Get_Checkout_AgreementsQuery['checkoutAgreements'];\ntype FilteredAgreement = NonNullable<NonNullable<CheckoutAgreements>[0]>;\n\nexport const transformCheckoutAgreements = (\n data: CheckoutAgreements\n): CheckoutAgreementModel[] => {\n if (!data) return [];\n\n return data\n .filter((agreement): agreement is FilteredAgreement => !!agreement)\n .map((agreement) => ({\n id: agreement.agreement_id,\n name: agreement.name,\n mode: AgreementMode[agreement.mode],\n text: agreement.checkbox_text,\n content: {\n value: agreement.content,\n html: agreement.is_html,\n height: agreement.content_height ?? null,\n },\n }));\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n CartAddressCountry,\n NegotiableQuoteAddressCountry,\n} from '@/checkout/__generated__/types';\n\nimport { Country as CountryModel } from '@/checkout/data/models';\n\ntype AddressCountry = CartAddressCountry | NegotiableQuoteAddressCountry;\ntype OptionalAddressCountry = AddressCountry | undefined | null;\n\nexport const transformAddressCountry = (\n data: OptionalAddressCountry\n): CountryModel => ({\n code: data?.code ?? '',\n label: data?.label ?? '',\n});\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config } from '@/checkout/api';\nimport { Customer as CustomerModel } from '@/checkout/data/models';\nimport { GetCustomerQuery } from '@/checkout/__generated__/types';\nimport { merge } from '@adobe-commerce/elsie/lib';\n\ntype Customer = GetCustomerQuery['customer'];\n\nconst transformCustomer = (data: Customer): CustomerModel | null => {\n if (!data) return null;\n\n const model = {\n firstName: data.firstname || '',\n lastName: data.lastname || '',\n email: data.email || '',\n };\n\n // Extend the model merging custom transformer, if provided\n return merge(\n model, // default transformer\n config.getConfig().models?.CustomerModel?.transformer?.(data) // custom transformer\n );\n};\n\nexport { Customer, transformCustomer };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { IsEmailAvailableQuery } from '@/checkout/__generated__/types';\nimport { EmailAvailability } from '@/checkout/data/models';\n\nconst transformEmailAvailability = (\n data: IsEmailAvailableQuery['isEmailAvailable']\n): EmailAvailability => {\n return Boolean(data?.is_email_available);\n};\n\nexport { transformEmailAvailability };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NegotiableQuote as NegotiableQuoteModel } from '@/checkout/data/models/';\nimport { GetNegotiableQuoteQuery } from '@/checkout/__generated__/types';\n\nimport {\n transformAvailablePaymentMethods,\n transformQuoteBillingAddress,\n transformQuoteShippingAddress,\n transformSelectedPaymentMethod,\n} from '@/checkout/data/transforms';\n\ntype NegotiableQuote = GetNegotiableQuoteQuery['negotiableQuote'];\n\nexport const transformNegotiableQuote = (\n data: NegotiableQuote | undefined\n): NegotiableQuoteModel | null => {\n if (!data) return null;\n\n return {\n type: 'quote' as const,\n availablePaymentMethods: transformAvailablePaymentMethods(\n data.available_payment_methods\n ),\n billingAddress: transformQuoteBillingAddress(data.billing_address),\n email: data.email ?? '',\n isEmpty: data.total_quantity === 0,\n isVirtual: data.is_virtual,\n name: data.name,\n selectedPaymentMethod: transformSelectedPaymentMethod(\n data.selected_payment_method\n ),\n shippingAddresses: transformQuoteShippingAddress(data.shipping_addresses),\n status: data.status,\n uid: data.uid,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Region as RegionModel } from '@/checkout/data/models';\nimport {\n CartAddressRegion,\n NegotiableQuoteAddressRegion,\n} from '@/checkout/__generated__/types';\n\ntype AddressRegion = CartAddressRegion | NegotiableQuoteAddressRegion;\ntype OptionalAddressRegion = AddressRegion | undefined | null;\n\nexport const transformAddressRegion = (\n data: OptionalAddressRegion\n): RegionModel | undefined => {\n if (!data?.code || !data?.label) return;\n return {\n code: data.code,\n name: data.label,\n id: data.region_id ?? undefined,\n };\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport deepmerge from 'deepmerge';\n\nexport { default as deepmerge } from 'deepmerge';\n\nconst mergeOptions = {\n arrayMerge: (target: any, source: any, options: any) => {\n const destination = target.slice();\n\n source.forEach((item: any, index: number) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(\n item,\n options\n );\n } else if (options.isMergeableObject(item)) {\n destination[index] = deepmerge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n },\n};\n\nexport function merge<T>(\n prev: T,\n next?: { [key: string]: any }\n) {\n if (!next) return prev;\n\n return deepmerge<T, { [key: string]: any }>(\n prev,\n next,\n mergeOptions\n );\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config } from '@/checkout/api';\nimport {\n PartialShippingAddress,\n ShippingEstimateShippingMethod,\n ShippingMethod,\n} from '@/checkout/data/models';\nimport { transformShippingMethods } from '@/checkout/data/transforms';\nimport { EstimateShippingMethodsMutation } from '@/checkout/__generated__/types';\nimport { merge } from '@adobe-commerce/elsie/lib/deepmerge';\n\ntype AvailableShippingMethods =\n EstimateShippingMethodsMutation['estimateShippingMethods'];\n\ntype TransformShippingEstimatePartialAddressInput = {\n country_id: string;\n postcode?: string;\n region_id?: number;\n region?: string;\n};\n\nexport const transformShippingEstimatePartialAddress = (\n data: TransformShippingEstimatePartialAddressInput\n): PartialShippingAddress => {\n return {\n countryCode: data.country_id,\n postCode: data.postcode || '',\n ...(data.region_id\n ? { regionId: Number(data.region_id) }\n : { ...(data.region ? { region: data.region } : {}) }),\n };\n};\n\nexport const transformShippingEstimateShippingMethod = (\n data: ShippingMethod\n): ShippingEstimateShippingMethod => {\n return {\n carrierCode: data.carrier.code || '',\n methodCode: data.code || '',\n amount: data.amount,\n amountExclTax: data.amountExclTax,\n amountInclTax: data.amountInclTax,\n };\n};\n\nexport const transformEstimateShippingMethods = (\n data: AvailableShippingMethods\n): ShippingMethod[] => {\n const model = transformShippingMethods(data);\n\n return merge(\n model,\n config.getConfig().models?.EstimateShippingModel?.transformer?.(data)\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { ShippingMethod } from '@/checkout/data/models/shipping-method';\nimport { GetCartQuery } from '@/checkout/__generated__/types';\n\ntype Cart = NonNullable<GetCartQuery['cart']>;\ntype ShippingAddresses = Cart['shipping_addresses'];\ntype ShippingAddress = NonNullable<NonNullable<ShippingAddresses>[number]>;\ntype AvailableShippingMethods = ShippingAddress['available_shipping_methods'];\ntype AvailableShippingMethod = NonNullable<AvailableShippingMethods>[number];\ntype SelectedShippingMethod = ShippingAddress['selected_shipping_method'];\n\ntype FilteredShippingMethod = Omit<\n NonNullable<AvailableShippingMethod>,\n | 'method_code'\n | 'method_title'\n | 'amount'\n | 'price_excl_tax'\n | 'price_incl_tax'\n> & {\n method_code: string;\n method_title: string;\n amount: {\n value: number;\n currency: string;\n };\n price_excl_tax: {\n value: number;\n currency: string;\n };\n price_incl_tax: {\n value: number;\n currency: string;\n };\n};\n\nconst byPrice = (a: ShippingMethod, b: ShippingMethod) =>\n a.amount.value - b.amount.value;\n\nexport const isNullish = (value: any): boolean =>\n value === null || value === undefined;\n\nconst isValid = (method: AvailableShippingMethod | SelectedShippingMethod) => {\n if (!method) return false;\n if (!method.method_code || !method.method_title) return false;\n if (isNullish(method.amount.value) || !method.amount.currency) return false;\n return true;\n};\n\nconst buildShippingMethod = (data: FilteredShippingMethod): ShippingMethod => {\n return {\n amount: {\n value: data.amount.value,\n currency: data.amount.currency,\n },\n title: data.method_title,\n code: data.method_code,\n carrier: {\n code: data.carrier_code,\n title: data.carrier_title,\n },\n value: `${data.carrier_code} - ${data.method_code}`,\n ...(data.price_excl_tax && {\n amountExclTax: {\n value: data.price_excl_tax.value,\n currency: data.price_excl_tax.currency,\n },\n }),\n ...(data.price_incl_tax && {\n amountInclTax: {\n value: data.price_incl_tax.value,\n currency: data.price_incl_tax.currency,\n },\n }),\n ...((data as any).original_amount && {\n originalAmount: {\n value: (data as any).original_amount.value,\n currency: (data as any).original_amount.currency,\n },\n }),\n };\n};\n\nexport const transformSelectedShippingMethod = (\n data: SelectedShippingMethod\n): ShippingMethod | undefined => {\n if (!isValid(data)) return;\n return buildShippingMethod(data as FilteredShippingMethod);\n};\n\nexport const transformAvailableShippingMethod = (\n data: AvailableShippingMethod\n): ShippingMethod | undefined => {\n if (!isValid(data)) return;\n return buildShippingMethod(data as FilteredShippingMethod);\n};\n\nexport const transformShippingMethods = (\n data: AvailableShippingMethods\n): ShippingMethod[] => {\n if (!data) return [];\n\n return data\n .filter(isValid)\n .map((method) => buildShippingMethod(method as FilteredShippingMethod))\n .sort(byPrice);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Cart, NegotiableQuote } from '@/checkout/data/models';\nimport {\n computed,\n ReadonlySignal,\n signal,\n} from '@adobe-commerce/elsie/lib/signals';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport enum QueueName {\n Updates = 'updates',\n Default = 'default',\n ShippingEstimate = 'shippingEstimate',\n}\n\ntype Request<T> = () => Promise<T>;\ntype QueueCompletedHandler<T> = (result: T) => void;\n\ninterface QueuedRequest<T> {\n requestFn: Request<T>;\n resolve: (value: T) => void;\n reject: (error: any) => void;\n}\n\nconst queues = new Map<QueueName, QueuedRequest<any>[]>();\nconst processing = new Map<QueueName, boolean>();\nconst pendingRequests = signal<Set<QueueName>>(new Set());\nconst onQueueCompleted = new Map<QueueName, QueueCompletedHandler<any>>();\n\nonQueueCompleted.set(\n QueueName.Updates,\n (latestResult: Cart | NegotiableQuote) => {\n events.emit('checkout/updated', latestResult);\n }\n);\n\nasync function processQueue(type: QueueName): Promise<void> {\n processing.set(type, true);\n\n const queue = queues.get(type)!;\n let latestSuccessResult: any;\n\n while (queue.length > 0) {\n const request = queue.shift()!;\n\n try {\n const result = await request.requestFn();\n request.resolve(result);\n latestSuccessResult = result;\n } catch (error) {\n request.reject(error);\n }\n }\n\n processing.set(type, false);\n\n const pendingSet = new Set(pendingRequests.value);\n pendingSet.delete(type);\n pendingRequests.value = pendingSet;\n\n const handler = onQueueCompleted.get(type);\n\n if (handler && latestSuccessResult) {\n handler(latestSuccessResult);\n }\n}\n\nexport function enqueueRequest<T>(\n requestFn: Request<T>,\n name: QueueName = QueueName.Default\n): Promise<T> {\n if (!queues.has(name)) {\n queues.set(name, []);\n }\n\n const queue = queues.get(name)!;\n\n const promise = new Promise<T>((resolve, reject) => {\n queue.push({ requestFn, resolve, reject });\n });\n\n const pendingSet = new Set(pendingRequests.value);\n pendingSet.add(name);\n pendingRequests.value = pendingSet;\n\n if (!processing.get(name)) {\n processQueue(name);\n }\n\n return promise;\n}\n\nexport const hasPendingUpdates: ReadonlySignal<boolean> = computed(() => {\n return pendingRequests.value.has(QueueName.Updates);\n});\n\nexport const hasPendingShippingEstimate: ReadonlySignal<boolean> = computed(\n () => {\n return pendingRequests.value.has(QueueName.ShippingEstimate);\n }\n);\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchQueryError } from '@/checkout/api/fetch-graphql';\n\ntype ErrorPath = (string | number)[];\n\nexport type ErrorWithPath = FetchQueryError[number] & {\n path?: ErrorPath;\n};\n\nconst controlledErrorProps: string[] = ['sender_email', 'recipient_email'];\n\n/**\n * Filters out errors with known paths from a list of errors generated by a GraphQL query.\n *\n * Known issue: The query does not differentiate between physical and virtual gift cards, leading\n * to errors for physical ones as they don't have 'sender_email' and 'recipient_email' properties.\n *\n * @param {ErrorWithPath[]} errors - Array of errors to be filtered.\n * @return {ErrorWithPath[]} Uncontrolled (unexpected) errors not matching predefined paths.\n */\n\nexport function filterControlledErrors(errors: ErrorWithPath[]) {\n return errors.filter(\n (error) =>\n !error.path ||\n !controlledErrorProps.some((controlledErrorProp) => {\n return error.path?.at(-1) === controlledErrorProp;\n })\n );\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchQueryError } from '@/checkout/api/fetch-graphql';\n\nexport class FetchError extends Error {\n constructor(reasons: FetchQueryError) {\n super(reasons.map((e: any) => e.message).join(' '));\n this.name = 'FetchError';\n }\n}\n\nexport class InvalidInput extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidInput';\n }\n}\n\nexport class MissingArgument extends InvalidInput {\n constructor(argumentName: string) {\n super(`${argumentName} is required.`);\n }\n}\n\nexport class MissingCart extends MissingArgument {\n constructor() {\n super('Cart ID');\n }\n}\n\nexport class MissingCartAndQuote extends InvalidInput {\n constructor() {\n super('Either Cart ID or Quote ID is required.');\n }\n}\n\nexport class Unauthenticated extends Error {\n constructor() {\n super('User is not authenticated');\n }\n}\n\nexport class MissingNegotiableQuoteId extends MissingArgument {\n constructor() {\n super('Negotiable Quote ID');\n }\n}\n\nexport class MissingEmail extends MissingArgument {\n constructor() {\n super('Email');\n }\n}\n\nexport class MissingPaymentMethod extends MissingArgument {\n constructor() {\n super('Payment method code');\n }\n}\n\nexport class MissingShippingAddress extends MissingArgument {\n constructor() {\n super('Shipping address');\n }\n}\n\nexport class MissingShippingMethod extends MissingArgument {\n constructor() {\n super('Shipping method');\n }\n}\n\nexport class MissingBillingAddress extends MissingArgument {\n constructor() {\n super('Billing address');\n }\n}\n\nexport class MissingCountry extends MissingArgument {\n constructor() {\n super('Country Code');\n }\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { InvalidInput, Unauthenticated } from './customErrors';\n\nexport type ErrorCode = string;\n\nexport enum ErrorCodes {\n INVALID_INPUT = 'INVALID_INPUT',\n SERVER_ERROR = 'SERVER_ERROR',\n UNAUTHENTICATED = 'UNAUTHENTICATED',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n QUOTE_DATA_ERROR = 'QUOTE_DATA_ERROR',\n QUOTE_PERMISSION_DENIED = 'QUOTE_PERMISSION_DENIED',\n PERMISSION_DENIED = 'PERMISSION_DENIED',\n}\n\nconst KNOWN_SERVER_ERRORS = ['PlaceOrderError'];\n\nexport interface ErrorClassifier {\n /**\n * The specific code to return if this classifier matches.\n */\n code: ErrorCode;\n /**\n * A function that returns `true` if it recognizes the error.\n * It must safely handle `unknown` inputs.\n */\n matches: (error: unknown) => boolean;\n}\n\n// Array of all known error classifiers.\n// The order is important! The first one to match will be used.\nexport const classifiers: ErrorClassifier[] = [\n {\n code: ErrorCodes.INVALID_INPUT,\n matches: (error: unknown): boolean => {\n return error instanceof InvalidInput;\n },\n },\n {\n code: ErrorCodes.UNAUTHENTICATED,\n matches: (error: unknown): boolean => {\n return error instanceof Unauthenticated;\n },\n },\n {\n code: ErrorCodes.SERVER_ERROR,\n matches: (error: unknown): boolean => {\n if (!error || typeof error !== 'object' || !('name' in error)) {\n return false;\n }\n\n return KNOWN_SERVER_ERRORS.includes((error as { name: string }).name);\n },\n },\n];\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n classifiers,\n ErrorCode,\n ErrorCodes,\n} from '@/checkout/lib/errors/classifiers';\n\nexport function mapErrorToCode(error: unknown): ErrorCode {\n const matchingClassifier = classifiers.find((classifier) =>\n classifier.matches(error)\n );\n\n if (matchingClassifier) {\n return matchingClassifier.code;\n }\n\n return ErrorCodes.UNKNOWN_ERROR;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl, FetchOptions, FetchQueryError } from '@/checkout/api';\nimport { enqueueRequest, QueueName } from '@/checkout/lib/enqueueRequest';\nimport { filterControlledErrors } from '@/checkout/lib/filterControlledErrors';\nimport { FetchError } from '@/checkout/lib/errors';\n\ntype DispatchApiCallParams<T> = {\n defaultValueOnFail?: T;\n options?: FetchOptions;\n path: string;\n query: string;\n queueName?: QueueName;\n transformer?: (data: any) => T;\n type: 'query' | 'mutation';\n};\n\nexport function getValueAtPath(obj: any, path: string) {\n return path\n .split('.')\n .reduce(\n (acc, part) => (acc && acc[part] !== undefined ? acc[part] : undefined),\n obj\n );\n}\n\nasync function dispatchApiCall<T>(\n params: DispatchApiCallParams<T>\n): Promise<T> {\n const {\n defaultValueOnFail,\n options,\n path,\n query,\n queueName,\n transformer,\n type,\n } = params;\n\n try {\n const processApiCall = async () => {\n const { data, errors } = await fetchGraphQl<T>(query, {\n method: type === 'query' ? 'GET' : 'POST',\n cache: type === 'query' ? 'no-cache' : undefined,\n ...options,\n });\n\n if (errors) {\n const uncontrolledErrors = filterControlledErrors(errors);\n\n if (uncontrolledErrors.length > 0) {\n throw new FetchError(uncontrolledErrors as FetchQueryError);\n }\n }\n\n let result = getValueAtPath(data, path);\n\n if (result === undefined) {\n throw new Error(`No data found at path: ${path}`);\n }\n\n return transformer ? transformer(result) : result;\n };\n\n // Execute the API call, either directly or through the queue\n const result =\n type === 'mutation'\n ? await enqueueRequest<T>(processApiCall, queueName)\n : await processApiCall();\n\n return result;\n } catch (error: any) {\n if (defaultValueOnFail !== undefined) return defaultValueOnFail;\n throw error;\n }\n}\n\nexport { dispatchApiCall };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Cart, NegotiableQuote } from '@/checkout/data/models';\nimport { events } from '@adobe-commerce/event-bus';\n\ntype DataModel = Cart | NegotiableQuote;\n\nexport function getInitialCheckoutData(): DataModel | null {\n return events.lastPayload('checkout/initialized') ?? null;\n}\n\nexport function getLatestCheckoutUpdate(): DataModel | null {\n return events.lastPayload('checkout/updated') ?? null;\n}\n\nexport function getCheckoutData(): DataModel | null {\nreturn getLatestCheckoutUpdate() ?? getInitialCheckoutData();\n}\n\nexport function hasShippingAddress(): boolean {\n const cart = getCheckoutData();\n return !!cart?.shippingAddresses?.length;\n}\n\nexport function getCartEmail(): string | null {\n const cart = getCheckoutData();\n return cart?.email ?? null;\n}\n","export const validationPatterns = {\n EMAIL:\n /^[a-z0-9,!#$%&'*+/=?^_`{|}~-]+(\\.[a-z0-9,!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9-]+\\.)+[a-z]{2,}$/i,\n NOT_EMPTY: /^(?!\\s*$).+/,\n};\n\nexport const validateEmail = (email: string): boolean => {\n return validationPatterns.EMAIL.test(email);\n};\n\nexport const validateNotEmpty = (value: string): boolean => {\n return validationPatterns.NOT_EMPTY.test(value);\n};\n\nexport const htmlPatterns = {\n EMAIL: validationPatterns.EMAIL.source,\n NOT_EMPTY: validationPatterns.NOT_EMPTY.source,\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { ValuesModel } from '@/checkout/data/models';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const initialValues: ValuesModel = {\n email: '',\n isBillToShipping: undefined,\n selectedPaymentMethod: null,\n selectedShippingMethod: null,\n};\n\n/**\n * Emits a checkout/values event with the provided values\n * Merges with previous values if they exist\n *\n * @param values - Partial values to be emitted or merged with existing values\n */\nexport function notifyValues(values: Partial<ValuesModel>): void {\n const prev = events.lastPayload('checkout/values') ?? initialValues;\n const next = { ...prev, ...values };\n events.emit('checkout/values', next);\n}\n\n/**\n * Retrieves a specific value from the ValuesModel by key\n * @param key - The key of the ValuesModel to retrieve\n * @returns The value for the specified key or null if not defined/found\n */\nexport function getValue<K extends keyof ValuesModel>(\n key: K\n): ValuesModel[K] | null {\n const values = events.lastPayload('checkout/values');\n return values && key in values ? values[key] : null;\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const getStoreConfigQuery = /* GraphQL */ `\n query getStoreConfig {\n storeConfig {\n default_country\n is_checkout_agreements_enabled\n is_guest_checkout_enabled\n is_one_page_checkout_enabled\n shopping_cart_display_shipping\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { StoreConfig, TaxDisplay } from '@/checkout/data/models';\nimport { transformStoreConfig } from '@/checkout/data/transforms';\nimport { dispatchApiCall, state } from '@/checkout/lib';\nimport { getStoreConfigQuery } from './graphql/getStoreConfig.graphql';\n\nexport const DEFAULT_COUNTRY = 'US';\n\nexport const STORE_CONFIG_DEFAULTS: StoreConfig = {\n defaultCountry: DEFAULT_COUNTRY,\n agreementsEnabled: true,\n shoppingCartDisplaySetting: {\n shipping: TaxDisplay.EXCLUDING_TAX,\n },\n};\n\nexport const getStoreConfig = async () => {\n return await dispatchApiCall({\n defaultValueOnFail: STORE_CONFIG_DEFAULTS,\n options: { method: 'GET', cache: 'no-cache' },\n path: 'storeConfig',\n query: getStoreConfigQuery,\n transformer: transformStoreConfig,\n type: 'query',\n });\n};\n\nexport const getStoreConfigCache = () => state.config;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { GetStoreConfigQuery } from '@/checkout/__generated__/types';\nimport { STORE_CONFIG_DEFAULTS } from '@/checkout/api/getStoreConfig';\nimport { StoreConfig, TaxDisplay } from '@/checkout/data/models';\n\nexport function transformTaxDisplay(data: number | null | undefined) {\n switch (data) {\n case 1:\n return TaxDisplay.EXCLUDING_TAX;\n case 2:\n return TaxDisplay.INCLUDING_TAX;\n case 3:\n return TaxDisplay.INCLUDING_EXCLUDING_TAX;\n default:\n return TaxDisplay.EXCLUDING_TAX;\n }\n}\n\nexport function transformStoreConfig(\n data: GetStoreConfigQuery['storeConfig']\n): StoreConfig {\n if (!data) return STORE_CONFIG_DEFAULTS;\n\n const {\n default_country,\n is_checkout_agreements_enabled,\n shopping_cart_display_shipping,\n } = data;\n\n return {\n defaultCountry: default_country || STORE_CONFIG_DEFAULTS.defaultCountry,\n agreementsEnabled: is_checkout_agreements_enabled,\n shoppingCartDisplaySetting: {\n shipping: transformTaxDisplay(shopping_cart_display_shipping),\n },\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config } from '@/checkout/api';\nimport { estimateShippingMethodsMutation } from '@/checkout/api/estimateShippingMethods/graphql';\nimport { ShippingMethod } from '@/checkout/data/models';\nimport {\n transformEstimateShippingMethods,\n transformShippingEstimatePartialAddress,\n transformShippingEstimateShippingMethod,\n} from '@/checkout/data/transforms';\nimport { dispatchApiCall, getValue, QueueName, state } from '@/checkout/lib';\nimport { MissingCart, MissingCountry } from '@/checkout/lib/errors';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport interface ShippingEstimationCriteria {\n country_code: string;\n region_name?: string;\n region_id?: string | number;\n zip?: string;\n}\n\nexport type EstimateShippingInput = {\n criteria: ShippingEstimationCriteria;\n};\n\nexport const estimateShippingMethods = async (\n input?: EstimateShippingInput\n): Promise<ShippingMethod[] | undefined> => {\n const cartId = state.cartId;\n const countryCode =\n input?.criteria?.country_code ?? state.config?.defaultCountry;\n\n if (!cartId) throw new MissingCart();\n if (!countryCode) throw new MissingCountry();\n\n const { region_id, region_name, zip } = input?.criteria ?? {};\n\n // Process region information\n const region =\n region_id || region_name\n ? {\n region_id:\n typeof region_id === 'string' ? parseInt(region_id, 10) : region_id,\n region_code: region_name,\n }\n : undefined;\n\n // Build address for API call\n const address = {\n country_code: countryCode,\n ...(zip && { postcode: zip }),\n ...(region && {\n region: {\n ...(region.region_id && { region_id: region.region_id }),\n ...(region.region_code && { region_code: region.region_code }),\n },\n }),\n };\n\n // Create address data for transformation\n const estimateShippingAddressData = {\n country_id: countryCode,\n region: address.region?.region_code,\n region_id: address.region?.region_id,\n postcode: zip,\n };\n\n const partialAddress = transformShippingEstimatePartialAddress(\n estimateShippingAddressData\n );\n\n return dispatchApiCall({\n options: { variables: { cartId, address } },\n path: 'estimateShippingMethods',\n query: estimateShippingMethodsMutation,\n queueName: QueueName.ShippingEstimate,\n transformer: transformEstimateShippingMethods,\n type: 'mutation',\n })\n .then((estimation) => {\n const { defaults, shipping } = config.getConfig();\n\n const filteredOptions = shipping?.filterOptions\n ? estimation.filter(shipping.filterOptions)\n : estimation;\n\n const hasAvailableOptions = filteredOptions.length > 0;\n const partialAddress = transformShippingEstimatePartialAddress(\n estimateShippingAddressData\n );\n\n let shippingMethod = null;\n\n if (hasAvailableOptions) {\n const userSelection = getValue('selectedShippingMethod');\n\n let selection = estimation.find(\n (method) =>\n method.code === userSelection?.code &&\n method.carrier.code === userSelection?.carrier.code\n );\n\n if (!selection && defaults?.selectedShippingMethod) {\n selection = defaults.selectedShippingMethod(estimation) ?? undefined;\n }\n\n if (!selection) {\n selection = estimation[0];\n }\n\n shippingMethod = transformShippingEstimateShippingMethod(selection);\n }\n\n events.emit('shipping/estimate', {\n address: partialAddress,\n availableShippingMethods: estimation,\n shippingMethod,\n success: true,\n });\n\n return filteredOptions;\n })\n .catch((error) => {\n events.emit('shipping/estimate', {\n address: partialAddress,\n shippingMethod: null,\n availableShippingMethods: [],\n success: false,\n });\n\n throw error;\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n\nexport type {\n FetchOptions,\n FetchQueryError,\n} from '@adobe-commerce/fetch-graphql';\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const getCartQuery = /* GraphQL */ `\n query getCart($cartId: String!) {\n cart(cart_id: $cartId) {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n\nexport const getCustomerCartQuery = /* GraphQL */ `\n query getCustomerCart {\n cart: customerCart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n getCartQuery,\n getCustomerCartQuery,\n} from '@/checkout/api/getCart/graphql';\nimport { transformCart } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { state } from '@/checkout/lib';\nimport { MissingCart } from '@/checkout/lib/errors';\n\nexport const getCart = async () => {\n const cartId = state.cartId;\n const isGuest = state.authenticated === false;\n const query = isGuest ? getCartQuery : getCustomerCartQuery;\n const variables = isGuest ? { cartId } : {};\n\n if (isGuest && !cartId) throw new MissingCart();\n\n return await dispatchApiCall({\n type: 'query',\n query,\n options: { method: 'POST', cache: 'no-cache', variables },\n path: 'cart',\n transformer: transformCart,\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_CHECKOUT_AGREEMENTS = /* GraphQL */ `\n query GET_CHECKOUT_AGREEMENTS {\n checkoutAgreements {\n agreement_id\n checkbox_text\n content\n content_height\n is_html\n mode\n name\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CheckoutAgreement } from '@/checkout/data/models';\nimport { transformCheckoutAgreements } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib';\nimport { GET_CHECKOUT_AGREEMENTS } from './graphql/getCheckoutAgreements.graphql';\n\nexport const getCheckoutAgreements = async (): Promise<CheckoutAgreement[]> => {\n return await dispatchApiCall({\n defaultValueOnFail: [],\n options: { method: 'GET', cache: 'no-cache' },\n path: 'checkoutAgreements',\n query: GET_CHECKOUT_AGREEMENTS,\n transformer: transformCheckoutAgreements,\n type: 'query',\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const getCompanyCreditQuery = /* GraphQL */ `\n query getCompanyCredit {\n company {\n credit {\n exceed_limit\n available_credit {\n value\n currency\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getCompanyCreditQuery } from '@/checkout/api/getCompanyCredit/graphql/getCompanyCredit.graphql';\nimport { CompanyCredit } from '@/checkout/data/models';\nimport { transformCompanyCredit } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\n\nexport const getCompanyCredit = async (): Promise<CompanyCredit | null> => {\n return await dispatchApiCall({\n type: 'query',\n query: getCompanyCreditQuery,\n options: { method: 'GET', cache: 'no-cache' },\n path: 'company.credit',\n transformer: transformCompanyCredit,\n defaultValueOnFail: null,\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CUSTOMER_FRAGMENT } from '@/checkout/api/graphql/CustomerFragment.graphql';\n\nexport const getCustomerQuery = /* GraphQL */ `\n query getCustomer {\n customer {\n ...CUSTOMER_FRAGMENT\n }\n }\n\n ${CUSTOMER_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getCustomerQuery } from '@/checkout/api/getCustomer/graphql/getCustomer.graphql';\nimport { Customer } from '@/checkout/data/models';\nimport { transformCustomer } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { state } from '@/checkout/lib/state';\n\nexport const getCustomer = async (): Promise<Customer | null> => {\n if (!state.authenticated) return null;\n\n return await dispatchApiCall({\n options: { method: 'GET', cache: 'no-cache' },\n path: 'customer',\n query: getCustomerQuery,\n transformer: transformCustomer,\n type: 'query',\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const getNegotiableQuoteQuery = /* GraphQL */ `\n query getNegotiableQuote($quoteId: ID!) {\n negotiableQuote(uid: $quoteId) {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getNegotiableQuoteQuery } from '@/checkout/api/getNegotiableQuote/graphql';\nimport { transformNegotiableQuote as transformer } from '@/checkout/data/transforms';\nimport { state } from '@/checkout/lib';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport {\n MissingNegotiableQuoteId,\n Unauthenticated,\n} from '@/checkout/lib/errors';\n\ntype GetNegotiableQuoteInput = {\n uid?: string;\n};\n\nexport const getNegotiableQuote = async (\n input: GetNegotiableQuoteInput = {}\n) => {\n const quoteId = input.uid ?? state.quoteId;\n const isGuest = state.authenticated === false;\n\n if (isGuest) throw new Unauthenticated();\n if (!quoteId) throw new MissingNegotiableQuoteId();\n\n const variables = { quoteId };\n\n return await dispatchApiCall({\n type: 'query',\n query: getNegotiableQuoteQuery,\n options: { method: 'GET', cache: 'no-cache', variables },\n path: 'negotiableQuote',\n transformer,\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n authenticateCustomer,\n ConfigProps,\n initializeCheckout,\n resetCheckout,\n synchronizeCheckout,\n} from '@/checkout/api';\nimport { ErrorCodes } from '@/checkout/lib/errors';\nimport { PermissionsModel } from '@/checkout/types';\nimport { events, Events } from '@adobe-commerce/event-bus';\n\ntype Listener = [keyof Events, (...args: any[]) => void, { eager: boolean }?];\n\nconst asEager = { eager: true };\n\nexport const addCheckoutEventListeners = (config: ConfigProps | undefined) => {\n const useB2bQuotes = config?.features?.b2b?.quotes ?? false;\n\n const handleAuthenticated = (isAuthenticated = false) => {\n authenticateCustomer(isAuthenticated);\n\n if (!useB2bQuotes) return;\n if (isAuthenticated) return;\n\n const destination = config?.features?.b2b?.routeLogin?.();\n if (destination) {\n window.location.assign(destination);\n }\n };\n\n const cartListeners: Listener[] = [\n ['cart/initialized', initializeCheckout, asEager],\n ['cart/reset', resetCheckout],\n ['cart/updated', synchronizeCheckout],\n [\n 'auth/permissions',\n (permissions: PermissionsModel) => {\n if (permissions['admin'] === true) return;\n\n if (!permissions['Magento_Sales::place_order']) {\n const message =\n config?.langDefinitions?.default?.Checkout?.ServerError\n ?.permissionDenied ||\n 'You do not have permission to complete checkout. Please contact your administrator for assistance.';\n events.emit('checkout/error', {\n message,\n code: ErrorCodes.PERMISSION_DENIED,\n });\n }\n },\n asEager,\n ],\n ];\n\n const quoteListeners: Listener[] = [\n [\n 'quote-management/quote-data/initialized',\n (data) => {\n if (!data.quote.canCheckout) {\n const message =\n config?.langDefinitions?.default?.Checkout?.Quote\n ?.permissionDenied ||\n 'You do not have permission to checkout with this quote.';\n events.emit('checkout/error', {\n message,\n code: ErrorCodes.QUOTE_PERMISSION_DENIED,\n });\n return;\n }\n\n initializeCheckout(data.quote);\n },\n asEager,\n ],\n [\n 'quote-management/quote-data/error',\n () => {\n const message =\n config?.langDefinitions?.default?.Checkout?.Quote?.dataError ||\n 'We were unable to retrieve the quote data. Please try again later.';\n events.emit('checkout/error', {\n message,\n code: ErrorCodes.QUOTE_DATA_ERROR,\n });\n },\n ],\n ];\n\n const listeners: Listener[] = [\n ['authenticated', handleAuthenticated, asEager],\n ...(useB2bQuotes ? quoteListeners : cartListeners),\n ];\n\n return listeners.map(([eventName, handler, options]) => {\n return events.on(eventName, handler, options);\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { addCheckoutEventListeners } from '@/checkout/api/initialize/listeners';\nimport {\n Cart as CartModel,\n Customer as CustomerModel,\n ShippingMethod,\n} from '@/checkout/data/models';\nimport { state } from '@/checkout/lib';\nimport { Filter, Selector } from '@/checkout/types/utils';\nimport { definition } from '@adobe-commerce/elsie/i18n';\nimport { deepmerge, Initializer, Model } from '@adobe-commerce/elsie/lib';\n\nconst url = new URL(window.location.href);\nconst quoteId = url.searchParams.get('quoteId');\nstate.quoteId = quoteId;\n\nexport type ConfigProps = {\n defaults?: {\n isBillToShipping?: boolean;\n selectedShippingMethod?: Selector<ShippingMethod>;\n };\n shipping?: {\n filterOptions?: Filter<ShippingMethod>;\n };\n features?: {\n b2b?: {\n quotes?: boolean;\n routeLogin?: () => string | void;\n };\n };\n langDefinitions?: typeof definition & { default: { Checkout: any } };\n models?: {\n CartModel?: Model<CartModel>;\n CustomerModel?: Model<CustomerModel>;\n EstimateShippingModel?: Model<ShippingMethod[]>;\n };\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (_config = {}) => {\n initialize.config.setConfig(\n deepmerge(\n {\n defaults: {\n isBillToShipping: true,\n selectedShippingMethod: (options) => {\n return options.length > 0 ? options[0] : null;\n },\n },\n features: {\n b2b: { quotes: false },\n },\n },\n _config\n )\n );\n },\n listeners: addCheckoutEventListeners,\n});\n\nexport const config = initialize.config;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n CartModel,\n InitializeInput,\n NegotiableQuoteModel,\n SynchronizeInput,\n} from '@/checkout/types';\n\nexport const isCartInput = (\n input: NonNullable<InitializeInput | SynchronizeInput>\n): input is CartModel => {\n return 'id' in input;\n};\n\nexport const isNegotiableQuoteInput = (\n input: NonNullable<InitializeInput | SynchronizeInput>\n): input is NegotiableQuoteModel => {\n return 'uid' in input;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n getCart,\n getNegotiableQuote,\n getStoreConfig,\n synchronizeCheckout,\n} from '@/checkout/api';\nimport { state } from '@/checkout/lib';\nimport { InitializeInput, isCartInput } from '@/checkout/types';\nimport { events } from '@adobe-commerce/event-bus';\n\nconst getInitialData = async (input: NonNullable<InitializeInput>) => {\n try {\n if (isCartInput(input)) {\n state.cartId = input.id;\n state.quoteId = null;\n return (await getCart()) ?? null;\n }\n state.cartId = null;\n state.quoteId = input.uid;\n return (await getNegotiableQuote()) ?? null;\n } catch (error) {\n console.error('Checkout initialization failed:', error);\n return null;\n }\n};\n\nexport const initializeCheckout = async (input: InitializeInput) => {\n if (state.initialized) {\n await synchronizeCheckout(input);\n return;\n }\n\n if (!state.config) {\n state.config = await getStoreConfig();\n }\n\n const initialData = input ? await getInitialData(input) : null;\n\n state.initialized = true;\n events.emit('checkout/initialized', initialData);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const isEmailAvailableQuery = /* GraphQL */ `\n query isEmailAvailable($email: String!) {\n isEmailAvailable(email: $email) {\n is_email_available\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { isEmailAvailableQuery } from '@/checkout/api/isEmailAvailable/graphql/isEmailAvailable.graphql';\nimport { EmailAvailability } from '@/checkout/data/models/email-availability';\nimport { transformEmailAvailability } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { MissingEmail } from '@/checkout/lib/errors';\n\nexport const isEmailAvailable = async (\n email: string\n): Promise<EmailAvailability> => {\n if (!email) throw new MissingEmail();\n\n return await dispatchApiCall({\n options: { method: 'GET', cache: 'no-cache', variables: { email } },\n path: 'isEmailAvailable',\n query: isEmailAvailableQuery,\n transformer: transformEmailAvailability,\n type: 'query',\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/checkout/lib/state';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const resetCheckout = () => {\n if (!state.initialized) return;\n state.cartId = null;\n state.quoteId = null;\n events.emit('checkout/updated', null);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setBillingAddressOnCartMutation = /* GraphQL */ `\n mutation setBillingAddress(\n $cartId: String!\n $billingAddress: BillingAddressInput!\n ) {\n setBillingAddressOnCart(\n input: { cart_id: $cartId, billing_address: $billingAddress }\n ) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const setBillingAddressOnQuoteMutation = /* GraphQL */ `\n mutation setBillingAddressOnQuote(\n $quoteId: ID!\n $billingAddress: NegotiableQuoteBillingAddressInput!\n ) {\n setNegotiableQuoteBillingAddress(\n input: { quote_uid: $quoteId, billing_address: $billingAddress }\n ) {\n quote {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { MissingCartAndQuote } from '@/checkout/lib/errors';\nimport { state } from '@/checkout/lib/state';\n\nexport const ensureHasCartOrQuoteId = () => {\n const { cartId, quoteId } = state;\n if (!cartId && !quoteId) throw new MissingCartAndQuote();\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n setBillingAddressOnCartMutation,\n setBillingAddressOnQuoteMutation,\n} from '@/checkout/api/setBillingAddress/graphql';\nimport { BillingAddressInput as BillingAddressInputModel } from '@/checkout/data/models';\nimport {\n transformBillingAddressInputModelToCartInput,\n transformBillingAddressInputModelToQuoteInput,\n transformCart,\n transformNegotiableQuote,\n} from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { QueueName } from '@/checkout/lib/enqueueRequest';\nimport { InvalidInput, MissingBillingAddress } from '@/checkout/lib/errors';\nimport { ensureHasCartOrQuoteId } from '@/checkout/lib/guards';\nimport { state } from '@/checkout/lib/state';\n\nconst createBillingAddressSetter = <TTransformedInput, TTransformedOutput>(\n entityId: string,\n entityKey: string,\n mutation: string,\n transformer: (data: any) => TTransformedOutput,\n transformInput: (input: BillingAddressInputModel) => TTransformedInput,\n path: string\n) => {\n return async (\n input: BillingAddressInputModel\n ): Promise<TTransformedOutput> => {\n return await dispatchApiCall({\n type: 'mutation',\n query: mutation,\n options: {\n variables: {\n [entityKey]: entityId,\n billingAddress: transformInput(input),\n },\n },\n path,\n queueName: QueueName.Updates,\n transformer,\n });\n };\n};\n\nconst ensureIsValidCartInput = ({\n address,\n customerAddressId,\n customerAddressUid,\n sameAsShipping = false,\n}: BillingAddressInputModel) => {\n if (!customerAddressId && customerAddressUid) {\n throw new InvalidInput('customerAddressUid is not supported');\n }\n\n if (!sameAsShipping && !customerAddressId && !address) {\n throw new MissingBillingAddress();\n }\n};\n\nconst ensureIsValidQuoteInput = ({\n address,\n customerAddressId,\n customerAddressUid,\n sameAsShipping = false,\n}: BillingAddressInputModel) => {\n if (!customerAddressUid && customerAddressId) {\n throw new InvalidInput('customerAddressId is not supported');\n }\n\n if (!sameAsShipping && !customerAddressUid && !address) {\n throw new MissingBillingAddress();\n }\n};\n\nconst ensureIsValidInput = (input: BillingAddressInputModel) => {\n const isCart = Boolean(state.cartId);\n const isQuote = Boolean(state.quoteId);\n\n if (isCart) {\n ensureIsValidCartInput(input);\n } else if (isQuote) {\n ensureIsValidQuoteInput(input);\n }\n};\n\nexport const setBillingAddress = async (input: BillingAddressInputModel) => {\n ensureHasCartOrQuoteId();\n ensureIsValidInput(input);\n\n const isCart = Boolean(state.cartId);\n\n const setter = isCart\n ? createBillingAddressSetter(\n state.cartId!,\n 'cartId',\n setBillingAddressOnCartMutation,\n transformCart,\n transformBillingAddressInputModelToCartInput,\n 'setBillingAddressOnCart.cart'\n )\n : createBillingAddressSetter(\n state.quoteId!,\n 'quoteId',\n setBillingAddressOnQuoteMutation,\n transformNegotiableQuote,\n transformBillingAddressInputModelToQuoteInput,\n 'setNegotiableQuoteBillingAddress.quote'\n );\n\n return await setter(input);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setGuestEmailMutation = /* GraphQL */ `\n mutation setGuestEmail($cartId: String!, $email: String!) {\n setGuestEmailOnCart(input: { cart_id: $cartId, email: $email }) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { setGuestEmailMutation } from '@/checkout/api/setGuestEmailOnCart/graphql/setGuestEmailOnCart.graphql';\nimport { transformCart } from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { QueueName } from '@/checkout/lib/enqueueRequest';\nimport { MissingCart } from '@/checkout/lib/errors';\nimport { state } from '@/checkout/lib/state';\n\nexport const setGuestEmailOnCart = async (email: string) => {\n const cartId = state.cartId;\n\n if (!cartId) throw new MissingCart();\n\n return await dispatchApiCall({\n options: { variables: { cartId, email } },\n path: 'setGuestEmailOnCart.cart',\n query: setGuestEmailMutation,\n queueName: QueueName.Updates,\n transformer: transformCart,\n type: 'mutation',\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setPaymentMethodOnCartMutation = /* GraphQL */ `\n mutation setPaymentMethodOnCart(\n $cartId: String!\n $input: PaymentMethodInput!\n ) {\n setPaymentMethodOnCart(\n input: { cart_id: $cartId, payment_method: $input }\n ) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const setPaymentMethodOnQuoteMutation = /* GraphQL */ `\n mutation setPaymentMethodOnQuote(\n $quoteId: ID!\n $input: NegotiableQuotePaymentMethodInput!\n ) {\n setNegotiableQuotePaymentMethod(\n input: { quote_uid: $quoteId, payment_method: $input }\n ) {\n quote {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n setPaymentMethodOnCartMutation,\n setPaymentMethodOnQuoteMutation,\n} from '@/checkout/api/setPaymentMethod/graphql';\nimport { PaymentMethodInput as PaymentMethodInputModel } from '@/checkout/data/models';\nimport {\n transformCart,\n transformNegotiableQuote,\n transformPaymentMethodInputModelToCartInput,\n transformPaymentMethodInputModelToQuoteInput,\n} from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { QueueName } from '@/checkout/lib/enqueueRequest';\nimport { MissingPaymentMethod } from '@/checkout/lib/errors/customErrors';\nimport { ensureHasCartOrQuoteId } from '@/checkout/lib/guards';\nimport { state } from '@/checkout/lib/state';\n\nconst createPaymentMethodSetter = <TTransformedInput, TTransformedOutput>(\n entityId: string,\n entityKey: string,\n mutation: string,\n transformer: (data: any) => TTransformedOutput,\n transformInput: (input: PaymentMethodInputModel) => TTransformedInput,\n path: string\n) => {\n return async (\n input: PaymentMethodInputModel\n ): Promise<TTransformedOutput> => {\n return await dispatchApiCall({\n type: 'mutation',\n query: mutation,\n options: {\n variables: {\n [entityKey]: entityId,\n input: transformInput(input),\n },\n },\n path,\n queueName: QueueName.Updates,\n transformer,\n });\n };\n};\n\nconst ensureHasPaymentMethodCode = (input: PaymentMethodInputModel) => {\n if (!input.code) {\n throw new MissingPaymentMethod();\n }\n};\n\nexport const setPaymentMethod = async (input: PaymentMethodInputModel) => {\n ensureHasCartOrQuoteId();\n ensureHasPaymentMethodCode(input);\n\n const isCart = Boolean(state.cartId);\n\n const setter = isCart\n ? createPaymentMethodSetter(\n state.cartId!,\n 'cartId',\n setPaymentMethodOnCartMutation,\n transformCart,\n transformPaymentMethodInputModelToCartInput,\n 'setPaymentMethodOnCart.cart'\n )\n : createPaymentMethodSetter(\n state.quoteId!,\n 'quoteId',\n setPaymentMethodOnQuoteMutation,\n transformNegotiableQuote,\n transformPaymentMethodInputModelToQuoteInput,\n 'setNegotiableQuotePaymentMethod.quote'\n );\n\n return await setter(input);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setShippingAddressOnCartAndUseAsBillingMutation = /* GraphQL */ `\n mutation setShippingAddressOnCartAndUseAsBilling(\n $cartId: String!\n $shippingAddress: ShippingAddressInput!\n ) {\n setShippingAddressesOnCart(\n input: { cart_id: $cartId, shipping_addresses: [$shippingAddress] }\n ) {\n cart {\n id\n }\n }\n\n setBillingAddressOnCart(\n input: { cart_id: $cartId, billing_address: { same_as_shipping: true } }\n ) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setShippingAddressOnCartMutation = /* GraphQL */ `\n mutation setShippingAddressOnCart(\n $cartId: String!\n $shippingAddress: ShippingAddressInput!\n ) {\n setShippingAddressesOnCart(\n input: { cart_id: $cartId, shipping_addresses: [$shippingAddress] }\n ) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const setShippingAddressOnQuoteMutation = /* GraphQL */ `\n mutation setShippingAddressOnQuote(\n $quoteId: ID!\n $shippingAddress: NegotiableQuoteShippingAddressInput!\n ) {\n setNegotiableQuoteShippingAddress(\n input: { quote_uid: $quoteId, shipping_addresses: [$shippingAddress] }\n ) {\n quote {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const setShippingAddressOnQuoteAndUseAsBillingMutation = /* GraphQL */ `\n mutation setShippingAddressOnQuoteAndUseAsBilling(\n $quoteId: ID!\n $shippingAddress: NegotiableQuoteShippingAddressInput!\n ) {\n setNegotiableQuoteShippingAddress(\n input: { quote_uid: $quoteId, shipping_addresses: [$shippingAddress] }\n ) {\n quote {\n uid\n }\n }\n\n setNegotiableQuoteBillingAddress(\n input: {\n quote_uid: $quoteId\n billing_address: { same_as_shipping: true }\n }\n ) {\n quote {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { config } from '@/checkout/api';\nimport {\n setShippingAddressOnCartAndUseAsBillingMutation,\n setShippingAddressOnCartMutation,\n setShippingAddressOnQuoteAndUseAsBillingMutation,\n setShippingAddressOnQuoteMutation,\n} from '@/checkout/api/setShippingAddress/graphql';\nimport { ShippingAddressInput as ShippingAddressInputModel } from '@/checkout/data/models';\nimport {\n transformCart,\n transformNegotiableQuote,\n transformShippingAddressInputModelToCartInput,\n transformShippingAddressInputModelToQuoteInput,\n} from '@/checkout/data/transforms';\nimport { dispatchApiCall, getValue, QueueName } from '@/checkout/lib';\nimport { InvalidInput, MissingShippingAddress } from '@/checkout/lib/errors';\nimport { ensureHasCartOrQuoteId } from '@/checkout/lib/guards';\nimport { state } from '@/checkout/lib/state';\n\nconst ensureIsValidCartInput = ({\n address,\n customerAddressId,\n customerAddressUid,\n pickupLocationCode,\n}: ShippingAddressInputModel) => {\n if (!customerAddressId && customerAddressUid) {\n throw new InvalidInput('customerAddressUid is not supported');\n }\n\n if (!customerAddressId && !pickupLocationCode && !address) {\n throw new MissingShippingAddress();\n }\n};\n\nconst ensureIsValidQuoteInput = ({\n address,\n customerAddressId,\n customerAddressUid,\n pickupLocationCode,\n}: ShippingAddressInputModel) => {\n if (pickupLocationCode) {\n throw new InvalidInput('pickup location is not supported in quotes');\n }\n\n if (!customerAddressUid && customerAddressId) {\n throw new InvalidInput('customerAddressId is not supported in quotes');\n }\n\n if (!customerAddressUid && !address) {\n throw new MissingShippingAddress();\n }\n};\n\nconst ensureIsValidInput = (input: ShippingAddressInputModel) => {\n const isCart = Boolean(state.cartId);\n const isQuote = Boolean(state.quoteId);\n\n if (isCart) {\n ensureIsValidCartInput(input);\n } else if (isQuote) {\n ensureIsValidQuoteInput(input);\n }\n};\n\nconst createShippingAddressSetter = <TTransformedInput, TTransformedOutput>(\n entityId: string,\n entityKey: string,\n mutation: string,\n transformer: (data: any) => TTransformedOutput,\n transformInput: (input: ShippingAddressInputModel) => TTransformedInput,\n path: string\n) => {\n return async (\n input: ShippingAddressInputModel\n ): Promise<TTransformedOutput> => {\n return await dispatchApiCall({\n type: 'mutation',\n query: mutation,\n options: {\n variables: {\n [entityKey]: entityId,\n shippingAddress: transformInput(input),\n },\n },\n path,\n queueName: QueueName.Updates,\n transformer,\n });\n };\n};\n\nexport const setShippingAddress = async (input: ShippingAddressInputModel) => {\n ensureHasCartOrQuoteId();\n ensureIsValidInput(input);\n\n const { defaults } = config.getConfig();\n\n const isBillToShipping =\n getValue('isBillToShipping') ?? defaults?.isBillToShipping;\n\n const isCart = Boolean(state.cartId);\n\n const setter = isCart\n ? createShippingAddressSetter(\n state.cartId!,\n 'cartId',\n isBillToShipping\n ? setShippingAddressOnCartAndUseAsBillingMutation\n : setShippingAddressOnCartMutation,\n transformCart,\n transformShippingAddressInputModelToCartInput,\n isBillToShipping\n ? 'setBillingAddressOnCart.cart'\n : 'setShippingAddressesOnCart.cart'\n )\n : createShippingAddressSetter(\n state.quoteId!,\n 'quoteId',\n isBillToShipping\n ? setShippingAddressOnQuoteAndUseAsBillingMutation\n : setShippingAddressOnQuoteMutation,\n transformNegotiableQuote,\n transformShippingAddressInputModelToQuoteInput,\n isBillToShipping\n ? 'setNegotiableQuoteBillingAddress.quote'\n : 'setNegotiableQuoteShippingAddress.quote'\n );\n\n return await setter(input);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CHECKOUT_DATA_FRAGMENT } from '@/checkout/api/graphql/CheckoutDataFragment.graphql';\n\nexport const setShippingMethodsOnCartMutation = /* GraphQL */ `\n mutation setShippingMethodsOnCart(\n $cartId: String!\n $shippingMethods: [ShippingMethodInput]!\n ) {\n setShippingMethodsOnCart(\n input: { cart_id: $cartId, shipping_methods: $shippingMethods }\n ) {\n cart {\n ...CHECKOUT_DATA_FRAGMENT\n }\n }\n }\n\n ${CHECKOUT_DATA_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_FRAGMENT } from '@/checkout/api/graphql/NegotiableQuoteFragment.graphql';\n\nexport const setShippingMethodsOnQuoteMutation = /* GraphQL */ `\n mutation setShippingMethodsOnQuote(\n $quoteId: ID!\n $shippingMethods: [ShippingMethodInput]!\n ) {\n setNegotiableQuoteShippingMethods(\n input: { quote_uid: $quoteId, shipping_methods: $shippingMethods }\n ) {\n quote {\n ...NEGOTIABLE_QUOTE_FRAGMENT\n }\n }\n }\n\n ${NEGOTIABLE_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n setShippingMethodsOnCartMutation,\n setShippingMethodsOnQuoteMutation,\n} from '@/checkout/api/setShippingMethods/graphql';\nimport { ShippingMethodInput as ShippingMethodInputModel } from '@/checkout/data/models/api';\nimport {\n transformCart,\n transformNegotiableQuote,\n transformShippingMethodsInputModel,\n} from '@/checkout/data/transforms';\nimport { dispatchApiCall } from '@/checkout/lib/dispatchApiCall';\nimport { QueueName } from '@/checkout/lib/enqueueRequest';\nimport { MissingShippingMethod } from '@/checkout/lib/errors/customErrors';\nimport { ensureHasCartOrQuoteId } from '@/checkout/lib/guards';\nimport { state } from '@/checkout/lib/state';\n\nconst createShippingMethodsSetter = <TTransformedOutput>(\n entityId: string,\n entityKey: string,\n mutation: string,\n transformer: (data: any) => TTransformedOutput,\n path: string\n) => {\n return async (\n input: Array<ShippingMethodInputModel>\n ): Promise<TTransformedOutput> => {\n return await dispatchApiCall({\n type: 'mutation',\n query: mutation,\n queueName: QueueName.Updates,\n options: {\n variables: {\n [entityKey]: entityId,\n shippingMethods: transformShippingMethodsInputModel(input),\n },\n },\n path,\n transformer,\n });\n };\n};\n\nconst ensureIsValidInput = (input: Array<ShippingMethodInputModel>) => {\n if (!Array.isArray(input) || input.length === 0) {\n throw new MissingShippingMethod();\n }\n};\n\nexport const setShippingMethods = async (\n input: Array<ShippingMethodInputModel>\n) => {\n ensureHasCartOrQuoteId();\n ensureIsValidInput(input);\n\n const isCart = Boolean(state.cartId);\n\n const setter = isCart\n ? createShippingMethodsSetter(\n state.cartId!,\n 'cartId',\n setShippingMethodsOnCartMutation,\n transformCart,\n 'setShippingMethodsOnCart.cart'\n )\n : createShippingMethodsSetter(\n state.quoteId!,\n 'quoteId',\n setShippingMethodsOnQuoteMutation,\n transformNegotiableQuote,\n 'setNegotiableQuoteShippingMethods.quote'\n );\n\n return await setter(input);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n getCart,\n getNegotiableQuote,\n initializeCheckout,\n resetCheckout,\n} from '@/checkout/api';\nimport { state } from '@/checkout/lib/state';\nimport { isCartInput, SynchronizeInput } from '@/checkout/types';\nimport { events } from '@adobe-commerce/event-bus';\n\nconst getSynchronizedData = async (input: NonNullable<SynchronizeInput>) => {\n try {\n if (isCartInput(input)) {\n state.cartId = input.id;\n state.quoteId = null;\n return (await getCart()) ?? null;\n }\n state.cartId = null;\n state.quoteId = input.uid;\n return (await getNegotiableQuote()) ?? null;\n } catch (error) {\n console.error('Checkout synchronization failed:', error);\n return null;\n }\n};\n\nexport const synchronizeCheckout = async (data: SynchronizeInput) => {\n if (!state.initialized) return initializeCheckout(data);\n\n if (data === null) {\n resetCheckout();\n return;\n }\n\n const update = await getSynchronizedData(data);\n\n events.emit('checkout/updated', update);\n};\n"],"names":["_state","state","target","key","value","isQuoteCheckout","authenticateCustomer","authenticated","estimateShippingMethodsMutation","ESTIMATE_SHIPPING_METHOD_FRAGMENT","transformPaymentMethodInputModelToCartInput","code","additionalData","transformPaymentMethodInputModelToQuoteInput","transformShippingMethodInput","input","modelInput","carrierCode","methodCode","transformShippingMethodsInputModel","transformAddressInputModel","address","_a","attribute","transformShippingAddressInputModelToCartInput","customerAddressId","pickupLocationCode","result","transformShippingAddressInputModelToQuoteInput","customerAddressUid","transformBillingAddressInputModelToCartInput","sameAsShipping","useForShipping","transformBillingAddressInputModelToQuoteInput","isAttributeValue","transformCustomAttributes","data","transformSelectedPaymentMethod","title","transformAvailablePaymentMethods","method","transformBaseCartAddress","street","transformAddressCountry","transformAddressRegion","transformCartBillingAddress","transformCartShippingAddress","available_shipping_methods","selected_shipping_method","same_as_billing","baseData","transformShippingMethods","transformSelectedShippingMethod","transformAddressToCartAddressInput","_b","transformCart","model","merge","_c","config","transformCompanyCredit","transformAddress","transformQuoteBillingAddress","transformQuoteShippingAddress","AgreementMode","TaxDisplay","transformCheckoutAgreements","agreement","transformCustomer","transformEmailAvailability","transformNegotiableQuote","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","source","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","mergeOptions","item","index","transformShippingEstimatePartialAddress","transformShippingEstimateShippingMethod","transformEstimateShippingMethods","byPrice","a","b","isNullish","isValid","buildShippingMethod","QueueName","queues","processing","pendingRequests","signal","onQueueCompleted","latestResult","events","processQueue","type","queue","latestSuccessResult","request","error","pendingSet","handler","enqueueRequest","requestFn","name","promise","resolve","reject","hasPendingUpdates","computed","hasPendingShippingEstimate","controlledErrorProps","filterControlledErrors","errors","controlledErrorProp","FetchError","reasons","e","InvalidInput","message","MissingArgument","argumentName","MissingCart","MissingCartAndQuote","Unauthenticated","MissingNegotiableQuoteId","MissingEmail","MissingPaymentMethod","MissingShippingAddress","MissingShippingMethod","MissingBillingAddress","MissingCountry","ErrorCodes","KNOWN_SERVER_ERRORS","classifiers","mapErrorToCode","matchingClassifier","classifier","getValueAtPath","obj","path","acc","part","dispatchApiCall","params","defaultValueOnFail","query","queueName","transformer","processApiCall","fetchGraphQl","uncontrolledErrors","getInitialCheckoutData","getLatestCheckoutUpdate","getCheckoutData","hasShippingAddress","cart","getCartEmail","validationPatterns","validateEmail","email","validateNotEmpty","htmlPatterns","initialValues","notifyValues","values","getValue","getStoreConfigQuery","DEFAULT_COUNTRY","STORE_CONFIG_DEFAULTS","getStoreConfig","transformStoreConfig","getStoreConfigCache","transformTaxDisplay","default_country","is_checkout_agreements_enabled","shopping_cart_display_shipping","estimateShippingMethods","cartId","countryCode","region_id","region_name","zip","region","estimateShippingAddressData","_d","partialAddress","estimation","defaults","shipping","filteredOptions","hasAvailableOptions","shippingMethod","userSelection","selection","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","getConfig","FetchGraphQL","getCartQuery","CHECKOUT_DATA_FRAGMENT","getCustomerCartQuery","getCart","isGuest","variables","GET_CHECKOUT_AGREEMENTS","getCheckoutAgreements","getCompanyCreditQuery","getCompanyCredit","getCustomerQuery","CUSTOMER_FRAGMENT","getCustomer","getNegotiableQuoteQuery","NEGOTIABLE_QUOTE_FRAGMENT","getNegotiableQuote","quoteId","asEager","addCheckoutEventListeners","useB2bQuotes","isAuthenticated","initializeCheckout","resetCheckout","synchronizeCheckout","permissions","eventName","url","initialize","Initializer","_config","isCartInput","getInitialData","initialData","isEmailAvailableQuery","isEmailAvailable","setBillingAddressOnCartMutation","setBillingAddressOnQuoteMutation","ensureHasCartOrQuoteId","createBillingAddressSetter","entityId","entityKey","mutation","transformInput","ensureIsValidCartInput","ensureIsValidQuoteInput","ensureIsValidInput","isCart","isQuote","setBillingAddress","setGuestEmailMutation","setGuestEmailOnCart","setPaymentMethodOnCartMutation","setPaymentMethodOnQuoteMutation","createPaymentMethodSetter","ensureHasPaymentMethodCode","setPaymentMethod","setShippingAddressOnCartAndUseAsBillingMutation","setShippingAddressOnCartMutation","setShippingAddressOnQuoteMutation","setShippingAddressOnQuoteAndUseAsBillingMutation","createShippingAddressSetter","setShippingAddress","isBillToShipping","setShippingMethodsOnCartMutation","setShippingMethodsOnQuoteMutation","createShippingMethodsSetter","setShippingMethods","getSynchronizedData","update"],"mappings":"gaA2BA,MAAMA,GAAwB,CAC5B,cAAe,GACf,OAAQ,KACR,OAAQ,KACR,YAAa,GACb,QAAS,IACX,EAGaC,EAAQ,IAAI,MAAMD,GAAQ,CACrC,IAAIE,EAAQC,EAAKC,EAAO,CAEtB,OAAAF,EAAOC,CAAG,EAAIC,EACP,EACT,EACA,IAAIF,EAAQC,EAAK,CACf,OAAOD,EAAOC,CAAkB,CAAA,CAEpC,CAAC,EAEM,SAASE,IAA2B,CACzC,OAAOJ,EAAM,UAAY,IAC3B,CC9Ba,MAAAK,GAAuB,MAAOC,EAAgB,KAAU,CACnEN,EAAM,cAAgBM,CACxB,ECFaC,GAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUzDC,EAAiC;AAAA,ECM9B,SAASC,GAA4C,CAC1D,KAAAC,EACA,GAAGC,CACL,EAAgD,CACvC,MAAA,CACL,KAAAD,EACA,GAAGC,CACL,CACF,CAEO,SAASC,GAA6C,CAC3D,KAAAF,EACA,GAAGC,CACL,EAA+D,CACtD,MAAA,CACL,KAAAD,EACA,GAAGC,CACL,CACF,CAEa,MAAAE,GACXC,GACwB,CACpB,GAAA,iBAAkBA,GAAS,gBAAiBA,EACvC,OAAAA,EAIT,MAAMC,EAAaD,EAEb,CAAE,YAAAE,EAAa,WAAAC,EAAY,GAAGN,CAAmB,EAAAI,EAEhD,MAAA,CACL,aAAcC,EACd,YAAaC,EACb,GAAGN,CACL,CACF,EAEO,SAASO,GACdJ,EAC4B,CACrB,OAAAA,EAAM,IAAID,EAA4B,CAC/C,CAEA,SAASM,EAA2BC,EAA4B,OACvD,MAAA,CACL,IAAKA,EAAQ,IACb,WAAYA,EAAQ,WACpB,OAAQA,EAAQ,OAChB,OAAQA,EAAQ,OAChB,OAAQA,EAAQ,MAChB,KAAMA,EAAQ,KACd,oBACEC,EAAAD,EAAQ,mBAAR,YAAAC,EAA0B,IAAKC,IAAoB,CACjD,eAAgBA,EAAU,KAC1B,MAAOA,EAAU,KACnB,MAAO,CAAC,EACV,QAASF,EAAQ,QACjB,aAAcA,EAAQ,YACtB,UAAWA,EAAQ,UACnB,SAAUA,EAAQ,SAClB,SAAUA,EAAQ,SAClB,OAAQA,EAAQ,OAChB,UAAWA,EAAQ,SACnB,qBAAsBA,EAAQ,kBAC9B,OAAQA,EAAQ,OAChB,UAAWA,EAAQ,SACrB,CACF,CAEO,SAASG,GACdT,EACsB,CACtB,KAAM,CAAE,kBAAAU,EAAmB,mBAAAC,EAAoB,QAAAL,CAAY,EAAAN,EAErDY,EAA+B,CAAC,EAEtC,OAAIF,EACK,CAAE,oBAAqBA,CAAkB,GAG9CC,IACFC,EAAO,qBAAuBD,GAG5B,CAACA,GAAsBL,IAClBM,EAAA,QAAUP,EAA2BC,CAAO,GAG9CM,EACT,CAEO,SAASC,GACdb,EACqC,CAC/B,KAAA,CAAE,mBAAAc,EAAoB,QAAAR,CAAA,EAAYN,EAElCY,EAA8C,CAAC,EAErD,OAAIE,EACK,CAAE,qBAAsBA,CAAmB,GAGhDR,IACKM,EAAA,QAAUP,EAA2BC,CAAO,GAG9CM,EACT,CAEO,SAASG,GACdf,EACqB,CACf,KAAA,CACJ,kBAAAU,EACA,eAAAM,EAAiB,GACjB,eAAAC,EAAiB,GACjB,QAAAX,CAAA,EACEN,EAEJ,IAAIY,EAA8B,CAChC,iBAAkBK,EAClB,iBAAkBD,CACpB,EAEI,MAAA,CAACA,GAAkBN,GACrBE,EAAO,oBAAsBF,EACtBE,IAGL,CAACI,GAAkBV,IACdM,EAAA,QAAUP,EAA2BC,CAAO,GAG9CM,EACT,CAEO,SAASM,GACdlB,EACoC,CAC9B,KAAA,CACJ,mBAAAc,EACA,eAAAE,EAAiB,GACjB,eAAAC,EAAiB,GACjB,QAAAX,CAAA,EACEN,EAEJ,IAAIY,EAA6C,CAC/C,iBAAkBK,EAClB,iBAAkBD,CACpB,EAEI,MAAA,CAACA,GAAkBF,GACrBF,EAAO,qBAAuBE,EACvBF,IAGL,CAACI,GAAkBV,IACdM,EAAA,QAAUP,EAA2BC,CAAO,GAG9CM,EACT,CClLA,MAAMO,GAAoBX,GACnBA,EACE,SAAUA,GAAa,UAAWA,EADlB,GAIZY,GACXC,GAEKA,EACEA,EAAK,OAAOF,EAAgB,EAAE,IAAKX,GAAc,CAChD,KAAA,CAAE,KAAAZ,EAAM,MAAAP,CAAA,EAAUmB,EACjB,MAAA,CAAE,KAAAZ,EAAM,MAAAP,CAAM,CAAA,CACtB,EAJiB,CAAC,ECIfiC,GACJD,GAC8B,CAC9B,GAAI,CAACA,EAAM,OACX,KAAM,CAAE,KAAAzB,EAAM,MAAA2B,EAAO,GAAG1B,CAAmB,EAAAwB,EACpC,MAAA,CAAE,KAAAzB,EAAM,MAAA2B,EAAO,eAAA1B,CAAe,CACvC,EAEM2B,GACJH,GACgC,CAChC,GAAKA,EAEE,OAAAA,EACJ,OAAQI,GAAW,CAAC,CAACA,CAAM,EAC3B,IAAKA,GAAW,CACf,KAAM,CAAE,KAAA7B,EAAM,MAAA2B,EAAO,GAAG1B,CACtB,EAAA4B,EACK,MAAA,CAAE,KAAA7B,EAAM,MAAA2B,EAAO,eAAA1B,CAAe,CAAA,CACtC,CACL,ECVM6B,GACJL,GACqB,CACrB,MAAMM,EAASN,EAAK,OAAO,OAAO,OAAO,EAElC,MAAA,CACL,KAAMA,EAAK,KACX,QAASA,EAAK,SAAW,OACzB,QAASO,GAAwBP,EAAK,OAAO,EAC7C,iBAAkBD,GAA0BC,EAAK,iBAAiB,EAClE,IAAKA,EAAK,KAAO,OACjB,UAAWA,EAAK,UAChB,IAAIA,GAAA,YAAAA,EAAM,KAAM,OAChB,SAAUA,EAAK,SACf,WAAYA,EAAK,YAAc,OAC/B,SAAUA,EAAK,UAAY,OAC3B,OAAQA,EAAK,QAAU,OACvB,OAAQQ,GAAuBR,EAAK,MAAM,EAC1C,OAAAM,EACA,OAAQN,EAAK,QAAU,OACvB,UAAWA,EAAK,WAAa,OAC7B,IAAKA,EAAK,IACV,MAAOA,EAAK,QAAU,MACxB,CACF,EAEMS,GACJT,GACiC,CACjC,GAAKA,EACL,OAAOK,GAAyBL,CAAI,CACtC,EAEMU,GACJV,GAEOA,EACJ,OAAQf,GAAY,CAAC,CAACA,CAAO,EAC7B,IAAKA,GAAY,CACV,KAAA,CACJ,2BAAA0B,EACA,yBAAAC,EACA,gBAAAC,EACA,GAAGC,CAAA,EACD7B,EAEG,MAAA,CACL,GAAGoB,GAAyBS,CAAsC,EAClE,yBAA0BC,EACxBJ,CACF,EACA,uBAAwBK,GACtBJ,CACF,EACA,cAAeC,CACjB,CAAA,CACD,EAGCI,GACJhC,GACkC,SAClC,GAAKA,EACE,MAAA,CACL,KAAMA,EAAQ,KACd,QAASA,EAAQ,QACjB,YAAaA,EAAQ,QAAQ,KAC7B,iBAAkBA,EAAQ,kBAAoB,CAAC,EAC/C,UAAWA,EAAQ,UACnB,SAAUA,EAAQ,SAClB,SAAUA,EAAQ,SAClB,QAAQC,EAAAD,EAAQ,SAAR,YAAAC,EAAgB,KACxB,UAAUgC,EAAAjC,EAAQ,SAAR,YAAAiC,EAAgB,GAC1B,OAAQjC,EAAQ,OAChB,UAAWA,EAAQ,UACnB,MAAOA,EAAQ,MACf,OAAQA,EAAQ,OAChB,OAAQA,EAAQ,OAChB,WAAYA,EAAQ,WACpB,IAAKA,EAAQ,GACf,CACF,ECzFMkC,EAAiBnB,GAAsC,WAC3D,GAAI,CAACA,EAAM,OAEX,MAAMoB,EAAQ,CACZ,KAAM,OACN,wBAAyBjB,GACvBH,EAAK,yBACP,EACA,eAAgBS,GAA4BT,EAAK,eAAe,EAChE,MAAOA,EAAK,OAAS,OACrB,GAAIA,EAAK,GACT,QAASA,EAAK,iBAAmB,EACjC,UAAWA,EAAK,WAChB,sBAAuBC,GACrBD,EAAK,uBACP,EACA,kBAAmBU,GAA6BV,EAAK,kBAAkB,EACvE,QAAS,CAACnC,EAAM,aAClB,EAGO,OAAAwD,GACLD,GACAE,GAAAJ,GAAAhC,EAAAqC,EAAO,UAAU,EAAE,SAAnB,YAAArC,EAA2B,YAA3B,YAAAgC,EAAsC,cAAtC,YAAAI,EAAA,KAAAJ,EAAoDlB,EACtD,CACF,ECrCMwB,GAA0BxB,GAC1B,CAACA,GAAQ,EAACA,GAAA,MAAAA,EAAM,mBAAoBA,EAAK,iBAAiB,OAAS,MAAQ,CAACA,EAAK,iBAAiB,SAAiB,KAEzG,CACZ,gBAAiB,CACf,MAAOA,EAAK,iBAAiB,MAC7B,SAAUA,EAAK,iBAAiB,QAClC,EACA,aAAaA,GAAA,YAAAA,EAAM,eAAgB,EACrC,ECWIyB,GACJzB,GACiB,CACjB,MAAMM,EAASN,EAAK,OAAO,OAAO,OAAO,EAElC,MAAA,CACL,KAAMA,EAAK,KACX,QAASA,EAAK,SAAW,OACzB,QAASO,GAAwBP,EAAK,OAAO,EAC7C,iBAAkBD,GAA0BC,EAAK,iBAAiB,EAClE,mBAAoBA,EAAK,sBAAwB,OACjD,IAAKA,EAAK,KAAO,OACjB,UAAWA,EAAK,UAChB,SAAUA,EAAK,SACf,WAAYA,EAAK,YAAc,OAC/B,SAAUA,EAAK,UAAY,OAC3B,OAAQA,EAAK,QAAU,OACvB,OAAQQ,GAAuBR,EAAK,MAAM,EAC1C,OAAAM,EACA,OAAQN,EAAK,QAAU,OACvB,UAAWA,EAAK,WAAa,OAC7B,IAAKA,EAAK,IACV,MAAOA,EAAK,QAAU,MACxB,CACF,EAEM0B,GACJ1B,GAC6B,CAC7B,GAAKA,EACL,OAAOyB,GAAiBzB,CAAI,CAC9B,EAEM2B,GACJ3B,GAEOA,EACJ,OAAQf,GAAY,CAAC,CAACA,CAAO,EAC7B,IAAKA,GAAY,CACV,KAAA,CACJ,2BAAA0B,EACA,yBAAAC,EACA,GAAGE,CAAA,EACD7B,EAEG,MAAA,CACL,GAAGwC,GAAiBX,CAAsC,EAC1D,yBAA0BC,EACxBJ,CACF,EACA,uBAAwBK,GACtBJ,CAAA,CAEJ,CAAA,CACD,EC/EO,IAAAgB,IAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OAFGA,IAAAA,IAAA,CAAA,CAAA,ECAAC,GAAAA,IACVA,EAAA,cAAgB,gBAChBA,EAAA,wBAA0B,8BAC1BA,EAAA,cAAgB,gBAHNA,IAAAA,GAAA,CAAA,CAAA,ECSC,MAAAC,GACX9B,GAEKA,EAEEA,EACJ,OAAQ+B,GAA8C,CAAC,CAACA,CAAS,EACjE,IAAKA,IAAe,CACnB,GAAIA,EAAU,aACd,KAAMA,EAAU,KAChB,KAAMH,GAAcG,EAAU,IAAI,EAClC,KAAMA,EAAU,cAChB,QAAS,CACP,MAAOA,EAAU,QACjB,KAAMA,EAAU,QAChB,OAAQA,EAAU,gBAAkB,IAAA,CACtC,EACA,EAdc,CAAC,ECFRxB,GACXP,IACkB,CAClB,MAAMA,GAAA,YAAAA,EAAM,OAAQ,GACpB,OAAOA,GAAA,YAAAA,EAAM,QAAS,EACxB,GCRMgC,GAAqBhC,GAAyC,WAC9D,GAAA,CAACA,EAAa,OAAA,KAElB,MAAMoB,EAAQ,CACZ,UAAWpB,EAAK,WAAa,GAC7B,SAAUA,EAAK,UAAY,GAC3B,MAAOA,EAAK,OAAS,EACvB,EAGO,OAAAqB,GACLD,GACAE,GAAAJ,GAAAhC,EAAAqC,EAAO,UAAU,EAAE,SAAnB,YAAArC,EAA2B,gBAA3B,YAAAgC,EAA0C,cAA1C,YAAAI,EAAA,KAAAJ,EAAwDlB,EAC1D,CACF,EClBMiC,GACJjC,GAEO,GAAQA,GAAA,MAAAA,EAAM,oBCMVkC,EACXlC,GAEKA,EAEE,CACL,KAAM,QACN,wBAAyBG,GACvBH,EAAK,yBACP,EACA,eAAgB0B,GAA6B1B,EAAK,eAAe,EACjE,MAAOA,EAAK,OAAS,GACrB,QAASA,EAAK,iBAAmB,EACjC,UAAWA,EAAK,WAChB,KAAMA,EAAK,KACX,sBAAuBC,GACrBD,EAAK,uBACP,EACA,kBAAmB2B,GAA8B3B,EAAK,kBAAkB,EACxE,OAAQA,EAAK,OACb,IAAKA,EAAK,GACZ,EAlBkB,KCNPQ,GACXR,GAC4B,CAC5B,GAAI,IAACA,GAAA,MAAAA,EAAM,OAAQ,EAACA,GAAA,MAAAA,EAAM,QACnB,MAAA,CACL,KAAMA,EAAK,KACX,KAAMA,EAAK,MACX,GAAIA,EAAK,WAAa,MACxB,CACF,uGCjCA,IAAImC,GAAoB,SAA2BnE,EAAO,CACzD,OAAOoE,GAAgBpE,CAAK,GACxB,CAACqE,GAAUrE,CAAK,CACrB,EAEA,SAASoE,GAAgBpE,EAAO,CAC/B,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAU,QACpC,CAEA,SAASqE,GAAUrE,EAAO,CACzB,IAAIsE,EAAc,OAAO,UAAU,SAAS,KAAKtE,CAAK,EAEtD,OAAOsE,IAAgB,mBACnBA,IAAgB,iBAChBC,GAAevE,CAAK,CACzB,CAGA,IAAIwE,GAAe,OAAO,QAAW,YAAc,OAAO,IACtDC,GAAqBD,GAAe,OAAO,IAAI,eAAe,EAAI,MAEtE,SAASD,GAAevE,EAAO,CAC9B,OAAOA,EAAM,WAAayE,EAC3B,CAEA,SAASC,GAAYC,EAAK,CACzB,OAAO,MAAM,QAAQA,CAAG,EAAI,CAAA,EAAK,CAAA,CAClC,CAEA,SAASC,EAA8B5E,EAAO6E,EAAS,CACtD,OAAQA,EAAQ,QAAU,IAASA,EAAQ,kBAAkB7E,CAAK,EAC/D8E,EAAUJ,GAAY1E,CAAK,EAAGA,EAAO6E,CAAO,EAC5C7E,CACJ,CAEA,SAAS+E,GAAkBjF,EAAQkF,EAAQH,EAAS,CACnD,OAAO/E,EAAO,OAAOkF,CAAM,EAAE,IAAI,SAASC,EAAS,CAClD,OAAOL,EAA8BK,EAASJ,CAAO,CACrD,CAAA,CACF,CAEA,SAASK,GAAiBnF,EAAK8E,EAAS,CACvC,GAAI,CAACA,EAAQ,YACZ,OAAOC,EAER,IAAIK,EAAcN,EAAQ,YAAY9E,CAAG,EACzC,OAAO,OAAOoF,GAAgB,WAAaA,EAAcL,CAC1D,CAEA,SAASM,GAAgCtF,EAAQ,CAChD,OAAO,OAAO,sBACX,OAAO,sBAAsBA,CAAM,EAAE,OAAO,SAASuF,EAAQ,CAC9D,OAAO,OAAO,qBAAqB,KAAKvF,EAAQuF,CAAM,CACtD,CAAA,EACC,CAAA,CACJ,CAEA,SAASC,EAAQxF,EAAQ,CACxB,OAAO,OAAO,KAAKA,CAAM,EAAE,OAAOsF,GAAgCtF,CAAM,CAAC,CAC1E,CAEA,SAASyF,GAAmBC,EAAQC,EAAU,CAC7C,GAAI,CACH,OAAOA,KAAYD,CACnB,MAAU,CACV,MAAO,EACT,CACA,CAGA,SAASE,GAAiB5F,EAAQC,EAAK,CACtC,OAAOwF,GAAmBzF,EAAQC,CAAG,GACjC,EAAE,OAAO,eAAe,KAAKD,EAAQC,CAAG,GACvC,OAAO,qBAAqB,KAAKD,EAAQC,CAAG,EAClD,CAEA,SAAS4F,GAAY7F,EAAQkF,EAAQH,EAAS,CAC7C,IAAIe,EAAc,CAAE,EACpB,OAAIf,EAAQ,kBAAkB/E,CAAM,GACnCwF,EAAQxF,CAAM,EAAE,QAAQ,SAASC,EAAK,CACrC6F,EAAY7F,CAAG,EAAI6E,EAA8B9E,EAAOC,CAAG,EAAG8E,CAAO,CACxE,CAAG,EAEFS,EAAQN,CAAM,EAAE,QAAQ,SAASjF,EAAK,CACjC2F,GAAiB5F,EAAQC,CAAG,IAI5BwF,GAAmBzF,EAAQC,CAAG,GAAK8E,EAAQ,kBAAkBG,EAAOjF,CAAG,CAAC,EAC3E6F,EAAY7F,CAAG,EAAImF,GAAiBnF,EAAK8E,CAAO,EAAE/E,EAAOC,CAAG,EAAGiF,EAAOjF,CAAG,EAAG8E,CAAO,EAEnFe,EAAY7F,CAAG,EAAI6E,EAA8BI,EAAOjF,CAAG,EAAG8E,CAAO,EAExE,CAAE,EACMe,CACR,CAEA,SAASd,EAAUhF,EAAQkF,EAAQH,EAAS,CAC3CA,EAAUA,GAAW,CAAE,EACvBA,EAAQ,WAAaA,EAAQ,YAAcE,GAC3CF,EAAQ,kBAAoBA,EAAQ,mBAAqBV,GAGzDU,EAAQ,8BAAgCD,EAExC,IAAIiB,EAAgB,MAAM,QAAQb,CAAM,EACpCc,EAAgB,MAAM,QAAQhG,CAAM,EACpCiG,EAA4BF,IAAkBC,EAElD,OAAKC,EAEMF,EACHhB,EAAQ,WAAW/E,EAAQkF,EAAQH,CAAO,EAE1Cc,GAAY7F,EAAQkF,EAAQH,CAAO,EAJnCD,EAA8BI,EAAQH,CAAO,CAMtD,CAEAC,EAAU,IAAM,SAAsBkB,EAAOnB,EAAS,CACrD,GAAI,CAAC,MAAM,QAAQmB,CAAK,EACvB,MAAM,IAAI,MAAM,mCAAmC,EAGpD,OAAOA,EAAM,OAAO,SAASC,EAAMC,EAAM,CACxC,OAAOpB,EAAUmB,EAAMC,EAAMrB,CAAO,CACtC,EAAI,CAAE,CAAA,CACN,EAEA,IAAIsB,GAAcrB,EAElBsB,GAAiBD,mBCvHXE,GAAe,CACnB,WAAY,CAACvG,EAAakF,EAAaH,IAAiB,CAChD,MAAAe,EAAc9F,EAAO,MAAM,EAE1B,OAAAkF,EAAA,QAAQ,CAACsB,EAAWC,IAAkB,CACvC,OAAOX,EAAYW,CAAK,EAAM,IACpBX,EAAAW,CAAK,EAAI1B,EAAQ,8BAC3ByB,EACAzB,CACF,EACSA,EAAQ,kBAAkByB,CAAI,EACvCV,EAAYW,CAAK,EAAIzB,GAAUhF,EAAOyG,CAAK,EAAGD,EAAMzB,CAAO,EAClD/E,EAAO,QAAQwG,CAAI,IAAM,IAClCV,EAAY,KAAKU,CAAI,CACvB,CACD,EACMV,CAAA,CAEX,EAEgB,SAAAvC,GACd4C,EACAC,EACA,CACI,OAACA,EAEEpB,GACLmB,EACAC,EACAG,EACF,EANkBJ,CAOpB,CCPa,MAAAO,EACXxE,IAEO,CACL,YAAaA,EAAK,WAClB,SAAUA,EAAK,UAAY,GAC3B,GAAIA,EAAK,UACL,CAAE,SAAU,OAAOA,EAAK,SAAS,CAAE,EACnC,CAAE,GAAIA,EAAK,OAAS,CAAE,OAAQA,EAAK,MAAO,EAAI,CAAI,CAAA,CACxD,GAGWyE,GACXzE,IAEO,CACL,YAAaA,EAAK,QAAQ,MAAQ,GAClC,WAAYA,EAAK,MAAQ,GACzB,OAAQA,EAAK,OACb,cAAeA,EAAK,cACpB,cAAeA,EAAK,aACtB,GAGW0E,GACX1E,GACqB,WACf,MAAAoB,EAAQL,EAAyBf,CAAI,EAEpC,OAAAqB,GACLD,GACAE,GAAAJ,GAAAhC,EAAAqC,EAAO,UAAU,EAAE,SAAnB,YAAArC,EAA2B,wBAA3B,YAAAgC,EAAkD,cAAlD,YAAAI,EAAA,KAAAJ,EAAgElB,EAClE,CACF,ECnBM2E,GAAU,CAACC,EAAmBC,IAClCD,EAAE,OAAO,MAAQC,EAAE,OAAO,MAEfC,GAAa9G,GACxBA,GAAU,KAEN+G,GAAW3E,GACX,GAACA,GACD,CAACA,EAAO,aAAe,CAACA,EAAO,cAC/B0E,GAAU1E,EAAO,OAAO,KAAK,GAAK,CAACA,EAAO,OAAO,UAIjD4E,GAAuBhF,IACpB,CACL,OAAQ,CACN,MAAOA,EAAK,OAAO,MACnB,SAAUA,EAAK,OAAO,QACxB,EACA,MAAOA,EAAK,aACZ,KAAMA,EAAK,YACX,QAAS,CACP,KAAMA,EAAK,aACX,MAAOA,EAAK,aACd,EACA,MAAO,GAAGA,EAAK,YAAY,MAAMA,EAAK,WAAW,GACjD,GAAIA,EAAK,gBAAkB,CACzB,cAAe,CACb,MAAOA,EAAK,eAAe,MAC3B,SAAUA,EAAK,eAAe,QAAA,CAElC,EACA,GAAIA,EAAK,gBAAkB,CACzB,cAAe,CACb,MAAOA,EAAK,eAAe,MAC3B,SAAUA,EAAK,eAAe,QAAA,CAElC,EACA,GAAKA,EAAa,iBAAmB,CACnC,eAAgB,CACd,MAAQA,EAAa,gBAAgB,MACrC,SAAWA,EAAa,gBAAgB,QAAA,CAC1C,CAEJ,GAGWgB,GACXhB,GAC+B,CAC3B,GAAC+E,GAAQ/E,CAAI,EACjB,OAAOgF,GAAoBhF,CAA8B,CAC3D,EASae,EACXf,GAEKA,EAEEA,EACJ,OAAO+E,EAAO,EACd,IAAK3E,GAAW4E,GAAoB5E,CAAgC,CAAC,EACrE,KAAKuE,EAAO,EALG,CAAC,EC1FT,IAAAM,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,QAAU,UACVA,EAAA,iBAAmB,mBAHTA,IAAAA,GAAA,CAAA,CAAA,EAeZ,MAAMC,MAAa,IACbC,MAAiB,IACjBC,EAAkBC,GAA2B,IAAA,GAAK,EAClDC,OAAuB,IAE7BA,GAAiB,IACf,UACCC,GAAyC,CACjCC,EAAA,KAAK,mBAAoBD,CAAY,CAAA,CAEhD,EAEA,eAAeE,GAAaC,EAAgC,CAC/CP,EAAA,IAAIO,EAAM,EAAI,EAEnB,MAAAC,EAAQT,EAAO,IAAIQ,CAAI,EACzB,IAAAE,EAEG,KAAAD,EAAM,OAAS,GAAG,CACjB,MAAAE,EAAUF,EAAM,MAAM,EAExB,GAAA,CACI,MAAApG,EAAS,MAAMsG,EAAQ,UAAU,EACvCA,EAAQ,QAAQtG,CAAM,EACAqG,EAAArG,QACfuG,EAAO,CACdD,EAAQ,OAAOC,CAAK,CAAA,CACtB,CAGSX,EAAA,IAAIO,EAAM,EAAK,EAE1B,MAAMK,EAAa,IAAI,IAAIX,EAAgB,KAAK,EAChDW,EAAW,OAAOL,CAAI,EACtBN,EAAgB,MAAQW,EAElB,MAAAC,EAAUV,GAAiB,IAAII,CAAI,EAErCM,GAAWJ,GACbI,EAAQJ,CAAmB,CAE/B,CAEgB,SAAAK,GACdC,EACAC,EAAkB,UACN,CACPjB,EAAO,IAAIiB,CAAI,GACXjB,EAAA,IAAIiB,EAAM,EAAE,EAGf,MAAAR,EAAQT,EAAO,IAAIiB,CAAI,EAEvBC,EAAU,IAAI,QAAW,CAACC,EAASC,IAAW,CAClDX,EAAM,KAAK,CAAE,UAAAO,EAAW,QAAAG,EAAS,OAAAC,EAAQ,CAAA,CAC1C,EAEKP,EAAa,IAAI,IAAIX,EAAgB,KAAK,EAChD,OAAAW,EAAW,IAAII,CAAI,EACnBf,EAAgB,MAAQW,EAEnBZ,EAAW,IAAIgB,CAAI,GACtBV,GAAaU,CAAI,EAGZC,CACT,CAEa,MAAAG,GAA6CC,GAAS,IAC1DpB,EAAgB,MAAM,IAAI,SAAiB,CACnD,EAEYqB,GAAsDD,GACjE,IACSpB,EAAgB,MAAM,IAAI,kBAA0B,CAE/D,EC3FMsB,GAAiC,CAAC,eAAgB,iBAAiB,EAYlE,SAASC,GAAuBC,EAAyB,CAC9D,OAAOA,EAAO,OACXd,GACC,CAACA,EAAM,MACP,CAACY,GAAqB,KAAMG,GAAwB,OAClD,QAAO3H,EAAA4G,EAAM,OAAN,YAAA5G,EAAY,GAAG,OAAQ2H,CAC/B,CAAA,CACL,CACF,CC1BO,MAAMC,WAAmB,KAAM,CACpC,YAAYC,EAA0B,CAC9B,MAAAA,EAAQ,IAAKC,GAAWA,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAClD,KAAK,KAAO,YAAA,CAEhB,CAEO,MAAMC,UAAqB,KAAM,CACtC,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,KAAO,cAAA,CAEhB,CAEO,MAAMC,UAAwBF,CAAa,CAChD,YAAYG,EAAsB,CAC1B,MAAA,GAAGA,CAAY,eAAe,CAAA,CAExC,CAEO,MAAMC,UAAoBF,CAAgB,CAC/C,aAAc,CACZ,MAAM,SAAS,CAAA,CAEnB,CAEO,MAAMG,WAA4BL,CAAa,CACpD,aAAc,CACZ,MAAM,yCAAyC,CAAA,CAEnD,CAEO,MAAMM,WAAwB,KAAM,CACzC,aAAc,CACZ,MAAM,2BAA2B,CAAA,CAErC,CAEO,MAAMC,WAAiCL,CAAgB,CAC5D,aAAc,CACZ,MAAM,qBAAqB,CAAA,CAE/B,CAEO,MAAMM,WAAqBN,CAAgB,CAChD,aAAc,CACZ,MAAM,OAAO,CAAA,CAEjB,CAEO,MAAMO,WAA6BP,CAAgB,CACxD,aAAc,CACZ,MAAM,qBAAqB,CAAA,CAE/B,CAEO,MAAMQ,WAA+BR,CAAgB,CAC1D,aAAc,CACZ,MAAM,kBAAkB,CAAA,CAE5B,CAEO,MAAMS,WAA8BT,CAAgB,CACzD,aAAc,CACZ,MAAM,iBAAiB,CAAA,CAE3B,CAEO,MAAMU,WAA8BV,CAAgB,CACzD,aAAc,CACZ,MAAM,iBAAiB,CAAA,CAE3B,CAEO,MAAMW,WAAuBX,CAAgB,CAClD,aAAc,CACZ,MAAM,cAAc,CAAA,CAExB,CC5EY,IAAAY,GAAAA,IACVA,EAAA,cAAgB,gBAChBA,EAAA,aAAe,eACfA,EAAA,gBAAkB,kBAClBA,EAAA,cAAgB,gBAChBA,EAAA,iBAAmB,mBACnBA,EAAA,wBAA0B,0BAC1BA,EAAA,kBAAoB,oBAPVA,IAAAA,GAAA,CAAA,CAAA,EAUZ,MAAMC,GAAsB,CAAC,iBAAiB,EAgBjCC,GAAiC,CAC5C,CACE,KAAM,gBACN,QAAUnC,GACDA,aAAiBmB,CAE5B,EACA,CACE,KAAM,kBACN,QAAUnB,GACDA,aAAiByB,EAE5B,EACA,CACE,KAAM,eACN,QAAUzB,GACJ,CAACA,GAAS,OAAOA,GAAU,UAAY,EAAE,SAAUA,GAC9C,GAGFkC,GAAoB,SAAUlC,EAA2B,IAAI,CACtE,CAEJ,EC/CO,SAASoC,GAAepC,EAA2B,CACxD,MAAMqC,EAAqBF,GAAY,KAAMG,GAC3CA,EAAW,QAAQtC,CAAK,CAC1B,EAEA,OAAIqC,EACKA,EAAmB,KAGrBJ,EAAW,aACpB,CCDgB,SAAAM,GAAeC,EAAUC,EAAc,CAC9C,OAAAA,EACJ,MAAM,GAAG,EACT,OACC,CAACC,EAAKC,IAAUD,GAAOA,EAAIC,CAAI,IAAM,OAAYD,EAAIC,CAAI,EAAI,OAC7DH,CACF,CACJ,CAEA,eAAeI,EACbC,EACY,CACN,KAAA,CACJ,mBAAAC,EACA,QAAA/F,EACA,KAAA0F,EACA,MAAAM,EACA,UAAAC,EACA,YAAAC,EACA,KAAArD,CAAA,EACEiD,EAEA,GAAA,CACF,MAAMK,EAAiB,SAAY,CACjC,KAAM,CAAE,KAAAhJ,EAAM,OAAA4G,CAAW,EAAA,MAAMqC,GAAgBJ,EAAO,CACpD,OAAQnD,IAAS,QAAU,MAAQ,OACnC,MAAOA,IAAS,QAAU,WAAa,OACvC,GAAG7C,CAAA,CACJ,EAED,GAAI+D,EAAQ,CACJ,MAAAsC,EAAqBvC,GAAuBC,CAAM,EAEpD,GAAAsC,EAAmB,OAAS,EACxB,MAAA,IAAIpC,GAAWoC,CAAqC,CAC5D,CAGE3J,IAAAA,EAAS8I,GAAerI,EAAMuI,CAAI,EAEtC,GAAIhJ,IAAW,OACb,MAAM,IAAI,MAAM,0BAA0BgJ,CAAI,EAAE,EAG3C,OAAAQ,EAAcA,EAAYxJ,CAAM,EAAIA,CAC7C,EAQO,OAJLmG,IAAS,WACL,MAAMO,GAAkB+C,EAAgBF,CAAS,EACjD,MAAME,EAAe,QAGpBlD,EAAY,CACf,GAAA8C,IAAuB,OAAkB,OAAAA,EACvC,MAAA9C,CAAA,CAEV,CCpEO,SAASqD,IAA2C,CAClD,OAAA3D,EAAO,YAAY,sBAAsB,GAAK,IACvD,CAEO,SAAS4D,IAA4C,CACnD,OAAA5D,EAAO,YAAY,kBAAkB,GAAK,IACnD,CAEO,SAAS6D,IAAoC,CAC7C,OAAAD,MAA6BD,GAAuB,CAC3D,CAEO,SAASG,IAA8B,OAC5C,MAAMC,EAAOF,GAAgB,EACtB,MAAA,CAAC,GAACnK,EAAAqK,GAAA,YAAAA,EAAM,oBAAN,MAAArK,EAAyB,OACpC,CAEO,SAASsK,IAA8B,CAC5C,MAAMD,EAAOF,GAAgB,EAC7B,OAAOE,GAAA,YAAAA,EAAM,QAAS,IACxB,CC1CO,MAAME,EAAqB,CAChC,MACE,8FACF,UAAW,aACb,EAEaC,GAAiBC,GACrBF,EAAmB,MAAM,KAAKE,CAAK,EAG/BC,GAAoB5L,GACxByL,EAAmB,UAAU,KAAKzL,CAAK,EAGnC6L,GAAe,CAE1B,UAAWJ,EAAmB,UAAU,MAC1C,ECGaK,GAA6B,CACxC,MAAO,GACP,iBAAkB,OAClB,sBAAuB,KACvB,uBAAwB,IAC1B,EAQO,SAASC,GAAaC,EAAoC,CAE/D,MAAM9F,EAAO,CAAE,GADFsB,EAAO,YAAY,iBAAiB,GAAKsE,GAC9B,GAAGE,CAAO,EAC3BxE,EAAA,KAAK,kBAAmBtB,CAAI,CACrC,CAOO,SAAS+F,GACdlM,EACuB,CACjB,MAAAiM,EAASxE,EAAO,YAAY,iBAAiB,EACnD,OAAOwE,GAAUjM,KAAOiM,EAASA,EAAOjM,CAAG,EAAI,IACjD,CChCa,MAAAmM,GAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECKpCC,GAAkB,KAElBC,EAAqC,CAChD,eAAgBD,GAChB,kBAAmB,GACnB,2BAA4B,CAC1B,SAAUtI,EAAW,aAAA,CAEzB,EAEawI,GAAiB,SACrB,MAAM3B,EAAgB,CAC3B,mBAAoB0B,EACpB,QAAS,CAAE,OAAQ,MAAO,MAAO,UAAW,EAC5C,KAAM,cACN,MAAOF,GACP,YAAaI,GACb,KAAM,OAAA,CACP,EAGUC,GAAsB,IAAM1M,EAAM,OCtBxC,SAAS2M,GAAoBxK,EAAiC,CACnE,OAAQA,EAAM,CACZ,IAAK,GACH,OAAO6B,EAAW,cACpB,IAAK,GACH,OAAOA,EAAW,cACpB,IAAK,GACH,OAAOA,EAAW,wBACpB,QACE,OAAOA,EAAW,aAAA,CAExB,CAEO,SAASyI,GACdtK,EACa,CACT,GAAA,CAACA,EAAa,OAAAoK,EAEZ,KAAA,CACJ,gBAAAK,EACA,+BAAAC,EACA,+BAAAC,CAAA,EACE3K,EAEG,MAAA,CACL,eAAgByK,GAAmBL,EAAsB,eACzD,kBAAmBM,EACnB,2BAA4B,CAC1B,SAAUF,GAAoBG,CAA8B,CAAA,CAEhE,CACF,CCZa,MAAAC,GAA0B,MACrCjM,GAC0C,aAC1C,MAAMkM,EAAShN,EAAM,OACfiN,IACJ5L,EAAAP,GAAA,YAAAA,EAAO,WAAP,YAAAO,EAAiB,iBAAgBgC,EAAArD,EAAM,SAAN,YAAAqD,EAAc,gBAEjD,GAAI,CAAC2J,EAAc,MAAA,IAAIxD,EACvB,GAAI,CAACyD,EAAmB,MAAA,IAAIhD,GAE5B,KAAM,CAAE,UAAAiD,EAAW,YAAAC,EAAa,IAAAC,IAAQtM,GAAA,YAAAA,EAAO,WAAY,CAAC,EAGtDuM,EACJH,GAAaC,EACT,CACA,UACE,OAAOD,GAAc,SAAW,SAASA,EAAW,EAAE,EAAIA,EAC5D,YAAaC,CAAA,EAEb,OAGA/L,EAAU,CACd,aAAc6L,EACd,GAAIG,GAAO,CAAE,SAAUA,CAAI,EAC3B,GAAIC,GAAU,CACZ,OAAQ,CACN,GAAIA,EAAO,WAAa,CAAE,UAAWA,EAAO,SAAU,EACtD,GAAIA,EAAO,aAAe,CAAE,YAAaA,EAAO,WAAY,CAAA,CAC9D,CAEJ,EAGMC,EAA8B,CAClC,WAAYL,EACZ,QAAQxJ,EAAArC,EAAQ,SAAR,YAAAqC,EAAgB,YACxB,WAAW8J,EAAAnM,EAAQ,SAAR,YAAAmM,EAAgB,UAC3B,SAAUH,CACZ,EAEMI,EAAiB7G,EACrB2G,CACF,EAEA,OAAOzC,EAAgB,CACrB,QAAS,CAAE,UAAW,CAAE,OAAAmC,EAAQ,QAAA5L,EAAU,EAC1C,KAAM,0BACN,MAAOb,GACP,UAAW6G,EAAU,iBACrB,YAAaP,GACb,KAAM,UAAA,CACP,EACE,KAAM4G,GAAe,CACpB,KAAM,CAAE,SAAAC,EAAU,SAAAC,GAAajK,EAAO,UAAU,EAE1CkK,EAAkBD,GAAA,MAAAA,EAAU,cAC9BF,EAAW,OAAOE,EAAS,aAAa,EACxCF,EAEEI,GAAsBD,EAAgB,OAAS,EAC/CJ,GAAiB7G,EACrB2G,CACF,EAEA,IAAIQ,EAAiB,KAErB,GAAID,GAAqB,CACjB,MAAAE,EAAgB3B,GAAS,wBAAwB,EAEvD,IAAI4B,EAAYP,EAAW,KACxBlL,GACCA,EAAO,QAASwL,GAAA,YAAAA,EAAe,OAC/BxL,EAAO,QAAQ,QAASwL,GAAA,YAAAA,EAAe,QAAQ,KACnD,EAEI,CAACC,IAAaN,GAAA,MAAAA,EAAU,0BACdM,EAAAN,EAAS,uBAAuBD,CAAU,GAAK,QAGxDO,IACHA,EAAYP,EAAW,CAAC,GAG1BK,EAAiBlH,GAAwCoH,CAAS,CAAA,CAGpE,OAAArG,EAAO,KAAK,oBAAqB,CAC/B,QAAS6F,GACT,yBAA0BC,EAC1B,eAAAK,EACA,QAAS,EAAA,CACV,EAEMF,CAAA,CACR,EACA,MAAO3F,GAAU,CAChB,MAAAN,EAAO,KAAK,oBAAqB,CAC/B,QAAS6F,EACT,eAAgB,KAChB,yBAA0B,CAAC,EAC3B,QAAS,EAAA,CACV,EAEKvF,CAAA,CACP,CACL,EChIa,CACX,YAAAgG,GACA,sBAAAC,GACA,yBAAAC,GACA,uBAAAC,GACA,aAAAhD,GACA,UAAAiD,EACF,EAAI,IAAIC,GAAa,EAAE,WAAW,ECPrBC,GAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOtCC,CAAsB;AAAA,EAGbC,GAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9CD,CAAsB;AAAA,ECVbE,GAAU,SAAY,CACjC,MAAM1B,EAAShN,EAAM,OACf2O,EAAU3O,EAAM,gBAAkB,GAClCgL,EAAQ2D,EAAUJ,GAAeE,GACjCG,EAAYD,EAAU,CAAE,OAAA3B,GAAW,CAAC,EAE1C,GAAI2B,GAAW,CAAC3B,EAAQ,MAAM,IAAIxD,EAElC,OAAO,MAAMqB,EAAgB,CAC3B,KAAM,QACN,MAAAG,EACA,QAAS,CAAE,OAAQ,OAAQ,MAAO,WAAY,UAAA4D,CAAU,EACxD,KAAM,OACN,YAAatL,CAAA,CACd,CACH,ECxBauL,GAAwC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECKxCC,GAAwB,SAC5B,MAAMjE,EAAgB,CAC3B,mBAAoB,CAAC,EACrB,QAAS,CAAE,OAAQ,MAAO,MAAO,UAAW,EAC5C,KAAM,qBACN,MAAOgE,GACP,YAAa5K,GACb,KAAM,OAAA,CACP,ECbU8K,GAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECKtCC,GAAmB,SACvB,MAAMnE,EAAgB,CAC3B,KAAM,QACN,MAAOkE,GACP,QAAS,CAAE,OAAQ,MAAO,MAAO,UAAW,EAC5C,KAAM,iBACN,YAAapL,GACb,mBAAoB,IAAA,CACrB,ECXUsL,GAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO1CC,EAAiB;AAAA,ECHRC,GAAc,SACpBnP,EAAM,cAEJ,MAAM6K,EAAgB,CAC3B,QAAS,CAAE,OAAQ,MAAO,MAAO,UAAW,EAC5C,KAAM,WACN,MAAOoE,GACP,YAAa9K,GACb,KAAM,OAAA,CACP,EARgC,KCLtBiL,GAAwC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOjDC,CAAyB;AAAA,ECIhBC,GAAqB,MAChCxO,EAAiC,KAC9B,CACG,MAAAyO,EAAUzO,EAAM,KAAOd,EAAM,QAG/B,GAFYA,EAAM,gBAAkB,GAErB,MAAA,IAAI0J,GACvB,GAAI,CAAC6F,EAAe,MAAA,IAAI5F,GAIxB,OAAO,MAAMkB,EAAgB,CAC3B,KAAM,QACN,MAAOuE,GACP,QAAS,CAAE,OAAQ,MAAO,MAAO,WAAY,UAL7B,CAAE,QAAAG,CAAQ,CAK6B,EACvD,KAAM,kBACNrE,YAAAA,CAAA,CACD,CACH,EClBMsE,EAAU,CAAE,MAAO,EAAK,EAEjBC,GAA6B/L,GAAoC,SAC5E,MAAMgM,IAAerM,GAAAhC,EAAAqC,GAAA,YAAAA,EAAQ,WAAR,YAAArC,EAAkB,MAAlB,YAAAgC,EAAuB,SAAU,GA6EtD,MAL8B,CAC5B,CAAC,gBAvEyB,CAACsM,EAAkB,KAAU,WAIvD,GAHAtP,GAAqBsP,CAAe,EAEhC,CAACD,GACDC,EAAiB,OAErB,MAAM5J,GAActC,GAAAJ,GAAAhC,EAAAqC,GAAA,YAAAA,EAAQ,WAAR,YAAArC,EAAkB,MAAlB,YAAAgC,EAAuB,aAAvB,YAAAI,EAAA,KAAAJ,GAChB0C,GACK,OAAA,SAAS,OAAOA,CAAW,CAEtC,EA6DyCyJ,CAAO,EAC9C,GAAIE,EApC6B,CACjC,CACE,0CACCvN,GAAS,aACJ,GAAA,CAACA,EAAK,MAAM,YAAa,CAC3B,MAAMkH,IACJkE,GAAA9J,GAAAJ,GAAAhC,EAAAqC,GAAA,YAAAA,EAAQ,kBAAR,YAAArC,EAAyB,UAAzB,YAAAgC,EAAkC,WAAlC,YAAAI,EAA4C,QAA5C,YAAA8J,EACI,mBACJ,0DACF5F,EAAO,KAAK,iBAAkB,CAC5B,QAAA0B,EACA,KAAMa,EAAW,uBAAA,CAClB,EACD,MAAA,CAGF0F,EAAmBzN,EAAK,KAAK,CAC/B,EACAqN,CACF,EACA,CACE,oCACA,IAAM,aACJ,MAAMnG,IACJkE,GAAA9J,GAAAJ,GAAAhC,EAAAqC,GAAA,YAAAA,EAAQ,kBAAR,YAAArC,EAAyB,UAAzB,YAAAgC,EAAkC,WAAlC,YAAAI,EAA4C,QAA5C,YAAA8J,EAAmD,YACnD,qEACF5F,EAAO,KAAK,iBAAkB,CAC5B,QAAA0B,EACA,KAAMa,EAAW,gBAAA,CAClB,CAAA,CACH,CAEJ,EAxDkC,CAChC,CAAC,mBAAoB0F,EAAoBJ,CAAO,EAChD,CAAC,aAAcK,EAAa,EAC5B,CAAC,eAAgBC,EAAmB,EACpC,CACE,mBACCC,GAAkC,aAC7B,GAAAA,EAAY,QAAa,IAEzB,CAACA,EAAY,4BAA4B,EAAG,CAC9C,MAAM1G,IACJkE,GAAA9J,GAAAJ,GAAAhC,EAAAqC,GAAA,YAAAA,EAAQ,kBAAR,YAAArC,EAAyB,UAAzB,YAAAgC,EAAkC,WAAlC,YAAAI,EAA4C,cAA5C,YAAA8J,EACI,mBACJ,qGACF5F,EAAO,KAAK,iBAAkB,CAC5B,QAAA0B,EACA,KAAMa,EAAW,iBAAA,CAClB,CAAA,CAEL,EACAsF,CAAA,CAEJ,CAuCA,EAEiB,IAAI,CAAC,CAACQ,EAAW7H,EAASnD,CAAO,IACzC2C,EAAO,GAAGqI,EAAW7H,EAASnD,CAAO,CAC7C,CACH,ECrFMiL,GAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EAClCV,GAAUU,GAAI,aAAa,IAAI,SAAS,EAC9CjQ,EAAM,QAAUuP,GAwBH,MAAAW,GAAa,IAAIC,GAAyB,CACrD,KAAM,MAAOC,EAAU,KAAO,CAC5BF,GAAW,OAAO,UAChBjL,GACE,CACE,SAAU,CACR,iBAAkB,GAClB,uBAAyBD,GAChBA,EAAQ,OAAS,EAAIA,EAAQ,CAAC,EAAI,IAE7C,EACA,SAAU,CACR,IAAK,CAAE,OAAQ,EAAM,CAAA,CAEzB,EACAoL,CAAA,CAEJ,CACF,EACA,UAAWX,EACb,CAAC,EAEY/L,EAASwM,GAAW,OCpDpBG,GACXvP,GAEO,OAAQA,ECAXwP,GAAiB,MAAOxP,GAAwC,CAChE,GAAA,CACE,OAAAuP,GAAYvP,CAAK,GACnBd,EAAM,OAASc,EAAM,GACrBd,EAAM,QAAU,KACR,MAAM0O,MAAc,OAE9B1O,EAAM,OAAS,KACfA,EAAM,QAAUc,EAAM,IACd,MAAMwO,MAAyB,YAChCrH,EAAO,CACN,eAAA,MAAM,kCAAmCA,CAAK,EAC/C,IAAA,CAEX,EAEa2H,EAAqB,MAAO9O,GAA2B,CAClE,GAAId,EAAM,YAAa,CACrB,MAAM8P,GAAoBhP,CAAK,EAC/B,MAAA,CAGGd,EAAM,SACHA,EAAA,OAAS,MAAMwM,GAAe,GAGtC,MAAM+D,EAAczP,EAAQ,MAAMwP,GAAexP,CAAK,EAAI,KAE1Dd,EAAM,YAAc,GACb2H,EAAA,KAAK,uBAAwB4I,CAAW,CACjD,ECxCaC,GAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECMtCC,GAAmB,MAC9B3E,GAC+B,CAC/B,GAAI,CAACA,EAAa,MAAA,IAAIlC,GAEtB,OAAO,MAAMiB,EAAgB,CAC3B,QAAS,CAAE,OAAQ,MAAO,MAAO,WAAY,UAAW,CAAE,MAAAiB,EAAQ,EAClE,KAAM,mBACN,MAAO0E,GACP,YAAapM,GACb,KAAM,OAAA,CACP,CACH,ECfayL,GAAgB,IAAM,CAC5B7P,EAAM,cACXA,EAAM,OAAS,KACfA,EAAM,QAAU,KACT2H,EAAA,KAAK,mBAAoB,IAAI,EACtC,ECNa+I,GAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAczDlC,CAAsB;AAAA,ECdbmC,GAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc1DtB,CAAyB;AAAA,ECbhBuB,EAAyB,IAAM,CACpC,KAAA,CAAE,OAAA5D,EAAQ,QAAAuC,CAAA,EAAYvP,EAC5B,GAAI,CAACgN,GAAU,CAACuC,EAAS,MAAM,IAAI9F,EACrC,ECWMoH,EAA6B,CACjCC,EACAC,EACAC,EACA9F,EACA+F,EACAvG,IAEO,MACL5J,GAEO,MAAM+J,EAAgB,CAC3B,KAAM,WACN,MAAOmG,EACP,QAAS,CACP,UAAW,CACT,CAACD,CAAS,EAAGD,EACb,eAAgBG,EAAenQ,CAAK,CAAA,CAExC,EACA,KAAA4J,EACA,UAAWtD,EAAU,QACrB,YAAA8D,CAAA,CACD,EAICgG,GAAyB,CAAC,CAC9B,QAAA9P,EACA,kBAAAI,EACA,mBAAAI,EACA,eAAAE,EAAiB,EACnB,IAAgC,CAC1B,GAAA,CAACN,GAAqBI,EAClB,MAAA,IAAIwH,EAAa,qCAAqC,EAG9D,GAAI,CAACtH,GAAkB,CAACN,GAAqB,CAACJ,EAC5C,MAAM,IAAI4I,EAEd,EAEMmH,GAA0B,CAAC,CAC/B,QAAA/P,EACA,kBAAAI,EACA,mBAAAI,EACA,eAAAE,EAAiB,EACnB,IAAgC,CAC1B,GAAA,CAACF,GAAsBJ,EACnB,MAAA,IAAI4H,EAAa,oCAAoC,EAG7D,GAAI,CAACtH,GAAkB,CAACF,GAAsB,CAACR,EAC7C,MAAM,IAAI4I,EAEd,EAEMoH,GAAsBtQ,GAAoC,CACxD,MAAAuQ,EAAS,EAAQrR,EAAM,OACvBsR,EAAU,EAAQtR,EAAM,QAE1BqR,EACFH,GAAuBpQ,CAAK,EACnBwQ,GACTH,GAAwBrQ,CAAK,CAEjC,EAEayQ,GAAoB,MAAOzQ,IACf8P,EAAA,EACvBQ,GAAmBtQ,CAAK,EAsBjB,MApBQ,EAAQd,EAAM,OAGzB6Q,EACE7Q,EAAM,OACN,SACA0Q,GACApN,EACAzB,GACA,8BAAA,EAEFgP,EACE7Q,EAAM,QACN,UACA2Q,GACAtM,EACArC,GACA,wCACF,GAEgBlB,CAAK,GC3Gd0Q,GAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAS/ChD,CAAsB;AAAA,ECJbiD,GAAsB,MAAO3F,GAAkB,CAC1D,MAAMkB,EAAShN,EAAM,OAErB,GAAI,CAACgN,EAAc,MAAA,IAAIxD,EAEvB,OAAO,MAAMqB,EAAgB,CAC3B,QAAS,CAAE,UAAW,CAAE,OAAAmC,EAAQ,MAAAlB,EAAQ,EACxC,KAAM,2BACN,MAAO0F,GACP,UAAWpK,EAAU,QACrB,YAAa9D,EACb,KAAM,UAAA,CACP,CACH,EClBaoO,GAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcxDlD,CAAsB;AAAA,ECdbmD,GAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAczDtC,CAAyB;AAAA,ECCvBuC,EAA4B,CAChCd,EACAC,EACAC,EACA9F,EACA+F,EACAvG,IAEO,MACL5J,GAEO,MAAM+J,EAAgB,CAC3B,KAAM,WACN,MAAOmG,EACP,QAAS,CACP,UAAW,CACT,CAACD,CAAS,EAAGD,EACb,MAAOG,EAAenQ,CAAK,CAAA,CAE/B,EACA,KAAA4J,EACA,UAAWtD,EAAU,QACrB,YAAA8D,CAAA,CACD,EAIC2G,GAA8B/Q,GAAmC,CACjE,GAAA,CAACA,EAAM,KACT,MAAM,IAAI+I,EAEd,EAEaiI,GAAmB,MAAOhR,IACd8P,EAAA,EACvBiB,GAA2B/Q,CAAK,EAsBzB,MApBQ,EAAQd,EAAM,OAGzB4R,EACE5R,EAAM,OACN,SACA0R,GACApO,EACA7C,GACA,6BAAA,EAEFmR,EACE5R,EAAM,QACN,UACA2R,GACAtN,EACAzD,GACA,uCACF,GAEgBE,CAAK,GCxEdiR,GAAgE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBzEvD,CAAsB;AAAA,ECtBbwD,GAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc1DxD,CAAsB;AAAA,ECdbyD,GAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3D5C,CAAyB;AAAA,ECdhB6C,GAAiE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAyB1E7C,CAAyB;AAAA,ECRvB6B,GAAyB,CAAC,CAC9B,QAAA9P,EACA,kBAAAI,EACA,mBAAAI,EACA,mBAAAH,CACF,IAAiC,CAC3B,GAAA,CAACD,GAAqBI,EAClB,MAAA,IAAIwH,EAAa,qCAAqC,EAG9D,GAAI,CAAC5H,GAAqB,CAACC,GAAsB,CAACL,EAChD,MAAM,IAAI0I,EAEd,EAEMqH,GAA0B,CAAC,CAC/B,QAAA/P,EACA,kBAAAI,EACA,mBAAAI,EACA,mBAAAH,CACF,IAAiC,CAC/B,GAAIA,EACI,MAAA,IAAI2H,EAAa,4CAA4C,EAGjE,GAAA,CAACxH,GAAsBJ,EACnB,MAAA,IAAI4H,EAAa,8CAA8C,EAGnE,GAAA,CAACxH,GAAsB,CAACR,EAC1B,MAAM,IAAI0I,EAEd,EAEMsH,GAAsBtQ,GAAqC,CACzD,MAAAuQ,EAAS,EAAQrR,EAAM,OACvBsR,EAAU,EAAQtR,EAAM,QAE1BqR,EACFH,GAAuBpQ,CAAK,EACnBwQ,GACTH,GAAwBrQ,CAAK,CAEjC,EAEMqR,EAA8B,CAClCrB,EACAC,EACAC,EACA9F,EACA+F,EACAvG,IAEO,MACL5J,GAEO,MAAM+J,EAAgB,CAC3B,KAAM,WACN,MAAOmG,EACP,QAAS,CACP,UAAW,CACT,CAACD,CAAS,EAAGD,EACb,gBAAiBG,EAAenQ,CAAK,CAAA,CAEzC,EACA,KAAA4J,EACA,UAAWtD,EAAU,QACrB,YAAA8D,CAAA,CACD,EAIQkH,GAAqB,MAAOtR,GAAqC,CACrD8P,EAAA,EACvBQ,GAAmBtQ,CAAK,EAExB,KAAM,CAAE,SAAA4M,CAAA,EAAahK,EAAO,UAAU,EAEhC2O,EACJjG,GAAS,kBAAkB,IAAKsB,GAAA,YAAAA,EAAU,kBA8BrC,OAAA,MA5BQ,EAAQ1N,EAAM,OAGzBmS,EACEnS,EAAM,OACN,SACAqS,EACIN,GACAC,GACJ1O,EACA/B,GACA8Q,EACI,+BACA,iCAAA,EAENF,EACEnS,EAAM,QACN,UACAqS,EACIH,GACAD,GACJ5N,EACA1C,GACA0Q,EACI,yCACA,yCACN,GAEgBvR,CAAK,CAC3B,EC/HawR,GAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc1D9D,CAAsB;AAAA,ECdb+D,GAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3DlD,CAAyB;AAAA,ECAvBmD,EAA8B,CAClC1B,EACAC,EACAC,EACA9F,EACAR,IAEO,MACL5J,GAEO,MAAM+J,EAAgB,CAC3B,KAAM,WACN,MAAOmG,EACP,UAAW5J,EAAU,QACrB,QAAS,CACP,UAAW,CACT,CAAC2J,CAAS,EAAGD,EACb,gBAAiB5P,GAAmCJ,CAAK,CAAA,CAE7D,EACA,KAAA4J,EACA,YAAAQ,CAAA,CACD,EAICkG,GAAsBtQ,GAA2C,CACrE,GAAI,CAAC,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EAC5C,MAAM,IAAIiJ,EAEd,EAEa0I,GAAqB,MAChC3R,IAEuB8P,EAAA,EACvBQ,GAAmBtQ,CAAK,EAoBjB,MAlBQ,EAAQd,EAAM,OAGzBwS,EACExS,EAAM,OACN,SACAsS,GACAhP,EACA,+BAAA,EAEFkP,EACExS,EAAM,QACN,UACAuS,GACAlO,EACA,yCACF,GAEgBvD,CAAK,GC9DrB4R,GAAsB,MAAO5R,GAAyC,CACtE,GAAA,CACE,OAAAuP,GAAYvP,CAAK,GACnBd,EAAM,OAASc,EAAM,GACrBd,EAAM,QAAU,KACR,MAAM0O,MAAc,OAE9B1O,EAAM,OAAS,KACfA,EAAM,QAAUc,EAAM,IACd,MAAMwO,MAAyB,YAChCrH,EAAO,CACN,eAAA,MAAM,mCAAoCA,CAAK,EAChD,IAAA,CAEX,EAEa6H,GAAsB,MAAO3N,GAA2B,CACnE,GAAI,CAACnC,EAAM,YAAa,OAAO4P,EAAmBzN,CAAI,EAEtD,GAAIA,IAAS,KAAM,CACH0N,GAAA,EACd,MAAA,CAGI,MAAA8C,EAAS,MAAMD,GAAoBvQ,CAAI,EAEtCwF,EAAA,KAAK,mBAAoBgL,CAAM,CACxC","x_google_ignoreList":[18,19]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as h}from"@dropins/tools/preact-jsx-runtime.js";import{useState as a,useCallback as r,useEffect as c}from"@dropins/tools/preact-compat.js";import{c as j}from"./components.js";import"@dropins/tools/components.js";import{s as i,getCompanyCredit as k}from"../
|
|
3
|
+
import{jsx as h}from"@dropins/tools/preact-jsx-runtime.js";import{useState as a,useCallback as r,useEffect as c}from"@dropins/tools/preact-compat.js";import{c as j}from"./components.js";import"@dropins/tools/components.js";import{s as i,getCompanyCredit as k}from"../api.js";import"@dropins/tools/lib.js";import{events as y}from"@dropins/tools/event-bus.js";const G=({initialReferenceNumber:v="",onReferenceNumberChange:n,onReferenceNumberBlur:s,...A})=>{const[I,q]=a(!1),[C,l]=a(null),[x,u]=a(null),[z,P]=a(v),m=i.authenticated,f=!!i.cartId,d=!!i.quoteId,p=r(t=>{var e;u(((e=t==null?void 0:t.total)==null?void 0:e.includingTax)||null)},[]),g=r(t=>{var e,o;u(((o=(e=t==null?void 0:t.quote)==null?void 0:e.prices)==null?void 0:o.grandTotal)||null)},[]),T=r(t=>{const o=t.target.value;P(o),n==null||n(o)},[n]),O=r(t=>{const o=t.target.value;s==null||s(o)},[s]);return c(()=>{if(!f)return;const t=y.on("cart/data",p,{eager:!0});return()=>{t==null||t.off()}},[f,p]),c(()=>{if(!d)return;const t=y.on("quote-management/quote-data",g,{eager:!0});return()=>{t==null||t.off()}},[d,g]),c(()=>{m&&k().then(t=>{l(t)}).catch(t=>{console.error("Failed to fetch company credit:",t),l(null)}).finally(()=>{q(!0)})},[m]),h("div",{...A,children:h(j,{companyCredit:C,initialized:I,referenceNumber:z,totalAmount:x,onReferenceNumberBlur:O,onReferenceNumberChange:T})})};export{G as P};
|
|
4
4
|
//# sourceMappingURL=PaymentOnAccount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentOnAccount.js","sources":["/@dropins/storefront-checkout/src/containers/PaymentOnAccount/PaymentOnAccount.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { PaymentOnAccount as PaymentOnAccountComponent } from '@/checkout/components/PaymentOnAccount';\nimport { Money, CompanyCredit } from '@/checkout/data/models';\nimport { getCompanyCredit } from '@/checkout/api';\nimport { events } from '@adobe-commerce/event-bus';\nimport { state } from '@/checkout/lib';\nimport { CartModel, NegotiableQuoteModel } from '@/checkout/types/storefront';\n\nexport interface PaymentOnAccountProps extends HTMLAttributes<HTMLDivElement> {\n initialReferenceNumber?: string;\n onReferenceNumberChange?: (referenceNumber: string) => void;\n onReferenceNumberBlur?: (referenceNumber: string) => void;\n}\n\nexport const PaymentOnAccount: Container<PaymentOnAccountProps> = ({\n initialReferenceNumber = '',\n onReferenceNumberChange,\n onReferenceNumberBlur,\n ...props\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [companyCredit, setCompanyCredit] = useState<CompanyCredit | null>(\n null\n );\n const [totalAmount, setTotalAmount] = useState<Money | null>(null);\n const [referenceNumber, setReferenceNumber] = useState<string>(\n initialReferenceNumber\n );\n\n const isAuthenticated = state.authenticated;\n const hasCartRef = Boolean(state.cartId);\n const hasQuoteRef = Boolean(state.quoteId);\n\n const handleCartData = useCallback((data: CartModel | null) => {\n setTotalAmount(data?.total?.includingTax || null);\n }, []);\n\n const handleQuoteData = useCallback(\n (data: { quote: NegotiableQuoteModel }) => {\n setTotalAmount(data?.quote?.prices?.grandTotal || null);\n },\n []\n );\n\n const handleReferenceNumberChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n setReferenceNumber(value);\n onReferenceNumberChange?.(value);\n },\n [onReferenceNumberChange]\n );\n\n const handleReferenceNumberBlur = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n onReferenceNumberBlur?.(value);\n },\n [onReferenceNumberBlur]\n );\n\n useEffect(() => {\n if (!hasCartRef) return;\n\n // @ts-ignore\n const onCartData = events.on('cart/data', handleCartData, { eager: true });\n\n return () => {\n onCartData?.off();\n };\n }, [hasCartRef, handleCartData]);\n\n useEffect(() => {\n if (!hasQuoteRef) return;\n\n const onQuoteData = events.on(\n 'quote-management/quote-data',\n handleQuoteData,\n { eager: true }\n );\n\n return () => {\n onQuoteData?.off();\n };\n }, [hasQuoteRef, handleQuoteData]);\n\n useEffect(() => {\n if (!isAuthenticated) return;\n\n getCompanyCredit()\n .then((credit) => {\n setCompanyCredit(credit);\n })\n .catch((error) => {\n console.error('Failed to fetch company credit:', error);\n setCompanyCredit(null);\n })\n .finally(() => {\n setIsInitialized(true);\n });\n }, [isAuthenticated]);\n\n return (\n <div {...props}>\n <PaymentOnAccountComponent\n companyCredit={companyCredit}\n initialized={isInitialized}\n referenceNumber={referenceNumber}\n totalAmount={totalAmount}\n onReferenceNumberBlur={handleReferenceNumberBlur}\n onReferenceNumberChange={handleReferenceNumberChange}\n />\n </div>\n );\n};\n"],"names":["PaymentOnAccount","initialReferenceNumber","onReferenceNumberChange","onReferenceNumberBlur","props","isInitialized","setIsInitialized","useState","companyCredit","setCompanyCredit","totalAmount","setTotalAmount","referenceNumber","setReferenceNumber","isAuthenticated","state","hasCartRef","hasQuoteRef","handleCartData","useCallback","data","_a","handleQuoteData","_b","handleReferenceNumberChange","event","value","handleReferenceNumberBlur","useEffect","onCartData","events","onQuoteData","getCompanyCredit","credit","error","jsx","PaymentOnAccountComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PaymentOnAccount.js","sources":["/@dropins/storefront-checkout/src/containers/PaymentOnAccount/PaymentOnAccount.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from 'preact/compat';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { PaymentOnAccount as PaymentOnAccountComponent } from '@/checkout/components/PaymentOnAccount';\nimport { Money, CompanyCredit } from '@/checkout/data/models';\nimport { getCompanyCredit } from '@/checkout/api';\nimport { events } from '@adobe-commerce/event-bus';\nimport { state } from '@/checkout/lib';\nimport { CartModel, NegotiableQuoteModel } from '@/checkout/types/storefront';\n\nexport interface PaymentOnAccountProps extends HTMLAttributes<HTMLDivElement> {\n initialReferenceNumber?: string;\n onReferenceNumberChange?: (referenceNumber: string) => void;\n onReferenceNumberBlur?: (referenceNumber: string) => void;\n}\n\nexport const PaymentOnAccount: Container<PaymentOnAccountProps> = ({\n initialReferenceNumber = '',\n onReferenceNumberChange,\n onReferenceNumberBlur,\n ...props\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [companyCredit, setCompanyCredit] = useState<CompanyCredit | null>(\n null\n );\n const [totalAmount, setTotalAmount] = useState<Money | null>(null);\n const [referenceNumber, setReferenceNumber] = useState<string>(\n initialReferenceNumber\n );\n\n const isAuthenticated = state.authenticated;\n const hasCartRef = Boolean(state.cartId);\n const hasQuoteRef = Boolean(state.quoteId);\n\n const handleCartData = useCallback((data: CartModel | null) => {\n setTotalAmount(data?.total?.includingTax || null);\n }, []);\n\n const handleQuoteData = useCallback(\n (data: { quote: NegotiableQuoteModel }) => {\n setTotalAmount(data?.quote?.prices?.grandTotal || null);\n },\n []\n );\n\n const handleReferenceNumberChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n setReferenceNumber(value);\n onReferenceNumberChange?.(value);\n },\n [onReferenceNumberChange]\n );\n\n const handleReferenceNumberBlur = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n onReferenceNumberBlur?.(value);\n },\n [onReferenceNumberBlur]\n );\n\n useEffect(() => {\n if (!hasCartRef) return;\n\n // @ts-ignore\n const onCartData = events.on('cart/data', handleCartData, { eager: true });\n\n return () => {\n onCartData?.off();\n };\n }, [hasCartRef, handleCartData]);\n\n useEffect(() => {\n if (!hasQuoteRef) return;\n\n const onQuoteData = events.on(\n 'quote-management/quote-data',\n handleQuoteData,\n { eager: true }\n );\n\n return () => {\n onQuoteData?.off();\n };\n }, [hasQuoteRef, handleQuoteData]);\n\n useEffect(() => {\n if (!isAuthenticated) return;\n\n getCompanyCredit()\n .then((credit) => {\n setCompanyCredit(credit);\n })\n .catch((error) => {\n console.error('Failed to fetch company credit:', error);\n setCompanyCredit(null);\n })\n .finally(() => {\n setIsInitialized(true);\n });\n }, [isAuthenticated]);\n\n return (\n <div {...props}>\n <PaymentOnAccountComponent\n companyCredit={companyCredit}\n initialized={isInitialized}\n referenceNumber={referenceNumber}\n totalAmount={totalAmount}\n onReferenceNumberBlur={handleReferenceNumberBlur}\n onReferenceNumberChange={handleReferenceNumberChange}\n />\n </div>\n );\n};\n"],"names":["PaymentOnAccount","initialReferenceNumber","onReferenceNumberChange","onReferenceNumberBlur","props","isInitialized","setIsInitialized","useState","companyCredit","setCompanyCredit","totalAmount","setTotalAmount","referenceNumber","setReferenceNumber","isAuthenticated","state","hasCartRef","hasQuoteRef","handleCartData","useCallback","data","_a","handleQuoteData","_b","handleReferenceNumberChange","event","value","handleReferenceNumberBlur","useEffect","onCartData","events","onQuoteData","getCompanyCredit","credit","error","jsx","PaymentOnAccountComponent"],"mappings":"sWAqCO,MAAMA,EAAqD,CAAC,CACjE,uBAAAC,EAAyB,GACzB,wBAAAC,EACA,sBAAAC,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAS,EAAK,EAClD,CAACC,EAAeC,CAAgB,EAAIF,EACxC,IACF,EACM,CAACG,EAAaC,CAAc,EAAIJ,EAAuB,IAAI,EAC3D,CAACK,EAAiBC,CAAkB,EAAIN,EAC5CN,CACF,EAEMa,EAAkBC,EAAM,cACxBC,EAAa,EAAQD,EAAM,OAC3BE,EAAc,EAAQF,EAAM,QAE5BG,EAAiBC,EAAaC,GAA2B,OAC9CT,IAAAU,EAAAD,GAAA,YAAAA,EAAM,QAAN,YAAAC,EAAa,eAAgB,IAAI,CAClD,EAAG,EAAE,EAECC,EAAkBH,EACrBC,GAA0C,SACzCT,IAAeY,GAAAF,EAAAD,GAAA,YAAAA,EAAM,QAAN,YAAAC,EAAa,SAAb,YAAAE,EAAqB,aAAc,IAAI,CACxD,EACA,CAAA,CACF,EAEMC,EAA8BL,EACjCM,GAAiB,CAEhB,MAAMC,EADSD,EAAM,OACA,MACrBZ,EAAmBa,CAAK,EACxBxB,GAAA,MAAAA,EAA0BwB,EAC5B,EACA,CAACxB,CAAuB,CAC1B,EAEMyB,EAA4BR,EAC/BM,GAAiB,CAEhB,MAAMC,EADSD,EAAM,OACA,MACrBtB,GAAA,MAAAA,EAAwBuB,EAC1B,EACA,CAACvB,CAAqB,CACxB,EAEA,OAAAyB,EAAU,IAAM,CACd,GAAI,CAACZ,EAAY,OAGX,MAAAa,EAAaC,EAAO,GAAG,YAAaZ,EAAgB,CAAE,MAAO,GAAM,EAEzE,MAAO,IAAM,CACXW,GAAA,MAAAA,EAAY,KACd,CAAA,EACC,CAACb,EAAYE,CAAc,CAAC,EAE/BU,EAAU,IAAM,CACd,GAAI,CAACX,EAAa,OAElB,MAAMc,EAAcD,EAAO,GACzB,8BACAR,EACA,CAAE,MAAO,EAAK,CAChB,EAEA,MAAO,IAAM,CACXS,GAAA,MAAAA,EAAa,KACf,CAAA,EACC,CAACd,EAAaK,CAAe,CAAC,EAEjCM,EAAU,IAAM,CACTd,GAEYkB,EAAA,EACd,KAAMC,GAAW,CAChBxB,EAAiBwB,CAAM,CAAA,CACxB,EACA,MAAOC,GAAU,CACR,QAAA,MAAM,kCAAmCA,CAAK,EACtDzB,EAAiB,IAAI,CAAA,CACtB,EACA,QAAQ,IAAM,CACbH,EAAiB,EAAI,CAAA,CACtB,CAAA,EACF,CAACQ,CAAe,CAAC,EAGlBqB,EAAC,MAAK,CAAA,GAAG/B,EACP,SAAA+B,EAACC,EAAA,CACC,cAAA5B,EACA,YAAaH,EACb,gBAAAO,EACA,YAAAF,EACA,sBAAuBiB,EACvB,wBAAyBH,CAAA,CAAA,EAE7B,CAEJ"}
|
package/chunks/PurchaseOrder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as b}from"@dropins/tools/preact-jsx-runtime.js";import{b as P}from"./components.js";import"@dropins/tools/lib.js";import"@dropins/tools/components.js";import{
|
|
3
|
+
import{jsx as b}from"@dropins/tools/preact-jsx-runtime.js";import{b as P}from"./components.js";import"@dropins/tools/lib.js";import"@dropins/tools/components.js";import{useState as d,useCallback as e}from"@dropins/tools/preact-compat.js";import"@dropins/tools/preact-hooks.js";import{v as k}from"../api.js";import{useText as x}from"@dropins/tools/i18n.js";const T=({initialReferenceNumber:l="",onReferenceNumberChange:a,onReferenceNumberBlur:o,...u})=>{const[v,m]=d(""),[p,g]=d(l),{missingRefNumberError:i}=x({missingRefNumberError:"Checkout.PurchaseOrder.missingReferenceNumberError"}),c=e(t=>{const s=k(t);m(s?"":i)},[i]),n=e(t=>{m(t.valid?"":i)},[i]),f=e(t=>{const r=t.target.value;g(r),c(r),a==null||a(r)},[a,c]),h=e(t=>{const r=t.target.value;c(r),o==null||o(r)},[o,c]),E=e(t=>{const s=t.target;n(s.validity)},[n]);return b(P,{...u,error:v,referenceNumber:p,onInvalidReferenceNumber:E,onReferenceNumberBlur:h,onReferenceNumberChange:f})};export{T as P};
|
|
4
4
|
//# sourceMappingURL=PurchaseOrder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PurchaseOrder.js","sources":["/@dropins/storefront-checkout/src/containers/PurchaseOrder/PurchaseOrder.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrder as PurchaseOrderComponent } from '@/checkout/components';\nimport { validateNotEmpty } from '@/checkout/lib/validation';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes, useCallback, useState } from 'preact/compat';\n\nexport interface PurchaseOrderProps extends HTMLAttributes<HTMLFormElement> {\n initialReferenceNumber?: string;\n onReferenceNumberChange?: (referenceNumber: string) => void;\n onReferenceNumberBlur?: (referenceNumber: string) => void;\n}\n\nexport const PurchaseOrder: Container<PurchaseOrderProps> = ({\n initialReferenceNumber = '',\n onReferenceNumberChange,\n onReferenceNumberBlur,\n ...props\n}) => {\n const [error, setError] = useState<string>('');\n const [referenceNumber, setReferenceNumber] = useState<string>(\n initialReferenceNumber\n );\n\n const { missingRefNumberError } = useText({\n missingRefNumberError: 'Checkout.PurchaseOrder.missingReferenceNumberError',\n });\n\n const validateRefNumber = useCallback(\n (value: string) => {\n const isMissing = validateNotEmpty(value);\n setError(isMissing ? '' : missingRefNumberError);\n },\n [missingRefNumberError]\n );\n\n const checkValidity = useCallback(\n (validity: ValidityState) => {\n setError(validity.valid ? '' : missingRefNumberError);\n },\n [missingRefNumberError]\n );\n\n const handleReferenceNumberChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n setReferenceNumber(value);\n validateRefNumber(value);\n onReferenceNumberChange?.(value);\n },\n [onReferenceNumberChange, validateRefNumber]\n );\n\n const handleReferenceNumberBlur = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n validateRefNumber(value);\n onReferenceNumberBlur?.(value);\n },\n [onReferenceNumberBlur, validateRefNumber]\n );\n\n const handleInvalidReferenceNumber = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n checkValidity(target.validity);\n },\n [checkValidity]\n );\n\n return (\n <PurchaseOrderComponent\n {...props}\n error={error}\n referenceNumber={referenceNumber}\n onInvalidReferenceNumber={handleInvalidReferenceNumber}\n onReferenceNumberBlur={handleReferenceNumberBlur}\n onReferenceNumberChange={handleReferenceNumberChange}\n />\n );\n};\n"],"names":["PurchaseOrder","initialReferenceNumber","onReferenceNumberChange","onReferenceNumberBlur","props","error","setError","useState","referenceNumber","setReferenceNumber","missingRefNumberError","useText","validateRefNumber","useCallback","value","isMissing","validateNotEmpty","checkValidity","validity","handleReferenceNumberChange","event","handleReferenceNumberBlur","handleInvalidReferenceNumber","target","jsx","PurchaseOrderComponent"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PurchaseOrder.js","sources":["/@dropins/storefront-checkout/src/containers/PurchaseOrder/PurchaseOrder.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrder as PurchaseOrderComponent } from '@/checkout/components';\nimport { validateNotEmpty } from '@/checkout/lib/validation';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { HTMLAttributes, useCallback, useState } from 'preact/compat';\n\nexport interface PurchaseOrderProps extends HTMLAttributes<HTMLFormElement> {\n initialReferenceNumber?: string;\n onReferenceNumberChange?: (referenceNumber: string) => void;\n onReferenceNumberBlur?: (referenceNumber: string) => void;\n}\n\nexport const PurchaseOrder: Container<PurchaseOrderProps> = ({\n initialReferenceNumber = '',\n onReferenceNumberChange,\n onReferenceNumberBlur,\n ...props\n}) => {\n const [error, setError] = useState<string>('');\n const [referenceNumber, setReferenceNumber] = useState<string>(\n initialReferenceNumber\n );\n\n const { missingRefNumberError } = useText({\n missingRefNumberError: 'Checkout.PurchaseOrder.missingReferenceNumberError',\n });\n\n const validateRefNumber = useCallback(\n (value: string) => {\n const isMissing = validateNotEmpty(value);\n setError(isMissing ? '' : missingRefNumberError);\n },\n [missingRefNumberError]\n );\n\n const checkValidity = useCallback(\n (validity: ValidityState) => {\n setError(validity.valid ? '' : missingRefNumberError);\n },\n [missingRefNumberError]\n );\n\n const handleReferenceNumberChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n setReferenceNumber(value);\n validateRefNumber(value);\n onReferenceNumberChange?.(value);\n },\n [onReferenceNumberChange, validateRefNumber]\n );\n\n const handleReferenceNumberBlur = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n validateRefNumber(value);\n onReferenceNumberBlur?.(value);\n },\n [onReferenceNumberBlur, validateRefNumber]\n );\n\n const handleInvalidReferenceNumber = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n checkValidity(target.validity);\n },\n [checkValidity]\n );\n\n return (\n <PurchaseOrderComponent\n {...props}\n error={error}\n referenceNumber={referenceNumber}\n onInvalidReferenceNumber={handleInvalidReferenceNumber}\n onReferenceNumberBlur={handleReferenceNumberBlur}\n onReferenceNumberChange={handleReferenceNumberChange}\n />\n );\n};\n"],"names":["PurchaseOrder","initialReferenceNumber","onReferenceNumberChange","onReferenceNumberBlur","props","error","setError","useState","referenceNumber","setReferenceNumber","missingRefNumberError","useText","validateRefNumber","useCallback","value","isMissing","validateNotEmpty","checkValidity","validity","handleReferenceNumberChange","event","handleReferenceNumberBlur","handleInvalidReferenceNumber","target","jsx","PurchaseOrderComponent"],"mappings":"oWA6BO,MAAMA,EAA+C,CAAC,CAC3D,uBAAAC,EAAyB,GACzB,wBAAAC,EACA,sBAAAC,EACA,GAAGC,CACL,IAAM,CACJ,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAiB,EAAE,EACvC,CAACC,EAAiBC,CAAkB,EAAIF,EAC5CN,CACF,EAEM,CAAE,sBAAAS,CAAsB,EAAIC,EAAQ,CACxC,sBAAuB,oDAAA,CACxB,EAEKC,EAAoBC,EACvBC,GAAkB,CACX,MAAAC,EAAYC,EAAiBF,CAAK,EAC/BR,EAAAS,EAAY,GAAKL,CAAqB,CACjD,EACA,CAACA,CAAqB,CACxB,EAEMO,EAAgBJ,EACnBK,GAA4B,CAClBZ,EAAAY,EAAS,MAAQ,GAAKR,CAAqB,CACtD,EACA,CAACA,CAAqB,CACxB,EAEMS,EAA8BN,EACjCO,GAAiB,CAEhB,MAAMN,EADSM,EAAM,OACA,MACrBX,EAAmBK,CAAK,EACxBF,EAAkBE,CAAK,EACvBZ,GAAA,MAAAA,EAA0BY,EAC5B,EACA,CAACZ,EAAyBU,CAAiB,CAC7C,EAEMS,EAA4BR,EAC/BO,GAAiB,CAEhB,MAAMN,EADSM,EAAM,OACA,MACrBR,EAAkBE,CAAK,EACvBX,GAAA,MAAAA,EAAwBW,EAC1B,EACA,CAACX,EAAuBS,CAAiB,CAC3C,EAEMU,EAA+BT,EAClCO,GAAiB,CAChB,MAAMG,EAASH,EAAM,OACrBH,EAAcM,EAAO,QAAQ,CAC/B,EACA,CAACN,CAAa,CAChB,EAGE,OAAAO,EAACC,EAAA,CACE,GAAGrB,EACJ,MAAAC,EACA,gBAAAG,EACA,yBAA0Bc,EAC1B,sBAAuBD,EACvB,wBAAyBF,CAAA,CAC3B,CAEJ"}
|