{"version":3,"file":"VTimelineItem.mjs","names":["VTimelineDivider","makeComponentProps","makeDimensionProps","useDimension","makeElevationProps","IconValue","makeRoundedProps","makeSizeProps","makeTagProps","ref","shallowRef","watch","convertToUnit","genericComponent","propsFactory","useRender","makeVTimelineItemProps","density","String","dotColor","fillDot","Boolean","hideDot","hideOpposite","type","default","undefined","icon","iconColor","lineInset","Number","VTimelineItem","name","props","setup","_ref","slots","dimensionStyles","dotSize","dotRef","newValue","value","$el","querySelector","getBoundingClientRect","width","flush","_createVNode","class","style","size","elevation","rounded","opposite"],"sources":["../../../src/components/VTimeline/VTimelineItem.tsx"],"sourcesContent":["// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { ref, shallowRef, watch } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n  default: never\n  icon: never\n  opposite: never\n}\n\nexport const makeVTimelineItemProps = propsFactory({\n  density: String as PropType<'default' | 'compact'>,\n  dotColor: String,\n  fillDot: Boolean,\n  hideDot: Boolean,\n  hideOpposite: {\n    type: Boolean,\n    default: undefined,\n  },\n  icon: IconValue,\n  iconColor: String,\n  lineInset: [Number, String],\n\n  ...makeComponentProps(),\n  ...makeDimensionProps(),\n  ...makeElevationProps(),\n  ...makeRoundedProps(),\n  ...makeSizeProps(),\n  ...makeTagProps(),\n}, 'VTimelineItem')\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n  name: 'VTimelineItem',\n\n  props: makeVTimelineItemProps(),\n\n  setup (props, { slots }) {\n    const { dimensionStyles } = useDimension(props)\n\n    const dotSize = shallowRef(0)\n    const dotRef = ref<VTimelineDivider>()\n    watch(dotRef, newValue => {\n      if (!newValue) return\n      dotSize.value = newValue.$el.querySelector('.v-timeline-divider__dot')?.getBoundingClientRect().width ?? 0\n    }, {\n      flush: 'post',\n    })\n\n    useRender(() => (\n      <div\n        class={[\n          'v-timeline-item',\n          {\n            'v-timeline-item--fill-dot': props.fillDot,\n          },\n          props.class,\n        ]}\n        style={[\n          {\n            '--v-timeline-dot-size': convertToUnit(dotSize.value),\n            '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0),\n          },\n          props.style,\n        ]}\n      >\n        <div\n          class=\"v-timeline-item__body\"\n          style={ dimensionStyles.value }\n        >\n          { slots.default?.() }\n        </div>\n\n        <VTimelineDivider\n          ref={ dotRef }\n          hideDot={ props.hideDot }\n          icon={ props.icon }\n          iconColor={ props.iconColor }\n          size={ props.size }\n          elevation={ props.elevation }\n          dotColor={ props.dotColor }\n          fillDot={ props.fillDot }\n          rounded={ props.rounded }\n          v-slots={{ default: slots.icon }}\n        />\n\n        { props.density !== 'compact' && (\n          <div class=\"v-timeline-item__opposite\">\n            { !props.hideOpposite && slots.opposite?.() }\n          </div>\n        )}\n      </div>\n    ))\n\n    return {}\n  },\n})\n\nexport type VTimelineItem = InstanceType<typeof VTimelineItem>\n"],"mappings":"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"}