PageSourceSearch

https://imageskincare.com/cdn/shop/t/756/assets/base-modal.DuqV7B4K.min.js

js imageskincare.com collected 2026-10-02 17:04:26 UTC 3,199 bytes, 1 lines download raw bytes

1import{u as e,l as t}from"./tua-bsl.CjpVXuQm.min.js";import{r as l,t as s}from"./theme.Ddqt6vvB.min.js";import"./modulepreload-polyfill.BuDMqL4s.min.js";const a=".js-base-modal-toggle",o=".js-base-modal-overlay",i=".js-base-modal-content",n=".js-base-modal-close",d=".js-scroll-content",h="open",r="hidden",c="aria-expanded";class b extends window.HTMLElement{constructor(){super(),this.handleToggleClick=this.handleToggleClick.bind(this),this.handleCloseBaseModal=this.handleCloseBaseModal.bind(this),this.handleClickOverlay=this.handleClickOverlay.bind(this),this.handlePressEscape=this.handlePressEscape.bind(this),this.handleOpenModal=this.handleOpenModal.bind(this)}connectedCallback(){if(this.hasAttribute("data-portal")&&this.parentElement!==document.body)return this.id&&document.querySelectorAll("base-modal[data-portal]").forEach(e=>{e!==this&&e.id===this.id&&e.remove()}),void document.body.appendChild(this);this.abortController=new AbortController,this.baseModalToggle=document.querySelectorAll(`${a}[data-modal-id="${this.id}"]`),this.baseModalToggle.length&&(this.baseModalOverlay=this.querySelector(o),this.baseModalContent=this.querySelector(i),this.baseModalClose=this.querySelector(n),this.scrollContents=Array.from(this.querySelectorAll(d)),this.toggleEl=null,this.lockElements=[],this.initializeBaseModal())}disconnectedCallback(){this.handleRemoveEvents(),e(this.lockElements),l(this.toggleEl)}handleToggleClick(e){this.toggleEl=e.currentTarget,this.handleOpenModal()}initializeBaseModal(){var e,t,l;this.baseModalToggle.forEach(e=>{var t;return e.addEventListener("click",this.handleToggleClick,{signal:null==(t=this.abortController)?void 0:t.signal})}),this.baseModalClose&&this.baseModalClose.addEventListener("click",this.handleCloseBaseModal,{signal:null==(e=this.abortController)?void 0:e.signal}),this.addEventListener("click",this.handleClickOverlay,{signal:null==(t=this.abortController)?void 0:t.signal}),this.addEventListener("keydown",this.handlePressEscape,{signal:null==(l=this.abortController)?void 0:l.signal})}handleOpenModal(){this.baseModalToggle.forEach(e=>{e.setAttribute(c,"true")}),this.classList.remove(r),requestAnimationFrame(()=>{this.classList.add(h)}),t([this.baseModalContent,...this.scrollContents],{overflowType:"clip"}),this.lockElements=[this.baseModalContent,...this.scrollContents],s(this.baseModalContent,this.baseModalContent.querySelector('input, button, a, textarea, select, [tabindex]:not([tabindex="-1"])'))}handleClickOverlay(e){var t;this.baseModalContent.contains(e.target)||(null==(t=this.baseModalClose)?void 0:t.contains(e.target))||this.handleCloseBaseModal()}handlePressEscape(e){"Escape"===e.code&&this.handleCloseBaseModal()}handleCloseBaseModal(){this.classList.remove(h),this.baseModalToggle.forEach(e=>{e.setAttribute(c,"false")});const t=performance.now(),s=e=>{e-t>=400?this.classList.add(r):requestAnimationFrame(s)};requestAnimationFrame(s),e(this.lockElements),l(this.toggleEl),this.dispatchEvent(new CustomEvent("modal:close"))}handleRemoveEvents(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}window.customElements.get("base-modal")||window.customElements.define("base-modal",b);

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.