{
  "version": 3,
  "sources": ["../../../src/index.ts", "../../../src/useLaze.ts"],
  "sourcesContent": ["export * from './useLaze';\nexport { default } from './useLaze';\n", "import { createEffect, createSignal, onCleanup } from 'solid-js';\n\nexport interface Laze<T extends HTMLElement> {\n  ref: (value: T) => void;\n  visible: boolean;\n}\n\nexport interface LazeOptions {\n  refresh?: boolean;\n}\n\nexport default function useLaze<T extends HTMLElement>(\n  options?: LazeOptions,\n): Laze<T> {\n  const [visible, setVisible] = createSignal(false);\n\n  // We use a reactive ref here so that the component\n  // re-renders if the host element changes, therefore\n  // re-evaluating our intersection logic\n  const [ref, setRef] = createSignal<T | null>(null);\n\n  createEffect(() => {\n    // If the host changed, make sure that\n    // visibility is set to false\n    setVisible(false);\n    const shouldRefresh = options?.refresh;\n\n    const current = ref();\n    if (!current) {\n      return;\n    }\n    const observer = new IntersectionObserver(entries => {\n      for (const entry of entries) {\n        if (shouldRefresh) {\n          setVisible(entry.isIntersecting);\n        } else if (entry.isIntersecting) {\n          // Host intersected, set visibility to true\n          setVisible(true);\n\n          // Stop observing\n          observer.disconnect();\n        }\n      }\n    });\n\n    observer.observe(current);\n\n    onCleanup(() => {\n      observer.unobserve(current);\n      observer.disconnect();\n    });\n  });\n\n  return {\n    ref(value) {\n      return setRef(() => value);\n    },\n    get visible() {\n      return visible();\n    },\n  };\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAAsD;AAWvC,SAAR,QACL,SACS;AACT,QAAM,CAAC,SAAS,UAAU,QAAI,8BAAa,KAAK;AAKhD,QAAM,CAAC,KAAK,MAAM,QAAI,8BAAuB,IAAI;AAEjD,oCAAa,MAAM;AAGjB,eAAW,KAAK;AAChB,UAAM,gBAAgB,mCAAS;AAE/B,UAAM,UAAU,IAAI;AACpB,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,WAAW,IAAI,qBAAqB,aAAW;AACnD,iBAAW,SAAS,SAAS;AAC3B,YAAI,eAAe;AACjB,qBAAW,MAAM,cAAc;AAAA,QACjC,WAAW,MAAM,gBAAgB;AAE/B,qBAAW,IAAI;AAGf,mBAAS,WAAW;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC;AAED,aAAS,QAAQ,OAAO;AAExB,mCAAU,MAAM;AACd,eAAS,UAAU,OAAO;AAC1B,eAAS,WAAW;AAAA,IACtB,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO,OAAO,MAAM,KAAK;AAAA,IAC3B;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AACF;",
  "names": []
}
