/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/sapling-island@0.2.0/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
export default class SaplingIsland extends HTMLElement{constructor(){super(),this.loaded=!1,this.observer=null,this.timeoutId=null,this.mediaQuery=null}static get observedAttributes(){return["loading","timeout"]}connectedCallback(){const e=this.getAttribute("loading")||"onload";if(e.includes("(")&&e.includes(")"))this.setupMediaLoading(e);else switch(e){case"visible":this.setupVisibilityLoading();break;case"idle":this.loadWhenIdle();break;default:this.handleLoad()}}loadWhenIdle(){const e=parseInt(this.getAttribute("timeout")),t=!isNaN(e)&&e>0?{timeout:e}:void 0;"requestIdleCallback"in window?window.requestIdleCallback((()=>this.handleLoad()),t):window.addEventListener("load",(()=>{setTimeout((()=>this.handleLoad()),0)}))}setupVisibilityLoading(){const e=parseInt(this.getAttribute("timeout"));!isNaN(e)&&e>0&&(this.timeoutId=setTimeout((()=>{this.handleLoad(),this.observer&&(this.observer.disconnect(),this.observer=null)}),e)),this.observer=new IntersectionObserver((e=>{for(const t of e)if(t.isIntersecting&&!this.loaded){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.handleLoad(),this.observer.disconnect();break}}),{rootMargin:"50px",threshold:0});for(const e of this.children)this.observer.observe(e)}disconnectedCallback(){this.observer&&this.observer.disconnect(),this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null),this.mediaQuery&&!this.loaded&&this.mediaQuery.removeEventListener("change",handleMediaChange)}handleLoad(){if(this.loaded)return;this.loaded=!0;const e=this.querySelector("template");if(e){const t=e.content.cloneNode(!0);e.replaceWith(t)}this.setAttribute("hydrated",""),this.dispatchEvent(new CustomEvent("island:hydrated",{bubbles:!0,composed:!0}))}setupMediaLoading(e){this.mediaQuery=window.matchMedia(e);const t=e=>{e.matches&&!this.loaded&&(this.handleLoad(),this.mediaQuery.removeEventListener("change",t))};this.mediaQuery.matches?this.handleLoad():this.mediaQuery.addEventListener("change",t)}}customElements.define("sapling-island",SaplingIsland);
//# sourceMappingURL=/sm/15f206b07d19e3cfe94b93ef390b3914d589dbdffc9d2f5bdbf1f8cf6b0ecc3f.map