@vuecs/navigation 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/item/module.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,KAAK,CAAC;AAQhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAI5D,eAAO,MAAM,SAAS;;cAGM,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;cAAlC,QAAQ,CAAC,wBAAwB,CAAC;;;iGAqL5D,CAAC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/item/module.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,KAAK,CAAC;AAShD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAI5D,eAAO,MAAM,SAAS;;cAGM,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;cAAlC,QAAQ,CAAC,wBAAwB,CAAC;;;iGAwM5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/items/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,QAAQ,EAGX,MAAM,KAAK,CAAC;AAQb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAI5D,eAAO,MAAM,UAAU;;;;;;cAOI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;;;;;;;;;;;cAApC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;;;;;;4EA2E7D,CAAC"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/components/items/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,QAAQ,EAGX,MAAM,KAAK,CAAC;AAQb,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAI5D,eAAO,MAAM,UAAU;;;;;;cAOI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;;;;;;;;;;;cAApC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;;;;;;4EAyE7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/helpers/component/build.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,qBAAqB,IAAK,gBAAgB,CAyBzD"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/helpers/component/build.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,qBAAqB,IAAK,gBAAgB,CAwBzD"}
@@ -2,13 +2,13 @@ import type { VNodeClass } from '@vuecs/core';
2
2
  export type ComponentOptions = {
3
3
  groupClass: VNodeClass;
4
4
  groupTag: VNodeClass;
5
- subGroupTitleClass: VNodeClass;
6
- subGroupItemsClass: VNodeClass;
7
5
  itemClass: VNodeClass;
6
+ itemNestedClass: VNodeClass;
8
7
  itemTag: string;
9
8
  separatorTag: string;
10
9
  separatorClass: VNodeClass;
11
- iconClass: VNodeClass;
10
+ linkIconTag: string;
11
+ linkIconClass: VNodeClass;
12
12
  linkClass: VNodeClass;
13
13
  linkRootClass?: VNodeClass;
14
14
  linkTextTag: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/helpers/component/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,UAAU,CAAC;IAErB,kBAAkB,EAAE,UAAU,CAAC;IAC/B,kBAAkB,EAAE,UAAU,CAAC;IAE/B,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,UAAU,CAAC;IAE3B,SAAS,EAAE,UAAU,CAAA;IAErB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,UAAU,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/helpers/component/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,UAAU,CAAC;IAErB,SAAS,EAAE,UAAU,CAAC;IACtB,eAAe,EAAE,UAAU,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,UAAU,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,UAAU,CAAA;IAEzB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,UAAU,CAAC;CAC7B,CAAC"}
package/dist/index.cjs CHANGED
@@ -15,15 +15,15 @@ function buildComponentOptions() {
15
15
  groupClass: core.mergeOption('class', manager.get('groupClass'), 'vc-nav-items'),
16
16
  groupTag: manager.get('groupTag') || 'ul',
17
17
  itemClass: core.mergeOption('class', manager.get('itemClass'), 'vc-nav-item'),
18
+ itemNestedClass: core.mergeOption('class', manager.get('itemNestedClass'), 'vc-nav-item-nested'),
18
19
  itemTag: manager.get('itemTag') || 'li',
19
- subGroupTitleClass: core.mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-title'),
20
- subGroupItemsClass: core.mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-items'),
21
20
  separatorTag: manager.get('separatorTag') || 'div',
22
- separatorClass: core.mergeOption('class', manager.get('iconClass'), 'vc-nav-separator'),
23
- iconClass: core.mergeOption('class', manager.get('iconClass'), 'vc-nav-icon'),
21
+ separatorClass: core.mergeOption('class', manager.get('linkIconClass'), 'vc-nav-separator'),
22
+ linkIconTag: manager.get('linkIconTag') || 'div',
23
+ linkIconClass: core.mergeOption('class', manager.get('linkIconClass'), 'vc-nav-link-icon'),
24
24
  linkClass: core.mergeOption('class', manager.get('linkClass'), 'vc-nav-link'),
25
25
  linkRootClass: core.mergeOption('class', manager.get('linkRootClass'), 'vc-nav-link-root'),
26
- linkTextTag: manager.get('linkTextTag') || 'span',
26
+ linkTextTag: manager.get('linkTextTag') || 'div',
27
27
  linkTextClass: core.mergeOption('class', manager.get('linkTextClass'), 'vc-nav-link-text')
28
28
  };
29
29
  }
