{"version":3,"file":"VBreadcrumbs.mjs","names":["VBreadcrumbsDivider","VBreadcrumbsItem","VDefaultsProvider","VIcon","IconValue","makeDensityProps","useDensity","makeRoundedProps","useRounded","makeTagProps","provideDefaults","useBackgroundColor","genericComponent","useRender","toRef","VBreadcrumbs","name","props","activeClass","String","activeColor","bgColor","color","disabled","Boolean","divider","type","default","icon","items","Array","tag","setup","slots","backgroundColorClasses","backgroundColorStyles","densityClasses","roundedClasses","hasPrepend","prepend","value","start","map","item","index","array","length","title","undefined"],"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbs.tsx"],"sourcesContent":["// Styles\nimport './VBreadcrumbs.sass'\n\n// Components\nimport { VBreadcrumbsDivider } from './VBreadcrumbsDivider'\nimport { VBreadcrumbsItem } from './VBreadcrumbsItem'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { LinkProps } from '@/composables/router'\nimport type { PropType } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport type BreadcrumbItem = string | (LinkProps & {\n  text: string\n  disabled?: boolean\n})\n\nexport const VBreadcrumbs = genericComponent<new <T>() => {\n  $props: {\n    items?: T[]\n  } & SlotsToProps<{\n    prepend: []\n    title: [{ item: T, index: number }]\n    divider: [{ item: T, index: number }]\n    default: []\n  }>\n}>()({\n  name: 'VBreadcrumbs',\n\n  props: {\n    activeClass: String,\n    activeColor: String,\n    bgColor: String,\n    color: String,\n    disabled: Boolean,\n    divider: {\n      type: String,\n      default: '/',\n    },\n    icon: IconValue,\n    items: {\n      type: Array as PropType<BreadcrumbItem[]>,\n      default: () => ([]),\n    },\n\n    ...makeDensityProps(),\n    ...makeRoundedProps(),\n    ...makeTagProps({ tag: 'ul' }),\n  },\n\n  setup (props, { slots }) {\n    const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n    const { densityClasses } = useDensity(props)\n    const { roundedClasses } = useRounded(props)\n\n    provideDefaults({\n      VBreadcrumbsDivider: {\n        divider: toRef(props, 'divider'),\n      },\n      VBreadcrumbsItem: {\n        activeClass: toRef(props, 'activeClass'),\n        activeColor: toRef(props, 'activeColor'),\n        color: toRef(props, 'color'),\n        disabled: toRef(props, 'disabled'),\n      },\n    })\n\n    useRender(() => {\n      const hasPrepend = !!(slots.prepend || props.icon)\n\n      return (\n        <props.tag\n          class={[\n            'v-breadcrumbs',\n            backgroundColorClasses.value,\n            densityClasses.value,\n            roundedClasses.value,\n          ]}\n          style={ backgroundColorStyles.value }\n        >\n          { hasPrepend && (\n            <VDefaultsProvider\n              key=\"prepend\"\n              defaults={{\n                VIcon: {\n                  icon: props.icon,\n                  start: true,\n                },\n              }}\n            >\n              <div class=\"v-breadcrumbs__prepend\">\n                { slots.prepend\n                  ? slots.prepend()\n                  : props.icon && (<VIcon />)\n                }\n              </div>\n            </VDefaultsProvider>\n          ) }\n\n          { props.items.map((item, index, array) => (\n            <>\n              <VBreadcrumbsItem\n                key={ index }\n                disabled={ index >= array.length - 1 }\n                { ...(typeof item === 'string' ? { title: item } : item) }\n                v-slots={{\n                  default: slots.title ? () => slots.title?.({ item, index }) : undefined,\n                }}\n              />\n\n              { index < array.length - 1 && (\n                <VBreadcrumbsDivider\n                  v-slots={{\n                    default: slots.divider ? () => slots.divider?.({ item, index }) : undefined,\n                  }}\n                />\n              ) }\n            </>\n          )) }\n\n          { slots.default?.() }\n        </props.tag>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VBreadcrumbs = InstanceType<typeof VBreadcrumbs>\n"],"mappings":"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"}