{"version":3,"file":"VVirtualScrollItem.mjs","names":["makeComponentProps","useResizeObserver","useToggleScope","onUpdated","watch","genericComponent","propsFactory","useRender","makeVVirtualScrollItemProps","dynamicHeight","Boolean","renderless","VVirtualScrollItem","name","props","emits","height","setup","_ref","emit","slots","resizeRef","contentRect","value","updateHeight","_createVNode","_Fragment","default","ref","undefined","class","style"],"sources":["../../../src/components/VVirtualScroll/VVirtualScrollItem.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { onUpdated, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVVirtualScrollItemProps = propsFactory({\n  dynamicHeight: Boolean,\n  renderless: Boolean,\n\n  ...makeComponentProps(),\n}, 'VVirtualScrollItem')\n\nexport const VVirtualScrollItem = genericComponent<{ default: { props: Record<string, any> } | void }>()({\n  name: 'VVirtualScrollItem',\n\n  props: makeVVirtualScrollItemProps(),\n\n  emits: {\n    'update:height': (height: number) => true,\n  },\n\n  setup (props, { emit, slots }) {\n    const { resizeRef, contentRect } = useResizeObserver()\n\n    useToggleScope(() => props.dynamicHeight, () => {\n      watch(() => contentRect.value?.height, height => {\n        if (height != null) emit('update:height', height)\n      })\n    })\n\n    function updateHeight () {\n      if (props.dynamicHeight && contentRect.value) {\n        emit('update:height', contentRect.value.height)\n      }\n    }\n\n    onUpdated(updateHeight)\n\n    useRender(() => props.renderless ? (\n      <>\n        { slots.default?.({ props: { ref: props.dynamicHeight ? resizeRef : undefined } }) }\n      </>\n    ) : (\n      <div\n        ref={ props.dynamicHeight ? resizeRef : undefined }\n        class={[\n          'v-virtual-scroll__item',\n          props.class,\n        ]}\n        style={ props.style }\n      >\n        { slots.default?.() }\n      </div>\n    ))\n  },\n})\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,iBAAiB;AAAA,SACjBC,cAAc,6CAEvB;AACA,SAASC,SAAS,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC7BC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,2BAA2B,GAAGF,YAAY,CAAC;EACtDG,aAAa,EAAEC,OAAO;EACtBC,UAAU,EAAED,OAAO;EAEnB,GAAGV,kBAAkB;AACvB,CAAC,EAAE,oBAAoB,CAAC;AAExB,OAAO,MAAMY,kBAAkB,GAAGP,gBAAgB,EAAsD,CAAC;EACvGQ,IAAI,EAAE,oBAAoB;EAE1BC,KAAK,EAAEN,2BAA2B,EAAE;EAEpCO,KAAK,EAAE;IACL,eAAe,EAAGC,MAAc,IAAK;EACvC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,SAAS;MAAEC;IAAY,CAAC,GAAGrB,iBAAiB,EAAE;IAEtDC,cAAc,CAAC,MAAMY,KAAK,CAACL,aAAa,EAAE,MAAM;MAC9CL,KAAK,CAAC,MAAMkB,WAAW,CAACC,KAAK,EAAEP,MAAM,EAAEA,MAAM,IAAI;QAC/C,IAAIA,MAAM,IAAI,IAAI,EAAEG,IAAI,CAAC,eAAe,EAAEH,MAAM,CAAC;MACnD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,SAASQ,YAAYA,CAAA,EAAI;MACvB,IAAIV,KAAK,CAACL,aAAa,IAAIa,WAAW,CAACC,KAAK,EAAE;QAC5CJ,IAAI,CAAC,eAAe,EAAEG,WAAW,CAACC,KAAK,CAACP,MAAM,CAAC;MACjD;IACF;IAEAb,SAAS,CAACqB,YAAY,CAAC;IAEvBjB,SAAS,CAAC,MAAMO,KAAK,CAACH,UAAU,GAAAc,YAAA,CAAAC,SAAA,SAE1BN,KAAK,CAACO,OAAO,GAAG;MAAEb,KAAK,EAAE;QAAEc,GAAG,EAAEd,KAAK,CAACL,aAAa,GAAGY,SAAS,GAAGQ;MAAU;IAAE,CAAC,CAAC,KAAAJ,YAAA;MAAA,OAI5EX,KAAK,CAACL,aAAa,GAAGY,SAAS,GAAGQ,SAAS;MAAA,SAC1C,CACL,wBAAwB,EACxBf,KAAK,CAACgB,KAAK,CACZ;MAAA,SACOhB,KAAK,CAACiB;IAAK,IAEjBX,KAAK,CAACO,OAAO,IAAI,EAEtB,CAAC;EACJ;AACF,CAAC,CAAC"}