@sentecacommerce-theme/lib 0.12.76 → 0.12.77

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.
@@ -66,6 +66,7 @@ var useBnpCalculateForCart = function useBnpCalculateForCart(props) {
66
66
  locale: configLocale || 'en'
67
67
  });
68
68
  return (0, _extends2["default"])({}, offer, {
69
+ offerRaw: offer,
69
70
  totalRepaymentAmount: totalRepaymentAmount,
70
71
  correctDownPaymentAmount: correctDownPaymentAmount,
71
72
  installmentAmount: installmentAmount,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/checkout/hooks/useBnpCalculateForCart.ts"],"names":["useBnpCalculateForCart","props","preferredInstallmentCentAmount","downPaymentCentAmount","response","configLocale","price","locale","data","offers","map","offer","_totalRepaymentAmount","totalRepaymentAmount","_correctDownPaymentAmount","correctDownPaymentAmount","_installmentAmount","installmentAmount","_processingFeeAmount","processingFeeAmount","precision","fractionDigits","currency","currencyCode","sort","offer2","Number","maturity"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react'\nimport { useBnpCalculateForCartQuery } from '../api'\nimport { decodePrice, formatAsCurrency, useConfigState } from '../../index'\n\nexport const useBnpCalculateForCart = (props?: {\n preferredInstallmentCentAmount?: number\n downPaymentCentAmount?: number\n}) => {\n const { preferredInstallmentCentAmount = 0, downPaymentCentAmount = 0 } =\n props ?? {}\n\n const response = useBnpCalculateForCartQuery({\n preferredInstallmentCentAmount,\n downPaymentCentAmount,\n })\n const configLocale: string = useConfigState()?.price?.locale\n\n return useMemo(\n () => ({\n ...response,\n data: {\n ...response?.data?.[0],\n offers: response?.data?.[0]?.offers\n ?.map((offer) => {\n const _totalRepaymentAmount = decodePrice(\n offer.totalRepaymentAmount\n )\n const _correctDownPaymentAmount = decodePrice(\n offer.correctDownPaymentAmount\n )\n const _installmentAmount = decodePrice(offer.installmentAmount)\n const _processingFeeAmount = decodePrice(offer.processingFeeAmount)\n\n const totalRepaymentAmount = formatAsCurrency({\n price: _totalRepaymentAmount,\n precision: offer.totalRepaymentAmount.fractionDigits,\n currency: offer.totalRepaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const correctDownPaymentAmount = formatAsCurrency({\n price: _correctDownPaymentAmount,\n precision: offer.correctDownPaymentAmount.fractionDigits,\n currency: offer.correctDownPaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const installmentAmount = formatAsCurrency({\n price: _installmentAmount,\n precision: offer.installmentAmount.fractionDigits,\n currency: offer.installmentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const processingFeeAmount = formatAsCurrency({\n price: _processingFeeAmount,\n precision: offer.processingFeeAmount.fractionDigits,\n currency: offer.processingFeeAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n return {\n ...offer,\n totalRepaymentAmount,\n correctDownPaymentAmount,\n installmentAmount,\n processingFeeAmount,\n }\n })\n .sort(\n (offer, offer2) => Number(offer.maturity) - Number(offer2.maturity)\n ),\n },\n }),\n [response?.data?.[0]?.offers]\n )\n}\n"],"file":"useBnpCalculateForCart.js"}
