@ikas/bp-storefront 1.4.0-beta.23 → 1.4.0-beta.230

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.
Files changed (137) hide show
  1. package/dist/analytics/analytics-functions/addToCart.js +1 -1
  2. package/dist/analytics/analytics-functions/addToWishlist.js +1 -1
  3. package/dist/analytics/analytics-functions/completeRegistration.js +1 -1
  4. package/dist/analytics/analytics-functions/contactForm.js +1 -1
  5. package/dist/analytics/analytics-functions/createEmailSubscription.js +1 -1
  6. package/dist/analytics/analytics-functions/customerLogin.js +1 -1
  7. package/dist/analytics/analytics-functions/customerLogout.js +1 -1
  8. package/dist/analytics/analytics-functions/customerVisit.js +1 -1
  9. package/dist/analytics/analytics-functions/pageView.js +1 -1
  10. package/dist/analytics/analytics-functions/productView.js +1 -1
  11. package/dist/analytics/analytics-functions/removeFromCart.js +1 -1
  12. package/dist/analytics/analytics-functions/search.js +1 -1
  13. package/dist/analytics/analytics-functions/viewBrand.js +1 -1
  14. package/dist/analytics/analytics-functions/viewCart.js +1 -1
  15. package/dist/analytics/analytics-functions/viewCategory.js +1 -1
  16. package/dist/analytics/analytics-functions/viewListing.js +1 -1
  17. package/dist/analytics/analytics-functions/viewSearchResults.js +1 -1
  18. package/dist/analytics/analytics-functions/viewStorefrontPopup.js +1 -1
  19. package/dist/analytics/events.d.ts +8 -0
  20. package/dist/analytics/events.js +1 -1
  21. package/dist/analytics/ikas/analytics.js +1 -1
  22. package/dist/analytics/openai/addToCart.d.ts +2 -0
  23. package/dist/analytics/openai/addToCart.js +1 -0
  24. package/dist/analytics/openai/completeRegistration.d.ts +1 -0
  25. package/dist/analytics/openai/completeRegistration.js +1 -0
  26. package/dist/analytics/openai/contactForm.d.ts +1 -0
  27. package/dist/analytics/openai/contactForm.js +1 -0
  28. package/dist/analytics/openai/initAdvancedMatching.d.ts +12 -0
  29. package/dist/analytics/openai/initAdvancedMatching.js +1 -0
  30. package/dist/analytics/openai/pageView.d.ts +1 -0
  31. package/dist/analytics/openai/pageView.js +1 -0
  32. package/dist/analytics/openai/productView.d.ts +2 -0
  33. package/dist/analytics/openai/productView.js +1 -0
  34. package/dist/analytics/openai/utils.d.ts +26 -0
  35. package/dist/analytics/openai/utils.js +1 -0
  36. package/dist/analytics/utils.d.ts +1 -0
  37. package/dist/analytics/utils.js +1 -1
  38. package/dist/functions/api/cart/index.d.ts +2 -0
  39. package/dist/functions/api/cart/index.js +1 -1
  40. package/dist/functions/api/customer/index.d.ts +12 -2
  41. package/dist/functions/api/customer/index.js +1 -1
  42. package/dist/functions/api/loyalty/index.d.ts +2 -1
  43. package/dist/functions/api/loyalty/index.js +1 -1
  44. package/dist/functions/api/product/index.js +1 -1
  45. package/dist/functions/models/attribute-detail/index.d.ts +3 -0
  46. package/dist/functions/models/attribute-list/index.d.ts +3 -0
  47. package/dist/functions/models/image/index.d.ts +71 -21
  48. package/dist/functions/models/image/index.js +1 -1
  49. package/dist/functions/models/index.d.ts +1 -0
  50. package/dist/functions/models/order/index.d.ts +139 -4
  51. package/dist/functions/models/order/index.js +1 -1
  52. package/dist/functions/models/product/attribute-value/index.d.ts +5 -0
  53. package/dist/functions/models/product/index.d.ts +22 -0
  54. package/dist/functions/models/product/index.js +1 -1
  55. package/dist/functions/models/product/variant/index.d.ts +96 -6
  56. package/dist/functions/models/product/variant/index.js +1 -1
  57. package/dist/functions/models/product-list/index.d.ts +21 -0
  58. package/dist/functions/models/product-list/index.js +1 -1
  59. package/dist/functions/models/validator/address/index.d.ts +70 -2
  60. package/dist/functions/models/validator/deactivate-customer/index.d.ts +54 -0
  61. package/dist/functions/models/validator/deactivate-customer/index.js +1 -0
  62. package/dist/functions/stores/base/index.d.ts +75 -0
  63. package/dist/functions/stores/base/index.js +1 -1
  64. package/dist/functions/stores/cart/index.d.ts +46 -2
  65. package/dist/functions/stores/cart/index.js +1 -1
  66. package/dist/functions/stores/customer/index.d.ts +349 -29
  67. package/dist/functions/stores/customer/index.js +1 -1
  68. package/dist/i18n/ikas-texts.d.ts +425 -0
  69. package/dist/i18n/index.d.ts +19 -0
  70. package/dist/index.d.ts +5 -1
  71. package/dist/index.js +1 -1
  72. package/dist/packages/storefront-api/src/__api/mutations/removeGiftCardFromCart.js +1 -0
  73. package/dist/packages/storefront-api/src/__api/mutations/unlinkExternalAccount.js +1 -0
  74. package/dist/packages/storefront-api/src/__api/queries/getExternalAccountLink.js +1 -0
  75. package/dist/packages/storefront-api/src/__api/queries/getLoyaltyProgram.js +1 -0
  76. package/dist/packages/storefront-api/src/__api/queries/getMilesSmilesDetails.js +1 -0
  77. package/dist/packages/storefront-api/src/__api/queries/getRefundableLines.js +1 -0
  78. package/dist/packages/storefront-api/src/__api/queries/listOrderTransactionsWithPrices.js +1 -0
  79. package/dist/packages/storefront-api-client/src/utils/api.js +1 -1
  80. package/dist/packages/storefront-config/src/index.js +1 -1
  81. package/dist/packages/storefront-config/src/theme-globals.js +1 -0
  82. package/dist/router/index.d.ts +28 -0
  83. package/dist/router/index.js +1 -1
  84. package/dist/storefront-api/src/__api/mutations/removeGiftCardFromCart.d.ts +7 -0
  85. package/dist/storefront-api/src/__api/mutations/unlinkExternalAccount.d.ts +6 -0
  86. package/dist/storefront-api/src/__api/queries/getExternalAccountLink.d.ts +6 -0
  87. package/dist/storefront-api/src/__api/queries/getLoyaltyProgram.d.ts +3 -0
  88. package/dist/storefront-api/src/__api/queries/getMilesSmilesDetails.d.ts +3 -0
  89. package/dist/storefront-api/src/__api/queries/getRefundableLines.d.ts +6 -0
  90. package/dist/storefront-api/src/__api/queries/listOrderTransactionsWithPrices.d.ts +6 -0
  91. package/dist/storefront-api/src/__api/types/index.d.ts +101 -6
  92. package/dist/storefront-api-client/src/utils/api.d.ts +7 -0
  93. package/dist/storefront-config/src/index.d.ts +32 -0
  94. package/dist/storefront-config/src/theme-globals.d.ts +349 -0
  95. package/dist/storefront-models/src/index.d.ts +8 -0
  96. package/dist/storefront-models/src/models/blueprint/prop-value/attribute-list.d.ts +2 -0
  97. package/dist/storefront-models/src/models/blueprint/prop-value/attribute.d.ts +2 -0
  98. package/dist/storefront-models/src/models/blueprint/prop-value/color.d.ts +2 -0
  99. package/dist/storefront-models/src/models/blueprint/prop-value/index.d.ts +1 -0
  100. package/dist/storefront-models/src/models/blueprint/prop-value/link.d.ts +10 -0
  101. package/dist/storefront-models/src/models/blueprint/prop-value/variable-binding.d.ts +16 -0
  102. package/dist/storefront-models/src/models/image/index.d.ts +7 -0
  103. package/dist/storefront-models/src/models/loyalty-program/customer-info/index.d.ts +2 -0
  104. package/dist/storefront-models/src/models/loyalty-program/earning-method/index.d.ts +1 -0
  105. package/dist/storefront-models/src/models/loyalty-program/index.d.ts +1 -0
  106. package/dist/storefront-models/src/models/loyalty-program/point-history/index.d.ts +1 -0
  107. package/dist/storefront-models/src/models/order/gift-card-line/index.d.ts +15 -0
  108. package/dist/storefront-models/src/models/order/index.d.ts +10 -0
  109. package/dist/storefront-models/src/models/order/line-item/index.d.ts +6 -1
  110. package/dist/storefront-models/src/models/order/package/index.d.ts +1 -1
  111. package/dist/storefront-models/src/models/order/refund/reason/index.d.ts +6 -0
  112. package/dist/storefront-models/src/models/order/refund/reason/translation/index.d.ts +4 -0
  113. package/dist/storefront-models/src/models/order/refund/refundable-line/index.d.ts +8 -0
  114. package/dist/storefront-models/src/models/order/refund/refundable-lines/index.d.ts +8 -0
  115. package/dist/storefront-models/src/models/order/refund/settings/translation/index.d.ts +4 -0
  116. package/dist/storefront-models/src/models/payment-gateway/index.d.ts +3 -1
  117. package/dist/storefront-models/src/models/product/attribute/index.d.ts +6 -1
  118. package/dist/storefront-models/src/models/product/campaign/data/index.d.ts +2 -0
  119. package/dist/storefront-models/src/models/product/campaign/filter/index.d.ts +1 -1
  120. package/dist/storefront-models/src/models/product/campaign/product-tiered-discount/index.d.ts +13 -0
  121. package/dist/storefront-models/src/models/product/image/index.d.ts +5 -0
  122. package/dist/storefront-models/src/models/product/variant/index.d.ts +17 -0
  123. package/dist/storefront-models/src/models/storefront/index.d.ts +1 -0
  124. package/dist/storefront-models/src/models/validator/deactivate-customer/index.d.ts +4 -0
  125. package/dist/stores/customer/index.d.ts +2 -1
  126. package/dist/stores/customer/index.js +1 -1
  127. package/dist/theme/settings/index.d.ts +51 -0
  128. package/dist/theme/settings/index.js +1 -0
  129. package/dist/utils/component-renderer.js +1 -1
  130. package/dist/utils/currency.d.ts +36 -3
  131. package/dist/utils/helper.d.ts +1 -0
  132. package/dist/utils/helper.js +1 -1
  133. package/dist/utils/pay-with-ikas.d.ts +552 -0
  134. package/dist/utils/pay-with-ikas.js +1 -0
  135. package/dist/utils/svg.d.ts +15 -0
  136. package/dist/utils/svg.js +1 -0
  137. package/package.json +2 -2
