{"version":3,"file":"VLazy.mjs","names":["makeComponentProps","makeDimensionProps","useDimension","useProxiedModel","makeTagProps","makeTransitionProps","MaybeTransition","intersect","genericComponent","propsFactory","useRender","makeVLazyProps","modelValue","Boolean","options","type","Object","default","root","undefined","rootMargin","threshold","transition","VLazy","name","directives","props","emits","value","setup","_ref","slots","dimensionStyles","isActive","onIntersect","isIntersecting","_withDirectives","_createVNode","tag","class","style","_resolveDirective","handler"],"sources":["../../../src/components/VLazy/VLazy.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVLazyProps = propsFactory({\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  ...makeComponentProps(),\n  ...makeDimensionProps(),\n  ...makeTagProps(),\n  ...makeTransitionProps({ transition: 'fade-transition' }),\n}, 'VLazy')\n\nexport const VLazy = genericComponent()({\n  name: 'VLazy',\n\n  directives: { intersect },\n\n  props: makeVLazyProps(),\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={[\n          'v-lazy',\n          props.class,\n        ]}\n        v-intersect={[\n          {\n            handler: onIntersect,\n            options: props.options,\n          },\n          null,\n          isActive.value ? [] : ['once'],\n        ]}\n        style={[\n          dimensionStyles.value,\n          props.style,\n        ]}\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;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,eAAe;AAAA,SACfC,YAAY;AAAA,SACZC,mBAAmB,EAAEC,eAAe,4CAE7C;AAAA,OACOC,SAAS,8CAEhB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAGA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,UAAU,EAAEC,OAAO;EACnBC,OAAO,EAAE;IACPC,IAAI,EAAEC,MAA4C;IAClD;IACA;IACAC,OAAO,EAAEA,CAAA,MAAO;MACdC,IAAI,EAAEC,SAAS;MACfC,UAAU,EAAED,SAAS;MACrBE,SAAS,EAAEF;IACb,CAAC;EACH,CAAC;EAED,GAAGnB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,YAAY,CAAC,CAAC;EACjB,GAAGC,mBAAmB,CAAC;IAAEiB,UAAU,EAAE;EAAkB,CAAC;AAC1D,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMC,KAAK,GAAGf,gBAAgB,CAAC,CAAC,CAAC;EACtCgB,IAAI,EAAE,OAAO;EAEbC,UAAU,EAAE;IAAElB;EAAU,CAAC;EAEzBmB,KAAK,EAAEf,cAAc,CAAC,CAAC;EAEvBgB,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK;EAC3C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAgB,CAAC,GAAG9B,YAAY,CAACwB,KAAK,CAAC;IAE/C,MAAMO,QAAQ,GAAG9B,eAAe,CAACuB,KAAK,EAAE,YAAY,CAAC;IAErD,SAASQ,WAAWA,CAAEC,cAAuB,EAAE;MAC7C,IAAIF,QAAQ,CAACL,KAAK,EAAE;MAEpBK,QAAQ,CAACL,KAAK,GAAGO,cAAc;IACjC;IAEAzB,SAAS,CAAC,MAAA0B,eAAA,CAAAC,YAAA,CAAAX,KAAA,CAAAY,GAAA;MAAA,SAEC,CACL,QAAQ,EACRZ,KAAK,CAACa,KAAK,CACZ;MAAA,SASM,CACLP,eAAe,CAACJ,KAAK,EACrBF,KAAK,CAACc,KAAK;IACZ;MAAAvB,OAAA,EAAAA,CAAA,MAECgB,QAAQ,CAACL,KAAK,IAAAS,YAAA,CAAA/B,eAAA;QAAA,cACgBoB,KAAK,CAACJ,UAAU;QAAA;MAAA;QAAAL,OAAA,EAAAA,CAAA,MAC1Cc,KAAK,CAACd,OAAO,GAAG,CAAC;MAAA,EAEtB;IAAA,MAAAwB,iBAAA,eAhBC;MACEC,OAAO,EAAER,WAAW;MACpBpB,OAAO,EAAEY,KAAK,CAACZ;IACjB,CAAC,EACD,IAAI,GAcT,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}