{"version":3,"file":"hooks.mjs","sources":["../../../../../../packages/components/virtual-list/src/hooks.ts"],"sourcesContent":["import { computed, ref, unref } from 'vue'\nimport { VirtualListProps } from './virtual-list'\n\nexport const cacheKey = Symbol('cacheKey')\n\nexport const useCache = (props: VirtualListProps) => {\n  const map = ref(new Map())\n\n  const size = computed(() =>\n    props.direction === 'vertical' ? 'height' : 'width'\n  )\n\n  const getDataSize = (entry: ResizeObserverEntry, el: HTMLElement) => {\n    const height =\n      entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height\n    const width =\n      entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width\n\n    let marginHeight = 0\n    let marginWidth = 0\n    const computedStyle = window.getComputedStyle(el)\n    marginHeight += Number.parseInt(computedStyle.marginBottom, 10)\n    marginWidth += Number.parseInt(computedStyle.marginRight, 10)\n\n    return {\n      height: height + marginHeight,\n      width: width + marginWidth,\n    }\n  }\n\n  const setRealSize = (\n    i: number,\n    el: HTMLElement,\n    entry: ResizeObserverEntry\n  ) => {\n    if (!unref(map).has(i)) {\n      unref(map).set(i, getDataSize(entry, el))\n    } else {\n      const oldDataSize = unref(map).get(i)\n      const newDataSize = getDataSize(entry, el)\n      if (\n        oldDataSize.height !== newDataSize.height ||\n        oldDataSize.width !== newDataSize.width\n      ) {\n        unref(map).set(i, newDataSize)\n      }\n    }\n  }\n\n  const getRealSize = (i: number): number => {\n    if (unref(map).has(i)) {\n      return unref(map).get(i)[size.value]\n    } else {\n      return props.itemSize\n    }\n  }\n\n  return {\n    map,\n    setRealSize,\n    getRealSize,\n  }\n}\n"],"names":[],"mappings":";;AAGa,MAAA,QAAA,GAAW,OAAO,UAAU,EAAA;AAE5B,MAAA,QAAA,GAAW,CAAC,KAA4B,KAAA;AACnD,EAAA,MAAM,GAAM,GAAA,GAAA,iBAAQ,IAAA,GAAA,EAAK,CAAA,CAAA;AAEzB,EAAA,MAAM,IAAO,GAAA,QAAA;AAAA,IAAS,MACpB,KAAA,CAAM,SAAc,KAAA,UAAA,GAAa,QAAW,GAAA,OAAA;AAAA,GAC9C,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAA,EAA4B,EAAoB,KAAA;AAZvE,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAaI,IAAM,MAAA,MAAA,GAAA,CACJ,uBAAM,aAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAsB,OAAtB,IAA0B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,KAA1B,IAAuC,GAAA,EAAA,GAAA,KAAA,CAAM,WAAY,CAAA,MAAA,CAAA;AAC3D,IAAM,MAAA,KAAA,GAAA,CACJ,uBAAM,aAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAsB,OAAtB,IAA0B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,KAA1B,IAAwC,GAAA,EAAA,GAAA,KAAA,CAAM,WAAY,CAAA,KAAA,CAAA;AAE5D,IAAA,IAAI,YAAe,GAAA,CAAA,CAAA;AACnB,IAAA,IAAI,WAAc,GAAA,CAAA,CAAA;AAClB,IAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAChD,IAAA,YAAA,IAAgB,MAAO,CAAA,QAAA,CAAS,aAAc,CAAA,YAAA,EAAc,EAAE,CAAA,CAAA;AAC9D,IAAA,WAAA,IAAe,MAAO,CAAA,QAAA,CAAS,aAAc,CAAA,WAAA,EAAa,EAAE,CAAA,CAAA;AAE5D,IAAO,OAAA;AAAA,MACL,QAAQ,MAAS,GAAA,YAAA;AAAA,MACjB,OAAO,KAAQ,GAAA,WAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA,CAClB,CACA,EAAA,EAAA,EACA,KACG,KAAA;AACH,IAAA,IAAI,CAAC,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA;AACtB,MAAA,KAAA,CAAM,GAAG,CAAE,CAAA,GAAA,CAAI,GAAG,WAAY,CAAA,KAAA,EAAO,EAAE,CAAC,CAAA,CAAA;AAAA,KACnC,MAAA;AACL,MAAA,MAAM,WAAc,GAAA,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA;AACpC,MAAM,MAAA,WAAA,GAAc,WAAY,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA;AACzC,MAAA,IACE,YAAY,MAAW,KAAA,WAAA,CAAY,UACnC,WAAY,CAAA,KAAA,KAAU,YAAY,KAClC,EAAA;AACA,QAAA,KAAA,CAAM,GAAG,CAAA,CAAE,GAAI,CAAA,CAAA,EAAG,WAAW,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,CAAsB,KAAA;AACzC,IAAA,IAAI,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA;AACrB,MAAA,OAAO,MAAM,GAAG,CAAA,CAAE,GAAI,CAAA,CAAC,EAAE,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,KACzB,MAAA;AACL,MAAA,OAAO,KAAM,CAAA,QAAA,CAAA;AAAA,KACf;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,GAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}