{
  "version": 3,
  "sources": ["../../../src/index.ts", "../../../src/useLaze.ts", "../../../src/useReactiveRef.ts", "../../../src/useConstant.ts", "../../../src/useLazyRef.ts"],
  "sourcesContent": ["export * from './useLaze';\nexport { default } from './useLaze';\n", "import type { MutableRefObject } from 'react';\nimport { useDebugValue, useEffect, useState } from 'react';\nimport useReactiveRef from './useReactiveRef';\n\nexport interface Laze<T extends HTMLElement> {\n  ref: MutableRefObject<T | null>;\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] = useState(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 = useReactiveRef<T | null>(() => null);\n\n  // We need to destructure here since\n  // the host element is our dependency,\n  // and we need to track whenever it changes.\n  const { current } = ref;\n\n  const shouldRefresh = options?.refresh;\n\n  useEffect(() => {\n    // If the host changed, make sure that\n    // visibility is set to false\n    setVisible(false);\n\n    if (current) {\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      return () => {\n        observer.unobserve(current);\n        observer.disconnect();\n      };\n    }\n\n    return undefined;\n  }, [current, shouldRefresh]);\n\n  const value = {\n    ref,\n    visible,\n  };\n\n  useDebugValue(value);\n\n  return value;\n}\n", "import type { MutableRefObject } from 'react';\nimport { useDebugValue, useState } from 'react';\nimport { useConstant } from './useConstant';\nimport { useLazyRef } from './useLazyRef';\n\nexport default function useReactiveRef<T>(\n  supplier: () => T,\n): MutableRefObject<T> {\n  const [state, setState] = useState<T>(supplier);\n\n  const ref = useLazyRef<T>(supplier);\n\n  if (ref.current !== state) {\n    ref.current = state;\n  }\n\n  const proxyObject = useConstant(() => ({\n    get current() {\n      return ref.current;\n    },\n    set current(value) {\n      setState(() => value);\n    },\n  }));\n\n  useDebugValue(proxyObject);\n\n  return proxyObject;\n}\n", "import { useDebugValue } from 'react';\nimport { useLazyRef } from './useLazyRef';\n\nexport function useConstant<T>(supplier: () => T): T {\n  const { current } = useLazyRef(supplier);\n  useDebugValue(current);\n  return current;\n}\n", "import type { MutableRefObject } from 'react';\nimport { useDebugValue, useRef } from 'react';\n\nexport function useLazyRef<T>(supplier: () => T): MutableRefObject<T> {\n  const ref = useRef<MutableRefObject<T> | null>();\n\n  if (!ref.current) {\n    ref.current = {\n      current: supplier(),\n    };\n  }\n\n  useDebugValue(ref.current);\n\n  return ref.current;\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAAA,gBAAmD;;;ACAnD,IAAAC,gBAAwC;;;ACDxC,IAAAC,gBAA8B;;;ACC9B,mBAAsC;AAE/B,SAAS,WAAc,UAAwC;AACpE,QAAM,UAAM,qBAAmC;AAE/C,MAAI,CAAC,IAAI,SAAS;AAChB,QAAI,UAAU;AAAA,MACZ,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAEA,kCAAc,IAAI,OAAO;AAEzB,SAAO,IAAI;AACb;;;ADZO,SAAS,YAAe,UAAsB;AACnD,QAAM,EAAE,QAAQ,IAAI,WAAW,QAAQ;AACvC,mCAAc,OAAO;AACrB,SAAO;AACT;;;ADFe,SAAR,eACL,UACqB;AACrB,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAY,QAAQ;AAE9C,QAAM,MAAM,WAAc,QAAQ;AAElC,MAAI,IAAI,YAAY,OAAO;AACzB,QAAI,UAAU;AAAA,EAChB;AAEA,QAAM,cAAc,YAAY,OAAO;AAAA,IACrC,IAAI,UAAU;AACZ,aAAO,IAAI;AAAA,IACb;AAAA,IACA,IAAI,QAAQ,OAAO;AACjB,eAAS,MAAM,KAAK;AAAA,IACtB;AAAA,EACF,EAAE;AAEF,mCAAc,WAAW;AAEzB,SAAO;AACT;;;ADfe,SAAR,QACL,SACS;AACT,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAK5C,QAAM,MAAM,eAAyB,MAAM,IAAI;AAK/C,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,gBAAgB,mCAAS;AAE/B,+BAAU,MAAM;AAGd,eAAW,KAAK;AAEhB,QAAI,SAAS;AACX,YAAM,WAAW,IAAI,qBAAqB,aAAW;AACnD,mBAAW,SAAS,SAAS;AAC3B,cAAI,eAAe;AACjB,uBAAW,MAAM,cAAc;AAAA,UACjC,WAAW,MAAM,gBAAgB;AAE/B,uBAAW,IAAI;AAGf,qBAAS,WAAW;AAAA,UACtB;AAAA,QACF;AAAA,MACF,CAAC;AAED,eAAS,QAAQ,OAAO;AAExB,aAAO,MAAM;AACX,iBAAS,UAAU,OAAO;AAC1B,iBAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,aAAa,CAAC;AAE3B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,mCAAc,KAAK;AAEnB,SAAO;AACT;",
  "names": ["import_react", "import_react", "import_react"]
}
