{"version":3,"file":"VCard.mjs","names":["VCardActions","VCardItem","VCardText","VDefaultsProvider","VImg","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","LoaderSlot","makeLoaderProps","useLoader","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","genericComponent","propsFactory","useRender","makeVCardProps","appendAvatar","String","appendIcon","disabled","Boolean","flat","hover","image","link","type","default","undefined","prependAvatar","prependIcon","ripple","Object","subtitle","text","title","variant","VCard","name","directives","props","setup","_ref","attrs","slots","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","loaderClasses","locationStyles","positionClasses","roundedClasses","isLink","value","isClickable","Tag","tag","hasTitle","hasSubtitle","hasHeader","hasAppend","append","hasPrepend","prepend","hasImage","hasCardItem","hasText","_withDirectives","_createVNode","class","style","href","navigate","cover","src","loading","loader","item","actions","_resolveDirective"],"sources":["../../../src/components/VCard/VCard.tsx"],"sourcesContent":["/* eslint-disable complexity */\n\n// Styles\nimport './VCard.sass'\n\n// Components\nimport { VCardActions } from './VCardActions'\nimport { VCardItem } from './VCardItem'\nimport { VCardText } from './VCardText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardItemSlots } from './VCardItem'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport const makeVCardProps = propsFactory({\n  appendAvatar: String,\n  appendIcon: IconValue,\n  disabled: Boolean,\n  flat: Boolean,\n  hover: Boolean,\n  image: String,\n  link: {\n    type: Boolean,\n    default: undefined,\n  },\n  prependAvatar: String,\n  prependIcon: IconValue,\n  ripple: {\n    type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n    default: true,\n  },\n  subtitle: String,\n  text: String,\n  title: String,\n\n  ...makeBorderProps(),\n  ...makeComponentProps(),\n  ...makeDensityProps(),\n  ...makeDimensionProps(),\n  ...makeElevationProps(),\n  ...makeLoaderProps(),\n  ...makeLocationProps(),\n  ...makePositionProps(),\n  ...makeRoundedProps(),\n  ...makeRouterProps(),\n  ...makeTagProps(),\n  ...makeThemeProps(),\n  ...makeVariantProps({ variant: 'elevated' } as const),\n}, 'VCard')\n\nexport type VCardSlots = VCardItemSlots & {\n  default: never\n  actions: never\n  text: never\n  loader: LoaderSlotProps\n  image: never\n  item: never\n}\n\nexport const VCard = genericComponent<VCardSlots>()({\n  name: 'VCard',\n\n  directives: { Ripple },\n\n  props: makeVCardProps(),\n\n  setup (props, { attrs, slots }) {\n    const { themeClasses } = provideTheme(props)\n    const { borderClasses } = useBorder(props)\n    const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n    const { densityClasses } = useDensity(props)\n    const { dimensionStyles } = useDimension(props)\n    const { elevationClasses } = useElevation(props)\n    const { loaderClasses } = useLoader(props)\n    const { locationStyles } = useLocation(props)\n    const { positionClasses } = usePosition(props)\n    const { roundedClasses } = useRounded(props)\n    const link = useLink(props, attrs)\n\n    const isLink = computed(() => props.link !== false && link.isLink.value)\n    const isClickable = computed(() =>\n      !props.disabled &&\n      props.link !== false &&\n      (props.link || link.isClickable.value)\n    )\n\n    useRender(() => {\n      const Tag = isLink.value ? 'a' : props.tag\n      const hasTitle = !!(slots.title || props.title)\n      const hasSubtitle = !!(slots.subtitle || props.subtitle)\n      const hasHeader = hasTitle || hasSubtitle\n      const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n      const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n      const hasImage = !!(slots.image || props.image)\n      const hasCardItem = hasHeader || hasPrepend || hasAppend\n      const hasText = !!(slots.text || props.text)\n\n      return (\n        <Tag\n          class={[\n            'v-card',\n            {\n              'v-card--disabled': props.disabled,\n              'v-card--flat': props.flat,\n              'v-card--hover': props.hover && !(props.disabled || props.flat),\n              'v-card--link': isClickable.value,\n            },\n            themeClasses.value,\n            borderClasses.value,\n            colorClasses.value,\n            densityClasses.value,\n            elevationClasses.value,\n            loaderClasses.value,\n            positionClasses.value,\n            roundedClasses.value,\n            variantClasses.value,\n            props.class,\n          ]}\n          style={[\n            colorStyles.value,\n            dimensionStyles.value,\n            locationStyles.value,\n            props.style,\n          ]}\n          href={ link.href.value }\n          onClick={ isClickable.value && link.navigate }\n          v-ripple={ isClickable.value && props.ripple }\n          tabindex={ props.disabled ? -1 : undefined }\n        >\n          { hasImage && (\n            <div key=\"image\" class=\"v-card__image\">\n              { !slots.image ? (\n                <VImg\n                  key=\"image-img\"\n                  cover\n                  src={ props.image }\n                />\n              ) : (\n                <VDefaultsProvider\n                  key=\"image-defaults\"\n                  disabled={ !props.image }\n                  defaults={{\n                    VImg: {\n                      cover: true,\n                      src: props.image,\n                    },\n                  }}\n                  v-slots:default={ slots.image }\n                />\n              )}\n            </div>\n          )}\n\n          <LoaderSlot\n            name=\"v-card\"\n            active={ !!props.loading }\n            color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n            v-slots={{ default: slots.loader }}\n          />\n\n          { hasCardItem && (\n            <VCardItem\n              key=\"item\"\n              prependAvatar={ props.prependAvatar }\n              prependIcon={ props.prependIcon }\n              title={ props.title }\n              subtitle={ props.subtitle }\n              appendAvatar={ props.appendAvatar }\n              appendIcon={ props.appendIcon }\n            >\n              {{\n                default: slots.item,\n                prepend: slots.prepend,\n                title: slots.title,\n                subtitle: slots.subtitle,\n                append: slots.append,\n              }}\n            </VCardItem>\n          )}\n\n          { hasText && (\n            <VCardText key=\"text\">\n              { slots.text?.() ?? props.text }\n            </VCardText>\n          )}\n\n          { slots.default?.() }\n\n          { slots.actions && (\n            <VCardActions v-slots={{ default: slots.actions }} />\n          )}\n\n          { genOverlays(isClickable.value, 'v-card') }\n        </Tag>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VCard = InstanceType<typeof VCard>\n"],"mappings":"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"}