@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.
- package/dist/analytics/analytics-functions/addToCart.js +1 -1
- package/dist/analytics/analytics-functions/addToWishlist.js +1 -1
- package/dist/analytics/analytics-functions/completeRegistration.js +1 -1
- package/dist/analytics/analytics-functions/contactForm.js +1 -1
- package/dist/analytics/analytics-functions/createEmailSubscription.js +1 -1
- package/dist/analytics/analytics-functions/customerLogin.js +1 -1
- package/dist/analytics/analytics-functions/customerLogout.js +1 -1
- package/dist/analytics/analytics-functions/customerVisit.js +1 -1
- package/dist/analytics/analytics-functions/pageView.js +1 -1
- package/dist/analytics/analytics-functions/productView.js +1 -1
- package/dist/analytics/analytics-functions/removeFromCart.js +1 -1
- package/dist/analytics/analytics-functions/search.js +1 -1
- package/dist/analytics/analytics-functions/viewBrand.js +1 -1
- package/dist/analytics/analytics-functions/viewCart.js +1 -1
- package/dist/analytics/analytics-functions/viewCategory.js +1 -1
- package/dist/analytics/analytics-functions/viewListing.js +1 -1
- package/dist/analytics/analytics-functions/viewSearchResults.js +1 -1
- package/dist/analytics/analytics-functions/viewStorefrontPopup.js +1 -1
- package/dist/analytics/events.d.ts +8 -0
- package/dist/analytics/events.js +1 -1
- package/dist/analytics/ikas/analytics.js +1 -1
- package/dist/analytics/openai/addToCart.d.ts +2 -0
- package/dist/analytics/openai/addToCart.js +1 -0
- package/dist/analytics/openai/completeRegistration.d.ts +1 -0
- package/dist/analytics/openai/completeRegistration.js +1 -0
- package/dist/analytics/openai/contactForm.d.ts +1 -0
- package/dist/analytics/openai/contactForm.js +1 -0
- package/dist/analytics/openai/initAdvancedMatching.d.ts +12 -0
- package/dist/analytics/openai/initAdvancedMatching.js +1 -0
- package/dist/analytics/openai/pageView.d.ts +1 -0
- package/dist/analytics/openai/pageView.js +1 -0
- package/dist/analytics/openai/productView.d.ts +2 -0
- package/dist/analytics/openai/productView.js +1 -0
- package/dist/analytics/openai/utils.d.ts +26 -0
- package/dist/analytics/openai/utils.js +1 -0
- package/dist/analytics/utils.d.ts +1 -0
- package/dist/analytics/utils.js +1 -1
- package/dist/functions/api/cart/index.d.ts +2 -0
- package/dist/functions/api/cart/index.js +1 -1
- package/dist/functions/api/customer/index.d.ts +12 -2
- package/dist/functions/api/customer/index.js +1 -1
- package/dist/functions/api/loyalty/index.d.ts +2 -1
- package/dist/functions/api/loyalty/index.js +1 -1
- package/dist/functions/api/product/index.js +1 -1
- package/dist/functions/models/attribute-detail/index.d.ts +3 -0
- package/dist/functions/models/attribute-list/index.d.ts +3 -0
- package/dist/functions/models/image/index.d.ts +71 -21
- package/dist/functions/models/image/index.js +1 -1
- package/dist/functions/models/index.d.ts +1 -0
- package/dist/functions/models/order/index.d.ts +139 -4
- package/dist/functions/models/order/index.js +1 -1
- package/dist/functions/models/product/attribute-value/index.d.ts +5 -0
- package/dist/functions/models/product/index.d.ts +22 -0
- package/dist/functions/models/product/index.js +1 -1
- package/dist/functions/models/product/variant/index.d.ts +96 -6
- package/dist/functions/models/product/variant/index.js +1 -1
- package/dist/functions/models/product-list/index.d.ts +21 -0
- package/dist/functions/models/product-list/index.js +1 -1
- package/dist/functions/models/validator/address/index.d.ts +70 -2
- package/dist/functions/models/validator/deactivate-customer/index.d.ts +54 -0
- package/dist/functions/models/validator/deactivate-customer/index.js +1 -0
- package/dist/functions/stores/base/index.d.ts +75 -0
- package/dist/functions/stores/base/index.js +1 -1
- package/dist/functions/stores/cart/index.d.ts +46 -2
- package/dist/functions/stores/cart/index.js +1 -1
- package/dist/functions/stores/customer/index.d.ts +349 -29
- package/dist/functions/stores/customer/index.js +1 -1
- package/dist/i18n/ikas-texts.d.ts +425 -0
- package/dist/i18n/index.d.ts +19 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +1 -1
- package/dist/packages/storefront-api/src/__api/mutations/removeGiftCardFromCart.js +1 -0
- package/dist/packages/storefront-api/src/__api/mutations/unlinkExternalAccount.js +1 -0
- package/dist/packages/storefront-api/src/__api/queries/getExternalAccountLink.js +1 -0
- package/dist/packages/storefront-api/src/__api/queries/getLoyaltyProgram.js +1 -0
- package/dist/packages/storefront-api/src/__api/queries/getMilesSmilesDetails.js +1 -0
- package/dist/packages/storefront-api/src/__api/queries/getRefundableLines.js +1 -0
- package/dist/packages/storefront-api/src/__api/queries/listOrderTransactionsWithPrices.js +1 -0
- package/dist/packages/storefront-api-client/src/utils/api.js +1 -1
- package/dist/packages/storefront-config/src/index.js +1 -1
- package/dist/packages/storefront-config/src/theme-globals.js +1 -0
- package/dist/router/index.d.ts +28 -0
- package/dist/router/index.js +1 -1
- package/dist/storefront-api/src/__api/mutations/removeGiftCardFromCart.d.ts +7 -0
- package/dist/storefront-api/src/__api/mutations/unlinkExternalAccount.d.ts +6 -0
- package/dist/storefront-api/src/__api/queries/getExternalAccountLink.d.ts +6 -0
- package/dist/storefront-api/src/__api/queries/getLoyaltyProgram.d.ts +3 -0
- package/dist/storefront-api/src/__api/queries/getMilesSmilesDetails.d.ts +3 -0
- package/dist/storefront-api/src/__api/queries/getRefundableLines.d.ts +6 -0
- package/dist/storefront-api/src/__api/queries/listOrderTransactionsWithPrices.d.ts +6 -0
- package/dist/storefront-api/src/__api/types/index.d.ts +101 -6
- package/dist/storefront-api-client/src/utils/api.d.ts +7 -0
- package/dist/storefront-config/src/index.d.ts +32 -0
- package/dist/storefront-config/src/theme-globals.d.ts +349 -0
- package/dist/storefront-models/src/index.d.ts +8 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/attribute-list.d.ts +2 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/attribute.d.ts +2 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/color.d.ts +2 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/index.d.ts +1 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/link.d.ts +10 -0
- package/dist/storefront-models/src/models/blueprint/prop-value/variable-binding.d.ts +16 -0
- package/dist/storefront-models/src/models/image/index.d.ts +7 -0
- package/dist/storefront-models/src/models/loyalty-program/customer-info/index.d.ts +2 -0
- package/dist/storefront-models/src/models/loyalty-program/earning-method/index.d.ts +1 -0
- package/dist/storefront-models/src/models/loyalty-program/index.d.ts +1 -0
- package/dist/storefront-models/src/models/loyalty-program/point-history/index.d.ts +1 -0
- package/dist/storefront-models/src/models/order/gift-card-line/index.d.ts +15 -0
- package/dist/storefront-models/src/models/order/index.d.ts +10 -0
- package/dist/storefront-models/src/models/order/line-item/index.d.ts +6 -1
- package/dist/storefront-models/src/models/order/package/index.d.ts +1 -1
- package/dist/storefront-models/src/models/order/refund/reason/index.d.ts +6 -0
- package/dist/storefront-models/src/models/order/refund/reason/translation/index.d.ts +4 -0
- package/dist/storefront-models/src/models/order/refund/refundable-line/index.d.ts +8 -0
- package/dist/storefront-models/src/models/order/refund/refundable-lines/index.d.ts +8 -0
- package/dist/storefront-models/src/models/order/refund/settings/translation/index.d.ts +4 -0
- package/dist/storefront-models/src/models/payment-gateway/index.d.ts +3 -1
- package/dist/storefront-models/src/models/product/attribute/index.d.ts +6 -1
- package/dist/storefront-models/src/models/product/campaign/data/index.d.ts +2 -0
- package/dist/storefront-models/src/models/product/campaign/filter/index.d.ts +1 -1
- package/dist/storefront-models/src/models/product/campaign/product-tiered-discount/index.d.ts +13 -0
- package/dist/storefront-models/src/models/product/image/index.d.ts +5 -0
- package/dist/storefront-models/src/models/product/variant/index.d.ts +17 -0
- package/dist/storefront-models/src/models/storefront/index.d.ts +1 -0
- package/dist/storefront-models/src/models/validator/deactivate-customer/index.d.ts +4 -0
- package/dist/stores/customer/index.d.ts +2 -1
- package/dist/stores/customer/index.js +1 -1
- package/dist/theme/settings/index.d.ts +51 -0
- package/dist/theme/settings/index.js +1 -0
- package/dist/utils/component-renderer.js +1 -1
- package/dist/utils/currency.d.ts +36 -3
- package/dist/utils/helper.d.ts +1 -0
- package/dist/utils/helper.js +1 -1
- package/dist/utils/pay-with-ikas.d.ts +552 -0
- package/dist/utils/pay-with-ikas.js +1 -0
- package/dist/utils/svg.d.ts +15 -0
- package/dist/utils/svg.js +1 -0
- 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
|
|
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.
|
|
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
|
-
*
|
|
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
|
|
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
|
-
* ```
|
|
14
|
-
* import {
|
|
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};
|