@@ -193,10 +193,13 @@ class NavigationManager extends eventEmitter.EventEmitter {
193
193
  }
194
194
  return this.items.filter((item)=>item.level === tier);
195
195
  }
196
- async build(options) {
197
- if (this.built) {
196
+ async buildOnce(options) {
197
+ if (this.built && !options.reset) {
198
198
  return this.items;
199
199
  }
200
+ return this.build(options);
201
+ }
202
+ async build(options) {
200
203
  this.built = true;
201
204
  this.items = [];
202
205
  this.itemsActive = [];
@@ -347,6 +350,7 @@ const VCNavItem = vue.defineComponent({
347
350
  const options = buildComponentOptions();
348
351
  const manager = injectNavigationManager();
349
352
  const data = vue.toRef(props, 'data');
353
+ const hasChildren = vue.computed(()=>data.value.children && data.value.children.length > 0);
350
354
  const select = async (value)=>{
351
355
  await manager.select(data.value.level, value);
352
356
  };
@@ -412,9 +416,13 @@ const VCNavItem = vue.defineComponent({
412
416
  }, {
413
417
  default: ()=>[
414
418
  ...data.value.icon ? [
415
- vue.h('i', {
416
- class: data.value.icon
417
- })
419
+ vue.h(options.linkIconTag, {
420
+ class: options.linkIconClass
421
+ }, [
422
+ vue.h('i', {
423
+ class: data.value.icon
424
+ })
425
+ ])
418
426
  ] : [],
419
427
  vue.h(options.linkTextTag, {
420
428
  class: options.linkTextClass
@@ -440,27 +448,29 @@ const VCNavItem = vue.defineComponent({
440
448
  });
441
449
  } else {
442
450
  title = vue.h('div', {
443
- class: options.subGroupTitleClass,
451
+ class: options.linkClass,
444
452
  onClick ($event) {
445
453
  $event.preventDefault();
446
454
  return toggle(data.value);
447
455
  }
448
456
  }, [
449
- [
450
- ...data.value.icon ? [
457
+ ...data.value.icon ? [
458
+ vue.h(options.linkIconTag, {
459
+ class: options.linkIconClass
460
+ }, [
451
461
  vue.h('i', {
452
462
  class: data.value.icon
453
463
  })
454
- ] : [],
455
- vue.h(options.linkTextTag, {
456
- class: options.linkTextClass
457
- }, [
458
- data.value.name
459
464
  ])
460
- ]
465
+ ] : [],
466
+ vue.h(options.linkTextTag, {
467
+ class: options.linkTextClass
468
+ }, [
469
+ data.value.name
470
+ ])
461
471
  ]);
462
472
  }
463
- if (!data.value.displayChildren) {
473
+ if (!hasChildren.value) {
464
474
  return title;
465
475
  }
466
476
  let vNodes;
@@ -484,6 +494,9 @@ const VCNavItem = vue.defineComponent({
484
494
  return vue.h(options.itemTag, {
485
495
  class: [
486
496
  options.itemClass,
497
+ ...hasChildren.value ? [
498
+ options.itemNestedClass
499
+ ] : [],
487
500
  {
488
501
  active: data.value.active || data.value.displayChildren
489
502
  }
@@ -556,7 +569,7 @@ const VCNavItems = vue.defineComponent({
556
569
  vNodes.push(vNode);
557
570
  }
558
571
  return vue.h(options.groupTag, {
559
- class: props.data ? options.subGroupItemsClass : options.groupClass
572
+ class: options.groupClass
560
573
  }, vNodes);
561
574
  };
562
575
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","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 itemTag: manager.get('itemTag') || 'li',\n\n subGroupTitleClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-title') as VNodeClass,\n subGroupItemsClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-items') as VNodeClass,\n\n separatorTag: manager.get('separatorTag') || 'div',\n separatorClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-separator') as VNodeClass,\n\n iconClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-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') || 'span',\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 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 if (item.activeMatch) {\n if (item.activeMatch === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.activeMatch)) {\n score += 2;\n }\n }\n\n if (item.url && item.url !== '/') {\n if (item.url === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.url)) {\n score += 2;\n }\n }\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 };\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 updated: NavigationItemNormalized[],\n tierUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : 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 }\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 async build(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n if (this.built) {\n return this.items;\n }\n\n this.built = true;\n\n this.items = [];\n this.itemsActive = [];\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.emit('updated', this.items);\n\n return 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, cached?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (cached) {\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('tierUpdated', 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('tierUpdated', 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 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\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 (\n !data.value.children ||\n data.value.children.length === 0\n ) {\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 (data.value.url &&\n data.value.url === '/' ?\n [options.linkRootClass] :\n []\n ),\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('i', { class: data.value.icon })] :\n []\n ),\n h(\n options.linkTextTag,\n { class: options.linkTextClass },\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.subGroupTitleClass,\n onClick($event: any) {\n $event.preventDefault();\n\n return toggle(data.value);\n },\n }, [[\n ...(data.value.icon ?\n [h('i', { class: data.value.icon })] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ]]);\n }\n\n if (!data.value.displayChildren) {\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 {\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('tierUpdated', (tier, items) => {\n if (tier !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\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: props.data ?\n options.subGroupItemsClass :\n 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","itemTag","subGroupTitleClass","subGroupItemsClass","separatorTag","separatorClass","iconClass","linkClass","linkRootClass","linkTextTag","linkTextClass","findItemMatchesIF","items","options","parent","output","i","length","item","score","path","activeMatch","startsWith","url","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","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","build","built","itemsActive","raw","itemsFn","matches","buildLevel","emit","select","itemNew","itemOld","el","startLevel","toggle","isMatch","cached","constructor","sym","Symbol","for","injectNavigationManager","app","instance","inject","Error","provideNavigationManager","provide","SlotName","ElementType","VCNavItem","defineComponent","props","type","Object","required","setup","slots","itemsNode","resolveComponent","toRef","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","computed","vNode","ITEM","key","install","storeManager","installStoreManager","applyStoreManagerOptions","entries","forEach","componentName","component"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","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 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 if (item.activeMatch) {\n if (item.activeMatch === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.activeMatch)) {\n score += 2;\n }\n }\n\n if (item.url && item.url !== '/') {\n if (item.url === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.url)) {\n score += 2;\n }\n }\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 };\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 updated: NavigationItemNormalized[],\n tierUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : 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 }\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 async buildOnce(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n if (this.built && !options.reset) {\n return this.items;\n }\n\n return this.build(options);\n }\n\n async build(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n this.built = true;\n\n this.items = [];\n this.itemsActive = [];\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.emit('updated', this.items);\n\n return 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, cached?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (cached) {\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('tierUpdated', 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('tierUpdated', 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 (\n !data.value.children ||\n data.value.children.length === 0\n ) {\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 (data.value.url &&\n data.value.url === '/' ?\n [options.linkRootClass] :\n []\n ),\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('tierUpdated', (tier, items) => {\n if (tier !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\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","findItemMatchesIF","items","options","parent","output","i","length","item","score","path","activeMatch","startsWith","url","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","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","buildOnce","built","reset","build","itemsActive","raw","itemsFn","matches","buildLevel","emit","select","itemNew","itemOld","el","startLevel","toggle","isMatch","cached","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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"}
package/dist/index.css CHANGED
@@ -4,31 +4,22 @@
4
4
  list-style: none;
5
5
  }
6
6
 
7
- .vc-nav-items .vc-nav-link i,
8
- .vc-nav-items .vc-nav-sub-level-title i {
9
- padding-right: 4px;
10
- }
11
-
12
- .vc-nav-items .vc-nav-link,
13
- .vc-nav-items .vc-nav-item .vc-nav-sub-level-title {
7
+ .vc-nav-items .vc-nav-link {
14
8
  cursor: pointer;
15
9
  color: #aeb2b7;
16
- padding: 18px 15px 18px 15px;
17
- display: block;
18
- font-size: 13px;
10
+ padding: 1rem;
11
+ font-size: 0.8rem;
19
12
  text-align: left;
20
13
  text-decoration: none;
14
+ display: flex;
15
+ flex-direction: row;
16
+ gap: 0.4rem;
21
17
  }
22
18
 
23
19
  /* for now */
24
- .vc-nav-items .vc-nav-item:hover .vc-nav-title,
25
- .vc-nav-items .vc-nav-item:hover .vc-nav-sub-level-title,
26
-
27
- .vc-nav-items .vc-nav-item:active .vc-nav-title,
28
- .vc-nav-items .vc-nav-item:active .vc-nav-sub-level-title,
29
-
30
- .vc-nav-items .vc-nav-item.active .vc-nav-title,
31
- .vc-nav-items .vc-nav-item.active .vc-nav-sub-level-title {
20
+ .vc-nav-items .vc-nav-item.vc-nav-item-nested:hover > .vc-nav-link,
21
+ .vc-nav-items .vc-nav-item.vc-nav-item-nested:active > .vc-nav-link,
22
+ .vc-nav-items .vc-nav-item.vc-nav-item-nested.active > .vc-nav-link {
32
23
  background: #c8b98d;
33
24
  color: #fff;
34
25
  }
@@ -61,7 +52,8 @@
61
52
  align-items: center;
62
53
  font-size:14px;
63
54
  font-weight: bold;
64
- padding:5px 0;
55
+ padding: 0.4rem 0;
56
+ background: rgba(151, 151, 153, 0.1);
65
57
  }
66
58
 
67
59
  .vc-nav-items .vc-nav-separator:before,
@@ -80,7 +72,11 @@
80
72
  margin-left: 0.4rem;
81
73
  }
82
74
 
83
- .vc-nav-items .vc-nav-sub-level-items .vc-nav-link {
75
+ .vc-nav-item-nested:not(.active) .vc-nav-items {
76
+ display: none;
77
+ }
78
+
79
+ .vc-nav-item-nested .vc-nav-items .vc-nav-link {
84
80
  border-left-width: 6px;
85
81
  border-left-style: solid;
86
82
  border-left-color: rgb(64,67,78);
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createComponentOptionsManager, mergeOption, inject, provide, hasNormalizedSlot, normalizeSlot, installStoreManager, applyStoreManagerOptions } from '@vuecs/core';
2
2
  import { EventEmitter } from '@posva/event-emitter';
3
3
  import { VCLink } from '@vuecs/link';
4
- import { defineComponent, resolveComponent, toRef, h, ref, onMounted, onUnmounted, computed } from 'vue';
4
+ import { defineComponent, resolveComponent, toRef, computed, h, ref, onMounted, onUnmounted } from 'vue';
5
5
 
6
6
  function buildComponentOptions() {
7
7
  const manager = createComponentOptionsManager({
@@ -11,15 +11,15 @@ function buildComponentOptions() {
11
11
  groupClass: mergeOption('class', manager.get('groupClass'), 'vc-nav-items'),
12
12
  groupTag: manager.get('groupTag') || 'ul',
13
13
  itemClass: mergeOption('class', manager.get('itemClass'), 'vc-nav-item'),
14
+ itemNestedClass: mergeOption('class', manager.get('itemNestedClass'), 'vc-nav-item-nested'),
14
15
  itemTag: manager.get('itemTag') || 'li',
15
- subGroupTitleClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-title'),
16
- subGroupItemsClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-items'),
17
16
  separatorTag: manager.get('separatorTag') || 'div',
18
- separatorClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-separator'),
19
- iconClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-icon'),
17
+ separatorClass: mergeOption('class', manager.get('linkIconClass'), 'vc-nav-separator'),
18
+ linkIconTag: manager.get('linkIconTag') || 'div',
19
+ linkIconClass: mergeOption('class', manager.get('linkIconClass'), 'vc-nav-link-icon'),
20
20
  linkClass: mergeOption('class', manager.get('linkClass'), 'vc-nav-link'),
21
21
  linkRootClass: mergeOption('class', manager.get('linkRootClass'), 'vc-nav-link-root'),
22
- linkTextTag: manager.get('linkTextTag') || 'span',
22
+ linkTextTag: manager.get('linkTextTag') || 'div',
23
23
  linkTextClass: mergeOption('class', manager.get('linkTextClass'), 'vc-nav-link-text')
24
24
  };
25
25
  }
@@ -189,10 +189,13 @@ class NavigationManager extends EventEmitter {
189
189
  }
190
190
  return this.items.filter((item)=>item.level === tier);
191
191
  }
192
- async build(options) {
193
- if (this.built) {
192
+ async buildOnce(options) {
193
+ if (this.built && !options.reset) {
194
194
  return this.items;
195
195
  }
196
+ return this.build(options);
197
+ }
198
+ async build(options) {
196
199
  this.built = true;
197
200
  this.items = [];
198
201
  this.itemsActive = [];
@@ -343,6 +346,7 @@ const VCNavItem = defineComponent({
343
346
  const options = buildComponentOptions();
344
347
  const manager = injectNavigationManager();
345
348
  const data = toRef(props, 'data');
349
+ const hasChildren = computed(()=>data.value.children && data.value.children.length > 0);
346
350
  const select = async (value)=>{
347
351
  await manager.select(data.value.level, value);
348
352
  };
@@ -408,9 +412,13 @@ const VCNavItem = defineComponent({
408
412
  }, {
409
413
  default: ()=>[
410
414
  ...data.value.icon ? [
411
- h('i', {
412
- class: data.value.icon
413
- })
415
+ h(options.linkIconTag, {
416
+ class: options.linkIconClass
417
+ }, [
418
+ h('i', {
419
+ class: data.value.icon
420
+ })
421
+ ])
414
422
  ] : [],
415
423
  h(options.linkTextTag, {
416
424
  class: options.linkTextClass
@@ -436,27 +444,29 @@ const VCNavItem = defineComponent({
436
444
  });
437
445
  } else {
438
446
  title = h('div', {
439
- class: options.subGroupTitleClass,
447
+ class: options.linkClass,
440
448
  onClick ($event) {
441
449
  $event.preventDefault();
442
450
  return toggle(data.value);
443
451
  }
444
452
  }, [
445
- [
446
- ...data.value.icon ? [
453
+ ...data.value.icon ? [
454
+ h(options.linkIconTag, {
455
+ class: options.linkIconClass
456
+ }, [
447
457
  h('i', {
448
458
  class: data.value.icon
449
459
  })
450
- ] : [],
451
- h(options.linkTextTag, {
452
- class: options.linkTextClass
453
- }, [
454
- data.value.name
455
460
  ])
456
- ]
461
+ ] : [],
462
+ h(options.linkTextTag, {
463
+ class: options.linkTextClass
464
+ }, [
465
+ data.value.name
466
+ ])
457
467
  ]);
458
468
  }
459
- if (!data.value.displayChildren) {
469
+ if (!hasChildren.value) {
460
470
  return title;
461
471
  }
462
472
  let vNodes;
@@ -480,6 +490,9 @@ const VCNavItem = defineComponent({
480
490
  return h(options.itemTag, {
481
491
  class: [
482
492
  options.itemClass,
493
+ ...hasChildren.value ? [
494
+ options.itemNestedClass
495
+ ] : [],
483
496
  {
484
497
  active: data.value.active || data.value.displayChildren
485
498
  }
@@ -552,7 +565,7 @@ const VCNavItems = defineComponent({
552
565
  vNodes.push(vNode);
553
566
  }
554
567
  return h(options.groupTag, {
555
- class: props.data ? options.subGroupItemsClass : options.groupClass
568
+ class: options.groupClass
556
569
  }, vNodes);
557
570
  };
558
571
  }
@@ -1 +1 @@
1
- {"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 itemTag: manager.get('itemTag') || 'li',\n\n subGroupTitleClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-title') as VNodeClass,\n subGroupItemsClass: mergeOption('class', manager.get('subGroupTitleClass'), 'vc-nav-sub-level-items') as VNodeClass,\n\n separatorTag: manager.get('separatorTag') || 'div',\n separatorClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-separator') as VNodeClass,\n\n iconClass: mergeOption('class', manager.get('iconClass'), 'vc-nav-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') || 'span',\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 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 if (item.activeMatch) {\n if (item.activeMatch === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.activeMatch)) {\n score += 2;\n }\n }\n\n if (item.url && item.url !== '/') {\n if (item.url === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.url)) {\n score += 2;\n }\n }\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 };\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 updated: NavigationItemNormalized[],\n tierUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : 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 }\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 async build(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n if (this.built) {\n return this.items;\n }\n\n this.built = true;\n\n this.items = [];\n this.itemsActive = [];\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.emit('updated', this.items);\n\n return 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, cached?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (cached) {\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('tierUpdated', 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('tierUpdated', 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 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\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 (\n !data.value.children ||\n data.value.children.length === 0\n ) {\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 (data.value.url &&\n data.value.url === '/' ?\n [options.linkRootClass] :\n []\n ),\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('i', { class: data.value.icon })] :\n []\n ),\n h(\n options.linkTextTag,\n { class: options.linkTextClass },\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.subGroupTitleClass,\n onClick($event: any) {\n $event.preventDefault();\n\n return toggle(data.value);\n },\n }, [[\n ...(data.value.icon ?\n [h('i', { class: data.value.icon })] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ]]);\n }\n\n if (!data.value.displayChildren) {\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 {\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('tierUpdated', (tier, items) => {\n if (tier !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\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: props.data ?\n options.subGroupItemsClass :\n 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","itemTag","subGroupTitleClass","subGroupItemsClass","separatorTag","separatorClass","iconClass","linkClass","linkRootClass","linkTextTag","linkTextClass","findItemMatchesIF","items","options","parent","output","i","length","item","score","path","activeMatch","startsWith","url","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","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","build","built","itemsActive","raw","itemsFn","matches","buildLevel","emit","select","itemNew","itemOld","el","startLevel","toggle","isMatch","cached","constructor","sym","Symbol","for","injectNavigationManager","app","instance","inject","Error","provideNavigationManager","provide","SlotName","ElementType","VCNavItem","defineComponent","props","type","Object","required","setup","slots","itemsNode","resolveComponent","toRef","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","computed","vNode","ITEM","key","install","storeManager","installStoreManager","applyStoreManagerOptions","entries","forEach","componentName","component"],"mappings":"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"}
1
+ {"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 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 if (item.activeMatch) {\n if (item.activeMatch === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.activeMatch)) {\n score += 2;\n }\n }\n\n if (item.url && item.url !== '/') {\n if (item.url === options.path) {\n score += 3;\n } else if (options.path.startsWith(item.url)) {\n score += 2;\n }\n }\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 };\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 updated: NavigationItemNormalized[],\n tierUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : 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 }\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 async buildOnce(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n if (this.built && !options.reset) {\n return this.items;\n }\n\n return this.build(options);\n }\n\n async build(options: NavigationManagerBuildOptions) : Promise<NavigationItemNormalized[]> {\n this.built = true;\n\n this.items = [];\n this.itemsActive = [];\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.emit('updated', this.items);\n\n return 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, cached?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (cached) {\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('tierUpdated', 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('tierUpdated', 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 (\n !data.value.children ||\n data.value.children.length === 0\n ) {\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 (data.value.url &&\n data.value.url === '/' ?\n [options.linkRootClass] :\n []\n ),\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('tierUpdated', (tier, items) => {\n if (tier !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\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","findItemMatchesIF","items","options","parent","output","i","length","item","score","path","activeMatch","startsWith","url","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","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","buildOnce","built","reset","build","itemsActive","raw","itemsFn","matches","buildLevel","emit","select","itemNew","itemOld","el","startLevel","toggle","isMatch","cached","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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"}
@@ -11,6 +11,7 @@ export declare class NavigationManager extends EventEmitter<{
11
11
  protected built: boolean;
12
12
  constructor(options: NavigationManagerOptions);
13
13
  getItems(tier?: number): NavigationItemNormalized[];
14
+ buildOnce(options: NavigationManagerBuildOptions): Promise<NavigationItemNormalized[]>;
14
15
  build(options: NavigationManagerBuildOptions): Promise<NavigationItemNormalized[]>;
15
16
  select(level: number, itemNew: NavigationItemNormalized): Promise<void>;
16
17
  toggle(level: number, item: NavigationItemNormalized): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/manager/module.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEvF,qBAAa,iBAAkB,SAAQ,YAAY,CAAC;IAChD,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;CACpD,CAAC;IACE,SAAS,CAAC,WAAW,EAAG,wBAAwB,EAAE,CAAC;IAEnD,SAAS,CAAC,KAAK,EAAG,wBAAwB,EAAE,CAAC;IAE7C,SAAS,CAAC,OAAO,EAAG,iBAAiB,CAAC;IAEtC,SAAS,CAAC,KAAK,EAAG,OAAO,CAAC;gBAEd,OAAO,EAAE,wBAAwB;IAuB7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAQhB,KAAK,CAAC,OAAO,EAAE,6BAA6B,GAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA6CnF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;IA6BvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB;cAkB1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC;CAyCjF"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/manager/module.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,KAAK,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEvF,qBAAa,iBAAkB,SAAQ,YAAY,CAAC;IAChD,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;CACpD,CAAC;IACE,SAAS,CAAC,WAAW,EAAG,wBAAwB,EAAE,CAAC;IAEnD,SAAS,CAAC,KAAK,EAAG,wBAAwB,EAAE,CAAC;IAE7C,SAAS,CAAC,OAAO,EAAG,iBAAiB,CAAC;IAEtC,SAAS,CAAC,KAAK,EAAG,OAAO,CAAC;gBAEd,OAAO,EAAE,wBAAwB;IAuB7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAQhB,SAAS,CAAC,OAAO,EAAE,6BAA6B,GAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAQvF,KAAK,CAAC,OAAO,EAAE,6BAA6B,GAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAyCnF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB;IA6BvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB;cAkB1C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC;CAyCjF"}
@@ -1,6 +1,7 @@
1
1
  import type { NavigationItem, NavigationItemsFn } from '../types';
2
2
  export type NavigationManagerBuildOptions = {
3
3
  path: string;
4
+ reset?: boolean;
4
5
  };
5
6
  export type NavigationManagerOptions = {
6
7
  items: NavigationItemsFn | NavigationItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manager/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,6BAA6B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,KAAK,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAAA;CAC9C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manager/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,6BAA6B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,KAAK,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAAA;CAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuecs/navigation",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "A package for multi level navigations.",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",