1
+ {"version":3,"sources":["../../../../src/checkout/hooks/useBnpCalculateForCart.ts"],"names":["useBnpCalculateForCart","props","preferredInstallmentCentAmount","downPaymentCentAmount","response","configLocale","price","locale","data","offers","map","offer","_totalRepaymentAmount","totalRepaymentAmount","_correctDownPaymentAmount","correctDownPaymentAmount","_installmentAmount","installmentAmount","_processingFeeAmount","processingFeeAmount","precision","fractionDigits","currency","currencyCode","offerRaw","sort","offer2","Number","maturity"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react'\nimport { useBnpCalculateForCartQuery } from '../api'\nimport { decodePrice, formatAsCurrency, useConfigState } from '../../index'\n\nexport const useBnpCalculateForCart = (props?: {\n preferredInstallmentCentAmount?: number\n downPaymentCentAmount?: number\n}) => {\n const { preferredInstallmentCentAmount = 0, downPaymentCentAmount = 0 } =\n props ?? {}\n\n const response = useBnpCalculateForCartQuery({\n preferredInstallmentCentAmount,\n downPaymentCentAmount,\n })\n const configLocale: string = useConfigState()?.price?.locale\n\n return useMemo(\n () => ({\n ...response,\n data: {\n ...response?.data?.[0],\n offers: response?.data?.[0]?.offers\n ?.map((offer) => {\n const _totalRepaymentAmount = decodePrice(\n offer.totalRepaymentAmount\n )\n const _correctDownPaymentAmount = decodePrice(\n offer.correctDownPaymentAmount\n )\n const _installmentAmount = decodePrice(offer.installmentAmount)\n const _processingFeeAmount = decodePrice(offer.processingFeeAmount)\n\n const totalRepaymentAmount = formatAsCurrency({\n price: _totalRepaymentAmount,\n precision: offer.totalRepaymentAmount.fractionDigits,\n currency: offer.totalRepaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const correctDownPaymentAmount = formatAsCurrency({\n price: _correctDownPaymentAmount,\n precision: offer.correctDownPaymentAmount.fractionDigits,\n currency: offer.correctDownPaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const installmentAmount = formatAsCurrency({\n price: _installmentAmount,\n precision: offer.installmentAmount.fractionDigits,\n currency: offer.installmentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const processingFeeAmount = formatAsCurrency({\n price: _processingFeeAmount,\n precision: offer.processingFeeAmount.fractionDigits,\n currency: offer.processingFeeAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n return {\n ...offer,\n offerRaw: offer,\n totalRepaymentAmount,\n correctDownPaymentAmount,\n installmentAmount,\n processingFeeAmount,\n }\n })\n .sort(\n (offer, offer2) => Number(offer.maturity) - Number(offer2.maturity)\n ),\n },\n }),\n [response?.data?.[0]?.offers]\n )\n}\n"],"file":"useBnpCalculateForCart.js"}
@@ -53,6 +53,8 @@ function ListingFiltersProvider(_ref) {
53
53
  var result = aggregates == null ? void 0 : aggregates.sort(function (a, b) {
54
54
  return a.order - b.order;
55
55
  }).map(function (currentAggregate) {
56
+ var _listing$slugAliases$;
57
+
56
58
  var type = currentAggregate.aggregationType.toString();
57
59
  var term = currentAggregate.aggregationDefinition.split(':')[0];
58
60
  var filter = currentAggregate.filterDefinition;
@@ -64,7 +66,7 @@ function ListingFiltersProvider(_ref) {
64
66
  filter: filter,
65
67
  router: router,
66
68
  type: type,
67
- slug: slug,
69
+ slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
68
70
  pageType: pageType
69
71
  });
70
72
  var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce(function (count, res) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAyCA,IAAMA,0BAA0B,gBAAGC,kBAAMC,aAAN,CAEjCC,SAFiC,CAAnC;;AAIO,SAASC,sBAAT,OAIJ;AAAA,MAHDC,QAGC,QAHDA,QAGC;;AAAA,0BACyD,0CADzD;AAAA,MACOC,UADP,qBACOA,UADP;AAAA,MACyBC,QADzB,qBACmBC,IADnB;AAAA,MACmCC,iBADnC,qBACmCA,iBADnC;;AAAA,2BAGgD,4BAC/CH,UAD+C,EAE/CI,0BAAqBC,OAF0B,EAG/CF,iBAH+C,CAHhD;AAAA,MAGaG,OAHb,sBAGOC,IAHP;AAAA,MAGsBC,SAHtB,sBAGsBA,SAHtB;AAAA,MAGiCC,UAHjC,sBAGiCA,UAHjC;;AASD,MAAMC,MAAM,GAAG,4BAAf;AACA,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,IAAI,GAAG,qCAAb;;AAEA,MAAML,IAAI,GAAGZ,kBAAMkB,OAAN,CAAc,YAAM;AAC/B,QAAI,CAACL,SAAD,IAAcF,OAAlB,EAA2B;AACzB,UAAMQ,MAAM,GAAGd,UAAH,oBAAGA,UAAU,CACrBe,IADW,CACN,UAACC,CAAD,EAAIC,CAAJ;AAAA,eAAUD,CAAC,CAACE,KAAF,GAAUD,CAAC,CAACC,KAAtB;AAAA,OADM,EAEZC,GAFY,CAER,UAACC,gBAAD,EAAsB;AACzB,YAAMlB,IAAI,GAAGkB,gBAAgB,CAACC,eAAjB,CAAiCC,QAAjC,EAAb;AACA,YAAMC,IAAI,GAAGH,gBAAgB,CAACI,qBAAjB,CAAuCC,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAb;AACA,YAAMC,MAAM,GAAGN,gBAAgB,CAACO,gBAAhC;AACA,YAAMC,OAAsB,GAAGtB,OAAO,CAACJ,IAAD,CAAP,CAAc2B,IAAd,CAC7B,UAACC,GAAD;AAAA,iBAAwBA,GAAG,CAACC,IAAJ,KAAaR,IAArC;AAAA,SAD6B,CAA/B;AAIA,YAAMS,gBAAgB,GAAGC,eAAe,CAAC;AACvCC,UAAAA,UAAU,EAAEN,OAD2B;AAEvCF,UAAAA,MAAM,EAANA,MAFuC;AAGvCf,UAAAA,MAAM,EAANA,MAHuC;AAIvCT,UAAAA,IAAI,EAAJA,IAJuC;AAKvCU,UAAAA,IAAI,EAAJA,IALuC;AAMvCX,UAAAA,QAAQ,EAARA;AANuC,SAAD,CAAxC;AASA,YAAMkC,aAAa,GAAGH,gBAAH,oBAAGA,gBAAgB,CAAEI,MAAlB,CAAyB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAC7D,cAAIA,GAAG,CAACC,QAAR,EAAkBF,KAAK;AACvB,iBAAOA,KAAP;AACD,SAHqB,EAGnB,CAHmB,CAAtB;AAKA,YAAMG,eAAe,GAAI;AACvBT,UAAAA,IAAI,EAAEX,gBAAgB,CAACqB,KADA;AAEvBC,UAAAA,SAAS,EAAEtB,gBAAgB,CAACsB,SAFL;AAGvBC,UAAAA,KAAK,EAAEX,gBAHgB;AAIvBG,UAAAA,aAAa,EAAbA,aAJuB;AAKvBS,UAAAA,GAAG,EAAEhB,OALkB;AAMvBiB,UAAAA,QAAQ,EAAE;AAAA,mBACRlC,MAAM,CAACmC,IAAP,CAAY;AACVC,cAAAA,QAAQ,EAAEpC,MAAM,CAACoC,QADP;AAEVC,cAAAA,KAAK,gCACArC,MAAM,CAACqC,KADP;AAEHtB,gBAAAA,MAAM,EAAEuB,YAAY,CAACtC,MAAM,CAACqC,KAAP,CAAatB,MAAd,EAAsBA,MAAtB;AAFjB;AAFK,aAAZ,CADQ;AAAA,WANa;AAcvBxB,UAAAA,IAAI,EAAEA;AAdiB,SAAzB;AAiBA,eAAOsC,eAAP;AACD,OA1CY,CAAf;AA4CA,aAAO1B,MAAP;AACD;;AACD,WAAOjB,SAAP;AACD,GAjDY,EAiDV,CAACS,OAAD,EAAUK,MAAV,CAjDU,CAAb;;AAmDA,MAAMuC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,QAAMF,KAAK,iCAAQrC,MAAM,CAACqC,KAAf,CAAX;AACA,WAAOA,KAAK,CAACtB,MAAb;AAEAf,IAAAA,MAAM,CAACmC,IAAP,CAAY;AACVC,MAAAA,QAAQ,EAAEpC,MAAM,CAACoC,QADP;AAEVC,MAAAA,KAAK,EAALA;AAFU,KAAZ;AAID,GARD;;AAUA,MAAMG,eAAe,GAAGxD,kBAAMkB,OAAN,CAAc,YAAM;AAC1C,WAAO,+BAAmBF,MAAnB,EAA2BC,IAA3B,EAAiCL,IAAjC,EAA8CG,MAA9C,CAAP;AACD,GAFuB,EAErB,CAACC,MAAD,EAASJ,IAAT,CAFqB,CAAxB;;AAIA,sBACE,gCAAC,0BAAD,CAA4B,QAA5B;AACE,IAAA,KAAK,EAAE;AAAEA,MAAAA,IAAI,EAAJA,IAAF;AAAQ2C,MAAAA,eAAe,EAAfA,eAAR;AAAyBC,MAAAA,eAAe,EAAfA,eAAzB;AAA0C3C,MAAAA,SAAS,EAATA,SAA1C;AAAqDC,MAAAA,UAAU,EAAVA;AAArD;AADT,KAGGV,QAHH,CADF;AAOD;;AAEM,SAASqD,iBAAT,GAA6B;AAClC,MAAMC,OAAO,GAAG1D,kBAAM2D,UAAN,CAAiB5D,0BAAjB,CAAhB;;AACA,MAAI2D,OAAO,KAAKxD,SAAhB,EAA2B;AACzB,UAAM,IAAI0D,KAAJ,CACJ,gEADI,CAAN;AAGD;;AACD,SAAOF,OAAP;AACD;;AAED,SAASpB,eAAT,QAcG;AAAA;;AAAA,MAbDC,UAaC,SAbDA,UAaC;AAAA,MAZDhC,IAYC,SAZDA,IAYC;AAAA,MAXDwB,MAWC,SAXDA,MAWC;AAAA,MAVDd,IAUC,SAVDA,IAUC;AAAA,MATDD,MASC,SATDA,MASC;AAAA,MARDV,QAQC,SARDA,QAQC;AACD,gCAAOiC,UAAU,CAACsB,OAAlB,8CAAO,oBACH9B,MADG,CACI,UAACY,GAAD;AAAA,WAASA,GAAG,CAACD,KAAJ,GAAY,CAArB;AAAA,GADJ,CAAP,qBAAO,sBAEHlB,GAFG,CAEC,UAACsC,WAAD,EAAiB;AACrB,QAAMC,SAAS,GAAGC,MAAM,CAACF,WAAD,EAAcvD,IAAd,CAAxB;AAEA,QAAMqC,QAAQ,GAAGqB,gBAAgB,CAC/BjD,MAD+B,EAE/Be,MAF+B,EAG/BgC,SAH+B,EAI/BG,mBAAmB,CAAC3D,IAAD,CAJY,CAAjC;AAOA,WAAO;AACLK,MAAAA,IAAI,EAAEkD,WADD;AAELlB,MAAAA,QAAQ,EAARA,QAFK;AAGLuB,MAAAA,IAAI,EAAEL,WAAW,CAACK,IAHb;AAILC,MAAAA,OAAO,EAAE,mBAAM;AACbpD,QAAAA,MAAM,CAACmC,IAAP,CACEkB,oBAAoB,CAClB/D,QADkB,EAElBW,IAFkB,EAGlB;AACEqD,UAAAA,OAAO,EAAEvC,MADX;AAEEwC,UAAAA,MAAM,EAAER,SAFV;AAGES,UAAAA,WAAW,EAAEN,mBAAmB,CAAC3D,IAAD;AAHlC,SAHkB,EAQlBkE,OAAO,CAAC7B,QAAD,CARW,EASlB5B,MATkB,CADtB;AAaD;AAlBI,KAAP;AAoBD,GAhCI,CAAP;AAiCD;;AAED,IAAMiD,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBjD,MADuB,EAEvBe,MAFuB,EAGvBgC,SAHuB,EAIvBxD,IAJuB,EAKpB;AAAA;;AACH,MAAMmE,eAAe,GAAGC,KAAK,CAACC,OAAN,kBAAc5D,MAAM,CAACqC,KAArB,qBAAc,cAActB,MAA5B,CAAxB;AAEA,SAAO2C,eAAe,GAClB,CAAC,0BAAE1D,MAAM,CAACqC,KAAP,CAAatB,MAAf,sCAAC,qBACEG,IADF,CACO,UAAC2C,GAAD;AAAA,WAAiBA,GAAG,CAACC,QAAJ,CAAgB/C,MAAhB,SAA0BxB,IAA1B,CAAjB;AAAA,GADP,CAAD,aAAC,sBAEEuE,QAFF,CAEWf,SAFX,CAAD,CADiB,GAIlB,0BAAA/C,MAAM,CAACqC,KAAP,CAAatB,MAAb,2CAAqB+C,QAArB,CAAiC/C,MAAjC,SAA2CxB,IAA3C,gCACES,MAAM,CAACqC,KAAP,CAAatB,MADf,qBACE,sBAAqB+C,QAArB,CAA8Bf,SAA9B,CADF,CAJJ;AAMD,CAdD;;AAgBO,IAAMG,mBAAmB,GAAG;AACjCa,EAAAA,MAAM,EAAE,OADyB;AAEjCC,EAAAA,KAAK,EAAE,OAF0B;AAGjCC,EAAAA,KAAK,EAAE;AAH0B,CAA5B;;;AAMP,SAASjB,MAAT,CAAgBkB,CAAhB,EAAwB3E,IAAxB,EAAmC;AACjC,MAAM4E,OAAO,GAAG;AACdF,IAAAA,KAAK,SAAMC,CAAC,CAACE,GAAR,OADS;AAEdL,IAAAA,MAAM,EAAKG,CAAC,CAACG,IAAP,SAAeH,CAAC,CAACI;AAFT,GAAhB;AAIA,MAAI,CAACH,OAAO,CAAC5E,IAAD,CAAZ,EAAoB,OAAO2E,CAAC,CAACE,GAAT;AAEpB,SAAOD,OAAO,CAAC5E,IAAD,CAAd;AACD;;AAED,SAASgF,YAAT,CAAsBC,IAAtB,EAAqCnC,KAArC,EAAiDoC,MAAjD,EAAkE;AAChE,MAAMC,QAAQ,GAAG,8CAAgBrC,KAAhB,EAAuB,CAAC,MAAD,CAAvB,CAAjB,CADgE,CACd;;AAElD,MAAMlC,MAAM,GAAGwE,mBAAmB,CAACD,QAAD,EAAWF,IAAX,EAAiBC,MAAjB,CAAlC;AACA,SAAOtE,MAAP;AACD;;AAED,IAAMwE,mBAAmB,GAAG,SAAtBA,mBAAsB,CAC1BtC,KAD0B,EAE1BmC,IAF0B,EAG1BC,MAH0B,EAIvB;AACH,MAAMG,aAAa,GAAG,EAAtB;;AAEA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,QAMhB;AAAA;;AAAA,0BALJC,GAKI;AAAA,QALJA,GAKI,0BALE,EAKF;AAAA,QAJJC,OAII,SAJJA,OAII;;AAAA,qBAC0BD,GAAG,CAAChE,KAAJ,CAAU,GAAV,CAD1B;AAAA,QACGvB,IADH;AAAA,QACSyF,QADT;AAAA,QACmBC,GADnB;;AAGJ,QAAMC,UAAU,uBAAGH,OAAH,oBAAGA,OAAO,CAAEzB,OAAZ,+BAAuB/D,IAAvC;AACA,QAAM4F,SAAS,sBAAGJ,OAAH,oBAAGA,OAAO,CAAExB,MAAZ,8BAAsB0B,GAArC;AACA,QAAMG,cAAc,2BAAGL,OAAH,oBAAGA,OAAO,CAAEvB,WAAZ,mCAA2BwB,QAA/C;;AAEA,QAAIJ,aAAa,CAACM,UAAD,CAAjB,EAA+B;AAC7BN,MAAAA,aAAa,CAACM,UAAD,CAAb,UAAiCC,SAAjC;AACD,KAFD,MAEO;AACLP,MAAAA,aAAa,CACXM,UADW,CAAb,eAEcA,UAFd,SAE4BE,cAF5B,SAE8CD,SAF9C;AAGD;AACF,GApBD;;AAsBAE,EAAAA,MAAM,CAACC,IAAP,CAAYjD,KAAZ,EAAmBkD,OAAnB,CAA2B,UAACC,EAAD,EAAQ;AACjC,QAAI7B,KAAK,CAACC,OAAN,CAAcvB,KAAK,CAACmD,EAAD,CAAnB,CAAJ,EAA8B;AAC5BnD,MAAAA,KAAK,CAACmD,EAAD,CAAL,CAAUD,OAAV,CAAkB,UAACxE,MAAD,EAAoB;AACpC8D,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAE/D;AAAP,SAAD,CAAb;AACD,OAFD;AAGD,KAJD,MAIO;AACL,UAAIyE,EAAE,KAAK,MAAX,EAAmB;AACjBZ,QAAAA,aAAa,CAACY,EAAD,CAAb,aAA4BnD,KAAK,CAACmD,EAAD,CAAjC;AACD,OAFD,MAEO;AACLX,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEzC,KAAK,CAACmD,EAAD;AAAZ,SAAD,CAAb;AACD;AACF;AACF,GAZD;;AAcA,MAAIf,MAAJ,EAAY;AACV,QAAMgB,OAAO,GAAGb,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,CAA4BxC,KAA5B,CAAkC,GAAlC,EAAuC,CAAvC,EAA0CA,KAA1C,CAAgD,GAAhD,CAAhB;AAEA,QAAM4E,SAAS,GAAGD,OAAO,CAAC1E,MAAR,CAAe,UAAC4E,CAAD;AAAA,aAAe,CAACnB,IAAI,CAACjB,MAAL,CAAYO,QAAZ,CAAqB6B,CAArB,CAAhB;AAAA,KAAf,CAAlB;;AAEA,QAAID,SAAS,CAACE,MAAV,KAAqB,CAAzB,EAA4B;AAC1BhB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb;AACD,KAFD,MAEO;AACLsB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,eAAwCkB,IAAI,CAAClB,OAA7C,SACEkB,IAAI,CAAChB,WADP,SAEIkC,SAAS,CAACG,IAAV,CAAe,GAAf,CAFJ;AAGD;AACF,GAZD,MAYO;AACLhB,IAAAA,aAAa,CAAC;AAAEC,MAAAA,GAAG,EAAE,EAAP;AAAWC,MAAAA,OAAO,EAAEP;AAApB,KAAD,CAAb;AACD;;AAED,MAAIa,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BgB,MAA3B,KAAsC,CAA1C,EAA6C;AAE7C,SAAOP,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BnD,MAA3B,CAAkC,UAACE,GAAD,EAAMsD,GAAN,EAAWa,GAAX,EAAmB;AAC1DnE,IAAAA,GAAG,UAAOmE,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAvB,IAA4BlB,aAAa,CAACK,GAAD,CAA5C;AACA,WAAOtD,GAAP;AACD,GAHM,KAAP;AAID,CAjED;;AAmEA,SAAS0B,oBAAT,CACE9D,IADF,EAEEU,IAFF,EAGE8E,OAHF,EAIEN,MAJF,EAKEzE,MALF,EAME;AACA,MAAIT,IAAI,KAAKwG,wBAAiBC,MAA9B,EAAsC;AACpC,WAAOhG,MAAM,CAACqC,KAAP,CAAa4D,CAAb,kBACUjG,MAAM,CAACqC,KAAP,CAAa4D,CADvB,SAC4B1B,YAAY,CACzCQ,OADyC,EAEzC/E,MAAM,CAACqC,KAFkC,EAGzCoC,MAHyC,CADxC,SAMCxE,IAND,kBAMkBD,MAAM,CAACqC,KAAP,CAAa6D,MAN/B,SAMyC3B,YAAY,CACtDQ,OADsD,EAEtD/E,MAAM,CAACqC,KAF+C,EAGtDoC,MAHsD,CAN5D;AAWD;;AAED,MAAIzE,MAAM,CAACqC,KAAP,CAAa8D,GAAjB,EAAsB;AACpB,iBAAWnG,MAAM,CAACqC,KAAP,CAAapC,IAAxB,SAAgCD,MAAM,CAACqC,KAAP,CAAa8D,GAA7C,SACEC,2BAAa7G,IAAb,CADF,SAEIgF,YAAY,CAACQ,OAAD,EAAU/E,MAAM,CAACqC,KAAjB,EAAwBoC,MAAxB,CAFhB;AAGD;;AAED,eAAWxE,IAAX,SAAmBmG,2BAAa7G,IAAb,CAAnB,SAAyCgF,YAAY,CACnDQ,OADmD,EAEnD/E,MAAM,CAACqC,KAF4C,EAGnDoC,MAHmD,CAArD;AAKD;;AAED,SAASnC,YAAT,CACE+D,OADF,EAEEC,UAFF,EAGE;AACA,MAAI,CAACD,OAAL,EAAc;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,QAAIA,OAAO,CAACvC,QAAR,CAAiBwC,UAAjB,CAAJ,EAAkC;AAElC,WAAOD,OAAP;AACD;;AAED,SAAOA,OAAO,CAACtF,MAAR,CAAe,UAACA,MAAD;AAAA,WAAY,CAACA,MAAM,CAAC+C,QAAP,CAAgBwC,UAAhB,CAAb;AAAA,GAAf,CAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
@@ -53,6 +53,7 @@ export var useBnpCalculateForCart = props => {
53
53
  locale: configLocale || 'en'
54
54
  });
55
55
  return _extends({}, offer, {
56
+ offerRaw: offer,
56
57
  totalRepaymentAmount,
57
58
  correctDownPaymentAmount,
58
59
  installmentAmount,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/checkout/hooks/useBnpCalculateForCart.ts"],"names":["useMemo","useBnpCalculateForCartQuery","decodePrice","formatAsCurrency","useConfigState","useBnpCalculateForCart","props","preferredInstallmentCentAmount","downPaymentCentAmount","response","configLocale","price","locale","data","offers","map","offer","_totalRepaymentAmount","totalRepaymentAmount","_correctDownPaymentAmount","correctDownPaymentAmount","_installmentAmount","installmentAmount","_processingFeeAmount","processingFeeAmount","precision","fractionDigits","currency","currencyCode","sort","offer2","Number","maturity"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react'\nimport { useBnpCalculateForCartQuery } from '../api'\nimport { decodePrice, formatAsCurrency, useConfigState } from '../../index'\n\nexport const useBnpCalculateForCart = (props?: {\n preferredInstallmentCentAmount?: number\n downPaymentCentAmount?: number\n}) => {\n const { preferredInstallmentCentAmount = 0, downPaymentCentAmount = 0 } =\n props ?? {}\n\n const response = useBnpCalculateForCartQuery({\n preferredInstallmentCentAmount,\n downPaymentCentAmount,\n })\n const configLocale: string = useConfigState()?.price?.locale\n\n return useMemo(\n () => ({\n ...response,\n data: {\n ...response?.data?.[0],\n offers: response?.data?.[0]?.offers\n ?.map((offer) => {\n const _totalRepaymentAmount = decodePrice(\n offer.totalRepaymentAmount\n )\n const _correctDownPaymentAmount = decodePrice(\n offer.correctDownPaymentAmount\n )\n const _installmentAmount = decodePrice(offer.installmentAmount)\n const _processingFeeAmount = decodePrice(offer.processingFeeAmount)\n\n const totalRepaymentAmount = formatAsCurrency({\n price: _totalRepaymentAmount,\n precision: offer.totalRepaymentAmount.fractionDigits,\n currency: offer.totalRepaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const correctDownPaymentAmount = formatAsCurrency({\n price: _correctDownPaymentAmount,\n precision: offer.correctDownPaymentAmount.fractionDigits,\n currency: offer.correctDownPaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const installmentAmount = formatAsCurrency({\n price: _installmentAmount,\n precision: offer.installmentAmount.fractionDigits,\n currency: offer.installmentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const processingFeeAmount = formatAsCurrency({\n price: _processingFeeAmount,\n precision: offer.processingFeeAmount.fractionDigits,\n currency: offer.processingFeeAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n return {\n ...offer,\n totalRepaymentAmount,\n correctDownPaymentAmount,\n installmentAmount,\n processingFeeAmount,\n }\n })\n .sort(\n (offer, offer2) => Number(offer.maturity) - Number(offer2.maturity)\n ),\n },\n }),\n [response?.data?.[0]?.offers]\n )\n}\n"],"file":"useBnpCalculateForCart.js"}
1
+ {"version":3,"sources":["../../../../src/checkout/hooks/useBnpCalculateForCart.ts"],"names":["useMemo","useBnpCalculateForCartQuery","decodePrice","formatAsCurrency","useConfigState","useBnpCalculateForCart","props","preferredInstallmentCentAmount","downPaymentCentAmount","response","configLocale","price","locale","data","offers","map","offer","_totalRepaymentAmount","totalRepaymentAmount","_correctDownPaymentAmount","correctDownPaymentAmount","_installmentAmount","installmentAmount","_processingFeeAmount","processingFeeAmount","precision","fractionDigits","currency","currencyCode","offerRaw","sort","offer2","Number","maturity"],"mappings":"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","sourcesContent":["import React, { useMemo } from 'react'\nimport { useBnpCalculateForCartQuery } from '../api'\nimport { decodePrice, formatAsCurrency, useConfigState } from '../../index'\n\nexport const useBnpCalculateForCart = (props?: {\n preferredInstallmentCentAmount?: number\n downPaymentCentAmount?: number\n}) => {\n const { preferredInstallmentCentAmount = 0, downPaymentCentAmount = 0 } =\n props ?? {}\n\n const response = useBnpCalculateForCartQuery({\n preferredInstallmentCentAmount,\n downPaymentCentAmount,\n })\n const configLocale: string = useConfigState()?.price?.locale\n\n return useMemo(\n () => ({\n ...response,\n data: {\n ...response?.data?.[0],\n offers: response?.data?.[0]?.offers\n ?.map((offer) => {\n const _totalRepaymentAmount = decodePrice(\n offer.totalRepaymentAmount\n )\n const _correctDownPaymentAmount = decodePrice(\n offer.correctDownPaymentAmount\n )\n const _installmentAmount = decodePrice(offer.installmentAmount)\n const _processingFeeAmount = decodePrice(offer.processingFeeAmount)\n\n const totalRepaymentAmount = formatAsCurrency({\n price: _totalRepaymentAmount,\n precision: offer.totalRepaymentAmount.fractionDigits,\n currency: offer.totalRepaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const correctDownPaymentAmount = formatAsCurrency({\n price: _correctDownPaymentAmount,\n precision: offer.correctDownPaymentAmount.fractionDigits,\n currency: offer.correctDownPaymentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const installmentAmount = formatAsCurrency({\n price: _installmentAmount,\n precision: offer.installmentAmount.fractionDigits,\n currency: offer.installmentAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n const processingFeeAmount = formatAsCurrency({\n price: _processingFeeAmount,\n precision: offer.processingFeeAmount.fractionDigits,\n currency: offer.processingFeeAmount.currencyCode,\n locale: configLocale || 'en',\n })\n\n return {\n ...offer,\n offerRaw: offer,\n totalRepaymentAmount,\n correctDownPaymentAmount,\n installmentAmount,\n processingFeeAmount,\n }\n })\n .sort(\n (offer, offer2) => Number(offer.maturity) - Number(offer2.maturity)\n ),\n },\n }),\n [response?.data?.[0]?.offers]\n )\n}\n"],"file":"useBnpCalculateForCart.js"}
@@ -30,6 +30,8 @@ export function ListingFiltersProvider(_ref) {
30
30
  var data = React.useMemo(() => {
31
31
  if (!isLoading && aggData) {
32
32
  var result = aggregates == null ? void 0 : aggregates.sort((a, b) => a.order - b.order).map(currentAggregate => {
33
+ var _listing$slugAliases$;
34
+
33
35
  var type = currentAggregate.aggregationType.toString();
34
36
  var term = currentAggregate.aggregationDefinition.split(':')[0];
35
37
  var filter = currentAggregate.filterDefinition;
@@ -39,7 +41,7 @@ export function ListingFiltersProvider(_ref) {
39
41
  filter,
40
42
  router,
41
43
  type,
42
- slug,
44
+ slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
43
45
  pageType
44
46
  });
45
47
  var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce((count, res) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,aAA1B;AAEA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SACEC,iBADF,EAEEC,oBAFF,QAKO,QALP;AAOA,SAAoBC,gBAApB,QAA4C,UAA5C;AACA,SAASC,cAAT,QAA+B,kBAA/B;AAEA,SAASC,eAAT,QAAgC,qCAAhC;AACA,SAASC,YAAT,QAA6B,0BAA7B;AAOA,SAASC,kBAAT,QAAmC,aAAnC;AACA,SAASC,cAAT,QAA+B,aAA/B;AAyCA,IAAMC,0BAA0B,gBAAGX,KAAK,CAACY,aAAN,CAEjCC,SAFiC,CAAnC;AAIA,OAAO,SAASC,sBAAT,OAIJ;AAAA,MAJoC;AACrCC,IAAAA;AADqC,GAIpC;AACD,MAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,IAAI,EAAEC,QAApB;AAA8BC,IAAAA;AAA9B,MAAoDjB,gBAAgB,EAA1E;AAEA,MAAM;AAAEkB,IAAAA,IAAI,EAAEC,OAAR;AAAiBC,IAAAA,SAAjB;AAA4BC,IAAAA;AAA5B,MAA2CpB,iBAAiB,CAChEa,UADgE,EAEhEZ,oBAAoB,CAACoB,OAF2C,EAGhEL,iBAHgE,CAAlE;AAMA,MAAMM,MAAM,GAAGf,cAAc,EAA7B;AACA,MAAMgB,MAAM,GAAGzB,SAAS,EAAxB;AACA,MAAM0B,IAAI,GAAGrB,cAAc,EAA3B;AAEA,MAAMc,IAAI,GAAGpB,KAAK,CAAC4B,OAAN,CAAc,MAAM;AAC/B,QAAI,CAACN,SAAD,IAAcD,OAAlB,EAA2B;AACzB,UAAMQ,MAAM,GAAGb,UAAH,oBAAGA,UAAU,CACrBc,IADW,CACN,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAACE,KAAF,GAAUD,CAAC,CAACC,KADhB,EAEZC,GAFY,CAEPC,gBAAD,IAAsB;AACzB,YAAMlB,IAAI,GAAGkB,gBAAgB,CAACC,eAAjB,CAAiCC,QAAjC,EAAb;AACA,YAAMC,IAAI,GAAGH,gBAAgB,CAACI,qBAAjB,CAAuCC,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAb;AACA,YAAMC,MAAM,GAAGN,gBAAgB,CAACO,gBAAhC;AACA,YAAMC,OAAsB,GAAGtB,OAAO,CAACJ,IAAD,CAAP,CAAc2B,IAAd,CAC5BC,GAAD,IAAwBA,GAAG,CAACC,IAAJ,KAAaR,IADR,CAA/B;AAIA,YAAMS,gBAAgB,GAAGC,eAAe,CAAC;AACvCC,UAAAA,UAAU,EAAEN,OAD2B;AAEvCF,UAAAA,MAFuC;AAGvCf,UAAAA,MAHuC;AAIvCT,UAAAA,IAJuC;AAKvCU,UAAAA,IALuC;AAMvCT,UAAAA;AANuC,SAAD,CAAxC;AASA,YAAMgC,aAAa,GAAGH,gBAAH,oBAAGA,gBAAgB,CAAEI,MAAlB,CAAyB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAC7D,cAAIA,GAAG,CAACC,QAAR,EAAkBF,KAAK;AACvB,iBAAOA,KAAP;AACD,SAHqB,EAGnB,CAHmB,CAAtB;AAKA,YAAMG,eAAe,GAAI;AACvBT,UAAAA,IAAI,EAAEX,gBAAgB,CAACqB,KADA;AAEvBC,UAAAA,SAAS,EAAEtB,gBAAgB,CAACsB,SAFL;AAGvBC,UAAAA,KAAK,EAAEX,gBAHgB;AAIvBG,UAAAA,aAJuB;AAKvBS,UAAAA,GAAG,EAAEhB,OALkB;AAMvBiB,UAAAA,QAAQ,EAAE,MACRlC,MAAM,CAACmC,IAAP,CAAY;AACVC,YAAAA,QAAQ,EAAEpC,MAAM,CAACoC,QADP;AAEVC,YAAAA,KAAK,eACArC,MAAM,CAACqC,KADP;AAEHtB,cAAAA,MAAM,EAAEuB,YAAY,CAACtC,MAAM,CAACqC,KAAP,CAAatB,MAAd,EAAsBA,MAAtB;AAFjB;AAFK,WAAZ,CAPqB;AAcvBxB,UAAAA,IAAI,EAAEA;AAdiB,SAAzB;AAiBA,eAAOsC,eAAP;AACD,OA1CY,CAAf;AA4CA,aAAO1B,MAAP;AACD;;AACD,WAAOhB,SAAP;AACD,GAjDY,EAiDV,CAACQ,OAAD,EAAUK,MAAV,CAjDU,CAAb;;AAmDA,MAAMuC,eAAe,GAAG,MAAM;AAC5B,QAAMF,KAAK,gBAAQrC,MAAM,CAACqC,KAAf,CAAX;;AACA,WAAOA,KAAK,CAACtB,MAAb;AAEAf,IAAAA,MAAM,CAACmC,IAAP,CAAY;AACVC,MAAAA,QAAQ,EAAEpC,MAAM,CAACoC,QADP;AAEVC,MAAAA;AAFU,KAAZ;AAID,GARD;;AAUA,MAAMG,eAAe,GAAGlE,KAAK,CAAC4B,OAAN,CAAc,MAAM;AAC1C,WAAOnB,kBAAkB,CAACiB,MAAD,EAASC,IAAT,EAAeP,IAAf,EAA4BK,MAA5B,CAAzB;AACD,GAFuB,EAErB,CAACC,MAAD,EAASN,IAAT,CAFqB,CAAxB;AAIA,sBACE,oBAAC,0BAAD,CAA4B,QAA5B;AACE,IAAA,KAAK,EAAE;AAAEA,MAAAA,IAAF;AAAQ6C,MAAAA,eAAR;AAAyBC,MAAAA,eAAzB;AAA0C5C,MAAAA,SAA1C;AAAqDC,MAAAA;AAArD;AADT,KAGGR,QAHH,CADF;AAOD;AAED,OAAO,SAASoD,iBAAT,GAA6B;AAClC,MAAMC,OAAO,GAAGpE,KAAK,CAACqE,UAAN,CAAiB1D,0BAAjB,CAAhB;;AACA,MAAIyD,OAAO,KAAKvD,SAAhB,EAA2B;AACzB,UAAM,IAAIyD,KAAJ,CACJ,gEADI,CAAN;AAGD;;AACD,SAAOF,OAAP;AACD;;AAED,SAASpB,eAAT,QAcG;AAAA;;AAAA,MAdsB;AACvBC,IAAAA,UADuB;AAEvBhC,IAAAA,IAFuB;AAGvBwB,IAAAA,MAHuB;AAIvBd,IAAAA,IAJuB;AAKvBD,IAAAA,MALuB;AAMvBR,IAAAA;AANuB,GActB;AACD,gCAAO+B,UAAU,CAACsB,OAAlB,8CAAO,oBACH9B,MADG,CACKY,GAAD,IAASA,GAAG,CAACD,KAAJ,GAAY,CADzB,CAAP,qBAAO,sBAEHlB,GAFG,CAEEsC,WAAD,IAAiB;AACrB,QAAMC,SAAS,GAAGC,MAAM,CAACF,WAAD,EAAcvD,IAAd,CAAxB;AAEA,QAAMqC,QAAQ,GAAGqB,gBAAgB,CAC/BjD,MAD+B,EAE/Be,MAF+B,EAG/BgC,SAH+B,EAI/BG,mBAAmB,CAAC3D,IAAD,CAJY,CAAjC;AAOA,WAAO;AACLG,MAAAA,IAAI,EAAEoD,WADD;AAELlB,MAAAA,QAFK;AAGLuB,MAAAA,IAAI,EAAEL,WAAW,CAACK,IAHb;AAILC,MAAAA,OAAO,EAAE,MAAM;AACbpD,QAAAA,MAAM,CAACmC,IAAP,CACEkB,oBAAoB,CAClB7D,QADkB,EAElBS,IAFkB,EAGlB;AACEqD,UAAAA,OAAO,EAAEvC,MADX;AAEEwC,UAAAA,MAAM,EAAER,SAFV;AAGES,UAAAA,WAAW,EAAEN,mBAAmB,CAAC3D,IAAD;AAHlC,SAHkB,EAQlBkE,OAAO,CAAC7B,QAAD,CARW,EASlB5B,MATkB,CADtB;AAaD;AAlBI,KAAP;AAoBD,GAhCI,CAAP;AAiCD;;AAED,IAAMiD,gBAAgB,GAAG,CACvBjD,MADuB,EAEvBe,MAFuB,EAGvBgC,SAHuB,EAIvBxD,IAJuB,KAKpB;AAAA;;AACH,MAAMmE,eAAe,GAAGC,KAAK,CAACC,OAAN,kBAAc5D,MAAM,CAACqC,KAArB,qBAAc,cAActB,MAA5B,CAAxB;AAEA,SAAO2C,eAAe,GAClB,CAAC,0BAAE1D,MAAM,CAACqC,KAAP,CAAatB,MAAf,sCAAC,qBACEG,IADF,CACQ2C,GAAD,IAAiBA,GAAG,CAACC,QAAJ,CAAgB/C,MAAhB,SAA0BxB,IAA1B,CADxB,CAAD,aAAC,sBAEEuE,QAFF,CAEWf,SAFX,CAAD,CADiB,GAIlB,0BAAA/C,MAAM,CAACqC,KAAP,CAAatB,MAAb,2CAAqB+C,QAArB,CAAiC/C,MAAjC,SAA2CxB,IAA3C,gCACES,MAAM,CAACqC,KAAP,CAAatB,MADf,qBACE,sBAAqB+C,QAArB,CAA8Bf,SAA9B,CADF,CAJJ;AAMD,CAdD;;AAgBA,OAAO,IAAMG,mBAAmB,GAAG;AACjCa,EAAAA,MAAM,EAAE,OADyB;AAEjCC,EAAAA,KAAK,EAAE,OAF0B;AAGjCC,EAAAA,KAAK,EAAE;AAH0B,CAA5B;;AAMP,SAASjB,MAAT,CAAgBkB,CAAhB,EAAwB3E,IAAxB,EAAmC;AACjC,MAAM4E,OAAO,GAAG;AACdF,IAAAA,KAAK,SAAMC,CAAC,CAACE,GAAR,OADS;AAEdL,IAAAA,MAAM,EAAKG,CAAC,CAACG,IAAP,SAAeH,CAAC,CAACI;AAFT,GAAhB;AAIA,MAAI,CAACH,OAAO,CAAC5E,IAAD,CAAZ,EAAoB,OAAO2E,CAAC,CAACE,GAAT;AAEpB,SAAOD,OAAO,CAAC5E,IAAD,CAAd;AACD;;AAED,SAASgF,YAAT,CAAsBC,IAAtB,EAAqCnC,KAArC,EAAiDoC,MAAjD,EAAkE;AAChE,MAAMC,QAAQ,GAAG7F,eAAe,CAACwD,KAAD,EAAQ,CAAC,MAAD,CAAR,CAAhC,CADgE,CACd;;AAElD,MAAMlC,MAAM,GAAGwE,mBAAmB,CAACD,QAAD,EAAWF,IAAX,EAAiBC,MAAjB,CAAlC;AACA,SAAOtE,MAAP;AACD;;AAED,IAAMwE,mBAAmB,GAAG,CAC1BtC,KAD0B,EAE1BmC,IAF0B,EAG1BC,MAH0B,KAIvB;AACH,MAAMG,aAAa,GAAG,EAAtB;;AAEA,MAAMC,aAAa,GAAG,WAMhB;AAAA;;AAAA,QANiB;AACrBC,MAAAA,GAAG,GAAG,EADe;AAErBC,MAAAA;AAFqB,KAMjB;AACJ,QAAM,CAACxF,IAAD,EAAOyF,QAAP,EAAiBC,GAAjB,IAAwBH,GAAG,CAAChE,KAAJ,CAAU,GAAV,CAA9B;AAEA,QAAMoE,UAAU,uBAAGH,OAAH,oBAAGA,OAAO,CAAEzB,OAAZ,+BAAuB/D,IAAvC;AACA,QAAM4F,SAAS,sBAAGJ,OAAH,oBAAGA,OAAO,CAAExB,MAAZ,8BAAsB0B,GAArC;AACA,QAAMG,cAAc,2BAAGL,OAAH,oBAAGA,OAAO,CAAEvB,WAAZ,mCAA2BwB,QAA/C;;AAEA,QAAIJ,aAAa,CAACM,UAAD,CAAjB,EAA+B;AAC7BN,MAAAA,aAAa,CAACM,UAAD,CAAb,UAAiCC,SAAjC;AACD,KAFD,MAEO;AACLP,MAAAA,aAAa,CACXM,UADW,CAAb,eAEcA,UAFd,SAE4BE,cAF5B,SAE8CD,SAF9C;AAGD;AACF,GApBD;;AAsBAE,EAAAA,MAAM,CAACC,IAAP,CAAYjD,KAAZ,EAAmBkD,OAAnB,CAA4BC,EAAD,IAAQ;AACjC,QAAI7B,KAAK,CAACC,OAAN,CAAcvB,KAAK,CAACmD,EAAD,CAAnB,CAAJ,EAA8B;AAC5BnD,MAAAA,KAAK,CAACmD,EAAD,CAAL,CAAUD,OAAV,CAAmBxE,MAAD,IAAoB;AACpC8D,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAE/D;AAAP,SAAD,CAAb;AACD,OAFD;AAGD,KAJD,MAIO;AACL,UAAIyE,EAAE,KAAK,MAAX,EAAmB;AACjBZ,QAAAA,aAAa,CAACY,EAAD,CAAb,aAA4BnD,KAAK,CAACmD,EAAD,CAAjC;AACD,OAFD,MAEO;AACLX,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEzC,KAAK,CAACmD,EAAD;AAAZ,SAAD,CAAb;AACD;AACF;AACF,GAZD;;AAcA,MAAIf,MAAJ,EAAY;AACV,QAAMgB,OAAO,GAAGb,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,CAA4BxC,KAA5B,CAAkC,GAAlC,EAAuC,CAAvC,EAA0CA,KAA1C,CAAgD,GAAhD,CAAhB;AAEA,QAAM4E,SAAS,GAAGD,OAAO,CAAC1E,MAAR,CAAgB4E,CAAD,IAAe,CAACnB,IAAI,CAACjB,MAAL,CAAYO,QAAZ,CAAqB6B,CAArB,CAA/B,CAAlB;;AAEA,QAAID,SAAS,CAACE,MAAV,KAAqB,CAAzB,EAA4B;AAC1BhB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb;AACD,KAFD,MAEO;AACLsB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,eAAwCkB,IAAI,CAAClB,OAA7C,SACEkB,IAAI,CAAChB,WADP,SAEIkC,SAAS,CAACG,IAAV,CAAe,GAAf,CAFJ;AAGD;AACF,GAZD,MAYO;AACLhB,IAAAA,aAAa,CAAC;AAAEC,MAAAA,GAAG,EAAE,EAAP;AAAWC,MAAAA,OAAO,EAAEP;AAApB,KAAD,CAAb;AACD;;AAED,MAAIa,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BgB,MAA3B,KAAsC,CAA1C,EAA6C;AAE7C,SAAOP,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BnD,MAA3B,CAAkC,CAACE,GAAD,EAAMsD,GAAN,EAAWa,GAAX,KAAmB;AAC1DnE,IAAAA,GAAG,UAAOmE,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAvB,IAA4BlB,aAAa,CAACK,GAAD,CAA5C;AACA,WAAOtD,GAAP;AACD,GAHM,KAAP;AAID,CAjED;;AAmEA,SAAS0B,oBAAT,CACE9D,IADF,EAEEU,IAFF,EAGE8E,OAHF,EAIEN,MAJF,EAKEzE,MALF,EAME;AACA,MAAIT,IAAI,KAAKZ,gBAAgB,CAACoH,MAA9B,EAAsC;AACpC,WAAO/F,MAAM,CAACqC,KAAP,CAAa2D,CAAb,kBACUhG,MAAM,CAACqC,KAAP,CAAa2D,CADvB,SAC4BzB,YAAY,CACzCQ,OADyC,EAEzC/E,MAAM,CAACqC,KAFkC,EAGzCoC,MAHyC,CADxC,SAMCxE,IAND,kBAMkBD,MAAM,CAACqC,KAAP,CAAa4D,MAN/B,SAMyC1B,YAAY,CACtDQ,OADsD,EAEtD/E,MAAM,CAACqC,KAF+C,EAGtDoC,MAHsD,CAN5D;AAWD;;AAED,MAAIzE,MAAM,CAACqC,KAAP,CAAa6D,GAAjB,EAAsB;AACpB,iBAAWlG,MAAM,CAACqC,KAAP,CAAapC,IAAxB,SAAgCD,MAAM,CAACqC,KAAP,CAAa6D,GAA7C,SACEpH,YAAY,CAACS,IAAD,CADd,SAEIgF,YAAY,CAACQ,OAAD,EAAU/E,MAAM,CAACqC,KAAjB,EAAwBoC,MAAxB,CAFhB;AAGD;;AAED,eAAWxE,IAAX,SAAmBnB,YAAY,CAACS,IAAD,CAA/B,SAAyCgF,YAAY,CACnDQ,OADmD,EAEnD/E,MAAM,CAACqC,KAF4C,EAGnDoC,MAHmD,CAArD;AAKD;;AAED,SAASnC,YAAT,CACE6D,OADF,EAEEC,UAFF,EAGE;AACA,MAAI,CAACD,OAAL,EAAc;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,QAAIA,OAAO,CAACrC,QAAR,CAAiBsC,UAAjB,CAAJ,EAAkC;AAElC,WAAOD,OAAP;AACD;;AAED,SAAOA,OAAO,CAACpF,MAAR,CAAgBA,MAAD,IAAY,CAACA,MAAM,CAAC+C,QAAP,CAAgBsC,UAAhB,CAA5B,CAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
1
+ {"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
@@ -4,6 +4,7 @@ export declare const useBnpCalculateForCart: (props?: {
4
4
  } | undefined) => {
5
5
  data: {
6
6
  offers: {
7
+ offerRaw: import("@sentecacommerce/sdk").LoanVariantDTO;
7
8
  totalRepaymentAmount: import("../..").FormattedPriceType;
8
9
  correctDownPaymentAmount: import("../..").FormattedPriceType;
9
10
  installmentAmount: import("../..").FormattedPriceType;
@@ -15,6 +16,7 @@ export declare const useBnpCalculateForCart: (props?: {
15
16
  }[] | undefined;
16
17
  } | {
17
18
  offers: {
19
+ offerRaw: import("@sentecacommerce/sdk").LoanVariantDTO;
18
20
  totalRepaymentAmount: import("../..").FormattedPriceType;
19
21
  correctDownPaymentAmount: import("../..").FormattedPriceType;
20
22
  installmentAmount: import("../..").FormattedPriceType;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.12.76",
4
+ "version": "0.12.77",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -28,9 +28,9 @@
28
28
  "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
29
29
  "dev": "yarn build:esm --watch"
30
30
  },
31
- "gitHead": "fd61e2c7bfd40d84c464aa19ff6109d4aa438da5",
31
+ "gitHead": "d151f312ffc14ade655ec64953f26ffcf8f2bcd3",
32
32
  "dependencies": {
33
- "@sentecacommerce-theme/base": "^0.12.76",
33
+ "@sentecacommerce-theme/base": "^0.12.77",
34
34
  "@sentecacommerce/sdk": "2.0.157",
35
35
  "body-scroll-lock": "^3.1.5",
36
36
  "copy-to-clipboard": "^3.3.1",