{"version":3,"file":"VTimelineItem.mjs","names":["VTimelineDivider","IconValue","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","convertToUnit","genericComponent","useRender","makeDimensionProps","useDimension","ref","watch","VTimelineItem","name","props","density","String","dotColor","fillDot","Boolean","hideDot","hideOpposite","type","default","undefined","icon","iconColor","lineInset","Number","setup","slots","dimensionStyles","dotSize","dotRef","newValue","value","$el","querySelector","getBoundingClientRect","width","flush","size","elevation","rounded","opposite"],"sources":["../../../src/components/VTimeline/VTimelineItem.tsx"],"sourcesContent":["// Components\nimport { VTimelineDivider } from './VTimelineDivider'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { ref, watch } from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VTimelineItemSlots = {\n  default: []\n  icon: []\n  opposite: []\n}\n\nexport const VTimelineItem = genericComponent<VTimelineItemSlots>()({\n  name: 'VTimelineItem',\n\n  props: {\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    ...makeRoundedProps(),\n    ...makeElevationProps(),\n    ...makeSizeProps(),\n    ...makeTagProps(),\n    ...makeDimensionProps(),\n  },\n\n  setup (props, { slots }) {\n    const { dimensionStyles } = useDimension(props)\n\n    const dotSize = ref(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        ]}\n        style={{\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      >\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":";AAAA;AAAA,SACSA,gBAAgB,kCAEzB;AAAA,SACSC,SAAS;AAAA,SACTC,kBAAkB;AAAA,SAClBC,gBAAgB;AAAA,SAChBC,aAAa;AAAA,SACbC,YAAY,qCAErB;AAAA,SACSC,aAAa,EAAEC,gBAAgB,EAAEC,SAAS;AAAA,SAC1CC,kBAAkB,EAAEC,YAAY;AACzC,SAASC,GAAG,EAAEC,KAAK,QAAQ,KAAK;;AAEhC;;AAUA,OAAO,MAAMC,aAAa,GAAGN,gBAAgB,EAAsB,CAAC;EAClEO,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,OAAO,EAAEC,MAAyC;IAClDC,QAAQ,EAAED,MAAM;IAChBE,OAAO,EAAEC,OAAO;IAChBC,OAAO,EAAED,OAAO;IAChBE,YAAY,EAAE;MACZC,IAAI,EAAEH,OAAO;MACbI,OAAO,EAAEC;IACX,CAAC;IACDC,IAAI,EAAEzB,SAAS;IACf0B,SAAS,EAAEV,MAAM;IACjBW,SAAS,EAAE,CAACC,MAAM,EAAEZ,MAAM,CAAC;IAE3B,GAAGd,gBAAgB,EAAE;IACrB,GAAGD,kBAAkB,EAAE;IACvB,GAAGE,aAAa,EAAE;IAClB,GAAGC,YAAY,EAAE;IACjB,GAAGI,kBAAkB;EACvB,CAAC;EAEDqB,KAAK,CAAEf,KAAK,QAAa;IAAA,IAAX;MAAEgB;IAAM,CAAC;IACrB,MAAM;MAAEC;IAAgB,CAAC,GAAGtB,YAAY,CAACK,KAAK,CAAC;IAE/C,MAAMkB,OAAO,GAAGtB,GAAG,CAAC,CAAC,CAAC;IACtB,MAAMuB,MAAM,GAAGvB,GAAG,EAAoB;IACtCC,KAAK,CAACsB,MAAM,EAAEC,QAAQ,IAAI;MACxB,IAAI,CAACA,QAAQ,EAAE;MACfF,OAAO,CAACG,KAAK,GAAGD,QAAQ,CAACE,GAAG,CAACC,aAAa,CAAC,0BAA0B,CAAC,EAAEC,qBAAqB,EAAE,CAACC,KAAK,IAAI,CAAC;IAC5G,CAAC,EAAE;MACDC,KAAK,EAAE;IACT,CAAC,CAAC;IAEFjC,SAAS,CAAC;MAAA,SAEC,CACL,iBAAiB,EACjB;QACE,2BAA2B,EAAEO,KAAK,CAACI;MACrC,CAAC,CACF;MAAA,SACM;QACL,uBAAuB,EAAEb,aAAa,CAAC2B,OAAO,CAACG,KAAK,CAAC;QACrD,yBAAyB,EAAErB,KAAK,CAACa,SAAS,GAAI,yCAAwCtB,aAAa,CAACS,KAAK,CAACa,SAAS,CAAE,GAAE,GAAGtB,aAAa,CAAC,CAAC;MAC3I;IAAC;MAAA,SAGO,uBAAuB;MAAA,SACrB0B,eAAe,CAACI;IAAK,IAE3BL,KAAK,CAACP,OAAO,IAAI;MAAA,OAIbU,MAAM;MAAA,WACFnB,KAAK,CAACM,OAAO;MAAA,QAChBN,KAAK,CAACW,IAAI;MAAA,aACLX,KAAK,CAACY,SAAS;MAAA,QACpBZ,KAAK,CAAC2B,IAAI;MAAA,aACL3B,KAAK,CAAC4B,SAAS;MAAA,YAChB5B,KAAK,CAACG,QAAQ;MAAA,WACfH,KAAK,CAACI,OAAO;MAAA,WACbJ,KAAK,CAAC6B;IAAO,GACd;MAAEpB,OAAO,EAAEO,KAAK,CAACL;IAAK,CAAC,GAGhCX,KAAK,CAACC,OAAO,KAAK,SAAS;MAAA,SAChB;IAA2B,IAClC,CAACD,KAAK,CAACO,YAAY,IAAIS,KAAK,CAACc,QAAQ,IAAI,EAE9C,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}