PageSourceSearch

https://www.lifx.com/cdn/shop/t/1/assets/lifx-visualizer.js?v=149286744102439125601786504225

js lifx.com collected 2026-09-24 08:56:33 UTC 3,038 bytes, 2 lines download raw bytes

1(function(){"use strict";var LOCK="lifx-viz-locked";function init(root){if(!root||root.dataset.vizBound)return;root.dataset.vizBound="1";var baseUrl=root.dataset.vizUrl||"https://visualizer.lifx.com/",mode=root.dataset.vizMode||"modal";if(mode==="test"){var q=new URLSearchParams(window.location.search).get("viz");mode=q==="tab"?"tab":"modal"}var go=root.querySelector("[data-viz-go]"),modal=root.querySelector("[data-viz-modal]"),frame=root.querySelector("[data-viz-frame]"),loader=root.querySelector("[data-viz-loader]"),closeBtn=root.querySelector("[data-viz-close]"),pop=root.querySelector("[data-viz-pop]"),lastFocus=null;function buildUrl(){var u;try{u=new URL(baseUrl,window.location.href)}catch(e){return baseUrl}root.dataset.vizProduct&&u.searchParams.set("product",root.dataset.vizProduct);var live=document.querySelector('form[action*="/cart/add"] [name="id"]'),variant=live&&live.value||root.dataset.vizVariant;return variant&&u.searchParams.set("variant",variant),u.searchParams.set("source","pdp"),u.toString()}function openModal(){if(!(!modal||!frame)){lastFocus=document.activeElement;var url=buildUrl();pop&&(pop.href=url),loader&&(loader.hidden=!1),frame.src=url,modal.hidden=!1,modal.setAttribute("aria-hidden","false"),document.documentElement.classList.add(LOCK),document.body.classList.add(LOCK),requestAnimationFrame(function(){modal.classList.add("is-open")}),closeBtn&&closeBtn.focus(),track("open",{mode:"modal"})}}function closeModal(){!modal||modal.hidden||(modal.classList.remove("is-open"),modal.setAttribute("aria-hidden","true"),document.documentElement.classList.remove(LOCK),document.body.classList.remove(LOCK),window.setTimeout(function(){modal.hidden=!0,frame&&(frame.src="about:blank"),loader&&(loader.hidden=!1)},240),lastFocus&&lastFocus.focus&&lastFocus.focus(),track("close",{}))}function launch(){mode==="tab"?(window.open(buildUrl(),"_blank","noopener"),track("open",{mode:"tab"})):openModal()}function track(action,detail){detail=detail||{},detail.product=root.dataset.vizProduct||"",root.dispatchEvent(new CustomEvent("lifx:visualizer:"+action,{bubbles:!0,detail:detail})),typeof window.gtag=="function"&&window.gtag("event","visualizer_"+action,detail)}go&&go.addEventListener("click",launch),closeBtn&&closeBtn.addEventListener("click",closeModal),frame&&loader&&frame.addEventListener("load",function(){frame.src&&frame.src!=="about:blank"&&(loader.hidden=!0)}),document.addEventListener("keydown",function(e){e.key==="Escape"&&modal&&!modal.hidden&&closeModal()}),new URLSearchParams(window.location.search).get("visualizer")==="1"&&launch()}function boot(){document.querySelectorAll('[data-section-type="lifx-visualizer-cta"]').forEach(init)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",boot):boot(),document.addEventListener("shopify:section:load",function(e){var el=e.target.querySelector('[data-section-type="lifx-visualizer-cta"]');el&&init(el)})})();
2//# sourceMappingURL=/cdn/shop/t/1/assets/lifx-visualizer.js.map?v=149286744102439125601786504225

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.