{"version":3,"file":"index.mjs","sources":["../src/helpers/component/build.ts","../src/helpers/match.ts","../src/helpers/normalize.ts","../src/helpers/trace.ts","../src/helpers/reset.ts","../src/helpers/level.ts","../src/helpers/url.ts","../src/manager/module.ts","../src/manager/singleton.ts","../src/constants.ts","../src/components/item/module.ts","../src/components/items/module.ts","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { VNodeClass } from '@vuecs/core';\nimport { createComponentOptionsManager, mergeOption } from '@vuecs/core';\nimport type { ComponentOptions } from './types';\n\nexport function buildComponentOptions() : ComponentOptions {\n    const manager = createComponentOptionsManager<ComponentOptions>({\n        name: 'navigation',\n    });\n\n    return {\n        groupClass: mergeOption('class', manager.get('groupClass'), 'vc-nav-items') as VNodeClass,\n        groupTag: manager.get('groupTag') || 'ul',\n\n        itemClass: mergeOption('class', manager.get('itemClass'), 'vc-nav-item') as VNodeClass,\n        itemNestedClass: mergeOption('class', manager.get('itemNestedClass'), 'vc-nav-item-nested') as VNodeClass,\n        itemTag: manager.get('itemTag') || 'li',\n\n        separatorTag: manager.get('separatorTag') || 'div',\n        separatorClass: mergeOption('class', manager.get('linkIconClass'), 'vc-nav-separator') as VNodeClass,\n\n        linkIconTag: manager.get('linkIconTag') || 'div',\n        linkIconClass: mergeOption('class', manager.get('linkIconClass'), 'vc-nav-link-icon') as VNodeClass,\n\n        linkClass: mergeOption('class', manager.get('linkClass'), 'vc-nav-link') as VNodeClass,\n        linkRootClass: mergeOption('class', manager.get('linkRootClass'), 'vc-nav-link-root') as VNodeClass,\n        linkTextTag: manager.get('linkTextTag') || 'div',\n        linkTextClass: mergeOption('class', manager.get('linkTextClass'), 'vc-nav-link-text') as VNodeClass,\n    };\n}\n","import type { NavigationItemNormalized } from '../types';\n\ntype ParentMatch = {\n    score: number\n};\n\ntype ItemMatchesFindOptions = {\n    path?: string\n};\n\nfunction calculateItemScoreForPath(\n    item: NavigationItemNormalized,\n    currentPath: string,\n) {\n    if (item.url === '/') {\n        return 1;\n    }\n\n    if (item.activeMatch) {\n        if (item.activeMatch === currentPath) {\n            return 6;\n        } if (currentPath.startsWith(item.activeMatch)) {\n            return 4;\n        }\n    }\n\n    if (item.url) {\n        if (item.url === currentPath) {\n            return 3;\n        } if (currentPath.startsWith(item.url)) {\n            return 2;\n        }\n    }\n\n    return 0;\n}\n\nfunction findItemMatchesIF(\n    items: NavigationItemNormalized[],\n    options: ItemMatchesFindOptions,\n    parent: ParentMatch,\n) {\n    const output : {\n        data: NavigationItemNormalized,\n        score: number\n    }[] = [];\n\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n\n        let { score } = parent;\n\n        if (options.path) {\n            score += calculateItemScoreForPath(item, options.path);\n        }\n\n        if (item.default) {\n            score += 1;\n        }\n\n        if (item.children) {\n            const childMatches = findItemMatchesIF(item.children, options, {\n                score,\n            });\n\n            output.push(...childMatches);\n        }\n\n        output.push({ data: item, score });\n    }\n\n    return output.sort((a, b) => b.score - a.score);\n}\n\nexport function findBestItemMatches(\n    items: NavigationItemNormalized[],\n    options: ItemMatchesFindOptions = {},\n) : NavigationItemNormalized[] {\n    const result = findItemMatchesIF(items, options, { score: 0 });\n    const [first] = result;\n    if (!first) {\n        return [];\n    }\n\n    return result\n        .filter((match) => match.score === first.score)\n        .map((match) => match.data);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItem, NavigationItemNormalized } from '../types';\n\ntype NormalizeItemOptions = {\n    level: number\n};\n\nfunction normalizeItemIF(\n    item: NavigationItem,\n    defaults: NormalizeItemOptions,\n    trace: string[],\n) : NavigationItemNormalized {\n    const output : NavigationItemNormalized = {\n        ...item,\n        level: defaults.level,\n        children: [],\n        trace: [\n            ...trace,\n            item.name,\n        ],\n        meta: item.meta || {},\n    };\n\n    if (!item.children) {\n        return output;\n    }\n\n    for (let i = 0; i < item.children.length; i++) {\n        output.children.push(normalizeItemIF(item.children[i], defaults, output.trace));\n    }\n\n    return output;\n}\n\nexport function normalizeItem(\n    item: NavigationItem,\n    defaults: NormalizeItemOptions,\n) : NavigationItemNormalized {\n    return normalizeItemIF(item, defaults, []);\n}\n\nexport function normalizeItems(\n    items: NavigationItem[],\n    options: NormalizeItemOptions,\n) : NavigationItemNormalized[] {\n    return items.map((item) => normalizeItem(item, options));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n    a: string[],\n    b: string[],\n): boolean {\n    if (a.length !== b.length) {\n        return false;\n    }\n\n    for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n    for (let i = 0; i < item.length; i++) {\n        if (parent[i] !== item[i]) {\n            return false;\n        }\n    }\n\n    return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n    items: NavigationItemNormalized[],\n    trace: string[],\n) {\n    for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n\n        const isEqual = isTraceEqual(items[i].trace, trace);\n        item.active = isEqual;\n        item.display = true;\n\n        if (isEqual) {\n            item.displayChildren = true;\n        } else {\n            item.displayChildren = isTracePartOf(item.trace, trace);\n        }\n\n        item.children = resetItemsByTraceIF(item.children, trace);\n    }\n\n    return items;\n}\n\nexport function resetItemsByTrace(\n    items: NavigationItemNormalized[],\n    trace: string[],\n) {\n    return resetItemsByTraceIF(items, trace);\n}\n","type LevelRecord = {\n    level: number,\n    [key: string]: any\n};\n\nexport function findItemsWithLevel<T extends LevelRecord>(\n    items: T[],\n    tier: number,\n) : T[] {\n    return items.filter((item) => item.level === tier);\n}\n\nexport function findItemWithLevel<T extends LevelRecord>(\n    tier: number,\n    items: T[],\n) : T | undefined {\n    const data = findItemsWithLevel(items, tier);\n    if (data.length >= 1) {\n        return data[0];\n    }\n\n    return undefined;\n}\n\nexport function removeItemsWithLevel<T extends LevelRecord>(\n    tier: number,\n    items: T[],\n) : T[] {\n    return items.filter((item) => item.level !== tier);\n}\n\nexport function replaceLevelItem<T extends LevelRecord>(\n    tier: number,\n    input: T[],\n    next: T | undefined,\n): T[] {\n    const output = removeItemsWithLevel(tier, input);\n\n    if (next) {\n        next.level = tier;\n\n        return [\n            ...output,\n            next,\n        ];\n    }\n\n    return output;\n}\n\nexport function replaceLevelItems<T extends LevelRecord>(\n    tier: number,\n    src: T[],\n    next: T[],\n) : T[] {\n    const componentsExisting = removeItemsWithLevel(tier, src);\n\n    return [\n        ...componentsExisting,\n        ...next,\n    ];\n}\n","export function isAbsoluteURL(str: string): boolean {\n    return str.substring(0, 7) === 'http://' ||\n        str.substring(0, 8) === 'https://';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { EventEmitter } from '@posva/event-emitter';\nimport {\n    findBestItemMatches,\n    findItemWithLevel,\n    findItemsWithLevel,\n    isTraceEqual,\n    normalizeItems,\n    removeItemsWithLevel,\n    replaceLevelItem,\n    replaceLevelItems,\n    resetItemsByTrace,\n} from '../helpers';\nimport type { NavigationItemNormalized, NavigationItemsFn } from '../types';\nimport type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';\n\nexport class NavigationManager extends EventEmitter<{\n    building: [],\n    built: [],\n    updated: NavigationItemNormalized[],\n    levelUpdated: [number, NavigationItemNormalized[]]\n}> {\n    protected itemsActive : NavigationItemNormalized[];\n\n    protected items : NavigationItemNormalized[];\n\n    protected itemsFn : NavigationItemsFn;\n\n    protected built : boolean;\n\n    protected building : boolean;\n\n    constructor(options: NavigationManagerOptions) {\n        super();\n\n        let itemsFn : NavigationItemsFn;\n        if (typeof options.items === 'function') {\n            itemsFn = options.items;\n        } else {\n            itemsFn = async ({ level }) => {\n                if (level > 0) {\n                    return [];\n                }\n\n                return options.items as NavigationItemNormalized[];\n            };\n        }\n\n        this.itemsFn = itemsFn;\n        this.items = [];\n        this.itemsActive = [];\n\n        this.built = false;\n        this.building = false;\n    }\n\n    getItems(tier?: number) {\n        if (typeof tier === 'undefined') {\n            return this.items;\n        }\n\n        return this.items.filter((item) => item.level === tier);\n    }\n\n    reset() {\n        this.built = false;\n\n        this.items = [];\n        this.itemsActive = [];\n    }\n\n    async build(options: NavigationManagerBuildOptions) : Promise<void> {\n        if (this.built || this.building) {\n            return;\n        }\n\n        this.building = true;\n\n        this.emit('building');\n\n        let parent : NavigationItemNormalized | undefined;\n        let level = 0;\n\n        while (true) {\n            const raw = await this.itemsFn({ level, parent });\n            if (!raw || raw.length === 0) {\n                break;\n            }\n\n            const items = normalizeItems(raw, { level });\n\n            const matches = findBestItemMatches(items, {\n                path: options.path,\n            });\n\n            const [match] = matches;\n\n            if (!match) {\n                break;\n            }\n\n            this.itemsActive.push(match);\n\n            await this.buildLevel(level);\n\n            parent = match;\n\n            level++;\n        }\n\n        this.building = false;\n        this.built = true;\n\n        this.emit('built');\n        this.emit('updated', this.items);\n    }\n\n    async select(level: number, itemNew: NavigationItemNormalized) {\n        const itemOld = findItemWithLevel(level, this.itemsActive);\n\n        if (\n            itemOld &&\n            isTraceEqual(itemOld.trace, itemNew.trace)\n        ) {\n            return;\n        }\n\n        this.itemsActive = this.itemsActive.filter(\n            (el) => el.level < level,\n        );\n        this.itemsActive.push(itemNew);\n\n        const startLevel = level;\n        while (true) {\n            const built = await this.buildLevel(\n                level,\n                startLevel === level,\n            );\n            if (!built) {\n                break;\n            }\n\n            level++;\n        }\n    }\n\n    async toggle(level: number, item: NavigationItemNormalized) {\n        let isMatch : boolean;\n        if (item.displayChildren) {\n            isMatch = true;\n        } else {\n            const itemOld = findItemWithLevel(level, this.itemsActive);\n            isMatch = !!itemOld && isTraceEqual(item.trace, itemOld.trace);\n        }\n\n        if (isMatch) {\n            this.itemsActive = removeItemsWithLevel(level, this.itemsActive);\n        } else {\n            this.itemsActive = replaceLevelItem(level, this.itemsActive, item);\n        }\n\n        await this.buildLevel(level, true);\n    }\n\n    protected async buildLevel(level: number, useCache?: boolean) : Promise<boolean> {\n        let items : NavigationItemNormalized[] | undefined;\n\n        if (useCache) {\n            items = findItemsWithLevel(this.items, level);\n        } else {\n            const parent = findItemWithLevel(level - 1, this.itemsActive);\n            const raw = await this.itemsFn({\n                level,\n                parent,\n            });\n\n            items = raw && raw.length > 0 ?\n                normalizeItems(raw, { level }) :\n                [];\n        }\n\n        if (!items || items.length === 0) {\n            this.items = this.items.filter(\n                (item) => item.level < level,\n            );\n\n            this.emit('levelUpdated', level, []);\n\n            return false;\n        }\n\n        let trace : string[] = [];\n        const item = findItemWithLevel(level, this.itemsActive);\n        if (item) {\n            trace = item.trace;\n        }\n\n        resetItemsByTrace(items, trace);\n\n        this.items = replaceLevelItems(level, this.items, items);\n\n        this.emit('levelUpdated', level, items);\n\n        return true;\n    }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { inject, provide } from '@vuecs/core';\nimport type { App } from 'vue';\nimport type { NavigationManager } from './module';\n\nconst sym = Symbol.for('VCNavigationManager');\n\nexport function injectNavigationManager(app?: App) : NavigationManager {\n    const instance = inject<NavigationManager>(sym, app);\n    if (!instance) {\n        throw new Error('A navigation provider has not been provided.');\n    }\n\n    return instance;\n}\n\nexport function provideNavigationManager(\n    manager: NavigationManager,\n    app?: App,\n) {\n    provide(sym, manager, app);\n}\n","export enum SlotName {\n    ITEM = 'item',\n    SEPARATOR = 'separator',\n    LINK = 'link',\n    SUB = 'sub',\n    SUB_TITLE = 'sub-title',\n    SUB_ITEMS = 'sub-items',\n}\n\nexport enum ElementType {\n    LINK = 'link',\n    SEPARATOR = 'separator',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type { LinkProperties } from '@vuecs/link';\nimport { VCLink } from '@vuecs/link';\nimport type { PropType, VNodeChild } from 'vue';\nimport {\n    computed,\n    defineComponent,\n    h,\n    resolveComponent,\n    toRef,\n} from 'vue';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions, isAbsoluteURL } from '../../helpers';\nimport { ElementType, SlotName } from '../../constants';\n\nexport const VCNavItem = defineComponent({\n    props: {\n        data: {\n            type: Object as PropType<NavigationItemNormalized>,\n            required: true,\n        },\n    },\n    setup(props, { slots }) {\n        const itemsNode = resolveComponent('VCNavItems');\n\n        const options = buildComponentOptions();\n        const manager = injectNavigationManager();\n\n        const data = toRef(props, 'data');\n        const hasChildren = computed(() => data.value.children &&\n                data.value.children.length > 0);\n\n        const select = async (\n            value: NavigationItemNormalized,\n        ) => {\n            await manager.select(data.value.level, value);\n        };\n\n        const toggle = async (\n            value: NavigationItemNormalized,\n        ) => {\n            await manager.toggle(data.value.level, value);\n        };\n\n        return () => {\n            const buildItem = () : VNodeChild => {\n                // type: separator\n                if (data.value.type === ElementType.SEPARATOR) {\n                    const hasSlot = hasNormalizedSlot(SlotName.SEPARATOR, slots);\n                    if (hasSlot) {\n                        return normalizeSlot(SlotName.SEPARATOR, {\n                            data: data.value,\n                        }, slots);\n                    }\n\n                    return h(options.separatorTag, {\n                        class: options.separatorClass,\n                    }, data.value.name);\n                }\n\n                // type: group\n                if (!hasChildren.value) {\n                    const hasSlot = hasNormalizedSlot(SlotName.LINK, slots);\n                    if (hasSlot) {\n                        return normalizeSlot(SlotName.LINK, {\n                            data: data.value,\n                            select,\n                            isActive: data.value.active,\n                        }, slots);\n                    }\n                    const linkProps : LinkProperties = {\n                        active: data.value.active,\n                        disabled: false,\n                        prefetch: true,\n                    };\n\n                    if (data.value.url) {\n                        if (\n                            isAbsoluteURL(data.value.url) ||\n                                        data.value.url.startsWith('#')\n                        ) {\n                            linkProps.href = data.value.url;\n                            if (data.value.urlTarget) {\n                                linkProps.target = data.value.urlTarget;\n                            }\n                        } else {\n                            linkProps.to = data.value.url;\n                        }\n                    }\n\n                    return h(VCLink, {\n                        class: [\n                            options.linkClass,\n                        ],\n                        ...linkProps,\n                        onClicked() {\n                            if (!data.value.url) {\n                                return select.call(null, data.value);\n                            }\n\n                            return undefined;\n                        },\n                        onClick() {\n                            return select.call(null, data.value);\n                        },\n                    }, {\n                        default: () => [\n                            ...(data.value.icon ?\n                                [h(\n                                    options.linkIconTag,\n                                    {\n                                        class: options.linkIconClass,\n                                    },\n                                    [\n                                        h('i', { class: data.value.icon }),\n                                    ],\n                                )] :\n                                []\n                            ),\n                            h(options.linkTextTag, {\n                                class: options.linkTextClass,\n                            }, [\n                                data.value.name,\n                            ]),\n                        ],\n                    });\n                }\n\n                if (hasNormalizedSlot(SlotName.SUB, slots)) {\n                    return normalizeSlot(SlotName.SUB, {\n                        data: data.value,\n                        select,\n                        toggle,\n                    }, slots);\n                }\n\n                let title : VNodeChild;\n                if (hasNormalizedSlot(SlotName.SUB_TITLE, slots)) {\n                    title = normalizeSlot(SlotName.SUB_TITLE, {\n                        data: data.value,\n                        select,\n                        toggle,\n                    });\n                } else {\n                    title = h('div', {\n                        class: options.linkClass,\n                        onClick($event: any) {\n                            $event.preventDefault();\n\n                            return toggle(data.value);\n                        },\n                    }, [\n                        ...(data.value.icon ?\n                            [h(\n                                options.linkIconTag,\n                                {\n                                    class: options.linkIconClass,\n                                },\n                                [\n                                    h('i', { class: data.value.icon }),\n                                ],\n                            )] :\n                            []\n                        ),\n                        h(options.linkTextTag, {\n                            class: options.linkTextClass,\n                        }, [\n                            data.value.name,\n                        ]),\n                    ]);\n                }\n\n                if (!hasChildren.value) {\n                    return title;\n                }\n\n                let vNodes : VNodeChild;\n\n                if (hasNormalizedSlot(SlotName.SUB_ITEMS, slots)) {\n                    vNodes = normalizeSlot(SlotName.SUB_ITEMS, {\n                        data: data.value,\n                        select,\n                        toggle,\n                    });\n                } else {\n                    vNodes = h(itemsNode, {\n                        level: data.value.level,\n                        data: data.value.children,\n                    });\n                }\n\n                return [\n                    title,\n                    vNodes,\n                ];\n            };\n\n            return h(options.itemTag, {\n                class: [\n                    options.itemClass,\n                    ...(hasChildren.value ? [options.itemNestedClass] : []),\n                    {\n                        active: data.value.active || data.value.displayChildren,\n                    },\n                ],\n            }, [\n                buildItem(),\n            ]);\n        };\n    },\n});\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type {\n    PropType,\n    VNodeArrayChildren,\n    VNodeChild,\n} from 'vue';\nimport {\n    computed,\n    defineComponent,\n    h, onMounted, onUnmounted, ref,\n} from 'vue';\nimport { SlotName } from '../../constants';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions } from '../../helpers';\nimport { VCNavItem } from '../item';\n\nexport const VCNavItems = defineComponent({\n    props: {\n        level: {\n            type: Number,\n            default: 0,\n        },\n        data: {\n            type: Array as PropType<NavigationItemNormalized[]>,\n            default: undefined,\n        },\n    },\n    setup(props, { slots }) {\n        const options = buildComponentOptions();\n\n        const manager = injectNavigationManager();\n        const managerItems = ref<NavigationItemNormalized[]>([]);\n        if (!props.data) {\n            managerItems.value = manager.getItems(props.level);\n        }\n\n        const counter = ref(0);\n\n        let removeListener : CallableFunction | undefined;\n\n        onMounted(() => {\n            removeListener = manager.on(\n                'levelUpdated',\n                (level, items) => {\n                    if (level !== props.level) {\n                        return;\n                    }\n\n                    managerItems.value = items;\n                    counter.value++;\n                },\n            );\n        });\n\n        onUnmounted(() => {\n            if (typeof removeListener === 'function') {\n                removeListener();\n\n                removeListener = undefined;\n            }\n        });\n\n        const items = computed(() => {\n            if (typeof props.data !== 'undefined') {\n                return props.data;\n            }\n\n            return managerItems.value;\n        });\n\n        return () => {\n            const vNodes : VNodeArrayChildren = [];\n\n            for (let i = 0; i < items.value.length; i++) {\n                if (!items.value[i].display && !items.value[i].displayChildren) {\n                    continue;\n                }\n\n                let vNode : VNodeChild;\n                if (hasNormalizedSlot(SlotName.ITEM, slots)) {\n                    vNode = normalizeSlot(SlotName.ITEM, { data: items.value[i] }, slots);\n                } else {\n                    vNode = h(\n                        VCNavItem,\n                        {\n                            key: `${i}:${counter.value}`,\n                            data: items.value[i],\n                        },\n                    );\n                }\n\n                vNodes.push(vNode);\n            }\n\n            return h(options.groupTag, {\n                class: options.groupClass,\n            }, vNodes);\n        };\n    },\n});\n","import { applyStoreManagerOptions, installStoreManager } from '@vuecs/core';\n\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\nimport { NavigationManager, provideNavigationManager } from './manager';\n\nimport {\n    VCNavItem,\n    VCNavItems,\n} from './components';\nimport type { Options } from './types';\n\nexport * from './components';\nexport * from './manager';\nexport * from './types';\n\nexport function install(instance: App, options: Options) : void {\n    const manager = new NavigationManager({\n        items: options.items,\n    });\n\n    provideNavigationManager(manager, instance);\n\n    const storeManager = installStoreManager(instance);\n    if (options.storeManager) {\n        applyStoreManagerOptions(storeManager, options.storeManager);\n    }\n\n    Object.entries({\n        VCNavItem,\n        VCNavItems,\n    }).forEach(([componentName, component]) => {\n        instance.component(componentName, component);\n    });\n}\n\nexport default {\n    install,\n} satisfies Plugin<Options>;\n"],"names":["buildComponentOptions","manager","createComponentOptionsManager","name","groupClass","mergeOption","get","groupTag","itemClass","itemNestedClass","itemTag","separatorTag","separatorClass","linkIconTag","linkIconClass","linkClass","linkRootClass","linkTextTag","linkTextClass","calculateItemScoreForPath","item","currentPath","url","activeMatch","startsWith","findItemMatchesIF","items","options","parent","output","i","length","score","path","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","meta","normalizeItem","normalizeItems","isTraceEqual","isTracePartOf","resetItemsByTraceIF","isEqual","active","display","displayChildren","resetItemsByTrace","findItemsWithLevel","tier","findItemWithLevel","undefined","removeItemsWithLevel","replaceLevelItem","input","next","replaceLevelItems","src","componentsExisting","isAbsoluteURL","str","substring","NavigationManager","EventEmitter","getItems","reset","built","itemsActive","build","building","emit","raw","itemsFn","matches","buildLevel","select","itemNew","itemOld","el","startLevel","toggle","isMatch","useCache","constructor","sym","Symbol","for","injectNavigationManager","app","instance","inject","Error","provideNavigationManager","provide","SlotName","ElementType","VCNavItem","defineComponent","props","type","Object","required","setup","slots","itemsNode","resolveComponent","toRef","hasChildren","computed","value","buildItem","SEPARATOR","hasSlot","hasNormalizedSlot","normalizeSlot","h","class","LINK","isActive","linkProps","disabled","prefetch","href","urlTarget","target","to","VCLink","onClicked","call","onClick","icon","SUB","title","SUB_TITLE","$event","preventDefault","vNodes","SUB_ITEMS","VCNavItems","Number","Array","managerItems","ref","counter","removeListener","onMounted","on","onUnmounted","vNode","ITEM","key","install","storeManager","installStoreManager","applyStoreManagerOptions","entries","forEach","componentName","component"],"mappings":"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"}