{"version":3,"sources":["../../../../src/elements/useResizeObserver/core.ts"],"sourcesContent":["import { createSupported, createObserve, onUnmount } from \"@usels/core\";\nimport { normalizeTargets } from \"@shared/normalizeTargets\";\nimport type { DeepMaybeObservable, Supportable } from \"@usels/core\";\nimport type { MaybeEventTarget } from \"../../types\";\nimport { get } from \"@usels/core\";\n\nexport interface UseResizeObserverOptions {\n  box?: \"content-box\" | \"border-box\" | \"device-pixel-content-box\";\n}\n\nexport interface UseResizeObserverReturn extends Supportable {\n  stop: () => void;\n}\n\nexport function createResizeObserver(\n  target: MaybeEventTarget | MaybeEventTarget[],\n  callback: ResizeObserverCallback,\n  options?: DeepMaybeObservable<UseResizeObserverOptions>\n): UseResizeObserverReturn {\n  const isSupported$ = createSupported(() => typeof ResizeObserver !== \"undefined\");\n  let observer: ResizeObserver | null = null;\n\n  const cleanup = () => {\n    observer?.disconnect();\n    observer = null;\n  };\n\n  createObserve(() => {\n    cleanup();\n    if (!isSupported$.get()) return;\n\n    const targets = normalizeTargets(target).filter((el): el is Element => el instanceof Element);\n    if (!targets.length) return;\n\n    observer = new ResizeObserver(callback);\n    targets.forEach((el) => {\n      observer!.observe(el, { box: get(options)?.box });\n    });\n  });\n\n  onUnmount(cleanup);\n\n  return { isSupported$, stop: cleanup };\n}\n"],"mappings":"AAAA,SAAS,iBAAiB,eAAe,iBAAiB;AAC1D,SAAS,wBAAwB;AAGjC,SAAS,WAAW;AAUb,SAAS,qBACd,QACA,UACA,SACyB;AACzB,QAAM,eAAe,gBAAgB,MAAM,OAAO,mBAAmB,WAAW;AAChF,MAAI,WAAkC;AAEtC,QAAM,UAAU,MAAM;AACpB,cAAU,WAAW;AACrB,eAAW;AAAA,EACb;AAEA,gBAAc,MAAM;AAClB,YAAQ;AACR,QAAI,CAAC,aAAa,IAAI,EAAG;AAEzB,UAAM,UAAU,iBAAiB,MAAM,EAAE,OAAO,CAAC,OAAsB,cAAc,OAAO;AAC5F,QAAI,CAAC,QAAQ,OAAQ;AAErB,eAAW,IAAI,eAAe,QAAQ;AACtC,YAAQ,QAAQ,CAAC,OAAO;AACtB,eAAU,QAAQ,IAAI,EAAE,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC;AAAA,IAClD,CAAC;AAAA,EACH,CAAC;AAED,YAAU,OAAO;AAEjB,SAAO,EAAE,cAAc,MAAM,QAAQ;AACvC;","names":[]}