@letscooee/web-sdk 12.1.7 → 12.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.min.js CHANGED
@@ -7,7 +7,7 @@ import{a as _,b as Z,c as Ni,d as xm,e as Pi,f as Cr,g as wo}from"./chunk-V7UGKY
7
7
 
8
8
  `+ne.message+`
9
9
  `+Array(ne.message.length+1).join("=")+`
10
- `+I(D,U)):ne}}function kt(D,R){var V;return R.cache&&R.name&&R.storage.templates.get(R.name)?R.storage.templates.get(R.name):(V=typeof D=="function"?D:Qe(D,R),R.cache&&R.name&&R.storage.templates.define(R.name,V),V)}Re.l.bind(Re),t.compile=Qe,t.compileScope=P,t.compileScopeIntoFunction=G,t.compileToString=I,t.defaultConfig=Re,t.filters=Te,t.getConfig=Ge,t.helpers=pe,t.nativeHelpers=Le,t.parse=y,t.render=function(D,R,V,U){var H=Ge(V||{});if(!H.async)return kt(D,H)(R,H);if(!U){if(typeof n=="function")return new n(function(ne,de){try{ne(kt(D,H)(R,H))}catch(qe){de(qe)}});throw e("Please provide a callback function, this env doesn't support Promises")}try{kt(D,H)(R,H,U)}catch(ne){return U(ne)}},t.templates=se,Object.defineProperty(t,"__esModule",{value:!0})})});var ru="12.1.7";var SE=ru.split("-")[0].split(".").slice(0,3).map(t=>t.padStart(2,"0")).join(""),Ys="WEB",Cm="CooeeSDK",Rr=ru,Rm=parseInt(SE,10);var Dm=["collection","product","cart"],Am=[{identifier:"#flo-checkout-wrapper",gateway:"Shopflow"},{identifier:"#fastrr-main-container",gateway:"Shiprocket"},{identifier:"#gokwik-modal-wrapper",gateway:"Gokwik"},{identifier:"#zecpe",gateway:"Ecom 360"}],Om=["View Item","View Cart","View Collection"];var Ks=`https://cdn.jsdelivr.net/npm/@letscooee/web-sdk@${Rr}/dist`,Wt={apiURL:"https://api.sdk.letscooee.com",debug:!1,mode:"production",baseURL:Ks,styleURL:`${Ks}/widget.min.css`,widgetURL:`${Ks}/widget.min.js`,swiperStyleURL:`${Ks}/swiper-bundle.min.css`};var jt=Cr(So());var b=class{static debuggerEl;static infoLogs=[];static log(...e){jt.default.info(...e)}static verbose(...e){jt.default.debug(...e)}static error(...e){jt.default.error(...e)}static warn(...e){jt.default.warn(...e)}static info(...e){jt.default.info(...e),this.infoLogs.unshift({time:new Date,message:e.join(" ")}),this.addToDebugger()}static trace(...e){jt.default.trace(...e)}static addToDebugger(){sessionStorage.cooeeDebug&&(this.debuggerEl=this.debuggerEl??document.querySelector("cooee-debugger"),this.debuggerEl&&this.debuggerEl&&(this.debuggerEl.logs=[...this.infoLogs]))}};function Pm(t=Cm){jt.default.useDefaults({formatter:function(r){r.unshift(`${t} (v${Rr}):`)}});let e=nu();(e==="1"||e==="on")&&(localStorage.cooeeLogLevel="TRACE"),localStorage.cooeeLogLevel?jt.default.setLevel(jt.default[localStorage.cooeeLogLevel]):jt.default.setLevel(Wt.debug?jt.default.TRACE:jt.default.OFF)}function nu(){return new URL(location.href).searchParams?.get("cooee-debug")}function Lm(){let t=["display: inline-block;","font-size: 14px;","background: linear-gradient(90deg, #d52dc8 25%, #2179e2 82%);","color: white;","padding: 4px;","border-radius: 4px;"].join(" "),e=`
10
+ `+I(D,U)):ne}}function kt(D,R){var V;return R.cache&&R.name&&R.storage.templates.get(R.name)?R.storage.templates.get(R.name):(V=typeof D=="function"?D:Qe(D,R),R.cache&&R.name&&R.storage.templates.define(R.name,V),V)}Re.l.bind(Re),t.compile=Qe,t.compileScope=P,t.compileScopeIntoFunction=G,t.compileToString=I,t.defaultConfig=Re,t.filters=Te,t.getConfig=Ge,t.helpers=pe,t.nativeHelpers=Le,t.parse=y,t.render=function(D,R,V,U){var H=Ge(V||{});if(!H.async)return kt(D,H)(R,H);if(!U){if(typeof n=="function")return new n(function(ne,de){try{ne(kt(D,H)(R,H))}catch(qe){de(qe)}});throw e("Please provide a callback function, this env doesn't support Promises")}try{kt(D,H)(R,H,U)}catch(ne){return U(ne)}},t.templates=se,Object.defineProperty(t,"__esModule",{value:!0})})});var ru="12.1.8";var SE=ru.split("-")[0].split(".").slice(0,3).map(t=>t.padStart(2,"0")).join(""),Ys="WEB",Cm="CooeeSDK",Rr=ru,Rm=parseInt(SE,10);var Dm=["collection","product","cart"],Am=[{identifier:"#flo-checkout-wrapper",gateway:"Shopflow"},{identifier:"#fastrr-main-container",gateway:"Shiprocket"},{identifier:"#gokwik-modal-wrapper",gateway:"Gokwik"},{identifier:"#zecpe",gateway:"Ecom 360"}],Om=["View Item","View Cart","View Collection"];var Ks=`https://cdn.jsdelivr.net/npm/@letscooee/web-sdk@${Rr}/dist`,Wt={apiURL:"https://api.sdk.letscooee.com",debug:!1,mode:"production",baseURL:Ks,styleURL:`${Ks}/widget.min.css`,widgetURL:`${Ks}/widget.min.js`,swiperStyleURL:`${Ks}/swiper-bundle.min.css`};var jt=Cr(So());var b=class{static debuggerEl;static infoLogs=[];static log(...e){jt.default.info(...e)}static verbose(...e){jt.default.debug(...e)}static error(...e){jt.default.error(...e)}static warn(...e){jt.default.warn(...e)}static info(...e){jt.default.info(...e),this.infoLogs.unshift({time:new Date,message:e.join(" ")}),this.addToDebugger()}static trace(...e){jt.default.trace(...e)}static addToDebugger(){sessionStorage.cooeeDebug&&(this.debuggerEl=this.debuggerEl??document.querySelector("cooee-debugger"),this.debuggerEl&&this.debuggerEl&&(this.debuggerEl.logs=[...this.infoLogs]))}};function Pm(t=Cm){jt.default.useDefaults({formatter:function(r){r.unshift(`${t} (v${Rr}):`)}});let e=nu();(e==="1"||e==="on")&&(localStorage.cooeeLogLevel="TRACE"),localStorage.cooeeLogLevel?jt.default.setLevel(jt.default[localStorage.cooeeLogLevel]):jt.default.setLevel(Wt.debug?jt.default.TRACE:jt.default.OFF)}function nu(){return new URL(location.href).searchParams?.get("cooee-debug")}function Lm(){let t=["display: inline-block;","font-size: 14px;","background: linear-gradient(90deg, #d52dc8 25%, #2179e2 82%);","color: white;","padding: 4px;","border-radius: 4px;"].join(" "),e=`
11
11
  `;e+=`\u{1F4E3} Drive higher conversions with AI-powered onsite engagement
12
12
  `,e+=`\u{1F50D} Track real-time visitor intent & optimize engagement
13
13
  `,e+=`\u{1F4CA} Improve Meta Ads ROAS with intent-driven campaigns
