import {App, inject, InjectionKey, reactive} from 'vue' import type {BreadcrumbItem} from '../types' interface UseBreadcrumbI { items: BreadcrumbItem[] readonly reset: () => void } const BREADCRUMB_SYMBOL: InjectionKey = Symbol() const BREADCRUMB_OBJECT: UseBreadcrumbI = { items: reactive([]), reset(): void { this.items = reactive([]) }, } export function createBreadcrumb(app: App): void { app.provide(BREADCRUMB_SYMBOL, BREADCRUMB_OBJECT) } export function useBreadcrumb(): UseBreadcrumbI { const context = inject(BREADCRUMB_SYMBOL) if (!context) { return BREADCRUMB_OBJECT } return context }