@salla.sa/twilight-components
Version:
Salla Web Component
5 lines • 6.44 kB
JavaScript
/*!
* Crafted with ❤ by Salla
*/
System.register(["./p-CsnFTjdf.system.js"],(function(n){"use strict";var i,t,e;return{setters:[function(n){i=n.r;t=n.h;e=n.H}],execute:function(){var o;(function(n){n["PERCENTAGE"]="percentage";n["FIXED"]="fixed";n["FREE_PRODUCT"]="free_product"})(o||(o={}));var r;(function(n){n["PRODUCT_COUNT"]="products_count";n["PRODUCT_PURCHASE"]="order_amount"})(r||(r={}));var a=":host{display:block}";var s=n("salla_conditional_offer",function(){function n(n){i(this,n);this.offer=null;this.products={};this.isLoading=true;this.canRender=true}n.prototype.componentWillLoad=function(){var n=this;salla.onReady().then((function(){var n,i,t;if(!((n=salla.config.get("store.features"))===null||n===void 0?void 0:n.includes("conditional-offer"))||salla.storage.get("cart")!==""&&!((t=(i=salla.storage.get("cart"))===null||i===void 0?void 0:i.summary)===null||t===void 0?void 0:t.count)){throw new Error("feature or cart object does not existed")}})).then((function(){return salla.api.cart.offers()})).then((function(i){var t=i.data;n.offer=t.find((function(n){return n.type==="conditional"}));if(!n.offer){throw new Error("No conditional offer has been activated in the merchant dashboard")}n.offer.details.discounts.unshift({value:0,min_spend:0});return n.updateInitialOfferValue()})).then((function(){return n.getProducts()})).then((function(){return salla.event.on("cart::updated",(function(i){return n.updateOfferValues(i)}))})).catch((function(i){n.canRender=false;salla.logger.warn("salla-conditional-offer:: ",i)})).finally((function(){n.isLoading=false}))};n.prototype.getProducts=function(){var n=this;var i=this.offer.details.discounts.filter((function(n){var i=n.type;return i===o.FREE_PRODUCT})).map((function(n){var i=n.value;return i}));if(i.length>0){return salla.product.fetch({source:"selected",source_value:i}).then((function(i){var t=i.data;t.forEach((function(i){var t=i.id,e=i.url,o=i.image;n.products[t]={url:e,image:o}}))}))}};n.prototype.updateInitialOfferValue=function(){var n=this;return salla.api.cart.details().then((function(i){var t=i.data.cart;return n.updateOfferValues(t)}))};n.prototype.updateOfferValues=function(n){var i=n.items,t=n.total;var e;var o=this.offer.details.based_on===r.PRODUCT_COUNT?i.reduce((function(n,i){var t=i.quantity;return n+t}),0):t;this.offer=Object.assign(Object.assign({},this.offer),{details:Object.assign(Object.assign({},(e=this.offer)===null||e===void 0?void 0:e.details),{current_value:o})});return this.offer};n.prototype.getCheckpointContent=function(n){var i,e;if(n.type===o.PERCENTAGE)return"".concat(n.value,"%");if(n.type===o.FIXED)return salla.money(n.value);if(n.type!==o.FREE_PRODUCT){salla.logger.error("salla-conditional-offer:: unexpected type (".concat(n.type,")!"));return""}var r=this.products[n.value];if(!r){salla.logger.error("salla-conditional-offer:: there is no product with id (".concat(n.value,")!"));return""}return t("a",{class:"s-conditional-offer-product-link",href:r.url},t("img",{class:"s-conditional-offer-checkpoint-image-content",loading:"lazy",decoding:"async",alt:((i=r===null||r===void 0?void 0:r.image)===null||i===void 0?void 0:i.alt)||"",src:(e=r===null||r===void 0?void 0:r.image)===null||e===void 0?void 0:e.url}))};n.prototype.getOfferType=function(n){var i;var t=(i=this.offer.details)===null||i===void 0?void 0:i.based_on;if(t===r.PRODUCT_COUNT)return salla.lang.choice("blocks.header.products_count",n.min_spend);if(t===r.PRODUCT_PURCHASE)return salla.money(n.min_spend);salla.logger.warn("salla-conditional-offer:: Unexpected offer detail's based_on value: ".concat(t));return"".concat(n.min_spend)};n.prototype.clamp=function(n,i,t){return Math.max(i,Math.min(n,t))};n.prototype.mapValueRanges=function(n,i,t,e,o){var r=(n-i)*(o-e)/(t-i)+e;if(r===Number.POSITIVE_INFINITY)return 100;if(r===Number.NEGATIVE_INFINITY)return 0;return this.clamp(r,0,100)};n.prototype.getCheckPointView=function(n,i){var e,o;var r=this.offer.details.discounts.findIndex((function(i){var t=i.min_spend;return t===n.min_spend}));var a=(o=(e=this.offer.details.discounts[r-1])===null||e===void 0?void 0:e.min_spend)!==null&&o!==void 0?o:0;var s=this.mapValueRanges(this.offer.details.current_value,a,n.min_spend,0,100);var l=n.min_spend<=this.offer.details.current_value;return t("div",{class:"s-conditional-offer-checkpoint-container"},i>0?[t("div",{key:"progress-line",class:"s-conditional-offer-progress-line-container"},t("div",{class:"s-conditional-offer-progress-line-inactive"}),t("div",{class:"s-conditional-offer-progress-line-active",style:{width:"".concat(s,"%")}})),t("div",{key:"checkpoint",class:"s-conditional-offer-checkpoint ".concat(l?"s-conditional-offer-active-checkpoint":"")},t("div",{class:"s-conditional-offer-item-avatar-content ".concat(l?"active":""),innerHTML:this.products&&this.getCheckpointContent(n)}),t("div",{class:"s-conditional-offer-checkpoint-label ".concat(l?"active":""),innerHTML:this.getOfferType(n)}))]:t("div",{key:"label",class:{"s-conditional-offer-checkpoint-label":true,"first-checkpoint":i===0,active:l},innerHTML:this.getOfferType(n)}))};n.prototype.getLoadingSkeletonView=function(){return t(e,{class:"s-conditional-offer-container"},t("div",{class:"s-conditional-offer-skeleton-inner-container"},t("div",{class:"s-conditional-offer-skeleton-subtitle"},t("salla-skeleton",{height:"16px",width:"30%"})),t("div",{class:"s-conditional-offer-skeleton-subtitle"},t("salla-skeleton",{height:"16px",width:"35%"})),t("div",{class:"s-conditional-offer-skeleton-checkpoints-wrapper"},Array(3).fill(null).map((function(){return[t("salla-skeleton",{key:"checkpoint-line",height:"8px"}),t("div",{key:"checkpoint"},t("salla-skeleton",{height:"60px",width:"60px",type:"circle"}))]})))))};n.prototype.render=function(){var n=this;if(!this.canRender)return null;if(this.isLoading)return this.getLoadingSkeletonView();return t(e,{class:"s-conditional-offer-container"},t("div",{class:"s-conditional-offer-title-wrapper"},t("div",{class:"s-conditional-offer-title"},this.offer.title),this.offer.description?t("div",{class:"s-conditional-offer-subtitle"},this.offer.description," ",t("i",{class:"sicon-information"})):null),t("div",{class:"s-conditional-offer-progress-container"},this.offer.details.discounts.map((function(i,e){return t("div",{class:{"flex-1":e>0},key:i.min_spend},n.getCheckPointView(i,e))}))))};return n}());s.style=a}}}));
//# sourceMappingURL=p-9abde4e8.system.entry.js.map