ui.shipaid.com 0.3.24 → 0.3.25

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.
@@ -1,4 +1,4 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShipAidWidget={})}(this,(function(t){"use strict";const e={calculateProtectionTotal:function(t,e,i){var o,r;if(!t)throw new Error("Missing store settings.");if(!e)throw new Error("Missing protectionProduct.");if(!i)throw new Error("Missing Shopify cart.");const s=null==t?void 0:t.protectionSettings;if(!s)throw new Error("Tried to find protection variant, but protection settings for this store are missing.");const n=Array.isArray(null==t?void 0:t.excludedProductSkus)?t.excludedProductSkus.map((t=>t.trim())):[],a=Array.isArray(null==t?void 0:t.excludedProductsVariantsId)?t.excludedProductsVariantsId.map((t=>{var e;return parseInt((null==(e=t.match(/\d+/))?void 0:e[0])||"",10)})):[],d=(i.items||[]).reduce(((t,e)=>(t=>!(!t.sku||!n.includes(t.sku.trim()))||!(!t.variant_id||!a.includes(t.variant_id)))(e)?t-e.final_line_price:t),i.total_price||0)-((null==(o=i.items)?void 0:o.filter((t=>{var i;return null==(i=null==e?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})))??[]).reduce(((t,e)=>t+e.final_line_price),0);if(0===d)return d;if("FIXED"===s.protectionType){if("number"!=typeof s.defaultFee)throw new Error("Missing default fee amount.");if(!(null==(r=s.rules)?void 0:r.length))return s.defaultFee;const t=d/100,e=s.rules.sort(((t,e)=>t.rangeLower&&e.rangeLower?t.rangeLower-e.rangeLower:0)).find((e=>{const i=Boolean(e.rangeLower&&e.rangeLower<t);return e.rangeUpper?i&&e.rangeUpper>=t:i}));return"number"==typeof(null==e?void 0:e.fee)?e.fee:s.defaultFee}if("PERCENTAGE"===s.protectionType){const t=d*s.percentage/100;return t>=s.minimumFee?t:s.minimumFee}throw new Error("No protection type handler found for this store.")},findProtectionVariant:function(t,e,i){var o;if(!(null==t?void 0:t.protectionSettings)||!(null==(o=null==e?void 0:e.variants)?void 0:o.length))throw new Error("Missing product and variants from protection settings.");const r=null==e?void 0:e.variants.flatMap((t=>{if(!(null==t?void 0:t.price))return[];const e=Number(t.price);return[{...t,formattedPrice:e}]})).sort(((t,e)=>t.formattedPrice-e.formattedPrice)),s=r.find((t=>t.formattedPrice>=i));return s||r[r.length-1]}},i=t=>e=>{return"function"==typeof e?(i=t,o=e,customElements.define(i,o),o):((t,e)=>{const{kind:i,elements:o}=e;return{kind:i,elements:o,finisher(e){customElements.define(t,e)}}})(t,e);
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShipAidWidget={})}(this,(function(t){"use strict";const e={calculateProtectionTotal:function(t,e,i){var o,r,s;if(!t)throw new Error("Missing store settings.");if(!e)throw new Error("Missing protectionProduct.");if(!i)throw new Error("Missing Shopify cart.");const n=null==t?void 0:t.protectionSettings;if(!n)throw new Error("Tried to find protection variant, but protection settings for this store are missing.");const a=Array.isArray(null==t?void 0:t.excludedProductSkus)?null==t?void 0:t.excludedProductSkus.map((t=>t.trim())):[],d=((null==(o=i.items)?void 0:o.reduce(((t,e)=>{if(!e.sku)return t;return a.some((t=>t===e.sku.trim()))?t-e.final_line_price:t}),i.total_price))??i.total_price)-((null==(r=i.items)?void 0:r.filter((t=>{var i;return null==(i=null==e?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})))??[]).reduce(((t,e)=>t+e.final_line_price),0);if("FIXED"===n.protectionType){if("number"!=typeof n.defaultFee)throw new Error("Missing default fee amount.");if(!(null==(s=n.rules)?void 0:s.length))return n.defaultFee;const t=d/100,e=n.rules.sort(((t,e)=>t.rangeLower&&e.rangeLower?t.rangeLower-e.rangeLower:0)).find((e=>{const i=Boolean(e.rangeLower&&e.rangeLower<t);return e.rangeUpper?i&&e.rangeUpper>=t:i}));return"number"==typeof(null==e?void 0:e.fee)?e.fee:n.defaultFee}if("PERCENTAGE"===n.protectionType){const t=d*n.percentage/100;return t>=n.minimumFee?t:n.minimumFee}throw new Error("No protection type handler found for this store.")},findProtectionVariant:function(t,e,i){var o;if(!(null==t?void 0:t.protectionSettings)||!(null==(o=null==e?void 0:e.variants)?void 0:o.length))throw new Error("Missing product and variants from protection settings.");const r=null==e?void 0:e.variants.flatMap((t=>{if(!(null==t?void 0:t.price))return[];const e=Number(t.price);return[{...t,formattedPrice:e}]})).sort(((t,e)=>t.formattedPrice-e.formattedPrice)),s=r.find((t=>t.formattedPrice>=i));return s||r[r.length-1]}},i=t=>e=>{return"function"==typeof e?(i=t,o=e,customElements.define(i,o),o):((t,e)=>{const{kind:i,elements:o}=e;return{kind:i,elements:o,finisher(e){customElements.define(t,e)}}})(t,e);
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2017 Google LLC
@@ -792,7 +792,7 @@ function It(t,e,i){return t?e():null==i?void 0:i()}const Ot=u`
792
792
  .shipaid-prompt .prompt-footer .prompt-footer-badge svg {
793
793
  height:var(--shipaid-footer-badge-logo-height, 9px);
794
794
  }
795
- `;var oe=(t=>(t.LOADED="shipaid-loaded",t.STATUS_UPDATE="shipaid-protection-status",t))(oe||{}),re=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ne=(t,e,i,o)=>{for(var r,s=o>1?void 0:o?se(e,i):e,n=t.length-1;n>=0;n--)(r=t[n])&&(s=(o?r(e,i,s):r(s))||s);return o&&s&&re(e,i,s),s};const ae=async(t,e)=>{try{const i=await fetch(t,e);if(!i.ok)throw new Error(await i.text());return await i.json()}catch(i){throw console.error(i),new Error("Failed to complete fetch request.")}},de=t=>console.warn(`[ShipAid] ${t}`),pe=t=>console.error(`[ShipAid] ${t}`),le="shipaid-protection",ce="shipaid-protection-popup-show",he=Object.assign({"./lang/de.json":()=>Promise.resolve().then((()=>be)).then((t=>t.default)),"./lang/en.json":()=>Promise.resolve().then((()=>ee)).then((t=>t.default)),"./lang/es.json":()=>Promise.resolve().then((()=>Le)).then((t=>t.default)),"./lang/fr.json":()=>Promise.resolve().then((()=>Te)).then((t=>t.default)),"./lang/it.json":()=>Promise.resolve().then((()=>We)).then((t=>t.default)),"./lang/pt.json":()=>Promise.resolve().then((()=>Ge)).then((t=>t.default))});var ue;ue={loader:async t=>{if("en"===t)return te;const e=Reflect.get(he,`./lang/${t}.json`);return e?await e():te}},_t=Object.assign(Object.assign({},_t),ue),t.ShipAidWidget=class extends ht{constructor(){var t,e,i;super(...arguments),this.disablePolling=!1,this.disableActions=!1,this.pollingInterval=2500,this.disableRefresh=!1,this.refreshCart=!1,this.persistPopup=!1,this.defaultToggleButton=!1,this.lang="en",this.currency=void 0,this.customerId=void 0,this._apiEndpoint="/apps/shipaid",this._storeDomain=(null==(t=window.Shopify)?void 0:t.shop)??(null==(i=null==(e=window.Shopify)?void 0:e.Checkout)?void 0:i.apiHost),this._hasFinishedSetup=!1,this._shouldShowWidget=!1,this._hasProtectionInCart=!1,this.hasLoadedStrings=!1,this.intervalId=0,this._state={loading:!1,success:null,error:!1},this._popup=null,this._fetch={get:t=>ae(t),post:(t,e)=>ae(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}shouldUpdate(t){return this.hasLoadedStrings&&super.shouldUpdate(t)}shouldPersistPopup(){return"true"===localStorage.getItem(`${ce}`)?"learn-more":null}setPopupKey(){this.persistPopup&&localStorage.setItem(`${ce}`,"true")}get shouldRefreshOnUpdate(){return!this.disablePolling&&!this.disableRefresh}get planActive(){var t,e;const{searchParams:i}=new URL(window.location.href);return(null==(t=window.Shopify)?void 0:t.designMode)||i.has("shipaid-test")?(de("Currently in preview mode."),!0):!!(null==(e=this._store)?void 0:e.planActive)}_currencyFormat(t){var e,i,o;return new Intl.NumberFormat(void 0,{currency:this.currency||(null==(i=null==(e=window.Shopify)?void 0:e.currency)?void 0:i.active)||(null==(o=this._store)?void 0:o.currency)||"USD",style:"currency"}).format(Number(t))}_dispatchEvent(t,e={}){this.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:e}))}_handleRefreshCart(){if(this.refreshCart)return window.location.reload()}async _handleRefresh(t){const e=Reflect.has(t,"items");if(this.shouldRefreshOnUpdate)return window.location.reload();e||await this.updateCart(),this._dispatchEvent(oe.STATUS_UPDATE,{protection:this._hasProtectionInCart,cart:e?t:this._cart,lineItem:e?this._protectionCartItem:t})}async calculateProtectionTotal(t){if(t||(t=await this._fetchCart()),!t)throw new Error("Could not fetch cart.");if(!this._store)throw new Error("Missing ShipAid store");if(!this._protectionProduct)throw new Error("Missing Shopify protection product");return e.calculateProtectionTotal(this._store,this._protectionProduct,t)}_findProtectionVariant(t){if(!this._store)throw new Error("Missing ShipAid store");if(!this._protectionProduct)throw new Error("Missing Shopify protection product");return e.findProtectionVariant(this._store,this._protectionProduct,t)}_setState(t,e){this._state={loading:"loading"===t,success:"success"===t,error:"error"===t&&(e||!0)}}async _updateProtection(){return this._hasProtectionInCart?this.removeProtection():this.addProtection()}async _fetchShipAidData(){var t,e,i,o,r;const s=(null==(t=window.Shopify)?void 0:t.shop)??(null==(i=null==(e=window.Shopify)?void 0:e.Checkout)?void 0:i.apiHost);if(!s)throw new Error("No shop found in Shopify object.");try{const t=new URL(window.location.href);t.pathname=this._apiEndpoint;const e={query:"query StoreByDomain ($store: String!) {\n store: storeByDomain (input: {store: $store}) {\n currency\n planActive\n store\n widgetAutoOptIn\n widgetPollProtection\n widgetShowCart\n excludedProductSkus\n excludedCustomersIdsAutoOptIn\n protectionSettings\n widgetConfigurations\n }\n}",variables:{store:s}},i=await this._fetch.post(t.toString(),e);if(!i)throw new Error("Missing response for store query.");if(null==(o=i.errors)?void 0:o.length)throw new Error(i.errors[0].message);if(!(null==(r=i.data)?void 0:r.store))throw new Error("Missing store from store query response.");return i.data.store}catch(n){throw console.error(n),new Error(`Could not find a store for ${this._storeDomain}`)}}async _fetchCart(){try{return await this._fetch.get("/cart.js")}catch(t){throw pe(t.message),new Error("Could not fetch cart for current domain.")}}async _fetchProduct(){try{const{product:t}=await this._fetch.get("/products/shipaid-protection.json");return t}catch(t){throw pe(t.message),new Error("Could not fetch protection product for current domain.")}}hasProtection(){return this._hasProtectionInCart}async updateCart(t){t||(t=await this._fetchCart()),this._cart=t}async addProtection(){var t,e;try{if(!this._store)throw new Error("Store has not been loaded.");if(!(null==(t=this._cart)?void 0:t.items))throw new Error("Cart has not been loaded.");if(!(null==(e=this._protectionVariant)?void 0:e.id))throw new Error("No protection variant found.");this._setState("loading");const i={quantity:1,id:this._protectionVariant.id},o=await this._fetch.post("/cart/add.js",i);await this._handleRefresh(o),this._setState("success")}catch(i){pe(i.message)}finally{this._cart=await this._fetchCart(),this._setState("success")}}async removeProtection(){try{if(!this._store)throw new Error("Store has not been loaded.");if(!this._protectionCartItem)throw new Error("Protection product not found.");this._setState("loading");const t={quantity:0,id:this._protectionCartItem.key},e=await this._fetch.post("/cart/change.js",t);await this._handleRefresh(e),this._cart=e,this._setState("success")}catch(t){pe(t.message)}finally{this._cart=await this._fetchCart(),this._setState("success")}}async attemptAddProtection(){var t,e,i,o,r,s;if(!(null==(t=this._store)?void 0:t.widgetAutoOptIn))return;if(!(null==(e=this._cart)?void 0:e.items)||!(null==(i=this._cart)?void 0:i.item_count))return;const n=null==(o=this._cart.items)?void 0:o.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),a=null==(r=this._cart)?void 0:r.items[n];if(this._hasProtectionInCart=!!a,1===this._cart.item_count&&a)return;!!sessionStorage.getItem(le)||(sessionStorage.setItem(le,JSON.stringify({loaded:!0})),!this._hasProtectionInCart&&(null==(s=this._cart)?void 0:s.item_count)&&this._store.widgetShowCart&&await this.addProtection())}async handleMultipleProtectionVariants(){var t,e,i,o,r;if(!(null==(t=this._cart)?void 0:t.items)||!(null==(e=this._cart)?void 0:e.item_count))return;let s=0;if(null==(i=this._cart.items)||i.forEach((t=>{var e,i;(null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id)))&&s++})),s>1){const t=null==(o=this._cart.items)?void 0:o.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),e={id:(null==(r=this._cart)?void 0:r.items[t]).key,quantity:0},i=await this._fetch.post("/cart/change.js",e);return await this._handleRefresh(i)}}learnMorePopupTemplate(){return this.persistPopup&&(this._popup=this.shouldPersistPopup()),B`
795
+ `;var oe=(t=>(t.LOADED="shipaid-loaded",t.STATUS_UPDATE="shipaid-protection-status",t))(oe||{}),re=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ne=(t,e,i,o)=>{for(var r,s=o>1?void 0:o?se(e,i):e,n=t.length-1;n>=0;n--)(r=t[n])&&(s=(o?r(e,i,s):r(s))||s);return o&&s&&re(e,i,s),s};const ae=async(t,e)=>{try{const i=await fetch(t,e);if(!i.ok)throw new Error(await i.text());return await i.json()}catch(i){throw console.error(i),new Error("Failed to complete fetch request.")}},de=t=>console.warn(`[ShipAid] ${t}`),pe=t=>console.error(`[ShipAid] ${t}`),le="shipaid-protection",ce="shipaid-protection-popup-show",he=Object.assign({"./lang/de.json":()=>Promise.resolve().then((()=>be)).then((t=>t.default)),"./lang/en.json":()=>Promise.resolve().then((()=>ee)).then((t=>t.default)),"./lang/es.json":()=>Promise.resolve().then((()=>Le)).then((t=>t.default)),"./lang/fr.json":()=>Promise.resolve().then((()=>Te)).then((t=>t.default)),"./lang/it.json":()=>Promise.resolve().then((()=>We)).then((t=>t.default)),"./lang/pt.json":()=>Promise.resolve().then((()=>Ge)).then((t=>t.default))});var ue;ue={loader:async t=>{if("en"===t)return te;const e=Reflect.get(he,`./lang/${t}.json`);return e?await e():te}},_t=Object.assign(Object.assign({},_t),ue),t.ShipAidWidget=class extends ht{constructor(){var t,e,i;super(...arguments),this.disablePolling=!1,this.disableActions=!1,this.pollingInterval=2500,this.disableRefresh=!1,this.refreshCart=!1,this.persistPopup=!1,this.defaultToggleButton=!1,this.lang="en",this.currency=void 0,this.customerId=void 0,this._apiEndpoint="/apps/shipaid",this._storeDomain=(null==(t=window.Shopify)?void 0:t.shop)??(null==(i=null==(e=window.Shopify)?void 0:e.Checkout)?void 0:i.apiHost),this._hasFinishedSetup=!1,this._shouldShowWidget=!0,this._hasProtectionInCart=!1,this.hasLoadedStrings=!1,this.intervalId=0,this._state={loading:!1,success:null,error:!1},this._popup=null,this._fetch={get:t=>ae(t),post:(t,e)=>ae(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}shouldUpdate(t){return this.hasLoadedStrings&&super.shouldUpdate(t)}shouldPersistPopup(){return"true"===localStorage.getItem(`${ce}`)?"learn-more":null}setPopupKey(){this.persistPopup&&localStorage.setItem(`${ce}`,"true")}get shouldRefreshOnUpdate(){return!this.disablePolling&&!this.disableRefresh}get planActive(){var t,e;const{searchParams:i}=new URL(window.location.href);return(null==(t=window.Shopify)?void 0:t.designMode)||i.has("shipaid-test")?(de("Currently in preview mode."),!0):!!(null==(e=this._store)?void 0:e.planActive)}_currencyFormat(t){var e,i,o;return new Intl.NumberFormat(void 0,{currency:this.currency||(null==(i=null==(e=window.Shopify)?void 0:e.currency)?void 0:i.active)||(null==(o=this._store)?void 0:o.currency)||"USD",style:"currency"}).format(Number(t))}_dispatchEvent(t,e={}){this.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:e}))}_handleRefreshCart(){if(this.refreshCart)return window.location.reload()}async _handleRefresh(t){const e=Reflect.has(t,"items");if(this.shouldRefreshOnUpdate)return window.location.reload();e||await this.updateCart(),this._dispatchEvent(oe.STATUS_UPDATE,{protection:this._hasProtectionInCart,cart:e?t:this._cart,lineItem:e?this._protectionCartItem:t})}async calculateProtectionTotal(t){if(t||(t=await this._fetchCart()),!t)throw new Error("Could not fetch cart.");if(!this._store)throw new Error("Missing ShipAid store");if(!this._protectionProduct)throw new Error("Missing Shopify protection product");return e.calculateProtectionTotal(this._store,this._protectionProduct,t)}_findProtectionVariant(t){if(!this._store)throw new Error("Missing ShipAid store");if(!this._protectionProduct)throw new Error("Missing Shopify protection product");return e.findProtectionVariant(this._store,this._protectionProduct,t)}_setState(t,e){this._state={loading:"loading"===t,success:"success"===t,error:"error"===t&&(e||!0)}}async _updateProtection(){return this._hasProtectionInCart?this.removeProtection():this.addProtection()}async _fetchShipAidData(){var t,e,i,o,r;const s=(null==(t=window.Shopify)?void 0:t.shop)??(null==(i=null==(e=window.Shopify)?void 0:e.Checkout)?void 0:i.apiHost);if(!s)throw new Error("No shop found in Shopify object.");try{const t=new URL(window.location.href);t.pathname=this._apiEndpoint;const e={query:"query StoreByDomain ($store: String!) {\n store: storeByDomain (input: {store: $store}) {\n currency\n planActive\n store\n widgetAutoOptIn\n widgetPollProtection\n widgetShowCart\n excludedProductSkus\n excludedCustomersIdsAutoOptIn\n protectionSettings\n widgetConfigurations\n }\n}",variables:{store:s}},i=await this._fetch.post(t.toString(),e);if(!i)throw new Error("Missing response for store query.");if(null==(o=i.errors)?void 0:o.length)throw new Error(i.errors[0].message);if(!(null==(r=i.data)?void 0:r.store))throw new Error("Missing store from store query response.");return i.data.store}catch(n){throw console.error(n),new Error(`Could not find a store for ${this._storeDomain}`)}}async _fetchCart(){try{return await this._fetch.get("/cart.js")}catch(t){throw pe(t.message),new Error("Could not fetch cart for current domain.")}}async _fetchProduct(){try{const{product:t}=await this._fetch.get("/products/shipaid-protection.json");return t}catch(t){throw pe(t.message),new Error("Could not fetch protection product for current domain.")}}hasProtection(){return this._hasProtectionInCart}async updateCart(t){t||(t=await this._fetchCart()),this._cart=t}async addProtection(){var t,e;try{if(!this._store)throw new Error("Store has not been loaded.");if(!(null==(t=this._cart)?void 0:t.items))throw new Error("Cart has not been loaded.");if(!(null==(e=this._protectionVariant)?void 0:e.id))throw new Error("No protection variant found.");this._setState("loading");const i={quantity:1,id:this._protectionVariant.id},o=await this._fetch.post("/cart/add.js",i);await this._handleRefresh(o),this._setState("success")}catch(i){pe(i.message)}finally{this._cart=await this._fetchCart(),this._setState("success")}}async removeProtection(){try{if(!this._store)throw new Error("Store has not been loaded.");if(!this._protectionCartItem)throw new Error("Protection product not found.");this._setState("loading");const t={quantity:0,id:this._protectionCartItem.key},e=await this._fetch.post("/cart/change.js",t);await this._handleRefresh(e),this._cart=e,this._setState("success")}catch(t){pe(t.message)}finally{this._cart=await this._fetchCart(),this._setState("success")}}async attemptAddProtection(){var t,e,i,o,r,s;if(!(null==(t=this._store)?void 0:t.widgetAutoOptIn))return;if(!(null==(e=this._cart)?void 0:e.items)||!(null==(i=this._cart)?void 0:i.item_count))return;const n=null==(o=this._cart.items)?void 0:o.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),a=null==(r=this._cart)?void 0:r.items[n];if(this._hasProtectionInCart=!!a,1===this._cart.item_count&&a)return;!!sessionStorage.getItem(le)||(sessionStorage.setItem(le,JSON.stringify({loaded:!0})),!this._hasProtectionInCart&&(null==(s=this._cart)?void 0:s.item_count)&&this._store.widgetShowCart&&await this.addProtection())}async handleMultipleProtectionVariants(){var t,e,i,o,r;if(!(null==(t=this._cart)?void 0:t.items)||!(null==(e=this._cart)?void 0:e.item_count))return;let s=0;if(null==(i=this._cart.items)||i.forEach((t=>{var e,i;(null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id)))&&s++})),s>1){const t=null==(o=this._cart.items)?void 0:o.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),e={id:(null==(r=this._cart)?void 0:r.items[t]).key,quantity:0},i=await this._fetch.post("/cart/change.js",e);return await this._handleRefresh(i)}}learnMorePopupTemplate(){return this.persistPopup&&(this._popup=this.shouldPersistPopup()),B`
796
796
  <shipaid-popup-learn-more
797
797
  ?active=${"learn-more"===this._popup}
798
798
  @close=${()=>{this.persistPopup&&localStorage.removeItem(`${ce}`),this._popup=null}}
@@ -848,7 +848,7 @@ function It(t,e,i){return t?e():null==i?void 0:i()}const Ot=u`
848
848
  </a>
849
849
  </div>
850
850
  </div>
851
- `}async connectedCallback(){super.connectedCallback(),await async function(t,e=_t){const i=await e.loader(t,e);e.translationCache={},yt(t,i,e)}(this.lang),this.hasLoadedStrings=!0}render(){return Tt(this,(async()=>{var t,e,i,o,r,s;const n=document.createElement("link");n.setAttribute("href","https://fonts.googleapis.com/css2?family=Lato&display=swap"),n.setAttribute("rel","stylesheet"),document.head.appendChild(n);try{const[t,e,i]=await Promise.all([this._fetchShipAidData(),this._fetchCart(),this._fetchProduct()]);this._store=t,this._cart=e,this._protectionProduct=i}catch(a){return pe(a.message),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)}return this.planActive?(null==(e=null==(t=this._store)?void 0:t.protectionSettings)?void 0:e.protectionType)?this._protectionProduct?(this._hasFinishedSetup=!0,this._dispatchEvent(oe.LOADED,this._store),setTimeout((async()=>{var t,e,i,o;(null==(t=this._store)?void 0:t.widgetAutoOptIn)&&(null==(e=this._cart)?void 0:e.item_count)&&(this.customerId&&this._store.excludedCustomersIdsAutoOptIn&&(null==(i=this._store.excludedCustomersIdsAutoOptIn)?void 0:i.length)&&this._store.excludedCustomersIdsAutoOptIn.includes(`gid://shopify/Customer/${this.customerId}`)||sessionStorage.getItem(le)||(sessionStorage.setItem(le,JSON.stringify({loaded:!0})),!this._hasProtectionInCart&&(null==(o=this._cart)?void 0:o.item_count)&&this._store.widgetShowCart&&await this.addProtection()))}),500),void(this.disablePolling||(setInterval((async()=>{const t=this._cartLastUpdated;t&&(new Date).getTime()-t.getTime()<this.pollingInterval||await this.updateCart()}),this.pollingInterval),(null==(i=this._store)?void 0:i.widgetPollProtection)&&!this.intervalId&&(this.intervalId=setInterval((async()=>{await this.attemptAddProtection()}),400),localStorage.setItem(`polling-shipaid-protection_${this.intervalId}`,`${this.intervalId}`)),(null==(s=null==(r=null==(o=this._store)?void 0:o.widgetConfigurations)?void 0:r.widget)?void 0:s.pollVariantsCheck)&&setInterval((async()=>{await this.handleMultipleProtectionVariants()}),400)))):(de("No protection settings product for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)):(de("No protection settings for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)):(de("No plan is active for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1))}),[]),Tt(this,(async()=>{var t,e,i,o;if(this._cartLastUpdated=new Date,!(null==(t=this._cart)?void 0:t.items))return;const r=null==(e=this._cart.items)?void 0:e.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),s=null==(i=this._cart)?void 0:i.items[r];if(this._hasProtectionInCart=!!s,!this._store)return;const n=await this.calculateProtectionTotal(this._cart);if(this._cart.item_count>0&&s&&(this._cart.total_price===s.final_line_price||!n)){const t={id:s.key,quantity:0},e=await this._fetch.post("/cart/change.js",t);return sessionStorage.removeItem(le),await this._handleRefresh(e)}const a=this._findProtectionVariant(n);if(n?(this._protectionVariant=a,this._shouldShowWidget=!0):this._protectionVariant={id:0,price:"0"},!(null==a?void 0:a.id))return this._shouldShowWidget=!1,void pe("No matching protection variant found.");if(!(null==(o=this._protectionVariant)?void 0:o.id))return void(this._shouldShowWidget=!1);if(!s)return;if(a.id===s.variant_id){if(this._protectionCartItem={...s,index:r,position:r+1},1===s.quantity)return;const t={id:s.key,quantity:1},e=await this._fetch.post("/cart/change.js",t);return this._handleRefreshCart(),await this._handleRefresh(e)}const d={updates:{[s.variant_id]:0,[a.id]:1}},p=await this._fetch.post("/cart/update.js",d);await this._handleRefresh(p)}),[this._store,this._cart]),pt(this.learnMorePopupTemplate(),document.body),B`
851
+ `}async connectedCallback(){super.connectedCallback(),await async function(t,e=_t){const i=await e.loader(t,e);e.translationCache={},yt(t,i,e)}(this.lang),this.hasLoadedStrings=!0}render(){return Tt(this,(async()=>{var t,e,i,o,r,s;const n=document.createElement("link");n.setAttribute("href","https://fonts.googleapis.com/css2?family=Lato&display=swap"),n.setAttribute("rel","stylesheet"),document.head.appendChild(n);try{const[t,e,i]=await Promise.all([this._fetchShipAidData(),this._fetchCart(),this._fetchProduct()]);this._store=t,this._cart=e,this._protectionProduct=i}catch(a){return pe(a.message),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)}return this.planActive?(null==(e=null==(t=this._store)?void 0:t.protectionSettings)?void 0:e.protectionType)?this._protectionProduct?(this._hasFinishedSetup=!0,this._shouldShowWidget=!0,this._dispatchEvent(oe.LOADED,this._store),setTimeout((async()=>{var t,e,i,o;(null==(t=this._store)?void 0:t.widgetAutoOptIn)&&(null==(e=this._cart)?void 0:e.item_count)&&(this.customerId&&this._store.excludedCustomersIdsAutoOptIn&&(null==(i=this._store.excludedCustomersIdsAutoOptIn)?void 0:i.length)&&this._store.excludedCustomersIdsAutoOptIn.includes(`gid://shopify/Customer/${this.customerId}`)||sessionStorage.getItem(le)||(sessionStorage.setItem(le,JSON.stringify({loaded:!0})),!this._hasProtectionInCart&&(null==(o=this._cart)?void 0:o.item_count)&&this._store.widgetShowCart&&await this.addProtection()))}),500),void(this.disablePolling||(setInterval((async()=>{const t=this._cartLastUpdated;t&&(new Date).getTime()-t.getTime()<this.pollingInterval||await this.updateCart()}),this.pollingInterval),(null==(i=this._store)?void 0:i.widgetPollProtection)&&!this.intervalId&&(this.intervalId=setInterval((async()=>{await this.attemptAddProtection()}),400),localStorage.setItem(`polling-shipaid-protection_${this.intervalId}`,`${this.intervalId}`)),(null==(s=null==(r=null==(o=this._store)?void 0:o.widgetConfigurations)?void 0:r.widget)?void 0:s.pollVariantsCheck)&&setInterval((async()=>{await this.handleMultipleProtectionVariants()}),400)))):(de("No protection settings product for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)):(de("No protection settings for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1)):(de("No plan is active for this store - skipping setup."),this._hasFinishedSetup=!0,void(this._shouldShowWidget=!1))}),[]),Tt(this,(async()=>{var t,e,i;if(this._cartLastUpdated=new Date,!(null==(t=this._cart)?void 0:t.items))return;const o=null==(e=this._cart.items)?void 0:e.findIndex((t=>{var e,i;return null==(i=null==(e=this._protectionProduct)?void 0:e.variants)?void 0:i.some((e=>e.id===t.variant_id))})),r=null==(i=this._cart)?void 0:i.items[o];if(this._hasProtectionInCart=!!r,1===this._cart.item_count&&r){const t={id:r.key,quantity:0},e=await this._fetch.post("/cart/change.js",t);return sessionStorage.removeItem(le),await this._handleRefresh(e)}if(!this._store)return;const s=await this.calculateProtectionTotal(this._cart),n=this._findProtectionVariant(s);if(this._protectionVariant=n,!(null==n?void 0:n.id))return this._shouldShowWidget=!1,void pe("No matching protection variant found.");if(!r)return;if(n.id===r.variant_id){if(this._protectionCartItem={...r,index:o,position:o+1},1===r.quantity)return;const t={id:r.key,quantity:1},e=await this._fetch.post("/cart/change.js",t);return this._handleRefreshCart(),await this._handleRefresh(e)}const a={updates:{[r.variant_id]:0,[n.id]:1}},d=await this._fetch.post("/cart/update.js",a);await this._handleRefresh(d)}),[this._store,this._cart]),pt(this.learnMorePopupTemplate(),document.body),B`
852
852
  <style>
853
853
  :host {
854
854
  --shipaid-primary: #002bd6;
@@ -1,6 +1,6 @@
1
- import { calculateProtectionTotal, findProtectionVariant } from './protection';
2
- declare const _default: {
3
- calculateProtectionTotal: typeof calculateProtectionTotal;
4
- findProtectionVariant: typeof findProtectionVariant;
5
- };
6
- export default _default;
1
+ import { calculateProtectionTotal, findProtectionVariant } from './protection';
2
+ declare const _default: {
3
+ calculateProtectionTotal: typeof calculateProtectionTotal;
4
+ findProtectionVariant: typeof findProtectionVariant;
5
+ };
6
+ export default _default;
@@ -1,6 +1,6 @@
1
- import { type ShipAidStore } from '../types/ShipAid';
2
- import { type ShopifyCart } from './types/ShopifyCart';
3
- import { type ShopifyProduct, type ShopifyProductVariant } from './types/ShopifyProduct';
4
- /** Given the current cart, it calculates the protection total according to the store protection settings. */
5
- export declare function calculateProtectionTotal(store: ShipAidStore, protectionProduct: ShopifyProduct, cart: ShopifyCart): number;
6
- export declare function findProtectionVariant(store: ShipAidStore, protectionProduct: ShopifyProduct, protectionFee: number): ShopifyProductVariant | undefined;
1
+ import { type ShipAidStore } from '../types/ShipAid';
2
+ import { type ShopifyCart } from './types/ShopifyCart';
3
+ import { type ShopifyProduct, type ShopifyProductVariant } from './types/ShopifyProduct';
4
+ /** Given the current cart, it calculates the protection total according to the store protection settings. */
5
+ export declare function calculateProtectionTotal(store: ShipAidStore, protectionProduct: ShopifyProduct, cart: ShopifyCart): number;
6
+ export declare function findProtectionVariant(store: ShipAidStore, protectionProduct: ShopifyProduct, protectionFee: number): ShopifyProductVariant | undefined;
@@ -1,28 +1,28 @@
1
- export interface ShopifyCart {
2
- /** Should be the lowest common denomination */
3
- total_price: number;
4
- item_count: number;
5
- items?: ShopifyCartItem[];
6
- }
7
- export interface ShopifyCartItem {
8
- id: number;
9
- index: number;
10
- position: number;
11
- quantity: number;
12
- variant_id: number;
13
- key: string;
14
- sku: string;
15
- /** Should be the lowest common denomination */
16
- final_line_price: number;
17
- }
18
- export interface FeaturedImage {
19
- aspect_ratio: number;
20
- alt: string;
21
- height: number;
22
- url: string;
23
- width: number;
24
- }
25
- export interface OptionsWithValues {
26
- name: string;
27
- value: string;
28
- }
1
+ export interface ShopifyCart {
2
+ /** Should be the lowest common denomination */
3
+ total_price: number;
4
+ item_count: number;
5
+ items?: ShopifyCartItem[];
6
+ }
7
+ export interface ShopifyCartItem {
8
+ id: number;
9
+ index: number;
10
+ position: number;
11
+ quantity: number;
12
+ variant_id: number;
13
+ key: string;
14
+ sku: string;
15
+ /** Should be the lowest common denomination */
16
+ final_line_price: number;
17
+ }
18
+ export interface FeaturedImage {
19
+ aspect_ratio: number;
20
+ alt: string;
21
+ height: number;
22
+ url: string;
23
+ width: number;
24
+ }
25
+ export interface OptionsWithValues {
26
+ name: string;
27
+ value: string;
28
+ }
@@ -1,7 +1,7 @@
1
- export interface ShopifyProduct {
2
- variants?: ShopifyProductVariant[];
3
- }
4
- export interface ShopifyProductVariant {
5
- id: number;
6
- price: string;
7
- }
1
+ export interface ShopifyProduct {
2
+ variants?: ShopifyProductVariant[];
3
+ }
4
+ export interface ShopifyProductVariant {
5
+ id: number;
6
+ price: string;
7
+ }
@@ -1,53 +1,52 @@
1
- export interface ProtectionSettingsProductVariant {
2
- id?: string;
3
- sku?: string;
4
- price?: string;
5
- title?: string;
6
- selectedOptions?: Array<{
7
- name?: string;
8
- value?: string;
9
- }>;
10
- }
11
- export interface ProtectionSettingsProduct {
12
- id?: string;
13
- title?: string;
14
- options?: Array<{
15
- name: string;
16
- value: string;
17
- }>;
18
- variants?: {
19
- edges?: Array<{
20
- node?: ProtectionSettingsProductVariant;
21
- }>;
22
- };
23
- }
24
- export interface ProtectionSettings {
25
- product?: ProtectionSettingsProduct;
26
- }
27
- export interface ProtectionSettingsPercentage {
28
- protectionType: 'PERCENTAGE';
29
- percentage: number;
30
- minimumFee: number;
31
- }
32
- export interface ProtectionSettingsFixed {
33
- protectionType: 'FIXED';
34
- defaultFee?: number;
35
- rules?: Array<{
36
- fee?: number;
37
- rangeLower?: number;
38
- rangeUpper?: number;
39
- }>;
40
- }
41
- export interface ShipAidStore {
42
- store: string;
43
- currency: string;
44
- widgetAutoOptIn?: boolean;
45
- widgetPollProtection?: boolean;
46
- widgetShowCart?: boolean;
47
- excludedProductSkus?: string[];
48
- excludedProductsVariantsId?: string[];
49
- excludedCustomersIdsAutoOptIn?: string[] | null;
50
- planActive: boolean;
51
- protectionSettings: ProtectionSettingsFixed | ProtectionSettingsPercentage;
52
- widgetConfigurations: any;
53
- }
1
+ export interface ProtectionSettingsProductVariant {
2
+ id?: string;
3
+ sku?: string;
4
+ price?: string;
5
+ title?: string;
6
+ selectedOptions?: Array<{
7
+ name?: string;
8
+ value?: string;
9
+ }>;
10
+ }
11
+ export interface ProtectionSettingsProduct {
12
+ id?: string;
13
+ title?: string;
14
+ options?: Array<{
15
+ name: string;
16
+ value: string;
17
+ }>;
18
+ variants?: {
19
+ edges?: Array<{
20
+ node?: ProtectionSettingsProductVariant;
21
+ }>;
22
+ };
23
+ }
24
+ export interface ProtectionSettings {
25
+ product?: ProtectionSettingsProduct;
26
+ }
27
+ export interface ProtectionSettingsPercentage {
28
+ protectionType: 'PERCENTAGE';
29
+ percentage: number;
30
+ minimumFee: number;
31
+ }
32
+ export interface ProtectionSettingsFixed {
33
+ protectionType: 'FIXED';
34
+ defaultFee?: number;
35
+ rules?: Array<{
36
+ fee?: number;
37
+ rangeLower?: number;
38
+ rangeUpper?: number;
39
+ }>;
40
+ }
41
+ export interface ShipAidStore {
42
+ store: string;
43
+ currency: string;
44
+ widgetAutoOptIn?: boolean;
45
+ widgetPollProtection?: boolean;
46
+ widgetShowCart?: boolean;
47
+ excludedProductSkus?: string[];
48
+ excludedCustomersIdsAutoOptIn?: string[] | null;
49
+ planActive: boolean;
50
+ protectionSettings: ProtectionSettingsFixed | ProtectionSettingsPercentage;
51
+ widgetConfigurations: any;
52
+ }
@@ -1,8 +1,8 @@
1
- export declare const CheckmarkIcon: import("lit").TemplateResult<1>;
2
- export declare const ShipAidLogo: import("lit").TemplateResult<1>;
3
- export declare const ShipAidLogoText: import("lit").TemplateResult<1>;
4
- export declare const ShipAidLogoPopUp: import("lit").TemplateResult<1>;
5
- export declare const CheckmarkRibbon: import("lit").TemplateResult<1>;
6
- export declare const MapIcon: import("lit").TemplateResult<1>;
7
- export declare const BoxIcon: import("lit").TemplateResult<1>;
8
- export declare const BellIcon: import("lit").TemplateResult<1>;
1
+ export declare const CheckmarkIcon: import("lit").TemplateResult<1>;
2
+ export declare const ShipAidLogo: import("lit").TemplateResult<1>;
3
+ export declare const ShipAidLogoText: import("lit").TemplateResult<1>;
4
+ export declare const ShipAidLogoPopUp: import("lit").TemplateResult<1>;
5
+ export declare const CheckmarkRibbon: import("lit").TemplateResult<1>;
6
+ export declare const MapIcon: import("lit").TemplateResult<1>;
7
+ export declare const BoxIcon: import("lit").TemplateResult<1>;
8
+ export declare const BellIcon: import("lit").TemplateResult<1>;
@@ -1,2 +1,2 @@
1
- declare const styles: import("lit").CSSResult;
2
- export default styles;
1
+ declare const styles: import("lit").CSSResult;
2
+ export default styles;
@@ -1,2 +1,2 @@
1
- declare const _default: import("lit").CSSResult;
2
- export default _default;
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
@@ -1,8 +1,8 @@
1
- import { LitElement } from 'lit';
2
- declare class LearnMorePopup extends LitElement {
3
- static styles: import("lit").CSSResult;
4
- active: boolean;
5
- handleClosePopup(): void;
6
- render(): import("lit").TemplateResult<1>;
7
- }
8
- export default LearnMorePopup;
1
+ import { LitElement } from 'lit';
2
+ declare class LearnMorePopup extends LitElement {
3
+ static styles: import("lit").CSSResult;
4
+ active: boolean;
5
+ handleClosePopup(): void;
6
+ render(): import("lit").TemplateResult<1>;
7
+ }
8
+ export default LearnMorePopup;
@@ -1,108 +1,108 @@
1
- import { LitElement, PropertyValues } from 'lit';
2
- import './components/learn-more-popup';
3
- import type { ShopifyCart } from '../types/shopify';
4
- /**
5
- * ShipAid Widget.
6
- *
7
- * @description When the <shipaid-widget> element is added to page, it will render this element,
8
- * allowing a customer to add ShipAid protection to cart (and remove).
9
- *
10
- */
11
- export declare class ShipAidWidget extends LitElement {
12
- static styles: import("lit").CSSResult;
13
- disablePolling: boolean;
14
- disableActions: boolean;
15
- pollingInterval: number;
16
- disableRefresh: boolean;
17
- refreshCart: boolean;
18
- persistPopup: boolean;
19
- defaultToggleButton: boolean;
20
- lang: string;
21
- currency: undefined;
22
- customerId: undefined;
23
- /** API Proxy pathname */
24
- private _apiEndpoint;
25
- /** The current store domain */
26
- private _storeDomain;
27
- /** The current store data object from the ShipAid API */
28
- private _store;
29
- /** The current cart data object from the Shopify API */
30
- private _cart;
31
- /** The current protection product data object from the Shopify API */
32
- private _protectionProduct;
33
- /** When the cart was last updated */
34
- private _cartLastUpdated;
35
- /** Whether we have finished the initial setup */
36
- private _hasFinishedSetup;
37
- /** Can be used to hide all widget content */
38
- private _shouldShowWidget;
39
- /** Whether the ShipAid protection product is currently added to the cart */
40
- private _hasProtectionInCart;
41
- /** The protection item from the Shopify cart */
42
- private _protectionCartItem;
43
- /** The protection variant that will be used */
44
- private _protectionVariant;
45
- hasLoadedStrings: boolean;
46
- intervalId: number;
47
- protected shouldUpdate(props: PropertyValues): boolean;
48
- protected shouldPersistPopup(): "learn-more" | null;
49
- protected setPopupKey(): void;
50
- /**
51
- * Internal state
52
- */
53
- private _state;
54
- /**
55
- * Internal popup state
56
- */
57
- private _popup;
58
- /** Getter to check if we should refresh the page or not */
59
- get shouldRefreshOnUpdate(): boolean;
60
- /** Getter to check whether to show the widget or not */
61
- get planActive(): boolean;
62
- private _currencyFormat;
63
- /** Emit events */
64
- private _dispatchEvent;
65
- private _handleRefreshCart;
66
- /** Handle cart or page refreshes */
67
- private _handleRefresh;
68
- /** Given the current order, it calculates the protection total according to the store protection settings. */
69
- calculateProtectionTotal(cart?: ShopifyCart): Promise<number>;
70
- /**
71
- * Given the current order, it finds the relevant protection product variant, and adds it to cart.
72
- * This should be run whenever the cart updates, or it is manually triggered.
73
- */
74
- private _findProtectionVariant;
75
- /** Update State */
76
- private _setState;
77
- /** Updates the current protection status, calling the relevant add/remove function. */
78
- private _updateProtection;
79
- /** General fetch function, which handles error responses, and returns JSON responses. */
80
- private _fetch;
81
- /** Fetches store info from the ShipAid public API. */
82
- private _fetchShipAidData;
83
- /** Fetch current cart from the Shopify ajax API */
84
- private _fetchCart;
85
- /** Fetch current product from the Shopify ajax API */
86
- private _fetchProduct;
87
- /** Whether the cart currently contains Shipping protection from ShipAid. */
88
- hasProtection(): boolean;
89
- /** Update the internal cart, which will trigger any protection fee updates */
90
- updateCart(cart?: ShopifyCart): Promise<void>;
91
- /** Add ShipAid shipping protection. */
92
- addProtection(): Promise<void>;
93
- /** Remove ShipAid shipping protection. */
94
- removeProtection(): Promise<void>;
95
- /** Try adding ShipAid shipping protection during polling if applicable */
96
- attemptAddProtection(): Promise<void>;
97
- handleMultipleProtectionVariants(): Promise<void>;
98
- /** Templates */
99
- learnMorePopupTemplate(): import("lit").TemplateResult<1>;
100
- promptTemplate(): import("lit").TemplateResult<1>;
101
- connectedCallback(): Promise<void>;
102
- protected render(): import("lit").TemplateResult<1>;
103
- }
104
- declare global {
105
- interface HTMLElementTagNameMap {
106
- 'shipaid-widget': ShipAidWidget;
107
- }
108
- }
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ import './components/learn-more-popup';
3
+ import type { ShopifyCart } from '../types/shopify';
4
+ /**
5
+ * ShipAid Widget.
6
+ *
7
+ * @description When the <shipaid-widget> element is added to page, it will render this element,
8
+ * allowing a customer to add ShipAid protection to cart (and remove).
9
+ *
10
+ */
11
+ export declare class ShipAidWidget extends LitElement {
12
+ static styles: import("lit").CSSResult;
13
+ disablePolling: boolean;
14
+ disableActions: boolean;
15
+ pollingInterval: number;
16
+ disableRefresh: boolean;
17
+ refreshCart: boolean;
18
+ persistPopup: boolean;
19
+ defaultToggleButton: boolean;
20
+ lang: string;
21
+ currency: undefined;
22
+ customerId: undefined;
23
+ /** API Proxy pathname */
24
+ private _apiEndpoint;
25
+ /** The current store domain */
26
+ private _storeDomain;
27
+ /** The current store data object from the ShipAid API */
28
+ private _store;
29
+ /** The current cart data object from the Shopify API */
30
+ private _cart;
31
+ /** The current protection product data object from the Shopify API */
32
+ private _protectionProduct;
33
+ /** When the cart was last updated */
34
+ private _cartLastUpdated;
35
+ /** Whether we have finished the initial setup */
36
+ private _hasFinishedSetup;
37
+ /** Can be used to hide all widget content */
38
+ private _shouldShowWidget;
39
+ /** Whether the ShipAid protection product is currently added to the cart */
40
+ private _hasProtectionInCart;
41
+ /** The protection item from the Shopify cart */
42
+ private _protectionCartItem;
43
+ /** The protection variant that will be used */
44
+ private _protectionVariant;
45
+ hasLoadedStrings: boolean;
46
+ intervalId: number;
47
+ protected shouldUpdate(props: PropertyValues): boolean;
48
+ protected shouldPersistPopup(): "learn-more" | null;
49
+ protected setPopupKey(): void;
50
+ /**
51
+ * Internal state
52
+ */
53
+ private _state;
54
+ /**
55
+ * Internal popup state
56
+ */
57
+ private _popup;
58
+ /** Getter to check if we should refresh the page or not */
59
+ get shouldRefreshOnUpdate(): boolean;
60
+ /** Getter to check whether to show the widget or not */
61
+ get planActive(): boolean;
62
+ private _currencyFormat;
63
+ /** Emit events */
64
+ private _dispatchEvent;
65
+ private _handleRefreshCart;
66
+ /** Handle cart or page refreshes */
67
+ private _handleRefresh;
68
+ /** Given the current order, it calculates the protection total according to the store protection settings. */
69
+ calculateProtectionTotal(cart?: ShopifyCart): Promise<number>;
70
+ /**
71
+ * Given the current order, it finds the relevant protection product variant, and adds it to cart.
72
+ * This should be run whenever the cart updates, or it is manually triggered.
73
+ */
74
+ private _findProtectionVariant;
75
+ /** Update State */
76
+ private _setState;
77
+ /** Updates the current protection status, calling the relevant add/remove function. */
78
+ private _updateProtection;
79
+ /** General fetch function, which handles error responses, and returns JSON responses. */
80
+ private _fetch;
81
+ /** Fetches store info from the ShipAid public API. */
82
+ private _fetchShipAidData;
83
+ /** Fetch current cart from the Shopify ajax API */
84
+ private _fetchCart;
85
+ /** Fetch current product from the Shopify ajax API */
86
+ private _fetchProduct;
87
+ /** Whether the cart currently contains Shipping protection from ShipAid. */
88
+ hasProtection(): boolean;
89
+ /** Update the internal cart, which will trigger any protection fee updates */
90
+ updateCart(cart?: ShopifyCart): Promise<void>;
91
+ /** Add ShipAid shipping protection. */
92
+ addProtection(): Promise<void>;
93
+ /** Remove ShipAid shipping protection. */
94
+ removeProtection(): Promise<void>;
95
+ /** Try adding ShipAid shipping protection during polling if applicable */
96
+ attemptAddProtection(): Promise<void>;
97
+ handleMultipleProtectionVariants(): Promise<void>;
98
+ /** Templates */
99
+ learnMorePopupTemplate(): import("lit").TemplateResult<1>;
100
+ promptTemplate(): import("lit").TemplateResult<1>;
101
+ connectedCallback(): Promise<void>;
102
+ protected render(): import("lit").TemplateResult<1>;
103
+ }
104
+ declare global {
105
+ interface HTMLElementTagNameMap {
106
+ 'shipaid-widget': ShipAidWidget;
107
+ }
108
+ }
@@ -1,10 +1,10 @@
1
- import { ShipAidStore } from '../../common/types/ShipAid';
2
- export interface ShipAidStoreQuery {
3
- data: null | {
4
- store: ShipAidStore;
5
- };
6
- errors?: {
7
- message: string;
8
- }[];
9
- }
10
- export { ShipAidStore };
1
+ import { ShipAidStore } from '../../common/types/ShipAid';
2
+ export interface ShipAidStoreQuery {
3
+ data: null | {
4
+ store: ShipAidStore;
5
+ };
6
+ errors?: {
7
+ message: string;
8
+ }[];
9
+ }
10
+ export { ShipAidStore };
@@ -1,28 +1,28 @@
1
- import { ShopifyProduct } from '../../common/shopify/types/ShopifyProduct';
2
- export * from '../../common/shopify/types/ShopifyCart';
3
- export * from '../../common/shopify/types/ShopifyProduct';
4
- declare global {
5
- interface Window {
6
- Shopify?: {
7
- shop?: string;
8
- locale?: string;
9
- designMode?: boolean;
10
- currency?: {
11
- active?: string;
12
- };
13
- Checkout?: Record<string, string> & {
14
- apiHost?: string;
15
- };
16
- };
17
- }
18
- }
19
- export interface ShopifyCartAddPayload {
20
- id: number | string;
21
- quantity?: number;
22
- }
23
- export interface ShopifyCartUpdatePayload {
24
- updates: Record<string | number, number>;
25
- }
26
- export interface ShopifyProductResponse {
27
- product: ShopifyProduct;
28
- }
1
+ import { ShopifyProduct } from '../../common/shopify/types/ShopifyProduct';
2
+ export * from '../../common/shopify/types/ShopifyCart';
3
+ export * from '../../common/shopify/types/ShopifyProduct';
4
+ declare global {
5
+ interface Window {
6
+ Shopify?: {
7
+ shop?: string;
8
+ locale?: string;
9
+ designMode?: boolean;
10
+ currency?: {
11
+ active?: string;
12
+ };
13
+ Checkout?: Record<string, string> & {
14
+ apiHost?: string;
15
+ };
16
+ };
17
+ }
18
+ }
19
+ export interface ShopifyCartAddPayload {
20
+ id: number | string;
21
+ quantity?: number;
22
+ }
23
+ export interface ShopifyCartUpdatePayload {
24
+ updates: Record<string | number, number>;
25
+ }
26
+ export interface ShopifyProductResponse {
27
+ product: ShopifyProduct;
28
+ }