@@ -499,6 +499,28 @@ export declare function getProductCampaigns(product: IkasProduct): Promise<impor
499
499
  * ```
500
500
  */
501
501
  export declare function getProductAvailableStockLocations(product: IkasProduct): Promise<import("../../../storefront-models/src").IkasProductStockLocations[]>;
502
+ /**
503
+ * Re-fetch the latest variant prices of a product and apply them in place.
504
+ * Useful when the page is served from cache but prices change frequently (e.g. gold prices),
505
+ * call it once the product is mounted on the browser.
506
+ *
507
+ * @ai-category Product, Pricing
508
+ * @ai-related updateProductListPrices, getProductVariantFormattedFinalPrice
509
+ *
510
+ * @param product - The product to refresh prices for (modified in place)
511
+ * @returns void
512
+ *
513
+ * @example
514
+ * ```typescript
515
+ * import { updateProductPrices } from "@ikas/bp-storefront";
516
+ *
517
+ * useEffect(() => {
518
+ * updateProductPrices(product);
519
+ * }, [product]);
520
+ * ```
521
+ */
522
+ export declare function updateProductPrices(product: IkasProduct): Promise<void>;
523
+ export declare function refreshProductsPrices(products: IkasProduct[]): Promise<void>;
502
524
  /**
503
525
  * Fetch and attach the product option set if not already loaded.
504
526
  * Loads option set data from the API and sets currency-specific prices for each option.
@@ -1 +1 @@
1
- import{__spreadArray as n,__assign as t,__awaiter as r,__generator as i}from'./../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as e}from"../../../packages/storefront-config/src/index.js";import u from'./../../../ext/lodash/sortBy.js';import{_allowStateChangesInsideComputed as a}from'./../../../ext/mobx/dist/mobx.esm.js';import{withRoutePrefix as o,Router as c}from"../../../router/index.js";import{cartStore as s}from"../../../stores/cart/index.js";import{customerStore as d}from"../../../stores/customer/index.js";import{formatCurrency as l}from"../../../utils/currency.js";import{stringToSlug as f,groupBy as v,cloneDeep as p}from"../../../utils/helper.js";import{addProductToFavorites as m,removeProductFromFavorites as y}from"../../stores/customer/index.js";import{getCategoryPath as h}from"../category/index.js";import{initCustomerReviewForm as V}from"../validator/customer-review/index.js";import{getIkasVariantTypeSlug as g}from"../variant-type/index.js";import{getIkasVariantValueSlug as I}from"../variant-type/variant-value/index.js";import{initIkasProductExtraFields as T}from"./init.js";import{hasValidProductOptionSetValues as b}from"./option-set/index.js";import{hasProductVariantStock as S,getProductVariantPrice as P,getProductVariantFinalPrice as w}from"./variant/index.js";import{getIkasProductPriceFinalPrice as j}from"./variant/price/index.js";function x(n){try{var t=new URLSearchParams(window.location.search),r=t.get("vid");if(r){var i=n.variants.find(function(n){return n.id===r});i&&(n.selectedVariantValues=i.variantValues)}else{var e=n.variantTypes.map(function(n){return g(n.variantType)}),a=[];e.forEach(function(r,i){var e=n.variantTypes[i],u=f(t.get(decodeURIComponent(r))||"");if(u){var o=e.variantType.values.find(function(n){return I(n)===u});o&&a.push(o)}}),a.length===n.selectedVariantValues.length&&(n.selectedVariantValues=a)}n.productGroupItems=u(n.productGroupItems,function(n){var t;return(null===(t=n.order)||void 0===t?void 0:t.value)?parseInt(n.order.value,10):0}),T(n),cn(n)}catch(n){console.error(n)}}function O(n,t){return n.productGroup&&!t?n.variants.length>1:!!n.variantTypes.length}function R(n){if(n.groupVariantsByVariantTypeId){var t=n.variants[0].variantValues.find(function(t){return t.variantTypeId==n.groupVariantsByVariantTypeId});if(t)return n.variants.filter(function(n){return n.variantValues.find(function(n){return n.id==t.id})}).some(function(n){return n.stock>0||n.sellIfOutOfStock})}return n.variants.some(function(n){return n.stock>0||n.sellIfOutOfStock})}function E(n){return!n.productOptionSet||b(n.productOptionSet)}function A(n){if(!O(n))return n.variants[0];var t=n.selectedVariantValues.map(function(n){return n.id});return n.variants.find(function(n){return n.variantValues.every(function(n){return t.includes(n.id)})})}function C(n){var t=n.selectedVariantValues;return t.length?t[0]:void 0}function L(n){if(O(n))return n.variantTypes[0].variantType}function k(n){var t=n.metaData;if(!(null==t?void 0:t.slug))return o("");var r=n.variantTypes.map(function(t){var r=t.variantType,i=r.values.find(function(t){return n.selectedVariantValues.some(function(n){return n.id===t.id})});if(i)return"".concat(g(r),"=").concat(I(i))}).filter(function(n){return!!n}).join("&");return o(r?"/".concat(t.slug,"?").concat(r):"/".concat(t.slug))}function G(n){var t=n.metaData;return(null==t?void 0:t.slug)?o("/".concat(t.slug)):""}function q(t){var r=t.selectedVariantValues,i=t.variantTypes.map(function(i,e){var u=i.variantType,a=[],o=e>0?t.variantTypes.slice(0,e):null,c=[];return o&&(c=r.filter(function(n){return o.some(function(t){return t.variantType.id===n.variantTypeId})})),u.values.forEach(function(i){var e=n(n([],c,!0),[i],!1),u=t.variants.find(function(n){return n.isActive&&e.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}),o=t.variants.find(function(n){return n.isActive&&S(n)&&e.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}),s=r.some(function(n){return n.id===i.id});u&&a.push({variant:u,variantValue:i,hasStock:!!o,isSelected:s})}),{variantType:u,displayedVariantValues:a}});return 1===i.length&&(i[0].displayedVariantValues=i[0].displayedVariantValues.filter(function(n){return n.variant.isActive})),i}function Q(n){var t=A(n),r=n.productOptionSet;return(!r||b(r))&&(S(t)||t.sellIfOutOfStock)}function _(n){return e.isCustomerReviewEnabled()}function B(n){return e.isCustomerReviewLoginRequired()}function F(n){var t,r=v(n.attributes,"productAttributeId");return(null===(t=n.attributes)||void 0===t?void 0:t.map(function(n){var t=n.productAttributeId;if(t){var i=r[t];return(null==i?void 0:i.length)&&i[0].productAttribute?{attribute:i[0].productAttribute,values:i}:void 0}}).filter(function(n){return!!n}))||[]}function U(t){var r,i=[],e=[];return null===(r=t.productGroupItems)||void 0===r||r.forEach(function(n){n.groupValues.forEach(function(n){i.includes(n.name)||i.push(n.name)})}),i.forEach(function(r){var i,u={name:r,items:[]};null===(i=t.productGroupItems)||void 0===i||i.forEach(function(i){var e,a,c,s=i.groupValues.find(function(n){return n.name===r});if(s&&!u.items.some(function(n){return n.value===s.value})){var d="";if(i.productId===t.id)d=k(t);else{var l=(null===(e=t.productGroup)||void 0===e?void 0:e.values.filter(function(n){return n.name!==r}))||[],f=n(n([],l,!0),[s],!1),v=null===(a=t.productGroupItems)||void 0===a?void 0:a.find(function(n){return f.every(function(t){return n.groupValues.some(function(n){return t.name===n.name&&t.value===n.value})})});d=v?v.href:i.href}u.items.push({image:i.image||null,href:o(d),value:s.value,isSelected:(null===(c=t.productGroupItems)||void 0===c?void 0:c.some(function(n){return n.groupValues.some(function(n){return n.value===s.value})&&n.productId===t.id}))||!1})}}),e.push(u)}),e}function D(r,i,e){var u=r.metaData,a=r.selectedVariantValues.map(function(n){return n.variantTypeId===i.variantTypeId?i:n}),s=r.variants.find(function(n){return n.isActive&&a.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})});if(s)r.selectedVariantValues=a;else{var d=r.variantTypes.findIndex(function(n){return n.variantType.id===i.variantTypeId});if(d>0){var l=r.variantTypes.slice(0,d),f=r.selectedVariantValues.filter(function(n){return l.some(function(t){return t.variantType.id===n.variantTypeId})}),v=n(n([],f,!0),[i],!1);s=r.variants.find(function(n){return n.isActive&&v.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})})}else{var p=a.slice(0,a.length-1);(s=r.variants.find(function(n){return n.isActive&&p.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}))||(s=r.variants.find(function(n){return n.isActive&&n.variantValues.some(function(n){return n.id===i.id})}))}if(!s)return;r.selectedVariantValues=s.variantValues}var m={};new URLSearchParams(window.location.search).forEach(function(n,r){var i;"vid"!==r&&(m=t(t({},m),((i={})[r]=n,i)))}),r.variantTypes.map(function(n){delete m[g(n.variantType)]});var y=n(n([],r.variantTypes.map(function(n){var t=n.variantType,i=t.values.find(function(n){return r.selectedVariantValues.some(function(t){return t.id===n.id})});if(i)return"".concat(g(t),"=").concat(I(i))}),!0),Object.entries(m).map(function(n){var t=n[0],r=n[1];return"".concat(t,"=").concat(r)}),!0).filter(function(n){return!!n}).join("&");if(cn(r),!e){var h=o("/".concat(u.slug));if(y&&(h=o("/".concat(u.slug,"?").concat(y))),h===window.location.pathname)return;c.navigate(h,!0)}}function z(n){return r(this,void 0,void 0,function(){var t,r,u,a;return i(this,function(i){switch(i.label){case 0:return t=d.customer,r=t?t.customerGroupIds:null,u=n.variants.map(function(n){return n.id}),[4,import("../../api/product/index.js")];case 1:return[4,(0,i.sent().apiGetProductCampaigns)({input:{customerGroupIds:r,salesChannelId:e.salesChannelId||"",variantIds:u}})];case 2:return a=i.sent(),n.campaigns=a.data,n.campaigns?(n.campaigns.map(function(t){n.variants.map(function(n){var r;t.variantIds.some(function(t){return t===n.id})&&(null===(r=n.campaigns)||void 0===r||r.push(t))})}),[2,n.campaigns]):[2]}})})}function H(n){return r(this,void 0,void 0,function(){var t,r;return i(this,function(i){switch(i.label){case 0:return t=n.variants.map(function(n){return n.id}),r=e.pickUpStockLocationIds,[4,import("../../api/product/index.js")];case 1:return[4,(0,i.sent().apiGetVariantStockLocations)({stockLocationIdList:r,variantIds:t})];case 2:return[2,i.sent().data||[]]}})})}function J(n){return r(this,void 0,void 0,function(){var t,r;return i(this,function(i){switch(i.label){case 0:return n.productOptionSet?[2,!0]:n.productOptionSetId?[4,import("../../api/product/index.js")]:[2,!1];case 1:return[4,(0,i.sent().apiListProductOptionSet)({id:{eq:n.productOptionSetId}},n)];case 2:return(t=i.sent()).isSuccess&&(null===(r=t.data)||void 0===r?void 0:r.length)?(n.productOptionSet=t.data[0],function(n){var t,r=n.variants[0];if(!r)return;var i=P(r).currency;null===(t=n.productOptionSet)||void 0===t||t.options.forEach(function(n){var t,e;if(n.selectSettings&&n.selectSettings.values.forEach(function(n){var t,e;if(n.otherPrices)if("RATIO"===n.priceType){var u=(null===(t=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===t?void 0:t.price)||n.price||1,a=P(r),o=j(a);n.price=o*u}else n.price=(null===(e=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===e?void 0:e.price)||n.price}),n.otherPrices)if("RATIO"===n.priceType){var u=(null===(t=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===t?void 0:t.price)||n.price||1,a=P(r),o=j(a);n.price=o*u}else n.price=(null===(e=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===e?void 0:e.price)||n.price})}(n),cn(n),[2,!0]):[2,!1]}})})}function K(n){n&&n.options.forEach(function(n){n.initPrice=n.price,n.selectSettings&&n.selectSettings.values.forEach(function(n){n.initPrice=n.price,n.thumbnailImageId&&(n.thumbnailImage={id:n.thumbnailImageId,isVideo:!1})})})}function M(n){return r(this,void 0,void 0,function(){var t,r,e,u,a,o;return i(this,function(i){switch(i.label){case 0:return t="","undefined"!=typeof window&&(r=new URLSearchParams(window.location.search),t=r.get("editLineID")||""),t?(e=null===(a=s.cart)||void 0===a?void 0:a.orderLineItems.find(function(n){return n.id===t}))&&(u=n.variants.find(function(n){return n.id===e.variant.id}))?(n.selectedVariantValues=u.variantValues,[4,N(n,u)]):[3,2]:[3,3];case 1:i.sent(),null===(o=u.bundleSettings)||void 0===o||o.products.forEach(function(n){var t,r,i;try{var u=null===(t=e.variant.bundleProducts)||void 0===t?void 0:t.find(function(t){return t.id===n.id}),a=n.product.variants.find(function(n){return n.id===(null==u?void 0:u.variant.id)});n.product.selectedVariantValues=a.variantValues,n.quantity=(null===(i=null===(r=e.variant.bundleProducts)||void 0===r?void 0:r.find(function(n){return n.variant.id===a.id}))||void 0===i?void 0:i.quantity)||0}catch(n){console.error(n)}}),i.label=2;case 2:return[3,5];case 3:return[4,N(n,A(n))];case 4:i.sent(),i.label=5;case 5:return[2]}})})}function N(n,t){return r(this,void 0,void 0,function(){var r,e,u,o,c;return i(this,function(i){switch(i.label){case 0:return(null==(r=null===(u=t.bundleSettings)||void 0===u?void 0:u.products.map(function(n){return n.productId}).filter(function(t){return-1===Object.keys(n.bundleProductCache).indexOf(t)}))?void 0:r.length)?[4,import("../../api/product/index.js")]:[3,3];case 1:return[4,(0,i.sent().apiSearchProducts)({input:{productIdList:r,perPage:200}})];case 2:(e=i.sent()).isSuccess&&(null===(c=null===(o=e.data)||void 0===o?void 0:o.data)||void 0===c||c.forEach(function(t){n.bundleProductCache[t.id]=t})),i.label=3;case 3:return a(function(){var r;null===(r=t.bundleSettings)||void 0===r||r.products.forEach(function(t){t.initialQuantity=t.quantity;var r=n.bundleProductCache[t.productId];an(t,p(r))})}),[2]}})})}function W(n){return null!==n.maxQuantity||null!==n.minQuantity}function X(n){return!0===n.addToBundleBasePrice}function Y(n){if(!n.product)return 0;var t=A(n.product),r=P(t),i=j(r);return n.addToBundleBasePrice&&n.discountRatio&&(i-=i*(n.discountRatio/100)),i}function Z(n){if(!n.product)return l(0,"","");var t=A(n.product),r=P(t);return l(Y(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function $(n){return Y(n)*n.quantity}function nn(n){if(!n.product)return l(0,"","");var t=A(n.product),r=P(t);return l($(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function tn(n){if(!n.product)return 0;var t=A(n.product),r=P(t);return(null==r?void 0:r.sellPrice)||0}function rn(n){if(!n.product)return l(0,"","");var t=A(n.product),r=P(t);return l(tn(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function en(n){return tn(n)*n.quantity}function un(n){if(!n.product)return l(0,"","");var t=A(n.product),r=P(t);return l(en(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function an(n,t){t.variants=t.variants.filter(function(t){return n.filteredVariantIds.includes(t.id)}),t.selectedVariantValues=t.variants[0].variantValues,n.product=t,n.quantity=n.initialQuantity||0}function on(n,t){if(!(t<0)&&n.product){var r=A(n.product).stock;null!==n.minQuantity&&t<n.minQuantity?n.quantity=n.minQuantity:null!==n.maxQuantity&&t>n.maxQuantity?n.quantity=n.maxQuantity:n.quantity=r&&t>r?r:t}}function cn(n){var t,r=A(n)||n.variants[0];if(r){var i=P(r),e=w(r),u=null==i?void 0:i.priceListId;null===(t=n.productOptionSet)||void 0===t||t.options.forEach(function(n){var t;if(n.selectSettings)n.selectSettings.values.forEach(function(n){var t;if("RATIO"===n.priceType&&n.initPrice)if(n.otherPrices){var r=(null===(t=n.otherPrices.find(function(n){return n.priceListId===u}))||void 0===t?void 0:t.price)||n.initPrice||1;n.price=e*r/100}else n.price=e*n.initPrice/100});else if("RATIO"===n.priceType&&n.initPrice)if(n.otherPrices){var r=(null===(t=n.otherPrices.find(function(n){return n.priceListId===u}))||void 0===t?void 0:t.price)||n.initPrice||1;n.price=e*r/100}else n.price=e*n.initPrice/100})}}function sn(n){return n.categories.length>0?h(n.categories[0]):[]}function dn(n){return n.categories.length>0?n.categories[0]:null}function ln(n){return d._customerReviewForms[n.id]||(d._customerReviewForms[n.id]={},V(d._customerReviewForms[n.id],n.id)),d._customerReviewForms[n.id]}function fn(n){delete d._customerReviewForms[n.id]}function vn(n){return d._favoriteProducts.some(function(t){return t.productId===n.id})}function pn(n){return r(this,void 0,void 0,function(){return i(this,function(t){switch(t.label){case 0:return[4,m(d,n.id)];case 1:return[2,t.sent()]}})})}function mn(n){return r(this,void 0,void 0,function(){return i(this,function(t){switch(t.label){case 0:return[4,y(d,n.id)];case 1:return[2,t.sent()]}})})}export{pn as addIkasProductToFavorites,fn as clearIkasProductCustomerReviewForm,Y as getBundleProductFinalPrice,$ as getBundleProductFinalPriceWithQuantity,Z as getBundleProductFormattedFinalPrice,nn as getBundleProductFormattedFinalPriceWithQuantity,rn as getBundleProductFormattedSellPrice,un as getBundleProductFormattedSellPriceWithQuantity,tn as getBundleProductSellPrice,en as getBundleProductSellPriceWithQuantity,N as getBundleProductsOfVariant,U as getDisplayedProductGroups,q as getDisplayedProductVariantTypes,F as getGroupedAttributeValues,ln as getIkasProductCustomerReviewForm,L as getMainProductVariantType,C as getMainProductVariantValue,H as getProductAvailableStockLocations,z as getProductCampaigns,sn as getProductCategoryPath,dn as getProductFirstCategory,G as getProductHref,J as getProductOptionSet,A as getSelectedProductVariant,k as getSelectedProductVariantHref,R as hasProductStock,E as hasProductValidOptionValues,O as hasProductVariant,M as initBundleProducts,x as initProductOnBrowser,K as initProductOptionSet,Q as isAddToCartEnabled,W as isBundleProductQuantityEditable,_ as isCustomerReviewEnabled,B as isCustomerReviewLoginRequired,vn as isFavoriteIkasProduct,mn as removeIkasProductFromFavorites,D as selectVariantValue,on as setBundleProductQuantity,cn as setOptionRealPrices,an as setProductOfBundleProduct,X as shouldDisplayBundleProductPrice};
1
+ import{__spreadArray as n,__assign as t,__awaiter as r,__generator as i}from'./../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as e}from"../../../packages/storefront-config/src/index.js";import u from'./../../../ext/lodash/sortBy.js';import{_allowStateChangesInsideComputed as a}from'./../../../ext/mobx/dist/mobx.esm.js';import{withRoutePrefix as o,Router as c}from"../../../router/index.js";import{cartStore as s}from"../../../stores/cart/index.js";import{customerStore as d}from"../../../stores/customer/index.js";import{formatCurrency as l}from"../../../utils/currency.js";import{stringToSlug as f,groupBy as v,cloneDeep as p}from"../../../utils/helper.js";import{addProductToFavorites as m,removeProductFromFavorites as h}from"../../stores/customer/index.js";import{getCategoryPath as y}from"../category/index.js";import{initCustomerReviewForm as g}from"../validator/customer-review/index.js";import{getIkasVariantTypeSlug as V}from"../variant-type/index.js";import{getIkasVariantValueSlug as I}from"../variant-type/variant-value/index.js";import{initIkasProductExtraFields as b}from"./init.js";import{hasValidProductOptionSetValues as T}from"./option-set/index.js";import{hasProductVariantStock as P,getProductVariantPrice as S,getProductVariantFinalPrice as w}from"./variant/index.js";import{getIkasProductPriceFinalPrice as j}from"./variant/price/index.js";function x(n){try{var t=new URLSearchParams(window.location.search),r=t.get("vid");if(r){var i=n.variants.find(function(n){return n.id===r});i&&(n.selectedVariantValues=i.variantValues)}else{var e=n.variantTypes.map(function(n){return V(n.variantType)}),a=[];e.forEach(function(r,i){var e=n.variantTypes[i],u=f(t.get(decodeURIComponent(r))||"");if(u){var o=e.variantType.values.find(function(n){return I(n)===u});o&&a.push(o)}}),a.length===n.selectedVariantValues.length&&(n.selectedVariantValues=a)}n.productGroupItems=u(n.productGroupItems,function(n){var t;return(null===(t=n.order)||void 0===t?void 0:t.value)?parseInt(n.order.value,10):0}),b(n),ln(n)}catch(n){console.error(n)}}function O(n,t){return n.productGroup&&!t?n.variants.length>1:!!n.variantTypes.length}function E(n){if(n.groupVariantsByVariantTypeId){var t=n.variants[0].variantValues.find(function(t){return t.variantTypeId==n.groupVariantsByVariantTypeId});if(t)return n.variants.filter(function(n){return n.variantValues.find(function(n){return n.id==t.id})}).some(function(n){return n.stock>0||n.sellIfOutOfStock})}return n.variants.some(function(n){return n.stock>0||n.sellIfOutOfStock})}function L(n){return!n.productOptionSet||T(n.productOptionSet)}function R(n){if(!O(n))return n.variants[0];var t=n.selectedVariantValues.map(function(n){return n.id});return n.variants.find(function(n){return n.variantValues.every(function(n){return t.includes(n.id)})})}function C(n){var t=n.selectedVariantValues;return t.length?t[0]:void 0}function A(n){if(O(n))return n.variantTypes[0].variantType}function k(n){var t=n.metaData;if(!(null==t?void 0:t.slug))return o("");var r=n.variantTypes.map(function(t){var r=t.variantType,i=r.values.find(function(t){return n.selectedVariantValues.some(function(n){return n.id===t.id})});if(i)return"".concat(V(r),"=").concat(I(i))}).filter(function(n){return!!n}).join("&");return o(r?"/".concat(t.slug,"?").concat(r):"/".concat(t.slug))}function G(n){var t=n.metaData;return(null==t?void 0:t.slug)?o("/".concat(t.slug)):""}function q(t){var r=t.selectedVariantValues,i=t.variantTypes.map(function(i,e){var u=i.variantType,a=[],o=e>0?t.variantTypes.slice(0,e):null,c=[];return o&&(c=r.filter(function(n){return o.some(function(t){return t.variantType.id===n.variantTypeId})})),u.values.forEach(function(i){var e=n(n([],c,!0),[i],!1),u=t.variants.find(function(n){return n.isActive&&e.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}),o=t.variants.find(function(n){return n.isActive&&P(n)&&e.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}),s=r.some(function(n){return n.id===i.id});u&&a.push({variant:u,variantValue:i,hasStock:!!o,isSelected:s})}),{variantType:u,displayedVariantValues:a}});return 1===i.length&&(i[0].displayedVariantValues=i[0].displayedVariantValues.filter(function(n){return n.variant.isActive})),i}function Q(n){var t=R(n),r=n.productOptionSet;return(!r||T(r))&&(P(t)||t.sellIfOutOfStock)}function _(n){return e.isCustomerReviewEnabled()}function B(n){return e.isCustomerReviewLoginRequired()}function F(n){var t,r=v(n.attributes,"productAttributeId");return(null===(t=n.attributes)||void 0===t?void 0:t.map(function(n){var t=n.productAttributeId;if(t){var i=r[t];return(null==i?void 0:i.length)&&i[0].productAttribute?{attribute:i[0].productAttribute,values:i}:void 0}}).filter(function(n){return!!n}))||[]}function U(t){var r,i=[],e=[];return null===(r=t.productGroupItems)||void 0===r||r.forEach(function(n){n.groupValues.forEach(function(n){i.includes(n.name)||i.push(n.name)})}),i.forEach(function(r){var i,u={name:r,items:[]};null===(i=t.productGroupItems)||void 0===i||i.forEach(function(i){var e,a,c,s=i.groupValues.find(function(n){return n.name===r});if(s&&!u.items.some(function(n){return n.value===s.value})){var d="";if(i.productId===t.id)d=k(t);else{var l=(null===(e=t.productGroup)||void 0===e?void 0:e.values.filter(function(n){return n.name!==r}))||[],f=n(n([],l,!0),[s],!1),v=null===(a=t.productGroupItems)||void 0===a?void 0:a.find(function(n){return f.every(function(t){return n.groupValues.some(function(n){return t.name===n.name&&t.value===n.value})})});d=v?v.href:i.href}u.items.push({image:i.image||null,href:o(d),value:s.value,isSelected:(null===(c=t.productGroupItems)||void 0===c?void 0:c.some(function(n){return n.groupValues.some(function(n){return n.value===s.value})&&n.productId===t.id}))||!1})}}),e.push(u)}),e}function D(r,i,e){var u=r.metaData,a=r.selectedVariantValues.map(function(n){return n.variantTypeId===i.variantTypeId?i:n}),s=r.variants.find(function(n){return n.isActive&&a.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})});if(s)r.selectedVariantValues=a;else{var d=r.variantTypes.findIndex(function(n){return n.variantType.id===i.variantTypeId});if(d>0){var l=r.variantTypes.slice(0,d),f=r.selectedVariantValues.filter(function(n){return l.some(function(t){return t.variantType.id===n.variantTypeId})}),v=n(n([],f,!0),[i],!1);s=r.variants.find(function(n){return n.isActive&&v.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})})}else{var p=a.slice(0,a.length-1);(s=r.variants.find(function(n){return n.isActive&&p.every(function(t){return n.variantValues.some(function(n){return n.id===t.id})})}))||(s=r.variants.find(function(n){return n.isActive&&n.variantValues.some(function(n){return n.id===i.id})}))}if(!s)return;r.selectedVariantValues=s.variantValues}var m={};new URLSearchParams(window.location.search).forEach(function(n,r){var i;"vid"!==r&&(m=t(t({},m),((i={})[r]=n,i)))}),r.variantTypes.map(function(n){delete m[V(n.variantType)]});var h=n(n([],r.variantTypes.map(function(n){var t=n.variantType,i=t.values.find(function(n){return r.selectedVariantValues.some(function(t){return t.id===n.id})});if(i)return"".concat(V(t),"=").concat(I(i))}),!0),Object.entries(m).map(function(n){var t=n[0],r=n[1];return"".concat(t,"=").concat(r)}),!0).filter(function(n){return!!n}).join("&");if(ln(r),!e){var y=o("/".concat(u.slug));if(h&&(y=o("/".concat(u.slug,"?").concat(h))),y===window.location.pathname)return;c.navigate(y,!0)}}function M(n){return r(this,void 0,void 0,function(){var t,r,u,a;return i(this,function(i){switch(i.label){case 0:return t=d.customer,r=t?t.customerGroupIds:null,u=n.variants.map(function(n){return n.id}),[4,import("../../api/product/index.js")];case 1:return[4,(0,i.sent().apiGetProductCampaigns)({input:{customerGroupIds:r,salesChannelId:e.salesChannelId||"",variantIds:u}})];case 2:return a=i.sent(),n.campaigns=a.data,n.campaigns?(n.campaigns.map(function(t){n.variants.map(function(n){var r;t.variantIds.some(function(t){return t===n.id})&&(null===(r=n.campaigns)||void 0===r||r.push(t))})}),[2,n.campaigns]):[2]}})})}function z(n){return r(this,void 0,void 0,function(){var t,r;return i(this,function(i){switch(i.label){case 0:return t=n.variants.map(function(n){return n.id}),r=e.pickUpStockLocationIds,[4,import("../../api/product/index.js")];case 1:return[4,(0,i.sent().apiGetVariantStockLocations)({stockLocationIdList:r,variantIds:t})];case 2:return[2,i.sent().data||[]]}})})}function H(n){return r(this,void 0,void 0,function(){var t;return i(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,K([n])];case 1:return r.sent(),[3,3];case 2:return t=r.sent(),console.log(t),[3,3];case 3:return[2]}})})}var J=50;function K(n){return r(this,void 0,void 0,function(){var t,r,u,o,c;return i(this,function(i){switch(i.label){case 0:return n.length?[4,import("../../api/product/index.js")]:[2];case 1:for(t=i.sent().apiSearchProducts,r=[],u=0;u<n.length;u+=J)r.push(n.slice(u,u+J));return[4,Promise.all(r.map(function(n){return t({input:{productIdList:n.map(function(n){return n.id}),page:1,perPage:n.length,priceListId:e.priceListId,salesChannelId:e.salesChannelId}})}))];case 2:return o=i.sent(),c=o.flatMap(function(n){var t;return(null===(t=n.data)||void 0===t?void 0:t.data)||[]}),c.length?(a(function(){n.forEach(function(n){var t=c.find(function(t){return t.id===n.id});t&&n.variants.forEach(function(n){var r=t.variants.find(function(t){return t.id===n.id});r&&(n.prices=r.prices,n.baseBundlePrices=r.baseBundlePrices)})})}),[2]):[2]}})})}function N(n){return r(this,void 0,void 0,function(){var t,r;return i(this,function(i){switch(i.label){case 0:return n.productOptionSet?[2,!0]:n.productOptionSetId?[4,import("../../api/product/index.js")]:[2,!1];case 1:return[4,(0,i.sent().apiListProductOptionSet)({id:{eq:n.productOptionSetId}},n)];case 2:return(t=i.sent()).isSuccess&&(null===(r=t.data)||void 0===r?void 0:r.length)?(n.productOptionSet=t.data[0],function(n){var t,r=n.variants[0];if(!r)return;var i=S(r).currency;null===(t=n.productOptionSet)||void 0===t||t.options.forEach(function(n){var t,e;if(n.selectSettings&&n.selectSettings.values.forEach(function(n){var t,e;if(n.otherPrices)if("RATIO"===n.priceType){var u=(null===(t=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===t?void 0:t.price)||n.price||1,a=S(r),o=j(a);n.price=o*u}else n.price=(null===(e=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===e?void 0:e.price)||n.price}),n.otherPrices)if("RATIO"===n.priceType){var u=(null===(t=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===t?void 0:t.price)||n.price||1,a=S(r),o=j(a);n.price=o*u}else n.price=(null===(e=n.otherPrices.find(function(n){return n.currencyCode===i}))||void 0===e?void 0:e.price)||n.price})}(n),ln(n),[2,!0]):[2,!1]}})})}function W(n){n&&n.options.forEach(function(n){n.initPrice=n.price,n.selectSettings&&n.selectSettings.values.forEach(function(n){n.initPrice=n.price,n.thumbnailImageId&&(n.thumbnailImage={id:n.thumbnailImageId,isVideo:!1})})})}function X(n){return r(this,void 0,void 0,function(){var t,r,e,u,a,o;return i(this,function(i){switch(i.label){case 0:return t="","undefined"!=typeof window&&(r=new URLSearchParams(window.location.search),t=r.get("editLineID")||""),t?(e=null===(a=s.cart)||void 0===a?void 0:a.orderLineItems.find(function(n){return n.id===t}))&&(u=n.variants.find(function(n){return n.id===e.variant.id}))?(n.selectedVariantValues=u.variantValues,[4,Y(n,u)]):[3,2]:[3,3];case 1:i.sent(),null===(o=u.bundleSettings)||void 0===o||o.products.forEach(function(n){var t,r,i;try{var u=null===(t=e.variant.bundleProducts)||void 0===t?void 0:t.find(function(t){return t.id===n.id}),a=n.product.variants.find(function(n){return n.id===(null==u?void 0:u.variant.id)});n.product.selectedVariantValues=a.variantValues,n.quantity=(null===(i=null===(r=e.variant.bundleProducts)||void 0===r?void 0:r.find(function(n){return n.variant.id===a.id}))||void 0===i?void 0:i.quantity)||0}catch(n){console.error(n)}}),i.label=2;case 2:return[3,5];case 3:return[4,Y(n,R(n))];case 4:i.sent(),i.label=5;case 5:return[2]}})})}function Y(n,t){return r(this,void 0,void 0,function(){var r,e,u,o,c;return i(this,function(i){switch(i.label){case 0:return(null==(r=null===(u=t.bundleSettings)||void 0===u?void 0:u.products.map(function(n){return n.productId}).filter(function(t){return-1===Object.keys(n.bundleProductCache).indexOf(t)}))?void 0:r.length)?[4,import("../../api/product/index.js")]:[3,3];case 1:return[4,(0,i.sent().apiSearchProducts)({input:{productIdList:r,perPage:200}})];case 2:(e=i.sent()).isSuccess&&(null===(c=null===(o=e.data)||void 0===o?void 0:o.data)||void 0===c||c.forEach(function(t){n.bundleProductCache[t.id]=t})),i.label=3;case 3:return a(function(){var r;null===(r=t.bundleSettings)||void 0===r||r.products.forEach(function(t){t.initialQuantity=t.quantity;var r=n.bundleProductCache[t.productId];sn(t,p(r))})}),[2]}})})}function Z(n){return null!==n.maxQuantity||null!==n.minQuantity}function $(n){return!0===n.addToBundleBasePrice}function nn(n){if(!n.product)return 0;var t=R(n.product),r=S(t),i=j(r);return n.addToBundleBasePrice&&n.discountRatio&&(i-=i*(n.discountRatio/100)),i}function tn(n){if(!n.product)return l(0,"","");var t=R(n.product),r=S(t);return l(nn(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function rn(n){return nn(n)*n.quantity}function en(n){if(!n.product)return l(0,"","");var t=R(n.product),r=S(t);return l(rn(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function un(n){if(!n.product)return 0;var t=R(n.product),r=S(t);return(null==r?void 0:r.sellPrice)||0}function an(n){if(!n.product)return l(0,"","");var t=R(n.product),r=S(t);return l(un(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function on(n){return un(n)*n.quantity}function cn(n){if(!n.product)return l(0,"","");var t=R(n.product),r=S(t);return l(on(n),(null==r?void 0:r.currency)||"",(null==r?void 0:r.currencySymbol)||"")}function sn(n,t){t.variants=t.variants.filter(function(t){return n.filteredVariantIds.includes(t.id)}),t.selectedVariantValues=t.variants[0].variantValues,n.product=t,n.quantity=n.initialQuantity||0}function dn(n,t){if(!(t<0)&&n.product){var r=R(n.product).stock;null!==n.minQuantity&&t<n.minQuantity?n.quantity=n.minQuantity:null!==n.maxQuantity&&t>n.maxQuantity?n.quantity=n.maxQuantity:n.quantity=r&&t>r?r:t}}function ln(n){var t,r=R(n)||n.variants[0];if(r){var i=S(r),e=w(r),u=null==i?void 0:i.priceListId;null===(t=n.productOptionSet)||void 0===t||t.options.forEach(function(n){var t;if(n.selectSettings)n.selectSettings.values.forEach(function(n){var t;if("RATIO"===n.priceType&&n.initPrice)if(n.otherPrices){var r=(null===(t=n.otherPrices.find(function(n){return n.priceListId===u}))||void 0===t?void 0:t.price)||n.initPrice||1;n.price=e*r/100}else n.price=e*n.initPrice/100});else if("RATIO"===n.priceType&&n.initPrice)if(n.otherPrices){var r=(null===(t=n.otherPrices.find(function(n){return n.priceListId===u}))||void 0===t?void 0:t.price)||n.initPrice||1;n.price=e*r/100}else n.price=e*n.initPrice/100})}}function fn(n){return n.categories.length>0?y(n.categories[0]):[]}function vn(n){return n.categories.length>0?n.categories[0]:null}function pn(n){return d._customerReviewForms[n.id]||(d._customerReviewForms[n.id]={},g(d._customerReviewForms[n.id],n.id)),d._customerReviewForms[n.id]}function mn(n){delete d._customerReviewForms[n.id]}function hn(n){return d._favoriteProducts.some(function(t){return t.productId===n.id})}function yn(n){return r(this,void 0,void 0,function(){return i(this,function(t){switch(t.label){case 0:return[4,m(d,n.id)];case 1:return[2,t.sent()]}})})}function gn(n){return r(this,void 0,void 0,function(){return i(this,function(t){switch(t.label){case 0:return[4,h(d,n.id)];case 1:return[2,t.sent()]}})})}export{yn as addIkasProductToFavorites,mn as clearIkasProductCustomerReviewForm,nn as getBundleProductFinalPrice,rn as getBundleProductFinalPriceWithQuantity,tn as getBundleProductFormattedFinalPrice,en as getBundleProductFormattedFinalPriceWithQuantity,an as getBundleProductFormattedSellPrice,cn as getBundleProductFormattedSellPriceWithQuantity,un as getBundleProductSellPrice,on as getBundleProductSellPriceWithQuantity,Y as getBundleProductsOfVariant,U as getDisplayedProductGroups,q as getDisplayedProductVariantTypes,F as getGroupedAttributeValues,pn as getIkasProductCustomerReviewForm,A as getMainProductVariantType,C as getMainProductVariantValue,z as getProductAvailableStockLocations,M as getProductCampaigns,fn as getProductCategoryPath,vn as getProductFirstCategory,G as getProductHref,N as getProductOptionSet,R as getSelectedProductVariant,k as getSelectedProductVariantHref,E as hasProductStock,L as hasProductValidOptionValues,O as hasProductVariant,X as initBundleProducts,x as initProductOnBrowser,W as initProductOptionSet,Q as isAddToCartEnabled,Z as isBundleProductQuantityEditable,_ as isCustomerReviewEnabled,B as isCustomerReviewLoginRequired,hn as isFavoriteIkasProduct,K as refreshProductsPrices,gn as removeIkasProductFromFavorites,D as selectVariantValue,dn as setBundleProductQuantity,ln as setOptionRealPrices,sn as setProductOfBundleProduct,$ as shouldDisplayBundleProductPrice,H as updateProductPrices};
@@ -1,16 +1,19 @@
1
- import { BackInStockNotificationForm, IkasAppliedCampaignAmount, IkasProductAttributeMap, IkasProductPrice, IkasProductVariant } from "../../../../storefront-models/src";
1
+ import { BackInStockNotificationForm, IkasAppliedCampaignAmount, IkasProductAttributeMap, IkasProductPrice, IkasProductVariant, IkasTieredDiscountProduct } from "../../../../storefront-models/src";
2
2
  /**
3
- * Get the main/primary image for a product variant.
3
+ * Get the main/primary media item for a product variant.
4
+ *
5
+ * The returned IkasProductImage may be a video (`isVideo === true`) — branch on it
6
+ * and render `<video>` instead of `<img>`.
4
7
  *
5
8
  * @ai-category ProductDetail, ProductList
6
9
  * @ai-related getSelectedProductVariant
7
10
  *
8
11
  * @param variant - The product variant
9
- * @returns The first IkasProductImage of the variant, or undefined if no images. Access `.image` to get the IkasImage for CDN helpers.
12
+ * @returns The first IkasProductImage of the variant, or undefined if no images. Check `.isVideo` to decide between `<video>` and `<img>`, and access `.image` to get the IkasImage for CDN helpers.
10
13
  *
11
14
  * @example
12
15
  * ```typescript
