{
  "version": 3,
  "sources": ["../../../src/useLaze.tsx"],
  "sourcesContent": ["import type { Ref, UnwrapRef } from 'vue';\nimport { readonly, ref, watchEffect } from 'vue';\n\nexport interface Laze<T extends HTMLElement> {\n  ref: Ref<UnwrapRef<T> | null>;\n  visible: Ref<boolean>;\n}\n\nexport interface LazeOptions {\n  refresh?: boolean | Ref<boolean>;\n}\n\nexport default function useLaze<T extends HTMLElement>(\n  options?: LazeOptions,\n): Laze<T> {\n  const visible = ref(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 container = ref<T | null>(null);\n\n  watchEffect(onCleanup => {\n    // If the host changed, make sure that\n    // visibility is set to false\n    visible.value = false;\n\n    let refresh = false;\n\n    if (options && options.refresh) {\n      refresh =\n        typeof options.refresh === 'boolean'\n          ? options.refresh\n          : options.refresh.value;\n    }\n\n    if (container.value) {\n      const current = container.value;\n\n      const observer = new IntersectionObserver(entries => {\n        for (const entry of entries) {\n          if (refresh) {\n            visible.value = entry.isIntersecting;\n          } else if (entry.isIntersecting) {\n            // Host intersected, set visibility to true\n            visible.value = 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\n  return {\n    ref: container,\n    visible: readonly(visible),\n  };\n}\n"],
  "mappings": ";AACA,SAAS,UAAU,KAAK,mBAAmB;AAW5B,SAAR,QACL,SACS;AACT,QAAM,UAAU,IAAI,KAAK;AAKzB,QAAM,YAAY,IAAc,IAAI;AAEpC,cAAY,eAAa;AAGvB,YAAQ,QAAQ;AAEhB,QAAI,UAAU;AAEd,QAAI,WAAW,QAAQ,SAAS;AAC9B,gBACE,OAAO,QAAQ,YAAY,YACvB,QAAQ,UACR,QAAQ,QAAQ;AAAA,IACxB;AAEA,QAAI,UAAU,OAAO;AACnB,YAAM,UAAU,UAAU;AAE1B,YAAM,WAAW,IAAI,qBAAqB,aAAW;AACnD,mBAAW,SAAS,SAAS;AAC3B,cAAI,SAAS;AACX,oBAAQ,QAAQ,MAAM;AAAA,UACxB,WAAW,MAAM,gBAAgB;AAE/B,oBAAQ,QAAQ;AAGhB,qBAAS,WAAW;AAAA,UACtB;AAAA,QACF;AAAA,MACF,CAAC;AAED,eAAS,QAAQ,OAAO;AAExB,gBAAU,MAAM;AACd,iBAAS,UAAU,OAAO;AAC1B,iBAAS,WAAW;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,KAAK;AAAA,IACL,SAAS,SAAS,OAAO;AAAA,EAC3B;AACF;",
  "names": []
}
