PageSourceSearch

https://www.cantref.com/app/brands/default/2144.b277bd6f99aea2068cd6.js

js cantref.com collected 2026-09-29 02:39:15 UTC 18,108 bytes, 2 lines download raw bytes

1/*! For license information please see 2144.b277bd6f99aea2068cd6.js.LICENSE.txt */
2"use strict";(globalThis.webpackChunkloop_web=globalThis.webpackChunkloop_web||[]).push([[2144],{8418(t,i,e){e.d(i,{Mc:()=>d,R9:()=>c,YB:()=>u,fs:()=>l,ss:()=>r});const s=window.matchMedia("(prefers-reduced-motion: reduce)");let a=!1,h=null,n=!1;try{var o=Object.defineProperty({},"passive",{get:function(){n=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(t){}const l={supportsPassive:n,reducedMotionPref:s.matches,desktopSideHeaderLayout:null!=document.querySelector("body.site-layout.side-header-layout"),fx:[],fxAdd:(t,i,e=null)=>{let s=!1;if(l.fx.forEach(i=>{i.type==t&&(s=!0)}),!s){l.fx.push({type:t,enabled:i,callback:e,controller:document.createElement("div")});let s=l.fx.length-1,a=l.fx[s];a.controller.setAttribute("class","form-check form-switch");let h=document.createElement("input");h.setAttribute("id",`site-settings--fx--${s}`),h.setAttribute("class","form-check-input"),h.setAttribute("type","checkbox"),h.setAttribute("role","switch"),i&&h.setAttribute("checked",!0),h.addEventListener("click",()=>{l.fxToggle(a.type,h.checked)}),a.controller.appendChild(h);let n=document.createElement("label");n.setAttribute("for",`site-settings--fx--${s}`),n.setAttribute("class","form-check-label"),n.innerHTML=a.type,a.controller.appendChild(n)}e&&e(i),a||(()=>{if(null!=document.body.querySelector("#top-utility-bar")){let t=document.body.querySelector("#top-utility-bar--icon-links ul");if(null!=t){let i=document.createElement("li");i.classList.add("list-inline-item"),i.innerHTML='<button class="btn btn-link p-0" data-bs-toggle="modal" data-bs-target="#site-settings"><i class="fa-solid fa-cog" aria-hidden="true" title="Site settings"></i><span class="sr-only">Site settings</span></button>',t.appendChild(i)}else{let t=document.body.querySelector("#top-utility-bar--content"),i=document.createElement("div");i.setAttribute("id","top-utility-bar--icon-links"),i.innerHTML='<ul class="list-inline m-0"><li class="list-inline-item"><button class="btn btn-link p-0" data-bs-toggle="modal" data-bs-target="#site-settings"><i class="fa-solid fa-cog" aria-hidden="true" title="Site settings"></i><span class="sr-only">Site settings</span></button></li></ul>',t.appendChild(i)}}else{let t=document.body.querySelector("#main-header--content");if(null!=t){let i=document.createElement("button");i.setAttribute("id","main-header--content--site-settings-btn"),i.setAttribute("class","btn btn-link"),i.setAttribute("data-bs-toggle","modal"),i.setAttribute("data-bs-target","#site-settings"),i.innerHTML='<i class="fa-solid fa-cog" aria-hidden="true" title="Site settings"></i><span class="side-menu-layout--label">Site settings</span>',t.appendChild(i)}}let t=document.body.querySelector("#main-footer--mid-section--links ul");if(null!=t){let i=document.createElement("li");i.innerHTML='<a href="#site-settings" data-bs-toggle="modal" data-bs-target="#site-settings">Site settings</a>',t.appendChild(i)}a=!0})(),(()=>{if(!h){let t=document.createElement("div");t.setAttribute("id","site-settings"),t.setAttribute("class","modal fade"),t.setAttribute("data-bs-backdrop","static"),t.setAttribute("data-bs-keyboard","false"),t.setAttribute("tabindex","-1"),t.setAttribute("aria-hidden","true"),t.innerHTML='<div class="modal-dialog"><div class="modal-content theme--default"><div class="modal-header"><h1 class="modal-title h5 m-0">Site Settings</h1><button type="button" class="btn btn-link p-0" data-bs-dismiss="modal" aria-label="Close"><i class="fa-regular fa-times" aria-hidden="true" title="Close"></i></button></div><div class="modal-body"></div></div>',document.body.appendChild(t),h=document.body.querySelector("#site-settings .modal-body")}l.fx.length>0&&(h.innerHTML="<p>Manage the visual effects on this site:</p>",l.fx.forEach(t=>{h.appendChild(t.controller)}))})()},fxToggle:(t,i)=>{l.fx.forEach(e=>{e.type==t&&(e.enabled=i,e.callback&&e.callback(i))})}},c={vw:0,vh:0,setVw:t=>{c.vw=t},setVh:t=>{c.vh=t}},r={active:!1,setActive:t=>{r.active=t}},d={mobileActive:!1,setMobileActive:t=>{d.mobileActive=t},desktopActive:!1,setDesktopActive:t=>{d.desktopActive=t}},u={active:!1,setActive:t=>{u.active=t}}},2144(t,i,e){e.r(i);var s=e(8418),a=e(403),h=e(8987);const n=(t,i,e)=>{var s=Math.random()*(i-t+1)+t;return e?Math.floor(s):s},o=1e3/60,l=(new Image,2*Math.PI);let c=null,r=!1,d=!1,u=!1;class g{constructor(t){this.prevTime=0,this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.ctx.imageSmoothingEnabled=!1,this.ctx.fillStyle="#fff",this.redrawBound=()=>this.redraw(),this.spacing=90,this.flakes=[],this.mouse={x:null,y:null,life:0},this.fallSpeed=.5,r=document.body.classList.contains("snow-fx--alt"),r&&(this.flakeImg=new Image,this.flakeImg.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAYFBMVEX/////
2//////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////+iDE1YAAAAIHRSTlMSClMiAG04MScWDgb9gBrn2r6xnJGKcmNIRD0e879ZNLUyaWEAAACrSURBVBjTbdHXEcQgEAPQBYwJZ3AkO/Tf5amA1eebYRCCpmn6CeGJnCPyQvwABAPFoZARwVCCkVPWzIixyhGUYNGaXiVSu7ERSsI7+zVZdM66yPZZ5wUJUqa9OqTrSkG/zSiQj7ZLHc5j348zaNltRJVhagnns63r9pyhVDOISM1Sp2O7l+XejqTlrNAZmK99XZB1vzLQscgeZy9iK7Hl2Weyg3DT8SOz3/EHrDcQqYF97ywAAAAASUVORK5CYII="),d=document.body.classList.contains("snow-fx--small"),u=document.body.classList.contains("snow-fx--repel");let i=document.body.dataset.snowSpeed;void 0!==i&&(this.fallSpeed=parseFloat(i)),this.canvasWidth=0,this.canvasHeight=0,this.resize(this.canvas.offsetWidth,this.canvas.offsetHeight,!1),this.seedWidth=this.canvasWidth,this.seedHeight=this.canvasHeight;for(let t=this.spacing;t<this.canvasHeight;t+=this.spacing)for(let i=this.spacing;i<this.canvasWidth;i+=this.spacing)this.flakes.push(new f(i,t,this.spacing,this.fallSpeed));window.requestAnimationFrame(this.redrawBound),u&&window.addEventListener("mousemove",t=>{this.mouse.x=t.pageX-window.scrollX,this.mouse.y=t.pageY-window.scrollY,this.mouse.life=1},{passive:!0}),this.ro=new ResizeObserver(t=>{for(let i of t){const t=i.contentRect;let e=Math.ceil(t.width),s=Math.ceil(t.height);e==this.canvasWidth&&s==this.canvasHeight||window.requestAnimationFrame(()=>{this.resize(e,s,!0)})}}),this.ro.observe(this.canvas),this.fadeDelayTimeout=null;let e=document.body.dataset.fxFadeDelay;void 0!==e&&(this.fadeDelayTimeout=setTimeout(()=>{this.canvas.classList.add("fade-out"),this.canvas.onanimationend=t=>{t.target==this.canvas&&document.body.removeChild(this.canvas)}},Math.max(1e3,1e3*parseFloat(e)))),this.fadeOnScroll=!1,void 0!==document.body.dataset.fxFadeScroll&&(this.fadeOnScroll=!0,(0,a.ck)(({scroll:t})=>{this.fadeOnScroll&&t.top>s.R9.vh/2&&(this.canvas.classList.add("fade-out"),this.canvas.onanimationend=t=>{t.target==this.canvas&&document.body.removeChild(this.canvas)},this.fadeOnScroll=!1)}))}resize(t,i,e=!1){if(t!=this.canvasWidth||i!=this.canvasHeight){let s=this.canvasHeight,a=this.canvasWidth;if(this.canvasWidth=t,this.canvasHeight=i,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.ctx.imageSmoothingEnabled=!1,this.ctx.fillStyle="#fff",e&&this.canvasWidth-this.seedWidth>this.spacing){for(let t=this.spacing;t<s;t+=this.spacing)for(let i=a;i<this.canvasWidth;i+=this.spacing)this.flakes.push(new f(i,t,this.spacing,this.fallSpeed));this.seedWidth=this.canvasWidth}if(e&&this.canvasHeight-this.seedHeight>this.spacing){for(let t=s;t<this.canvasHeight;t+=this.spacing)for(let i=this.spacing;i<this.canvasWidth;i+=this.spacing)this.flakes.push(new f(i,t,this.spacing,this.fallSpeed));this.seedHeight=this.canvasHeight}}this.resizeRequested=!1}redraw(){let t=Date.now(),i=0==this.prevTime?0:Math.min(100,t-this.prevTime);this.prevTime=t,this.ctx.clearRect(0,0,this.canvasWidth,this.canvasHeight);const e=this.flakes.length;for(let t=0;t<e;t++){let e=this.flakes[t];e.update(i,this.canvasHeight,this.mouse),this.ctx.globalAlpha=e.alpha,r?this.ctx.drawImage(this.flakeImg,e.x-e.size/2,e.y-e.size/2,e.size,e.size):(this.ctx.beginPath(),this.ctx.arc(e.x,e.y,e.size,0,l,!1),this.ctx.fill())}u&&this.mouse.life>0&&(this.mouse.life-=.01),window.requestAnimationFrame(this.redrawBound)}}class f{constructor(t,i,e,s){const a=d?.5:3,h=d?2:5;this.spacing=e,this.xBase=t+n(-this.spacing,this.spacing,!0),this.x=this.xBase,this.y=i+n(-this.spacing,this.spacing,!0),this.r=n(0,.1),this.a=n(0,Math.PI),this.aStep=.01,this.weight=n(a,h),this.size=this.weight*(r?4:1),this.alpha=this.weight/h,this.speed=.4+this.weight/h*(3.6*s)}update(t,i,e){let s=t>0?t/o:1;if(u&&null!==e.x&&null!==e.y){const t=this.x-e.x,i=this.y-e.y,a=Math.sqrt(t*t+i*i);if(a<200&&a>0){const h=(200-a)/200,n=t/a,o=i/a;this.x+=n*h*6*s*e.life,this.y+=o*h*s*e.life}}this.x+=Math.cos(this.a)*this.r*s,this.a+=this.aStep*s,this.y+=this.speed*s,this.y>i&&(this.x=this.xBase,this.y=-10)}}if(!s.fs.reducedMotionPref){let t="site-settings--fx-disable--snow",i=!0,e=!1;const a=i=>{if(i&&!e){e=!0;let i=document.createElement("canvas");i.setAttribute("id","snow-overlay"),i.setAttribute("aria-hidden","true"),document.body.appendChild(i),c=new g(document.querySelector("#snow-overlay")),h.A.remove(t)}else if(!i&&e){e=!1;let i=document.querySelector("#snow-overlay");i&&document.body.removeChild(i),c=null,h.A.set(t,"value",{expires:7})}};h.A.get(t)&&(i=!1),s.fs.fxAdd("Snow",i,a)}},403(t,i,e){e.d(i,{ZB:()=>l,ck:()=>o});const s="undefined"==typeof window;function a(t,i){let e=0;return function(...s){const a=(new Date).getTime();if(!(a-e<t))return e=a,i(...s)}}function h(t){return Math.floor(t.reduce((t,i)=>t+i,0)/t.length)}const n=new class{constructor(){s||(this.lastX=0,this.lastY=0,this.lastWidth=window.innerWidth,this.lastHeight=window.innerHeight,this.lastMouseX=0,this.lastMouseY=0,this.lastWindowX=window.screenX,this.lastWindowY=window.screenY,this.lastAlpha=0,this.lastBeta=0,this.lastGamma=0,this.currAlpha=0,this.currBeta=0,this.currGamma=0,this.scrollHeight=document.body.scrollHeight,this.scrollChange=!1,this.sizeChange=!1,this.mouseChange=!1,this.positionChange=!1,this.orientationChange=!1,this.devicePixelRatioChange=!1,this.currX=0,this.currY=0,this.currWidth=window.innerWidth,this.currHeight=window.innerHeight,this.currMouseX=0,this.currMouseY=0,this.currWindowX=0,this.currDevicePixelRatio=this.lastDevicePixelRatio=Math.max(window.devicePixelRatio||1,1),this.mouseXVelocity=[],this.mouseYVelocity=[],this.lastMouseXVelocity=0,this.lastMouseYVelocity=0,this.windowXVelocity=[],this.windowYVelocity=[],this.lastWindowXVelocity=0,this.lastWindowYVelocity=0,this.updating=!1,this.callbacks=[],this.update=this.update.bind(this),this.handleResize=this.handleResize.bind(this),this.handleMouse=this.handleMouse.bind(this),this.handleOrientation=this.handleOrientation.bind(this),this.recalibrateOrientation=this.recalibrateOrientation.bind(this),this.formatData=this.formatData.bind(this),this.watch=this.watch.bind(this),this.unwatch=this.unwatch.bind(this),this.handleResize=a(110,this.handleResize),this.handleMouse=a(75,this.handleMouse),window.addEventListener("resize",this.handleResize),window.addEventListener("mousemove",this.handleMouse),window.addEventListener("deviceorientation",this.handleOrientation),requestAnimationFrame(this.update))}handleResize(t){this.currWidth=window.innerWidth,this.currHeight=window.innerHeight}handleMouse(t){this.currMouseX=t.clientX,this.currMouseY=t.clientY}handleOrientation(t){this.initialAlpha||(this.initialAlpha=t.alpha),this.initialBeta||(this.initialBeta=t.beta),this.initialGamma||(this.initialGamma=t.gamma),this.currAlpha=t.alpha,this.currBeta=t.beta,this.currGamma=t.gamma}recalibrateOrientation(){const t={prev:{alpha:this.initialAlpha,beta:this.initialBeta,gamma:this.initialGamma}};return this.initialAlpha=this.lastAlpha,this.initialBeta=this.lastBeta,this.initialGamma=this.lastGamma,t.current={alpha:this.initialAlpha,beta:this.initialBeta,gamma:this.initialGamma},t}formatData(){return{scroll:{changed:this.scrollChange,left:Math.floor(this.lastX),right:Math.floor(this.lastX+this.lastWidth),top:Math.floor(this.lastY),bottom:Math.floor(this.lastY+this.lastHeight),velocity:{x:Math.floor(this.scrollXVelocity)||0,y:Math.floor(this.scrollYVelocity)||0}},size:{changed:this.sizeChange,x:Math.floor(this.lastWidth),y:Math.floor(this.lastHeight),docY:Math.floor(this.scrollHeight)},mouse:{changed:this.mouseChange,x:Math.floor(this.lastMouseX),y:Math.floor(this.lastMouseY),velocity:{x:Math.floor(this.lastMouseXVelocity)||0,y:Math.floor(this.lastMouseYVelocity)||0}},position:{changed:this.positionChange,left:Math.floor(this.lastWindowX),right:Math.floor(this.lastWindowX+this.lastWidth),top:Math.floor(this.lastWindowY),bottom:Math.floor(this.lastWindowY+this.lastHeight),velocity:{x:Math.floor(this.lastWindowXVelocity)||0,y:Math.floor(this.lastWindowYVelocity)||0}},orientation:{changed:this.orientationChange,alpha:Math.floor(this.lastAlpha-this.initialAlpha)||0,beta:Math.floor(this.lastBeta-this.initialBeta)||0,gamma:Math.floor(this.lastGamma-this.initialGamma)||0},devicePixelRatio:{changed:this.devicePixelRatioChange,ratio:this.currDevicePixelRatio}}}update(){const{currWidth:t,currHeight:i,currMouseX:e,currMouseY:s,currAlpha:a,currBeta:n,currGamma:o,currDevicePixelRatio:l}=this;if(this.updating)return!1;this.scrollChange=this.sizeChange=this.mouseChange=this.positionChange=this.orientationChange=this.devicePixelRatioChange=!1,this.windowXVelocity.length>5&&this.windowXVelocity.shift(),this.windowXVelocity.push(window.screenX-this.lastWindowX),h(this.windowXVelocity)!=this.lastWindowXVelocity&&(this.lastWindowXVelocity=h(this.windowXVelocity),this.positionChange=!0),window.screenX!=this.lastWindowX&&(this.positionChange=!0,this.lastWindowX=window.screenX),this.windowYVelocity.length>5&&this.windowYVelocity.shift(),this.windowYVelocity.push(window.screenY-this.lastWindowY),h(this.windowYVelocity)!=this.lastWindowYVelocity&&(this.lastWindowYVelocity=h(this.windowYVelocity),this.positionChange=!0),window.screenY!=this.lastWindowY&&(this.positionChange=!0,this.lastWindowY=window.screenY),window.pageXOffset==this.lastX&&0!=this.scrollXVelocity&&(this.scrollXVelocity=0,this.scrollChange=!0),window.pageYOffset==this.lastY&&0!=this.scrollYVelocity&&(this.scrollYVelocity=0,this.scrollChange=!0),window.pageXOffset!=this.lastX&&(this.scrollChange=!0,this.scrollXVelocity=Math.floor(window.pageXOffset-this.lastX),this.lastX=window.pageXOffset),window.pageYOffset!=this.lastY&&(this.scrollChange=!0,this.scrollYVelocity=Math.floor(window.pageYOffset-this.lastY),this.lastY=window.pageYOffset),t!=this.lastWidth&&(this.lastWidth=t,this.scrollHeight=document.body.scrollHeight,this.sizeChange=!0),i!=this.lastHeight&&(this.lastHeight=i,this.sizeChange=!0),this.mouseXVelocity.length>5&&this.mouseXVelocity.shift(),this.mouseXVelocity.push(e-this.lastMouseX),h(this.mouseXVelocity)!=this.lastMouseXVelocity&&(this.lastMouseXVelocity=h(this.mouseXVelocity),this.mouseChange=!0),e!=this.lastMouseX&&(this.lastMouseX=e,this.mouseChange=!0),this.mouseYVelocity.length>5&&this.mouseYVelocity.shift(),this.mouseYVelocity.push(s-this.lastMouseY),h(this.mouseYVelocity)!=this.lastMouseYVelocity&&(this.lastMouseYVelocity=h(this.mouseYVelocity),this.mouseChange=!0),s==this.lastMouseY&&0==h(this.mouseYVelocity)||
2(this.lastMouseY=s,this.mouseChange=!0),a!=this.lastAlpha&&(this.lastAlpha=a,this.orientationChange=!0),n!=this.lastBeta&&(this.lastBeta=n,this.orientationChange=!0),o!=this.lastGamma&&(this.lastGamma=o,this.orientationChange=!0),(this.positionChange||this.sizeChange)&&(this.currDevicePixelRatio=Math.max(window.devicePixelRatio||1,1),this.currDevicePixelRatio!==this.lastDevicePixelRatio&&(this.devicePixelRatioChange=!0,this.lastDevicePixelRatio=this.currDevicePixelRatio)),(this.scrollChange||this.sizeChange||this.mouseChange||this.positionChange||this.orientationChange||this.devicePixelRatioChange)&&this.callbacks.forEach(t=>t(this.formatData())),this.updating=!1,requestAnimationFrame(this.update)}watch(t,i=!0){if("function"!=typeof t)throw new Error("Value passed to Watch is not a function");if(!s){if(i){const i=this.formatData();i.scroll.changed=!0,i.mouse.changed=!0,i.size.changed=!0,i.position.changed=!0,i.orientation.changed=!0,i.devicePixelRatio.changed=!0,t(i)}this.callbacks.push(t)}}unwatch(t){if("function"!=typeof t)throw new Error("The value passed to unwatch is not a function");s||(this.callbacks=this.callbacks.filter(i=>i!==t))}};s||(window.__TORNIS={watchViewport:n.watch,unwatchViewport:n.unwatch,getViewportState:n.formatData,recalibrateOrientation:n.recalibrateOrientation});const o=n.watch,l=n.unwatch;n.formatData,n.recalibrateOrientation},8987(t,i,e){function s(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var s in e)"__proto__"!==s&&(t[s]=e[s])}return t}e.d(i,{A:()=>a});var a=function t(i,e){function a(t,a,h){if("undefined"!=typeof document){"number"==typeof(h=s({},e,h)).expires&&(h.expires=new Date(Date.now()+864e5*h.expires)),h.expires&&(h.expires=h.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var n="";for(var o in h)h[o]&&(n+="; "+o,!0!==h[o]&&(n+="="+h[o].split(";")[0]));return document.cookie=t+"="+i.write(a,t)+n}}return Object.create({set:a,get:function(t){if("undefined"!=typeof document&&(!arguments.length||t)){for(var e=document.cookie?document.cookie.split("; "):[],s={},a=0;a<e.length;a++){var h=e[a].split("="),n=h.slice(1).join("=");try{var o=decodeURIComponent(h[0]);if(o in s||(s[o]=i.read(n,o)),t===o)break}catch(t){}}return t?s[t]:s}},remove:function(t,i){a(t,"",s({},i,{expires:-1}))},withAttributes:function(i){return t(this.converter,s({},this.attributes,i))},withConverter:function(i){return t(s({},this.converter,i),this.attributes)}},{attributes:{value:Object.freeze(e)},converter:{value:Object.freeze(i)}})}({read:function(t){return'"'===t[0]&&(t=t.slice(1,-1)),t.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(t){return encodeURIComponent(t).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}}]);

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.