UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 3.65 kB
{"version":3,"file":"VLazy.mjs","names":["makeDimensionProps","useDimension","makeTagProps","makeTransitionProps","MaybeTransition","useProxiedModel","intersect","genericComponent","useRender","VLazy","name","directives","props","modelValue","Boolean","options","type","Object","default","root","undefined","rootMargin","threshold","transition","emits","value","setup","slots","dimensionStyles","isActive","onIntersect","isIntersecting"],"sources":["../../../src/components/VLazy/VLazy.tsx"],"sourcesContent":["// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VLazy = genericComponent()({\n name: 'VLazy',\n\n directives: { intersect },\n\n props: {\n modelValue: Boolean,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n\n ...makeDimensionProps(),\n ...makeTagProps(),\n ...makeTransitionProps({ transition: 'fade-transition' }),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n\n const isActive = useProxiedModel(props, 'modelValue')\n\n function onIntersect (isIntersecting: boolean) {\n if (isActive.value) return\n\n isActive.value = isIntersecting\n }\n\n useRender(() => (\n <props.tag\n class=\"v-lazy\"\n v-intersect={[\n onIntersect,\n props.options,\n isActive.value ? [] : ['once'],\n ]}\n style={ dimensionStyles.value }\n >\n { isActive.value && (\n <MaybeTransition transition={ props.transition } appear>\n { slots.default?.() }\n </MaybeTransition>\n )}\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VLazy = InstanceType<typeof VLazy>\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,YAAY;AAAA,SACZC,mBAAmB,EAAEC,eAAe;AAAA,SACpCC,eAAe,8CAExB;AAAA,OACOC,SAAS,8CAEhB;AAAA,SACSC,gBAAgB,EAAEC,SAAS,gCAEpC;AAGA,OAAO,MAAMC,KAAK,GAAGF,gBAAgB,EAAE,CAAC;EACtCG,IAAI,EAAE,OAAO;EAEbC,UAAU,EAAE;IAAEL;EAAU,CAAC;EAEzBM,KAAK,EAAE;IACLC,UAAU,EAAEC,OAAO;IACnBC,OAAO,EAAE;MACPC,IAAI,EAAEC,MAA4C;MAClD;MACA;MACAC,OAAO,EAAE,OAAO;QACdC,IAAI,EAAEC,SAAS;QACfC,UAAU,EAAED,SAAS;QACrBE,SAAS,EAAEF;MACb,CAAC;IACH,CAAC;IAED,GAAGpB,kBAAkB,EAAE;IACvB,GAAGE,YAAY,EAAE;IACjB,GAAGC,mBAAmB,CAAC;MAAEoB,UAAU,EAAE;IAAkB,CAAC;EAC1D,CAAC;EAEDC,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK;EAC3C,CAAC;EAEDC,KAAK,CAAEd,KAAK,QAAa;IAAA,IAAX;MAAEe;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAgB,CAAC,GAAG3B,YAAY,CAACW,KAAK,CAAC;IAE/C,MAAMiB,QAAQ,GAAGxB,eAAe,CAACO,KAAK,EAAE,YAAY,CAAC;IAErD,SAASkB,WAAW,CAAEC,cAAuB,EAAE;MAC7C,IAAIF,QAAQ,CAACJ,KAAK,EAAE;MAEpBI,QAAQ,CAACJ,KAAK,GAAGM,cAAc;IACjC;IAEAvB,SAAS,CAAC;MAAA,SAEA,QAAQ;MAAA,SAMNoB,eAAe,CAACH;IAAK;MAAA,gBAE3BI,QAAQ,CAACJ,KAAK;QAAA,cACgBb,KAAK,CAACW,UAAU;QAAA;MAAA;QAAA,gBAC1CI,KAAK,CAACT,OAAO,IAAI;MAAA,EAEtB;IAAA,sCAVCY,WAAW,EACXlB,KAAK,CAACG,OAAO,GAWlB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}