PageSourceSearch

https://lucybee.com/cdn/shop/t/111/compiled_assets/scripts.js?v=136687656807816228231791472827

js lucybee.com collected 2026-10-10 00:50:02 UTC 21,604 bytes, 2 lines download raw bytes

1(function(){var __sections__={};(function(){for(var i=0,s=document.getElementById("sections-script").getAttribute("data-sections").split(",");i<s.length;i++)__sections__[s[i]]=!0})(),(function(){if(__sections__.header)try{class StickyHeader extends HTMLElement{constructor(){super()}connectedCallback(){this.header=document.querySelector(".section-header"),this.headerIsAlwaysSticky=this.getAttribute("data-sticky-type")==="always"||this.getAttribute("data-sticky-type")==="reduce-logo-size",this.headerBounds={},this.setHeaderHeight(),window.matchMedia("(max-width: 990px)").addEventListener("change",this.setHeaderHeight.bind(this)),this.headerIsAlwaysSticky&&this.header.classList.add("shopify-section-header-sticky"),this.currentScrollTop=0,this.preventReveal=!1,this.predictiveSearch=this.querySelector("predictive-search"),this.onScrollHandler=this.onScroll.bind(this),this.hideHeaderOnScrollUp=()=>this.preventReveal=!0,this.addEventListener("preventHeaderReveal",this.hideHeaderOnScrollUp),window.addEventListener("scroll",this.onScrollHandler,!1),this.createObserver()}setHeaderHeight(){document.documentElement.style.setProperty("--header-height",`${this.header.offsetHeight}px`)}disconnectedCallback(){this.removeEventListener("preventHeaderReveal",this.hideHeaderOnScrollUp),window.removeEventListener("scroll",this.onScrollHandler)}createObserver(){new IntersectionObserver((entries,observer2)=>{this.headerBounds=entries[0].intersectionRect,observer2.disconnect()}).observe(this.header)}onScroll(){const scrollTop=window.pageYOffset||document.documentElement.scrollTop;if(!(this.predictiveSearch&&this.predictiveSearch.isOpen)){if(scrollTop>this.currentScrollTop&&scrollTop>this.headerBounds.bottom){if(this.header.classList.add("scrolled-past-header"),this.preventHide)return;requestAnimationFrame(this.hide.bind(this))}else scrollTop<this.currentScrollTop&&scrollTop>this.headerBounds.bottom?(this.header.classList.add("scrolled-past-header"),this.preventReveal?(window.clearTimeout(this.isScrolling),this.isScrolling=setTimeout(()=>{this.preventReveal=!1},66),requestAnimationFrame(this.hide.bind(this))):requestAnimationFrame(this.reveal.bind(this))):scrollTop<=this.headerBounds.top&&(this.header.classList.remove("scrolled-past-header"),requestAnimationFrame(this.reset.bind(this)));this.currentScrollTop=scrollTop}}hide(){this.headerIsAlwaysSticky||(this.header.classList.add("shopify-section-header-hidden","shopify-section-header-sticky"),this.closeMenuDisclosure(),this.closeSearchModal())}reveal(){this.headerIsAlwaysSticky||(this.header.classList.add("shopify-section-header-sticky","animate"),this.header.classList.remove("shopify-section-header-hidden"))}reset(){this.headerIsAlwaysSticky||this.header.classList.remove("shopify-section-header-hidden","shopify-section-header-sticky","animate")}closeMenuDisclosure(){this.disclosures=this.disclosures||this.header.querySelectorAll("header-menu"),this.disclosures.forEach(disclosure=>disclosure.close())}closeSearchModal(){this.searchModal=this.searchModal||this.header.querySelector("details-modal"),this.searchModal.close(!1)}}customElements.define("",StickyHeader)}catch(e){console.error(e)}})(),(function(){if(!(!__sections__["lb-advice-hub"]&&!Shopify.designMode))try{(()=>{for(const root of document.querySelectorAll(".lb-advice"))root.dataset.ready||(root.dataset.ready="true",init(root));async function init(root){const $=s=>root.querySelector(s),L=JSON.parse($("[data-labels]").textContent),norm=s=>(s||"").toLowerCase().replace(/[–—]/g,"-"),params=new URLSearchParams(location.search);let topic=params.get("topic")||"",selected={},limit=Math.max(9,Math.min(999,Number(params.get("limit"))||9)),items=[];for(const k of["product","concern","kind","meal","diet","interest","main_ingredient","recipe_time"])selected[k]=params.get(k)||"";$("[data-search]").value=params.get("q")||"";const topics=["skincare","tan","wellness","recipes","coconut"];topics.includes(topic)||(topic="");const rules={skincare:[["product",["Cleansers","Hydrating Foam Face Wash","Reviving Cleansing Cream","Ceramides Face Cream","Vitamin C Face Cream","Radiance-Boosting Face Cream","Bio-Retinol Night Cream","Eye Cream","Serums","Face Masks","Facial Oils","Scrubs & E
1xfoliators","SPF","Natural Deodorant","Body Care","Lip Balms","Soaps","Gua Sha","Bath Salts"]],["concern",["sensitive","dry","breakouts","redness","ageing","brightening","barrier","pregnancy","teen"]],["kind",["how","ingredients","routines"]]],tan:[["product",["Tanning Drops","Self-Tan Mousse","Tanning Mitt"]],["kind",["preparation","application","maintaining"]]],wellness:[["interest",["nutrition","vitamins_minerals","protein_fibre","gut_health","bloating","immune_health","stress_mood","sleep_rest","hydration","exercise","bones_joints","skin_hair_nails","hormonal","plant_based","food_intolerances","daily_routines"]],["product",["collagen","gut","daily","mushroom","electrolytes"]],["kind",["how","ingredients","routines"]]],recipes:[["meal",["breakfast","lunch","dinner","sweet","snacks","drinks","christmas"]],["diet",["vegan","vegetarian","gluten","dairy"]],["main_ingredient",["ingredient_avocado","ingredient_beans_and_chickpeas","ingredient_beef","ingredient_buckwheat","ingredient_cheese","ingredient_chicken","ingredient_chocolate","ingredient_coconut","ingredient_coffee","ingredient_corn","ingredient_dairy","ingredient_eggs","ingredient_fish","ingredient_flour","ingredient_fruit","ingredient_herbs_and_spices","ingredient_kefir_grains","ingredient_lamb","ingredient_lentils","ingredient_mushrooms","ingredient_noodles","ingredient_nuts_and_seeds","ingredient_oats","ingredient_pasta","ingredient_pastry","ingredient_polenta","ingredient_pork","ingredient_quinoa","ingredient_rice","ingredient_seafood","ingredient_tofu","ingredient_turkey","ingredient_vegetables","ingredient_wine"]],["recipe_time",["time_under15","time_15_30","time_30_45","time_45_plus"]]],coconut:[["kind",["complete","cooking","uses","ethics"]]]},wellnessTopicPatterns=Object.fromEntries([["nutrition","nutrition|diet|foods?|eating|protein|carbohydrate|fibre|fiber|sugar|fatty acids|nuts|vitamins?|minerals?|turmeric|cinnamon|coffee|soya|eggs|cheese"],["vitamins_minerals","vitamin|mineral|magnesium|ferritin"],["protein_fibre","protein|fibre|fiber|fatty acids|trans fats|amino acids|carbohydrate"],["gut_health","gut|digest|probiotic|prebiotic|microbiome|fermented|bacterial bonanza|bromelain"],["bloating","bloat|digest|stomach|gut may be out of balance"],["immune_health","immun|colds|flu\\b"],["stress_mood","stress|mood|anxiety|adaptogen"],["sleep_rest","sleep|restful|night.s rest"],["hydration","hydrat|electrolyte|importance of water|hot weather"],["exercise","exercis|fitness|workout|stretch|hiit|yoga|training|marathon|endurance|swimming|bike rides|winter motivation"],["bones_joints","bone|joint|healthy ageing|collagen as we age"],["skin_hair_nails","skin|hair|nails|collagen"],["hormonal","menopaus|hormon"],["plant_based","plant.based|vegetarian|soya"],["food_intolerances","allerg|intoleran|coeliac|gluten"],["daily_routines","routine|daily wellness|self.care|looking after yourself|working from home"]].map(([key,pattern])=>[key,new RegExp(pattern,"i")])),patterns={nutrition:/nutrition|diet|vitamin|minerals?|fatty acids|antioxidant|fermented food|sugar|cinnamon|nuts|turmeric|fibre|fiber|protein|carbohydrate|5 a day|foods? |eating|collagen|electrolyte|creatine|magnesium|cacao|mushroom|soya|coffee|coeliac|gluten|cheese|eggs/,gut_health:/gut|digest|probiotic|prebiotic|microbiome|fermented|fibre|fiber/,hormonal:/menopause|perimenopause|hormon/,daily_routines:/routine|daily|everyday|sleep|self.care|hydration|importance of water/,sensitive:/sensitive/,dry:/dry|dehydrat/,breakouts:/blemish|breakout|acne|spot.prone/,redness:/redness|rosacea/,ageing:/ageing|aging|mature skin|wrinkle/,brightening:/brighten|pigment|uneven skin/,barrier:/skin barrier/,pregnancy:/pregnan|breastfeed/,teen:/teen/,how:/how to use|how to apply|step.by.step/,ingredients:/ingredient|explained|what is|what are|science|benefits|vitamin c.*collagen/,routines:/routine|guide|daily|everyday/,preparation:/prepar|exfoliat|before.*tan/,application:/apply|application|how to|streak|tan tips/,maintaining:/maintain|long.lasting|last longer|fade/,collagen:/collagen/,gut:/gut balance|gut health|probiotic/,daily:/daily balance|superfood/,mushroom:/mushroom|cacao|reishi|lion.s mane/,electrolytes:/electrolyte/,complete:/ultimate guide/,cooking:/cooking|recipe|baking|frying/,uses:/how to|uses|using/,ethics:/ethical|fair.trade|sourcing|philippin|sustainab/},recipeTags={breakfast:"Breakfast",lunch:"Lunch",dinner:"Dinner",sweet:"Dessert",snacks:"Snack",drinks:"Drink",vegan:"Vegan",vegetarian:"Vegetarian",gluten:"Gluten Free",dairy:"Dairy Free"},recipePhotoFallbacks={"36428972109":"https://cdn.shopify.com/s/files/1/2133/6027/files/29384918465_3142fa8cc9_o_grande.jpg?v=1568192773","384970686541":"https://cdn.shopify.com/s/files/1/2133/6027/files/green-brococli-soup_grande.jpg?v=1588329387","385453490253":"https://cdn.shopify.com/s/files/1/2133/6027/files/tomato-soup-800x600_grande.jpg?v=1592233300"};function classify(a){a.blog==="recipes"&&!a.image&&(a.image=recipePhotoFallbacks[String(a.id).split("/").pop()]||null);const t=norm(a.title+" "+a.tags.join(" "));return a.text=norm(t+" "+a.summary),a.match=t,a.topics=[],a.blog==="recipes"?(a.topics.push("recipes"),a.tags.includes("Coconut Oil")&&a.topics.push("coconut")):a.blog==="guide"?a.topics=[a.topic]:(/beauty|skincare|skin|cleanser|face|gua sha|deodorant|lip balm|soap|bath salt|body care|spf|rosacea|redness|blemish|breakout|anti.ageing|pigmentation/.test(t)&&a.topics.push("skincare"),/self.tan|tanning|tan drops|tan mousse|your tan|tan tips/.test(t)&&a.topics.push("tan"),/wellness|health|fitness|nutrition|collagen|gut |daily balance|mushroom|electrolyte|menopause|creatine/.test(t)&&a.topics.push("wellness"),/coconut oil|being ethical/.test(t)&&a.topics.push("coconut")),a}const ingredientTags={ingredient_avocado:"Avocado",ingredient_beans_and_chickpeas:"Beans and chickpeas",ingredient_beef:"Beef",ingredient_buckwheat:"Buckwheat",ingredient_cheese:"Cheese",ingredient_chicken:"Chicken",ingredient_chocolate:"Chocolate",ingredient_coconut:"Coconut",ingredient_coffee:"Coffee",ingredient_corn:"Corn",ingredient_dairy:"Dairy",ingredient_eggs:"Eggs",ingredient_fish:"Fish",ingredient_flour:"Flour",ingredient_fruit:"Fruit",ingredient_herbs_and_spices:"Herbs and spices",
1ingredient_kefir_grains:"Kefir grains",ingredient_lamb:"Lamb",ingredient_lentils:"Lentils",ingredient_mushrooms:"Mushrooms",ingredient_noodles:"Noodles",ingredient_nuts_and_seeds:"Nuts and seeds",ingredient_oats:"Oats",ingredient_pasta:"Pasta",ingredient_pastry:"Pastry",ingredient_polenta:"Polenta",ingredient_pork:"Pork",ingredient_quinoa:"Quinoa",ingredient_rice:"Rice",ingredient_seafood:"Seafood",ingredient_tofu:"Tofu",ingredient_turkey:"Turkey",ingredient_vegetables:"Vegetables",ingredient_wine:"Wine"},timeTags={time_under15:"Under 15 minutes",time_15_30:"15-30 minutes",time_30_45:"30-45 minutes",time_45_plus:"45 minutes plus"},coconutArticleKinds={"36115054669":"ethics","36170891341":"ethics","36171022413":"uses","61943971917":"uses","61945970765":"complete","61946036301":"complete","61946200141":"complete","61946396749":"ethics","61946789965":"ethics","382560108621":"uses","382585339981":"ethics","382593040461":"ethics","382593138765":"ethics","382593171533":"ethics","382593204301":"ethics","382593400909":"uses","382594678861":"cooking","382602084429":"cooking","385609236557":"ethics","385784250445":"ethics","590321942753":"ethics"};function matches(a,k,v){if(!v)return!0;if(topic==="coconut"&&k==="kind"){const assigned=coconutArticleKinds[String(a.id).split("/").pop()];if(assigned)return assigned===v}return k==="main_ingredient"?a.blog==="recipes"&&a.tags.includes("Main ingredient: "+ingredientTags[v]):k==="recipe_time"?a.blog==="recipes"&&a.tags.includes("Recipe time: "+timeTags[v]):k==="meal"&&v==="christmas"?a.blog==="recipes"&&(/\bchristmas\b/i.test(a.title)||a.tags.some(t=>/^christmas(?: recipes)?$/i.test(t.trim()))):k==="interest"&&wellnessTopicPatterns[v]?wellnessTopicPatterns[v].test(a.title):recipeTags[v]?a.tags.includes(recipeTags[v]):patterns[v]?patterns[v].test(a.match):a.tags.some(t=>norm(t)===norm(v))||a.match.includes(norm(v))}function alternateRecipeImages(list){const recipes=list.filter(a=>a.blog==="recipes"),drawings=recipes.filter(a=>a.image&&a.tags.includes("Recipe image: Illustration")),photos=recipes.filter(a=>a.image&&!a.tags.includes("Recipe image: Illustration")),missing=recipes.filter(a=>!a.image),mixed=[];for(let i=0;i<Math.max(drawings.length,photos.length);i++)drawings[i]&&mixed.push(drawings[i]),photos[i]&&mixed.push(photos[i]);mixed.push(...missing);let index=0;return list.map(a=>a.blog==="recipes"?mixed[index++]:a)}function base(){const terms=norm($("[data-search]").value).trim().split(/\s+/).filter(Boolean);return items.filter(a=>(!topic||a.topics.includes(topic))&&terms.every(w=>a.text.includes(w)))}function save(){const p=new URLSearchParams(location.search);["topic","q","product","concern","kind","meal","diet","interest","main_ingredient","recipe_time","limit"].forEach(k=>p.delete(k)),topic&&p.set("topic",topic);const q=$("[data-search]").value.trim();q&&p.set("q",q);for(const[k,v]of Object.entries(selected))v&&p.set(k,v);limit>9&&p.set("limit",limit),history.replaceState(null,"",location.pathname+"?"+p.toString())}for(const key of topics){const b=document.createElement("button");b.type="button",b.textContent=L[key],b.dataset.topic=key,b.setAttribute("aria-pressed",String(topic===key)),b.onclick=()=>{topic=topic===key?"":key,selected={},limit=9,setSearch(!1),render()},$("[data-topics]").append(b)}const searchButton=document.createElement("button");searchButton.type="button",searchButton.textContent=L.free_search,searchButton.setAttribute("aria-controls",$("[data-search-panel]").id),$("[data-topics]").append(searchButton);function setSearch(open){$("[data-search-panel]").hidden=!open,searchButton.setAttribute("aria-expanded",String(open)),open||($("[data-search]").value="")}setSearch(!!$("[data-search]").value.trim()),searchButton.onclick=()=>{const open=$("[data-search-panel]").hidden;setSearch(open),topic!=="recipes"&&(topic="",selected={}),limit=9,render()},$("[data-search]").onkeydown=e=>{e.key==="Escape"&&(setSearch(!1),limit=9,render(),searchButton.focus())};function render(){const b=base();$("[data-time-note]").hidden=topic!=="recipes",$("[data-filters]").replaceChildren();for(const[key,options]of rules[topic]||[]){const candidates=b.filter(a=>Object.entries(selected).every(([k,v])=>k===key||matches(a,k,v))),available=options.filter(v=>candidates.some(a=>matches(a,key,v)));if(!available.length&&!selected[key]&&!["main_ingredient","recipe_time"].includes(key))continue;const label=document.createElement("label"),caption=document.createElement("span"),select=document.createElement("select");caption.textContent=L[key],select.setAttribute("aria-label",L[key]),select.add(new Option(L[key],""));for(const v of options)if(available.includes(v)||selected[key]===v){const opt=new Option(topic==="coconut"&&L["coconut_"+v]||L[v]||v,v);opt.disabled=!available.includes(v),select.add(opt)}select.value=selected[key]||"",select.onchange=()=>{selected[key]=select.value,limit=9,render()},label.append(caption,select),$("[data-filters]").append(label)}let results=b.filter(a=>Object.entries(selected).every(([k,v])=>matches(a,k,v)));const initial=!topic&&!$("[data-search]").value.trim();if(initial&&(results=[...results].sort((a,b2)=>Number(/complete guide|ultimate guide|pregnancy safe/i.test(b2.title))-Number(/complete guide|ultimate guide|pregnancy safe/i.test(a.title)))),results.sort((a,b2)=>+(b2.blog==="guide")-+(a.blog==="guide")),initial){const featured="/blogs/all-blogs/skin-barrier-repair-the-complete-guide";results.sort((a,b2)=>+(b2.url===featured)-+(a.url===featured))}results=alternateRecipeImages(results),$("[data-heading]").textContent=initial?L.start:L[topic]||L.all_advice,$("[data-status]").textContent=results.length?"":L.empty,$("[data-grid]").replaceChildren();for(const a of results.slice(0,limit)){const card=document.createElement("article");card.className="lb-advice__card";const link=document.createElement("a");if(link.href=a.url,a.image){const img=document.createElement("img");img.src=a.image,img.alt="",img.loading="lazy",img.width=720,img.height=436,link.append(img)}const body=document.createElement("div");body.className="lb-advice__card-body";const tag=document.createElement("small");tag.textContent=L[topic]||L[a.topics[0]]||L.eyebrow;const h=document.createElement("h3");h.textContent=a.title;const p=document.createElement("p");p.textContent=a.summary;const read=document.createElement("strong");if(read.textContent=(a.blog==="recipes"?L.read_recipe:L.read)+" \u2192",body.append(tag,h,p),a.blog==="recipes"&&(a.tags.includes("Recipe time estimated")||a.tags.includes("Recipe time from published recipe"))){const prep=a.tags.find(t=>t.startsWith("Recipe prep minutes: ")),cook=a.tags.find(t=>t.startsWith("Recipe cook minutes: "));if(prep&&cook){const time=document.createElement("p");time.className="lb-advice__recipe-time",time.textContent=(a.tags.includes("Recipe time estimated")?L.recipe_time_card:L.recipe_time_published).replace("{minutes}",Number(prep.split(": ")[1])+Number(cook.split(": ")[1])),a.tags.includes("Recipe extra waiting")&&(time.textContent+=" \xB7 "+L.recipe_waiting),body.append(time)}}body.append(read),link.append(body),card.append(link),$("[data-grid]").append(card)}$("[data-more]").hidden=results.length<=limit,$("[data-clear]").hidden=!topic&&!$("[data-search]").value&&!Object.values(selected).some(Boolean);for(const btn of root.querySelectorAll("[data-topic]"))btn.setAttribute("aria-pressed",String(btn.dataset.topic===topic));save()}
1$("[data-more]").onclick=()=>{limit+=9,render()},$("[data-clear]").onclick=()=>{topic="",selected={},limit=9,setSearch(!1),render()};let timer;$("[data-search]").oninput=()=>{clearTimeout(timer),timer=setTimeout(()=>{limit=9,render()},180)};async function fetchPage(blog,page){const u=new URL("/blogs/"+blog,location.origin);u.searchParams.set("view","lb-advice-data"),u.searchParams.set("page",page),params.get("preview_theme_id")&&u.searchParams.set("preview_theme_id",params.get("preview_theme_id"));const r=await fetch(u);if(!r.ok)throw Error("Fetch");const node=new DOMParser().parseFromString(await r.text(),"text/html").querySelector("#lb-advice-data");if(!node)throw Error("Data unavailable");return JSON.parse(node.textContent)}const fallback=$("[data-fallback]");try{const batches=await Promise.race([Promise.all(["all-blogs","recipes"].map(async b=>{const first=await fetchPage(b,1),rest=await Promise.all(Array.from({length:first.pages-1},(_,i)=>fetchPage(b,i+2)));return[first,...rest].flatMap(p=>p.items)})),new Promise((_,reject)=>setTimeout(()=>reject(Error("Timeout")),2e4))]),guides=JSON.parse($("[data-guides]").textContent).filter(a=>a.id&&a.url).map(a=>{const doc=new DOMParser().parseFromString(a.html,"text/html");return a.image=doc.querySelector("img")?.getAttribute("src")||null,a.summary=(doc.body.textContent||"").replace(/\s+/g," ").trim().slice(0,150),delete a.html,a});items=[...batches.flat(),...guides].map(classify),render(),fallback&&(fallback.hidden=!0)}catch{$("[data-status]").textContent=L.error,fallback&&(fallback.hidden=!1)}}})()}catch(e){console.error(e)}})(),(function(){if(__sections__["lb-editorial-article"])try{let initLucyBeeArticles2=function(scope){scope.querySelectorAll("[data-lb-editorial]").forEach(root=>{if(root.dataset.ready)return;root.dataset.ready="true";const content=root.querySelector("[data-content]"),headings=[...content.querySelectorAll("h2")].filter(h=>h.textContent.trim()),toc=root.querySelector("[data-toc]"),list=root.querySelector("[data-toc-list]");
1headings.forEach((h,i)=>{h.id||(h.id=content.id+"-heading-"+i);const li=document.createElement("li"),a=document.createElement("a");a.href="#"+h.id,a.textContent=h.textContent.trim(),li.append(a),list.append(li)}),headings.length&&(toc.hidden=!1,matchMedia("(max-width:800px)").matches&&(toc.querySelector("details").open=!1));const jump=root.querySelector("[data-jump]");if(jump){const ingredients=headings.find(h=>/^ingredients\b/i.test(h.textContent.trim()));ingredients&&(jump.href="#"+ingredients.id),content.querySelectorAll("p").forEach(p=>{/^(preparation time|cooking time|serves)\s*:/i.test(p.textContent.trim())&&p.classList.add("lb-editorial__fact")})}const print=root.querySelector("[data-print]");print&&(print.hidden=!1,print.addEventListener("click",()=>window.print()));const share=root.querySelector("[data-share]");share.hidden=!1,share.addEventListener("click",async()=>{const url=document.querySelector('link[rel="canonical"]')?.href||location.origin+location.pathname,status=root.querySelector("[data-share-status]");try{navigator.share?await navigator.share({title:root.querySelector("h1").textContent,url}):(await navigator.clipboard.writeText(url),status.textContent=root.dataset.copied)}catch(e){e.name!=="AbortError"&&(status.textContent=root.dataset.shareError)}})})};var initLucyBeeArticles=initLucyBeeArticles2;document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initLucyBeeArticles2(document)):initLucyBeeArticles2(document),document.addEventListener("shopify:section:load",e=>initLucyBeeArticles2(e.target))}catch(e){console.error(e)}})()})();
2//# sourceMappingURL=/cdn/shop/t/111/compiled_assets/scripts.js.map?v=136687656807816228231791472827

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.