PageSourceSearch

https://www.clinique.com/cdn/shop/t/82/assets/cart-samples-panel.z2fUEMjm.min.js

js clinique.com collected 2026-09-24 08:58:37 UTC 14,422 bytes, 1 lines download raw bytes

1import{OverlayPanel as e}from"./overlay-panel.CjSLAROM.min.js";import{o as t}from"./drawer-open-gate.BwNGmAV5.min.js";import{c as a}from"./campaign-presence.DbNs4REy.min.js";import{a as s,l as r,b as i,h as n,c as o,f as d,e as l,T as c,d as p,u as h}from"./cart-lines.DmR2f2C6.min.js";import{r as u,c as m}from"./resolve-skus-batcher.Ya6AHsM6.min.js";import{o as g,a as y,p as f,b as v}from"./reward-card.NV7ta4cf.min.js";import{i as S}from"./storefront-availability.DBaqX5PG.min.js";import{W as w}from"./WithApiClient.B8AOHZZP.min.js";import{W as I}from"./WithShopifyCart.Dy1sQhoJ.min.js";import{t as k}from"./vendor-lit.2u3dzq2T.min.js";import"./BaseElement.wji90fuE.min.js";import"./fetchWithCache.BJ12kVQ7.min.js";import"./vendor.D2HIaoTS.min.js";import"./cart-sections.BcMbGr3r.min.js";import"./debounce.uPZYEJlg.min.js";Object.getOwnPropertyDescriptor;const b={campaignId:p.campaignId,offerType:p.offerType,promoLineId:p.promoLineId,flag:"_sample"},C=e=>"true"===String((null==e?void 0:e[b.flag])??""),F=e=>{const t=document.createElement("textarea");return t.innerHTML=e,t.value};let E=class extends(I(w(e))){constructor(){super(...arguments),this.groups=[],this.viewGeneration=0,this.renderedSig="",this.selected=new Map,this.inCart=new Map,this.cartLineCount=0,this.unavailable=new Set,this.cardsArmed=!1,this.removeInFlight=!1,this.boundOnView=e=>{this.onView(e.detail??null)},this.boundOnCartUpdated=e=>{const t=e.detail;s(t)&&this.syncInCart(r(t))},this.drawerOpened=!1,this.pendingView=void 0,this.hasPendingView=!1,this.boundOnDrawerOpen=()=>{this.drawerOpened=!0,this.hasPendingView&&(this.hasPendingView=!1,this.onView(this.pendingView??null))}}connectedCallback(){super.connectedCallback(),document.addEventListener("talon:cartview",this.boundOnView),document.addEventListener("cart:updated",this.boundOnCartUpdated),this.disposeDrawerGate=t
1(this.boundOnDrawerOpen,this),void 0!==window.__T1_CARTVIEW__&&this.onView(window.__T1_CARTVIEW__),this.observeCartRerenders()}disconnectedCallback(){var e,t;super.disconnectedCallback(),document.removeEventListener("talon:cartview",this.boundOnView),document.removeEventListener("cart:updated",this.boundOnCartUpdated),null==(e=this.disposeDrawerGate)||e.call(this),null==(t=this.cartObserver)||t.disconnect()}firstUpdated(e){var t,a,s;null==(t=super.firstUpdated)||t.call(this,e),null==(a=this.queryHook("[data-samples-back]"))||a.addEventListener("click",()=>this.close()),null==(s=this.queryHook("[data-samples-cta]"))||s.addEventListener("click",()=>{this.onSubmit()}),g(this,e=>this.dropSample(e))}onOpened(){this.cardsArmed=!0,y(this)}onClosed(){var e;this.setError(!1),null==(e=this.queryHook("[data-samples-toast]"))||e.replaceChildren()}async onView(e){var t;if(this.syncInCart(i(null==e?void 0:e.lines)),this.removeDequalified(e),!this.drawerOpened)return this.pendingView=e,void(this.hasPendingView=!0);const a=this.viewGeneration+=1,s=((null==(t=null==e?void 0:e.gifts)?void 0:t.pickers)??[]).filter(e=>e.met&&n(e));if(await this.resolveGroups(this.groupByCampaign(s)),a!==this.viewGeneration)return;this.gateEntry(this.totalSamples()>0);const r=this.signature();r!==this.renderedSig?(this.renderGroups(),this.renderedSig=r):this.syncSelectionUI()}groupByCampaign(e){const t=new Map;for(const a of e){const e=t.get(a.campaignId)??t.set(a.campaignId,{campaignId:a.campaignId,header:a.header,pickQty:Math.max(1,a.pickQty),skus:new Set}).get(a.campaignId);e.pickQty=Math.max(e.pickQty,1,a.pickQty),a.options.forEach(t=>t.sku&&e.skus.add(t.sku))}return[...t.values()].map(e=>({...e,skus:[...e.skus]}))}get proxyBase(){return window.__T1_PROXY_BASE__||"/apps/talonone-proxy/api/public"}async resolveGroups(e){const t=[...new Set(e.flatMap(e=>e.skus))];let a=new Map;try{a=await u(t,m(this.proxyBase))}catch(s){}this.groups=e.map(e=>({campaignId:e.campaignId,header:e.header,pickQty:e.pickQty,samples:e.skus.map(e=>a.get(e)).filter(e=>!!e&&!this.unavailable.has(e.variantId))})).filter(e=>e.samples.length>0)}dropSample(e){var t;if(this.unavailable.has(e))return;this.unavailable.add(e),this.removeDroppedLine(e);let a=!1;this.groups=this.groups.map(t=>{const s=t.samples.filter(t=>t.variantId!==e);return s.length===t.samples.length?t:(a=!0,this.selectedFor(t.campaignId).delete(e),{...t,samples:s})}).filter(e=>e.samples.length>0),a&&(f(this.queryHook("[data-samples-groups]"),e,{input:"[data-sample-input]",card:"[data-sample-card]",containers:["[data-samples-group]"]}),this.renderedSig=this.signature(),null==(t=this.queryHook("[data-samples-empty]"))||t.toggleAttribute("hidden",this.totalSamples()>0),this.syncSelectionUI(),this.gateEntry(this.totalSamples()>0))}async removeDroppedLine(e){const t=[],a=[];for(const[r,i]of this.inCart){const s=i.get(e);s&&(t.push(s),a.push(r),i.delete(e),this.selectedFor(r).delete(e))}if(t.length)try{await this.removeItemFromCart(t,{sections:t.length>=this.cartLineCount}),this.$emit("t1:rewards-removed",{count:t.length,campaignIds:a})}catch(s){}}totalSamples(){return this.groups.reduce((e,t)=>e+t.samples.length,0)}signature(){return this.groups.map(e=>`${e.campaignId}:${e.pickQty}:${e.samples.map(e=>e.variantId).join(",")}`).join("|")}syncInCart(e){const t=this.inCart,a=new Map;if(this.cartLineCount=e.length,e.forEach(({variantId:e,properties:t,key:s})=>{if(!C(t))return;const r=o(t);if(r&&e){const t=a.get(r)??new Map;t.set(e,s||e),a.set(r,t)}}),!this.isOpen){const e=new Set([...t.keys(),...a.keys()]);for(const s of e){const e=t.get(s)??new Map,r=a.get(s)??new Map,i=this.selectedFor(s);for(const t of e.keys())r.has(t)||i.delete(t);for(const t of r.keys())e.has(t)||i.add(t)}}this.inCart=a,this.syncSelectionUI()}async removeDequalified(e){var t,s;if(!e||this.removeInFlight)return;const r=e.lines??[];if(!r.length){const e=await this.getCart().catch(()=>null),t=(null==e?void 0:e.items)??[];if(t.length>0&&t.every(e=>d(e.properties??{}))){const e=t.filter(e=>C(e.properties??{})),a=e.map(e=>e.key);if(a.length){this.removeInFlight=!0;try{await this.removeItemFromCart(a,{sections:!0}),this.$emit("t1:rewards-removed",{count:a.length,campaignIds:[...new Set(e.map(e=>o(e.properties??{})))]})}catch(g){}finally{this.removeInFlight=!1}}}return}const i=(null==(t=e.gifts)?void 0:t.pickers)??[];(i.length||((null==(s=e.gifts)?void 0:s.claimable)??[]).length||r.some(l))&&(E.talonWarmed=!0);const c=r.length>0&&r.every(e=>d(e.properties??{})),p=new Set(i.filter(e=>e.met&&n(e)).map(e=>e.campaignId)),h=r.filter(t=>{if(!C(t.properties))return!1;if(c)return!0;const s=o(t.properties);return!!a(e,s)||E.talonWarmed&&!p.has(s)}),u=h.map(e=>e.key);if(!u.length)return;const m=u.length===r.length;this.removeInFlight=!0;try{await this.removeItemFromCart(u,{sections:m}),this.$emit("t1:rewards-removed",{count:u.length,campaignIds:[...new Set(h.map(e=>o(e.properties)))]})}catch(g){}finally{this.removeInFlight=!1}}renderGroups(){var e;const t=this.queryHook("[data-samples-groups]"),a=this.queryHook("[data-group-template]"),s=this.queryHook("[data-sample-card-template]");t&&a&&s&&(t.innerHTML="",null==(e=this.queryHook("[data-samples-empty]"))||e.toggleAttribute("hidden",this.totalSamples()>
10),this.groups.forEach(e=>{var r;const i=null==(r=a.content.firstElementChild)?void 0:r.cloneNode(!0);if(!i)return;i.dataset.campaign=String(e.campaignId);const n=i.querySelector("[data-samples-group-heading]");n&&(n.textContent=e.header);const o=i.querySelector("[data-samples-list]"),d=1===e.pickQty;e.samples.forEach((t,a)=>null==o?void 0:o.appendChild(this.buildCard(s,e,t,a,d))),t.appendChild(i)}),this.syncSelectionUI())}buildCard(e,t,a,s,r){var i,n;const o=null==(i=e.content.firstElementChild)?void 0:i.cloneNode(!0),d=o.querySelector("[data-sample-input]"),l=o.querySelector("[data-sample-label]"),c=`${this.panelId}-c${t.campaignId}-${s}`;let p;return d&&(d.id=c,d.value=a.variantId,d.dataset.campaign=String(t.campaignId),d.type=r?"radio":"checkbox",d.name=r?`${this.panelId}-g${t.campaignId}`:`${c}-pick`,d.setAttribute("aria-label",a.title),d.addEventListener("change",()=>this.onToggle(t.campaignId,a,d)),p=e=>{e.preventDefault(),d.checked=!1,this.onToggle(t.campaignId,a,d)},r&&d.addEventListener("keydown",e=>{d.disabled||" "!==e.key&&"Enter"!==e.key||(e.repeat?e.preventDefault():d.checked&&(null==p||p(e)))})),null==l||l.setAttribute("for",c),null==l||l.addEventListener("click",e=>{d&&e.target!==d&&(d.disabled&&"true"!==o.dataset.added?this.showLimitToast():r&&d.checked&&(null==p||p(e)))}),null==(n=o.querySelector("[data-sample-card-slot]"))||n.appendChild(v(a,{template:"product-card-sample",placeholderMode:"full",armed:this.cardsArmed})),o}syncSelectionUI(){var e;null==(e=this.queryHook("[data-samples-groups]"))||e.querySelectorAll("[data-samples-group]").forEach(e=>{const t=Number(e.dataset.campaign),a=this.inCartFor(t),s=this.selectedFor(t);e.querySelectorAll("[data-sample-input]").forEach(e=>{const t=e.closest("[data-sample-card]"),r=e.value;e.disabled=!1,e.checked=s.has(r),a.has(r)&&s.has(r)?t&&(t.dataset.added="true"):null==t||t.removeAttribute("data-added")}),this.syncLimitState(t)}),this.updateFooter()}selectedFor(e){let t=this.selected.get(e);return t||(t=new Set,this.selected.set(e,t)),t}inCartFor(e){return this.inCart.get(e)??new Map}pickQtyFor(e){var t;return(null==(t=this.groups.find(t=>t.campaignId===e))?void 0:t.pickQty)??1}usedSlots(e){return this.selectedFor(e).size}hasDelta(e){const t=this.selectedFor(e),a=this.inCartFor(e);if(t.size!==a.size)return!0;for(const s of t)if(!a.has(s))return!0;return!1}seedSelectedFromInCart(){this.selected.clear();for(const[e,t]of this.inCart)this.selected.set(e,new Set(t.keys()))}onToggle(e,t,a){if(a.disabled)return;const s=this.selectedFor(e);if(1===this.pickQtyFor(e))s.clear(),a.checked&&s.add(t.variantId);else if(a.checked){if(s.size>=this.pickQtyFor(e))return void(a.checked=!1);s.add(t.variantId)}else s.delete(t.variantId);this.afterSelectionChange(e)}afterSelectionChange(e){this.syncCardAddedState(e),this.syncLimitState(e),this.updateFooter()}syncCardAddedState(e){const t=this.groupSection(e);if(!t)return;const a=this.inCartFor(e),s=this.selectedFor(e);t.querySelectorAll("[data-sample-input]").forEach(e=>{const t=e.closest("[data-sample-card]");a.has(e.value)&&s.has(e.value)?t&&(t.dataset.added="true"):null==t||t.removeAttribute("data-added")})}atLimitFor(e){return 1!==this.pickQtyFor(e)&&this.usedSlots(e)>=this.pickQtyFor(e)}syncLimitState(e){var t;const a=this.groupSection(e);if(!a)return;const s=this.atLimitFor(e);a.querySelectorAll("[data-sample-input]").forEach(e=>{e.disabled=s&&!e.checked});const r=a.querySelector("[data-samples-limit]");r&&this.toggleBanner(r,"info",s),this.groups.some(e=>this.atLimitFor(e.campaignId))||null==(t=this.queryHook("[data-samples-toast]"))||t.replaceChildren()}groupSection(e){return this.queryHook(`[data-samples-group][data-campaign="${e}"]`)}fillCountTemplate(e,t,a){return e.replaceAll("%added%",String(t)).replaceAll("%total%",String(a))}updateFooter(){const e=this.queryHook("[data-samples-cta]");e&&(e.disabled=!this.groups.some(e=>this.hasDelta(e.campaignId)));const t=this.groups.reduce((e,t)=>e+this.usedSlots(t.campaignId),0),a=this.groups.reduce((e,t)=>e+t.pickQty,0),s=this.queryHook("[data-samples-count]");if(s){const e=s.dataset.countTemplate??"";s.textContent=a?this.fillCountTemplate(e,t,a):""}}async onSubmit(){const e=[],t=[],a=[];for(const i of this.groups){const s=this.selectedFor(i.campaignId),r=this.inCartFor(i.campaignId);for(const[t,n]of r)s.has(t)||(e.push(n),a.push(i.campaignId));for(const e of s)r.has(e)||t.push({id:Number(e),quantity:1,properties:{[b.promoLineId]:h(),[b.campaignId]:String(i.campaignId),[b.offerType]:c.sample,[b.flag]:"true"}})}if(e.length||t.length)try{this.setError(!1),e.length&&(await this.removeItemFromCart(e),this.$emit("t1:rewards-removed",{count:e.length,campaignIds:[...new Set(a
1)]})),t.length&&await this.addSamples(t),this.seedSelectedFromInCart(),this.close()}catch(s){const e=await this.pruneSoldOut(s,t);if(!e.size)return void this.setError(!0);const a=t.filter(t=>!e.has(String(t.id)));if(a.length)try{await this.addSamples(a),this.seedSelectedFromInCart(),this.syncSelectionUI()}catch(r){return void this.setError(!0)}this.setError(!0,!0)}}async addSamples(e){await this.addItemToCart(e),this.$emit("t1:rewards-added",{count:e.length,campaignIds:[...new Set(e.map(e=>{var t;return Number(null==(t=e.properties)?void 0:t[b.campaignId])}))]})}async pruneSoldOut(e,t){const a=new Set;if(!(e=>422===Number(null==e?void 0:e.status))(e)||!t.length)return a;const s=new Set(t.map(e=>String(e.id))),r=this.groups.flatMap(e=>e.samples).filter(e=>s.has(e.variantId)),i=await Promise.all(r.map(async e=>[e.variantId,await S(e.productHandle,e.variantId)]));for(const[n,o]of i)!1===o&&(this.dropSample(n),a.add(n));return a}gateEntry(e){const t=document.querySelector("[data-samples-entry]");t&&(t.toggleAttribute("hidden",!e),e&&this.syncEntryCopy(t))}syncEntryCopy(e){const t=e.querySelector("[data-samples-entry-helper]");if(!t)return;const a=this.groups.reduce((e,t)=>e+this.inCartFor(t.campaignId).size,0),s=this.groups.reduce((e,t)=>e+t.pickQty,0),r=a?t.dataset.addedTemplate:t.dataset.helperTemplate,i=this.fillCountTemplate(r??"",a,s);t.textContent!==i&&(t.textContent=i)}observeCartRerenders(){const e=document.querySelector('cart-sections[section-id="cart-drawer"]');e&&(this.cartObserver=new MutationObserver(()=>this.gateEntry(this.totalSamples()>0)),this.cartObserver.observe(e,{childList:!0,subtree:!0}))}queryHook(e){return this.querySelector(e)}setError(e,t=!1){const a=this.queryHook("[data-samples-error]");a&&this.toggleBanner(a,"error",e,t?a.dataset.soldOutMessage:void 0)}showLimitToast(){const e=this.queryHook("[data-samples-toast]");if(!e||e.querySelector("alert-banner"))return;const t=document.createElement("alert-banner");t.setAttribute("type","info"),t.setAttribute("auto-dismiss",""),t.setAttribute("description",F(e.dataset.message??"")),e.appendChild(t)}toggleBanner(e,t,a,s){if(!a)return void e.replaceChildren();const r=F(s??e.dataset.message??""),i=e.querySelector("alert-banner");if(i)return void i.setAttribute("description",r);const n=document.createElement("alert-banner");n.setAttribute("type",t),n.setAttribute("disable-close",""),n.setAttribute("description",r),e.appendChild(n)}};E.talonWarmed=!1,E=((e,t)=>{for(var a,s=t,r=e.length-1;r>=0;r--)(a=e[r])&&(s=a(s)||s);return s})([k("cart-samples-panel")],E);export{E as CartSamplesPanel,b as SAMPLE_PROPERTY_KEYS};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.