PageSourceSearch

https://www.cultbeauty.co.uk/ssr-assets/Layout.astro_astro_type_script_index_2_lang.P0Rq5aN8.js

js cultbeauty.co.uk collected 2026-10-02 04:04:48 UTC 5,031 bytes, 1 lines download raw bytes

1import{u as d}from"./index.BqzFG1Jr.js";import{m as c,h as l,n as u,p,q as m,s as w,o as f}from"./basket.B3ICJ1z6.js";import{a as g}from"./quick-buy.Cx79YzIc.js";import{e as y,o as h}from"./pap.C5M76Uqj.js";import"./index.D4P-I_8t.js";import"./trackingHelpers.Dff4Fqsb.js";import"./sideSheet.CnzolTvg.js";import"./announcer.D1aJMc3V.js";import"./index.rZQxnU_0.js";import"./gtmReviews.DM15Qbgu.js";import"./loyalty.CixpQc-h.js";import"./sideSheetSkeletons.DFkpnWXA.js";import"./index.CIwg00_m.js";import"./accordionItem.C9UV3yiT.js";import"./stickyUtils.CO6qpSCM.js";import"./variations.DvNUxZse.js";import"./provenance.BZIpCnq5.js";import"./paymentProvider.Cs7hnmuK.js";const b=window.location.pathname.includes("/basket")||document.getElementById("basket")!==null;async function k(e,a={}){const{recommendationContext:t=null}=a;if(!t)return console.error("Invalid recommendation context provided"),{success:!1,error:{type:"api",message:"None or invalid recommendation context provided"}};const i=v(e);if(!i.valid)return console.error("Invalid products input:",i.error),{success:!1,error:{type:"validation",message:i.error}};try{P(e);const r=e.map(s=>({sku:s.sku,quantity:s.quantity})),n=(await d({operation:"AddToBasket",variables:{id:c(),items:r,currency:window.siteObj?.currency,shippingDestination:window.siteObj?.country,loyaltyEnabled:window.tenantConfig?.services?.account?.features?.loyalty?.enabled,basketRecs:window.tenantConfig?.application?.features?.basketRecs,vipPricingEnabled:window.tenantConfig?.application?.features?.vipPricingEnabled,subscriptionsEnabled:window.tenantConfig?.application?.features?.subscriptionsEnabled,enableSubscribeAndGain:window.tenantConfig?.application?.features?.enableSubscribeAndGain,wishlist:!window.tenantConfig?.application?.features?.wishlistDisabled,giftCards:window.tenantConfig?.application?.features?.giftCards,giftBoxes:window.tenantConfig?.application?.features?.giftBoxes?.enabled}}))?.data?.addProductsToBasket;if(n){l(n?.id),window.Tracker.store.set("basket",{...n});const s=r.map(o=>o.sku);return window.Tracker?.handlers?.addMultipleToCart(s,t,null),b?await u(n):p(n?.totalQuantity),{success:!0,addedSkus:r.map(o=>o.sku)}}return{success:!1,error:{type:"api",message:"Failed to add to basket"}}}catch(r){return console.error(`External add to basket from ${t} failed:`,r),{success:!1,error:{type:"api",message:r.message}}}}function v(e){if(!Array.isArray(e))return{valid:!1,error:"Products must be an array"};if(e.length===0)return{valid:!1,error:"Products array cannot be empty"};for(let a=0;a<e.length;a++){const t=e[a];if(!t||typeof t!="object")return{valid:!1,error:`Product at index ${a} must be an object`};if(!t.sku||typeof t.sku!="string")return{valid:!1,error:`Product at index ${a} must have a valid sku (string)`};if(t.sku.trim()==="")return{valid:!1,error:`Product at index ${a} has empty sku`};if(t.quantity===void 0||t.quantity===null)return{valid:!1,error:`Product at index ${a} must have a quantity`};if(typeof t.quantity!="number"||!Number.isInteger(t.quantity))return{valid:!1,error:`Product at index ${a} quantity must be an integer`};if(t.quantity<1)return{valid:!1,error:`Product at index ${a} quantity must be at least 1`}}return{valid:!0,error:null}}function P(e){let a={};e.forEach(t=>{const i=t.trackingData||{};a[t.sku]={item_id:t.sku,item_name:i.item_name||"",item_master:i.item_master||"",url:i.url||"",item_brand:i.item_brand||"",price:i.price||"",value:i.value||"",discount:i.discount||"",currency:window?.siteObj?.currency,quantity:t.quantity}}),window.Tracker?.store?.set("products",a)}function x(e){if(!e||typeof e!="string"){console.error("registerExternalEvent: message must be a non-empty string");return}window.Tracker.handlers.chatbotFeedback(e)}window.triggerQuickBuy=g;window.sharedFunctions||(window.sharedFunctions={});window.sharedFunctions.initWishlistSponsored=m;window.sharedFunctions.addToBasketWithMetadata=k;window.sharedFunctions.registerExternalEvent=x;window.toggleWishlist=async function(e,a){if(w.get()){const t=a?.firstElementChild?.classList?.contains("inWishlist"),r=await d({operation:t?"RemoveProductFromWishlist":"AddProductToWishlist",variables:{sku:e}});t&&r?.data?.removeProductFromWishlist?(window.Tracker.handlers.wishlistRemove(e),a?.f
1irstElementChild?.classList?.remove("inWishlist")):!t&&r?.data?.addProductToWishlist&&(window.Tracker.handlers.wishlistAdded(e),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"sponsoredProductAddedToWishlist",sku:e}),a?.firstElementChild?.classList?.add("inWishlist"))}else{const t=a?.closest(".product-media ")?.querySelector("img");await f({triggerElement:a,fragmentData:{image:t?.src},errorContext:"SponsoredAdsPLP"}),window.Tracker.handlers.wishlistLoggedout(e),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"sponsoredProductAddedToWishlist",sku:e})}};window.initPapBanners=function(e){e.querySelectorAll(".sponsored-product-pap-banner").forEach(t=>{t?.addEventListener("click",async()=>{const i=await y(t);await h(t,i)})})};

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.