{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-element-size/index.ts"],"sourcesContent":["import type { MaybeComputedElementRef } from '../unref-element';\nimport type { UseResizeObserverOptions } from '../use-resize-observer';\nimport { shallowRef, watch } from 'vue';\nimport { unrefElement } from '../unref-element';\nimport { useResizeObserver } from '../use-resize-observer';\n\nexport interface ElementSize {\n  width: number;\n  height: number;\n}\n\n/**\n * Reactive size of an HTML element.\n *\n * @see https://vueuse.org/useElementSize\n * @param target\n * @param initialSize\n * @param options\n */\nexport function useElementSize(\n  target: MaybeComputedElementRef,\n  initialSize: ElementSize = { width: 0, height: 0 },\n  options: UseResizeObserverOptions = {},\n) {\n  const { box = 'content-box' } = options;\n  const width = shallowRef(initialSize.width);\n  const height = shallowRef(initialSize.height);\n\n  useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize\n        = box === 'border-box'\n          ? entry.borderBoxSize\n          : box === 'content-box'\n            ? entry.contentBoxSize\n            : entry.devicePixelContentBoxSize;\n\n      if (boxSize) {\n        width.value = boxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n        height.value = boxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n      } else {\n        // fallback\n        width.value = entry.contentRect.width;\n        height.value = entry.contentRect.height;\n      }\n    },\n    options,\n  );\n\n  watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    },\n  );\n\n  return {\n    width,\n    height,\n  };\n}\n\nexport type UseElementSizeReturn = ReturnType<typeof useElementSize>;\n"],"names":[],"mappings":";;;;AAmBgB,SAAA,cAAA,CACd,MACA,EAAA,WAAA,GAA2B,EAAE,KAAA,EAAO,CAAG,EAAA,MAAA,EAAQ,CAAE,EAAA,EACjD,OAAoC,GAAA,EACpC,EAAA;AACA,EAAM,MAAA,EAAE,GAAM,GAAA,aAAA,EAAkB,GAAA,OAAA,CAAA;AAChC,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAC1C,EAAM,MAAA,MAAA,GAAS,UAAW,CAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAE5C,EAAA,iBAAA;AAAA,IACE,MAAA;AAAA,IACA,CAAC,CAAC,KAAK,CAAM,KAAA;AACX,MAAM,MAAA,OAAA,GACF,QAAQ,YACN,GAAA,KAAA,CAAM,gBACN,GAAQ,KAAA,aAAA,GACN,KAAM,CAAA,cAAA,GACN,KAAM,CAAA,yBAAA,CAAA;AAEd,MAAA,IAAI,OAAS,EAAA;AACX,QAAM,KAAA,CAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,EAAE,UAAW,EAAA,KAAM,GAAM,GAAA,UAAA,EAAY,CAAC,CAAA,CAAA;AACzE,QAAO,MAAA,CAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,EAAE,SAAU,EAAA,KAAM,GAAM,GAAA,SAAA,EAAW,CAAC,CAAA,CAAA;AAAA,OACnE,MAAA;AAEL,QAAM,KAAA,CAAA,KAAA,GAAQ,MAAM,WAAY,CAAA,KAAA,CAAA;AAChC,QAAO,MAAA,CAAA,KAAA,GAAQ,MAAM,WAAY,CAAA,MAAA,CAAA;AAAA,OACnC;AAAA,KACF;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AAEA,EAAA,KAAA;AAAA,IACE,MAAM,aAAa,MAAM,CAAA;AAAA,IACzB,CAAC,GAAQ,KAAA;AACP,MAAM,KAAA,CAAA,KAAA,GAAQ,GAAM,GAAA,WAAA,CAAY,KAAQ,GAAA,CAAA,CAAA;AACxC,MAAO,MAAA,CAAA,KAAA,GAAQ,GAAM,GAAA,WAAA,CAAY,MAAS,GAAA,CAAA,CAAA;AAAA,KAC5C;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AACF;;;;"}