PageSourceSearch

https://www.banuba.com/hubfs/assets/js/1.3.0/effects-grid-mobile-vXo2RlDJ.js

js banuba.com collected 2026-09-24 08:53:55 UTC 4,592 bytes, 1 lines download raw bytes

1import{l as e,q as t,L as i}from"./app.js";import{c as s}from"./create-element-5k6CQbW0.js";const{isMobileLayout:o,isTabletLayout:l,isLaptopLayout:r}=i;class a{constructor(i){return this.log=e("EffectsGridMobile"),i?(this.log("Init EffectsGridMobile: ",i),this.nodeElement=i,this.grids=t(".js-effects-grid__item",this.nodeElement),this.isMobile=!1,this.tabletBreakpoint=i.dataset.tabletBreakpoint||"tablet",this.onDesktopClick=this.onDesktopClick.bind(this),this.activeClass="active",this.callbacks={},this.setupCallbacks(),this.init(),this):(this.log("Node not found"),!1)}setupCallbacks(){return this.log("Setup callbacks"),this.grids.forEach((e=>{const t=function(){let e=(new Date).getTime(),t=performance?.now&&1e3*performance.now()||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(i=>{let s=16*Math.random();return e>0?(s=(e+s)%16|0,e=Math.floor(e/16)):(s=(t+s)%16|0,t=Math.floor(t/16)),("x"==i?s:7&s|8).toString(16)}))}();e.setAttribute("data-id",t),this.callbacks[t]=this.clickHandler.bind(this),e.addEventListener("click",this.callbacks[t])})),this}clickHandler(e){const t=e.target.closest(".js-effects-grid__item");return t.querySelector(".effects-grid__item-details")?this.isMobile?(this.log("Click on mobile element: ",e.target),this.createOverlay(),this.createPopup(t),this):(this.log("Click on desktop element: ",e.target),t.classList.contains(this.activeClass)?t.classList.remove(this.activeClass):(this.grids.forEach((e=>{e.classList.remove(this.activeClass)})),t.classList.add(this.activeClass)),this):(this.log("No details item found"),!1)}onDesktopClick(e){if(this.isMobile)return this;this.log("Click on element: ",e.target);e.target.closest(".js-effects-grid__item")||this.grids.forEach((e=>{e.classList.remove(this.activeClass)}))}enableDesktop(){return this.log("Enable desktop version"),this.closePopup(),document.addEventListener("click",this.onDesktopClick),this}disableDesktop(){return this.log("Disable desktop version"),document.removeEventListener("click",this.onDesktopClick),this}enableMobile(){return this.log("Enable mobile version"),this.isMobile=!0,this}disableMobile(){return this.log("Disable mobile version"),this.isMobile=!1,this}checkIfNeedMobileNow(){switch(this.tabletBreakpoint){case"mobile":return o();case"small-tablet":return l();case"tablet":return r();default:return!1}}update(){!1===this.isMobile&&this.checkIfNeedMobileNow()?this.enableMobile():this.disableDesktop(),this.isMobile&&!this.checkIfNeedMobileNow()?this.disableMobile():this.enableDesktop()}createOverlay(){return this.overlay?(this.overlay.classList.remove("not-visible"),this):(this.log("Create overlay"),this.overlay=s("div",["popup-overlay","popup-overlay-effects"]),document.body.appendChild(this.overlay),document.body.style.overflow="hidden",this.overlay.addEventListener("click",(e=>{e.target.classList.contains("popup-overlay")&&this.closePopup()})),this)}hideOverlay(){if(!this.overlay)return this;this.log("Hide overlay");const e=this.overlay;return this.overlay.classList.add("not-visible"),document.body.style.overflow="visible",this.overlay.addEventListener("transitionend",(()=>{e.remove()})),this.overlay=null,this}createPopup(e){this.log("Create popup: ",e);const t=e.querySelector(".effects-grid__item-title").textContent,i=e.querySelector(".effects-grid__item-image").innerHTML,o=e.querySelector(".effects-grid__item-static").innerHTML,l=document.querySelector(".popup-overlay-effects"),r="popup-effects-grid",a=s("div",[`${r}__inner`]),n=s("div",[`${r}__top`]),c=s("span",[`${r}__title`]);c.textContent=t;const h=s("div",[`${r}__content`]),d=s("div",[`${r}__image`]),p=s("div",[`${r}__image-inner`]);p.innerHTML=i;const u=s("div",[`${r}__static`]);u.innerHTML=o;const b=s("div",[`${r}__bottom`]),v=s("button",["btn","js-popup-close"]);v.textContent="OK",n.appendChild(c),d.appendChild(p),h.appendChild(d),h.appendChild(u),b.appendChild(v),a.appendChild(n),a.appendChild(h),a.appendChild(b);const f=s("div",["popup-effects-grid"]);f.appendChild(a),l.insertAdjacentElement("afterbegin",f);const m=l.querySelector(".popup-effects-grid");setTimeout((()=>{m.classList.add("opened")}),100);return m.querySelector(".js-popup-close").addEventListener("click",(e=>{this.closePopup()})),this}
1closePopup(){this.log("Close popup");const e=document.querySelector(".popup-overlay-effects"),t=e?.querySelector(".popup-effects-grid");return t?(t.classList.remove("opened"),setTimeout((()=>{this.hideOverlay()}),0),this):this}init(){return this.log("Init"),this.update(),i.addListener(this.update.bind(this)),this}}export{a as EffectsGridMobile,a as default};

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.