13
- * import { getProductVariantMainImage, getSelectedProductVariant, getDefaultSrc } from "@ikas/bp-storefront";
16
+ * import { getProductVariantMainImage, getSelectedProductVariant, getDefaultSrc, createMediaSrcset } from "@ikas/bp-storefront";
14
17
  * import { IkasProduct } from "@ikas/bp-storefront";
15
18
  *
16
19
  * function ProductImage({ product }: { product: IkasProduct }) {
@@ -22,7 +25,14 @@ import { BackInStockNotificationForm, IkasAppliedCampaignAmount, IkasProductAttr
22
25
  * return <div className="no-image">No image available</div>;
23
26
  * }
24
27
  *
25
- * return <img src={getDefaultSrc(image)} alt={product.name} />;
28
+ * // Media can be a video — branch on isVideo:
29
+ * return productImage.isVideo ? (
30
+ * <video src={getDefaultSrc(image)} muted playsInline loop>
31
+ * <track kind="captions" />
32
+ * </video>
33
+ * ) : (
34
+ * <img src={getDefaultSrc(image)} srcSet={createMediaSrcset(image)} alt={product.name} />
35
+ * );
26
36
  * }
27
37
  * ```
28
38
  */
@@ -328,11 +338,19 @@ export declare function getProductVariantFormattedBuyPrice(variant: IkasProductV
328
338
  /**
329
339
  * Get the applied campaign discount amount details for a product variant, including type and formatted value.
330
340
  *
341
+ * How the discount value is interpreted depends on `campaign.type`:
342
+ * - `"FIXED_AMOUNT"` → the value is an absolute money amount, returned in `formattedPrice` (e.g. "$10.00"); `discountPercentage` stays null.
343
+ * - `"RATIO"` → the value is a percentage, returned in `discountPercentage` (e.g. "10" for 10% off); `formattedPrice` stays null.
344
+ *
345
+ * Both fixed and tiered campaigns are supported. For a tiered-discount campaign
346
+ * (`campaign.fixedDiscount` is null and the discount lives in `campaign.tieredDiscount.rules`),
347
+ * the first tier's amount (`campaign.tieredDiscount.rules[0].amount`) is used, matching the storefront runtime.
348
+ *
331
349
  * @ai-category Pricing, ProductVariant
332
350
  * @ai-related getProductVariantCampaignPrice, getProductVariantFormattedCampaignPrice, hasProductVariantDiscount
333
351
  *
334
352
  * @param variant - The product variant to check for applied campaigns
335
- * @returns An object with campaign type, formatted price, and discount percentage, or null if no campaign is applied
353
+ * @returns An object `{ type, formattedPrice, discountPercentage }` — `formattedPrice` is set for FIXED_AMOUNT campaigns, `discountPercentage` for RATIO campaigns (fixed and tiered alike); the other field stays null. Returns null if no campaign is applied.
336
354
  *
337
355
  * @example
338
356
  * ```typescript
