vuetify
Version:
Vue Material Component Framework
1 lines • 4.75 kB
Source Map (JSON)
{"version":3,"file":"VVirtualScroll.mjs","names":["VVirtualScrollItem","makeComponentProps","makeDimensionProps","useDimension","makeVirtualProps","useVirtual","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVVirtualScrollProps","items","type","Array","default","VVirtualScroll","name","props","setup","_ref","slots","dimensionStyles","containerRef","handleScroll","handleItemResize","scrollToIndex","paddingTop","paddingBottom","computedItems","_createVNode","class","value","style","map","item","index","itemHeight","height","raw"],"sources":["../../../src/components/VVirtualScroll/VVirtualScroll.tsx"],"sourcesContent":["// Styles\nimport './VVirtualScroll.sass'\n\n// Components\nimport { VVirtualScrollItem } from './VVirtualScrollItem'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { toRef } from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n propsFactory,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport interface VVirtualScrollSlot<T> {\n item: T\n index: number\n}\n\nexport const makeVVirtualScrollProps = propsFactory({\n items: {\n type: Array as PropType<readonly unknown[]>,\n default: () => ([]),\n },\n\n ...makeVirtualProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n}, 'VVirtualScroll')\n\nexport const VVirtualScroll = genericComponent<new <T>(\n props: {\n items?: readonly T[]\n },\n slots: {\n default: VVirtualScrollSlot<T>\n }\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VVirtualScroll',\n\n props: makeVVirtualScrollProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n const {\n containerRef,\n handleScroll,\n handleItemResize,\n scrollToIndex,\n paddingTop,\n paddingBottom,\n computedItems,\n } = useVirtual(props, toRef(props, 'items'))\n\n useRender(() => (\n <div\n ref={ containerRef }\n class={[\n 'v-virtual-scroll',\n props.class,\n ]}\n onScroll={ handleScroll }\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n >\n <div\n class=\"v-virtual-scroll__container\"\n style={{\n paddingTop: convertToUnit(paddingTop.value),\n paddingBottom: convertToUnit(paddingBottom.value),\n }}\n >\n { computedItems.value.map(item => (\n <VVirtualScrollItem\n key={ item.index }\n dynamicHeight={ !props.itemHeight }\n onUpdate:height={ height => handleItemResize(item.index, height) }\n >\n { slots.default?.({ item: item.raw, index: item.index }) }\n </VVirtualScrollItem>\n ))}\n </div>\n </div>\n ))\n\n return {\n scrollToIndex,\n }\n },\n})\n\nexport type VVirtualScroll = InstanceType<typeof VVirtualScroll>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB,oCAE3B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,gBAAgB,EAAEC,UAAU,yCAErC;AACA,SAASC,KAAK,QAAQ,KAAK;AAAA,SAEzBC,aAAa,EACbC,gBAAgB,EAChBC,YAAY,EACZC,SAAS,gCAGX;AASA,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CAAC;EAClDG,KAAK,EAAE;IACLC,IAAI,EAAEC,KAAqC;IAC3CC,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EAED,GAAGX,gBAAgB,EAAE;EACrB,GAAGH,kBAAkB,EAAE;EACvB,GAAGC,kBAAkB;AACvB,CAAC,EAAE,gBAAgB,CAAC;AAEpB,OAAO,MAAMc,cAAc,GAAGR,gBAAgB,EAOE,CAAC;EAC/CS,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAEP,uBAAuB,EAAE;EAEhCQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAgB,CAAC,GAAGnB,YAAY,CAACe,KAAK,CAAC;IAC/C,MAAM;MACJK,YAAY;MACZC,YAAY;MACZC,gBAAgB;MAChBC,aAAa;MACbC,UAAU;MACVC,aAAa;MACbC;IACF,CAAC,GAAGxB,UAAU,CAACa,KAAK,EAAEZ,KAAK,CAACY,KAAK,EAAE,OAAO,CAAC,CAAC;IAE5CR,SAAS,CAAC,MAAAoB,YAAA;MAAA,OAEAP,YAAY;MAAA,SACX,CACL,kBAAkB,EAClBL,KAAK,CAACa,KAAK,CACZ;MAAA,YACUP,YAAY;MAAA,SAChB,CACLF,eAAe,CAACU,KAAK,EACrBd,KAAK,CAACe,KAAK;IACZ,IAAAH,YAAA;MAAA,SAGO,6BAA6B;MAAA,SAC5B;QACLH,UAAU,EAAEpB,aAAa,CAACoB,UAAU,CAACK,KAAK,CAAC;QAC3CJ,aAAa,EAAErB,aAAa,CAACqB,aAAa,CAACI,KAAK;MAClD;IAAC,IAECH,aAAa,CAACG,KAAK,CAACE,GAAG,CAACC,IAAI,IAAAL,YAAA,CAAA9B,kBAAA;MAAA,OAEpBmC,IAAI,CAACC,KAAK;MAAA,iBACA,CAAClB,KAAK,CAACmB,UAAU;MAAA,mBACfC,MAAM,IAAIb,gBAAgB,CAACU,IAAI,CAACC,KAAK,EAAEE,MAAM;IAAC;MAAAvB,OAAA,EAAAA,CAAA,MAE9DM,KAAK,CAACN,OAAO,GAAG;QAAEoB,IAAI,EAAEA,IAAI,CAACI,GAAG;QAAEH,KAAK,EAAED,IAAI,CAACC;MAAM,CAAC,CAAC;IAAA,EAE3D,CAAC,IAGP,CAAC;IAEF,OAAO;MACLV;IACF,CAAC;EACH;AACF,CAAC,CAAC"}