@@ -64,4 +64,4 @@ mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!]) {
64
64
  <span class="${o}"
65
65
  style="background-color: ${e.pagination.color?.rgba};">
66
66
  </span>
67
- `},navigation:{nextEl:t.querySelector(".swiper-button-next"),prevEl:t.querySelector(".swiper-button-prev")},autoplay:e.autoplay?.enabled?{delay:e.autoplay?.delay,disableOnInteraction:!1,pauseOnMouseEnter:!1}:!1,autoHeight:!0};e.marquee&&r.autoplay&&typeof r.autoplay=="object"&&(r.speed=e.speed,r.autoplay.pauseOnMouseEnter=!0,t.style.setProperty("--swiper-wrapper-transition-timing-function","linear"));let n=new window.CooeeSDK.Swiper(t,r);return t.style.setProperty("--swiper-navigation-size",`${e.navigation.size}px`),n}function Pl(t,e,r){let n={color:t.navigation.color?.rgba};return t.pagination.enabled&&(n.transform="translateY(-25%)"),K("div",{class:"swiper-container",ref:e,style:"max-width: 100%",children:[K("div",{class:"swiper-wrapper",children:r()}),t.navigation.enabled&&K("div",{class:"swiper-button-next",style:n,children:K("span",{})}),t.navigation.enabled&&K("div",{class:"swiper-button-prev",style:n,children:K("span",{})}),t.pagination.enabled&&K("div",{className:"swiper-pagination",style:{bottom:0,top:"unset",position:"relative",color:t.pagination.color?.rgba}})]})}var Us=class extends ke{componentDidMount(){St(()=>{this.setState(()=>({checked:this.props.item.selected.value}))})}render(){return K("div",{style:this.getCompiledStyles(),className:"lc-checkbox",children:K("input",{type:"checkbox",checked:this.state.checked,onChange:this.onChange.bind(this),style:{appearance:"auto"}})})}onChange(e){let{checked:r}=e.target;this.props.item.selected.value=r}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.textAlign=r.alignment,e.justifyContent=r.alignment,e}getComponentStyles(){return Z(_({},this.getTypoStyles()),{display:"flex"})}};var yn=class extends ke{constructor(e,r){super(e,r)}render(){let e=this.props.element[this.deviceTypeKey],r=e?.src||this.props.element.src||this.props.element.lg?.src;return K("img",{onClick:this.customOnClick.bind(this),className:"lc-image",alt:e?.name||"Image",onMouseEnter:this.handleMouseEnter.bind(this),onMouseLeave:this.handleMouseLeave.bind(this),src:r,style:this.getCompiledStyles()})}customOnClick(e){this.props.element.clc?.at===be.ADD_TO_CART&&this.props.triggerContext.triggerData.items[0]&&this.onClick(e,{item:this.props.triggerContext.triggerData.items[0]}),this.props.onClick&&this.props.onClick("image")}getComponentStyles(){let e=this.mediaStyle.lout;if(!e||e.pos!=="absolute")return{};let r={zIndex:e.zIndex,cursor:this.props.element.clc?.at?"pointer":"auto"};return this.mediaStyle.size?.w&&(r.width=this.mediaStyle.size.w),this.mediaStyle.size?.h&&(r.height=this.mediaStyle.size.h),r}handleMouseEnter(e){let r=this.props.element[this.deviceTypeKey]?.secondarySrc;r&&(e.currentTarget.src=r)}handleMouseLeave(e){e.currentTarget.src=this.props.element[this.deviceTypeKey]?.src}};var vn=class extends ke{render(){if(!(this.props.element.hide||!this.matchWhenCondition(this.props.element.when)))return K("div",{style:this.getCompiledStyles(),class:"lc-flexbox",children:K($n,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext})})}getComponentStyles(){let e=this.mediaStyle.flex??new Zo,r={display:"flex",gap:e.gap+"px",flexWrap:e.wrap,flexDirection:e.dir,justifyContent:e.jc,alignItems:e.ai};return e.wrap==="nowrap"&&e.scroll&&(e.dir==="column"?r["overflow-y"]="auto":r["overflow-x"]="auto"),r}};var Fs=class extends vn{render(){if(!(this.props.element.hide||!this.matchWhenCondition(this.props.element.when)))return K("div",{style:this.getCompiledStyles(),class:"lc-flexbox",children:K(xi,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext,item:this.props.item,noLinks:this.props.noLinks})})}};var Hs=class extends ke{render(){return K("select",{style:this.getCompiledStyles(),value:this.props.selectedVariant.selectedSellingPlan.value?.mID??"",onChange:this.onChange.bind(this),disabled:this.state.disabled,className:"lc-dropdown",children:this.createSelectItems()})}componentDidMount(){St(()=>{this.setState(()=>({disabled:this.props.triggerContext.triggerData.isBundle()?!this.props.item.selected.value:!1}))})}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.letterSpacing=r.letterSpacing,e.fontSize=r.fs+"px",e.lineHeight=r.lh,e.fontFamily="inherit",e.textAlign=r.alignment,e.fontWeight=r.fw,this.stylesConverter.getColourStyles(r.tc,"color",e),e.boxShadow="none",e}getComponentStyles(){let e={};return this.props.selectedVariant.sellingPlans?.length||(e.visibility="hidden"),_(_({},e),this.getTypoStyles())}createSelectItems(){let e=[],r=this.props.selectedVariant;if(!r.sellingPlans?.length)return[];this.props.triggerContext.triggerData.skipSubscribedItems?r.selectedSellingPlan.value||(r.sellingPlans[0].isSelected=!0,r.changeSellingPlan(r.sellingPlans[0])):e.push(K("option",{value:"",selected:!r.selectedSellingPlan,children:"One time purchase"}));for(let n of r.sellingPlans??[])e.push(K("option",{value:n.mID,selected:n.isSelected,children:n.name}));return e}onChange(e){let r=e.target.value;r?this.props.selectedVariant.selectedSellingPlan.value=this.props.selectedVariant.sellingPlans.find(n=>n.mID===r):this.props.selectedVariant.selectedSellingPlan.value=void 0}};var yT=new RegExp('fill="#[a-zA-Z0-9]+"'),$s=class extends ke{constructor(){super()}render(){let e=this.getCompiledStyles(),r=this.getRating();return r||(e.display="none",r=""),K("div",{style:e,className:"lc-star-rating",dangerouslySetInnerHTML:{__html:r}})}getRating(){let e={size:this.props.element.iconSize,color:this.props.element.c.hex},r=Go(this.props.element.fullStar,{svg:e},this.props.triggerContext),n=Go(this.props.element.halfStart,{svg:e},this.props.triggerContext),o=this.props.review;if(!o?.rating)return"";let i="";if(this.props.element.showSingleStar)i=r;else{let s=5,a=`${o.rating}`.split(".");for(let c=0;c<+a[0];c++)i+=r,s--;a[1]&&(i+=n,s--);for(let c=0;c<s;c++)i+=r.replace(yT,'fill="#f1f1f1"')}return i}getComponentStyles(){return{display:"flex",alignItems:"center"}}};var Vs=class extends ke{render(){return K("select",{style:this.getCompiledStyles(),value:this.props.item.selectedOrFirstVariant.value.mID,onChange:this.onChange.bind(this),disabled:this.state.disabled,className:"lc-dropdown",children:this.createSelectItems()})}componentDidMount(){St(()=>{this.setState(()=>({disabled:this.props.triggerContext.triggerData.isBundle()?!this.props.item.selected.value:!1}))})}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.letterSpacing=r.letterSpacing,e.fontSize=r.fs+"px",e.lineHeight=r.lh,e.fontFamily="inherit",e.textAlign=r.alignment,e.fontWeight=r.fw,this.stylesConverter.getColourStyles(r.tc,"color",e),e.boxShadow="none",e}getComponentStyles(){let e={};return this.props.item.vars?.length===1&&this.props.item.vars[0].name==="Default Title"&&(e.visibility="hidden"),_(_({},e),this.getTypoStyles())}createSelectItems(){let e=[];for(let r of this.props.item.vars)e.push(K("option",{value:r.mID,disabled:!r.isAvailable,children:r.name}));return e}onChange(e){let r=e.target.value,n=this.props.item.vars.find(o=>o.mID===r);this.props.item.setSelectedVariant(n)}};var xi=class extends ke{constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"}))}renderElement(e){if(!(e.hide||!this.matchWhenCondition(e.when))){if(e.t===4){let r=e;return r.l==="Star Rating"&&!this.props.item.reviews?.rating?void 0:K(Fs,{element:r,triggerContext:this.props.triggerContext,elements:r.elems,item:this.props.item,noLinks:this.props.noLinks})}if(e.t===6)return this.props.triggerContext.triggerData.isBundle()?K(Us,{element:e,item:this.props.item,triggerContext:this.props.triggerContext}):void 0;if(e.t===13){let r=e,n=this.props.item,o=n.variantImage??n.firstImageURL,i=n.variantSecondaryImage??n.secondaryImageURL;r.lg=r.sm={src:o,name:n.name,secondarySrc:i};let s=K(yn,{element:r,onClick:this.customOnClick.bind(this),triggerContext:this.props.triggerContext});return this.props.noLinks?s:K("a",{href:this.props.item.selectedOrFirstVariant.value.link,style:{display:"block"},children:s})}if(e.t===14)return this.renderProductTitle(e);if(e.t===15){let r=e;return this.props.triggerContext.triggerData.isCartEmbed()&&this.props.item.vars?.length===1&&this.props.item.vars[0].name==="Default Title"?void 0:r.showChips?K("cooee-product-options-picker",{item:this.props.item}):K(Vs,{element:r,item:this.props.item,triggerContext:this.props.triggerContext})}return e.t===16?K(Hs,{element:e,selectedVariant:this.props.item.selectedOrFirstVariant.value,item:this.props.item,triggerContext:this.props.triggerContext}):e.t===19?K($s,{element:e,triggerContext:this.props.triggerContext,review:this.props.item.reviews}):e.t===18||e.t===3?K(vo,{element:e,item:this.props.item,triggerContext:this.props.triggerContext}):K($n,{elements:[e],element:this.props.element,triggerContext:this.props.triggerContext})}}render(){return this.props.elements.map(e=>this.renderElement(e))}getComponentStyles(){return{}}renderProductTitle(e){let r=K(Xt,{element:e,onClick:this.customOnClick.bind(this),triggerContext:this.props.triggerContext});return this.props.noLinks?r:K("a",{href:this.props.item.selectedOrFirstVariant.value.link,style:{display:"block",textDecoration:this.state.decoration},onMouseEnter:this.onMouseEnter.bind(this),onMouseLeave:this.onMouseLeave.bind(this),children:r})}customOnClick(e){this.sendTriggerClicked([this.props.item.toEmbed()],{from:e})}onMouseEnter(){this.setState(()=>({decoration:"underline"}))}onMouseLeave(){this.setState(()=>({decoration:"unset"}))}};var Eo=class extends ke{productElement;constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"}))}render(){let e=Zn(this.props.element,this.getProductData(),this.props.triggerContext);if(this.productElement=new On(e),!(this.productElement.hide||!this.matchWhenCondition(this.productElement.when)))return K("div",{style:_({},this.getCompiledStyles()),class:"lc-single-product",children:K(xi,{element:this.productElement,elements:this.productElement.elems,triggerContext:this.props.triggerContext,item:this.props.item,noLinks:this.productElement.noLinks})})}getComponentStyles(){return{flexShrink:0}}getProductData(){if(!this.props.item)return{};let e=this.props.item,r=e.selectedOrFirstVariant.value,n=e.getTemplateVariables();n.product.quantity=this.props.triggerContext.hasManipulatedProductQuantity()?this.props.triggerContext.getManipulatedQuantity(this.props.item.quantity):this.props.item.quantity;let o=this.props.triggerContext.triggerData.discount?.type===Qt.BXGY;return!r.hasEffectivePrice()&&o&&(n.product=Z(_(_({},n.product),Lt("effective_price",r.effectivePrice.value)),{price:""})),n.variant.quantity=this.props.triggerContext.hasManipulatedProductQuantity()?this.props.triggerContext.getManipulatedQuantity(r.quantity):r.quantity,{product:n.product,variant:n.variant,svg:{color:"{{ svg.color }}",size:"{{ svg.size }}"}}}};var Ws=class extends ke{swiperRef=null;swiperInstance=null;configuration;gap;constructor(e,r){super(e,r),this.configuration=qr()?this.props.element.conf.sm:this.props.element.conf.lg,this.gap=(this.configuration.gap??15)+"px"}componentDidMount(){this.props.element.conf[this.deviceTypeKey].disp===2&&Mc().then(()=>{this.swiperInstance=Nl(this.swiperRef,this.props.element.conf[this.deviceTypeKey])})}componentWillUnmount(){this.swiperInstance&&this.swiperInstance.destroy()}render(){let e=this.props.triggerContext.triggerData.items;e.splice(this.configuration.maxItems??10);let r;if(this.configuration.disp===2){let n=i=>{this.swiperRef=i},o=()=>e?.map(i=>K("div",{class:"swiper-slide",children:this.getProductFragment(i)}));r=K("div",{style:Z(_({},this.getCompiledStyles()),{display:"block"}),class:"lc-product-swiper-list",children:Pl(this.configuration,n,o)})}else r=K("div",{style:this.getCompiledStyles(),class:"lc-product-list",children:e?.map((n,o)=>this.getProductFragment(n,o!==e.length-1))});return r}getComponentStyles(){let e=[0,2].includes(this.configuration.disp),r={display:e?"flex":"grid",justifyContent:"safe "+(this.mediaStyle.flex?.jc??"center"),gap:this.gap,flexDirection:this.mediaStyle.flex?.dir??"row"};if(r.flexDirection==="row"){if(e)r.maxWidth="100%",r.overflowY="auto";else if(this.configuration.disp===1){let n=this.props.triggerContext.triggerData,o=n.items.length,i;n.isBundle()?i=this.props.element.prod.symbol?.hide!==!0?o*2-1:o:i=this.props.element.conf[this.deviceTypeKey].maxInRow,r.gridTemplateColumns=`repeat(${i}, auto)`}}return r}getProductFragment(e,r=!1){return K(Ur,{children:[K(Eo,{element:this.props.element.prod,item:e,triggerContext:this.props.triggerContext}),this.props.triggerContext.triggerData.isBundle()&&r&&this.props.element.prod.symbol&&!this.props.element.prod.symbol.hide&&K("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:K(Xt,{element:this.props.element.prod.symbol,triggerContext:this.props.triggerContext})})]},e.mID)}};var js=class extends ke{swiperRef=null;swiperInstance=null;constructor(e,r){super(e,r)}componentDidMount(){Mc().then(()=>{this.swiperInstance=Nl(this.swiperRef,this.props.element.conf)})}componentWillUnmount(){this.swiperInstance&&this.swiperInstance.destroy()}render(){let e=this.props.element,r=o=>{this.swiperRef=o},n=()=>{let o=e.values?.map(a=>K("div",{class:"swiper-slide",onClick:c=>this.onClick(c,{clickAction:this.getClickAction(a)}),children:this.renderElement(a)}));if(!o?.length)return[];let i=e.conf,s=o.length;if(i.marquee&&s<=Number(i.maxInRow)){let a=Number(i.maxInRow)-s+1;for(let c=0;c<a;c++)o.push(o[c%s])}return o};return Pl(e.conf,r,n)}getComponentStyles(){return{}}renderElement(e){let r=this.valueAddedSlide(this.props.element.slide,e);switch(r?.t){case 1:return K(yn,{element:r,triggerContext:this.props.triggerContext});case 4:return K(vn,{elements:r.elems,element:r,triggerContext:this.props.triggerContext});default:b.warn("Unknown slide type for carousal")}}valueAddedSlide(e,r){let n=Zn(e,{form:r},this.props.triggerContext);return Yt.getParsedElement(n)}getClickAction(e){return Zn(this.props.element.clc??{},{form:e},this.props.triggerContext)}};var $n=class extends ke{constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"})),St(()=>{this.setState(()=>({showButton:!this.props.triggerContext.triggerData.isBundle()||!!this.props.triggerContext.selectedItems.length}))})}renderElement(e){if(!e.hide){if(e.t===4){let r=e;return K(vn,{element:r,triggerContext:this.props.triggerContext,elements:r.elems})}if(e.t===61)return K(ks,{element:e,triggerContext:this.props.triggerContext});if(e.t===3)return this.state.showButton?K(vo,{element:e,triggerContext:this.props.triggerContext}):void 0;if(e.t===2)return K(Xt,{element:e,triggerContext:this.props.triggerContext});if(e.t===1)return K(yn,{element:e,triggerContext:this.props.triggerContext});if(e.t===11)return K(Ws,{element:e,triggerContext:this.props.triggerContext});if(e.t===12)return K(Eo,{element:e,item:this.props.triggerContext.triggerData.items[0],triggerContext:this.props.triggerContext});if(e.t===62)return K(js,{element:e,triggerContext:this.props.triggerContext})}}render(){return this.props.elements.map(e=>this.renderElement(e))}getComponentStyles(){return{}}};var Gs=class extends ke{clickAction;isClickable;constructor(e,r){super(e,r),this.clickAction=this.props.element.clc,this.isClickable=this.clickAction?.at===be.GO_TO_URL&&!!Uo(this.clickAction.gu?.u)||this.clickAction?.at===be.OPEN_CART||this.clickAction?.at===be.INITIATE_CHECKOUT}componentDidMount(){St(()=>{let e=this.props.triggerContext.triggerData,r=this.props.triggerContext.selectedItems;e.calculateDiscountData(r,this.props.triggerContext.shouldGiveFBTDiscount)})}render(){return K(Ur,{children:[K("div",{style:this.getCompiledStyles(),class:"lc-container",onClick:e=>{this.onClick(e,{clickAction:this.clickAction})},children:K($n,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext})}),this.props.triggerContext.triggerData.id==="preview"&&K("div",{class:"letscooee-preview-badge",children:["#",this.props.triggerContext.triggerData.shortID," preview"]})]})}getComponentStyles(){let e={position:"relative",overflow:"hidden",display:"block"};return this.isClickable&&(e.cursor="pointer"),e}};var Et=class t{constructor(e){this.engagementTrigger=e;this.triggerContext=new Dr(new Date,this.engagementTrigger)}static currentEngagements=new Set;static engagementIDsWithTrackedDisplay=new Set;static DEBOUNCE_TIME=1e3;rootContainer;widgetElement;widget;triggerContext;observers=[];renderedCount=0;scrollSubscription;variation;isExclusionWithBVariation;isRendering=!1;renderSilently(){this.render().catch(e=>{ae(e,"render-widget",{triggerContext:this.triggerContext})})}destroy(){b.verbose(`${this.engagementTrigger} will be destroyed`),this.preDestroy(),this.removeFromRendered(),this.rootContainer?.remove(),t.engagementIDsWithTrackedDisplay.delete(this.engagementTrigger.shortID),Ip(this.engagementTrigger.content?.afterDeleteJS)}async render(){if(this.isRendering){b.verbose(`${this.engagementTrigger} rendering already in progress, skipping`);return}this.isRendering=!0;try{if(this.engagementTrigger.shouldGetVariationImmediately()){let e=await this.getVariation();this.handleVariationResponse(e)}if(this.rootContainer=await this.getWidgetContainer(!0),!this.rootContainer){b.warn(`${this.engagementTrigger} no section found to render the widget`);return}this.afterRootContainerCreated(),this.widget=this.engagementTrigger.widget,await this.getVariationIfRequired(),await this.runChoresBeforeRender(),this.attachScroll(),await this.checkAndSendEvent(),this.triggerContext.renderer=this,Ip(this.engagementTrigger.content?.afterRenderJS)}finally{this.isRendering=!1}}matches(e){return this.engagementTrigger.shortID===e.shortID}async updateAndReRender(e){b.info(`${this.engagementTrigger} will be updated`),this.updateItems(e.items,this.engagementTrigger.items),await this.update(e),await this.render()}async update(e){}rerender(){this.rootContainer?.isConnected||(b.info(`${this.engagementTrigger} deleted. Will be re-rendered`),this.preDestroy(),this.renderSilently())}preDestroy(){this.scrollSubscription?.unsubscribe(),this.observers.forEach(e=>{e?.disconnect&&e.disconnect()})}afterRootContainerCreated(){}isAllOkToRender(){return!!this.widget}async getVariationIfRequired(){if(this.engagementTrigger.shouldSkipVariation()){b.verbose(`${this.engagementTrigger} already has necessary data to render`);return}let e=await this.observeWidgetContainerInViewport();this.handleVariationResponse(e)}handleVariationResponse(e){e&&(b.log(`${this.engagementTrigger} visitor has been assigned to variation ${e.variation}`),e.items?.length&&(this.engagementTrigger.items=e.items.map(r=>new Ct(r)),this.engagementTrigger.nonMutableItems=e.items.map(r=>new Ct(r))),e.bundleFrom&&(this.engagementTrigger.bundleFrom=new Ct(e.bundleFrom)),e.discount&&(this.engagementTrigger.discount=e.discount),e.placement&&(this.triggerContext.triggerData.placement=e.placement),e.props&&er.hasKeys(e.props)&&(this.engagementTrigger.props=_(_({},this.engagementTrigger.props),e.props)),e.content&&(this.triggerContext.triggerData.content=new ls(e.content)),this.triggerContext.triggerData.widget=this.widget=new ni(e.widget),this.triggerContext.triggerData.contentID=e.contentID,this.triggerContext.triggerData.variation=this.variation=e.variation,this.triggerContext.triggerData.placement=e.placement,this.triggerContext.triggerData.manipulation=e.manipulation,this.triggerContext.triggerData.entryAnimation=e.entryAnimation??"NONE",this.isExclusionWithBVariation=this.engagementTrigger.isExclusionTesting()&&this.variation==="b",this.isExclusionWithBVariation&&(this.rootContainer.style.height="0.5px"))}addToRendered(){this.renderedCount++,b.info(`${this.engagementTrigger} rendered \u2705 ${$h(this.renderedCount)} time`)}removeFromRendered(){this instanceof ht?ht.currentEngagements.delete(this):t.currentEngagements.delete(this)}async getVariation(){b.log(`${this.engagementTrigger} get variation`);let e={engagementID:this.engagementTrigger.engagementID,isPreview:this.engagementTrigger.id==="preview"};try{return(await dv(e)).data}catch(r){if(r instanceof yr&&r.response?.status===400)return;ae(r,"get-variation",{engagementTrigger:this.engagementTrigger});return}}async observeWidgetContainerInViewport(){if(!this.rootContainer){b.warn(`${this.engagementTrigger} No root container found to watch for viewport`);return}let e=window.innerHeight*.3,r={root:null,rootMargin:`${e}px 0px ${e}px 0px`,threshold:0};return this.isInViewport()?this.getVariation():new Promise(n=>{let o=new IntersectionObserver((i,s)=>{i.forEach(async a=>{if(a.isIntersecting){b.log(`${this.engagementTrigger} root container is near the viewport. Fetching variation`);let c=await this.getVariation();n(c),s.unobserve(this.rootContainer)}})},r);o.observe(this.rootContainer),this.observers.push(o)})}attachScroll(){this.scrollSubscription=mo(window,"scroll").pipe(Ir(t.DEBOUNCE_TIME)).subscribe(()=>{this.checkAndSendEvent()})}async checkAndSendEvent(){let e=this.engagementTrigger.shortID;if(t.engagementIDsWithTrackedDisplay.has(e)||!this.isInViewport())return;let n={};this.triggerContext.triggerData.items?.length&&(n.promotedMIDs=this.engagementTrigger.items?.map(s=>s.mID));let o=this.isExclusionWithBVariation?"CE Campaign Holdout":"CE Trigger Displayed",i=new Se(o,n,this.engagementTrigger);i.name==="CE Campaign Holdout"&&(i.trigger.holdout=!0),Bt(i),t.engagementIDsWithTrackedDisplay.add(e),this.scrollSubscription.unsubscribe()}generateParentElementID(){return`letscooee-${this.engagementTrigger.shortID}`}createAngularWidget(e){let r=this.widgetElement=document.createElement(e);return r.cart=he.getCurrent(),r.triggerContext=this.triggerContext,r.engagementTrigger=this.engagementTrigger,r.setAttribute("engagement",this.engagementTrigger.shortID),this.rootContainer.appendChild(r),this.addToRendered(),r}getParentElement(e,r=document){let n=r.getElementById(e);if(n)return n;let o=this.engagementTrigger.objective.toLowerCase().replaceAll("_","-"),i=this.engagementTrigger.shortID;return n=document.createElement("div"),n.id=e,n.className=`letscooee letscooee-engagement engagement-${i} lc-${o}`,n.dataset.engagementId=i,this.engagementTrigger.id==="preview"&&(n.className+=" letscooee-preview"),n.style.display="block",n.style.minHeight="0.5px",n.style.minWidth="0.5px",n}startRendering(){let e=this.rootContainer;this.triggerContext.triggerData.hasSwiperElement()&&(e=this.rootContainer?.shadowRoot||this.rootContainer?.attachShadow({mode:"open"}),xp(e)),ng(Vf(Gs,{element:this.widget.cont,triggerContext:this.triggerContext,elements:this.widget.elems}),e),this.addToRendered()}isInViewport(){let e=this.rootContainer?.getBoundingClientRect();if(!e)return!1;let r=window.innerHeight||document.documentElement.clientHeight,o=(Math.min(e.bottom,r)-Math.max(e.top,0))*e.width,i=e.width*e.height,s=o/i*100;return this.engagementTrigger.isAnySplit()?s>0:s>=30}async getWidgetContainer(e){if(this.rootContainer?.isConnected)return this.rootContainer;let r=await this.createParentElementWithPlacement(e);if(r)return r;let n=`.letscooee[data-engagement-id="${this.triggerContext.triggerData.shortID}"]`;return document.querySelector(n)}async createParentElementWithPlacement(e){let r=this.engagementTrigger.placement;if(!r?.selector)return b.info(`\u26A0\uFE0F${this.engagementTrigger} does not have a selector`),null;let n=r.selector,o;if(n.includes(":shadow")){let c=n.split(":shadow");o=(await Ho(c[0].trim()))?.shadowRoot,n=c[1].trim(),o&&xp(o,!1)}b.verbose(`${this.engagementTrigger} attempt to render ${r.position} "${n}"`);let i=await Ho(n,10,o??document);if(!i)return b.warn(`${this.engagementTrigger} no placement found with ${n}`),null;let s=this.generateParentElementID(),a=this.getParentElement(s);if(!e)return a;switch(r.position){case Io.BEFORE:{i.parentElement?.insertBefore(a,i);break}case Io.INSIDE_FIRST:{i.insertBefore(a,i.firstChild);break}case Io.INSIDE_LAST:{i.appendChild(a);break}case Io.AFTER:default:i.parentElement?.insertBefore(a,i.nextSibling)}return a}async runChoresBeforeRender(){if(this.isExclusionWithBVariation)return;if(!this.isAllOkToRender()){b.info(`\u26A0\uFE0F ${this.engagementTrigger} could not be rendered`);return}b.verbose(`${this.engagementTrigger} will be rendered`);let e;try{e=await Ol(this.engagementTrigger)}catch(r){b.info(`\u203C\uFE0F${this.engagementTrigger} could not render as items failed to refresh`,r);return}if(!this.engagementTrigger.isCollectionPromoted()&&!e?.length&&this.engagementTrigger.isProductPromoted()){b.info(`\u203C\uFE0F${this.engagementTrigger} could not render as no products promoted`);return}this.engagementTrigger.items=e,this.startRendering()}updateItems(e,r){let n=this.getItemDiff(e,r),o=this.getItemDiff(r,e);r.push(...n);for(let i of o)Zr.remove(r,i)}getItemDiff(e,r){return e.filter(n=>!r.some(o=>o.selectedOrFirstVariant.value.mID===n.selectedOrFirstVariant.value.mID))}};var ht=class extends Et{static currentEngagements=new Set;constructor(e){super(e)}observeWidgetContainerInViewport(){return this.getVariation()}generateParentElementID(){let e=super.generateParentElementID();return this.engagementTrigger.isSubscriptionUpsell()&&(e+=`-${this.engagementTrigger.items[0].selectedOrFirstVariant.value.mID}`),e}async checkAndSendEvent(){if(!et.get().isOpen()&&ye().pageName!=="cart"){b.log("Do not send display event as neither the cart drawer nor the cart page is open.");return}return super.checkAndSendEvent()}};var vT=t=>t,hv=t=>t.filter(e=>e.removedNodes&&e.removedNodes.length>0);function gv(t,e={childList:!0,subtree:!0},r=500,n=vT){return dl(o=>{let i=new MutationObserver(s=>o(s));return i.observe(t,e),i},(o,i)=>i.disconnect()).pipe(dn(o=>n(o)),em(o=>o.length>0),Ir(r))}var Ll=class t{constructor(e,r){this.engagementTrigger=e;this.element=r;this.cartItems=he.getCurrent().items}cartItems;static renderCartUpsell(e){let r=e.placement;if(!r?.selector){b.warn(`No placement available for ${e.objective}`,e.shortID);return}let n=Array.from(document.querySelectorAll(r.selector));if(!n?.length){b.warn(`No placement found for ${e.objective}`,e.shortID);return}for(let o of n)new t(e,o).render()}render(){let e=this.findCartItemFromHTMLElement();if(!e||this.engagementTrigger.skipSubscribedItems&&e.selling_plan_allocation)return;let r=this.engagementTrigger.items.find(m=>m.mID===e.product_id.toString());if(!r)return;let n=r.vars.find(m=>m.mID===e.id.toString());if(!n)return;let o=new Fr(n),i=e.selling_plan_allocation?.selling_plan;if(i)for(let m of o.sellingPlans??[])m.mID===i.id.toString()&&(m.isSelected=!0,o.changeSellingPlan(m));let s=new Ct(r);s.vars=[o],s.selectedOrFirstVariant.value=o;let a=`lc-cart-item-${this.engagementTrigger.shortID}-${r.mID}`;this.element.classList.add(a);let c=new Tt(this.engagementTrigger);c.placement.selector=`.${a}`,c.items=[s];let f=new ht(c);f.renderSilently(),this.watchForCartItemDeletion(f,a)}watchForCartItemDeletion(e,r){let n=new MutationObserver(o=>{o.forEach(i=>{i.removedNodes.forEach(s=>{s===this.element&&(b.verbose(`${r} has been removed`),e.destroy(),n.disconnect())})})});n.observe(this.element.parentElement,{childList:!0,subtree:!0})}findCartItemFromHTMLElement(){let e=this.element.innerHTML;return this.cartItems.find(r=>{if(!(e.includes(r.url)||e.includes(r.variant_id))&&(!e.includes(r.product_title)||r.variant_title&&!e.includes(r.variant_title)))return!1;let n=r.selling_plan_allocation?.selling_plan?.name;return!(n&&!e.includes(n))})}};var Ml=class extends ht{ctaExecutor=new Fn;constructor(e){super(e)}async update(e){await super.update(e),this.engagementTrigger.progressBarConfig.update(e.progressBarConfig),await this.checkMilestoneTryCatch(),this.widgetElement.update()}isAllOkToRender(){return!!this.engagementTrigger.progressBarConfig}startRendering(){if(this.widgetElement?.isConnected){this.widgetElement.update(),this.addToRendered();return}this.createAngularWidget("cooee-progressbar"),this.checkMilestoneTryCatch()}async checkMilestoneTryCatch(){try{await this.checkMilestone()}catch(e){ae(e,"apply-milestones",{engagementTrigger:this.engagementTrigger})}}async checkMilestone(){let e=await he.getCurrent().getNormalisedCart(),r=this.engagementTrigger.progressBarConfig,n,o=[],i=[],s=[],a,c,f=[...r.milestones];for(let p of f){if(p.rewardType!==cu.FREE_AUTO_GIFT)continue;if(p.isUIOnly&&!p.allowATC){b.verbose(`Skipping milestone ${p.label} as it is UI only and does not allow ATC`);continue}let E=p.items[0],y=p.reached,I=e.items.find(A=>(A.vID===E.vID||A.mID===E.mID)&&A.properties._letscooee_campaign===this.engagementTrigger.shortID);y&&(a=p,c=I),I&&o.push(I),!y&&I&&r.removeIneligibleItem?(b.verbose(`Removing free gift ${I.vID} from cart`),s.push(I)):y&&!I&&(b.verbose(`Adding free gift ${E.vID} to cart`),i.push(E))}r.restrictToLatestFreebie&&a&&(c?(o=o.filter(p=>p.vID!==c.vID),i=[]):i=[a.items[0]],s.push(...o)),s.length&&await this.removeFreeGifts(s),i.length&&(n=await this.ctaExecutor.addToCart(i,this.engagementTrigger));let m=r.coupons;if(m?.length)try{await Yr.applyWithStorefront(m.map(p=>p.couponCode)),et.get().refreshUI(n,!1)}catch(p){ae(p,"cart-apply-discount",{extra:{coupons:m},engagementTrigger:this.engagementTrigger})}}async removeFreeGifts(e){await Promise.all(e.map(r=>this.ctaExecutor.updateLineItem(r,{quantity:0})))}};var zs=class extends ht{constructor(e){super(e)}async update(e){await super.update(e),this.engagementTrigger.content.update(e.content),this.widgetElement.update()}isAllOkToRender(){return!!this.engagementTrigger.content}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}this.createAngularWidget("cooee-savings-bar")}};var Bl=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!!this.engagementTrigger.content?.videoConfig}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}let e,r=this.engagementTrigger.content.videoConfig;r.template==="FLOATING_POPUP"?e="cooee-video-popup":r.template==="STORY"?e="cooee-video-stories":e="cooee-video-playlist",this.createAngularWidget(e)}};var kl=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!0}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}this.createAngularWidget("cooee-sticky-atc")}};var Ul=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!0}startRendering(){let e=this.getParentElement(`inner-letscooee-${this.engagementTrigger.shortID}`);this.rootContainer.appendChild(e),document.addEventListener("letscooee:inbound:cta:add-bundle",this.inboundCTAListener.bind(this),!1)}async inboundCTAListener(e){let r=this.engagementTrigger,n=`Engagement(id: ${r.engagementID}, shortID: ${r.shortID})`,o=e.detail;if(!er.hasKeys(o)){b.error(`No detail received for ${n}`);return}b.log("Detail received for BYOB",o);let i=o.campaignID??o.campaignId??o.campaign_id;if(i!==r.shortID&&i!==r.engagementID){b.warn(`Current ${n} is not BYOB. Received: ${i}`);return}let s=o.items;if(!s?.length)return;let a=s.map(c=>new At({mID:c.product_id,vID:c.variant_id,quantity:c.quantity||1}));await new gn(this.triggerContext).execute({embeddedItems:a,clickAction:{at:be.ADD_BUNDLE,applyDiscount:!0}})}};var um=!1,fm=!1,Fl=null,Hl=null;gv(document.body,{childList:!0,subtree:!0},500,hv).subscribe(()=>{Et.currentEngagements.forEach(t=>t.rerender()),ht.currentEngagements.forEach(t=>t.rerender())});function pm(t){if(um){b.verbose("Cart widget processing in progress, queuing latest triggers"),Fl=t;return}um=!0;try{ET(t)}finally{if(um=!1,Fl){let e=Fl;Fl=null,b.verbose("Processing queued cart triggers"),pm(e)}}}function mm(t){if(fm){b.verbose("Page widget processing in progress, queuing latest triggers"),Hl=t;return}fm=!0;try{_T(t)}finally{if(fm=!1,Hl){let e=Hl;Hl=null,b.verbose("Processing queued page triggers"),mm(e)}}}function ET(t){vv(ht.currentEngagements,t);for(let e of t){b.info(`${e} received as cart embed`);let r=yv(ht.currentEngagements,e);if(r&&!e.isSubscriptionUpsell()){r.updateAndReRender(e).catch(o=>{ae(o,"update-and-re-render",{engagementTrigger:e})});continue}b.verbose(`${e} is new`);let n;if(e.isProgressBar())n=new Ml(e);else if(e.isSubscriptionUpsell()){Ll.renderCartUpsell(e);continue}else e.isSavingsBar()?n=new zs(e):n=new ht(e);ht.currentEngagements.add(n),n.renderSilently()}}function _T(t){vv(Et.currentEngagements,t);for(let e of t){b.info(`${e} received as page embed`);let r=yv(Et.currentEngagements,e);if(r){r.updateAndReRender(e).catch(o=>{ae(o,"update-and-re-render",{engagementTrigger:e})});continue}b.verbose(`${e} is new`);let n;e.isShoppableVideo()?n=new Bl(e):e.isBYOB()?n=new Ul(e):e.isStickyATC()?n=new kl(e):e.isSavingsBar()?n=new zs(e):n=new Et(e),Et.currentEngagements.add(n),n.renderSilently()}}function yv(t,e){for(let r of t)if(r.matches(e))return r}function vv(t,e){let r=new Set(e.map(n=>n.shortID));for(let n of t)r.has(n.engagementTrigger.shortID)||n.destroy()}var _v=new Kt,Ev=0;_v.pipe(Ir(50),tm(t=>Qp(Promise.all([bT().catch(e=>{ae(e,"load-page-widgets",{extra:{firstLoad:t}})}),wT().catch(e=>{ae(e,"load-cart-widgets",{extra:{firstLoad:t}})})])))).subscribe();function Ci(t=!1){zr(xr).then(()=>{_v.next(t)})}function bv(){ht.currentEngagements.forEach(t=>t.rerender())}async function dv(t){let e=await hn();return Object.assign(t,e),fr("/v1/engagement/get-variant",t)}async function bT(){Ev++,Ev===1?b.info("Fetch page widgets (after \u23F0",To()+" of SDK load)"):b.info("Fetch page widgets");let t=await hn(),e=_({},t);fr("/v1/engagement/page-widgets",e).then(r=>{b.info(`Page widgets loaded in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.widgets.map(o=>new Tt(o));mm(n)}).catch(r=>{b.error("Error sending widget getter",r)})}async function wT(){b.info("Fetch cart widgets");let t=await hn(),e=_({},t);fr("/v1/engagement/cart-widgets",e).then(r=>{b.info(`Cart widgets loaded in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.widgets.map(o=>new Tt(o));pm(n)}).catch(r=>{b.error("Error sending widget getter",r)})}var $l=class{static processConfiguration(){let e=Ye.get();!e.gaMeasurementID||!e.gaEnabled||this.sendClientID()}static async sendClientID(){let e=await this.getClientID();e&&Vl({gaClientID:e})}static async getClientID(){let e=await ze.get("gacid"),r=await this.getClientIDViaGTag();if(e!==r)return await ze.set("gacid",r),r}static async getClientIDViaGTag(){let r=Ye.get().gaMeasurementID;if(!(!r||!window.gtag))return new Promise(n=>{window.gtag("get",r,"client_id",o=>{n(o)})})}};var Wl=class t{static INSTANCE;constructor(){this.init()}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}init(){Ps.get("conf",{}).then(e=>this.updateGlobalConfig(e)),window.CooeeSDK.cartChange$.subscribe(()=>{Ci()})}async processAppConfigurations(e){b.verbose("Received app configuration",e),e.currencyCount=e.currencies?.length;let r=this.updateGlobalConfig(e);Ps.set("conf",r).catch(n=>b.error(n)),$l.processConfiguration(),r.website&&(ry(r.website.commonJS),Tp(r.website.commonCSS)),window.CooeeSDK.cartDrawerToggle$.subscribe(async({open:n})=>{b.info("Cart drawer is now",n?"open":"closed"),n&&(bv(),await this.trackViewCartEvent())})}updateGlobalConfig(e){let r=Ce.globalRef.config.update(e);return et.forceUpdate(),b.verbose("App configurations",r),r}async trackViewCartEvent(){let e=await he.getCurrent().getNormalisedCart(),r={value:e.amount,currency:e.currency},n={items:e.items,amount:r,drawer:!0};dt(new Se("View Cart",n))}};var xr=new xs(1),wv="App ID or Shopify shop is not set",dm,Xr=class t{coreService=Wl.getInstance();userID="";deviceID="";appID="";shopifyShop="";constructor(){}static getInstance(){return dm||(dm=new t),dm}async populateAuthDataFromStorage(){await this.getOrSetDeviceIDSafe(),this.userID=await ze.get("id"),this.updateAPIClient()}isAuthenticated(){return!!this.deviceID}authenticate(e){if(b.verbose("Initialising SDK",e),Xy(navigator.userAgent)){b.info("This seems to be a bot. Disabling SDK");return}this.appID=e.appID,this.shopifyShop=e.shopifyShop,this.checkForNewSessionOnPageLoad().then(async()=>{xr.next(!0),xr.complete()}).catch(r=>{r?.message?.includes(wv)&&ae(r,"initiate-session",{extra:e}),b.error("Unable to initiate session",r)})}async storeAndPopulateAuthData(e){e&&(e.userID&&(this.userID=e.userID,await ze.set("id",e.userID)),e.deviceID&&(this.deviceID=e.deviceID,await ze.set("did",e.deviceID)),this.updateAPIClient())}async checkSessionAndGetContext(){return await this.checkForNewSessionUnsafe(!1),this.getContext()}async checkForNewSessionOnPageLoad(){await this.checkForNewSessionSafe(!0)}async getOrSetDeviceIDSafe(){await yl.request("gen_did",async()=>{let e=await ze.get("did");e||(e=new vt().toHexString(),await ze.set("did",e)),this.deviceID=e,b.info("Device ID:",this.deviceID)})}async getContext(){xt.set("lastUsedTime",new Date().getTime());let[e,r,n]=await Promise.all([xt.get("id",""),ze.get("sessionNumber",1),xt.get("landing",{})]);return ko({"cooee_session.number":r}),Ga("Visitor Session",{id:e,number:r,landing_page:n}),{sessionID:e,sessionNumber:r,landingPage:n}}async checkForNewSessionSafe(e){await this.checkForNewSessionUnsafe(e)}async checkForNewSessionUnsafe(e){let r=!1;if(await this.isNewSessionRequired()?(b.info("New session to be started"),await this.startNewSession(),e=!0,r=!0):await this.notSynced()&&(r=!0),e){let n=await this.getContext();b.info(`Session ID: ${n.sessionID} & number: ${n.sessionNumber}`),await this.validateSessionFromServer(Z(_({},n),{newSession:r})),await xt.set("synced",!0)}}async startNewSession(){b.verbose("Starting new session"),await xt.clear(),b.verbose("Cleared SessionStorage before starting new session");let e=new Date,r=new vt().toHexString();b.verbose("New session ID to be used",r);let n=await ze.get("sessionNumber",0)+1;await Promise.all([ze.set("sessionNumber",n),xt.set("id",r),xt.set("lastUsedTime",e.getTime()),xt.set("landing",Qs())])}async isNewSessionRequired(){if(!await xt.get("id"))return!0;let e=await xt.get("lastUsedTime",0);return e?(new Date().getTime()-e)/1e3>1800:!0}async notSynced(){return!await xt.get("synced",!1)}async getSessionValidateData(e){if(!this.appID&&!this.shopifyShop)throw new Error(wv);let r=await Zy(),n=qc();return Z(_(_({deviceID:this.deviceID,deviceProps:r,appID:this.appID,shopifyShop:this.shopifyShop},e),n),{sdk:Ys,ad:hl.getAdParams(),occurred:ST(ye().jsLoadTime),properties:{}})}async validateSessionFromServer(e){b.verbose("Validating session with server"),await this.populateFirstSeen();let r=await this.getSessionValidateData(e);try{let n=await fr("/v1/event/validate-session",r),o=n.data;b.info(`Auth finished in \u23F0 ${hr(n.timeTakenMs)}`),b.verbose("Validate session Response",o),await this.coreService.processAppConfigurations(o.appSettings),await this.storeAndPopulateAuthData(o)}catch(n){throw b.error(n),n}}async populateFirstSeen(){let e=await ze.get("firstSeen"),r=e?new Date(e):new Date;e||await ze.set("firstSeen",r.toISOString()),Tv(r),Ga("Visitor Info",{first_seen:r.toISOString()})}updateAPIClient(){this.userID&&b.info("User ID:",this.userID),Ti.trackDeviceID(this.deviceID),Sv(this.deviceID),Ga("Visitor Info",{device_id:this.deviceID,user_id:this.userID}),Mh({id:this.deviceID})}};function ST(t){return(new Date().getTime()-t.getTime())/1e3>1800?new Date:t}var TT="keepalive"in new Request(""),Jr=new Headers;RT();async function hn(){let[t]=await Promise.all([Xr.getInstance().checkSessionAndGetContext()]);return _(_({},qc()),t)}function Ii(t){zr(xr).then(()=>IT(t??{}))}function IT(t){Iv("/v1/user/update",t).then(async e=>{b.verbose("Updated user profile"),await Xr.getInstance().storeAndPopulateAuthData(e.data)}).catch(e=>{b.error("Error saving user profile",e)})}function mv(t){return fr("/v1/event/generate-discount",t)}function Vl(t){zr(xr).then(()=>xT({props:t}))}function xT(t){Iv("/v1/device/update",t).then(()=>{b.verbose("Updated device properties")}).catch(async e=>{b.error("Error saving device property",e)})}function Sv(t){t&&Jr.set("cooee-device-id",t)}function Tv(t){t&&Jr.set("cooee-first-seen",t.toUTCString())}function fr(t,e){return xv("POST",t,e)}function Iv(t,e){return xv("PUT",t,e)}function xv(t,e,r){if(!as()&&!ye().flags?.allowEvents)return b.log(`Rejecting ${t} ${e} as this is not e-commerce app`),Promise.reject();e.startsWith("http")||(e=Wt.apiURL+e);let n=r?JSON.stringify(r):void 0;if(r&&!TT&&n?.includes("CE App Background"))try{return CT(e,Jr,r)}catch(i){throw ae(i,"http-request",{extra:{body:n}}),i}let o={method:t,headers:Jr,keepalive:!0};return r&&(o.body=n),rn(e,o)}function CT(t,e,r){return new Promise((n,o)=>{let i=new XMLHttpRequest;i.open("POST",t,!0),e.forEach((s,a)=>{i.setRequestHeader(a,s)}),i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE)if(i.status>=200&&i.status<300)try{if(i.getResponseHeader("Content-Type")?.includes("application/json")){let a=JSON.parse(i.responseText);n({data:a,headers:e,request:i,status:i.status,statusText:i.statusText})}else o(new Error("Content-Type of response header is not json"))}catch(s){o(s)}else o(new Error(`Received status - ${i.status}(${i.statusText})`))},i.onerror=()=>{o(new Error("Network error occurred during the request."))},i.send(JSON.stringify(r))})}function RT(){Jr.set("Content-Type","application/json; charset=utf-8"),Jr.set("cooee-sdk",Ys),Jr.set("cooee-sdk-code",Rm.toString()),Jr.set("cooee-sdk-version",Rr),Jr.set("cooee-shop-name",cc()??""),Wt.debug&&Jr.set("cooee-sdk-debug",String(1))}var jl=class{modifications=[];constructor(){}execute(e){for(let r of e){if(!r.experimentConfig)continue;this.executeExperiment(r)&&this.trackExperimentRan(r)}if(document.querySelector("#lc-hide-body")?.remove(),!document.body){xa("No body element found","error");return}this.setupMutationObserver()}executeExperiment(e){let r=e.experimentConfig?.modifications;return r?.length?r.some(n=>{if(!n.cssSelector)return b.verbose("No CSS Selector available",e?.toString()),!1;this.modifications.push(n);let o=Array.from(document.querySelectorAll(n.cssSelector));return o?.length?(this.executeSingleModification(n,o),!0):!1}):(b.log("Nothing to experiment",e.toString()),!0)}executeSingleModification(e,r){if(r?.length)for(let n of r)Object.assign(n.style,e.style),e.type==="TEXT"&&e.text?n.innerHTML=e.text:e.type==="IMAGE"&&this.updateImage(e,n)}trackExperimentRan(e){if(e.id==="preview"){b.warn("Skipping experiment attribution as its preview",e.toString());return}Cv({name:"CE Experiment Start",experiment:new Pn(e)}).catch(r=>{b.error("Fail to track experiment",r)})}setupMutationObserver(){new MutationObserver(r=>{r.forEach(n=>{n.addedNodes.forEach(o=>{o instanceof HTMLElement&&this.modifications.forEach(i=>{o.matches&&o.matches(i.cssSelector)?(b.verbose("Re-applying experiment",i.toString()),this.executeSingleModification(i,[o])):o.querySelectorAll&&(b.verbose("Re-applying experiment",i.toString()),this.executeSingleModification(i,Array.from(o.querySelectorAll(i.cssSelector))))})})})}).observe(document.body,{childList:!0,subtree:!0})}updateImage(e,r){let n=e.image?.lg?.src,o=e.image?.sm?.src;!n&&!o||(r instanceof HTMLPictureElement?this.updatePictureElement({desktop:n,mobile:o},r):this.updateImageElement({desktop:n,mobile:o},r))}updateImageElement(e,r){qr()&&e.mobile?(r.setAttribute("src",e.mobile),r.removeAttribute("srcset")):e.desktop&&(r.setAttribute("src",e.desktop),r.removeAttribute("srcset"))}updatePictureElement(e,r){if(r.innerHTML="",e.mobile){let o=document.createElement("source");o.srcset=e.mobile,o.media="(max-width: 767px)",r.append(o)}if(e.desktop){let o=document.createElement("source");o.srcset=e.desktop,o.media="(min-width: 768px)",r.append(o)}let n=document.createElement("img");n.src=e.desktop??e.mobile??"",r.append(n)}};async function Cv(t){let e=await hn(),r=_(_({},t),e);await fr("/v1/event/experiment",r)}function Gl(){DT().catch(t=>ae(t,"fetch-experiments"))}async function DT(){if(!ye().activeExperiments)return;Xr.getInstance().isAuthenticated()?await Rv():(await zr(xr),await Rv())}async function Rv(){b.info("Fetch experiments after \u23F0",To()+" of SDK load");let t=await hn(),e=_({},t);fr("/v1/engagement/experiments",e).then(async r=>{b.info(`Experiments fetched in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.experiments.map(o=>new Tt(o));new jl().execute(n)}).catch(r=>{b.error("Error sending experiment getter",r)})}var Dv=()=>{let t=window.ShopifyAnalytics?.meta??{},e=t.selectedVariantId;if(e)return e;if(t.product?.variants?.length>0)return t.product.variants[0].id};var zl=class{runtimeData=ye();meddle(){let e=Ce.globalRef;e.account=e.account??[],e.profile=e.profile??[],e.events=e.events??[],e.page=e.page??[],this.meddlePage(),this.meddleAccount(),this.meddleEvents(),this.meddleProfile(),this.exposeMethods()}exposeMethods(){let e=Ce.globalRef;e.loadWidgets=e.loadCartWidgets=e.loadPageWidgets=()=>{Ci()},e.loadExperiments=()=>{Gl()},e.testCartUpdate=this.testCartUpdate.bind(this),e.previewWidget=Ce.previewWidget.bind(Ce),e.previewPopup=Ce.previewPopup.bind(Ce),e.executeCTA=(r,n)=>{new gn(r).execute(n)},e.sendEvent=r=>{dt(r)}}overwritePush(e,r){Br(e,"push",r)}meddleAccount(){this.overwritePush(Ce.globalRef.account,(...e)=>{this.processAccount(e[0])}),Ce.globalRef.account.forEach(this.processAccount.bind(this))}meddleEvents(){this.overwritePush(Ce.globalRef.events,(...e)=>{this.processEvent(e[0])}),Ce.globalRef.events.forEach(this.processEvent.bind(this))}meddleProfile(){this.overwritePush(Ce.globalRef.profile,(...e)=>{this.processProfile(e[0])}),Ce.globalRef.profile.forEach(this.processProfile.bind(this))}processAccount(e){e&&(e.appID&&Ce.authenticate(e),e.flags&&(this.runtimeData.flags=e.flags))}processEvent(e){e&&(Om.includes(e[0])?Ce.sendEvent(e[0],e[1],_({occurred:this.runtimeData.jsLoadTime},e[2])):Ce.sendEvent(e[0],e[1],e[2]))}processProfile(e){e&&Ce.updateProfile(e)}processPageName(e){e&&Ce.setPageName(e)}meddlePage(){this.overwritePush(Ce.globalRef.page,(...e)=>{this.processPage(e[0])}),Ce.globalRef.page.forEach(this.processPage.bind(this))}processPage(e){e.currentItem&&AT(e.currentItem),e.currency&&(ye().currencyCode=e.currency),e.shopCurrency&&(this.runtimeData.shopCurrencyCode=e.shopCurrency),e.moneyFormat&&(this.runtimeData.moneyFormat=e.moneyFormat),e.jsLoad&&(this.runtimeData.jsLoadTime=e.jsLoad),e.locale&&(this.runtimeData.locale=e.locale),e.pageName&&Ce.setPageName(e.pageName),e.activeExperiment&&(this.runtimeData.activeExperiments=e.activeExperiment),e.cart&&he.getCurrent().update(e.cart),e.customContext&&(this.runtimeData.customContext=_(_({},this.runtimeData.customContext),e.customContext))}async testCartUpdate(){if(ye().pageName!=="product"){window.alert("This feature is only available on a product page");return}let e=Dv();if(e||(e=ye().currentItem?.vID),!e){window.alert("Could not find a variant to test. Please try a different product page");return}let r=new Tt({id:"preview",shortID:"1",redirectBehaviour:Zt.CART_DRAWER});await new gn(new Dr(new Date,r)).execute({clickAction:{at:be.ADD_TO_CART},embeddedItem:new At({vID:e})})}};function AT(t){let e=ye();if(e.currentItem&&e.currentItem.vID!==t.vID){let r=new CustomEvent("letscooee:variant-change",{detail:{variantID:t.vID}});document.dispatchEvent(r)}e.currentItem=new At(t)}var Ri=class{static SESSION_STORAGE=window.sessionStorage;static SESSION_STORAGE_KEY_PREFIX="cooee".concat("-");static getString(e,r){return this.getItem(e)||r}static setString(e,r){this.setItem(e,r)}static remove(e){this.removeItem(e)}static getItem(e){return this.SESSION_STORAGE.getItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e))}static setItem(e,r){this.SESSION_STORAGE.setItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e),r)}static removeItem(e){this.SESSION_STORAGE.removeItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e))}};var OT=1e3,NT=10,hm=0,gm=new Date;function ym(t){Ri.remove("sleid"),gm=t??new Date}function Av(){if(window.scrollY){let t=Pv();Ov(t)&&Nv(t)}Fo(()=>{PT()})}function PT(){mo(window,"scroll").pipe(Ir(OT),dn(()=>{let t=Pv();if(t>100){b.warn("Received scroll percent is more than 100",t);return}if(Ov(t))return t})).subscribe(t=>{Nv(t)})}function Ov(t){return Math.abs(hm-t)>=NT||hm!==t&&t===100}function Nv(t){if(t==null)return;let e={percent:t,timeMS:new Date().getTime()-gm.getTime()};hm=t;let r=Ri.getString("sleid",""),n=new Se("CE Scroll",e,null,r);dt(n),Ri.setString("sleid",n.id.toHexString()),gm=new Date(n.occurred)}function Pv(){let t=window.document.body.scrollHeight,e=window.innerHeight;return Math.ceil((window.scrollY+e)/t*100)}function Lv(){LT()}function LT(){let t=window.fetch;window.fetch=async function(e,r){try{await MT(e,r)}catch(n){ae(n,"modify-graphql-request",{extra:{body:JSON.stringify(r?.body)}})}return t(e,r)},b.verbose("Securely overwritten window.fetch method for graphql query")}async function MT(t,e){let r=typeof t=="string"?t:t instanceof Request?t.url:"";if(!(r.includes("graphql.json")&&e?.method==="POST")||!e.body)return;let n;if(typeof e.body=="string")try{n=JSON.parse(e.body)}catch{return}else n=e.body;n?.variables?.input&&(b.verbose("Intercepted fetch request of:",r),n?.query.includes("cartCreate")&&(e.body=await BT(n),kT()))}async function BT(t){let e=t.variables.input.attributes??[],r=await Ya("Buy Now");return t.variables.input.attributes=[...e,...r],JSON.stringify(t)}function kT(){let t=ye().currentItem;if(!t)return;let e=new Se("Buy Now Clicked",{items:[t]});dt(e)}var Di=class{constructor(e,r){this.selectors=e;this.eventName=r;this.selectorString=e.join(",")}static INSTANCE;elements;selectorString;clickListenerCallback=e=>{let r=e.currentTarget,n=new Se(this.eventName,{class:r.className||void 0,tagName:r.tagName||void 0,id:r.id||void 0});dt(n),this.removeClickListener(this.clickListenerCallback)};listenSilently(){this.listen().catch(e=>b.error(e))}async listen(){this.elements=await Mf(this.selectorString),this.elements.forEach(e=>{e.addEventListener("click",this.clickListenerCallback)})}removeClickListener(e){this.elements?.forEach(r=>{r.removeEventListener("click",e)})}};var ql=class t extends Di{static selectors=[".product__thumbnail-list-inner > button","product-gallery-navigation > button",".product-media--thumb-container",".product-images-inner > img",".m-product-media",".swiper-button-control",".media__thumb",".slick-arrow",".productView-img-container.product-single__media",".product-gallery__thumbnail_item_inner"];constructor(){super(t.selectors,"Item Thumbnail Clicked")}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}};var Yl=class t extends Di{static selectors=[".jdgm-widget.jdgm-preview-badge.jdgm-preview-badge--with-link.jdgm--done-setup","reviewsio-product-ratings",".ruk_rating_snippet.tracked:not(.hidden)","a > .loox-rating",".yotpo-reviews-star-ratings-widget",".yotpo.lp-hero__reviews",".pr-rating > a",".rivyoReviewWidget"];constructor(){super(t.selectors,"Review Clicked")}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}};var UT=[".gokwik-checkout button","button.cart__checkout-button","button.cart__checkout","button#checkout","button#checkout2",'button[id*="checkout" i]','button[name*="checkout" i]','button[class*="checkout" i]'].join(",");function Mv(){Fo(()=>{b.verbose("Execution order:","document ready"),FT()})}function FT(){let t=window.location.hash?.substring(1);if(t)if(t.includes("initiate-checkout")){document.dispatchEvent(new Event("letscooee:outbound:third-party-initiate-checkout"));let e=document.querySelector(UT);if(!e){b.verbose("No clickable cart checkout button found");return}b.verbose("Clickable cart checkout button found",e),e.click()}else t.includes("open-cart-drawer")&&et.get().open()}function kv(){window.addEventListener("kp-modal:opened",()=>{ye().isGoKwikPopupOpen=!0}),window.addEventListener("user-loggedin",t=>{let{token:e}=t.detail;e&&Ii({goKwikToken:e})}),window.gokwikSdk?Bv():window.addEventListener("gokwikLoaded",Bv)}function Bv(){window.gokwikSdk&&window.gokwikSdk.on("checkout_initiated",async()=>{let t=await he.getCurrent().getNormalisedCart(),e={via:"GoKwik",items:t.items,cartToken:t.token,amount:{value:t.amount,currency:t.currency}},r=new Se("Checkout Started",e);dt(r)})}var Kl=class{static watch(){let e=nu();(e==="1"||e==="on")&&Vl({debugTill:this.getDebugMillis()}),e==="on"?sessionStorage.cooeeDebug="1":e==="off"&&sessionStorage.removeItem("cooeeDebug"),sessionStorage.cooeeDebug&&this.renderDebugBar()}static renderDebugBar(){let e=document.createElement("cooee-debugger");e.logs=this.logs,Fo(()=>{document.body.appendChild(e)})}static getDebugMillis(){return new Date().getTime()+360*60*1e3}};var Ce=class{static globalRef;static authenticated;static async initForMerchantWebsiteOnly(e){if(window.cooeeSDKPreview)return;let r=(window.CooeeSDK?.pageLoadTime??e).getTime()-e.getTime();b.info(`Initialising SDK after ${hr(r)} of page load`),this.initGlobalReference(e),await Xr.getInstance().populateAuthDataFromStorage(),this.autoAuthenticate(),new zl().meddle(),Fm(),Ci(!0),Gl(),rv(),cv(),Lv(),Mv(),Av(),Yl.getInstance().listenSilently(),ql.getInstance().listenSilently(),kv(),HT(),Kl.watch()}static async initForAll(){this.injectWidgetAssets()}static initGlobalReference(e){window.CooeeSDK||Br(window,"CooeeSDK",{}),this.globalRef=window.CooeeSDK,Br(this.globalRef,"config",new Ye),Br(this.globalRef,"runtimeData",{sdkLoadTime:e,jsLoadTime:new Date,lastEnterActive:new Date}),Br(this.globalRef,"uaParser",new Sr,!0),Br(this.globalRef,"cart",he.getCurrent()),Br(this.globalRef,"cartChange$",av()),Br(this.globalRef,"cartDrawerToggle$",et.cartDrawerToggle$.asObservable()),b.verbose("Global reference initialised"),new Bc(()=>{this.globalRef.uaParser=new Sr})}static injectWidgetAssets(){ey(Wt.widgetURL,"cooee-widget-sdk"),Sp()}static autoAuthenticate(){let e=cc();e&&this.authenticate({shopifyShop:e})}static authenticate(e){if(this.authenticated)return;b.info("Begin auth after \u23F0",To(),"of SDK load");let r=e.appID?.trim(),n=e.shopifyShop;if((Pf(r)||r.length!==24)&&Pf(n)){b.warn("Cooee App ID or Shop name is not configured");return}this.authenticated=!0,Xr.getInstance().authenticate(e)}static sendEvent(e,r,n){let o=new Se(e,r,n?.triggerData);n?.occurred&&(o.occurred=n.occurred),dt(o)}static updateProfile(e){for(let r in e)if(r.toLowerCase().startsWith("ce "))throw new Error("User property name cannot start with 'CE '");Ii(e)}static setPageName(e){if(!e)return;let r=ye(),n=r.pageName;if(e===n)return;if(r.pageName=e,Dm.some(s=>e.includes(s))){ym();return}let o={};n&&(o.ps=n);let i=new Se("CE Screen View",o);i.occurred=r.jsLoadTime,dt(i),ym(i.occurred)}static previewPopup(e,r){new Hn(r).render(e)}static previewWidget(e){new Et(new Tt(e)).renderSilently()}};function HT(){if(window.opener){try{window.opener.postMessage({action:"COOEE_READY_FOR_PREVIEW"},"*")}catch(t){b.error(t)}window.addEventListener("message",t=>{if(b.verbose("Received event",t),!t.origin.includes("letscooee.com")&&!t.origin.includes("localhost"))return;let e=t.data;typeof e=="object"&&(e.action==="POPUP_PREVIEW"?(Ce.previewPopup(e.engagementTrigger),t.source?.postMessage({action:"PREVIEW_SUCCESSFUL"},t.origin)):e.action==="WIDGET_PREVIEW"&&(Ce.previewWidget(e.engagementTrigger),t.source?.postMessage({action:"PREVIEW_SUCCESSFUL"},t.origin)))})}}var $T=new Date;Pm();Lm();b.verbose("Execution order:","top");window.cooeeShopifyScriptLoaded||(window.cooeeShopifyScriptLoaded=!0,(async()=>(b.verbose("Execution order:","IIFE start"),await Ce.initForMerchantWebsiteOnly($T),await Ce.initForAll(),b.verbose("Execution order:","IIFE end")))());b.verbose("Execution order:","bottom");
67
+ `},navigation:{nextEl:t.querySelector(".swiper-button-next"),prevEl:t.querySelector(".swiper-button-prev")},autoplay:e.autoplay?.enabled?{delay:e.autoplay?.delay,disableOnInteraction:!1,pauseOnMouseEnter:!1}:!1,autoHeight:!0};e.marquee&&r.autoplay&&typeof r.autoplay=="object"&&(r.speed=e.speed,r.autoplay.pauseOnMouseEnter=!0,t.style.setProperty("--swiper-wrapper-transition-timing-function","linear"));let n=new window.CooeeSDK.Swiper(t,r);return t.style.setProperty("--swiper-navigation-size",`${e.navigation.size}px`),n}function Pl(t,e,r){let n={color:t.navigation.color?.rgba};return t.pagination.enabled&&(n.transform="translateY(-25%)"),K("div",{class:"swiper-container",ref:e,style:"max-width: 100%",children:[K("div",{class:"swiper-wrapper",children:r()}),t.navigation.enabled&&K("div",{class:"swiper-button-next",style:n,children:K("span",{})}),t.navigation.enabled&&K("div",{class:"swiper-button-prev",style:n,children:K("span",{})}),t.pagination.enabled&&K("div",{className:"swiper-pagination",style:{bottom:0,top:"unset",position:"relative",color:t.pagination.color?.rgba}})]})}var Us=class extends ke{componentDidMount(){St(()=>{this.setState(()=>({checked:this.props.item.selected.value}))})}render(){return K("div",{style:this.getCompiledStyles(),className:"lc-checkbox",children:K("input",{type:"checkbox",checked:this.state.checked,onChange:this.onChange.bind(this),style:{appearance:"auto"}})})}onChange(e){let{checked:r}=e.target;this.props.item.selected.value=r}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.textAlign=r.alignment,e.justifyContent=r.alignment,e}getComponentStyles(){return Z(_({},this.getTypoStyles()),{display:"flex"})}};var yn=class extends ke{constructor(e,r){super(e,r)}render(){let e=this.props.element[this.deviceTypeKey],r=e?.src||this.props.element.src||this.props.element.lg?.src;return K("img",{onClick:this.customOnClick.bind(this),className:"lc-image",alt:e?.name||"Image",onMouseEnter:this.handleMouseEnter.bind(this),onMouseLeave:this.handleMouseLeave.bind(this),src:r,style:this.getCompiledStyles()})}customOnClick(e){this.props.element.clc?.at===be.ADD_TO_CART&&this.props.triggerContext.triggerData.items[0]&&this.onClick(e,{item:this.props.triggerContext.triggerData.items[0]}),this.props.onClick&&this.props.onClick("image")}getComponentStyles(){let e=this.mediaStyle.lout;if(!e||e.pos!=="absolute")return{};let r={zIndex:e.zIndex,cursor:this.props.element.clc?.at?"pointer":"auto"};return this.mediaStyle.size?.w&&(r.width=this.mediaStyle.size.w),this.mediaStyle.size?.h&&(r.height=this.mediaStyle.size.h),r}handleMouseEnter(e){let r=this.props.element[this.deviceTypeKey]?.secondarySrc;r&&(e.currentTarget.src=r)}handleMouseLeave(e){e.currentTarget.src=this.props.element[this.deviceTypeKey]?.src}};var vn=class extends ke{render(){if(!(this.props.element.hide||!this.matchWhenCondition(this.props.element.when)))return K("div",{style:this.getCompiledStyles(),class:"lc-flexbox",children:K($n,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext})})}getComponentStyles(){let e=this.mediaStyle.flex??new Zo,r={display:"flex",gap:e.gap+"px",flexWrap:e.wrap,flexDirection:e.dir,justifyContent:e.jc,alignItems:e.ai};return e.wrap==="nowrap"&&e.scroll&&(e.dir==="column"?r["overflow-y"]="auto":r["overflow-x"]="auto"),r}};var Fs=class extends vn{render(){if(!(this.props.element.hide||!this.matchWhenCondition(this.props.element.when)))return K("div",{style:this.getCompiledStyles(),class:"lc-flexbox",children:K(xi,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext,item:this.props.item,noLinks:this.props.noLinks})})}};var Hs=class extends ke{render(){return K("select",{style:this.getCompiledStyles(),value:this.props.selectedVariant.selectedSellingPlan.value?.mID??"",onChange:this.onChange.bind(this),disabled:this.state.disabled,className:"lc-dropdown",children:this.createSelectItems()})}componentDidMount(){St(()=>{this.setState(()=>({disabled:this.props.triggerContext.triggerData.isBundle()?!this.props.item.selected.value:!1}))})}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.letterSpacing=r.letterSpacing,e.fontSize=r.fs+"px",e.lineHeight=r.lh,e.fontFamily="inherit",e.textAlign=r.alignment,e.fontWeight=r.fw,this.stylesConverter.getColourStyles(r.tc,"color",e),e.boxShadow="none",e}getComponentStyles(){let e={};return this.props.selectedVariant.sellingPlans?.length||(e.visibility="hidden"),_(_({},e),this.getTypoStyles())}createSelectItems(){let e=[],r=this.props.selectedVariant;if(!r.sellingPlans?.length)return[];this.props.triggerContext.triggerData.skipSubscribedItems?r.selectedSellingPlan.value||(r.sellingPlans[0].isSelected=!0,r.changeSellingPlan(r.sellingPlans[0])):e.push(K("option",{value:"",selected:!r.selectedSellingPlan,children:"One time purchase"}));for(let n of r.sellingPlans??[])e.push(K("option",{value:n.mID,selected:n.isSelected,children:n.name}));return e}onChange(e){let r=e.target.value;r?this.props.selectedVariant.selectedSellingPlan.value=this.props.selectedVariant.sellingPlans.find(n=>n.mID===r):this.props.selectedVariant.selectedSellingPlan.value=void 0}};var yT=new RegExp('fill="#[a-zA-Z0-9]+"'),$s=class extends ke{constructor(){super()}render(){let e=this.getCompiledStyles(),r=this.getRating();return r||(e.display="none",r=""),K("div",{style:e,className:"lc-star-rating",dangerouslySetInnerHTML:{__html:r}})}getRating(){let e={size:this.props.element.iconSize,color:this.props.element.c.hex},r=Go(this.props.element.fullStar,{svg:e},this.props.triggerContext),n=Go(this.props.element.halfStart,{svg:e},this.props.triggerContext),o=this.props.review;if(!o?.rating)return"";let i="";if(this.props.element.showSingleStar)i=r;else{let s=5,a=`${o.rating}`.split(".");for(let c=0;c<+a[0];c++)i+=r,s--;a[1]&&(i+=n,s--);for(let c=0;c<s;c++)i+=r.replace(yT,'fill="#f1f1f1"')}return i}getComponentStyles(){return{display:"flex",alignItems:"center"}}};var Vs=class extends ke{render(){return K("select",{style:this.getCompiledStyles(),value:this.props.item.selectedOrFirstVariant.value.mID,onChange:this.onChange.bind(this),disabled:this.state.disabled,className:"lc-dropdown",children:this.createSelectItems()})}componentDidMount(){St(()=>{this.setState(()=>({disabled:this.props.triggerContext.triggerData.isBundle()?!this.props.item.selected.value:!1}))})}getTypoStyles(){let e={},r=this.mediaStyle.typo??new at;return e.letterSpacing=r.letterSpacing,e.fontSize=r.fs+"px",e.lineHeight=r.lh,e.fontFamily="inherit",e.textAlign=r.alignment,e.fontWeight=r.fw,this.stylesConverter.getColourStyles(r.tc,"color",e),e.boxShadow="none",e}getComponentStyles(){let e={};return this.props.item.vars?.length===1&&this.props.item.vars[0].name==="Default Title"&&(e.visibility="hidden"),_(_({},e),this.getTypoStyles())}createSelectItems(){let e=[];for(let r of this.props.item.vars)e.push(K("option",{value:r.mID,disabled:!r.isAvailable,children:r.name}));return e}onChange(e){let r=e.target.value,n=this.props.item.vars.find(o=>o.mID===r);this.props.item.setSelectedVariant(n)}};var xi=class extends ke{constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"}))}renderElement(e){if(!(e.hide||!this.matchWhenCondition(e.when))){if(e.t===4){let r=e;return r.l==="Star Rating"&&!this.props.item.reviews?.rating?void 0:K(Fs,{element:r,triggerContext:this.props.triggerContext,elements:r.elems,item:this.props.item,noLinks:this.props.noLinks})}if(e.t===6)return this.props.triggerContext.triggerData.isBundle()?K(Us,{element:e,item:this.props.item,triggerContext:this.props.triggerContext}):void 0;if(e.t===13){let r=e,n=this.props.item,o=n.variantImage??n.firstImageURL,i=n.variantSecondaryImage??n.secondaryImageURL;r.lg=r.sm={src:o,name:n.name,secondarySrc:i};let s=K(yn,{element:r,onClick:this.customOnClick.bind(this),triggerContext:this.props.triggerContext});return this.props.noLinks?s:K("a",{href:this.props.item.selectedOrFirstVariant.value.link,style:{display:"block"},children:s})}if(e.t===14)return this.renderProductTitle(e);if(e.t===15){let r=e;return this.props.triggerContext.triggerData.isCartEmbed()&&this.props.item.vars?.length===1&&this.props.item.vars[0].name==="Default Title"?void 0:r.showChips?K("cooee-product-options-picker",{item:this.props.item}):K(Vs,{element:r,item:this.props.item,triggerContext:this.props.triggerContext})}return e.t===16?K(Hs,{element:e,selectedVariant:this.props.item.selectedOrFirstVariant.value,item:this.props.item,triggerContext:this.props.triggerContext}):e.t===19?K($s,{element:e,triggerContext:this.props.triggerContext,review:this.props.item.reviews}):e.t===18||e.t===3?K(vo,{element:e,item:this.props.item,triggerContext:this.props.triggerContext}):K($n,{elements:[e],element:this.props.element,triggerContext:this.props.triggerContext})}}render(){return this.props.elements.map(e=>this.renderElement(e))}getComponentStyles(){return{}}renderProductTitle(e){let r=K(Xt,{element:e,onClick:this.customOnClick.bind(this),triggerContext:this.props.triggerContext});return this.props.noLinks?r:K("a",{href:this.props.item.selectedOrFirstVariant.value.link,style:{display:"block",textDecoration:this.state.decoration},onMouseEnter:this.onMouseEnter.bind(this),onMouseLeave:this.onMouseLeave.bind(this),children:r})}customOnClick(e){this.sendTriggerClicked([this.props.item.toEmbed()],{from:e})}onMouseEnter(){this.setState(()=>({decoration:"underline"}))}onMouseLeave(){this.setState(()=>({decoration:"unset"}))}};var Eo=class extends ke{productElement;constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"}))}render(){let e=Zn(this.props.element,this.getProductData(),this.props.triggerContext);if(this.productElement=new On(e),!(this.productElement.hide||!this.matchWhenCondition(this.productElement.when)))return K("div",{style:_({},this.getCompiledStyles()),class:"lc-single-product",children:K(xi,{element:this.productElement,elements:this.productElement.elems,triggerContext:this.props.triggerContext,item:this.props.item,noLinks:this.productElement.noLinks})})}getComponentStyles(){return{flexShrink:0}}getProductData(){if(!this.props.item)return{};let e=this.props.item,r=e.selectedOrFirstVariant.value,n=e.getTemplateVariables();n.product.quantity=this.props.triggerContext.hasManipulatedProductQuantity()?this.props.triggerContext.getManipulatedQuantity(this.props.item.quantity):this.props.item.quantity;let o=this.props.triggerContext.triggerData.discount?.type===Qt.BXGY;return!r.hasEffectivePrice()&&o&&(n.product=Z(_(_({},n.product),Lt("effective_price",r.effectivePrice.value)),{price:""})),n.variant.quantity=this.props.triggerContext.hasManipulatedProductQuantity()?this.props.triggerContext.getManipulatedQuantity(r.quantity):r.quantity,{product:n.product,variant:n.variant,svg:{color:"{{ svg.color }}",size:"{{ svg.size }}"}}}};var Ws=class extends ke{swiperRef=null;swiperInstance=null;configuration;gap;constructor(e,r){super(e,r),this.configuration=qr()?this.props.element.conf.sm:this.props.element.conf.lg,this.gap=(this.configuration.gap??15)+"px"}componentDidMount(){this.props.element.conf[this.deviceTypeKey].disp===2&&Mc().then(()=>{this.swiperInstance=Nl(this.swiperRef,this.props.element.conf[this.deviceTypeKey])})}componentWillUnmount(){this.swiperInstance&&this.swiperInstance.destroy()}render(){let e=this.props.triggerContext.triggerData.items;e.splice(this.configuration.maxItems??10);let r;if(this.configuration.disp===2){let n=i=>{this.swiperRef=i},o=()=>e?.map(i=>K("div",{class:"swiper-slide",children:this.getProductFragment(i)}));r=K("div",{style:Z(_({},this.getCompiledStyles()),{display:"block"}),class:"lc-product-swiper-list",children:Pl(this.configuration,n,o)})}else r=K("div",{style:this.getCompiledStyles(),class:"lc-product-list",children:e?.map((n,o)=>this.getProductFragment(n,o!==e.length-1))});return r}getComponentStyles(){let e=[0,2].includes(this.configuration.disp),r={display:e?"flex":"grid",justifyContent:"safe "+(this.mediaStyle.flex?.jc??"center"),gap:this.gap,flexDirection:this.mediaStyle.flex?.dir??"row"};if(r.flexDirection==="row"){if(e)r.maxWidth="100%",r.overflowY="auto";else if(this.configuration.disp===1){let n=this.props.triggerContext.triggerData,o=n.items.length,i;n.isBundle()?i=this.props.element.prod.symbol?.hide!==!0?o*2-1:o:i=this.props.element.conf[this.deviceTypeKey].maxInRow,r.gridTemplateColumns=`repeat(${i}, auto)`}}return r}getProductFragment(e,r=!1){return K(Ur,{children:[K(Eo,{element:this.props.element.prod,item:e,triggerContext:this.props.triggerContext}),this.props.triggerContext.triggerData.isBundle()&&r&&this.props.element.prod.symbol&&!this.props.element.prod.symbol.hide&&K("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:K(Xt,{element:this.props.element.prod.symbol,triggerContext:this.props.triggerContext})})]},e.mID)}};var js=class extends ke{swiperRef=null;swiperInstance=null;constructor(e,r){super(e,r)}componentDidMount(){Mc().then(()=>{this.swiperInstance=Nl(this.swiperRef,this.props.element.conf)})}componentWillUnmount(){this.swiperInstance&&this.swiperInstance.destroy()}render(){let e=this.props.element,r=o=>{this.swiperRef=o},n=()=>{let o=e.values?.map(a=>K("div",{class:"swiper-slide",onClick:c=>this.onClick(c,{clickAction:this.getClickAction(a)}),children:this.renderElement(a)}));if(!o?.length)return[];let i=e.conf,s=o.length;if(i.marquee&&s<=Number(i.maxInRow)){let a=Number(i.maxInRow)-s+1;for(let c=0;c<a;c++)o.push(o[c%s])}return o};return Pl(e.conf,r,n)}getComponentStyles(){return{}}renderElement(e){let r=this.valueAddedSlide(this.props.element.slide,e);switch(r?.t){case 1:return K(yn,{element:r,triggerContext:this.props.triggerContext});case 4:return K(vn,{elements:r.elems,element:r,triggerContext:this.props.triggerContext});default:b.warn("Unknown slide type for carousal")}}valueAddedSlide(e,r){let n=Zn(e,{form:r},this.props.triggerContext);return Yt.getParsedElement(n)}getClickAction(e){return Zn(this.props.element.clc??{},{form:e},this.props.triggerContext)}};var $n=class extends ke{constructor(e,r){super(e,r),this.setState(()=>({decoration:"unset"})),St(()=>{this.setState(()=>({showButton:!this.props.triggerContext.triggerData.isBundle()||!!this.props.triggerContext.selectedItems.length}))})}renderElement(e){if(!e.hide){if(e.t===4){let r=e;return K(vn,{element:r,triggerContext:this.props.triggerContext,elements:r.elems})}if(e.t===61)return K(ks,{element:e,triggerContext:this.props.triggerContext});if(e.t===3)return this.state.showButton?K(vo,{element:e,triggerContext:this.props.triggerContext}):void 0;if(e.t===2)return K(Xt,{element:e,triggerContext:this.props.triggerContext});if(e.t===1)return K(yn,{element:e,triggerContext:this.props.triggerContext});if(e.t===11)return K(Ws,{element:e,triggerContext:this.props.triggerContext});if(e.t===12)return K(Eo,{element:e,item:this.props.triggerContext.triggerData.items[0],triggerContext:this.props.triggerContext});if(e.t===62)return K(js,{element:e,triggerContext:this.props.triggerContext})}}render(){return this.props.elements.map(e=>this.renderElement(e))}getComponentStyles(){return{}}};var Gs=class extends ke{clickAction;isClickable;constructor(e,r){super(e,r),this.clickAction=this.props.element.clc,this.isClickable=this.clickAction?.at===be.GO_TO_URL&&!!Uo(this.clickAction.gu?.u)||this.clickAction?.at===be.OPEN_CART||this.clickAction?.at===be.INITIATE_CHECKOUT}componentDidMount(){St(()=>{let e=this.props.triggerContext.triggerData,r=this.props.triggerContext.selectedItems;e.calculateDiscountData(r,this.props.triggerContext.shouldGiveFBTDiscount)})}render(){return K(Ur,{children:[K("div",{style:this.getCompiledStyles(),class:"lc-container",onClick:e=>{this.onClick(e,{clickAction:this.clickAction})},children:K($n,{elements:this.props.elements,element:this.props.element,triggerContext:this.props.triggerContext})}),this.props.triggerContext.triggerData.id==="preview"&&K("div",{class:"letscooee-preview-badge",children:["#",this.props.triggerContext.triggerData.shortID," preview"]})]})}getComponentStyles(){let e={position:"relative",overflow:"hidden",display:"block"};return this.isClickable&&(e.cursor="pointer"),e}};var Et=class t{constructor(e){this.engagementTrigger=e;this.triggerContext=new Dr(new Date,this.engagementTrigger)}static currentEngagements=new Set;static engagementIDsWithTrackedDisplay=new Set;static DEBOUNCE_TIME=1e3;rootContainer;widgetElement;widget;triggerContext;observers=[];renderedCount=0;scrollSubscription;variation;isExclusionWithBVariation;isRendering=!1;renderSilently(){this.render().catch(e=>{ae(e,"render-widget",{triggerContext:this.triggerContext})})}destroy(){b.verbose(`${this.engagementTrigger} will be destroyed`),this.preDestroy(),this.removeFromRendered(),this.rootContainer?.remove(),t.engagementIDsWithTrackedDisplay.delete(this.engagementTrigger.shortID),Ip(this.engagementTrigger.content?.afterDeleteJS)}async render(){if(this.isRendering){b.verbose(`${this.engagementTrigger} rendering already in progress, skipping`);return}this.isRendering=!0;try{if(this.engagementTrigger.shouldGetVariationImmediately()){let e=await this.getVariation();this.handleVariationResponse(e)}if(this.rootContainer=await this.getWidgetContainer(!0),!this.rootContainer){b.warn(`${this.engagementTrigger} no section found to render the widget`);return}this.afterRootContainerCreated(),this.widget=this.engagementTrigger.widget,await this.getVariationIfRequired(),await this.runChoresBeforeRender(),this.attachScroll(),await this.checkAndSendEvent(),this.triggerContext.renderer=this,Ip(this.engagementTrigger.content?.afterRenderJS)}finally{this.isRendering=!1}}matches(e){return this.engagementTrigger.shortID===e.shortID}async updateAndReRender(e){b.info(`${this.engagementTrigger} will be updated`),this.updateItems(e.items,this.engagementTrigger.items),await this.update(e),await this.render()}async update(e){}rerender(){this.rootContainer?.isConnected||(b.info(`${this.engagementTrigger} deleted. Will be re-rendered`),this.preDestroy(),this.renderSilently())}preDestroy(){this.scrollSubscription?.unsubscribe(),this.observers.forEach(e=>{e?.disconnect&&e.disconnect()})}afterRootContainerCreated(){}isAllOkToRender(){return!!this.widget}async getVariationIfRequired(){if(this.engagementTrigger.shouldSkipVariation()){b.verbose(`${this.engagementTrigger} already has necessary data to render`);return}let e=await this.observeWidgetContainerInViewport();this.handleVariationResponse(e)}handleVariationResponse(e){e&&(b.log(`${this.engagementTrigger} visitor has been assigned to variation ${e.variation}`),e.items?.length&&(this.engagementTrigger.items=e.items.map(r=>new Ct(r)),this.engagementTrigger.nonMutableItems=e.items.map(r=>new Ct(r))),e.bundleFrom&&(this.engagementTrigger.bundleFrom=new Ct(e.bundleFrom)),e.discount&&(this.engagementTrigger.discount=e.discount),e.placement&&(this.triggerContext.triggerData.placement=e.placement),e.props&&er.hasKeys(e.props)&&(this.engagementTrigger.props=_(_({},this.engagementTrigger.props),e.props)),e.content&&(this.triggerContext.triggerData.content=new ls(e.content)),this.triggerContext.triggerData.widget=this.widget=new ni(e.widget),this.triggerContext.triggerData.contentID=e.contentID,this.triggerContext.triggerData.variation=this.variation=e.variation,this.triggerContext.triggerData.placement=e.placement,this.triggerContext.triggerData.manipulation=e.manipulation,this.triggerContext.triggerData.entryAnimation=e.entryAnimation??"NONE",this.isExclusionWithBVariation=this.engagementTrigger.isExclusionTesting()&&this.variation==="b",this.isExclusionWithBVariation&&(this.rootContainer.style.height="0.5px"))}addToRendered(){this.renderedCount++,b.info(`${this.engagementTrigger} rendered \u2705 ${$h(this.renderedCount)} time`)}removeFromRendered(){this instanceof ht?ht.currentEngagements.delete(this):t.currentEngagements.delete(this)}async getVariation(){b.log(`${this.engagementTrigger} get variation`);let e={engagementID:this.engagementTrigger.engagementID,isPreview:this.engagementTrigger.id==="preview"};try{return(await dv(e)).data}catch(r){if(r instanceof yr&&r.response?.status===400)return;ae(r,"get-variation",{engagementTrigger:this.engagementTrigger});return}}async observeWidgetContainerInViewport(){if(!this.rootContainer){b.warn(`${this.engagementTrigger} No root container found to watch for viewport`);return}let e=window.innerHeight*.3,r={root:null,rootMargin:`${e}px 0px ${e}px 0px`,threshold:0};return this.isInViewport()?this.getVariation():new Promise(n=>{let o=new IntersectionObserver((i,s)=>{i.forEach(async a=>{if(a.isIntersecting){b.log(`${this.engagementTrigger} root container is near the viewport. Fetching variation`);let c=await this.getVariation();n(c),s.unobserve(this.rootContainer)}})},r);o.observe(this.rootContainer),this.observers.push(o)})}attachScroll(){this.scrollSubscription=mo(window,"scroll").pipe(Ir(t.DEBOUNCE_TIME)).subscribe(()=>{this.checkAndSendEvent()})}async checkAndSendEvent(){let e=this.engagementTrigger.shortID;if(t.engagementIDsWithTrackedDisplay.has(e)||!this.isInViewport())return;let n={};this.triggerContext.triggerData.items?.length&&(n.promotedMIDs=this.engagementTrigger.items?.map(s=>s.mID));let o=this.isExclusionWithBVariation?"CE Campaign Holdout":"CE Trigger Displayed",i=new Se(o,n,this.engagementTrigger);i.name==="CE Campaign Holdout"&&(i.trigger.holdout=!0),Bt(i),t.engagementIDsWithTrackedDisplay.add(e),this.scrollSubscription.unsubscribe()}generateParentElementID(){return`letscooee-${this.engagementTrigger.shortID}`}createAngularWidget(e){let r=this.widgetElement=document.createElement(e);return r.cart=he.getCurrent(),r.triggerContext=this.triggerContext,r.engagementTrigger=this.engagementTrigger,r.setAttribute("engagement",this.engagementTrigger.shortID),this.rootContainer.appendChild(r),this.addToRendered(),r}getParentElement(e,r=document){let n=r.getElementById(e);if(n)return n;let o=this.engagementTrigger.objective.toLowerCase().replaceAll("_","-"),i=this.engagementTrigger.shortID;return n=document.createElement("div"),n.id=e,n.className=`letscooee letscooee-engagement engagement-${i} lc-${o}`,n.dataset.engagementId=i,this.engagementTrigger.id==="preview"&&(n.className+=" letscooee-preview"),n.style.display="block",n.style.minHeight="0.5px",n.style.minWidth="0.5px",n}startRendering(){let e=this.rootContainer;this.triggerContext.triggerData.hasSwiperElement()&&(e=this.rootContainer?.shadowRoot||this.rootContainer?.attachShadow({mode:"open"}),xp(e)),ng(Vf(Gs,{element:this.widget.cont,triggerContext:this.triggerContext,elements:this.widget.elems}),e),this.addToRendered()}isInViewport(){let e=this.rootContainer?.getBoundingClientRect();if(!e)return!1;let r=window.innerHeight||document.documentElement.clientHeight,o=(Math.min(e.bottom,r)-Math.max(e.top,0))*e.width,i=e.width*e.height,s=o/i*100;return this.engagementTrigger.isAnySplit()?s>0:s>=30}async getWidgetContainer(e){if(this.rootContainer?.isConnected)return this.rootContainer;let r=await this.createParentElementWithPlacement(e);if(r)return r;let n=`.letscooee[data-engagement-id="${this.triggerContext.triggerData.shortID}"]`;return document.querySelector(n)}async createParentElementWithPlacement(e){let r=this.engagementTrigger.placement;if(!r?.selector)return b.info(`\u26A0\uFE0F${this.engagementTrigger} does not have a selector`),null;let n=r.selector,o;if(n.includes(":shadow")){let c=n.split(":shadow");o=(await Ho(c[0].trim()))?.shadowRoot,n=c[1].trim(),o&&xp(o,!1)}b.verbose(`${this.engagementTrigger} attempt to render ${r.position} "${n}"`);let i=await Ho(n,10,o??document);if(!i)return b.warn(`${this.engagementTrigger} no placement found with ${n}`),null;let s=this.generateParentElementID(),a=this.getParentElement(s);if(!e)return a;switch(r.position){case Io.BEFORE:{i.parentElement?.insertBefore(a,i);break}case Io.INSIDE_FIRST:{i.insertBefore(a,i.firstChild);break}case Io.INSIDE_LAST:{i.appendChild(a);break}case Io.AFTER:default:i.parentElement?.insertBefore(a,i.nextSibling)}return a}async runChoresBeforeRender(){if(this.isExclusionWithBVariation)return;if(!this.isAllOkToRender()){b.info(`\u26A0\uFE0F ${this.engagementTrigger} could not be rendered`);return}b.verbose(`${this.engagementTrigger} will be rendered`);let e;try{e=await Ol(this.engagementTrigger)}catch(r){b.info(`\u203C\uFE0F${this.engagementTrigger} could not render as items failed to refresh`,r);return}if(!this.engagementTrigger.isCollectionPromoted()&&!e?.length&&this.engagementTrigger.isProductPromoted()){b.info(`\u203C\uFE0F${this.engagementTrigger} could not render as no products promoted`);return}this.engagementTrigger.items=e,this.startRendering()}updateItems(e,r){let n=this.getItemDiff(e,r),o=this.getItemDiff(r,e);r.push(...n);for(let i of o)Zr.remove(r,i)}getItemDiff(e,r){return e.filter(n=>!r.some(o=>o.selectedOrFirstVariant.value.mID===n.selectedOrFirstVariant.value.mID))}};var ht=class extends Et{static currentEngagements=new Set;constructor(e){super(e)}observeWidgetContainerInViewport(){return this.getVariation()}generateParentElementID(){let e=super.generateParentElementID();return this.engagementTrigger.isSubscriptionUpsell()&&(e+=`-${this.engagementTrigger.items[0].selectedOrFirstVariant.value.mID}`),e}async checkAndSendEvent(){if(!et.get().isOpen()&&ye().pageName!=="cart"){b.log("Do not send display event as neither the cart drawer nor the cart page is open.");return}return super.checkAndSendEvent()}};var vT=t=>t,hv=t=>t.filter(e=>e.removedNodes&&e.removedNodes.length>0);function gv(t,e={childList:!0,subtree:!0},r=500,n=vT){return dl(o=>{let i=new MutationObserver(s=>o(s));return i.observe(t,e),i},(o,i)=>i.disconnect()).pipe(dn(o=>n(o)),em(o=>o.length>0),Ir(r))}var Ll=class t{constructor(e,r){this.engagementTrigger=e;this.element=r;this.cartItems=he.getCurrent().items}cartItems;static renderCartUpsell(e){let r=e.placement;if(!r?.selector){b.warn(`No placement available for ${e.objective}`,e.shortID);return}let n=Array.from(document.querySelectorAll(r.selector));if(!n?.length){b.warn(`No placement found for ${e.objective}`,e.shortID);return}for(let o of n)new t(e,o).render()}render(){let e=this.findCartItemFromHTMLElement();if(!e||this.engagementTrigger.skipSubscribedItems&&e.selling_plan_allocation)return;let r=this.engagementTrigger.items.find(m=>m.mID===e.product_id.toString());if(!r)return;let n=r.vars.find(m=>m.mID===e.id.toString());if(!n)return;let o=new Fr(n),i=e.selling_plan_allocation?.selling_plan;if(i)for(let m of o.sellingPlans??[])m.mID===i.id.toString()&&(m.isSelected=!0,o.changeSellingPlan(m));let s=new Ct(r);s.vars=[o],s.selectedOrFirstVariant.value=o;let a=`lc-cart-item-${this.engagementTrigger.shortID}-${r.mID}`;this.element.classList.add(a);let c=new Tt(this.engagementTrigger);c.placement.selector=`.${a}`,c.items=[s];let f=new ht(c);f.renderSilently(),this.watchForCartItemDeletion(f,a)}watchForCartItemDeletion(e,r){let n=new MutationObserver(o=>{o.forEach(i=>{i.removedNodes.forEach(s=>{s===this.element&&(b.verbose(`${r} has been removed`),e.destroy(),n.disconnect())})})});n.observe(this.element.parentElement,{childList:!0,subtree:!0})}findCartItemFromHTMLElement(){let e=this.element.innerHTML;return this.cartItems.find(r=>{if(!(e.includes(r.url)||e.includes(r.variant_id))&&(!e.includes(r.product_title)||r.variant_title&&!e.includes(r.variant_title)))return!1;let n=r.selling_plan_allocation?.selling_plan?.name;return!(n&&!e.includes(n))})}};var Ml=class extends ht{ctaExecutor=new Fn;constructor(e){super(e)}async update(e){await super.update(e),this.engagementTrigger.progressBarConfig.update(e.progressBarConfig),await this.checkMilestoneTryCatch(),this.widgetElement.update()}isAllOkToRender(){return!!this.engagementTrigger.progressBarConfig}startRendering(){if(this.widgetElement?.isConnected){this.widgetElement.update(),this.addToRendered();return}this.createAngularWidget("cooee-progressbar"),this.checkMilestoneTryCatch()}async checkMilestoneTryCatch(){try{await this.checkMilestone()}catch(e){ae(e,"apply-milestones",{engagementTrigger:this.engagementTrigger})}}async checkMilestone(){let e=await he.getCurrent().getNormalisedCart(),r=this.engagementTrigger.progressBarConfig,n,o=[],i=[],s=[],a,c,f=[...r.milestones];for(let p of f){if(p.rewardType!==cu.FREE_AUTO_GIFT)continue;if(p.isUIOnly&&!p.allowATC){b.verbose(`Skipping milestone ${p.label} as it is UI only and does not allow ATC`);continue}let E=p.items[0],y=p.reached,I=e.items.find(A=>(A.vID===E.vID||A.mID===E.mID)&&A.properties._letscooee_campaign===this.engagementTrigger.shortID);y&&(a=p,c=I),I&&o.push(I),!y&&I&&r.removeIneligibleItem?(b.verbose(`Removing free gift ${I.vID} from cart`),s.push(I)):y&&!I&&(b.verbose(`Adding free gift ${E.vID} to cart`),i.push(E))}r.restrictToLatestFreebie&&a&&(c?(o=o.filter(p=>p.vID!==c.vID),i=[]):i=[a.items[0]],s.push(...o)),s.length&&await this.removeFreeGifts(s),i.length&&(n=await this.ctaExecutor.addToCart(i,this.engagementTrigger));let m=r.coupons;if(m?.length)try{await Yr.applyWithStorefront(m.map(p=>p.couponCode)),et.get().refreshUI(n,!1)}catch(p){ae(p,"cart-apply-discount",{extra:{coupons:m},engagementTrigger:this.engagementTrigger})}}async removeFreeGifts(e){await Promise.all(e.map(r=>this.ctaExecutor.updateLineItem(r,{quantity:0})))}};var zs=class extends ht{constructor(e){super(e)}async update(e){await super.update(e),this.engagementTrigger.content.update(e.content),this.widgetElement.update()}isAllOkToRender(){return!!this.engagementTrigger.content}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}this.createAngularWidget("cooee-savings-bar")}};var Bl=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!!this.engagementTrigger.content?.videoConfig}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}let e,r=this.engagementTrigger.content.videoConfig;r.template==="FLOATING_POPUP"?e="cooee-video-popup":r.template==="STORY"?e="cooee-video-stories":e="cooee-video-playlist",this.createAngularWidget(e)}};var kl=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!0}startRendering(){if(this.widgetElement?.isConnected){this.addToRendered();return}this.createAngularWidget("cooee-sticky-atc")}};var Ul=class extends Et{constructor(e){super(e)}isAllOkToRender(){return!0}startRendering(){let e=this.getParentElement(`inner-letscooee-${this.engagementTrigger.shortID}`);this.rootContainer.appendChild(e),document.addEventListener("letscooee:inbound:cta:add-bundle",this.inboundCTAListener.bind(this),!1)}async inboundCTAListener(e){let r=this.engagementTrigger,n=`Engagement(id: ${r.engagementID}, shortID: ${r.shortID})`,o=e.detail;if(!er.hasKeys(o)){b.error(`No detail received for ${n}`);return}b.log("Detail received for BYOB",o);let i=o.campaignID??o.campaignId??o.campaign_id;if(i!==r.shortID&&i!==r.engagementID){b.warn(`Current ${n} is not BYOB. Received: ${i}`);return}let s=o.items;if(!s?.length)return;let a=s.map(c=>new At({mID:c.product_id,vID:c.variant_id,quantity:c.quantity||1}));await new gn(this.triggerContext).execute({embeddedItems:a,clickAction:{at:be.ADD_BUNDLE,applyDiscount:!0}})}};var um=!1,fm=!1,Fl=null,Hl=null;gv(document.body,{childList:!0,subtree:!0},500,hv).subscribe(()=>{Et.currentEngagements.forEach(t=>t.rerender()),ht.currentEngagements.forEach(t=>t.rerender())});function pm(t){if(um){b.verbose("Cart widget processing in progress, queuing latest triggers"),Fl=t;return}um=!0;try{ET(t)}finally{if(um=!1,Fl){let e=Fl;Fl=null,b.verbose("Processing queued cart triggers"),pm(e)}}}function mm(t){if(fm){b.verbose("Page widget processing in progress, queuing latest triggers"),Hl=t;return}fm=!0;try{_T(t)}finally{if(fm=!1,Hl){let e=Hl;Hl=null,b.verbose("Processing queued page triggers"),mm(e)}}}function ET(t){vv(ht.currentEngagements,t);for(let e of t){b.info(`${e} received as cart embed`);let r=yv(ht.currentEngagements,e);if(r&&!e.isSubscriptionUpsell()){r.updateAndReRender(e).catch(o=>{ae(o,"update-and-re-render",{engagementTrigger:e})});continue}b.verbose(`${e} is new`);let n;if(e.isProgressBar())n=new Ml(e);else if(e.isSubscriptionUpsell()){Ll.renderCartUpsell(e);continue}else e.isSavingsBar()?n=new zs(e):n=new ht(e);ht.currentEngagements.add(n),n.renderSilently()}}function _T(t){vv(Et.currentEngagements,t);for(let e of t){b.info(`${e} received as page embed`);let r=yv(Et.currentEngagements,e);if(r){r.updateAndReRender(e).catch(o=>{ae(o,"update-and-re-render",{engagementTrigger:e})});continue}b.verbose(`${e} is new`);let n;e.isShoppableVideo()?n=new Bl(e):e.isBYOB()?n=new Ul(e):e.isStickyATC()?n=new kl(e):e.isSavingsBar()?n=new zs(e):n=new Et(e),Et.currentEngagements.add(n),n.renderSilently()}}function yv(t,e){for(let r of t)if(r.matches(e))return r}function vv(t,e){let r=new Set(e.map(n=>n.shortID));for(let n of t)r.has(n.engagementTrigger.shortID)||n.destroy()}var _v=new Kt,Ev=0;_v.pipe(Ir(50),tm(t=>Qp(Promise.all([bT().catch(e=>{ae(e,"load-page-widgets",{extra:{firstLoad:t}})}),wT().catch(e=>{ae(e,"load-cart-widgets",{extra:{firstLoad:t}})})])))).subscribe();function Ci(t=!1){zr(xr).then(()=>{_v.next(t)})}function bv(){ht.currentEngagements.forEach(t=>t.rerender())}async function dv(t){let e=await hn();return Object.assign(t,e),fr("/v1/engagement/get-variant",t)}async function bT(){Ev++,Ev===1?b.info("Fetch page widgets (after \u23F0",To()+" of SDK load)"):b.info("Fetch page widgets");let t=await hn(),e=_({},t);fr("/v1/engagement/page-widgets",e).then(r=>{b.info(`Page widgets loaded in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.widgets.map(o=>new Tt(o));mm(n)}).catch(r=>{b.error("Error sending widget getter",r)})}async function wT(){b.info("Fetch cart widgets");let t=await hn(),e=_({},t);fr("/v1/engagement/cart-widgets",e).then(r=>{b.info(`Cart widgets loaded in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.widgets.map(o=>new Tt(o));pm(n)}).catch(r=>{b.error("Error sending widget getter",r)})}var $l=class{static processConfiguration(){let e=Ye.get();!e.gaMeasurementID||!e.gaEnabled||this.sendClientID()}static async sendClientID(){let e=await this.getClientID();e&&Vl({gaClientID:e})}static async getClientID(){let e=await ze.get("gacid"),r=await this.getClientIDViaGTag();if(e!==r)return await ze.set("gacid",r),r}static async getClientIDViaGTag(){let r=Ye.get().gaMeasurementID;if(!(!r||!window.gtag))return new Promise(n=>{window.gtag("get",r,"client_id",o=>{n(o)})})}};var Wl=class t{static INSTANCE;constructor(){this.init()}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}init(){Ps.get("conf",{}).then(e=>this.updateGlobalConfig(e)),window.CooeeSDK.cartChange$.subscribe(()=>{Ci()})}async processAppConfigurations(e){b.verbose("Received app configuration",e),e.currencyCount=e.currencies?.length;let r=this.updateGlobalConfig(e);Ps.set("conf",r).catch(n=>b.error(n)),$l.processConfiguration(),r.website&&(ry(r.website.commonJS),Tp(r.website.commonCSS)),window.CooeeSDK.cartDrawerToggle$.subscribe(async({open:n})=>{b.info("Cart drawer is now",n?"open":"closed"),n&&(bv(),await this.trackViewCartEvent())})}updateGlobalConfig(e){let r=Ce.globalRef.config.update(e);return et.forceUpdate(),b.verbose("App configurations",r),r}async trackViewCartEvent(){let e=await he.getCurrent().getNormalisedCart(),r={value:e.amount,currency:e.currency},n={items:e.items,amount:r,drawer:!0};dt(new Se("View Cart",n))}};var xr=new xs(1),wv="App ID or Shopify shop is not set",dm,Xr=class t{coreService=Wl.getInstance();userID="";deviceID="";appID="";shopifyShop="";constructor(){}static getInstance(){return dm||(dm=new t),dm}async populateAuthDataFromStorage(){await this.getOrSetDeviceIDSafe(),this.userID=await ze.get("id"),this.updateAPIClient()}isAuthenticated(){return!!this.deviceID}authenticate(e){if(b.verbose("Initialising SDK",e),Xy(navigator.userAgent)){b.info("This seems to be a bot. Disabling SDK");return}this.appID=e.appID,this.shopifyShop=e.shopifyShop,this.checkForNewSessionOnPageLoad().then(async()=>{xr.next(!0),xr.complete()}).catch(r=>{r?.message?.includes(wv)&&ae(r,"initiate-session",{extra:e}),b.error("Unable to initiate session",r)})}async storeAndPopulateAuthData(e){e&&(e.userID&&(this.userID=e.userID,await ze.set("id",e.userID)),e.deviceID&&(this.deviceID=e.deviceID,await ze.set("did",e.deviceID)),this.updateAPIClient())}async checkSessionAndGetContext(){return await this.checkForNewSessionUnsafe(!1),this.getContext()}async checkForNewSessionOnPageLoad(){await this.checkForNewSessionSafe(!0)}async getOrSetDeviceIDSafe(){await yl.request("gen_did",async()=>{let e=await ze.get("did");e||(e=new vt().toHexString(),await ze.set("did",e)),this.deviceID=e,b.info("Device ID:",this.deviceID)})}async getContext(){xt.set("lastUsedTime",new Date().getTime());let[e,r,n]=await Promise.all([xt.get("id",""),ze.get("sessionNumber",1),xt.get("landing",{})]);return ko({"cooee_session.number":r}),Ga("Visitor Session",{id:e,number:r,landing_page:n}),{sessionID:e,sessionNumber:r,landingPage:n}}async checkForNewSessionSafe(e){await this.checkForNewSessionUnsafe(e)}async checkForNewSessionUnsafe(e){let r=!1;if(await this.isNewSessionRequired()?(b.info("New session to be started"),await this.startNewSession(),e=!0,r=!0):await this.notSynced()&&(r=!0),e){let n=await this.getContext();b.info(`Session ID: ${n.sessionID} & number: ${n.sessionNumber}`),await this.validateSessionFromServer(Z(_({},n),{newSession:r})),await xt.set("synced",!0)}}async startNewSession(){b.verbose("Starting new session"),await xt.clear(),b.verbose("Cleared SessionStorage before starting new session");let e=new Date,r=new vt().toHexString();b.verbose("New session ID to be used",r);let n=await ze.get("sessionNumber",0)+1;await Promise.all([ze.set("sessionNumber",n),xt.set("id",r),xt.set("lastUsedTime",e.getTime()),xt.set("landing",Qs())])}async isNewSessionRequired(){if(!await xt.get("id"))return!0;let e=await xt.get("lastUsedTime",0);return e?(new Date().getTime()-e)/1e3>1800:!0}async notSynced(){return!await xt.get("synced",!1)}async getSessionValidateData(e){if(!this.appID&&!this.shopifyShop)throw new Error(wv);let r=await Zy(),n=qc();return Z(_(_({deviceID:this.deviceID,deviceProps:r,appID:this.appID,shopifyShop:this.shopifyShop},e),n),{sdk:Ys,ad:hl.getAdParams(),occurred:ST(ye().jsLoadTime),properties:{}})}async validateSessionFromServer(e){b.verbose("Validating session with server"),await this.populateFirstSeen();let r=await this.getSessionValidateData(e);try{let n=await fr("/v1/event/validate-session",r),o=n.data;b.info(`Auth finished in \u23F0 ${hr(n.timeTakenMs)}`),b.verbose("Validate session Response",o),await this.coreService.processAppConfigurations(o.appSettings),await this.storeAndPopulateAuthData(o)}catch(n){throw b.error(n),n}}async populateFirstSeen(){let e=await ze.get("firstSeen"),r=e?new Date(e):new Date;e||await ze.set("firstSeen",r.toISOString()),Tv(r),Ga("Visitor Info",{first_seen:r.toISOString()})}updateAPIClient(){this.userID&&b.info("User ID:",this.userID),Ti.trackDeviceID(this.deviceID),Sv(this.deviceID),Ga("Visitor Info",{device_id:this.deviceID,user_id:this.userID}),Mh({id:this.deviceID})}};function ST(t){return(new Date().getTime()-t.getTime())/1e3>1800?new Date:t}var TT="keepalive"in new Request(""),Jr=new Headers;RT();async function hn(){let[t]=await Promise.all([Xr.getInstance().checkSessionAndGetContext()]);return _(_({},qc()),t)}function Ii(t){zr(xr).then(()=>IT(t??{}))}function IT(t){Iv("/v1/user/update",t).then(async e=>{b.verbose("Updated user profile"),await Xr.getInstance().storeAndPopulateAuthData(e.data)}).catch(e=>{b.error("Error saving user profile",e)})}function mv(t){return fr("/v1/event/generate-discount",t)}function Vl(t){zr(xr).then(()=>xT({props:t}))}function xT(t){Iv("/v1/device/update",t).then(()=>{b.verbose("Updated device properties")}).catch(async e=>{b.error("Error saving device property",e)})}function Sv(t){t&&Jr.set("cooee-device-id",t)}function Tv(t){t&&Jr.set("cooee-first-seen",t.toUTCString())}function fr(t,e){return xv("POST",t,e)}function Iv(t,e){return xv("PUT",t,e)}function xv(t,e,r){if(!as()&&!ye().flags?.allowEvents)return b.log(`Rejecting ${t} ${e} as this is not e-commerce app`),Promise.reject();e.startsWith("http")||(e=Wt.apiURL+e);let n=r?JSON.stringify(r):void 0;if(r&&!TT&&n?.includes("CE App Background"))try{return CT(e,Jr,r)}catch(i){throw ae(i,"http-request",{extra:{body:n}}),i}let o={method:t,headers:Jr,keepalive:!1};return r&&(o.body=n),rn(e,o)}function CT(t,e,r){return new Promise((n,o)=>{let i=new XMLHttpRequest;i.open("POST",t,!0),e.forEach((s,a)=>{i.setRequestHeader(a,s)}),i.onreadystatechange=()=>{if(i.readyState===XMLHttpRequest.DONE)if(i.status>=200&&i.status<300)try{if(i.getResponseHeader("Content-Type")?.includes("application/json")){let a=JSON.parse(i.responseText);n({data:a,headers:e,request:i,status:i.status,statusText:i.statusText})}else o(new Error("Content-Type of response header is not json"))}catch(s){o(s)}else o(new Error(`Received status - ${i.status}(${i.statusText})`))},i.onerror=()=>{o(new Error("Network error occurred during the request."))},i.send(JSON.stringify(r))})}function RT(){Jr.set("Content-Type","application/json; charset=utf-8"),Jr.set("cooee-sdk",Ys),Jr.set("cooee-sdk-code",Rm.toString()),Jr.set("cooee-sdk-version",Rr),Jr.set("cooee-shop-name",cc()??""),Wt.debug&&Jr.set("cooee-sdk-debug",String(1))}var jl=class{modifications=[];constructor(){}execute(e){for(let r of e){if(!r.experimentConfig)continue;this.executeExperiment(r)&&this.trackExperimentRan(r)}if(document.querySelector("#lc-hide-body")?.remove(),!document.body){xa("No body element found","error");return}this.setupMutationObserver()}executeExperiment(e){let r=e.experimentConfig?.modifications;return r?.length?r.some(n=>{if(!n.cssSelector)return b.verbose("No CSS Selector available",e?.toString()),!1;this.modifications.push(n);let o=Array.from(document.querySelectorAll(n.cssSelector));return o?.length?(this.executeSingleModification(n,o),!0):!1}):(b.log("Nothing to experiment",e.toString()),!0)}executeSingleModification(e,r){if(r?.length)for(let n of r)Object.assign(n.style,e.style),e.type==="TEXT"&&e.text?n.innerHTML=e.text:e.type==="IMAGE"&&this.updateImage(e,n)}trackExperimentRan(e){if(e.id==="preview"){b.warn("Skipping experiment attribution as its preview",e.toString());return}Cv({name:"CE Experiment Start",experiment:new Pn(e)}).catch(r=>{b.error("Fail to track experiment",r)})}setupMutationObserver(){new MutationObserver(r=>{r.forEach(n=>{n.addedNodes.forEach(o=>{o instanceof HTMLElement&&this.modifications.forEach(i=>{o.matches&&o.matches(i.cssSelector)?(b.verbose("Re-applying experiment",i.toString()),this.executeSingleModification(i,[o])):o.querySelectorAll&&(b.verbose("Re-applying experiment",i.toString()),this.executeSingleModification(i,Array.from(o.querySelectorAll(i.cssSelector))))})})})}).observe(document.body,{childList:!0,subtree:!0})}updateImage(e,r){let n=e.image?.lg?.src,o=e.image?.sm?.src;!n&&!o||(r instanceof HTMLPictureElement?this.updatePictureElement({desktop:n,mobile:o},r):this.updateImageElement({desktop:n,mobile:o},r))}updateImageElement(e,r){qr()&&e.mobile?(r.setAttribute("src",e.mobile),r.removeAttribute("srcset")):e.desktop&&(r.setAttribute("src",e.desktop),r.removeAttribute("srcset"))}updatePictureElement(e,r){if(r.innerHTML="",e.mobile){let o=document.createElement("source");o.srcset=e.mobile,o.media="(max-width: 767px)",r.append(o)}if(e.desktop){let o=document.createElement("source");o.srcset=e.desktop,o.media="(min-width: 768px)",r.append(o)}let n=document.createElement("img");n.src=e.desktop??e.mobile??"",r.append(n)}};async function Cv(t){let e=await hn(),r=_(_({},t),e);await fr("/v1/event/experiment",r)}function Gl(){DT().catch(t=>ae(t,"fetch-experiments"))}async function DT(){if(!ye().activeExperiments)return;Xr.getInstance().isAuthenticated()?await Rv():(await zr(xr),await Rv())}async function Rv(){b.info("Fetch experiments after \u23F0",To()+" of SDK load");let t=await hn(),e=_({},t);fr("/v1/engagement/experiments",e).then(async r=>{b.info(`Experiments fetched in \u23F0 ${hr(r.timeTakenMs)}`);let n=r.data.experiments.map(o=>new Tt(o));new jl().execute(n)}).catch(r=>{b.error("Error sending experiment getter",r)})}var Dv=()=>{let t=window.ShopifyAnalytics?.meta??{},e=t.selectedVariantId;if(e)return e;if(t.product?.variants?.length>0)return t.product.variants[0].id};var zl=class{runtimeData=ye();meddle(){let e=Ce.globalRef;e.account=e.account??[],e.profile=e.profile??[],e.events=e.events??[],e.page=e.page??[],this.meddlePage(),this.meddleAccount(),this.meddleEvents(),this.meddleProfile(),this.exposeMethods()}exposeMethods(){let e=Ce.globalRef;e.loadWidgets=e.loadCartWidgets=e.loadPageWidgets=()=>{Ci()},e.loadExperiments=()=>{Gl()},e.testCartUpdate=this.testCartUpdate.bind(this),e.previewWidget=Ce.previewWidget.bind(Ce),e.previewPopup=Ce.previewPopup.bind(Ce),e.executeCTA=(r,n)=>{new gn(r).execute(n)},e.sendEvent=r=>{dt(r)}}overwritePush(e,r){Br(e,"push",r)}meddleAccount(){this.overwritePush(Ce.globalRef.account,(...e)=>{this.processAccount(e[0])}),Ce.globalRef.account.forEach(this.processAccount.bind(this))}meddleEvents(){this.overwritePush(Ce.globalRef.events,(...e)=>{this.processEvent(e[0])}),Ce.globalRef.events.forEach(this.processEvent.bind(this))}meddleProfile(){this.overwritePush(Ce.globalRef.profile,(...e)=>{this.processProfile(e[0])}),Ce.globalRef.profile.forEach(this.processProfile.bind(this))}processAccount(e){e&&(e.appID&&Ce.authenticate(e),e.flags&&(this.runtimeData.flags=e.flags))}processEvent(e){e&&(Om.includes(e[0])?Ce.sendEvent(e[0],e[1],_({occurred:this.runtimeData.jsLoadTime},e[2])):Ce.sendEvent(e[0],e[1],e[2]))}processProfile(e){e&&Ce.updateProfile(e)}processPageName(e){e&&Ce.setPageName(e)}meddlePage(){this.overwritePush(Ce.globalRef.page,(...e)=>{this.processPage(e[0])}),Ce.globalRef.page.forEach(this.processPage.bind(this))}processPage(e){e.currentItem&&AT(e.currentItem),e.currency&&(ye().currencyCode=e.currency),e.shopCurrency&&(this.runtimeData.shopCurrencyCode=e.shopCurrency),e.moneyFormat&&(this.runtimeData.moneyFormat=e.moneyFormat),e.jsLoad&&(this.runtimeData.jsLoadTime=e.jsLoad),e.locale&&(this.runtimeData.locale=e.locale),e.pageName&&Ce.setPageName(e.pageName),e.activeExperiment&&(this.runtimeData.activeExperiments=e.activeExperiment),e.cart&&he.getCurrent().update(e.cart),e.customContext&&(this.runtimeData.customContext=_(_({},this.runtimeData.customContext),e.customContext))}async testCartUpdate(){if(ye().pageName!=="product"){window.alert("This feature is only available on a product page");return}let e=Dv();if(e||(e=ye().currentItem?.vID),!e){window.alert("Could not find a variant to test. Please try a different product page");return}let r=new Tt({id:"preview",shortID:"1",redirectBehaviour:Zt.CART_DRAWER});await new gn(new Dr(new Date,r)).execute({clickAction:{at:be.ADD_TO_CART},embeddedItem:new At({vID:e})})}};function AT(t){let e=ye();if(e.currentItem&&e.currentItem.vID!==t.vID){let r=new CustomEvent("letscooee:variant-change",{detail:{variantID:t.vID}});document.dispatchEvent(r)}e.currentItem=new At(t)}var Ri=class{static SESSION_STORAGE=window.sessionStorage;static SESSION_STORAGE_KEY_PREFIX="cooee".concat("-");static getString(e,r){return this.getItem(e)||r}static setString(e,r){this.setItem(e,r)}static remove(e){this.removeItem(e)}static getItem(e){return this.SESSION_STORAGE.getItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e))}static setItem(e,r){this.SESSION_STORAGE.setItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e),r)}static removeItem(e){this.SESSION_STORAGE.removeItem(this.SESSION_STORAGE_KEY_PREFIX.concat(e))}};var OT=1e3,NT=10,hm=0,gm=new Date;function ym(t){Ri.remove("sleid"),gm=t??new Date}function Av(){if(window.scrollY){let t=Pv();Ov(t)&&Nv(t)}Fo(()=>{PT()})}function PT(){mo(window,"scroll").pipe(Ir(OT),dn(()=>{let t=Pv();if(t>100){b.warn("Received scroll percent is more than 100",t);return}if(Ov(t))return t})).subscribe(t=>{Nv(t)})}function Ov(t){return Math.abs(hm-t)>=NT||hm!==t&&t===100}function Nv(t){if(t==null)return;let e={percent:t,timeMS:new Date().getTime()-gm.getTime()};hm=t;let r=Ri.getString("sleid",""),n=new Se("CE Scroll",e,null,r);dt(n),Ri.setString("sleid",n.id.toHexString()),gm=new Date(n.occurred)}function Pv(){let t=window.document.body.scrollHeight,e=window.innerHeight;return Math.ceil((window.scrollY+e)/t*100)}function Lv(){LT()}function LT(){let t=window.fetch;window.fetch=async function(e,r){try{await MT(e,r)}catch(n){ae(n,"modify-graphql-request",{extra:{body:JSON.stringify(r?.body)}})}return t(e,r)},b.verbose("Securely overwritten window.fetch method for graphql query")}async function MT(t,e){let r=typeof t=="string"?t:t instanceof Request?t.url:"";if(!(r.includes("graphql.json")&&e?.method==="POST")||!e.body)return;let n;if(typeof e.body=="string")try{n=JSON.parse(e.body)}catch{return}else n=e.body;n?.variables?.input&&(b.verbose("Intercepted fetch request of:",r),n?.query.includes("cartCreate")&&(e.body=await BT(n),kT()))}async function BT(t){let e=t.variables.input.attributes??[],r=await Ya("Buy Now");return t.variables.input.attributes=[...e,...r],JSON.stringify(t)}function kT(){let t=ye().currentItem;if(!t)return;let e=new Se("Buy Now Clicked",{items:[t]});dt(e)}var Di=class{constructor(e,r){this.selectors=e;this.eventName=r;this.selectorString=e.join(",")}static INSTANCE;elements;selectorString;clickListenerCallback=e=>{let r=e.currentTarget,n=new Se(this.eventName,{class:r.className||void 0,tagName:r.tagName||void 0,id:r.id||void 0});dt(n),this.removeClickListener(this.clickListenerCallback)};listenSilently(){this.listen().catch(e=>b.error(e))}async listen(){this.elements=await Mf(this.selectorString),this.elements.forEach(e=>{e.addEventListener("click",this.clickListenerCallback)})}removeClickListener(e){this.elements?.forEach(r=>{r.removeEventListener("click",e)})}};var ql=class t extends Di{static selectors=[".product__thumbnail-list-inner > button","product-gallery-navigation > button",".product-media--thumb-container",".product-images-inner > img",".m-product-media",".swiper-button-control",".media__thumb",".slick-arrow",".productView-img-container.product-single__media",".product-gallery__thumbnail_item_inner"];constructor(){super(t.selectors,"Item Thumbnail Clicked")}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}};var Yl=class t extends Di{static selectors=[".jdgm-widget.jdgm-preview-badge.jdgm-preview-badge--with-link.jdgm--done-setup","reviewsio-product-ratings",".ruk_rating_snippet.tracked:not(.hidden)","a > .loox-rating",".yotpo-reviews-star-ratings-widget",".yotpo.lp-hero__reviews",".pr-rating > a",".rivyoReviewWidget"];constructor(){super(t.selectors,"Review Clicked")}static getInstance(){return this.INSTANCE||(this.INSTANCE=new t),this.INSTANCE}};var UT=[".gokwik-checkout button","button.cart__checkout-button","button.cart__checkout","button#checkout","button#checkout2",'button[id*="checkout" i]','button[name*="checkout" i]','button[class*="checkout" i]'].join(",");function Mv(){Fo(()=>{b.verbose("Execution order:","document ready"),FT()})}function FT(){let t=window.location.hash?.substring(1);if(t)if(t.includes("initiate-checkout")){document.dispatchEvent(new Event("letscooee:outbound:third-party-initiate-checkout"));let e=document.querySelector(UT);if(!e){b.verbose("No clickable cart checkout button found");return}b.verbose("Clickable cart checkout button found",e),e.click()}else t.includes("open-cart-drawer")&&et.get().open()}function kv(){window.addEventListener("kp-modal:opened",()=>{ye().isGoKwikPopupOpen=!0}),window.addEventListener("user-loggedin",t=>{let{token:e}=t.detail;e&&Ii({goKwikToken:e})}),window.gokwikSdk?Bv():window.addEventListener("gokwikLoaded",Bv)}function Bv(){window.gokwikSdk&&window.gokwikSdk.on("checkout_initiated",async()=>{let t=await he.getCurrent().getNormalisedCart(),e={via:"GoKwik",items:t.items,cartToken:t.token,amount:{value:t.amount,currency:t.currency}},r=new Se("Checkout Started",e);dt(r)})}var Kl=class{static watch(){let e=nu();(e==="1"||e==="on")&&Vl({debugTill:this.getDebugMillis()}),e==="on"?sessionStorage.cooeeDebug="1":e==="off"&&sessionStorage.removeItem("cooeeDebug"),sessionStorage.cooeeDebug&&this.renderDebugBar()}static renderDebugBar(){let e=document.createElement("cooee-debugger");e.logs=this.logs,Fo(()=>{document.body.appendChild(e)})}static getDebugMillis(){return new Date().getTime()+360*60*1e3}};var Ce=class{static globalRef;static authenticated;static async initForMerchantWebsiteOnly(e){if(window.cooeeSDKPreview)return;let r=(window.CooeeSDK?.pageLoadTime??e).getTime()-e.getTime();b.info(`Initialising SDK after ${hr(r)} of page load`),this.initGlobalReference(e),await Xr.getInstance().populateAuthDataFromStorage(),this.autoAuthenticate(),new zl().meddle(),Fm(),Ci(!0),Gl(),rv(),cv(),Lv(),Mv(),Av(),Yl.getInstance().listenSilently(),ql.getInstance().listenSilently(),kv(),HT(),Kl.watch()}static async initForAll(){this.injectWidgetAssets()}static initGlobalReference(e){window.CooeeSDK||Br(window,"CooeeSDK",{}),this.globalRef=window.CooeeSDK,Br(this.globalRef,"config",new Ye),Br(this.globalRef,"runtimeData",{sdkLoadTime:e,jsLoadTime:new Date,lastEnterActive:new Date}),Br(this.globalRef,"uaParser",new Sr,!0),Br(this.globalRef,"cart",he.getCurrent()),Br(this.globalRef,"cartChange$",av()),Br(this.globalRef,"cartDrawerToggle$",et.cartDrawerToggle$.asObservable()),b.verbose("Global reference initialised"),new Bc(()=>{this.globalRef.uaParser=new Sr})}static injectWidgetAssets(){ey(Wt.widgetURL,"cooee-widget-sdk"),Sp()}static autoAuthenticate(){let e=cc();e&&this.authenticate({shopifyShop:e})}static authenticate(e){if(this.authenticated)return;b.info("Begin auth after \u23F0",To(),"of SDK load");let r=e.appID?.trim(),n=e.shopifyShop;if((Pf(r)||r.length!==24)&&Pf(n)){b.warn("Cooee App ID or Shop name is not configured");return}this.authenticated=!0,Xr.getInstance().authenticate(e)}static sendEvent(e,r,n){let o=new Se(e,r,n?.triggerData);n?.occurred&&(o.occurred=n.occurred),dt(o)}static updateProfile(e){for(let r in e)if(r.toLowerCase().startsWith("ce "))throw new Error("User property name cannot start with 'CE '");Ii(e)}static setPageName(e){if(!e)return;let r=ye(),n=r.pageName;if(e===n)return;if(r.pageName=e,Dm.some(s=>e.includes(s))){ym();return}let o={};n&&(o.ps=n);let i=new Se("CE Screen View",o);i.occurred=r.jsLoadTime,dt(i),ym(i.occurred)}static previewPopup(e,r){new Hn(r).render(e)}static previewWidget(e){new Et(new Tt(e)).renderSilently()}};function HT(){if(window.opener){try{window.opener.postMessage({action:"COOEE_READY_FOR_PREVIEW"},"*")}catch(t){b.error(t)}window.addEventListener("message",t=>{if(b.verbose("Received event",t),!t.origin.includes("letscooee.com")&&!t.origin.includes("localhost"))return;let e=t.data;typeof e=="object"&&(e.action==="POPUP_PREVIEW"?(Ce.previewPopup(e.engagementTrigger),t.source?.postMessage({action:"PREVIEW_SUCCESSFUL"},t.origin)):e.action==="WIDGET_PREVIEW"&&(Ce.previewWidget(e.engagementTrigger),t.source?.postMessage({action:"PREVIEW_SUCCESSFUL"},t.origin)))})}}var $T=new Date;Pm();Lm();b.verbose("Execution order:","top");window.cooeeShopifyScriptLoaded||(window.cooeeShopifyScriptLoaded=!0,(async()=>(b.verbose("Execution order:","IIFE start"),await Ce.initForMerchantWebsiteOnly($T),await Ce.initForAll(),b.verbose("Execution order:","IIFE end")))());b.verbose("Execution order:","bottom");
@@ -1 +1 @@
1
- import{a as C,b}from"./chunk-5YSWL3QI.js";import{e as g,f as h,i as u,l as f}from"./chunk-HS53AQV7.js";import{Ba as l,Qa as c,X as m,na as n,oa as i,pa as r,v as s}from"./chunk-I62LO6BZ.js";import"./chunk-V7UGKYBN.js";var _=class d{dialogRef=s(u);eventData=s(h);triggerData=s(g)().triggerData;onShareAndClose(p,o){p.stopPropagation();let{url:t,text:a}=b(this.triggerData,this.eventData.video,o!=="Clipboard");switch(o){case"Whatsapp":window.open(`https://wa.me/?text=${a}%20${t}`,"_blank","noopener,noreferrer");break;case"X(Twitter)":window.open(`https://x.com/intent/post?text=${a}&url=${t}`,"_blank","noopener,noreferrer");break;case"Clipboard":navigator.clipboard.writeText(t).catch(()=>{let e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)});break;default:}o&&C(this.triggerData,this.eventData.video,this.eventData.index,o),this.dialogRef.close()}static \u0275fac=function(o){return new(o||d)};static \u0275cmp=m({type:d,selectors:[["cooee-share-dialog"]],decls:19,vars:0,consts:[[1,"share-dialog"],[1,"share-dialog-header"],["type","button","aria-label","Close",1,"close-button",3,"click"],["name","close","aria-hidden","true"],[1,"share-options"],["type","button","aria-label","Share on WhatsApp",1,"share-option",3,"click"],["name","whatsapp","aria-hidden","true"],["type","button","aria-label","Share on X",1,"share-option",3,"click"],["name","x-twitter","aria-hidden","true"],["type","button","aria-label","Copy link",1,"share-option",3,"click"],["name","copy","aria-hidden","true"]],template:function(o,t){o&1&&(n(0,"div",0)(1,"div",1)(2,"h3"),c(3,"Share"),i(),n(4,"button",2),l("click",function(e){return t.onShareAndClose(e)}),r(5,"cooee-icon",3),i()(),n(6,"div",4)(7,"button",5),l("click",function(e){return t.onShareAndClose(e,"Whatsapp")}),r(8,"cooee-icon",6),n(9,"span"),c(10,"Whatsapp"),i()(),n(11,"button",7),l("click",function(e){return t.onShareAndClose(e,"X(Twitter)")}),r(12,"cooee-icon",8),n(13,"span"),c(14,"X"),i()(),n(15,"button",9),l("click",function(e){return t.onShareAndClose(e,"Clipboard")}),r(16,"cooee-icon",10),n(17,"span"),c(18,"Copy link"),i()()()())},dependencies:[f],styles:["@keyframes _ngcontent-%COMP%_slideInScale{0%{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.share-dialog[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:20px;min-width:280px;box-shadow:0 8px 32px #00000026;color:#333;animation:_ngcontent-%COMP%_slideInScale .25s ease-out}.share-dialog-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.share-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-family:var(--lc-heading-family),serif;margin:0;font-size:18px;font-weight:600}.share-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;font-family:var(--lc-text-family),serif}.share-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#0002;border:1px solid #e9ecef;border-radius:8px;color:#333;font-size:16px;font-weight:500;cursor:pointer;transition:all .2s ease}.share-option[_ngcontent-%COMP%]:hover{background:#0004;border-color:#dee2e6;transform:translateY(-1px)}.share-option[_ngcontent-%COMP%]:active{transform:translateY(0)}.share-option[_ngcontent-%COMP%] cooee-icon[_ngcontent-%COMP%]{width:24px;height:24px}.share-option[_ngcontent-%COMP%] cooee-icon[name=whatsapp][_ngcontent-%COMP%]{color:#25d366}.share-option[_ngcontent-%COMP%] cooee-icon[name=x-twitter][_ngcontent-%COMP%], .share-option[_ngcontent-%COMP%] cooee-icon[name=copy][_ngcontent-%COMP%]{color:#000}.share-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1;text-align:left}button.close-button[_ngcontent-%COMP%]{background-color:transparent;border:none}button.close-button[_ngcontent-%COMP%] cooee-icon[name=close][_ngcontent-%COMP%]{border-radius:100%;color:#000}"]})};export{_ as ShareDialogComponent};
1
+ import{a as C,b}from"./chunk-76RSLVC7.js";import{e as g,f as h,i as u,l as f}from"./chunk-Q4ZRCSCY.js";import{Ba as l,Qa as c,X as m,na as n,oa as i,pa as r,v as s}from"./chunk-I62LO6BZ.js";import"./chunk-V7UGKYBN.js";var _=class d{dialogRef=s(u);eventData=s(h);triggerData=s(g)().triggerData;onShareAndClose(p,o){p.stopPropagation();let{url:t,text:a}=b(this.triggerData,this.eventData.video,o!=="Clipboard");switch(o){case"Whatsapp":window.open(`https://wa.me/?text=${a}%20${t}`,"_blank","noopener,noreferrer");break;case"X(Twitter)":window.open(`https://x.com/intent/post?text=${a}&url=${t}`,"_blank","noopener,noreferrer");break;case"Clipboard":navigator.clipboard.writeText(t).catch(()=>{let e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)});break;default:}o&&C(this.triggerData,this.eventData.video,this.eventData.index,o),this.dialogRef.close()}static \u0275fac=function(o){return new(o||d)};static \u0275cmp=m({type:d,selectors:[["cooee-share-dialog"]],decls:19,vars:0,consts:[[1,"share-dialog"],[1,"share-dialog-header"],["type","button","aria-label","Close",1,"close-button",3,"click"],["name","close","aria-hidden","true"],[1,"share-options"],["type","button","aria-label","Share on WhatsApp",1,"share-option",3,"click"],["name","whatsapp","aria-hidden","true"],["type","button","aria-label","Share on X",1,"share-option",3,"click"],["name","x-twitter","aria-hidden","true"],["type","button","aria-label","Copy link",1,"share-option",3,"click"],["name","copy","aria-hidden","true"]],template:function(o,t){o&1&&(n(0,"div",0)(1,"div",1)(2,"h3"),c(3,"Share"),i(),n(4,"button",2),l("click",function(e){return t.onShareAndClose(e)}),r(5,"cooee-icon",3),i()(),n(6,"div",4)(7,"button",5),l("click",function(e){return t.onShareAndClose(e,"Whatsapp")}),r(8,"cooee-icon",6),n(9,"span"),c(10,"Whatsapp"),i()(),n(11,"button",7),l("click",function(e){return t.onShareAndClose(e,"X(Twitter)")}),r(12,"cooee-icon",8),n(13,"span"),c(14,"X"),i()(),n(15,"button",9),l("click",function(e){return t.onShareAndClose(e,"Clipboard")}),r(16,"cooee-icon",10),n(17,"span"),c(18,"Copy link"),i()()()())},dependencies:[f],styles:["@keyframes _ngcontent-%COMP%_slideInScale{0%{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.share-dialog[_ngcontent-%COMP%]{background:#fff;border-radius:12px;padding:20px;min-width:280px;box-shadow:0 8px 32px #00000026;color:#333;animation:_ngcontent-%COMP%_slideInScale .25s ease-out}.share-dialog-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.share-dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-family:var(--lc-heading-family),serif;margin:0;font-size:18px;font-weight:600}.share-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;font-family:var(--lc-text-family),serif}.share-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#0002;border:1px solid #e9ecef;border-radius:8px;color:#333;font-size:16px;font-weight:500;cursor:pointer;transition:all .2s ease}.share-option[_ngcontent-%COMP%]:hover{background:#0004;border-color:#dee2e6;transform:translateY(-1px)}.share-option[_ngcontent-%COMP%]:active{transform:translateY(0)}.share-option[_ngcontent-%COMP%] cooee-icon[_ngcontent-%COMP%]{width:24px;height:24px}.share-option[_ngcontent-%COMP%] cooee-icon[name=whatsapp][_ngcontent-%COMP%]{color:#25d366}.share-option[_ngcontent-%COMP%] cooee-icon[name=x-twitter][_ngcontent-%COMP%], .share-option[_ngcontent-%COMP%] cooee-icon[name=copy][_ngcontent-%COMP%]{color:#000}.share-option[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex:1;text-align:left}button.close-button[_ngcontent-%COMP%]{background-color:transparent;border:none}button.close-button[_ngcontent-%COMP%] cooee-icon[name=close][_ngcontent-%COMP%]{border-radius:100%;color:#000}"]})};export{_ as ShareDialogComponent};
@@ -1,3 +1,3 @@
1
- import{A as Pe,B as Me,C as Re,a as _e,c as O,d as Ce,f as U,k as Q,r as R,s as De,t as be,u as Te,v as Ie,w as Ee,y as Se,z as ke}from"./chunk-LKYQ67KT.js";import{a as Oe,b as Ne}from"./chunk-5YSWL3QI.js";import{c as we,e as fe,f as N,g as H,i as xe,j as Ve,k as ye,l as F}from"./chunk-HS53AQV7.js";import"./chunk-SBONG2TS.js";import{$a as me,Ba as g,D as Y,Da as a,E as f,Ga as $,Ha as j,I as T,Ia as W,Ja as ae,Ka as de,L as J,La as b,M as X,Ma as S,O as s,Ta as se,Ua as le,V as Z,Va as ce,X as w,Za as pe,ba as I,fb as ue,ga as E,ha as x,ia as V,ib as k,ja as ee,jb as P,ka as y,kb as M,la as D,lb as ge,ma as u,na as l,oa as d,pa as _,qa as te,ra as ie,sa as oe,sb as he,ta as ne,ua as re,ub as ve,v as m,va as B,x as c,y as p,za as v}from"./chunk-I62LO6BZ.js";import"./chunk-V7UGKYBN.js";var A=class n{dialogState=P();dialog=m(ye);triggerData=m(fe)().triggerData;eventData=m(N);containerRef=m(Z);async share(t){t.stopPropagation(),t.preventDefault(),R()&&De()?await this.shareNative():await this.shareWithDialog()}async shareNative(){let t=Ne(this.triggerData,this.eventData.video,!1);await navigator.share(t),Oe(this.triggerData,this.eventData.video,this.eventData.index,"Native")}async shareWithDialog(){let t=await import("./share-dialog.component-6NZEGAFW.js");this.dialogState.emit(!0),this.dialog.open(t.ShareDialogComponent,{viewContainerRef:this.containerRef}).closed.subscribe(()=>this.dialogState.emit(!1))}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-share-button"]],outputs:{dialogState:"dialogState"},decls:2,vars:0,consts:[["type","button","aria-label","Share video",3,"click"],["name","share"]],template:function(e,i){e&1&&(l(0,"button",0),g("click",function(r){return i.share(r)}),_(1,"cooee-icon",1),d())},dependencies:[F],styles:["button[_ngcontent-%COMP%]{width:var(--lc-icon-button-size, 44px);height:var(--lc-icon-button-size, 44px);display:flex;justify-content:center;align-items:center;border:none;border-radius:100%;background:#00000080;background:color-mix(in oklab,#000 50%,transparent)}button[_ngcontent-%COMP%] cooee-icon[name=share][_ngcontent-%COMP%]{color:#fff}"]})};var z=class n{video=M.required();progress=f(0);constructor(){k(t=>{let e=this.video(),i=()=>{this.progress.set(e.currentTime/e.duration*100)};e.addEventListener("timeupdate",i),t(()=>{e.removeEventListener("timeupdate",i)})})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-video-progress-bar"]],inputs:{video:[1,"video"]},decls:3,vars:3,consts:[[1,"video-untracked-path"],["role","progressbar",1,"video-tracked-path"]],template:function(e,i){e&1&&(te(0,"div",0)(1,"div",1),oe(2,"div"),ie()()),e&2&&(s(),S("width",i.progress(),"%"),E("aria-valuenow",i.progress()))},styles:["[_nghost-%COMP%]{display:block;width:100%;position:absolute;z-index:10;top:4px;padding-inline:8px;box-sizing:border-box}.video-untracked-path[_ngcontent-%COMP%], .video-tracked-path[_ngcontent-%COMP%]{height:4px;border-radius:var(--lc-video-progress-bar-radius)}.video-untracked-path[_ngcontent-%COMP%]{background-color:rgba(var(--lc-video-progress-bar-bg-color));width:100%;margin-bottom:2px}.video-tracked-path[_ngcontent-%COMP%]{background-color:rgba(var(--lc-video-progress-bar-color));transition:width .5s ease-in-out}@media (prefers-reduced-motion: reduce){.video-tracked-path[_ngcontent-%COMP%]{transition:none}}"]})};var Ae=["swiperContainer"],ze=(n,t)=>t.id;function Le(n,t){if(n&1){let e=v();l(0,"div",3)(1,"cooee-item-card",4),g("buttonClick",function(o){c(e);let r=a();return p(r.onButtonClick(o))})("click",function(){let o=c(e).$implicit,r=a();return p(r.cardClick.emit(o))}),d()()}if(n&2){let e=t.$implicit;s(),u("item",e)}}var L=class n{items=M.required();cardClick=P();destroyRef=m(Y);elementRef=m(T);engagementService=m(U);swiperContainerRef=ge.required("swiperContainer");swiperInstance;constructor(){k(()=>{this.initSwiper()}),this.destroyRef.onDestroy(()=>{this.swiperInstance?.destroy()})}ngOnInit(){O(this.elementRef.nativeElement.shadowRoot)}onButtonClick(t){let e=_e.get().website?.canChangeVariantInCart;if(this.items()?.length>1||t.hasVariants()&&!e){this.cardClick.emit(t);return}this.engagementService.executeCTA(Ce.ADD_TO_CART,{item:t})}initSwiper(){this.swiperInstance=new window.CooeeSDK.Swiper(this.swiperContainerRef().nativeElement,{direction:"horizontal",effect:"slide",slidesPerView:1.2,nested:!0,centeredSlides:!0,spaceBetween:12,mousewheel:{enabled:!0,thresholdDelta:10,thresholdTime:200}})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-video-promoted-items"]],viewQuery:function(e,i){e&1&&ae(i.swiperContainerRef,Ae,5),e&2&&de()},hostAttrs:[1,"letscooee-widget"],inputs:{items:[1,"items"]},outputs:{cardClick:"cardClick"},features:[me([U])],decls:5,vars:0,consts:[["swiperContainer",""],[1,"swiper-container"],[1,"swiper-wrapper"],[1,"swiper-slide"],["tabindex","0",3,"buttonClick","click","item"]],template:function(e,i){e&1&&(l(0,"div",1,0)(2,"div",2),y(3,Le,2,1,"div",3,ze),d()()),e&2&&(s(3),D(i.items()))},dependencies:[Re],styles:[`:host{display:block;width:100%}cooee-item-card{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:rgba(var(--lc-card-bg-color));cursor:pointer;border-radius:var(--lc-card-radius)}
1
+ import{A as Pe,B as Me,C as Re,a as _e,c as O,d as Ce,f as U,k as Q,r as R,s as De,t as be,u as Te,v as Ie,w as Ee,y as Se,z as ke}from"./chunk-PFXNLOS6.js";import{a as Oe,b as Ne}from"./chunk-76RSLVC7.js";import{c as we,e as fe,f as N,g as H,i as xe,j as Ve,k as ye,l as F}from"./chunk-Q4ZRCSCY.js";import"./chunk-SBONG2TS.js";import{$a as me,Ba as g,D as Y,Da as a,E as f,Ga as $,Ha as j,I as T,Ia as W,Ja as ae,Ka as de,L as J,La as b,M as X,Ma as S,O as s,Ta as se,Ua as le,V as Z,Va as ce,X as w,Za as pe,ba as I,fb as ue,ga as E,ha as x,ia as V,ib as k,ja as ee,jb as P,ka as y,kb as M,la as D,lb as ge,ma as u,na as l,oa as d,pa as _,qa as te,ra as ie,sa as oe,sb as he,ta as ne,ua as re,ub as ve,v as m,va as B,x as c,y as p,za as v}from"./chunk-I62LO6BZ.js";import"./chunk-V7UGKYBN.js";var A=class n{dialogState=P();dialog=m(ye);triggerData=m(fe)().triggerData;eventData=m(N);containerRef=m(Z);async share(t){t.stopPropagation(),t.preventDefault(),R()&&De()?await this.shareNative():await this.shareWithDialog()}async shareNative(){let t=Ne(this.triggerData,this.eventData.video,!1);await navigator.share(t),Oe(this.triggerData,this.eventData.video,this.eventData.index,"Native")}async shareWithDialog(){let t=await import("./share-dialog.component-7RGGRQVJ.js");this.dialogState.emit(!0),this.dialog.open(t.ShareDialogComponent,{viewContainerRef:this.containerRef}).closed.subscribe(()=>this.dialogState.emit(!1))}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-share-button"]],outputs:{dialogState:"dialogState"},decls:2,vars:0,consts:[["type","button","aria-label","Share video",3,"click"],["name","share"]],template:function(e,i){e&1&&(l(0,"button",0),g("click",function(r){return i.share(r)}),_(1,"cooee-icon",1),d())},dependencies:[F],styles:["button[_ngcontent-%COMP%]{width:var(--lc-icon-button-size, 44px);height:var(--lc-icon-button-size, 44px);display:flex;justify-content:center;align-items:center;border:none;border-radius:100%;background:#00000080;background:color-mix(in oklab,#000 50%,transparent)}button[_ngcontent-%COMP%] cooee-icon[name=share][_ngcontent-%COMP%]{color:#fff}"]})};var z=class n{video=M.required();progress=f(0);constructor(){k(t=>{let e=this.video(),i=()=>{this.progress.set(e.currentTime/e.duration*100)};e.addEventListener("timeupdate",i),t(()=>{e.removeEventListener("timeupdate",i)})})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-video-progress-bar"]],inputs:{video:[1,"video"]},decls:3,vars:3,consts:[[1,"video-untracked-path"],["role","progressbar",1,"video-tracked-path"]],template:function(e,i){e&1&&(te(0,"div",0)(1,"div",1),oe(2,"div"),ie()()),e&2&&(s(),S("width",i.progress(),"%"),E("aria-valuenow",i.progress()))},styles:["[_nghost-%COMP%]{display:block;width:100%;position:absolute;z-index:10;top:4px;padding-inline:8px;box-sizing:border-box}.video-untracked-path[_ngcontent-%COMP%], .video-tracked-path[_ngcontent-%COMP%]{height:4px;border-radius:var(--lc-video-progress-bar-radius)}.video-untracked-path[_ngcontent-%COMP%]{background-color:rgba(var(--lc-video-progress-bar-bg-color));width:100%;margin-bottom:2px}.video-tracked-path[_ngcontent-%COMP%]{background-color:rgba(var(--lc-video-progress-bar-color));transition:width .5s ease-in-out}@media (prefers-reduced-motion: reduce){.video-tracked-path[_ngcontent-%COMP%]{transition:none}}"]})};var Ae=["swiperContainer"],ze=(n,t)=>t.id;function Le(n,t){if(n&1){let e=v();l(0,"div",3)(1,"cooee-item-card",4),g("buttonClick",function(o){c(e);let r=a();return p(r.onButtonClick(o))})("click",function(){let o=c(e).$implicit,r=a();return p(r.cardClick.emit(o))}),d()()}if(n&2){let e=t.$implicit;s(),u("item",e)}}var L=class n{items=M.required();cardClick=P();destroyRef=m(Y);elementRef=m(T);engagementService=m(U);swiperContainerRef=ge.required("swiperContainer");swiperInstance;constructor(){k(()=>{this.initSwiper()}),this.destroyRef.onDestroy(()=>{this.swiperInstance?.destroy()})}ngOnInit(){O(this.elementRef.nativeElement.shadowRoot)}onButtonClick(t){let e=_e.get().website?.canChangeVariantInCart;if(this.items()?.length>1||t.hasVariants()&&!e){this.cardClick.emit(t);return}this.engagementService.executeCTA(Ce.ADD_TO_CART,{item:t})}initSwiper(){this.swiperInstance=new window.CooeeSDK.Swiper(this.swiperContainerRef().nativeElement,{direction:"horizontal",effect:"slide",slidesPerView:1.2,nested:!0,centeredSlides:!0,spaceBetween:12,mousewheel:{enabled:!0,thresholdDelta:10,thresholdTime:200}})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-video-promoted-items"]],viewQuery:function(e,i){e&1&&ae(i.swiperContainerRef,Ae,5),e&2&&de()},hostAttrs:[1,"letscooee-widget"],inputs:{items:[1,"items"]},outputs:{cardClick:"cardClick"},features:[me([U])],decls:5,vars:0,consts:[["swiperContainer",""],[1,"swiper-container"],[1,"swiper-wrapper"],[1,"swiper-slide"],["tabindex","0",3,"buttonClick","click","item"]],template:function(e,i){e&1&&(l(0,"div",1,0)(2,"div",2),y(3,Le,2,1,"div",3,ze),d()()),e&2&&(s(3),D(i.items()))},dependencies:[Re],styles:[`:host{display:block;width:100%}cooee-item-card{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:rgba(var(--lc-card-bg-color));cursor:pointer;border-radius:var(--lc-card-radius)}
2
2
  `],encapsulation:3})};var Be=["swiperComp"],$e=["videoEl"],je=(n,t)=>t.url;function We(n,t){n&1&&(l(0,"div",11),_(1,"div",15),d())}function He(n,t){if(n&1&&_(0,"source",13),n&2){let e=t.$implicit;u("type",pe(e.mimeType))("src",e.url,J)}}function Ue(n,t){n&1&&B(0)}function Qe(n,t){if(n&1){let e=v();l(0,"cooee-video-promoted-items",24),g("cardClick",function(o){c(e);let r=a(2).$implicit,C=a();return p(C.productCardClicked(o,r))}),d()}if(n&2){let e=a(2).$implicit;u("items",e.items)}}function Ke(n,t){if(n&1&&_(0,"cooee-video-card",23),n&2){let e=a(2).$implicit;u("card",e.card)}}function qe(n,t){if(n&1){let e=v();_(0,"cooee-video-progress-bar",16),l(1,"div",17)(2,"cooee-mute-toggle",18),ce("mutedChange",function(o){c(e);let r=a(2);return le(r.muted,o)||(r.muted=o),p(o)}),g("toggled",function(){c(e);let o=a(2);return p(o.muteToggled())}),d(),I(3,Ue,1,0,"ng-container",8),d(),l(4,"div",19)(5,"cooee-share-button",20),g("dialogState",function(o){c(e);let r=a(2);return p(r.shareDialogOpen.set(o))}),d()(),l(6,"div",21),x(7,Qe,1,1,"cooee-video-promoted-items",22)(8,Ke,1,1,"cooee-video-card",23),d()}if(n&2){let e=a().$implicit,i=b(5),o=a(),r=b(9);u("video",i),s(2),se("muted",o.muted),u("videoEl",i),s(),u("ngTemplateOutlet",r),s(4),V(e.items.length&&o.footerContent===o.VideoConfigFooterContent.FIRST_ITEM?7:e.card&&o.footerContent===o.VideoConfigFooterContent.CARD?8:-1)}}function Ge(n,t){if(n&1){let e=v();l(0,"cooee-item-detail",25),g("closeClick",function(){c(e);let o=a(2);return p(o.productModalClosed())}),d()}if(n&2){let e=a(2);u("item",e.selectedItem)("similarItems",e.selectedVideo.items)}}function Ye(n,t){if(n&1){let e=v();l(0,"div",6)(1,"div",9)(2,"div",10),x(3,We,2,0,"div",11),l(4,"video",12,2),g("click",function(){let o=c(e).$index,r=a();return p(r.currentIndex===o&&r.toggleMute())})("ended",function(){c(e);let o=b(5),r=a();return p(r.onVideoEnded(o))})("loadstart",function(){let o=c(e).$index,r=a();return p(r.onVideoLoadStart(o))})("canplay",function(){let o=c(e).$index,r=a();return p(r.onVideoCanPlay(o))}),y(6,He,1,3,"source",13,je),d(),x(8,qe,9,5),d(),x(9,Ge,1,2,"cooee-item-detail",14),d()()}if(n&2){let e=t.$implicit,i=t.$index,o=a();s(2),S("background-image",e.thumbnail?"url("+e.thumbnail+")":null),s(),V(o.shouldShowVideoSpinner(i)?3:-1),s(),u("ngClass",o.viewTemplateClassName)("muted",!0),E("preload",o.isVideoVisible(i)?"metadata":"none")("data-video-id",e.id)("autoplay",null),s(2),D(e.sources),s(2),V(o.currentIndex===i?8:-1),s(),V(o.selectedItem&&o.currentIndex===i?9:-1)}}function Je(n,t){n&1&&B(0)}function Xe(n,t){if(n&1){let e=v();l(0,"button",26),g("click",function(){c(e);let o=a();return p(o.close())}),_(1,"cooee-icon",27),d()}}var Fe=class n{swiperComponent;videoElements;VideoConfigFooterContent=Se;currentIndex=0;muted=f(!1);selectedItem=null;selectedVideo;detailPopupTemplate;footerContent;viewTemplateClassName="lc-video-only-view";shareDialogOpen=f(!1);data=m(Ve);elementRef=m(T);eventData=m(N);dialogRef=m(xe);swiperInitialized=f(!1);swiperOptions=f(null);videos=[];triggerContext;engagementTrigger;isMobile=R();navigationConfig;cssLoadedPromise;resizeDebouncer=new be(this.onResize.bind(this));videoLoadingStates=new Map;constructor(){this.videos=this.data.videos,this.currentIndex=this.data.currentIndex,this.selectedVideo=this.videos[this.currentIndex],this.triggerContext=this.data.triggerContext,this.engagementTrigger=this.triggerContext.triggerData,this.navigationConfig=new Ee({enabled:!0,size:50,color:new Ie({h:"#000000"})}),this.cssLoadedPromise=O(this.elementRef.nativeElement.shadowRoot)}onKeyDown(t){t.preventDefault(),t.stopPropagation(),this.close()}async ngOnInit(){this.muted.set(await Q.get("muted",!1));let t=this.engagementTrigger?.content?.videoConfig;switch(this.detailPopupTemplate=t?.detailPopup.template??"VIDEO_ONLY_VIEW",this.footerContent=t?.footerContent??"FIRST_ITEM",this.detailPopupTemplate){case"PRODUCT_DETAIL_VIEW":this.selectItemForDetailView(),this.viewTemplateClassName="lc-product-detail-view";break;case"VIDEO_ONLY_VIEW":this.viewTemplateClassName="lc-video-only-view";break}}ngAfterViewInit(){this.initializeSwiperWithVideoDimensions()}ngOnDestroy(){this.resizeDebouncer?.destroy()}initializeSwiperWithVideoDimensions(){this.applyOptimalVideoDimensions(),this.initSwiperOptions(),this.playActiveVideo(!1)}close(){let t=this.getCurrentVideoElement();this.dialogRef.close({lastVideo:this.videos[this.currentIndex],lastVideoIndex:this.currentIndex,lastVideoDuration:t?.currentTime})}getCurrentVideoElement(){return this.videoElements.get(this.currentIndex)?.nativeElement}moveToNextVideo(){this.swiperComponent.swiper.slideTo(this.currentIndex+1)}productModalClosed(){this.selectedItem=null}pauseAll(){this.videoElements.forEach(t=>t.nativeElement.pause())}toggleMute(){this.muted.update(t=>!t)}async muteToggled(){await Q.set("muted",this.muted());let e=[this.muted()?"CE Video Muted":"CE Video Unmuted",{current:this.currentVideoProps()},{triggerData:this.engagementTrigger}];window.CooeeSDK.events.push(e)}playActiveVideo(t=!0){t&&this.pauseAll();let e=this.getCurrentVideoElement();e&&this.playVideo(e)}playVideo(t){t.currentTime=0,t.play().catch(e=>we.error(e))}onVideoEnded(t){if(this.currentIndex<this.videos.length-1)this.selectedItem||this.shareDialogOpen()?this.playVideo(t):this.moveToNextVideo();else{let e=this.getPreviousVideoDataForEvent(),i=["CE Last Video Ended",{previous:e},{triggerData:this.engagementTrigger}];window.CooeeSDK.events.push(i),this.playVideo(t)}}onSlideChange(t){let e=this.getPreviousVideoDataForEvent();this.currentIndex=t.realIndex,this.selectedVideo=this.videos[this.currentIndex],this.eventData.video=this.selectedVideo,this.eventData.index=this.currentIndex,this.playActiveVideo(),this.detailPopupTemplate==="PRODUCT_DETAIL_VIEW"?this.selectItemForDetailView():this.selectedItem=null;let i=this.currentVideoProps(),o={previous:e,current:i},r=new H("CE Video Changed",o,this.engagementTrigger);r.setVideos(this.videos[this.currentIndex]),window.CooeeSDK.sendEvent(r)}productCardClicked(t,e){let i={videoID:e.id,videoIndex:this.currentIndex},o=new H("CE More Item Info Clicked",{current:i},this.engagementTrigger);o.setVideos(e),window.CooeeSDK.sendEvent(o),this.selectedItem=t}onVideoLoadStart(t){this.videoLoadingStates.set(t,!0)}onVideoCanPlay(t){this.videoLoadingStates.set(t,!1)}shouldShowVideoSpinner(t){return this.swiperInitialized()?this.videoLoadingStates.get(t)===!0&&this.isVideoVisible(t):this.isVideoVisible(t)}isVideoVisible(t){let e=this.currentIndex-1,i=this.currentIndex+1;return t===this.currentIndex||t===e||t===i}async initSwiperOptions(){await this.cssLoadedPromise;let t=this.isMobile?1:"auto",e=0;this.isProductDetailView()&&(t="auto",e=10),this.swiperOptions.set({direction:this.isMobile?"vertical":"horizontal",effect:this.isMobile?"slide":"coverflow",slidesPerView:t,initialSlide:this.currentIndex,centeredSlides:!0,spaceBetween:e,coverflowEffect:{rotate:0,stretch:0,depth:400,modifier:1,slideShadows:!1},on:{init:i=>{this.swiperInitialized.set(!0),setTimeout(()=>{i.update()},100)}},mousewheel:{enabled:!this.isMobile,invert:!1,thresholdDelta:20}})}isProductDetailView(){return this.detailPopupTemplate==="PRODUCT_DETAIL_VIEW"}currentVideoProps(){return{videoID:this.videos[this.currentIndex].id,videoIndex:this.currentIndex}}getPreviousVideoDataForEvent(){let t=this.currentVideoProps(),e=this.videoElements.find(o=>o.nativeElement.dataset.videoId===this.videos[this.currentIndex].id)?.nativeElement;t.playedTillMS=Math.ceil(e?.currentTime*1e3);let i=e?.duration*1e3;return t.playedTillPercent=+(t.playedTillMS/i).toFixed(4),t}selectItemForDetailView(){this.selectedItem=this.isMobile?null:this.selectedVideo?.items?.[0]??null}applyOptimalVideoDimensions(){if(this.isMobile||this.isProductDetailView())return;let t=this.calculateOptimalVideoDimensions();t&&this.setVideoContainerDimensions(t.width,t.height)}calculateOptimalVideoDimensions(){let t=this.videos.map(h=>h.sources?.[0]).filter(h=>h?.width&&h?.height).map(h=>({width:h.width,height:h.height,aspectRatio:h.width/h.height}));if(t.length===0)return null;let e=t[0],i=window.innerWidth*.9,o=window.innerHeight*.9,r=i/e.width,C=o/e.height,G=Math.min(r,C);return{width:Math.floor(e.width*G),height:Math.floor(e.height*G)}}setVideoContainerDimensions(t,e){let i=this.elementRef.nativeElement;i.style.setProperty("--video-container-width",`${t}px`),i.style.setProperty("--video-container-height",`${e}px`)}onResize(){this.applyOptimalVideoDimensions()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=w({type:n,selectors:[["cooee-video-detail-dialog"]],viewQuery:function(e,i){if(e&1&&($(Be,7),$($e,5)),e&2){let o;j(o=W())&&(i.swiperComponent=o.first),j(o=W())&&(i.videoElements=o)}},hostAttrs:[1,"letscooee-widget"],hostBindings:function(e,i){e&1&&g("keydown.escape",function(r){return i.onKeyDown(r)},X)},decls:10,vars:4,consts:[["swiperComp",""],["closeButtonTemplate",""],["videoEl",""],[1,"lc-shadow-inner",3,"ngClass"],[1,"video-swiper",3,"slideChange","options","navigationConfig"],["ngProjectAs","swiper-slides",5,["swiper-slides"]],[1,"swiper-slide","video-slide"],[1,"lc-desktop-controls"],[4,"ngTemplateOutlet"],[1,"lc-video-modal-row"],[1,"lc-video-container"],[1,"video-loading-overlay"],["playsinline","",1,"lc-video-el",3,"click","ended","loadstart","canplay","ngClass","muted"],[3,"src","type"],[1,"swiper-no-swiping","swiper-no-mousewheel",3,"item","similarItems"],[1,"loading-spinner"],[3,"video"],[1,"lc-video-controls"],[3,"mutedChange","toggled","muted","videoEl"],[1,"share-controls"],[3,"dialogState"],[1,"lc-card-container"],[3,"items"],[3,"card"],[3,"cardClick","items"],[1,"swiper-no-swiping","swiper-no-mousewheel",3,"closeClick","item","similarItems"],["type","button","aria-label","Close",1,"lc-close-button",3,"click"],["name","close","aria-hidden","true"]],template:function(e,i){if(e&1){let o=v();l(0,"div",3)(1,"cooee-swiper",4,0),g("slideChange",function(C){return c(o),p(i.onSlideChange(C))}),ne(3,5),y(4,Ye,10,10,"div",6,ee),re(),d(),l(6,"div",7),I(7,Je,1,0,"ng-container",8),d()(),I(8,Xe,2,0,"ng-template",null,1,ue)}if(e&2){let o=b(9);u("ngClass",i.viewTemplateClassName),s(),u("options",i.swiperOptions())("navigationConfig",i.navigationConfig),s(3),D(i.videos),s(3),u("ngTemplateOutlet",o)}},dependencies:[L,Te,Me,A,z,ve,he,Pe,ke,F],styles:[`:host{display:flex}.lc-shadow-inner{position:relative;width:100vw;height:100vh;display:flex}@media (min-width: 768px){.lc-shadow-inner{background-color:color-mix(in oklab,#000 70%,transparent);justify-content:center;align-items:center}}.video-swiper{--swiper-navigation-size: 50px;--swiper-navigation-color: white;width:100dvw;height:100dvh}.lc-product-detail-view .video-swiper{align-items:center}@media (min-width: 768px){.video-swiper{width:100%;height:100%;max-width:90vw;max-height:90vh}}.video-swiper>.swiper-wrapper{max-height:100%}.lc-product-detail-view .video-swiper>.swiper-wrapper{align-items:center}@media (max-width: 768px){.video-swiper>.swiper-button-prev,.video-swiper>.swiper-button-next{display:none!important}}.video-slide{position:relative;display:flex;align-items:center;visibility:hidden}.lc-product-detail-view .video-slide{width:40vw!important;height:70vh!important}@media (min-width: 768px){.lc-product-detail-view .video-slide{min-width:650px!important}}@media (max-width: 768px){.lc-product-detail-view .video-slide{width:100%!important;height:100%!important}}@media (min-width: 768px){.lc-video-only-view .video-slide{width:fit-content!important}}@media (min-width: 768px){.video-slide{border-radius:var(--lc-media-radius);overflow:hidden}}.video-slide.swiper-slide-active,.video-slide.swiper-slide-prev,.video-slide.swiper-slide-next{visibility:visible}video{width:100%;height:100%;object-fit:cover;position:relative;z-index:3}.lc-desktop-controls{position:absolute;top:2rem;right:4rem;z-index:10;display:flex;gap:.5rem}@media (max-width: 768px){.lc-desktop-controls{display:none}}.lc-video-controls{position:absolute;top:1rem;z-index:10;right:.5rem;display:flex;gap:.25rem}@media (min-width: 768px){.lc-video-controls .lc-close-button{display:none}}.share-controls{position:absolute;bottom:30%;right:.5rem;z-index:10;display:flex;gap:.25rem;flex-direction:column;justify-content:center;align-items:center}.lc-close-button{width:var(--lc-icon-button-size, 44px);height:var(--lc-icon-button-size, 44px);display:flex;justify-content:center;align-items:center;border:none;border-radius:100%;background:#00000080;background:color-mix(in oklab,#000 50%,transparent)}.lc-video-container{position:relative;height:100%;width:100%;background:#000000b3 no-repeat center;background-size:cover}@media (min-width: 768px){.lc-product-detail-view .lc-video-container{width:50%}}@media (min-width: 768px){.lc-video-only-view .lc-video-container{width:var(--video-container-width, 100%);height:var(--video-container-height, 100%)}}.lc-card-container{position:absolute;bottom:12px;z-index:10;width:100%;padding-inline:12px;box-sizing:border-box}.lc-product-detail-view .lc-card-container{display:none}@media (max-width: 768px){.lc-product-detail-view .lc-card-container{display:block}}.lc-product-detail-view .lc-video-modal-row{display:flex;justify-content:center;height:100%;width:100%}.lc-video-only-view .lc-video-modal-row{display:block;height:100%}.lc-product-detail-view cooee-item-detail{--header-display: none;width:50%;flex:1}@media (max-width: 768px){.lc-product-detail-view cooee-item-detail{--header-display: flex;width:100%;height:70dvh;position:absolute;bottom:0;z-index:2147483646}}.lc-video-only-view cooee-item-detail{width:100%;height:70dvh;z-index:2147483646;bottom:0;position:absolute;border-radius:var(--lc-card-radius) var(--lc-card-radius) 0 0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.video-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#0000004d;z-index:2}.video-loading-overlay .loading-spinner{width:30px;height:30px;border:3px solid rgba(255,255,255,.3);border-top:3px solid #fff;border-radius:50%;animation:spin 1s linear infinite}
3
3
  `],encapsulation:3})};export{Fe as VideoDetailDialogComponent};
@@ -1,4 +1,4 @@
1
- import{A as Fi,B as Ri,C as Oi,a as mi,b as fi,d as tt,e as dt,g as ie,h as hi,i as me,j as vi,k as yi,l as Ci,m as bi,n as Ue,o as xi,p as Vi,q as Ti,r as Ei,u as Ii,x as Mi,y as Mt,z as Ai}from"./chunk-LKYQ67KT.js";import{c as Y,d as ui,g as gi,i as _i,j as wi,k as pt,l as Si,m as Pi,n as ki,q as Di}from"./chunk-HS53AQV7.js";import{a as ut}from"./chunk-QG5GD32H.js";import{a as qe}from"./chunk-SBONG2TS.js";import{$,$a as te,A as zt,Aa as de,B as Ut,Ba as H,Da as S,E as _e,F as qt,Ga as He,Ha as je,I as Zt,Ia as $e,K as oe,L as lt,La as pe,Ma as Xe,N as Qt,O as I,P as Wt,Pa as oi,Q as Gt,Qa as se,Ra as ri,S as St,Sa as ze,Wa as et,X as j,Xa as De,Ya as ye,Z as Jt,_ as Yt,aa as Kt,ab as ai,b as Lt,bb as si,cb as ue,da as Xt,db as Ce,e as Nt,eb as li,fa as ei,ga as Ke,gb as ci,ha as z,ia as U,ib as di,ja as ti,k as Bt,ka as we,kb as It,la as Ve,ma as B,na as k,oa as D,p as Ht,pa as re,qa as Ne,ra as Be,s as jt,sa as Te,sb as ct,ta as ii,ua as ni,v as ne,x as O,xb as pi,y as L,z as $t,za as ae}from"./chunk-I62LO6BZ.js";import{a as ve,b as Ot,e as Ui,f as qi}from"./chunk-V7UGKYBN.js";var Hi=Ui((mt,Bi)=>{"use strict";(function(o,e){typeof mt=="object"&&typeof Bi<"u"?e(mt):typeof define=="function"&&define.amd?define(["exports"],e):e((o=typeof globalThis<"u"?globalThis:o||self).Sqrl={})})(mt,function(o){"use strict";function e(a){var l,d,u=new Error(a);return l=u,d=e.prototype,Object.setPrototypeOf?Object.setPrototypeOf(l,d):l.__proto__=d,u}function t(a,l,d){var u=l.slice(0,d).split(/\n/),n=u.length,i=u[n-1].length+1;throw e(a+=" at line "+n+" col "+i+`:
1
+ import{A as Fi,B as Ri,C as Oi,a as mi,b as fi,d as tt,e as dt,g as ie,h as hi,i as me,j as vi,k as yi,l as Ci,m as bi,n as Ue,o as xi,p as Vi,q as Ti,r as Ei,u as Ii,x as Mi,y as Mt,z as Ai}from"./chunk-PFXNLOS6.js";import{c as Y,d as ui,g as gi,i as _i,j as wi,k as pt,l as Si,m as Pi,n as ki,q as Di}from"./chunk-Q4ZRCSCY.js";import{a as ut}from"./chunk-QG5GD32H.js";import{a as qe}from"./chunk-SBONG2TS.js";import{$,$a as te,A as zt,Aa as de,B as Ut,Ba as H,Da as S,E as _e,F as qt,Ga as He,Ha as je,I as Zt,Ia as $e,K as oe,L as lt,La as pe,Ma as Xe,N as Qt,O as I,P as Wt,Pa as oi,Q as Gt,Qa as se,Ra as ri,S as St,Sa as ze,Wa as et,X as j,Xa as De,Ya as ye,Z as Jt,_ as Yt,aa as Kt,ab as ai,b as Lt,bb as si,cb as ue,da as Xt,db as Ce,e as Nt,eb as li,fa as ei,ga as Ke,gb as ci,ha as z,ia as U,ib as di,ja as ti,k as Bt,ka as we,kb as It,la as Ve,ma as B,na as k,oa as D,p as Ht,pa as re,qa as Ne,ra as Be,s as jt,sa as Te,sb as ct,ta as ii,ua as ni,v as ne,x as O,xb as pi,y as L,z as $t,za as ae}from"./chunk-I62LO6BZ.js";import{a as ve,b as Ot,e as Ui,f as qi}from"./chunk-V7UGKYBN.js";var Hi=Ui((mt,Bi)=>{"use strict";(function(o,e){typeof mt=="object"&&typeof Bi<"u"?e(mt):typeof define=="function"&&define.amd?define(["exports"],e):e((o=typeof globalThis<"u"?globalThis:o||self).Sqrl={})})(mt,function(o){"use strict";function e(a){var l,d,u=new Error(a);return l=u,d=e.prototype,Object.setPrototypeOf?Object.setPrototypeOf(l,d):l.__proto__=d,u}function t(a,l,d){var u=l.slice(0,d).split(/\n/),n=u.length,i=u[n-1].length+1;throw e(a+=" at line "+n+" col "+i+`:
2
2
 
3
3
  `+l.split(/\n/)[n-1]+`
4
4
  `+Array(i).join(" ")+"^")}e.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:!1}});var r=new Function("return this")().Promise,s=!1;try{s=new Function("return (async function(){}).constructor")()}catch(a){if(!(a instanceof SyntaxError))throw a}function c(a,l){return Object.prototype.hasOwnProperty.call(a,l)}function m(a,l,d){for(var u in l)c(l,u)&&(l[u]==null||typeof l[u]!="object"||u!=="storage"&&u!=="prefixes"||d?a[u]=l[u]:a[u]=m({},l[u]));return a}var g=/^async +/,_=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,A=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,W=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g,be=/[.*+\-?^${}()|[\]\\]/g;function xe(a){return be.test(a)?a.replace(be,"\\$&"):a}function it(a,l){l.rmWhitespace&&(a=a.replace(/[\r\n]+/g,`
@@ -13,7 +13,7 @@ import{A as Fi,B as Ri,C as Oi,a as mi,b as fi,d as tt,e as dt,g as ie,h as hi,i
13
13
  `],encapsulation:3})};var yt=class o extends me{item;data=ne(wi);dialogRef=ne(_i);ItemDetailLayout=Vi;constructor(){super(),this.triggerContext=this.data.triggerContext,this.item=this.data.item}close(){this.dialogRef.close()}engagementTriggerReceived(e){}update(){}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-item-quick-view"]],features:[te(ie()),$],decls:1,vars:2,consts:[[3,"closeClick","item","layout"]],template:function(t,r){t&1&&(k(0,"cooee-item-detail",0),H("closeClick",function(){return r.close()}),D()),t&2&&B("item",r.item)("layout",r.ItemDetailLayout.TWO_PANE)},dependencies:[Ii],styles:[`:host{display:flex;align-items:center;justify-content:center;height:100%}@media (min-width: 768px){cooee-item-detail{max-width:900px;max-height:80vh;border-radius:var(--lc-card-radius)}}
14
14
  `],encapsulation:3})};var Ct=class o{dialog=ne(pt);dialogRef;constructor(){}showItemQuickView(e,t){this.dialogRef=this.dialog.open(yt,{width:"100vw",height:"100dvh",backdropClass:["letscooee-backdrop"],data:{item:t,triggerContext:e}})}static \u0275fac=function(t){return new(t||o)};static \u0275prov=jt({token:o,factory:o.\u0275fac,providedIn:"root"})};var pn=(o,e)=>({enter:o,exit:e});function un(o,e){if(o&1&&(k(0,"div",7),se(1),D(),k(2,"div",8),se(3),D()),o&2){let t=S(2);I(),ze(" ",t.getCurrency(t.selectedVariant().price.cmp)," "),I(2),ze(" ",t.getDiscountPercentage(t.selectedVariant().price),"% off ")}}function mn(o,e){if(o&1&&(k(0,"div",6),se(1),D()),o&2){let t=S(2);I(),ze(" ",t.stickyATCConfig.leftText," ")}}function fn(o,e){if(o&1&&(k(0,"div",1)(1,"div",5),se(2),D(),z(3,un,4,2),z(4,mn,2,1,"div",6),D()),o&2){let t=S();I(2),ze(" ",t.getCurrency(t.selectedVariant().price.d)," "),I(),U(t.selectedVariant().price.cmp?3:-1),I(),U(t.stickyATCConfig.leftText?4:-1)}}function gn(o,e){if(o&1&&(k(0,"div",9),se(1),D()),o&2){let t=e.$implicit,r=e.$index;S(2);let s=ye(5);B("ngClass",si(2,pn,r===s.currentIndex,r===s.previousIndex)),I(),ze(" ",t," ")}}function hn(o,e){if(o&1&&(k(0,"div",4),we(1,gn,2,5,"div",9,ti),D()),o&2){S();let t=ye(5);I(),Ve(t.features)}}var bt=class o extends me{currentItem;stickyATCConfig;selectedVariant=_e(void 0);featureSlider=_e({features:[],currentIndex:0});constructor(){super()}onVariantChange(e){this.currentItem&&(this.currentItem.setSelectedVariantByID(e.detail.variantID),this.selectedVariant.set(this.currentItem.selectedOrFirstVariant.value))}engagementTriggerReceived(e){this.stickyATCConfig=e.stickyATCConfig??{},this.currentItem=e.items[0],this.selectedVariant.set(this.currentItem.vars[0]),this.stickyATCConfig.leftText=this.replaceVariables(this.stickyATCConfig.leftText),this.stickyATCConfig.rightText=this.replaceVariables(this.stickyATCConfig.rightText),this.startFeatureRotation()}update(){}getCurrency(e){return Ue(e)}getDiscountPercentage(e){return((e.cmp-e.d)/e.cmp*100).toFixed(0)}addToCart(){this.engagementService.executeCTA(tt.ADD_TO_CART,{item:this.currentItem})}startFeatureRotation(){if(!this.stickyATCConfig.rightText)return;let e=this.stickyATCConfig.rightText.split(`
15
15
  `),t=e.length===1?null:setInterval(()=>{this.featureSlider.update(r=>Ot(ve({},r),{previousIndex:r.currentIndex,currentIndex:(r.currentIndex+1)%r.features.length}))},3e3);this.featureSlider.set({intervalRef:t,currentIndex:0,features:e})}replaceVariables(e){return e?Ze(e,this.currentItem.getTemplateVariables(),this.triggerContext):""}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-sticky-atc"]],hostBindings:function(t,r){t&1&&H("letscooee:variant-change",function(c){return r.onVariantChange(c)},Qt)},features:[te(ie()),$],decls:7,vars:3,consts:[[1,"lc-wrapper"],[1,"lc-prices"],[1,"lc-button-wrapper"],["type","button",1,"lc-button","lc-button-atc",3,"click"],[1,"lc-features"],[1,"lc-sale-price"],[1,"lc-additional-text"],[1,"lc-compare-price"],[1,"lc-discount-label"],[1,"lc-feature",3,"ngClass"]],template:function(t,r){if(t&1){let s=ae();k(0,"div",0),z(1,fn,5,3,"div",1),k(2,"div",2)(3,"button",3),H("click",function(){return O(s),L(r.addToCart())}),se(4,"Add To Cart"),D(),et(5),z(6,hn,3,0,"div",4),D()()}if(t&2){I(),U(r.selectedVariant()&&r.stickyATCConfig.showProductInfo?1:-1),I(4);let s=De(r.featureSlider());I(),U(s.features.length?6:-1)}},dependencies:[ct],styles:[`:host{display:flex;justify-content:center;padding:10px;background-color:#fff;width:100%;box-shadow:4px 0 10px #0006;line-height:normal}.lc-wrapper{display:flex;justify-content:space-between;align-items:center;gap:8px;max-width:1100px;width:100%}.lc-prices{flex:1 1 100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px}@media (min-width: 768px){.lc-prices{gap:8px}}.lc-sale-price{font-size:24px;font-weight:600}.lc-compare-price{font-size:18px;font-weight:600;color:red;text-decoration:line-through}.lc-discount-label{font-size:12px;font-weight:500;color:green}.lc-button-wrapper{flex:1 1 100%;display:flex;flex-direction:column;gap:4px;align-items:center}.lc-button{background-color:#000;color:#fff;opacity:1;pointer-events:auto;border-radius:4px;min-width:150px;width:100%;padding:8px}.lc-additional-text,.lc-feature{font-size:12px;color:#666}.lc-features{position:relative;overflow:hidden;height:16px;text-align:center;width:100%}.lc-features .lc-feature{position:absolute;width:100%;opacity:0;transform:translateY(100%);transition:transform .5s ease,opacity .5s ease}.lc-features .lc-feature.enter{opacity:1;transform:translateY(0);z-index:2}.lc-features .lc-feature.exit{opacity:0;transform:translateY(-100%);z-index:1}
16
- `],encapsulation:3})};var yn=["videoEl"];async function $i(){return(await import("./video-detail-dialog.component-P6LHKMGZ.js")).VideoDetailDialogComponent}var Ee=class o extends me{videoElements;videos;videoConfig;dialogRef=null;dialog=ne(pt);isMobile=Ei();pausedVideos=[];videoLoadingStates=new Map;intersectionObserver;visibleVideos=new Set;constructor(){super(),$i()}ngAfterViewInit(){this.checkAndOpenVideoFromUrl()}ngOnDestroy(){super.ngOnDestroy(),this.intersectionObserver?.disconnect()}engagementTriggerReceived(e){this.videoConfig=e.content?.videoConfig,this.videos=this.videoConfig.videos}onMuteToggled(e,t){e||this.videoElements.forEach(r=>{r.nativeElement!==t&&(r.nativeElement.muted=!0,r.nativeElement.pause())})}sendTriggerClicked(e,t){this.sendEvent("CE Trigger Clicked",{},e,t)}async onVideoTap(e,t,r,s){e?.stopPropagation(),e?.preventDefault();let c=t.items?.[0];if(this.sendTriggerClicked(t,c),this.videoConfig.footerContent==="NONE"){s&&(s.muted=!1,s.play(),this.onMuteToggled(!1,s));return}await this.openDialog(t,r)}sendEvent(e,t,r,s){let c=new gi(e,t,this.engagementTrigger);c.setVideos(r),s&&(c.items=[s.toEmbed()]),window.CooeeSDK.sendEvent(c)}onDialogClosed(){this.resumePlaylistVideos()}isVideoLoading(e){return this.videoLoadingStates.get(e)??!0}onVideoLoadStart(e){this.videoLoadingStates.set(e,!0)}onVideoCanPlay(e){this.videoLoadingStates.set(e,!1)}playVideo(e){e.play().catch(t=>{Y.error("Failed to play video:",t)})}setupIntersectionObserver(e=.5,t="50px"){this.intersectionObserver=new IntersectionObserver(r=>{r.forEach(s=>{let c=s.target,m=c.dataset.videoId;m&&(s.isIntersecting?(this.visibleVideos.add(m),this.handleVideoVisibilityChange(c,!0)):(this.visibleVideos.delete(m),this.handleVideoVisibilityChange(c,!1)))})},{threshold:e,rootMargin:t}),setTimeout(()=>{this.videoElements.forEach(r=>{this.intersectionObserver?.observe(r.nativeElement)})},100)}handleVideoVisibilityChange(e,t){t?this.onVideoBecameVisible(e):e.pause()}onVideoBecameVisible(e){this.playVideo(e)}pauseAllPlaylistVideos(){this.pausedVideos=[],this.videoElements.forEach(e=>{let t=e.nativeElement;t.paused||(this.pausedVideos.push(t),t.pause())})}resumePlaylistVideos(){this.pausedVideos.forEach(e=>{e.play().catch(()=>{})}),this.pausedVideos=[]}async checkAndOpenVideoFromUrl(){let e=Di();if(!e||!this.videos)return;let t=ki();if(t.utm_campaign?.toLowerCase()!=="shoppable_video"||t.utm_source?.toLowerCase()!==Pi)return;let r=this.videos.findIndex(s=>s.shortID===+e);if(r!==-1){let s=this.videos[r];await yi.set("muted",!0),await this.openDialog(s,r)}}async openDialog(e,t){await fi();let r={videos:this.videos,currentIndex:t,triggerContext:this.triggerContext};this.dialogRef&&this.dialogRef.close(),this.pauseAllPlaylistVideos();let s=await $i();this.dialogRef=this.dialog.open(s,{width:"100vw",height:"100vh",data:r,providers:hi(this.triggerContext,{video:e,index:t}),disableClose:!0});let c={videoID:e.id,videoIndex:t};this.sendEvent("CE Video Dialog Opened",{current:c},e),this.dialogRef.closed.subscribe(m=>{if(this.dialogRef=null,!m)return;let g=m.lastVideoDuration*1e3,_={videoID:m.lastVideo.id,videoIndex:m.lastVideoIndex,playedTillMS:g,playedTillPercent:g/m.lastVideo.durationMS};this.sendEvent("CE Video Dialog Closed",{current:_},m.lastVideo),this.onDialogClosed()})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-abstract-video"]],viewQuery:function(t,r){if(t&1&&He(yn,5),t&2){let s;je(s=$e())&&(r.videoElements=s)}},features:[$],decls:0,vars:0,template:function(t,r){},encapsulation:2})};var Se=class o{video=It.required({alias:"cooeeVideoSources"});prioritySource=It("high");elementRef=ne(Zt);constructor(){di(()=>{this.updateSources()})}updateSources(){let e=this.elementRef.nativeElement,t=this.video(),r=this.prioritySource();e.querySelectorAll("source").forEach(c=>c.remove()),r==="best"?(this.addSource(t.bestSource),this.addSource(t.highSource),this.addSource(t.lowSource)):r==="low"?(this.addSource(t.lowSource),this.addSource(t.highSource),this.addSource(t.bestSource)):(this.addSource(t.highSource),this.addSource(t.bestSource),this.addSource(t.lowSource)),this.addSource(t.m3u8Source),e.load()}addSource(e){if(!e)return;let t=document.createElement("source");t.src=e.url,t.type=e.mimeType,this.elementRef.nativeElement.appendChild(t)}static \u0275fac=function(t){return new(t||o)};static \u0275dir=Jt({type:o,selectors:[["video","cooeeVideoSources",""]],inputs:{video:[1,"cooeeVideoSources","video"],prioritySource:[1,"prioritySource"]}})};var Cn=(o,e)=>e.id;function bn(o,e){if(o&1&&(re(0,"div",1),ue(1,"safeHtml")),o&2){let t=S();B("innerHTML",Ce(1,1,t.videoConfig.heading),oe)}}function xn(o,e){o&1&&(k(0,"div",6),re(1,"div",13),D())}function _n(o,e){if(o&1){let t=ae();k(0,"cooee-mute-toggle",14),H("toggled",function(s){O(t),S();let c=pe(6),m=S();return L(m.onMuteToggled(s,c))}),D()}if(o&2){S();let t=pe(6);B("muted",t.muted)("videoEl",t)}}function wn(o,e){if(o&1){let t=ae();k(0,"cooee-item-card",15),H("buttonClick",function(){O(t);let s=S(),c=s.$implicit,m=s.$index,g=pe(6),_=S();return L(_.addToCartClicked(null,c,m,g))})("click",function(s){O(t);let c=S(),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))}),D()}if(o&2){S();let t=ye(0);B("item",t)}}function Vn(o,e){if(o&1){let t=ae();k(0,"cooee-video-card",16),H("linkClicked",function(){O(t);let s=S().$implicit,c=S();return L(c.sendTriggerClicked(s))}),D()}if(o&2){S();let t=ye(1);B("card",t)}}function Tn(o,e){if(o&1){let t=ae();et(0)(1),k(2,"div",4)(3,"div",5),H("click",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))})("keydown.enter",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))})("keydown.space",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))}),z(4,xn,2,0,"div",6),k(5,"video",7,0),H("mouseenter",function(){O(t);let s=pe(6);S();let c=ye(1);return L(c&&s.play())})("mouseleave",function(){O(t);let s=pe(6);S();let c=ye(1);return L(c&&s.pause())})("loadstart",function(){let s=O(t).$implicit,c=S();return L(c.onVideoLoadStart(s.id))})("canplay",function(){let s=O(t).$implicit,c=S();return L(c.onVideoCanPlay(s.id))}),D(),k(7,"div",8),z(8,_n,1,2,"cooee-mute-toggle",9),D()(),k(9,"div",10),z(10,wn,1,1,"cooee-item-card",11)(11,Vn,1,1,"cooee-video-card",12),D()()}if(o&2){let t=e.$implicit,r=S(),s=ye(0),c=De(t.items[0]);I();let m=De(t.card),g=c&&r.videoConfig.footerContent==r.VideoConfigFooterContent.FIRST_ITEM,_=m&&r.videoConfig.footerContent==r.VideoConfigFooterContent.CARD;I(2),Xe("background-image",t.thumbnail?"url("+t.thumbnail+")":null),I(),U(r.isVideoLoading(t.id)?4:-1),I(),B("cooeeVideoSources",t)("muted",!0),Ke("preload",s?"metadata":"none")("autoplay",null)("data-video-id",t.id),I(3),U(r.videoConfig.showMuteButton?8:-1),I(2),U(g?10:_?11:-1)}}var xt=class o extends Ee{VideoConfigFooterContent=Mt;VideoConfigAutoPlay=Mi;swiperOptions=null;constructor(){super(),this.hasSwiper=!0}ngAfterViewInit(){super.ngAfterViewInit();let e=this.videoConfig.playlistConfig?.videoSwiper,t=e?(this.isMobile?e.gapSm:e.gap)+"px":window.cooeePlaylistGap??24,r=e?this.isMobile?e.maxInRowSm:e.maxInRow:"auto";this.swiperOptions={direction:"horizontal",effect:"slide",loop:e?.loop,freeMode:!0,spaceBetween:t,slidesPerView:r,mousewheel:{enabled:!0,forceToAxis:!0},autoplay:e?.autoplay?.enabled?{delay:e?.autoplay?.delay,disableOnInteraction:!1}:!1},this.setupIntersectionObserver(),this.playFirstVideo()}ngOnDestroy(){super.ngOnDestroy()}addToCartClicked(e,t,r,s){let c=t.items?.[0],m=mi.get().website?.canChangeVariantInCart;if(t.items?.length>1||c?.hasVariants()&&!m){this.onVideoTap(e,t,r,s);return}this.engagementService.executeCTA(tt.ADD_TO_CART,{item:c,video:t})}goToPDP(e,t){e?.stopPropagation(),e?.preventDefault();let r=t.items?.[0];this.engagementService.executeCTA(tt.GO_TO_PRODUCT,{item:r,video:t})}update(){}onVideoBecameVisible(e){this.shouldAutoPlay()&&(this.dialogRef?this.pausedVideos.push(e):this.playVideo(e))}shouldAutoPlay(){return this.videoConfig.autoPlay==="ON"||this.videoConfig.autoPlay==="ON_HOVER"&&this.isMobile}playFirstVideo(){}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-video-playlist"]],features:[te(ie()),$],decls:7,vars:6,consts:[["videoEl",""],[1,"heading-text",3,"innerHTML"],[3,"options","navigationConfig","paginationConfig"],["ngProjectAs","swiper-slides",5,["swiper-slides"]],[1,"swiper-slide","video-card"],["role","button","tabindex","0","aria-label","Play video","aria-haspopup","dialog",1,"video-wrapper",3,"click","keydown.enter","keydown.space"],[1,"video-loading-overlay"],["width","100%","playsinline","","loop","",3,"mouseenter","mouseleave","loadstart","canplay","cooeeVideoSources","muted"],[1,"video-controls"],[3,"muted","videoEl"],["role","region","aria-label","Video details",1,"video-footer"],["role","button","tabindex","0","aria-label","Product detail",3,"item"],[3,"card"],[1,"loading-spinner"],[3,"toggled","muted","videoEl"],["role","button","tabindex","0","aria-label","Product detail",3,"buttonClick","click","item"],[3,"linkClicked","card"]],template:function(t,r){if(t&1&&(et(0)(1),z(2,bn,2,3,"div",1),k(3,"cooee-swiper",2),ii(4,3),we(5,Tn,12,12,"div",4,Cn),ni(),D()),t&2){De(!r.videoConfig.autoPlay||r.videoConfig.autoPlay===r.VideoConfigAutoPlay.ON),I(),De(r.videoConfig.autoPlay===r.VideoConfigAutoPlay.ON_HOVER),I(),U(r.videoConfig.heading?2:-1);let s=r.videoConfig.playlistConfig==null?null:r.videoConfig.playlistConfig.videoSwiper;I(),B("options",r.swiperOptions)("navigationConfig",s==null?null:s.navigation)("paginationConfig",s==null?null:s.pagination),I(2),Ve(r.videos)}},dependencies:[Ri,Fi,Ai,Oi,Se,qe],styles:[`:host{display:block}cooee-swiper.swiper{margin:8px;padding-top:25px;padding-bottom:25px}.video-wrapper{position:relative;cursor:pointer;outline:none;border-radius:var(--lc-media-radius, 8px);background-size:cover;background-position:center;background-repeat:no-repeat}.video-wrapper video{width:100%;height:var(--lc-video-card-height);object-fit:cover;border-radius:var(--lc-media-radius, 8px);position:relative}.video-card.swiper-slide{width:var(--lc-video-card-width);transition:transform .3s ease}.video-card.swiper-slide:hover{transform:scale(1.05)}@media (max-width: 768px),(prefers-reduced-motion: reduce){.video-card.swiper-slide{transition:none}.video-card.swiper-slide:hover{transform:none}}.video-controls{position:absolute;bottom:8px;z-index:10;right:8px;display:flex;gap:8px}cooee-item-card{cursor:pointer;padding-left:0!important;padding-right:0!important}cooee-item-card .item-image{width:50px;height:50px;display:none}cooee-item-card .item-info{font-size:14px;line-height:normal}cooee-item-card .item-info .item-name{-webkit-line-clamp:1;overflow:hidden}.video-loading-overlay{border-radius:var(--lc-media-radius, 8px)}
16
+ `],encapsulation:3})};var yn=["videoEl"];async function $i(){return(await import("./video-detail-dialog.component-HHHMPLSX.js")).VideoDetailDialogComponent}var Ee=class o extends me{videoElements;videos;videoConfig;dialogRef=null;dialog=ne(pt);isMobile=Ei();pausedVideos=[];videoLoadingStates=new Map;intersectionObserver;visibleVideos=new Set;constructor(){super(),$i()}ngAfterViewInit(){this.checkAndOpenVideoFromUrl()}ngOnDestroy(){super.ngOnDestroy(),this.intersectionObserver?.disconnect()}engagementTriggerReceived(e){this.videoConfig=e.content?.videoConfig,this.videos=this.videoConfig.videos}onMuteToggled(e,t){e||this.videoElements.forEach(r=>{r.nativeElement!==t&&(r.nativeElement.muted=!0,r.nativeElement.pause())})}sendTriggerClicked(e,t){this.sendEvent("CE Trigger Clicked",{},e,t)}async onVideoTap(e,t,r,s){e?.stopPropagation(),e?.preventDefault();let c=t.items?.[0];if(this.sendTriggerClicked(t,c),this.videoConfig.footerContent==="NONE"){s&&(s.muted=!1,s.play(),this.onMuteToggled(!1,s));return}await this.openDialog(t,r)}sendEvent(e,t,r,s){let c=new gi(e,t,this.engagementTrigger);c.setVideos(r),s&&(c.items=[s.toEmbed()]),window.CooeeSDK.sendEvent(c)}onDialogClosed(){this.resumePlaylistVideos()}isVideoLoading(e){return this.videoLoadingStates.get(e)??!0}onVideoLoadStart(e){this.videoLoadingStates.set(e,!0)}onVideoCanPlay(e){this.videoLoadingStates.set(e,!1)}playVideo(e){e.play().catch(t=>{Y.error("Failed to play video:",t)})}setupIntersectionObserver(e=.5,t="50px"){this.intersectionObserver=new IntersectionObserver(r=>{r.forEach(s=>{let c=s.target,m=c.dataset.videoId;m&&(s.isIntersecting?(this.visibleVideos.add(m),this.handleVideoVisibilityChange(c,!0)):(this.visibleVideos.delete(m),this.handleVideoVisibilityChange(c,!1)))})},{threshold:e,rootMargin:t}),setTimeout(()=>{this.videoElements.forEach(r=>{this.intersectionObserver?.observe(r.nativeElement)})},100)}handleVideoVisibilityChange(e,t){t?this.onVideoBecameVisible(e):e.pause()}onVideoBecameVisible(e){this.playVideo(e)}pauseAllPlaylistVideos(){this.pausedVideos=[],this.videoElements.forEach(e=>{let t=e.nativeElement;t.paused||(this.pausedVideos.push(t),t.pause())})}resumePlaylistVideos(){this.pausedVideos.forEach(e=>{e.play().catch(()=>{})}),this.pausedVideos=[]}async checkAndOpenVideoFromUrl(){let e=Di();if(!e||!this.videos)return;let t=ki();if(t.utm_campaign?.toLowerCase()!=="shoppable_video"||t.utm_source?.toLowerCase()!==Pi)return;let r=this.videos.findIndex(s=>s.shortID===+e);if(r!==-1){let s=this.videos[r];await yi.set("muted",!0),await this.openDialog(s,r)}}async openDialog(e,t){await fi();let r={videos:this.videos,currentIndex:t,triggerContext:this.triggerContext};this.dialogRef&&this.dialogRef.close(),this.pauseAllPlaylistVideos();let s=await $i();this.dialogRef=this.dialog.open(s,{width:"100vw",height:"100vh",data:r,providers:hi(this.triggerContext,{video:e,index:t}),disableClose:!0});let c={videoID:e.id,videoIndex:t};this.sendEvent("CE Video Dialog Opened",{current:c},e),this.dialogRef.closed.subscribe(m=>{if(this.dialogRef=null,!m)return;let g=m.lastVideoDuration*1e3,_={videoID:m.lastVideo.id,videoIndex:m.lastVideoIndex,playedTillMS:g,playedTillPercent:g/m.lastVideo.durationMS};this.sendEvent("CE Video Dialog Closed",{current:_},m.lastVideo),this.onDialogClosed()})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-abstract-video"]],viewQuery:function(t,r){if(t&1&&He(yn,5),t&2){let s;je(s=$e())&&(r.videoElements=s)}},features:[$],decls:0,vars:0,template:function(t,r){},encapsulation:2})};var Se=class o{video=It.required({alias:"cooeeVideoSources"});prioritySource=It("high");elementRef=ne(Zt);constructor(){di(()=>{this.updateSources()})}updateSources(){let e=this.elementRef.nativeElement,t=this.video(),r=this.prioritySource();e.querySelectorAll("source").forEach(c=>c.remove()),r==="best"?(this.addSource(t.bestSource),this.addSource(t.highSource),this.addSource(t.lowSource)):r==="low"?(this.addSource(t.lowSource),this.addSource(t.highSource),this.addSource(t.bestSource)):(this.addSource(t.highSource),this.addSource(t.bestSource),this.addSource(t.lowSource)),this.addSource(t.m3u8Source),e.load()}addSource(e){if(!e)return;let t=document.createElement("source");t.src=e.url,t.type=e.mimeType,this.elementRef.nativeElement.appendChild(t)}static \u0275fac=function(t){return new(t||o)};static \u0275dir=Jt({type:o,selectors:[["video","cooeeVideoSources",""]],inputs:{video:[1,"cooeeVideoSources","video"],prioritySource:[1,"prioritySource"]}})};var Cn=(o,e)=>e.id;function bn(o,e){if(o&1&&(re(0,"div",1),ue(1,"safeHtml")),o&2){let t=S();B("innerHTML",Ce(1,1,t.videoConfig.heading),oe)}}function xn(o,e){o&1&&(k(0,"div",6),re(1,"div",13),D())}function _n(o,e){if(o&1){let t=ae();k(0,"cooee-mute-toggle",14),H("toggled",function(s){O(t),S();let c=pe(6),m=S();return L(m.onMuteToggled(s,c))}),D()}if(o&2){S();let t=pe(6);B("muted",t.muted)("videoEl",t)}}function wn(o,e){if(o&1){let t=ae();k(0,"cooee-item-card",15),H("buttonClick",function(){O(t);let s=S(),c=s.$implicit,m=s.$index,g=pe(6),_=S();return L(_.addToCartClicked(null,c,m,g))})("click",function(s){O(t);let c=S(),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))}),D()}if(o&2){S();let t=ye(0);B("item",t)}}function Vn(o,e){if(o&1){let t=ae();k(0,"cooee-video-card",16),H("linkClicked",function(){O(t);let s=S().$implicit,c=S();return L(c.sendTriggerClicked(s))}),D()}if(o&2){S();let t=ye(1);B("card",t)}}function Tn(o,e){if(o&1){let t=ae();et(0)(1),k(2,"div",4)(3,"div",5),H("click",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))})("keydown.enter",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))})("keydown.space",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=pe(6),A=S();return L(A.onVideoTap(s,m,g,_))}),z(4,xn,2,0,"div",6),k(5,"video",7,0),H("mouseenter",function(){O(t);let s=pe(6);S();let c=ye(1);return L(c&&s.play())})("mouseleave",function(){O(t);let s=pe(6);S();let c=ye(1);return L(c&&s.pause())})("loadstart",function(){let s=O(t).$implicit,c=S();return L(c.onVideoLoadStart(s.id))})("canplay",function(){let s=O(t).$implicit,c=S();return L(c.onVideoCanPlay(s.id))}),D(),k(7,"div",8),z(8,_n,1,2,"cooee-mute-toggle",9),D()(),k(9,"div",10),z(10,wn,1,1,"cooee-item-card",11)(11,Vn,1,1,"cooee-video-card",12),D()()}if(o&2){let t=e.$implicit,r=S(),s=ye(0),c=De(t.items[0]);I();let m=De(t.card),g=c&&r.videoConfig.footerContent==r.VideoConfigFooterContent.FIRST_ITEM,_=m&&r.videoConfig.footerContent==r.VideoConfigFooterContent.CARD;I(2),Xe("background-image",t.thumbnail?"url("+t.thumbnail+")":null),I(),U(r.isVideoLoading(t.id)?4:-1),I(),B("cooeeVideoSources",t)("muted",!0),Ke("preload",s?"metadata":"none")("autoplay",null)("data-video-id",t.id),I(3),U(r.videoConfig.showMuteButton?8:-1),I(2),U(g?10:_?11:-1)}}var xt=class o extends Ee{VideoConfigFooterContent=Mt;VideoConfigAutoPlay=Mi;swiperOptions=null;constructor(){super(),this.hasSwiper=!0}ngAfterViewInit(){super.ngAfterViewInit();let e=this.videoConfig.playlistConfig?.videoSwiper,t=e?(this.isMobile?e.gapSm:e.gap)+"px":window.cooeePlaylistGap??24,r=e?this.isMobile?e.maxInRowSm:e.maxInRow:"auto";this.swiperOptions={direction:"horizontal",effect:"slide",loop:e?.loop,freeMode:!0,spaceBetween:t,slidesPerView:r,mousewheel:{enabled:!0,forceToAxis:!0},autoplay:e?.autoplay?.enabled?{delay:e?.autoplay?.delay,disableOnInteraction:!1}:!1},this.setupIntersectionObserver(),this.playFirstVideo()}ngOnDestroy(){super.ngOnDestroy()}addToCartClicked(e,t,r,s){let c=t.items?.[0],m=mi.get().website?.canChangeVariantInCart;if(t.items?.length>1||c?.hasVariants()&&!m){this.onVideoTap(e,t,r,s);return}this.engagementService.executeCTA(tt.ADD_TO_CART,{item:c,video:t})}goToPDP(e,t){e?.stopPropagation(),e?.preventDefault();let r=t.items?.[0];this.engagementService.executeCTA(tt.GO_TO_PRODUCT,{item:r,video:t})}update(){}onVideoBecameVisible(e){this.shouldAutoPlay()&&(this.dialogRef?this.pausedVideos.push(e):this.playVideo(e))}shouldAutoPlay(){return this.videoConfig.autoPlay==="ON"||this.videoConfig.autoPlay==="ON_HOVER"&&this.isMobile}playFirstVideo(){}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-video-playlist"]],features:[te(ie()),$],decls:7,vars:6,consts:[["videoEl",""],[1,"heading-text",3,"innerHTML"],[3,"options","navigationConfig","paginationConfig"],["ngProjectAs","swiper-slides",5,["swiper-slides"]],[1,"swiper-slide","video-card"],["role","button","tabindex","0","aria-label","Play video","aria-haspopup","dialog",1,"video-wrapper",3,"click","keydown.enter","keydown.space"],[1,"video-loading-overlay"],["width","100%","playsinline","","loop","",3,"mouseenter","mouseleave","loadstart","canplay","cooeeVideoSources","muted"],[1,"video-controls"],[3,"muted","videoEl"],["role","region","aria-label","Video details",1,"video-footer"],["role","button","tabindex","0","aria-label","Product detail",3,"item"],[3,"card"],[1,"loading-spinner"],[3,"toggled","muted","videoEl"],["role","button","tabindex","0","aria-label","Product detail",3,"buttonClick","click","item"],[3,"linkClicked","card"]],template:function(t,r){if(t&1&&(et(0)(1),z(2,bn,2,3,"div",1),k(3,"cooee-swiper",2),ii(4,3),we(5,Tn,12,12,"div",4,Cn),ni(),D()),t&2){De(!r.videoConfig.autoPlay||r.videoConfig.autoPlay===r.VideoConfigAutoPlay.ON),I(),De(r.videoConfig.autoPlay===r.VideoConfigAutoPlay.ON_HOVER),I(),U(r.videoConfig.heading?2:-1);let s=r.videoConfig.playlistConfig==null?null:r.videoConfig.playlistConfig.videoSwiper;I(),B("options",r.swiperOptions)("navigationConfig",s==null?null:s.navigation)("paginationConfig",s==null?null:s.pagination),I(2),Ve(r.videos)}},dependencies:[Ri,Fi,Ai,Oi,Se,qe],styles:[`:host{display:block}cooee-swiper.swiper{margin:8px;padding-top:25px;padding-bottom:25px}.video-wrapper{position:relative;cursor:pointer;outline:none;border-radius:var(--lc-media-radius, 8px);background-size:cover;background-position:center;background-repeat:no-repeat}.video-wrapper video{width:100%;height:var(--lc-video-card-height);object-fit:cover;border-radius:var(--lc-media-radius, 8px);position:relative}.video-card.swiper-slide{width:var(--lc-video-card-width);transition:transform .3s ease}.video-card.swiper-slide:hover{transform:scale(1.05)}@media (max-width: 768px),(prefers-reduced-motion: reduce){.video-card.swiper-slide{transition:none}.video-card.swiper-slide:hover{transform:none}}.video-controls{position:absolute;bottom:8px;z-index:10;right:8px;display:flex;gap:8px}cooee-item-card{cursor:pointer;padding-left:0!important;padding-right:0!important}cooee-item-card .item-image{width:50px;height:50px;display:none}cooee-item-card .item-info{font-size:14px;line-height:normal}cooee-item-card .item-info .item-name{-webkit-line-clamp:1;overflow:hidden}.video-loading-overlay{border-radius:var(--lc-media-radius, 8px)}
17
17
  `],encapsulation:3})};var En=["videoElement"],Sn=o=>({"cursor-grab":o}),_t=class o extends Ee{videoElement;video;isDragging=!1;hidden=!1;cdkDrag=ne(ut,{self:!0});untilDestroyed=Ti();constructor(){super()}get popupClasses(){return this.hidden?["hidden"]:["visible"]}onClick(e){e.stopPropagation(),e.preventDefault(),this.onVideoClick()}ngOnInit(){super.ngOnInit();let e=this.elementRef.nativeElement.closest(".letscooee-engagement");e&&(e.style.zIndex="10000"),this.cdkDrag.moved.pipe(this.untilDestroyed).subscribe(()=>this.isDragging=!0)}ngAfterViewInit(){super.ngAfterViewInit(),setTimeout(()=>{this.autoPlay()},100)}onVideoClick(){if(this.isDragging){this.isDragging=!1;return}this.hidden=!0,this.onVideoTap(null,this.video,0)}close(){this.hidden=!0;let e=(new Date().getTime()-this.triggerContext.startTime.getTime())/1e3;this.sendEvent("CE Trigger Closed",{duration:e})}engagementTriggerReceived(e){super.engagementTriggerReceived(e),this.video=this.videos[0]}update(){}onDialogClosed(){this.hidden=!1}autoPlay(){let e=this.videoElement.nativeElement;this.hidden||this.playVideo(e)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-video-popup"]],viewQuery:function(t,r){if(t&1&&He(En,5),t&2){let s;je(s=$e())&&(r.videoElement=s.first)}},hostAttrs:["role","button","tabindex","0","aria-label","Open video popup "],hostVars:3,hostBindings:function(t,r){t&1&&H("keydown.enter",function(c){return r.onClick(c)})("keydown.space",function(c){return r.onClick(c)})("click",function(c){return r.onClick(c)}),t&2&&(de("cdkDragBoundary","body"),oi(r.popupClasses))},features:[te(ie()),Kt([{directive:ut,inputs:["cdkDragBoundary","cdkDragBoundary"]}]),$],decls:9,vars:5,consts:[["videoElement",""],[1,"popup-inner",3,"ngClass"],["type","button","aria-label","Close video popup",1,"close-button",3,"click"],["name","close","aria-hidden","true"],[1,"play-button"],["name","unmute","aria-hidden","true"],[1,"text"],["loop","","preload","metadata","playsinline","",3,"muted","cooeeVideoSources"]],template:function(t,r){if(t&1){let s=ae();k(0,"div",1)(1,"button",2),H("click",function(m){return O(s),m.stopPropagation(),L(r.close())}),re(2,"cooee-icon",3),D(),k(3,"div",4),re(4,"cooee-icon",5),k(5,"div",6),se(6,"Tap to unmute"),D()(),re(7,"video",7,0),D()}t&2&&(B("ngClass",ai(3,Sn,r.isDragging)),I(7),B("muted",!0)("cooeeVideoSources",r.video))},dependencies:[ct,Si,Se],styles:[`:host{position:fixed;display:block;right:24px;bottom:24px;min-height:150px;max-width:150px;box-shadow:0 25px 50px -12px #00000040}:host(.hidden){display:none}.popup-inner{display:flex;justify-content:center;align-items:center;position:relative}video{width:100%;border-radius:8px;background-color:#fff}.close-button{position:absolute;top:-14px;right:-14px;background-color:#00000080;border-radius:9999px;width:32px;height:32px;border:none;z-index:10;display:flex;justify-content:center;align-items:center}.play-button{display:flex;justify-content:center;align-items:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(1);transition:all .1s ease-in-out;z-index:999;flex-wrap:wrap;width:100%;max-width:130px;border-radius:5px;padding:5px 10px;background-color:#97979761;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.play-button cooee-icon{width:14px;height:14px}.play-button .text{font-size:11px;line-height:1;color:#fff;font-weight:400;margin-left:5px;text-align:center}
18
18
  `],encapsulation:3})};var In=(o,e)=>e.id;function Mn(o,e){if(o&1&&(re(0,"div",1),ue(1,"safeHtml")),o&2){let t=S();B("innerHTML",Ce(1,1,t.videoConfig.heading),oe)}}function Pn(o,e){o&1&&(k(0,"div",9),re(1,"div",11),D())}function kn(o,e){if(o&1){let t=ae();k(0,"div",4),H("click",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=S();return L(_.onVideoTap(s,m,g))})("keydown.enter",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=S();return L(_.onVideoTap(s,m,g))})("keydown.space",function(s){let c=O(t),m=c.$implicit,g=c.$index,_=S();return L(_.onVideoTap(s,m,g))}),$t(),k(1,"svg",5),re(2,"circle",6)(3,"circle",7),D(),zt(),k(4,"div",8),z(5,Pn,2,0,"div",9),k(6,"video",10,0),H("loadstart",function(){let s=O(t).$implicit,c=S();return L(c.onVideoLoadStart(s.id))})("canplay",function(){let s=O(t).$implicit,c=S();return L(c.onVideoCanPlay(s.id))}),D()()()}if(o&2){let t=e.$implicit,r=e.$index,s=S();Ke("aria-label","Open video story "+(r+1)),I(5),U(s.isVideoLoading(t.id)?5:-1),I(),B("poster",t.thumbnail,lt)("cooeeVideoSources",t)("prioritySource","low")("muted",!0),Ke("data-video-id",t.id)}}var wt=class o extends Ee{constructor(){super()}ngAfterViewInit(){super.ngAfterViewInit(),this.setupIntersectionObserver()}ngOnDestroy(){super.ngOnDestroy()}update(){}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=j({type:o,selectors:[["cooee-video-stories"]],features:[te(ie()),$],decls:4,vars:1,consts:[["videoEl",""],[1,"heading-text",3,"innerHTML"],[1,"video-stories"],["role","button","tabindex","0",1,"video-story"],["role","button","tabindex","0",1,"video-story",3,"click","keydown.enter","keydown.space"],["viewBox","0 0 100 100"],["cx","50","cy","50","r","48","fill","none","stroke-width","4"],["cx","50","cy","50","r","48","fill","none","stroke-width","4","stroke-linecap","round","stroke-dasharray","301.6","stroke-dashoffset","301.6",1,"video-story-circle"],[1,"video-wrapper"],[1,"video-loading-overlay"],["loop","","playsinline","","preload","metadata",3,"loadstart","canplay","poster","cooeeVideoSources","prioritySource","muted"],[1,"loading-spinner"]],template:function(t,r){t&1&&(z(0,Mn,2,3,"div",1),k(1,"div",2),we(2,kn,8,7,"div",3,In),D()),t&2&&(U(r.videoConfig.heading?0:-1),I(2),Ve(r.videos))},dependencies:[Se,qe],styles:[`:host{display:block}.video-stories{display:flex;overflow:auto;margin:.75rem;gap:.75rem;justify-content:center;align-items:center;scrollbar-width:none}.video-stories::-webkit-scrollbar{display:none}@media (max-width: 768px){.video-stories{justify-content:start!important}}.video-story{position:relative;width:5rem;height:5rem;cursor:pointer;flex-shrink:0}.video-story svg{position:absolute;top:0;left:0;width:100%;height:100%}.video-story svg circle:first-child{stroke:#d1d5db}.video-story svg circle:last-child{stroke:#3b82f6}.video-story .video-wrapper{position:relative;width:100%;height:100%;border-radius:9999px;overflow:hidden}.video-story .video-wrapper video{width:100%;height:100%;object-fit:cover;border-radius:9999px;position:relative;z-index:1}.video-story .video-wrapper .video-loading-overlay{border-radius:9999px}
19
19
  `],encapsulation:3})};ui("CooeeWidgetSDK");(async()=>{let o=await pi(Ni),e=(t,r)=>{let s=Li(t,{injector:o.injector});customElements.define(r,s)};e(bt,"cooee-sticky-atc"),e(vt,"cooee-savings-bar"),e(ht,"cooee-progressbar"),e(xt,"cooee-video-playlist"),e(_t,"cooee-video-popup"),e(wt,"cooee-video-stories"),e(vi,"cooee-product-options-picker"),sessionStorage.cooeeDebug&&import("./debugger.component-BLNLSLZS.js").then(t=>{e(t.DebuggerComponent,"cooee-debugger")}),window.cooeeShowQuickItem=(t,r)=>{o.injector.get(Ct).showItemQuickView(t,r)}})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@letscooee/web-sdk",
3
3
  "description": "Engage uniquely and boost conversions with AI-powered customer journeys driven by real-time intent",
4
- "version": "12.1.7",
4
+ "version": "12.1.8",
5
5
  "scripts": {
6
6
  "lint": "ng lint",
7
7
  "integrity": "./scripts/validate-integrity.sh",