@@ -700,6 +718,78 @@ export declare function getProductVariantFormattedSellPriceWithCampaignOffers(va
700
718
  * ```
701
719
  */
702
720
  export declare function getProductVariantCampaignOffersDiscountPercentage(variant: IkasProductVariant): number;
721
+ /**
722
+ * Get the tiered-discount breakdown for a product variant, one entry per discount tier.
723
+ *
724
+ * A tiered discount defines multiple quantity tiers (`campaign.tieredDiscount.rules`), each with its own
725
+ * amount and quantity range. This resolves every tier against the variant's price and returns the
726
+ * per-tier sell/final prices (both raw numbers and formatted strings), matching the storefront runtime.
727
+ * The raw rules are `IkasProductTieredDiscountRule` (ranges may be null); this function returns the
728
+ * resolved `IkasTieredDiscountProduct` with normalized `{ min, max }` — use the resolved shape, not the raw rule.
729
+ *
730
+ * `sellPrice`/`finalPrice` (and their `formatted*` variants) are PER UNIT; the `*WithQuantity` fields are the
731
+ * tier total for buying the minimum quantity. A `"FIXED_AMOUNT"` discount is applied only to that total, so
732
+ * per-unit `finalPrice` equals `sellPrice` and the saving shows only in `finalPriceWithQuantity`.
733
+ *
734
+ * The discount `amount` is interpreted by `campaign.type`: `"RATIO"` treats it as a percentage,
735
+ * `"FIXED_AMOUNT"` as an absolute money amount subtracted from the tier total. `amount`/`type` are
736
+ * informational — the discount is already applied in the resolved `*Price` fields, so prefer those over
737
+ * recomputing it yourself.
738
+ *
739
+ * `lineItemQuantityRange.min`/`max` are normalized numbers where `0` means "unbounded". In particular
740
+ * `max === 0` marks an open-ended top tier (e.g. "6+" with no upper limit) — render it as "min+" rather
741
+ * than "min–max", and never treat `max` as a real quantity when it is `0`.
742
+ *
743
+ * Each tier's `salesChannelIds` lists the channels it targets (empty/null = all channels). Filter tiers
744
+ * against `IkasStorefrontConfig.salesChannelId` so only those valid for the current storefront are shown.
745
+ *
746
+ * Returns an empty array when the variant has no tiered-discount campaign, when a
747
+ * `PRODUCT_AND_VARIANT` filter excludes this variant, or when no tier defines a quantity range.
748
+ *
749
+ * @ai-category Pricing, ProductVariant
750
+ * @ai-related getProductVariantAppliedCampaignAmount, getProductVariantCampaignOffersDiscountPercentage, getProductVariantFinalPrice
751
+ *
752
+ * @param variant - The product variant to resolve tiered discounts for
753
+ * @returns An array of tier objects (`amount`, `lineItemQuantityRange`, `type`, sell/final prices with their formatted variants, `salesChannelIds`), or an empty array if no tiered discount applies
754
+ *
755
+ * @example
756
+ * ```typescript
757
+ * import {
758
+ * getProductVariantTieredDiscountProducts,
759
+ * getSelectedProductVariant,
760
+ * IkasStorefrontConfig,
761
+ * } from "@ikas/bp-storefront";
762
+ * import { IkasProduct } from "@ikas/bp-storefront";
763
+ *
764
+ * function TieredDiscountTable({ product }: { product: IkasProduct }) {
765
+ * const variant = getSelectedProductVariant(product);
766
+ * const tiers = getProductVariantTieredDiscountProducts(variant);
767
+ * const salesChannelId = IkasStorefrontConfig.salesChannelId;
768
+ *
769
+ * if (!tiers.length) return null;
770
+ *
771
+ * return (
772
+ * <ul>
773
+ * {tiers.map((tier, i) => {
774
+ * // A tier applies when it targets no channels or includes the current one
775
+ * const scoped =
776
+ * !tier.salesChannelIds?.length ||
777
+ * (!!salesChannelId && tier.salesChannelIds.includes(salesChannelId));
778
+ * if (!scoped) return null;
779
+ *
780
+ * return (
781
+ * <li key={i}>
782
+ * Buy {tier.lineItemQuantityRange.min}+ → {tier.formattedFinalPriceWithQuantity}{" "}
783
+ * <s>{tier.formattedSellPriceWithQuantity}</s>
784
+ * </li>
785
+ * );
786
+ * })}
787
+ * </ul>
788
+ * );
789
+ * }
790
+ * ```
791
+ */
792
+ export declare function getProductVariantTieredDiscountProducts(variant: IkasProductVariant): IkasTieredDiscountProduct[];
703
793
  /**
704
794
  * Check if the back-in-stock notification feature is enabled for the storefront.
705
795
  *
@@ -1 +1 @@
1
- import{__awaiter as r,__generator as n}from'./../../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as i}from"../../../../packages/storefront-config/src/index.js";import{customerStore as t}from"../../../../stores/customer/index.js";import{formatCurrency as e}from"../../../../utils/currency.js";import{groupBy as u}from"../../../../utils/helper.js";import{initBackInStockNotificationForm as o}from"../../validator/back-in-stock-notification/index.js";import{getBundleProductFinalPriceWithQuantity as c,getBundleProductSellPriceWithQuantity as d,getSelectedProductVariant as l}from"../index.js";import{isProductOfferAccepted as a}from"../campaign-offer/index.js";import{getProductFromStore as s}from"../init.js";import{getIkasProductPriceFinalPrice as v}from"./price/index.js";function f(r){var n;return(null===(n=r.images)||void 0===n?void 0:n.length)?r.images[0]:void 0}function m(r){return r.stock>0||r.sellIfOutOfStock}function p(r){var n,i=u(r.attributes,"productAttributeId");return(null===(n=r.attributes)||void 0===n?void 0:n.map(function(r){var n=r.productAttributeId;if(n){var t=i[n];return(null==t?void 0:t.length)&&t[0].productAttribute?{attribute:t[0].productAttribute,values:t}:void 0}}).filter(function(r){return!!r}))||[]}function y(r){var n,i,e=t.customer,u=null==e?void 0:e.priceListRules,o=s(r.id),c=function(n){var i,t,e,u;if("CATEGORY"===n.type)return c=null===(i=n.valueList)||void 0===i?void 0:i.some(function(r){return null==o?void 0:o.categories.find(function(n){return n.id===r})});if("PRODUCT"===n.type)return c=null===(t=n.valueList)||void 0===t?void 0:t.some(function(n){return r.id===n});if("PRODUCT_BRAND"===n.type){var c=null===(e=n.valueList)||void 0===e?void 0:e.some(function(r){var n;return(null===(n=null==o?void 0:o.brand)||void 0===n?void 0:n.id)===r});return c}if("PRODUCT_TAG"===n.type){c=null===(u=n.valueList)||void 0===u?void 0:u.some(function(r){var n;return null===(n=null==o?void 0:o.tags)||void 0===n?void 0:n.find(function(n){return n.id===r})});return c}};if(u){for(var d=0,l=u;d<l.length;d++){var a=l[d];if(a.shouldMatchAllFilters?null===(n=a.filters)||void 0===n?void 0:n.every(c):null===(i=a.filters)||void 0===i?void 0:i.some(c))return a}return null}return null}function b(r){var n,e;if(i.isB2BStorefront()){var u=t.customer;if(null==u?void 0:u.priceListId){var o=null===(n=r.prices)||void 0===n?void 0:n.find(function(r){return r.priceListId===u.priceListId});if(o)return o}}return null===(e=r.prices)||void 0===e?void 0:e.find(function(r){return i.priceListId?r.priceListId===i.priceListId:null===r.priceListId})}function I(r){return!!r.bundleSettings}function S(r){var n,e;if(i.isB2BStorefront()){var u=t.customer;if(null==u?void 0:u.priceListId){var o=null===(n=r.baseBundlePrices)||void 0===n?void 0:n.find(function(r){return r.priceListId===u.priceListId});if(o)return o}}return(null===(e=r.baseBundlePrices)||void 0===e?void 0:e.find(function(r){return i.priceListId?r.priceListId===i.priceListId:null===r.priceListId}))||b(r)}function g(r){var n=0;if(r.bundleSettings&&r.bundleSettings.products.every(function(r){return!!r.product})){var i=S(r);n=v(i)+r.bundleSettings.products.reduce(function(r,n){return r+(n.addToBundleBasePrice?c(n):0)},0)}else n=v(b(r));var t=y(r);if(!t)return n;switch(t.valueType){case"DISCOUNT_RATE":return n*((100-t.value)/100);case"DISCOUNT_AMOUNT":return n-t.value;case"FIXED_PRICE":return t.value;default:return n}}function k(r){var n=b(r);return e(g(r),n.currency||"",n.currencySymbol||"")}function P(r){return r.bundleSettings&&r.bundleSettings.products.every(function(r){return!!r.product})?S(r).sellPrice+r.bundleSettings.products.reduce(function(r,n){return r+(n.addToBundleBasePrice?d(n):0)},0):b(r).sellPrice}function L(r){var n=b(r);return e(P(r),n.currency||"",n.currencySymbol||"")}function B(r){var n=b(r);return e(b(r).buyPrice||0,n.currency||"",n.currencySymbol||"")}function R(r){var n,i,t,u,o,c,d=s(r.id),l=b(r);if(!(null===(n=l.campaignPrice)||void 0===n?void 0:n.campaignId))return null;var a=(null===(t=null===(i=null==d?void 0:d.campaigns)||void 0===i?void 0:i.find(function(r){var n;return r.campaign.id===(null===(n=l.campaignPrice)||void 0===n?void 0:n.campaignId)}))||void 0===t?void 0:t.campaign)||null;if(!a)return null;var v={type:a.type,formattedPrice:null,discountPercentage:null};return"FIXED_AMOUNT"===a.type&&(v.formattedPrice=e((null===(u=a.fixedDiscount)||void 0===u?void 0:u.amount)||0,l.currency||"",l.currencySymbol||"")),"RATIO"===a.type&&(v.discountPercentage=(null===(c=null===(o=a.fixedDiscount)||void 0===o?void 0:o.amount)||void 0===c?void 0:c.toString())||null),v}function T(r){var n;return(null===(n=b(r).campaignPrice)||void 0===n?void 0:n.campaignPrice)||null}function A(r){var n=b(r);return e(T(r)||0,n.currency||"",n.currencySymbol||"")}function j(r){var n=g(r);return n===P(r)?null:n}function x(r){var n=b(r);return e(j(r)||0,n.currency||"",n.currencySymbol||"")}function _(r){return null!==j(r)}function h(r){var n=b(r);return e(F(r),n.currency||"",n.currencySymbol||"")}function F(r){var n=g(r),i=P(r);return _(r)?i-n:0}function O(r){return(100-100*g(r)/P(r)).toFixed(0)}function D(r){var n,i=g(r),t=s(r.id);return i+((null===(n=null==t?void 0:t.offers)||void 0===n?void 0:n.filter(function(r){return r.isSelected&&!a(r)}).reduce(function(r,n){return r+g(l(n.product))},0))||0)}function U(r){var n=D(r),i=b(r);return e(n,i.currency||"",i.currencySymbol||"")}function C(r){var n,i=P(r),t=s(r.id);return i+((null===(n=null==t?void 0:t.offers)||void 0===n?void 0:n.filter(function(r){return r.isSelected&&!a(r)}).reduce(function(r,n){return r+P(l(n.product))},0))||0)}function E(r){var n=C(r),i=b(r);return e(n,i.currency||"",i.currencySymbol||"")}function N(r){var n=D(r),i=C(r);return n!==i?Number((100-100*n/i).toFixed(0)):0}function q(r){return i.isBackInStockEnabled()}function M(r){return i.isCustomerLoginRequiredForBackInStock()}function w(i,t){return r(this,void 0,void 0,function(){var r,e;return n(this,function(n){switch(n.label){case 0:case 3:return[4,import("../../../api/product/index.js")];case 1:return[4,(0,n.sent().apiListProductBackInStockRemind)({email:{eq:t},productId:{eq:i.productId},variantId:{eq:i.id}})];case 2:return(r=n.sent())&&(null===(e=r.data)||void 0===e?void 0:e.length)?(i.isBackInStockReminderSaved=!0,[2,!1]):[3,3];case 4:return[4,(0,n.sent().apiSaveProductBackInStockRemind)({input:{email:t,productId:i.productId,variantId:i.id}})];case 5:return n.sent().isSuccess?(i.isBackInStockReminderSaved=!0,[2,!0]):(i.isBackInStockReminderSaved=!1,[2,!1]);case 6:return[2]}})})}function G(r){var n,i,t=s(r.id);if(!t)return"0";var u=b(r);if(u.unitPrice&&t.baseUnit){var o=t.baseUnit.baseAmount,c=(null===(i=null===(n=t.baseUnit)||void 0===n?void 0:n.unit)||void 0===i?void 0:i.name)||"";return"".concat(e(u.unitPrice,u.currency||"",u.currencySymbol||"")," / ").concat(o&&1!==o?o:"").concat(c)}}function X(r){return t._backInStockForms[r.id]||(t._backInStockForms[r.id]={},o(t._backInStockForms[r.id],r)),t._backInStockForms[r.id]}function Y(r){delete t._backInStockForms[r.id]}export{Y as clearProductVariantBackInStockForm,p as getGroupedAttributeValuesForVariant,R as getProductVariantAppliedCampaignAmount,y as getProductVariantB2bPriceRule,X as getProductVariantBackInStockForm,S as getProductVariantBundlePrice,N as getProductVariantCampaignOffersDiscountPercentage,T as getProductVariantCampaignPrice,F as getProductVariantDiscountAmount,O as getProductVariantDiscountPercentage,j as getProductVariantDiscountPrice,g as getProductVariantFinalPrice,D as getProductVariantFinalPriceWithCampaignOffers,B as getProductVariantFormattedBuyPrice,A as getProductVariantFormattedCampaignPrice,h as getProductVariantFormattedDiscountAmount,x as getProductVariantFormattedDiscountPrice,k as getProductVariantFormattedFinalPrice,U as getProductVariantFormattedFinalPriceWithCampaignOffers,L as getProductVariantFormattedSellPrice,E as getProductVariantFormattedSellPriceWithCampaignOffers,M as getProductVariantIsBackInStockCustomerLoginRequired,q as getProductVariantIsBackInStockEnabled,f as getProductVariantMainImage,b as getProductVariantPrice,P as getProductVariantSellPrice,C as getProductVariantSellPriceWithCampaignOffers,G as getProductVariantUnitPriceText,I as hasBundleSettings,_ as hasProductVariantDiscount,m as hasProductVariantStock,w as saveProductVariantBackInStockReminder};
1
+ import{__awaiter as n,__generator as r}from'./../../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as i}from"../../../../packages/storefront-config/src/index.js";import{customerStore as t}from"../../../../stores/customer/index.js";import{formatCurrency as e}from"../../../../utils/currency.js";import{groupBy as u}from"../../../../utils/helper.js";import{initBackInStockNotificationForm as o}from"../../validator/back-in-stock-notification/index.js";import{getBundleProductFinalPriceWithQuantity as c,getBundleProductSellPriceWithQuantity as l,getSelectedProductVariant as d}from"../index.js";import{isProductOfferAccepted as a}from"../campaign-offer/index.js";import{getProductFromStore as v}from"../init.js";import{getIkasProductPriceFinalPrice as s}from"./price/index.js";function f(n){var r;return(null===(r=n.images)||void 0===r?void 0:r.length)?n.images[0]:void 0}function m(n){return n.stock>0||n.sellIfOutOfStock}function p(n){var r,i=u(n.attributes,"productAttributeId");return(null===(r=n.attributes)||void 0===r?void 0:r.map(function(n){var r=n.productAttributeId;if(r){var t=i[r];return(null==t?void 0:t.length)&&t[0].productAttribute?{attribute:t[0].productAttribute,values:t}:void 0}}).filter(function(n){return!!n}))||[]}function y(n){var r,i,e=t.customer,u=null==e?void 0:e.priceListRules,o=v(n.id),c=function(r){var i,t,e,u;if("CATEGORY"===r.type)return c=null===(i=r.valueList)||void 0===i?void 0:i.some(function(n){return null==o?void 0:o.categories.find(function(r){return r.id===n})});if("PRODUCT"===r.type)return c=null===(t=r.valueList)||void 0===t?void 0:t.some(function(r){return n.id===r});if("PRODUCT_BRAND"===r.type){var c=null===(e=r.valueList)||void 0===e?void 0:e.some(function(n){var r;return(null===(r=null==o?void 0:o.brand)||void 0===r?void 0:r.id)===n});return c}if("PRODUCT_TAG"===r.type){c=null===(u=r.valueList)||void 0===u?void 0:u.some(function(n){var r;return null===(r=null==o?void 0:o.tags)||void 0===r?void 0:r.find(function(r){return r.id===n})});return c}};if(u){for(var l=0,d=u;l<d.length;l++){var a=d[l];if(a.shouldMatchAllFilters?null===(r=a.filters)||void 0===r?void 0:r.every(c):null===(i=a.filters)||void 0===i?void 0:i.some(c))return a}return null}return null}function I(n){var r,e;if(i.isB2BStorefront()){var u=t.customer;if(null==u?void 0:u.priceListId){var o=null===(r=n.prices)||void 0===r?void 0:r.find(function(n){return n.priceListId===u.priceListId});if(o)return o}}return null===(e=n.prices)||void 0===e?void 0:e.find(function(n){return i.priceListId?n.priceListId===i.priceListId:null===n.priceListId})}function S(n){return!!n.bundleSettings}function b(n){var r,e;if(i.isB2BStorefront()){var u=t.customer;if(null==u?void 0:u.priceListId){var o=null===(r=n.baseBundlePrices)||void 0===r?void 0:r.find(function(n){return n.priceListId===u.priceListId});if(o)return o}}return(null===(e=n.baseBundlePrices)||void 0===e?void 0:e.find(function(n){return i.priceListId?n.priceListId===i.priceListId:null===n.priceListId}))||I(n)}function g(n){var r=0;if(n.bundleSettings&&n.bundleSettings.products.every(function(n){return!!n.product})){var i=b(n);r=s(i)+n.bundleSettings.products.reduce(function(n,r){return n+(r.addToBundleBasePrice?c(r):0)},0)}else r=s(I(n));var t=y(n);if(!t)return r;switch(t.valueType){case"DISCOUNT_RATE":return r*((100-t.value)/100);case"DISCOUNT_AMOUNT":return r-t.value;case"FIXED_PRICE":return t.value;default:return r}}function P(n){var r=I(n);return e(g(n),r.currency||"",r.currencySymbol||"")}function k(n){return n.bundleSettings&&n.bundleSettings.products.every(function(n){return!!n.product})?b(n).sellPrice+n.bundleSettings.products.reduce(function(n,r){return n+(r.addToBundleBasePrice?l(r):0)},0):I(n).sellPrice}function R(n){var r=I(n);return e(k(n),r.currency||"",r.currencySymbol||"")}function L(n){var r=I(n);return e(I(n).buyPrice||0,r.currency||"",r.currencySymbol||"")}function D(n){var r,i,t,u,o,c,l,d,a,s,f,m,p=v(n.id),y=I(n);if(!(null===(r=y.campaignPrice)||void 0===r?void 0:r.campaignId))return null;var S=(null===(t=null===(i=null==p?void 0:p.campaigns)||void 0===i?void 0:i.find(function(n){var r;return n.campaign.id===(null===(r=y.campaignPrice)||void 0===r?void 0:r.campaignId)}))||void 0===t?void 0:t.campaign)||null;if(!S)return null;var b={type:S.type,formattedPrice:null,discountPercentage:null},g=(null==S?void 0:S.tieredDiscount)&&(null===(u=null==S?void 0:S.tieredDiscount)||void 0===u?void 0:u.rules)&&(null===(c=null===(o=null==S?void 0:S.tieredDiscount)||void 0===o?void 0:o.rules)||void 0===c?void 0:c.length)>0&&(null===(a=null===(d=null===(l=null==S?void 0:S.tieredDiscount)||void 0===l?void 0:l.rules)||void 0===d?void 0:d[0])||void 0===a?void 0:a.amount);return"FIXED_AMOUNT"===S.type&&(b.formattedPrice=e(S.fixedDiscount?(null===(s=S.fixedDiscount)||void 0===s?void 0:s.amount)||0:g||0,y.currency||"",y.currencySymbol||"")),"RATIO"===S.type&&(b.discountPercentage=S.fixedDiscount?(null===(m=null===(f=S.fixedDiscount)||void 0===f?void 0:f.amount)||void 0===m?void 0:m.toString())||null:g?g.toString():null),b}function h(n){var r;return(null===(r=I(n).campaignPrice)||void 0===r?void 0:r.campaignPrice)||null}function A(n){var r=I(n);return e(h(n)||0,r.currency||"",r.currencySymbol||"")}function B(n){var r=g(n);return r===k(n)?null:r}function T(n){var r=I(n);return e(B(n)||0,r.currency||"",r.currencySymbol||"")}function x(n){return null!==B(n)}function _(n){var r=I(n);return e(F(n),r.currency||"",r.currencySymbol||"")}function F(n){var r=g(n),i=k(n);return x(n)?i-r:0}function O(n){return(100-100*g(n)/k(n)).toFixed(0)}function j(n){var r,i=g(n),t=v(n.id);return i+((null===(r=null==t?void 0:t.offers)||void 0===r?void 0:r.filter(function(n){return n.isSelected&&!a(n)}).reduce(function(n,r){return n+g(d(r.product))},0))||0)}function C(n){var r=j(n),i=I(n);return e(r,i.currency||"",i.currencySymbol||"")}function U(n){var r,i=k(n),t=v(n.id);return i+((null===(r=null==t?void 0:t.offers)||void 0===r?void 0:r.filter(function(n){return n.isSelected&&!a(n)}).reduce(function(n,r){return n+k(d(r.product))},0))||0)}function Q(n){var r=U(n),i=I(n);return e(r,i.currency||"",i.currencySymbol||"")}function E(n){var r=j(n),i=U(n);return r!==i?Number((100-100*r/i).toFixed(0)):0}function N(n){var r,i,t,u=v(n.id),o=I(n),c=null===(i=null===(r=null==u?void 0:u.campaigns)||void 0===r?void 0:r.find(function(n){return!!n.campaign.tieredDiscount}))||void 0===i?void 0:i.campaign,l=null==c?void 0:c.tieredDiscount;if(!c||!l)return[];var d=null===(t=l.filters)||void 0===t?void 0:t.find(function(n){return"PRODUCT_AND_VARIANT"===n.type});if(d&&!d.idList.map(function(n){return n.replace("p:","").replace("v:","")}).some(function(r){return n.id===r||n.productId===r}))return[];if(l.rules.every(function(n){return!n.lineItemQuantityRange}))return[];var a=k(n),s=g(n);return l.rules.map(function(n){var r,i,t,u,l="SELL_PRICE"===c.applicablePrice?a:s,d=l*((null===(r=n.lineItemQuantityRange)||void 0===r?void 0:r.min)||1),v="RATIO"===c.type?l-l*(n.amount||1)/100:l,f=v*((null===(i=n.lineItemQuantityRange)||void 0===i?void 0:i.min)||1)-("FIXED_AMOUNT"===c.type&&n.amount||0);return{amount:n.amount,lineItemQuantityRange:{min:(null===(t=n.lineItemQuantityRange)||void 0===t?void 0:t.min)||0,max:(null===(u=n.lineItemQuantityRange)||void 0===u?void 0:u.max)||0},type:c.type,sellPrice:l,finalPrice:v,sellPriceWithQuantity:d,finalPriceWithQuantity:f,formattedSellPrice:e(l,o.currency||"",o.currencySymbol||""),formattedSellPriceWithQuantity:e(d,o.currency||"",o.currencySymbol||""),formattedFinalPrice:e(v,o.currency||"",o.currencySymbol||""),formattedFinalPriceWithQuantity:e(f,o.currency||"",o.currencySymbol||""),salesChannelIds:c.salesChannelIds}})}function q(n){return i.isBackInStockEnabled()}function M(n){return i.isCustomerLoginRequiredForBackInStock()}function W(i,t){return n(this,void 0,void 0,function(){var n,e;return r(this,function(r){switch(r.label){case 0:case 3:return[4,import("../../../api/product/index.js")];case 1:return[4,(0,r.sent().apiListProductBackInStockRemind)({email:{eq:t},productId:{eq:i.productId},variantId:{eq:i.id}})];case 2:return(n=r.sent())&&(null===(e=n.data)||void 0===e?void 0:e.length)?(i.isBackInStockReminderSaved=!0,[2,!1]):[3,3];case 4:return[4,(0,r.sent().apiSaveProductBackInStockRemind)({input:{email:t,productId:i.productId,variantId:i.id}})];case 5:return r.sent().isSuccess?(i.isBackInStockReminderSaved=!0,[2,!0]):(i.isBackInStockReminderSaved=!1,[2,!1]);case 6:return[2]}})})}function X(n){var r,i,t=v(n.id);if(!t)return"0";var u=I(n);if(u.unitPrice&&t.baseUnit){var o=t.baseUnit.baseAmount,c=(null===(i=null===(r=t.baseUnit)||void 0===r?void 0:r.unit)||void 0===i?void 0:i.name)||"";return"".concat(e(u.unitPrice,u.currency||"",u.currencySymbol||"")," / ").concat(o&&1!==o?o:"").concat(c)}}function w(n){return t._backInStockForms[n.id]||(t._backInStockForms[n.id]={},o(t._backInStockForms[n.id],n)),t._backInStockForms[n.id]}function G(n){delete t._backInStockForms[n.id]}export{G as clearProductVariantBackInStockForm,p as getGroupedAttributeValuesForVariant,D as getProductVariantAppliedCampaignAmount,y as getProductVariantB2bPriceRule,w as getProductVariantBackInStockForm,b as getProductVariantBundlePrice,E as getProductVariantCampaignOffersDiscountPercentage,h as getProductVariantCampaignPrice,F as getProductVariantDiscountAmount,O as getProductVariantDiscountPercentage,B as getProductVariantDiscountPrice,g as getProductVariantFinalPrice,j as getProductVariantFinalPriceWithCampaignOffers,L as getProductVariantFormattedBuyPrice,A as getProductVariantFormattedCampaignPrice,_ as getProductVariantFormattedDiscountAmount,T as getProductVariantFormattedDiscountPrice,P as getProductVariantFormattedFinalPrice,C as getProductVariantFormattedFinalPriceWithCampaignOffers,R as getProductVariantFormattedSellPrice,Q as getProductVariantFormattedSellPriceWithCampaignOffers,M as getProductVariantIsBackInStockCustomerLoginRequired,q as getProductVariantIsBackInStockEnabled,f as getProductVariantMainImage,I as getProductVariantPrice,k as getProductVariantSellPrice,U as getProductVariantSellPriceWithCampaignOffers,N as getProductVariantTieredDiscountProducts,X as getProductVariantUnitPriceText,S as hasBundleSettings,x as hasProductVariantDiscount,m as hasProductVariantStock,W as saveProductVariantBackInStockReminder};
@@ -538,6 +538,27 @@ export declare function getProductListNextPage(list: IkasProductList): Promise<v
538
538
  * ```
539
539
  */
540
540
  export declare function getProductListPage(list: IkasProductList, page: number): Promise<void>;
541
+ /**
542
+ * Re-fetches the latest variant prices of the products in the list and applies them in place.
543
+ * Useful when the page is served from cache but prices change frequently (e.g. gold prices),
544
+ * call it once the list is mounted on the browser.
545
+ *
546
+ * @ai-category ProductList, Pricing
547
+ * @ai-related updateProductPrices, getProductListPage
548
+ *
549
+ * @param list - The product list to refresh prices for
550
+ * @returns void
551
+ *
552
+ * @example
553
+ * ```typescript
554
+ * import { updateProductListPrices } from "@ikas/bp-storefront";
555
+ *
556
+ * useEffect(() => {
557
+ * updateProductListPrices(productList);
558
+ * }, [productList]);
559
+ * ```
560
+ */
561
+ export declare function updateProductListPrices(list: IkasProductList): Promise<void>;
541
562
  /**
542
563
  * Sets the sort type for the product list and re-fetches data with the new sort order applied.
543
564
  *
@@ -1 +1 @@
1
- import{__assign as e,__awaiter as t,__generator as r}from'./../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as n}from"../../../packages/storefront-config/src/index.js";import i from'./../../../ext/lodash/cloneDeep.js';import{I18n as a}from"../../../i18n/index.js";import{Router as o,withRoutePrefix as s}from"../../../router/index.js";import{customerStore as u}from"../../../stores/customer/index.js";import{isClient as d,isBackNavigation as l,getQueryParams as c,debounce as f,stringToSlug as v,stringifyQueryParams as p}from"../../../utils/helper.js";import{setSavedLastViewedProductsResponse as g,getLastViewedProducts as I,waitForCustomerStoreInit as E}from"../../stores/customer/index.js";import{getIkasFilterCategorySlug as C,getIkasFilterCategoryHref as S}from"../filter-category/index.js";import{getFilterValueList as A,clearFilter as y,selectFilterValue as T,onNumberRangeFilterOptionClick as R,getFilterKeyList as D,applyQueryParamForFilter as h,initIkasProductFilter as _,isCustomValueFilter as m}from"../product/filter/index.js";import{getProductVariantPrice as b,hasProductVariantStock as N}from"../product/variant/index.js";var L;function O(t){var r=e({data:[],limit:10,page:1,count:0,isInitialized:!1,isLoading:!1,type:"ALL",sort:"DEFAULT",searchKeyword:"",pageType:"CATEGORY",category:null,brand:null,productListPropValue:{id:"",productIds:[],initialLimit:10,productListType:"ALL"}},t);return function(e){var t;if((null===(t=e.pageSpecificData)||void 0===t?void 0:t.orderType)&&["ALL"].includes(e.type))switch(e.pageSpecificData.orderType){case"HIGHEST_DISCOUNT_RATIO":e.sort="DECRASING_DISCOUNT";break;case"LOWEST_DISCOUNT_RATIO":e.sort="INCREASING_DISCOUNT";break;case"HIGHEST_PRICE":e.sort="DECREASING_PRICE";break;case"LOWEST_PRICE":e.sort="INCREASING_PRICE";break;case"NEWEST":e.sort="LAST_ADDED";break;case"OLDEST":e.sort="FIRST_ADDED";break;case"MANUALLY":e.sort="FEATURED"}}(r),z(r),J(r),r}function P(e){var t;if(d()&&(!l()||!o.isFromBFCache)){!function(e){var t=c(),r=null==t?void 0:t.get("page");if(r){var n=parseInt(r);isNaN(n)||(e.page=n,e.infiniteScrollPage=n)}}(e);if(["CATEGORY","BRAND","SEARCH"].includes(e.pageType)&&location.search&&U(e)&&((null===(t=e.productListPropValue)||void 0===t?void 0:t.usePageFilter)||"SEARCH"===e.type))le(e,c(),e.page>1);else e.page>1?le(e,void 0,!0):k(e)?le(e):Re(e)}}function G(e,t){t!==e.searchKeyword&&(e.searchKeyword=t,_e(e),me(e))}function U(e){return"ALL"===e.type||"CATEGORY"===e.type}function V(e){var t,r;return(null===(t=e.filters)||void 0===t?void 0:t.some(function(e){return!!A(e).length}))||!!e.searchKeyword||"CATEGORY"!==e.pageType&&(!!e.filterCategoryId||!!(null===(r=e.filterCategories)||void 0===r?void 0:r.some(function(e){return e.isSelected})))}function w(e){return"STATIC"===e.type}function F(e){return"DISCOUNTED"===e.type}function j(e){return"RECOMMENDED"===e.type}function k(e){return"LAST_VIEWED"===e.type}function x(e){return"RELATED_PRODUCTS"===e.type}function H(e){return"VIEWED_TOGETHER"===e.type}function W(e){return"PURCHASED_TOGETHER"===e.type}function K(e){return"SEARCH"===e.type}function B(e){return!(w(e)||F(e)||j(e)||!e.minPage)&&e.minPage>1}function Y(e){return!(w(e)||F(e)||j(e))&&e.page*e.limit<e.count}function Z(e){var t;return(null===(t=e.filterCategories)||void 0===t?void 0:t.filter(function(e){return 0!==e.resultCount}))||[]}function M(e){var t;return!!e.searchKeyword||!!(null===(t=e.filters)||void 0===t?void 0:t.some(function(e){return!!A(e).length}))}function q(e){var t;return"MANUALLY"===(null===(t=e.pageSpecificData)||void 0===t?void 0:t.orderType)&&["ALL","CATEGORY"].includes(e.type)}function z(e){var t=V(e);e.data.forEach(function(e){return e.isFiltered=t||!1})}function J(e){var t=w(e);e.data.forEach(function(e){return e.isFiltered=t||!1})}function X(e){e._enableSuggestions=!0}function Q(e){var t={};return e.categoryId&&(t.categoryId=e.categoryId),e.brandId&&(t.brandId=e.brandId),Object.keys(t).length?s("/search?suggestion=".concat(encodeURIComponent(JSON.stringify(t)))):s("/search")}function $(i,a,o,s){return t(this,void 0,void 0,function(){var t,u,d,l,f,v,p,g,I,E,C,S,y,T,R,D;return r(this,function(r){switch(r.label){case 0:return t=[],u=[],null===(S=i.filters)||void 0===S||S.forEach(function(e){var r=A(e);r.length&&t.push({id:e.id,type:e.type,displayType:e.displayType,valueList:r}),e.isFacetFilter&&u.push({id:e.id,type:e.type,displayType:e.displayType})}),d=c(),(l=null==d?void 0:d.get("suggestion"))&&(f=JSON.parse(decodeURIComponent(l)),(v=f.brandId)&&((p=null===(y=i.filters)||void 0===y?void 0:y.find(function(e){return"brand"===e.id&&"BRAND"===e.type}))&&(g=null===(T=p.values)||void 0===T?void 0:T.find(function(e){return e.id===v}))&&h(p,g.name),t.push({id:"brand",type:"BRAND",displayType:"BOX",valueList:[v]})),f.categoryId&&(i.filterCategoryId=f.categoryId),i.searchKeyword=f.term),I=null===(R=i.filterCategories)||void 0===R?void 0:R.filter(function(e){return e.isSelected}).map(function(e){return e.id}),E=function(e){var t,r;switch(e.sort){case"INCREASING_PRICE":t="ASC",r="PRICE";break;case"DECREASING_PRICE":t="DESC",r="PRICE";break;case"FIRST_ADDED":t="ASC",r="CREATED_AT";break;case"LAST_ADDED":t="DESC",r="CREATED_AT";break;case"INCREASING_DISCOUNT":t="ASC",r="DISCOUNT_RATIO";break;case"DECRASING_DISCOUNT":t="DESC",r="DISCOUNT_RATIO";break;case"FEATURED":if(K(e))return;t="ASC",r="MANUAL_SORT";break;case"DEFAULT":t=void 0,r=void 0;break;case"AVERAGE_RATING":t="DESC",r="AVERAGE_RATING";break;case"REVIEW_COUNT":t="DESC",r="REVIEW_COUNT";break;case"SALE_COUNT":t="DESC",r="SALE_COUNT";break;case"A_Z":t="ASC",r="NAME";break;case"Z_A":t="DESC",r="NAME"}if(t&&r)return{direction:t,type:r}}(i),j(i)&&i.recommendedProductData?[4,import("../../api/product/index.js")]:[3,3];case 1:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,brandIds:i.recommendedProductData.brandIds,categoryIds:i.recommendedProductData.categoryIds,locale:n.getCurrentLocale()})];case 2:case 5:case 8:case 11:case 14:return[2,r.sent()];case 3:return x(i)&&i.relatedProductData?[4,import("../../api/product/index.js")]:[3,6];case 4:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,productId:i.relatedProductData.productId,brandIds:i.relatedProductData.brandIds,categoryIds:i.relatedProductData.categoryIds,locale:n.getCurrentLocale()})];case 6:return H(i)&&i.viewedTogetherProductData?[4,import("../../api/product/index.js")]:[3,9];case 7:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,method:"VIEWED_TOGETHER",productIds:i.viewedTogetherProductData.productIds,locale:n.getCurrentLocale()})];case 9:return W(i)&&i.purchasedTogetherProductData?[4,import("../../api/product/index.js")]:[3,12];case 10:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,method:"PURCHASED_TOGETHER",productIds:i.purchasedTogetherProductData.productIds,locale:n.getCurrentLocale()})];case 12:return C={input:e(e(e(e({page:a,perPage:o},i._enableSuggestions?{enableSuggestions:i._enableSuggestions}:{}),{productIdList:w(i)?null===(D=i.productListPropValue.productIds)||void 0===D?void 0:D.map(function(e){return e.productId}):s,filterList:t,facetList:u}),i.baseCategoryIdList?{baseCategoryIdList:i.baseCategoryIdList}:{}),{brandId:"BRAND"===i.pageType&&"SEARCH"!==i.type?i.filterBrandId:void 0,categoryIdList:I&&I.length?I:i.filterCategoryId?[i.filterCategoryId]:void 0,priceListId:n.priceListId,salesChannelId:n.salesChannelId,query:i.searchKeyword,order:E?[E]:[],showStockOption:n.stockPreference||"SHOW_ALL"})},[4,import("../../api/product/index.js")];case 13:return[4,(0,r.sent().apiSearchProducts)(C,i.excludedFields||[])]}})})}function ee(e){return t(this,void 0,void 0,function(){var t,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:return[4,import("../../api/product/index.js")];case 1:return[4,(0,r.sent().apiGetProductFilterData)({categoryId:e.filterCategoryId?e.filterCategoryId:void 0,locale:n.getCurrentLocale()})];case 2:return t=r.sent(),e.filters=null===(a=null==t?void 0:t.data)||void 0===a?void 0:a.filters.map(function(e){return _(e)}),e.filterCategories=null===(o=null==t?void 0:t.data)||void 0===o?void 0:o.categories,ye(e),e.disabledSortTypes=null===(s=t.data)||void 0===s?void 0:s.disabledSortTypes,"CATEGORY"!==e.pageType&&e.filterCategoryId&&(i=null===(u=e.filterCategories)||void 0===u?void 0:u.find(function(t){return t.id===e.filterCategoryId}))&&(i.isSelected=!0),e.filters&&e.filters.sort(function(e,t){return e.order>t.order?1:-1}),[2]}})})}function te(e){return t(this,void 0,void 0,function(){var t;return r(this,function(r){switch(r.label){case 0:return[4,le(e)];case 1:return t=r.sent(),["CATEGORY","BRAND","SEARCH"].includes(e.pageType)?(t&&ne(e),[2]):[2]}})})}function re(e){var t,r,n,i={};if(null===(t=e.filters)||void 0===t||t.forEach(function(e){var t=D(e);t.length&&(i[v(e.name)]=t)}),e.searchKeyword&&(i.s=e.searchKeyword),e.sort&&(i.o=be[e.sort]),e.baseCategoryIdList&&(i.bc=e.baseCategoryIdList),e.suggestionCategoryId&&(i.suggestionCategoryId=e.suggestionCategoryId),e.infiniteScrollPage?i.page=e.infiniteScrollPage:i.page=e.page,"CATEGORY"!==e.pageType){var a=null===(r=e.filterCategories)||void 0===r?void 0:r.filter(function(e){return e.isSelected});if(!!(null==a?void 0:a.length))i.c=null==a?void 0:a.map(function(e){return C(e)});else if(e.filterCategoryId){var o=null===(n=e.filterCategories)||void 0===n?void 0:n.find(function(t){return t.id===e.filterCategoryId}),s=o?C(o):void 0;s&&(i.c=s)}}return p(i,{arrayFormat:"comma"})}function ne(e){if(d()&&!K(e)&&!n.isEditor){var t=re(e),r=s("".concat(location.pathname).concat(t?"?"+t:""));o.navigate(r,!0)}}function ie(e){var t,r;null===(t=e.filters)||void 0===t||t.forEach(function(e){return y(e)}),e.searchKeyword="","CATEGORY"!==e.pageType&&(e.filterCategoryId=void 0),null===(r=e.filterCategories)||void 0===r||r.forEach(function(e){return e.isSelected=!1}),te(e)}function ae(e,t){y(t),te(e)}function oe(e,t,r){T(t,r),te(e)}function se(e,t,r){R(t,r),te(e)}function ue(e){var t,r=null===(t=e.filters)||void 0===t?void 0:t.filter(function(e){var t;return null===(t=e.values)||void 0===t?void 0:t.some(function(e){return e.isSelected})});return null==r?void 0:r.map(function(e){var t,r;return e.numberRange?{filter:e,values:[e.numberRange.from+"-"+e.numberRange.to],commaSeperatedValues:e.numberRange.from+"-"+e.numberRange.to}:e.numberRangeListOptions?{filter:e,values:e.numberRangeListOptions.filter(function(e){return e.isSelected}).map(function(e){return e.from+"-"+e.to}),commaSeperatedValues:e.numberRangeListOptions.filter(function(e){return e.isSelected}).map(function(e){return e.from+"-"+e.to}).join(",")}:{filter:e,values:(null===(t=e.values)||void 0===t?void 0:t.filter(function(e){return e.isSelected}).map(function(e){return e.name}))||[],commaSeperatedValues:(null===(r=e.values)||void 0===r?void 0:r.filter(function(e){return e.isSelected}).map(function(e){return e.name}).join(","))||""}})}function de(e){return e.variants[0]}function le(e,n,a){return t(this,void 0,void 0,function(){var t,o,s,l,c,f,v,p,S,A,y,T,R,D,_,b;return r(this,function(r){switch(r.label){case 0:e.isLoading=!0,t=Date.now(),e.fetchRequestTime=t,r.label=1;case 1:return r.trys.push([1,14,15,16]),o=a?e.page:1,s=e.limit,!U(e)||e.filters?[3,3]:[4,ee(e)];case 2:r.sent(),r.label=3;case 3:return function(e,t){var r;try{null==t||t.forEach(function(t,r){var n,i=null===(n=e.filters)||void 0===n?void 0:n.find(function(e){return e.key===r});i&&h(i,t)});var n=null==t?void 0:t.get("s");n&&(e.searchKeyword=n);var i=null==t?void 0:t.get("o");if(i){var a=parseInt(i),o=Object.entries(be).find(function(e){return e[1]===a});o&&(e.sort=o[0])}if("CATEGORY"!==e.pageType){var s=null==t?void 0:t.get("c"),u=null==s?void 0:s.split(",");u&&u.length&&(null===(r=e.filterCategories)||void 0===r||r.forEach(function(e){e.isSelected=u.some(function(t){return t===C(e)})}))}if("SEARCH"===e.pageType){var d=null==t?void 0:t.get("bc"),l=null==d?void 0:d.split(",");l&&(e.baseCategoryIdList=l);var c=null==t?void 0:t.get("suggestion");if(c){var f=JSON.parse(decodeURIComponent(c)).categoryId;f&&(e.suggestionCategoryId=f)}var v=null==t?void 0:t.get("suggestionCategoryId");v&&(e.suggestionCategoryId=v,e.filterCategoryId=v)}}catch(e){console.log(e)}}(e,n),[4,fe(e)];case 4:return r.sent(),K(e)&&!M(e)?(e.data=[],e.page=1,e.minPage=1,e.count=0,e.isInitialized=!0,[2,!0]):(l=void 0,c=!1,w(e)?(o=void 0,s=200,[3,10]):[3,5]);case 5:return F(e)||j(e)?(o=1,s=10,[3,10]):[3,6];case 6:return k(e)?d()?[4,E(u)]:[3,9]:[3,10];case 7:return r.sent(),[4,I(u)];case 8:return(f=r.sent())&&f.length?(l=f.map(function(e){return e.productId}),c=u.useLastViewedProductResponse,[3,10]):[2];case 9:return[2];case 10:return c?(p=u._savedLastViewedProductsResponse,[3,13]):[3,11];case 11:return[4,$(e,o||1,s||10,l)];case 12:p=r.sent(),r.label=13;case 13:return(v=p)&&e.fetchRequestTime===t?(S=[],!c&&k(e)&&g(u,v),w(e)||k(e)?(A=w(e)?e.productListPropValue.productIds:u._lastViewedProducts,S=(null==A?void 0:A.map(function(e){var t,r,n=null===(r=null===(t=v.data)||void 0===t?void 0:t.data)||void 0===r?void 0:r.find(function(t){return t.id===e.productId}),i=null==n?void 0:n.variants.find(function(t){return t.id===e.variantId});if((null==i?void 0:i.isActive)&&N(i)||(i=null==n?void 0:n.variants.find(function(e){return e.isActive&&N(e)})),n&&i)return n.selectedVariantValues=i.variantValues,n}).filter(function(e){return!!e}))||[]):S=(null===(R=null===(T=v.data)||void 0===T?void 0:T.data)||void 0===R?void 0:R.map(function(e){var t=de(e);return e.selectedVariantValues=t.variantValues,e}))||[],null===(D=e.filters)||void 0===D||D.forEach(function(e){var t,r;if(void 0===e.isCollapsed){var n=!1;(!1===(null===(t=e.settings)||void 0===t?void 0:t.showCollapsedOnMobile)&&d()&&window.innerWidth<768||!1===(null===(r=e.settings)||void 0===r?void 0:r.showCollapsedOnDesktop))&&(n=!0),e.isCollapsed=!n}}),function(e,t){var r,n,a=i(e);null===(r=a.filters)||void 0===r||r.forEach(function(e){var r,n,i,a=null==t?void 0:t.find(function(t){return t.id===e.id});a?null===(r=e.values)||void 0===r||r.forEach(function(t){var r=a.values.find(function(e){return e.id===t.id});r?t.resultCount=r.count:m(e)?t.resultCount=null:t.resultCount=0}):m(e)?null===(n=e.values)||void 0===n||n.forEach(function(e){return e.resultCount=null}):null===(i=e.values)||void 0===i||i.forEach(function(e){return e.resultCount=0})});var o=null==t?void 0:t.find(function(e){return"category"===e.id});o&&(null===(n=a.filterCategories)||void 0===n||n.forEach(function(e){var t=o.values.find(function(t){return t.id===e.id});e.resultCount=t?t.count:0})),e.filters=a.filters,e.filterCategories=a.filterCategories,ye(e)}(e,null===(_=v.data)||void 0===_?void 0:_.facets),e.data=S,e.count=(null===(b=v.data)||void 0===b?void 0:b.count)||0,e.isInitialized=!0,e.page=o||1,e.minPage=e.page,v.data&&"suggestions"in v.data&&(e.suggestions=v.data.suggestions),z(e),J(e),a||(e.infiniteScrollPage=null),Re(e),[2,!0]):[2];case 14:return y=r.sent(),console.log(y),[3,16];case 15:return t===e.fetchRequestTime&&(e.isLoading=!1),[7];case 16:return[2]}})})}function ce(e){e.isCollapsed=!e.isCollapsed}function fe(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s,u,d,l,c;return r(this,function(r){switch(r.label){case 0:return r.trys.push([0,13,,14]),e.productListPropValue.category?[4,import("../../api/category/index.js")]:[3,3];case 1:return[4,(0,r.sent().apiListCategory)({id:{eq:e.productListPropValue.category}})];case 2:return t=r.sent(),e.category=(null===(o=null===(a=t.data)||void 0===a?void 0:a.data)||void 0===o?void 0:o[0])||null,[3,7];case 3:return e.productListPropValue.usePageFilter&&"CATEGORY"===e.pageType&&e.pageSpecificData?(e.category=e.pageSpecificData,[3,7]):[3,4];case 4:return e.filterCategoryId?[4,import("../../api/category/index.js")]:[3,7];case 5:return[4,(0,r.sent().apiListCategory)({id:{eq:e.filterCategoryId}})];case 6:t=r.sent(),e.category=(null===(u=null===(s=t.data)||void 0===s?void 0:s.data)||void 0===u?void 0:u[0])||null,r.label=7;case 7:return e.productListPropValue.usePageFilter&&"BRAND"===e.pageType&&e.pageSpecificData?(e.brand=e.pageSpecificData,[3,12]):[3,8];case 8:return e.filterBrandId?e.filterBrandId!==(null===(d=e.pageSpecificData)||void 0===d?void 0:d.id)?[3,9]:(e.brand=e.pageSpecificData,[3,12]):[3,12];case 9:return[4,import("../../api/brand/index.js")];case 10:return[4,(0,r.sent().apiListProductBrand)({id:{eq:e.filterBrandId}})];case 11:n=r.sent(),e.brand=(null===(c=null===(l=n.data)||void 0===l?void 0:l.data)||void 0===c?void 0:c[0])||null,r.label=12;case 12:return[3,14];case 13:return i=r.sent(),console.error(i),[3,14];case 14:return[2]}})})}function ve(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:if(w(e)||F(e)||j(e)||x(e)||H(e)||W(e)||k(e)||e.isLoading||!B(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),t=e.minPage-1,[4,$(e,t,e.limit)];case 2:return(n=r.sent())?(i=null===(s=null===(o=n.data)||void 0===o?void 0:o.data)||void 0===s?void 0:s.map(function(e){var t=de(e);return e.selectedVariantValues=t.variantValues,e}),e.data=(null==i?void 0:i.concat(e.data))||e.data,e.count=(null===(u=n.data)||void 0===u?void 0:u.count)||e.count,e.minPage=t,z(e),J(e),ne(e),[3,5]):[2];case 3:return a=r.sent(),console.log(a),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function pe(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s;return r(this,function(r){switch(r.label){case 0:if(w(e)||F(e)||j(e)||x(e)||H(e)||W(e)||k(e)||e.isLoading||!Y(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,$(e,e.page+1,e.limit)];case 2:return(t=r.sent())?(n=null===(o=null===(a=t.data)||void 0===a?void 0:a.data)||void 0===o?void 0:o.map(function(e){var t=de(e);return e.selectedVariantValues=t.variantValues,e}),e.data=e.data.concat(n||[]),e.count=(null===(s=t.data)||void 0===s?void 0:s.count)||e.count,e.page=e.page+1,z(e),J(e),ne(e),[3,5]):[2];case 3:return i=r.sent(),console.log(i),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function ge(e,n){return t(this,void 0,void 0,function(){var t,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:if(e.isLoading||w(e)||F(e)||j(e)||k(e)||x(e)||H(e)||W(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,$(e,n,e.limit)];case 2:return(t=r.sent())?(i=null===(s=null===(o=t.data)||void 0===o?void 0:o.data)||void 0===s?void 0:s.map(function(e){var t=de(e);return e.selectedVariantValues=t.variantValues,e}),e.data=i||[],e.count=(null===(u=t.data)||void 0===u?void 0:u.count)||0,e.page=n,e.minPage=n,z(e),J(e),ne(e),[3,5]):[2];case 3:return a=r.sent(),console.log(a),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function Ie(e,n){return t(this,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return e.sort=n,[4,le(e)];case 1:return t.sent()&&ne(e),[2]}})})}function Ee(e){return Ce(e,e.sort)}function Ce(e,t){switch(t){case"INCREASING_PRICE":return a.translate("sort_type.increasing_price");case"DECREASING_PRICE":return a.translate("sort_type.decreasing_price");case"LAST_ADDED":return a.translate("sort_type.last_added");case"FIRST_ADDED":return a.translate("sort_type.first_added");case"INCREASING_DISCOUNT":return a.translate("sort_type.increasing_discount");case"DECRASING_DISCOUNT":return a.translate("sort_type.decreasing_discount");case"FEATURED":return a.translate("sort_type.featured");case"DEFAULT":return a.translate("sort_type.default");case"AVERAGE_RATING":return a.translate("sort_type.average_rating");case"REVIEW_COUNT":return a.translate("sort_type.review_count");case"SALE_COUNT":return a.translate("sort_type.sale_count");case"A_Z":return a.translate("sort_type.a_z");case"Z_A":return a.translate("sort_type.z_a")}}function Se(e){var t,r,n,i,a,o,s,u,d=[];return(null===(t=e.disabledSortTypes)||void 0===t?void 0:t.includes("NAME"))||(d.push({label:Ce(0,"A_Z"),value:"A_Z",isSelected:"A_Z"===e.sort}),d.push({label:Ce(0,"Z_A"),value:"Z_A",isSelected:"Z_A"===e.sort})),(null===(r=e.disabledSortTypes)||void 0===r?void 0:r.includes("PRICE"))||(d.push({label:Ce(0,"INCREASING_PRICE"),value:"INCREASING_PRICE",isSelected:"INCREASING_PRICE"===e.sort}),d.push({label:Ce(0,"DECREASING_PRICE"),value:"DECREASING_PRICE",isSelected:"DECREASING_PRICE"===e.sort})),(null===(n=e.disabledSortTypes)||void 0===n?void 0:n.includes("CREATED_AT"))||(d.push({label:Ce(0,"LAST_ADDED"),value:"LAST_ADDED",isSelected:"LAST_ADDED"===e.sort}),d.push({label:Ce(0,"FIRST_ADDED"),value:"FIRST_ADDED",isSelected:"FIRST_ADDED"===e.sort})),(null===(i=e.disabledSortTypes)||void 0===i?void 0:i.includes("DISCOUNT_RATIO"))||(d.push({label:Ce(0,"INCREASING_DISCOUNT"),value:"INCREASING_DISCOUNT",isSelected:"INCREASING_DISCOUNT"===e.sort}),d.push({label:Ce(0,"DECRASING_DISCOUNT"),value:"DECRASING_DISCOUNT",isSelected:"DECRASING_DISCOUNT"===e.sort})),(null===(a=e.disabledSortTypes)||void 0===a?void 0:a.includes("MANUAL_SORT"))||d.push({label:Ce(0,"FEATURED"),value:"FEATURED",isSelected:"FEATURED"===e.sort}),(null===(o=e.disabledSortTypes)||void 0===o?void 0:o.includes("AVERAGE_RATING"))||d.push({label:Ce(0,"AVERAGE_RATING"),value:"AVERAGE_RATING",isSelected:"AVERAGE_RATING"===e.sort}),(null===(s=e.disabledSortTypes)||void 0===s?void 0:s.includes("REVIEW_COUNT"))||d.push({label:Ce(0,"REVIEW_COUNT"),value:"REVIEW_COUNT",isSelected:"REVIEW_COUNT"===e.sort}),(null===(u=e.disabledSortTypes)||void 0===u?void 0:u.includes("SALE_COUNT"))||d.push({label:Ce(0,"SALE_COUNT"),value:"SALE_COUNT",isSelected:"SALE_COUNT"===e.sort}),d}function Ae(e,i,a){return t(this,void 0,void 0,function(){var t,s,u;return r(this,function(r){switch(r.label){case 0:return a?(null===(u=e.filterCategories)||void 0===u||u.forEach(function(e){e.id===i.id&&(e.isSelected=!e.isSelected)}),[4,te(e)]):[3,2];case 1:return r.sent(),[3,3];case 2:n.isEditor||(t=re(e),s=S(i)+(t?"?"+t:""),o.navigate(s)),r.label=3;case 3:return[2]}})})}function ye(e){var t;null===(t=e.filterCategories)||void 0===t||t.forEach(function(e){e.image=e.imageId?{id:e.imageId,isVideo:!1}:null})}function Te(e,t){if(e.infiniteScrollPage!==t){e.infiniteScrollPage=t;var r=re(e);o.navigate("".concat(location.pathname).concat(r?"?"+r:""),!0)}}function Re(e){return t(this,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return e.searchKeyword&&e.data.length?[4,import("../../../analytics/analytics-functions/viewSearchResults.js")]:[3,2];case 1:return(0,t.sent().anl_viewSearchResults)(e.searchKeyword,e.data),[3,4];case 2:return e.data.length&&"ALL"===e.type?[4,import("../../../analytics/analytics-functions/viewListing.js")]:[3,4];case 3:(0,t.sent().anl_viewListing)(e.data),t.label=4;case 4:return[2]}})})}function De(e){var t=e.data[0];if(!t)return n.getDefaultCurrencyCode()||"";var r=de(t),i=b(r);return(null==i?void 0:i.currency)||n.getDefaultCurrencyCode()||""}function he(e){var t=e.data[0];if(!t)return n.getDefaultCurrencySymbol()||"";var r=de(t),i=b(r);return(null==i?void 0:i.currencySymbol)||n.getDefaultCurrencySymbol()||""}var _e=f(function(e){te(e)},500),me=f(function(e){return t(void 0,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return[4,import("../../../analytics/analytics-functions/search.js")];case 1:return(0,t.sent().anl_search)(e.searchKeyword),[2]}})})},1e3),be=((L={}).INCREASING_PRICE=1,L.DECREASING_PRICE=2,L.LAST_ADDED=3,L.FIRST_ADDED=4,L.INCREASING_DISCOUNT=5,L.DECRASING_DISCOUNT=6,L.FEATURED=7,L.DEFAULT=8,L.AVERAGE_RATING=9,L.REVIEW_COUNT=10,L.SALE_COUNT=11,L.A_Z=12,L.Z_A=13,L);export{ae as clearProductListFilter,ie as clearProductListFilters,X as enableProductListSuggestions,De as getProductListCurrencyCode,he as getProductListCurrencySymbol,Z as getProductListFilterCategories,le as getProductListInitialData,pe as getProductListNextPage,ge as getProductListPage,ve as getProductListPrevPage,Se as getProductListSortOptions,Ee as getProductListSortTypeTranslation,Q as getProductListSuggestionHref,ue as getSelectedFilterValues,oe as handleFilterValueClick,se as handleNumberRangeOptionClick,M as hasProductListAppliedFilters,q as hasProductListFeaturedSortEnabled,Y as hasProductListNextPage,B as hasProductListPrevPage,O as initProductList,ye as initProductListFilterCategories,P as initProductListOnBrowser,F as isProductListDiscounted,U as isProductListFilterable,V as isProductListFiltered,k as isProductListLastViewed,W as isProductListPurchasedTogether,j as isProductListRecommended,x as isProductListRelatedProducts,K as isProductListSearch,w as isProductListStatic,H as isProductListViewedTogether,Ae as onFilterCategoryClick,ce as productListToggleFilterCollapsed,G as searchProductList,z as setProductListIsFilteredForProducts,J as setProductListIsStaticForProducts,Te as setProductListVisiblePage,Ie as setSortType,Ce as translateProductListSortType};
1
+ import{__assign as e,__awaiter as t,__generator as r}from'./../../../ext/tslib/tslib.es6.mjs.js';import{IkasStorefrontConfig as n}from"../../../packages/storefront-config/src/index.js";import i from'./../../../ext/lodash/cloneDeep.js';import{I18n as a}from"../../../i18n/index.js";import{Router as o,withRoutePrefix as s}from"../../../router/index.js";import{customerStore as u}from"../../../stores/customer/index.js";import{isClient as d,isBackNavigation as l,getQueryParams as c,debounce as f,stringToSlug as v,stringifyQueryParams as p}from"../../../utils/helper.js";import{setSavedLastViewedProductsResponse as g,getLastViewedProducts as E,waitForCustomerStoreInit as I}from"../../stores/customer/index.js";import{getIkasFilterCategorySlug as C,getIkasFilterCategoryHref as S}from"../filter-category/index.js";import{refreshProductsPrices as A}from"../product/index.js";import{getFilterValueList as y,clearFilter as T,selectFilterValue as R,onNumberRangeFilterOptionClick as h,getFilterKeyList as D,applyQueryParamForFilter as _,initIkasProductFilter as m,isCustomValueFilter as b}from"../product/filter/index.js";import{getProductVariantPrice as N,hasProductVariantStock as L}from"../product/variant/index.js";var O;function P(t){var r=e({data:[],limit:10,page:1,count:0,isInitialized:!1,isLoading:!1,type:"ALL",sort:"DEFAULT",searchKeyword:"",pageType:"CATEGORY",category:null,brand:null,productListPropValue:{id:"",productIds:[],initialLimit:10,productListType:"ALL"}},t);return function(e){var t;if((null===(t=e.pageSpecificData)||void 0===t?void 0:t.orderType)&&["ALL"].includes(e.type))switch(e.pageSpecificData.orderType){case"BEST_SELLER":e.sort="SALE_COUNT";break;case"HIGHEST_DISCOUNT_RATIO":e.sort="DECRASING_DISCOUNT";break;case"LOWEST_DISCOUNT_RATIO":e.sort="INCREASING_DISCOUNT";break;case"HIGHEST_PRICE":e.sort="DECREASING_PRICE";break;case"LOWEST_PRICE":e.sort="INCREASING_PRICE";break;case"NEWEST":e.sort="LAST_ADDED";break;case"OLDEST":e.sort="FIRST_ADDED";break;case"MANUALLY":e.sort="FEATURED"}}(r),J(r),X(r),r}function G(e){var t;if(d()&&(!l()||!o.isFromBFCache)){!function(e){var t=c(),r=null==t?void 0:t.get("page");if(r){var n=parseInt(r);isNaN(n)||(e.page=n,e.infiniteScrollPage=n)}}(e);if(["CATEGORY","BRAND","SEARCH"].includes(e.pageType)&&location.search&&V(e)&&((null===(t=e.productListPropValue)||void 0===t?void 0:t.usePageFilter)||"SEARCH"===e.type))ce(e,c(),e.page>1);else e.page>1?ce(e,void 0,!0):x(e)?ce(e):De(e)}}function U(e,t){t!==e.searchKeyword&&(e.searchKeyword=t,be(e),Ne(e))}function V(e){return"ALL"===e.type||"CATEGORY"===e.type}function w(e){var t,r;return(null===(t=e.filters)||void 0===t?void 0:t.some(function(e){return!!y(e).length}))||!!e.searchKeyword||"CATEGORY"!==e.pageType&&(!!e.filterCategoryId||!!(null===(r=e.filterCategories)||void 0===r?void 0:r.some(function(e){return e.isSelected})))}function F(e){return"STATIC"===e.type}function j(e){return"DISCOUNTED"===e.type}function k(e){return"RECOMMENDED"===e.type}function x(e){return"LAST_VIEWED"===e.type}function H(e){return"RELATED_PRODUCTS"===e.type}function W(e){return"VIEWED_TOGETHER"===e.type}function B(e){return"PURCHASED_TOGETHER"===e.type}function K(e){return"SEARCH"===e.type}function Y(e){return!(F(e)||j(e)||k(e)||!e.minPage)&&e.minPage>1}function Z(e){return!(F(e)||j(e)||k(e))&&e.page*e.limit<e.count}function M(e){var t;return(null===(t=e.filterCategories)||void 0===t?void 0:t.filter(function(e){return 0!==e.resultCount}))||[]}function q(e){var t;return!!e.searchKeyword||!!(null===(t=e.filters)||void 0===t?void 0:t.some(function(e){return!!y(e).length}))}function z(e){var t;return"MANUALLY"===(null===(t=e.pageSpecificData)||void 0===t?void 0:t.orderType)&&["ALL","CATEGORY"].includes(e.type)}function J(e){var t=w(e);e.data.forEach(function(e){return e.isFiltered=t||!1})}function X(e){var t=F(e);e.data.forEach(function(e){return e.isFiltered=t||!1})}function Q(e){e._enableSuggestions=!0}function $(e){var t={};return e.categoryId&&(t.categoryId=e.categoryId),e.brandId&&(t.brandId=e.brandId),Object.keys(t).length?s("/search?suggestion=".concat(encodeURIComponent(JSON.stringify(t)))):s("/search")}function ee(i,a,o,s){return t(this,void 0,void 0,function(){var t,u,d,l,f,v,p,g,E,I,C,S,A,T,R,h;return r(this,function(r){switch(r.label){case 0:return t=[],u=[],null===(S=i.filters)||void 0===S||S.forEach(function(e){var r=y(e);r.length&&t.push({id:e.id,type:e.type,displayType:e.displayType,valueList:r}),e.isFacetFilter&&u.push({id:e.id,type:e.type,displayType:e.displayType})}),d=c(),(l=null==d?void 0:d.get("suggestion"))&&(f=JSON.parse(decodeURIComponent(l)),(v=f.brandId)&&((p=null===(A=i.filters)||void 0===A?void 0:A.find(function(e){return"brand"===e.id&&"BRAND"===e.type}))&&(g=null===(T=p.values)||void 0===T?void 0:T.find(function(e){return e.id===v}))&&_(p,g.name),t.push({id:"brand",type:"BRAND",displayType:"BOX",valueList:[v]})),f.categoryId&&(i.filterCategoryId=f.categoryId),i.searchKeyword=f.term),E=null===(R=i.filterCategories)||void 0===R?void 0:R.filter(function(e){return e.isSelected}).map(function(e){return e.id}),I=function(e){var t,r;switch(e.sort){case"INCREASING_PRICE":t="ASC",r="PRICE";break;case"DECREASING_PRICE":t="DESC",r="PRICE";break;case"FIRST_ADDED":t="ASC",r="CREATED_AT";break;case"LAST_ADDED":t="DESC",r="CREATED_AT";break;case"INCREASING_DISCOUNT":t="ASC",r="DISCOUNT_RATIO";break;case"DECRASING_DISCOUNT":t="DESC",r="DISCOUNT_RATIO";break;case"FEATURED":if(K(e))return;t="ASC",r="MANUAL_SORT";break;case"DEFAULT":t=void 0,r=void 0;break;case"AVERAGE_RATING":t="DESC",r="AVERAGE_RATING";break;case"REVIEW_COUNT":t="DESC",r="REVIEW_COUNT";break;case"SALE_COUNT":t="DESC",r="SALE_COUNT";break;case"A_Z":t="ASC",r="NAME";break;case"Z_A":t="DESC",r="NAME"}if(t&&r)return{direction:t,type:r}}(i),k(i)&&i.recommendedProductData?[4,import("../../api/product/index.js")]:[3,3];case 1:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,brandIds:i.recommendedProductData.brandIds,categoryIds:i.recommendedProductData.categoryIds,locale:n.getCurrentLocale()})];case 2:case 5:case 8:case 11:case 14:return[2,r.sent()];case 3:return H(i)&&i.relatedProductData?[4,import("../../api/product/index.js")]:[3,6];case 4:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,productId:i.relatedProductData.productId,brandIds:i.relatedProductData.brandIds,categoryIds:i.relatedProductData.categoryIds,locale:n.getCurrentLocale()})];case 6:return W(i)&&i.viewedTogetherProductData?[4,import("../../api/product/index.js")]:[3,9];case 7:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,method:"VIEWED_TOGETHER",productIds:i.viewedTogetherProductData.productIds,locale:n.getCurrentLocale()})];case 9:return B(i)&&i.purchasedTogetherProductData?[4,import("../../api/product/index.js")]:[3,12];case 10:return[4,(0,r.sent().apiGetSuggestedProducts)({priceListId:n.priceListId,salesChannelId:n.salesChannelId,method:"PURCHASED_TOGETHER",productIds:i.purchasedTogetherProductData.productIds,locale:n.getCurrentLocale()})];case 12:return C={input:e(e(e(e({page:a,perPage:o},i._enableSuggestions?{enableSuggestions:i._enableSuggestions}:{}),{productIdList:F(i)?null===(h=i.productListPropValue.productIds)||void 0===h?void 0:h.map(function(e){return e.productId}):s,filterList:t,facetList:u}),i.baseCategoryIdList?{baseCategoryIdList:i.baseCategoryIdList}:{}),{brandId:"BRAND"===i.pageType&&"SEARCH"!==i.type?i.filterBrandId:void 0,categoryIdList:E&&E.length?E:i.filterCategoryId?[i.filterCategoryId]:void 0,priceListId:n.priceListId,salesChannelId:n.salesChannelId,query:i.searchKeyword,order:I?[I]:[],showStockOption:n.stockPreference||"SHOW_ALL"})},[4,import("../../api/product/index.js")];case 13:return[4,(0,r.sent().apiSearchProducts)(C,i.excludedFields||[])]}})})}function te(e){return t(this,void 0,void 0,function(){var t,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:return[4,import("../../api/product/index.js")];case 1:return[4,(0,r.sent().apiGetProductFilterData)({categoryId:e.filterCategoryId?e.filterCategoryId:void 0,locale:n.getCurrentLocale()})];case 2:return t=r.sent(),e.filters=null===(a=null==t?void 0:t.data)||void 0===a?void 0:a.filters.map(function(e){return m(e)}),e.filterCategories=null===(o=null==t?void 0:t.data)||void 0===o?void 0:o.categories,Re(e),e.disabledSortTypes=null===(s=t.data)||void 0===s?void 0:s.disabledSortTypes,"CATEGORY"!==e.pageType&&e.filterCategoryId&&(i=null===(u=e.filterCategories)||void 0===u?void 0:u.find(function(t){return t.id===e.filterCategoryId}))&&(i.isSelected=!0),e.filters&&e.filters.sort(function(e,t){return e.order>t.order?1:-1}),[2]}})})}function re(e){return t(this,void 0,void 0,function(){var t;return r(this,function(r){switch(r.label){case 0:return[4,ce(e)];case 1:return t=r.sent(),["CATEGORY","BRAND","SEARCH"].includes(e.pageType)?(t&&ie(e),[2]):[2]}})})}function ne(e){var t,r,n,i={};if(null===(t=e.filters)||void 0===t||t.forEach(function(e){var t=D(e);t.length&&(i[v(e.name)]=t)}),e.searchKeyword&&(i.s=e.searchKeyword),e.sort&&(i.o=Le[e.sort]),e.baseCategoryIdList&&(i.bc=e.baseCategoryIdList),e.suggestionCategoryId&&(i.suggestionCategoryId=e.suggestionCategoryId),e.infiniteScrollPage?i.page=e.infiniteScrollPage:i.page=e.page,"CATEGORY"!==e.pageType){var a=null===(r=e.filterCategories)||void 0===r?void 0:r.filter(function(e){return e.isSelected});if(!!(null==a?void 0:a.length))i.c=null==a?void 0:a.map(function(e){return C(e)});else if(e.filterCategoryId){var o=null===(n=e.filterCategories)||void 0===n?void 0:n.find(function(t){return t.id===e.filterCategoryId}),s=o?C(o):void 0;s&&(i.c=s)}}return p(i,{arrayFormat:"comma"})}function ie(e){if(d()&&!K(e)&&!n.isEditor){var t=ne(e),r=s("".concat(location.pathname).concat(t?"?"+t:""));o.navigate(r,!0)}}function ae(e){var t,r;null===(t=e.filters)||void 0===t||t.forEach(function(e){return T(e)}),e.searchKeyword="","CATEGORY"!==e.pageType&&(e.filterCategoryId=void 0),null===(r=e.filterCategories)||void 0===r||r.forEach(function(e){return e.isSelected=!1}),re(e)}function oe(e,t){T(t),re(e)}function se(e,t,r){R(t,r),re(e)}function ue(e,t,r){h(t,r),re(e)}function de(e){var t,r=null===(t=e.filters)||void 0===t?void 0:t.filter(function(e){var t;return null===(t=e.values)||void 0===t?void 0:t.some(function(e){return e.isSelected})});return null==r?void 0:r.map(function(e){var t,r;return e.numberRange?{filter:e,values:[e.numberRange.from+"-"+e.numberRange.to],commaSeperatedValues:e.numberRange.from+"-"+e.numberRange.to}:e.numberRangeListOptions?{filter:e,values:e.numberRangeListOptions.filter(function(e){return e.isSelected}).map(function(e){return e.from+"-"+e.to}),commaSeperatedValues:e.numberRangeListOptions.filter(function(e){return e.isSelected}).map(function(e){return e.from+"-"+e.to}).join(",")}:{filter:e,values:(null===(t=e.values)||void 0===t?void 0:t.filter(function(e){return e.isSelected}).map(function(e){return e.name}))||[],commaSeperatedValues:(null===(r=e.values)||void 0===r?void 0:r.filter(function(e){return e.isSelected}).map(function(e){return e.name}).join(","))||""}})}function le(e){return e.variants[0]}function ce(e,n,a){return t(this,void 0,void 0,function(){var t,o,s,l,c,f,v,p,S,A,y,T,R,h,D,m,N;return r(this,function(r){switch(r.label){case 0:e.isLoading=!0,t=Date.now(),e.fetchRequestTime=t,r.label=1;case 1:return r.trys.push([1,14,15,16]),o=a?e.page:1,s=e.limit,!V(e)||e.filters?[3,3]:[4,te(e)];case 2:r.sent(),r.label=3;case 3:return function(e,t){var r;try{null==t||t.forEach(function(t,r){var n,i=null===(n=e.filters)||void 0===n?void 0:n.find(function(e){return e.key===r});i&&_(i,t)});var n=null==t?void 0:t.get("s");n&&(e.searchKeyword=n);var i=null==t?void 0:t.get("o");if(i){var a=parseInt(i),o=Object.entries(Le).find(function(e){return e[1]===a});o&&(e.sort=o[0])}if("CATEGORY"!==e.pageType){var s=null==t?void 0:t.get("c"),u=null==s?void 0:s.split(",");u&&u.length&&(null===(r=e.filterCategories)||void 0===r||r.forEach(function(e){e.isSelected=u.some(function(t){return t===C(e)})}))}if("SEARCH"===e.pageType){var d=null==t?void 0:t.get("bc"),l=null==d?void 0:d.split(",");l&&(e.baseCategoryIdList=l);var c=null==t?void 0:t.get("suggestion");if(c){var f=JSON.parse(decodeURIComponent(c)).categoryId;f&&(e.suggestionCategoryId=f)}var v=null==t?void 0:t.get("suggestionCategoryId");v&&(e.suggestionCategoryId=v,e.filterCategoryId=v)}}catch(e){console.log(e)}}(e,n),[4,ve(e)];case 4:return r.sent(),K(e)&&!q(e)?(e.data=[],e.page=1,e.minPage=1,e.count=0,e.isInitialized=!0,[2,!0]):(l=void 0,c=!1,F(e)?(o=void 0,s=200,[3,10]):[3,5]);case 5:return j(e)||k(e)?(o=1,s=10,[3,10]):[3,6];case 6:return x(e)?d()?[4,I(u)]:[3,9]:[3,10];case 7:return r.sent(),[4,E(u)];case 8:return(f=r.sent())&&f.length?(l=f.map(function(e){return e.productId}),c=u.useLastViewedProductResponse,[3,10]):[2];case 9:return[2];case 10:return c?(p=u._savedLastViewedProductsResponse,[3,13]):[3,11];case 11:return[4,ee(e,o||1,s||10,l)];case 12:p=r.sent(),r.label=13;case 13:return(v=p)&&e.fetchRequestTime===t?(S=[],!c&&x(e)&&g(u,v),F(e)||x(e)?(A=F(e),y=A?e.productListPropValue.productIds:u._lastViewedProducts,S=(null==y?void 0:y.map(function(e){var t,r,n=null===(r=null===(t=v.data)||void 0===t?void 0:t.data)||void 0===r?void 0:r.find(function(t){return t.id===e.productId}),i=null==n?void 0:n.variants.find(function(t){return t.id===e.variantId});if((null==i?void 0:i.isActive)&&L(i)||(i=null==n?void 0:n.variants.find(function(e){return e.isActive&&L(e)}),A&&!i&&(i=(null==n?void 0:n.variants.find(function(e){return e.isActive}))||(null==n?void 0:n.variants[0]))),n&&i)return n.selectedVariantValues=i.variantValues,n}).filter(function(e){return!!e}))||[]):S=(null===(h=null===(R=v.data)||void 0===R?void 0:R.data)||void 0===h?void 0:h.map(function(e){var t=le(e);return e.selectedVariantValues=t.variantValues,e}))||[],null===(D=e.filters)||void 0===D||D.forEach(function(e){var t,r;if(void 0===e.isCollapsed){var n=!1;(!1===(null===(t=e.settings)||void 0===t?void 0:t.showCollapsedOnMobile)&&d()&&window.innerWidth<768||!1===(null===(r=e.settings)||void 0===r?void 0:r.showCollapsedOnDesktop))&&(n=!0),e.isCollapsed=!n}}),function(e,t){var r,n,a=i(e);null===(r=a.filters)||void 0===r||r.forEach(function(e){var r,n,i,a=null==t?void 0:t.find(function(t){return t.id===e.id});a?null===(r=e.values)||void 0===r||r.forEach(function(t){var r=a.values.find(function(e){return e.id===t.id});r?t.resultCount=r.count:b(e)?t.resultCount=null:t.resultCount=0}):b(e)?null===(n=e.values)||void 0===n||n.forEach(function(e){return e.resultCount=null}):null===(i=e.values)||void 0===i||i.forEach(function(e){return e.resultCount=0})});var o=null==t?void 0:t.find(function(e){return"category"===e.id});o&&(null===(n=a.filterCategories)||void 0===n||n.forEach(function(e){var t=o.values.find(function(t){return t.id===e.id});e.resultCount=t?t.count:0})),e.filters=a.filters,e.filterCategories=a.filterCategories,Re(e)}(e,null===(m=v.data)||void 0===m?void 0:m.facets),e.data=S,e.count=(null===(N=v.data)||void 0===N?void 0:N.count)||0,e.isInitialized=!0,e.page=o||1,e.minPage=e.page,v.data&&"suggestions"in v.data&&(e.suggestions=v.data.suggestions),J(e),X(e),a||(e.infiniteScrollPage=null),De(e),[2,!0]):[2];case 14:return T=r.sent(),console.log(T),[3,16];case 15:return t===e.fetchRequestTime&&(e.isLoading=!1),[7];case 16:return[2]}})})}function fe(e){e.isCollapsed=!e.isCollapsed}function ve(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s,u,d,l,c;return r(this,function(r){switch(r.label){case 0:return r.trys.push([0,13,,14]),e.productListPropValue.category?[4,import("../../api/category/index.js")]:[3,3];case 1:return[4,(0,r.sent().apiListCategory)({id:{eq:e.productListPropValue.category}})];case 2:return t=r.sent(),e.category=(null===(o=null===(a=t.data)||void 0===a?void 0:a.data)||void 0===o?void 0:o[0])||null,[3,7];case 3:return e.productListPropValue.usePageFilter&&"CATEGORY"===e.pageType&&e.pageSpecificData?(e.category=e.pageSpecificData,[3,7]):[3,4];case 4:return e.filterCategoryId?[4,import("../../api/category/index.js")]:[3,7];case 5:return[4,(0,r.sent().apiListCategory)({id:{eq:e.filterCategoryId}})];case 6:t=r.sent(),e.category=(null===(u=null===(s=t.data)||void 0===s?void 0:s.data)||void 0===u?void 0:u[0])||null,r.label=7;case 7:return e.productListPropValue.usePageFilter&&"BRAND"===e.pageType&&e.pageSpecificData?(e.brand=e.pageSpecificData,[3,12]):[3,8];case 8:return e.filterBrandId?e.filterBrandId!==(null===(d=e.pageSpecificData)||void 0===d?void 0:d.id)?[3,9]:(e.brand=e.pageSpecificData,[3,12]):[3,12];case 9:return[4,import("../../api/brand/index.js")];case 10:return[4,(0,r.sent().apiListProductBrand)({id:{eq:e.filterBrandId}})];case 11:n=r.sent(),e.brand=(null===(c=null===(l=n.data)||void 0===l?void 0:l.data)||void 0===c?void 0:c[0])||null,r.label=12;case 12:return[3,14];case 13:return i=r.sent(),console.error(i),[3,14];case 14:return[2]}})})}function pe(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:if(F(e)||j(e)||k(e)||H(e)||W(e)||B(e)||x(e)||e.isLoading||!Y(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),t=e.minPage-1,[4,ee(e,t,e.limit)];case 2:return(n=r.sent())?(i=null===(s=null===(o=n.data)||void 0===o?void 0:o.data)||void 0===s?void 0:s.map(function(e){var t=le(e);return e.selectedVariantValues=t.variantValues,e}),e.data=(null==i?void 0:i.concat(e.data))||e.data,e.count=(null===(u=n.data)||void 0===u?void 0:u.count)||e.count,e.minPage=t,J(e),X(e),ie(e),[3,5]):[2];case 3:return a=r.sent(),console.log(a),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function ge(e){return t(this,void 0,void 0,function(){var t,n,i,a,o,s;return r(this,function(r){switch(r.label){case 0:if(F(e)||j(e)||k(e)||H(e)||W(e)||B(e)||x(e)||e.isLoading||!Z(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,ee(e,e.page+1,e.limit)];case 2:return(t=r.sent())?(n=null===(o=null===(a=t.data)||void 0===a?void 0:a.data)||void 0===o?void 0:o.map(function(e){var t=le(e);return e.selectedVariantValues=t.variantValues,e}),e.data=e.data.concat(n||[]),e.count=(null===(s=t.data)||void 0===s?void 0:s.count)||e.count,e.page=e.page+1,J(e),X(e),ie(e),[3,5]):[2];case 3:return i=r.sent(),console.log(i),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function Ee(e,n){return t(this,void 0,void 0,function(){var t,i,a,o,s,u;return r(this,function(r){switch(r.label){case 0:if(e.isLoading||F(e)||j(e)||k(e)||x(e)||H(e)||W(e)||B(e))return[2];e.isLoading=!0,r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,ee(e,n,e.limit)];case 2:return(t=r.sent())?(i=null===(s=null===(o=t.data)||void 0===o?void 0:o.data)||void 0===s?void 0:s.map(function(e){var t=le(e);return e.selectedVariantValues=t.variantValues,e}),e.data=i||[],e.count=(null===(u=t.data)||void 0===u?void 0:u.count)||0,e.page=n,e.minPage=n,J(e),X(e),ie(e),[3,5]):[2];case 3:return a=r.sent(),console.log(a),[3,5];case 4:return e.isLoading=!1,[7];case 5:return[2]}})})}function Ie(e){return t(this,void 0,void 0,function(){var t;return r(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,A(e.data)];case 1:return r.sent(),[3,3];case 2:return t=r.sent(),console.log(t),[3,3];case 3:return[2]}})})}function Ce(e,n){return t(this,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return e.sort=n,[4,ce(e)];case 1:return t.sent()&&ie(e),[2]}})})}function Se(e){return Ae(e,e.sort)}function Ae(e,t){switch(t){case"INCREASING_PRICE":return a.translate("sort_type.increasing_price");case"DECREASING_PRICE":return a.translate("sort_type.decreasing_price");case"LAST_ADDED":return a.translate("sort_type.last_added");case"FIRST_ADDED":return a.translate("sort_type.first_added");case"INCREASING_DISCOUNT":return a.translate("sort_type.increasing_discount");case"DECRASING_DISCOUNT":return a.translate("sort_type.decreasing_discount");case"FEATURED":return a.translate("sort_type.featured");case"DEFAULT":return a.translate("sort_type.default");case"AVERAGE_RATING":return a.translate("sort_type.average_rating");case"REVIEW_COUNT":return a.translate("sort_type.review_count");case"SALE_COUNT":return a.translate("sort_type.sale_count");case"A_Z":return a.translate("sort_type.a_z");case"Z_A":return a.translate("sort_type.z_a")}}function ye(e){var t,r,n,i,a,o,s,u;if(!e)return[];var d=[];return(null===(t=e.disabledSortTypes)||void 0===t?void 0:t.includes("NAME"))||(d.push({label:Ae(0,"A_Z"),value:"A_Z",isSelected:"A_Z"===e.sort}),d.push({label:Ae(0,"Z_A"),value:"Z_A",isSelected:"Z_A"===e.sort})),(null===(r=e.disabledSortTypes)||void 0===r?void 0:r.includes("PRICE"))||(d.push({label:Ae(0,"INCREASING_PRICE"),value:"INCREASING_PRICE",isSelected:"INCREASING_PRICE"===e.sort}),d.push({label:Ae(0,"DECREASING_PRICE"),value:"DECREASING_PRICE",isSelected:"DECREASING_PRICE"===e.sort})),(null===(n=e.disabledSortTypes)||void 0===n?void 0:n.includes("CREATED_AT"))||(d.push({label:Ae(0,"LAST_ADDED"),value:"LAST_ADDED",isSelected:"LAST_ADDED"===e.sort}),d.push({label:Ae(0,"FIRST_ADDED"),value:"FIRST_ADDED",isSelected:"FIRST_ADDED"===e.sort})),(null===(i=e.disabledSortTypes)||void 0===i?void 0:i.includes("DISCOUNT_RATIO"))||(d.push({label:Ae(0,"INCREASING_DISCOUNT"),value:"INCREASING_DISCOUNT",isSelected:"INCREASING_DISCOUNT"===e.sort}),d.push({label:Ae(0,"DECRASING_DISCOUNT"),value:"DECRASING_DISCOUNT",isSelected:"DECRASING_DISCOUNT"===e.sort})),(null===(a=e.disabledSortTypes)||void 0===a?void 0:a.includes("MANUAL_SORT"))||d.push({label:Ae(0,"FEATURED"),value:"FEATURED",isSelected:"FEATURED"===e.sort}),(null===(o=e.disabledSortTypes)||void 0===o?void 0:o.includes("AVERAGE_RATING"))||d.push({label:Ae(0,"AVERAGE_RATING"),value:"AVERAGE_RATING",isSelected:"AVERAGE_RATING"===e.sort}),(null===(s=e.disabledSortTypes)||void 0===s?void 0:s.includes("REVIEW_COUNT"))||d.push({label:Ae(0,"REVIEW_COUNT"),value:"REVIEW_COUNT",isSelected:"REVIEW_COUNT"===e.sort}),(null===(u=e.disabledSortTypes)||void 0===u?void 0:u.includes("SALE_COUNT"))||d.push({label:Ae(0,"SALE_COUNT"),value:"SALE_COUNT",isSelected:"SALE_COUNT"===e.sort}),d}function Te(e,i,a){return t(this,void 0,void 0,function(){var t,s,u;return r(this,function(r){switch(r.label){case 0:return a?(null===(u=e.filterCategories)||void 0===u||u.forEach(function(e){e.id===i.id&&(e.isSelected=!e.isSelected)}),[4,re(e)]):[3,2];case 1:return r.sent(),[3,3];case 2:n.isEditor||(t=ne(e),s=S(i)+(t?"?"+t:""),o.navigate(s)),r.label=3;case 3:return[2]}})})}function Re(e){var t;null===(t=e.filterCategories)||void 0===t||t.forEach(function(e){e.image=e.imageId?{id:e.imageId,isVideo:!1}:null})}function he(e,t){if(e.infiniteScrollPage!==t){e.infiniteScrollPage=t;var r=ne(e);o.navigate("".concat(location.pathname).concat(r?"?"+r:""),!0)}}function De(e){return t(this,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return e.searchKeyword&&e.data.length?[4,import("../../../analytics/analytics-functions/viewSearchResults.js")]:[3,2];case 1:return(0,t.sent().anl_viewSearchResults)(e.searchKeyword,e.data),[3,4];case 2:return e.data.length&&"ALL"===e.type?[4,import("../../../analytics/analytics-functions/viewListing.js")]:[3,4];case 3:(0,t.sent().anl_viewListing)(e.data),t.label=4;case 4:return[2]}})})}function _e(e){var t=e.data[0];if(!t)return n.getDefaultCurrencyCode()||"";var r=le(t),i=N(r);return(null==i?void 0:i.currency)||n.getDefaultCurrencyCode()||""}function me(e){var t=e.data[0];if(!t)return n.getDefaultCurrencySymbol()||"";var r=le(t),i=N(r);return(null==i?void 0:i.currencySymbol)||n.getDefaultCurrencySymbol()||""}var be=f(function(e){re(e)},500),Ne=f(function(e){return t(void 0,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return[4,import("../../../analytics/analytics-functions/search.js")];case 1:return(0,t.sent().anl_search)(e.searchKeyword),[2]}})})},1e3),Le=((O={}).INCREASING_PRICE=1,O.DECREASING_PRICE=2,O.LAST_ADDED=3,O.FIRST_ADDED=4,O.INCREASING_DISCOUNT=5,O.DECRASING_DISCOUNT=6,O.FEATURED=7,O.DEFAULT=8,O.AVERAGE_RATING=9,O.REVIEW_COUNT=10,O.SALE_COUNT=11,O.A_Z=12,O.Z_A=13,O);export{oe as clearProductListFilter,ae as clearProductListFilters,Q as enableProductListSuggestions,_e as getProductListCurrencyCode,me as getProductListCurrencySymbol,M as getProductListFilterCategories,ce as getProductListInitialData,ge as getProductListNextPage,Ee as getProductListPage,pe as getProductListPrevPage,ye as getProductListSortOptions,Se as getProductListSortTypeTranslation,$ as getProductListSuggestionHref,de as getSelectedFilterValues,se as handleFilterValueClick,ue as handleNumberRangeOptionClick,q as hasProductListAppliedFilters,z as hasProductListFeaturedSortEnabled,Z as hasProductListNextPage,Y as hasProductListPrevPage,P as initProductList,Re as initProductListFilterCategories,G as initProductListOnBrowser,j as isProductListDiscounted,V as isProductListFilterable,w as isProductListFiltered,x as isProductListLastViewed,B as isProductListPurchasedTogether,k as isProductListRecommended,H as isProductListRelatedProducts,K as isProductListSearch,F as isProductListStatic,W as isProductListViewedTogether,Te as onFilterCategoryClick,fe as productListToggleFilterCollapsed,U as searchProductList,J as setProductListIsFilteredForProducts,X as setProductListIsStaticForProducts,he as setProductListVisiblePage,Ce as setSortType,Ae as translateProductListSortType,Ie as updateProductListPrices};
@@ -2,6 +2,13 @@ import { AddressForm, IkasCustomerAddress } from "../../../../storefront-models/
2
2
  /**
3
3
  * Initializes an address form with default or existing address values, loads location data, and configures field settings.
4
4
  *
5
+ * Also resolves `addressForm.addressFormat` for the selected country. That is an
6
+ * `AddressFormItem[][]` describing which fields the country uses and how they group into rows
7
+ * (outer array = rows, inner array = fields sharing a row), and it is the only correct source
8
+ * for laying out an address form -- a hardcoded field list will be wrong for most countries.
9
+ * It is empty until this promise resolves, and `setAddressFormCountry` re-resolves it, so
10
+ * render from it rather than copying it into local state.
11
+ *
5
12
  * @ai-category Address, Form, Initialization, Checkout
6
13
  * @ai-related submitAddressForm, setAddressFormCountry, setAddressFormState, setAddressFormCity
7
14
  *
@@ -10,14 +17,75 @@ import { AddressForm, IkasCustomerAddress } from "../../../../storefront-models/
10
17
  * @returns A promise that resolves once the form is fully initialized, including country/state/city lists, field settings, checkout settings, and shipping zones.
11
18
  *
12
19
  * @example
13
- * ```typescript
14
- * import { initAddressForm } from "@ikas/bp-storefront";
20
+ * ```tsx
21
+ * import { useEffect, useState } from "preact/hooks";
22
+ * import {
23
+ * type AddressForm,
24
+ * type AddressFormItem,
25
+ * initAddressForm,
26
+ * setAddressFormFirstName,
27
+ * setAddressFormLastName,
28
+ * setAddressFormIdentityNumber,
29
+ * setAddressFormAddressLine1,
30
+ * setAddressFormAddressLine2,
31
+ * setAddressFormPostalCode,
32
+ * setAddressFormPhone,
33
+ * } from "@ikas/bp-storefront";
15
34
  *
16
35
  * // Initialize an empty address form
17
36
  * await initAddressForm(addressForm);
18
37
  *
19
38
  * // Initialize with an existing customer address for editing
20
39
  * await initAddressForm(addressForm, existingAddress);
40
+ *
41
+ * // addressFormat is empty until init resolves, so gate the render on it.
42
+ * const [isLoading, setIsLoading] = useState(true);
43
+ * useEffect(() => {
44
+ * initAddressForm(addressForm, address).then(() => setIsLoading(false));
45
+ * }, []);
46
+ *
47
+ * // Every addressFormat key has a matching setter, each taking (addressForm, value).
48
+ * // The location keys (country, state, city, district, region) are omitted here: they
49
+ * // render as selects fed by addressForm.countryOptions / stateOptions / cityOptions /
50
+ * // districtOptions / regionOptions, and must fall back to a text input when the field
51
+ * // isFreeText or has no options.
52
+ * const SETTERS: Partial<Record<AddressFormItem, (form: AddressForm, value: string) => void>> = {
53
+ * firstName: setAddressFormFirstName,
54
+ * lastName: setAddressFormLastName,
55
+ * identityNumber: setAddressFormIdentityNumber,
56
+ * addressLine1: setAddressFormAddressLine1,
57
+ * addressLine2: setAddressFormAddressLine2,
58
+ * postalCode: setAddressFormPostalCode,
59
+ * phone: setAddressFormPhone,
60
+ * };
61
+ *
62
+ * // Render the country's own layout: outer array = rows, inner array = fields in that row.
63
+ * (addressForm.addressFormat ?? []).map((row) => {
64
+ * // A field the country does not use is absent from the form object entirely.
65
+ * const keys = row.filter((key) => addressForm[key] != null);
66
+ * if (!keys.length) return null;
67
+ *
68
+ * return (
69
+ * <div className="address-row" key={keys.join("-")}>
70
+ * {keys.map((key) => {
71
+ * // Each entry is an IkasFormItem: value, label, placeholder, hasError, message.
72
+ * const field = addressForm[key];
73
+ * if (!field) return null; // already guaranteed by the filter above; narrows the type
74
+ * return (
75
+ * <label key={key}>
76
+ * {field.label}
77
+ * <input
78
+ * value={field.value ?? ""}
79
+ * placeholder={field.placeholder}
80
+ * onInput={(e) => SETTERS[key]?.(addressForm, e.currentTarget.value)}
81
+ * />
82
+ * {field.hasError && <small>{field.message}</small>}
83
+ * </label>
84
+ * );
85
+ * })}
86
+ * </div>
87
+ * );
88
+ * })
21
89
  * ```
22
90
  */
23
91
  export declare function initAddressForm(addressForm: AddressForm, address?: IkasCustomerAddress): Promise<void>;
@@ -0,0 +1,54 @@
1
+ import { DeactivateCustomerForm } from "../../../../storefront-models/src";
2
+ /**
3
+ * Initializes the deactivate customer form with default password field values, labels, and placeholders.
4
+ *
5
+ * @ai-category Validation, DeactivateCustomer, Form
6
+ * @ai-related setDeactivateCustomerFormPassword, submitDeactivateCustomerForm
7
+ *
8
+ * @param deactivateCustomerForm - The deactivate customer form model to initialize
9
+ * @returns void
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { initDeactivateCustomerForm } from "@ikas/bp-storefront";
14
+ * initDeactivateCustomerForm(deactivateCustomerForm);
15
+ * ```
16
+ */
17
+ export declare function initDeactivateCustomerForm(deactivateCustomerForm: DeactivateCustomerForm): void;
18
+ /**
19
+ * Sets the password value on the deactivate customer form and re-validates if the form has already been submitted.
20
+ *
21
+ * @ai-category Validation, DeactivateCustomer, Form
22
+ * @ai-related initDeactivateCustomerForm, submitDeactivateCustomerForm
23
+ *
24
+ * @param deactivateCustomerForm - The deactivate customer form model to update
25
+ * @param value - The new password string to set
26
+ * @returns void
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { setDeactivateCustomerFormPassword } from "@ikas/bp-storefront";
31
+ * setDeactivateCustomerFormPassword(deactivateCustomerForm, "mySecurePassword123");
32
+ * ```
33
+ */
34
+ export declare function setDeactivateCustomerFormPassword(deactivateCustomerForm: DeactivateCustomerForm, value: string): void;
35
+ /**
36
+ * Validates and submits the deactivate customer form, deleting the current customer's account after password verification.
37
+ * The customer session is not cleared automatically, call `logout` after a successful submission.
38
+ *
39
+ * @ai-category Validation, DeactivateCustomer, Form
40
+ * @ai-related initDeactivateCustomerForm, setDeactivateCustomerFormPassword
41
+ *
42
+ * @param deactivateCustomerForm - The deactivate customer form model to submit
43
+ * @returns A promise that resolves to true if the account was deactivated successfully, or false on validation error or API failure
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * import { customerStore, logout, submitDeactivateCustomerForm } from "@ikas/bp-storefront";
48
+ * const success = await submitDeactivateCustomerForm(deactivateCustomerForm);
49
+ * if (success) {
50
+ * await logout(customerStore);
51
+ * }
52
+ * ```
53
+ */
54
+ export declare function submitDeactivateCustomerForm(deactivateCustomerForm: DeactivateCustomerForm): Promise<boolean>;
@@ -0,0 +1 @@
1
+ import{__assign as s,__awaiter as e,__generator as i}from'./../../../../ext/tslib/tslib.es6.mjs.js';import{I18n as r}from"../../../../i18n/index.js";import{customerStore as o}from"../../../../stores/customer/index.js";import"../../../../packages/storefront-config/src/index.js";import'./../../../../ext/lodash/_isFlattenable.js';import'./../../../../ext/lodash/sortBy.js';import"../../../../stores/base/index.js";import"../../../../stores/cart/index.js";import'./../../../../ext/mobx/dist/mobx.esm.js';import"../../../../router/index.js";import{deactivateCustomer as t}from"../../../stores/customer/index.js";import{FORM_ITEM_DEFAULT_VALUE as a,validateValue as n}from"../index.js";function d(e){e.password=s(s({},a),{isRequired:!0,label:r.translate("label.password"),placeholder:r.translate("placeholder.password")}),e.isSubmitted=!1,e.isSubmitting=!1,e.isSuccess=void 0,e.isFailure=void 0,e.responseMessage=void 0}function u(s,e){s.password.value=e,s.isSubmitted&&m(s)}function l(s){return e(this,void 0,void 0,function(){var e,a,n,d;return i(this,function(i){switch(i.label){case 0:return s.isSubmitted=!0,s.isSuccess=void 0,s.isFailure=void 0,s.responseMessage=void 0,m(s)?[2,!1]:(s.isSubmitting=!0,[4,t(o,s.password.value)]);case 1:return e=i.sent(),s.isSubmitting=!1,(null==e?void 0:e.isSuccess)?(s.isSuccess=!0,s.responseMessage=r.translate("notification.success.deactivate_customer"),[2,!0]):(s.isFailure=!0,a=null!==(d=null===(n=null==e?void 0:e.errors)||void 0===n?void 0:n[0])&&void 0!==d?d:"",s.responseMessage=a.includes("customer_deactivation_request_already_exists")?r.translate("notification.failure.deactivate_customer_request_already_exists"):r.translate("notification.failure.deactivate_customer"),[2,!1])}})})}function m(s){var e=n(s.password.value,{required:!0});return e.hasError?(s.password.hasError=!0,s.password.message=e.message):(s.password.hasError=!1,s.password.message=void 0),e.hasError}export{d as initDeactivateCustomerForm,u as setDeactivateCustomerFormPassword,l as submitDeactivateCustomerForm};