@vuecs/navigation 2.3.0 → 2.4.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;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
+ {"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;;;iGAgM5D,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;;;;;;4EAyE7D,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;;;;;;4EA4E7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/helpers/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAMzD,KAAK,sBAAsB,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAC;AAqDF,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,wBAAwB,EAAE,EACjC,OAAO,GAAE,sBAA2B,GACpC,wBAAwB,EAAE,CAU7B"}
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/helpers/match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAMzD,KAAK,sBAAsB,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAC;AAkEF,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,wBAAwB,EAAE,EACjC,OAAO,GAAE,sBAA2B,GACpC,wBAAwB,EAAE,CAU7B"}
package/dist/index.cjs CHANGED
@@ -28,26 +28,35 @@ function buildComponentOptions() {
28
28
  };
29
29
  }
30
30
 
31
+ function calculateItemScoreForPath(item, currentPath) {
32
+ if (item.url === '/') {
33
+ return 1;
34
+ }
35
+ if (item.activeMatch) {
36
+ if (item.activeMatch === currentPath) {
37
+ return 6;
38
+ }
39
+ if (currentPath.startsWith(item.activeMatch)) {
40
+ return 4;
41
+ }
42
+ }
43
+ if (item.url) {
44
+ if (item.url === currentPath) {
45
+ return 3;
46
+ }
47
+ if (currentPath.startsWith(item.url)) {
48
+ return 2;
49
+ }
50
+ }
51
+ return 0;
52
+ }
31
53
  function findItemMatchesIF(items, options, parent) {
32
54
  const output = [];
33
55
  for(let i = 0; i < items.length; i++){
34
56
  const item = items[i];
35
57
  let { score } = parent;
36
58
  if (options.path) {
37
- if (item.activeMatch) {
38
- if (item.activeMatch === options.path) {
39
- score += 3;
40
- } else if (options.path.startsWith(item.activeMatch)) {
41
- score += 2;
42
- }
43
- }
44
- if (item.url && item.url !== '/') {
45
- if (item.url === options.path) {
46
- score += 3;
47
- } else if (options.path.startsWith(item.url)) {
48
- score += 2;
49
- }
50
- }
59
+ score += calculateItemScoreForPath(item, options.path);
51
60
  }
52
61
  if (item.default) {
53
62
  score += 1;
@@ -194,16 +203,17 @@ class NavigationManager extends eventEmitter.EventEmitter {
194
203
  }
195
204
  return this.items.filter((item)=>item.level === tier);
196
205
  }
197
- async buildOnce(options) {
198
- if (this.built && !options.reset) {
199
- return this.items;
200
- }
201
- return this.build(options);
202
- }
203
- async build(options) {
204
- this.built = true;
206
+ reset() {
207
+ this.built = false;
205
208
  this.items = [];
206
209
  this.itemsActive = [];
210
+ }
211
+ async build(options) {
212
+ if (this.built || this.building) {
213
+ return;
214
+ }
215
+ this.building = true;
216
+ this.emit('building');
207
217
  let parent;
208
218
  let level = 0;
209
219
  while(true){
@@ -229,8 +239,10 @@ class NavigationManager extends eventEmitter.EventEmitter {
229
239
  parent = match;
230
240
  level++;
231
241
  }
242
+ this.building = false;
243
+ this.built = true;
244
+ this.emit('built');
232
245
  this.emit('updated', this.items);
233
- return this.items;
234
246
  }
235
247
  async select(level, itemNew) {
236
248
  const itemOld = findItemWithLevel(level, this.itemsActive);
@@ -263,9 +275,9 @@ class NavigationManager extends eventEmitter.EventEmitter {
263
275
  }
264
276
  await this.buildLevel(level, true);
265
277
  }
266
- async buildLevel(level, cached) {
278
+ async buildLevel(level, useCache) {
267
279
  let items;
268
- if (cached) {
280
+ if (useCache) {
269
281
  items = findItemsWithLevel(this.items, level);
270
282
  } else {
271
283
  const parent = findItemWithLevel(level - 1, this.itemsActive);
@@ -279,7 +291,7 @@ class NavigationManager extends eventEmitter.EventEmitter {
279
291
  }
280
292
  if (!items || items.length === 0) {
281
293
  this.items = this.items.filter((item)=>item.level < level);
282
- this.emit('tierUpdated', level, []);
294
+ this.emit('levelUpdated', level, []);
283
295
  return false;
284
296
  }
285
297
  let trace = [];
@@ -289,7 +301,7 @@ class NavigationManager extends eventEmitter.EventEmitter {
289
301
  }
290
302
  resetItemsByTrace(items, trace);
291
303
  this.items = replaceLevelItems(level, this.items, items);
292
- this.emit('tierUpdated', level, items);
304
+ this.emit('levelUpdated', level, items);
293
305
  return true;
294
306
  }
295
307
  constructor(options){
@@ -309,6 +321,7 @@ class NavigationManager extends eventEmitter.EventEmitter {
309
321
  this.items = [];
310
322
  this.itemsActive = [];
311
323
  this.built = false;
324
+ this.building = false;
312
325
  }
313
326
  }
314
327
 
@@ -373,7 +386,7 @@ const VCNavItem = vue.defineComponent({
373
386
  }, data.value.name);
374
387
  }
375
388
  // type: group
376
- if (!data.value.children || data.value.children.length === 0) {
389
+ if (!hasChildren.value) {
377
390
  const hasSlot = core.hasNormalizedSlot(SlotName.LINK, slots);
378
391
  if (hasSlot) {
379
392
  return core.normalizeSlot(SlotName.LINK, {
@@ -399,10 +412,7 @@ const VCNavItem = vue.defineComponent({
399
412
  }
400
413
  return vue.h(link.VCLink, {
401
414
  class: [
402
- options.linkClass,
403
- data.value.url && data.value.url === '/' ? [
404
- options.linkRootClass
405
- ] : []
415
+ options.linkClass
406
416
  ],
407
417
  ...linkProps,
408
418
  onClicked () {
@@ -530,8 +540,8 @@ const VCNavItems = vue.defineComponent({
530
540
  const counter = vue.ref(0);
531
541
  let removeListener;
532
542
  vue.onMounted(()=>{
533
- removeListener = manager.on('tierUpdated', (tier, items)=>{
534
- if (tier !== props.level) {
543
+ removeListener = manager.on('levelUpdated', (level, items)=>{
544
+ if (level !== props.level) {
535
545
  return;
536
546
  }
537
547
  managerItems.value = items;
@@ -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 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 meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], defaults, output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, defaults, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n options: NormalizeItemOptions,\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item, options));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (let i = 0; i < item.length; i++) {\n if (parent[i] !== item[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n const isEqual = isTraceEqual(items[i].trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.displayChildren = true;\n } else {\n item.displayChildren = isTracePartOf(item.trace, trace);\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","type LevelRecord = {\n level: number,\n [key: string]: any\n};\n\nexport function findItemsWithLevel<T extends LevelRecord>(\n items: T[],\n tier: number,\n) : T[] {\n return items.filter((item) => item.level === tier);\n}\n\nexport function findItemWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T | undefined {\n const data = findItemsWithLevel(items, tier);\n if (data.length >= 1) {\n return data[0];\n }\n\n return undefined;\n}\n\nexport function removeItemsWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T[] {\n return items.filter((item) => item.level !== tier);\n}\n\nexport function replaceLevelItem<T extends LevelRecord>(\n tier: number,\n input: T[],\n next: T | undefined,\n): T[] {\n const output = removeItemsWithLevel(tier, input);\n\n if (next) {\n next.level = tier;\n\n return [\n ...output,\n next,\n ];\n }\n\n return output;\n}\n\nexport function replaceLevelItems<T extends LevelRecord>(\n tier: number,\n src: T[],\n next: T[],\n) : T[] {\n const componentsExisting = removeItemsWithLevel(tier, src);\n\n return [\n ...componentsExisting,\n ...next,\n ];\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { EventEmitter } from '@posva/event-emitter';\nimport {\n findBestItemMatches,\n findItemWithLevel,\n findItemsWithLevel,\n isTraceEqual,\n normalizeItems,\n removeItemsWithLevel,\n replaceLevelItem,\n replaceLevelItems,\n resetItemsByTrace,\n} from '../helpers';\nimport type { NavigationItemNormalized, NavigationItemsFn } from '../types';\nimport type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';\n\nexport class NavigationManager extends EventEmitter<{\n 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","meta","normalizeItem","normalizeItems","isTraceEqual","isTracePartOf","resetItemsByTraceIF","isEqual","active","display","displayChildren","resetItemsByTrace","findItemsWithLevel","tier","findItemWithLevel","undefined","removeItemsWithLevel","replaceLevelItem","input","next","replaceLevelItems","src","componentsExisting","isAbsoluteURL","str","substring","NavigationManager","EventEmitter","getItems","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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"}
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 calculateItemScoreForPath(\n item: NavigationItemNormalized,\n currentPath: string,\n) {\n if (item.url === '/') {\n return 1;\n }\n\n if (item.activeMatch) {\n if (item.activeMatch === currentPath) {\n return 6;\n } if (currentPath.startsWith(item.activeMatch)) {\n return 4;\n }\n }\n\n if (item.url) {\n if (item.url === currentPath) {\n return 3;\n } if (currentPath.startsWith(item.url)) {\n return 2;\n }\n }\n\n return 0;\n}\n\nfunction findItemMatchesIF(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions,\n parent: ParentMatch,\n) {\n const output : {\n data: NavigationItemNormalized,\n score: number\n }[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n let { score } = parent;\n\n if (options.path) {\n score += calculateItemScoreForPath(item, options.path);\n }\n\n if (item.default) {\n score += 1;\n }\n\n if (item.children) {\n const childMatches = findItemMatchesIF(item.children, options, {\n score,\n });\n\n output.push(...childMatches);\n }\n\n output.push({ data: item, score });\n }\n\n return output.sort((a, b) => b.score - a.score);\n}\n\nexport function findBestItemMatches(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions = {},\n) : NavigationItemNormalized[] {\n const result = findItemMatchesIF(items, options, { score: 0 });\n const [first] = result;\n if (!first) {\n return [];\n }\n\n return result\n .filter((match) => match.score === first.score)\n .map((match) => match.data);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItem, NavigationItemNormalized } from '../types';\n\ntype NormalizeItemOptions = {\n level: number\n};\n\nfunction normalizeItemIF(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n trace: string[],\n) : NavigationItemNormalized {\n const output : NavigationItemNormalized = {\n ...item,\n level: defaults.level,\n children: [],\n trace: [\n ...trace,\n item.name,\n ],\n meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], defaults, output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, defaults, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n options: NormalizeItemOptions,\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item, options));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (let i = 0; i < item.length; i++) {\n if (parent[i] !== item[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n const isEqual = isTraceEqual(items[i].trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.displayChildren = true;\n } else {\n item.displayChildren = isTracePartOf(item.trace, trace);\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","type LevelRecord = {\n level: number,\n [key: string]: any\n};\n\nexport function findItemsWithLevel<T extends LevelRecord>(\n items: T[],\n tier: number,\n) : T[] {\n return items.filter((item) => item.level === tier);\n}\n\nexport function findItemWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T | undefined {\n const data = findItemsWithLevel(items, tier);\n if (data.length >= 1) {\n return data[0];\n }\n\n return undefined;\n}\n\nexport function removeItemsWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T[] {\n return items.filter((item) => item.level !== tier);\n}\n\nexport function replaceLevelItem<T extends LevelRecord>(\n tier: number,\n input: T[],\n next: T | undefined,\n): T[] {\n const output = removeItemsWithLevel(tier, input);\n\n if (next) {\n next.level = tier;\n\n return [\n ...output,\n next,\n ];\n }\n\n return output;\n}\n\nexport function replaceLevelItems<T extends LevelRecord>(\n tier: number,\n src: T[],\n next: T[],\n) : T[] {\n const componentsExisting = removeItemsWithLevel(tier, src);\n\n return [\n ...componentsExisting,\n ...next,\n ];\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { EventEmitter } from '@posva/event-emitter';\nimport {\n findBestItemMatches,\n findItemWithLevel,\n findItemsWithLevel,\n isTraceEqual,\n normalizeItems,\n removeItemsWithLevel,\n replaceLevelItem,\n replaceLevelItems,\n resetItemsByTrace,\n} from '../helpers';\nimport type { NavigationItemNormalized, NavigationItemsFn } from '../types';\nimport type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';\n\nexport class NavigationManager extends EventEmitter<{\n building: [],\n built: [],\n updated: NavigationItemNormalized[],\n levelUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : boolean;\n\n protected building : boolean;\n\n constructor(options: NavigationManagerOptions) {\n super();\n\n let itemsFn : NavigationItemsFn;\n if (typeof options.items === 'function') {\n itemsFn = options.items;\n } else {\n itemsFn = async ({ level }) => {\n if (level > 0) {\n return [];\n }\n\n return options.items as NavigationItemNormalized[];\n };\n }\n\n this.itemsFn = itemsFn;\n this.items = [];\n this.itemsActive = [];\n\n this.built = false;\n this.building = false;\n }\n\n getItems(tier?: number) {\n if (typeof tier === 'undefined') {\n return this.items;\n }\n\n return this.items.filter((item) => item.level === tier);\n }\n\n reset() {\n this.built = false;\n\n this.items = [];\n this.itemsActive = [];\n }\n\n async build(options: NavigationManagerBuildOptions) : Promise<void> {\n if (this.built || this.building) {\n return;\n }\n\n this.building = true;\n\n this.emit('building');\n\n let parent : NavigationItemNormalized | undefined;\n let level = 0;\n\n while (true) {\n const raw = await this.itemsFn({ level, parent });\n if (!raw || raw.length === 0) {\n break;\n }\n\n const items = normalizeItems(raw, { level });\n\n const matches = findBestItemMatches(items, {\n path: options.path,\n });\n\n const [match] = matches;\n\n if (!match) {\n break;\n }\n\n this.itemsActive.push(match);\n\n await this.buildLevel(level);\n\n parent = match;\n\n level++;\n }\n\n this.building = false;\n this.built = true;\n\n this.emit('built');\n this.emit('updated', this.items);\n }\n\n async select(level: number, itemNew: NavigationItemNormalized) {\n const itemOld = findItemWithLevel(level, this.itemsActive);\n\n if (\n itemOld &&\n isTraceEqual(itemOld.trace, itemNew.trace)\n ) {\n return;\n }\n\n this.itemsActive = this.itemsActive.filter(\n (el) => el.level < level,\n );\n this.itemsActive.push(itemNew);\n\n const startLevel = level;\n while (true) {\n const built = await this.buildLevel(\n level,\n startLevel === level,\n );\n if (!built) {\n break;\n }\n\n level++;\n }\n }\n\n async toggle(level: number, item: NavigationItemNormalized) {\n let isMatch : boolean;\n if (item.displayChildren) {\n isMatch = true;\n } else {\n const itemOld = findItemWithLevel(level, this.itemsActive);\n isMatch = !!itemOld && isTraceEqual(item.trace, itemOld.trace);\n }\n\n if (isMatch) {\n this.itemsActive = removeItemsWithLevel(level, this.itemsActive);\n } else {\n this.itemsActive = replaceLevelItem(level, this.itemsActive, item);\n }\n\n await this.buildLevel(level, true);\n }\n\n protected async buildLevel(level: number, useCache?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (useCache) {\n items = findItemsWithLevel(this.items, level);\n } else {\n const parent = findItemWithLevel(level - 1, this.itemsActive);\n const raw = await this.itemsFn({\n level,\n parent,\n });\n\n items = raw && raw.length > 0 ?\n normalizeItems(raw, { level }) :\n [];\n }\n\n if (!items || items.length === 0) {\n this.items = this.items.filter(\n (item) => item.level < level,\n );\n\n this.emit('levelUpdated', level, []);\n\n return false;\n }\n\n let trace : string[] = [];\n const item = findItemWithLevel(level, this.itemsActive);\n if (item) {\n trace = item.trace;\n }\n\n resetItemsByTrace(items, trace);\n\n this.items = replaceLevelItems(level, this.items, items);\n\n this.emit('levelUpdated', level, items);\n\n return true;\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { inject, provide } from '@vuecs/core';\nimport type { App } from 'vue';\nimport type { NavigationManager } from './module';\n\nconst sym = Symbol.for('VCNavigationManager');\n\nexport function injectNavigationManager(app?: App) : NavigationManager {\n const instance = inject<NavigationManager>(sym, app);\n if (!instance) {\n throw new Error('A navigation provider has not been provided.');\n }\n\n return instance;\n}\n\nexport function provideNavigationManager(\n manager: NavigationManager,\n app?: App,\n) {\n provide(sym, manager, app);\n}\n","export enum SlotName {\n ITEM = 'item',\n SEPARATOR = 'separator',\n LINK = 'link',\n SUB = 'sub',\n SUB_TITLE = 'sub-title',\n SUB_ITEMS = 'sub-items',\n}\n\nexport enum ElementType {\n LINK = 'link',\n SEPARATOR = 'separator',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type { LinkProperties } from '@vuecs/link';\nimport { VCLink } from '@vuecs/link';\nimport type { PropType, VNodeChild } from 'vue';\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n toRef,\n} from 'vue';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions, isAbsoluteURL } from '../../helpers';\nimport { ElementType, SlotName } from '../../constants';\n\nexport const VCNavItem = defineComponent({\n props: {\n data: {\n type: Object as PropType<NavigationItemNormalized>,\n required: true,\n },\n },\n setup(props, { slots }) {\n const itemsNode = resolveComponent('VCNavItems');\n\n const options = buildComponentOptions();\n const manager = injectNavigationManager();\n\n const data = toRef(props, 'data');\n const hasChildren = computed(() => data.value.children &&\n data.value.children.length > 0);\n\n const select = async (\n value: NavigationItemNormalized,\n ) => {\n await manager.select(data.value.level, value);\n };\n\n const toggle = async (\n value: NavigationItemNormalized,\n ) => {\n await manager.toggle(data.value.level, value);\n };\n\n return () => {\n const buildItem = () : VNodeChild => {\n // type: separator\n if (data.value.type === ElementType.SEPARATOR) {\n const hasSlot = hasNormalizedSlot(SlotName.SEPARATOR, slots);\n if (hasSlot) {\n return normalizeSlot(SlotName.SEPARATOR, {\n data: data.value,\n }, slots);\n }\n\n return h(options.separatorTag, {\n class: options.separatorClass,\n }, data.value.name);\n }\n\n // type: group\n if (!hasChildren.value) {\n const hasSlot = hasNormalizedSlot(SlotName.LINK, slots);\n if (hasSlot) {\n return normalizeSlot(SlotName.LINK, {\n data: data.value,\n select,\n isActive: data.value.active,\n }, slots);\n }\n const linkProps : LinkProperties = {\n active: data.value.active,\n disabled: false,\n prefetch: true,\n };\n\n if (data.value.url) {\n if (\n isAbsoluteURL(data.value.url) ||\n data.value.url.startsWith('#')\n ) {\n linkProps.href = data.value.url;\n if (data.value.urlTarget) {\n linkProps.target = data.value.urlTarget;\n }\n } else {\n linkProps.to = data.value.url;\n }\n }\n\n return h(VCLink, {\n class: [\n options.linkClass,\n ],\n ...linkProps,\n onClicked() {\n if (!data.value.url) {\n return select.call(null, data.value);\n }\n\n return undefined;\n },\n onClick() {\n return select.call(null, data.value);\n },\n }, {\n default: () => [\n ...(data.value.icon ?\n [h(\n options.linkIconTag,\n {\n class: options.linkIconClass,\n },\n [\n h('i', { class: data.value.icon }),\n ],\n )] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ],\n });\n }\n\n if (hasNormalizedSlot(SlotName.SUB, slots)) {\n return normalizeSlot(SlotName.SUB, {\n data: data.value,\n select,\n toggle,\n }, slots);\n }\n\n let title : VNodeChild;\n if (hasNormalizedSlot(SlotName.SUB_TITLE, slots)) {\n title = normalizeSlot(SlotName.SUB_TITLE, {\n data: data.value,\n select,\n toggle,\n });\n } else {\n title = h('div', {\n class: options.linkClass,\n onClick($event: any) {\n $event.preventDefault();\n\n return toggle(data.value);\n },\n }, [\n ...(data.value.icon ?\n [h(\n options.linkIconTag,\n {\n class: options.linkIconClass,\n },\n [\n h('i', { class: data.value.icon }),\n ],\n )] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ]);\n }\n\n if (!hasChildren.value) {\n return title;\n }\n\n let vNodes : VNodeChild;\n\n if (hasNormalizedSlot(SlotName.SUB_ITEMS, slots)) {\n vNodes = normalizeSlot(SlotName.SUB_ITEMS, {\n data: data.value,\n select,\n toggle,\n });\n } else {\n vNodes = h(itemsNode, {\n level: data.value.level,\n data: data.value.children,\n });\n }\n\n return [\n title,\n vNodes,\n ];\n };\n\n return h(options.itemTag, {\n class: [\n options.itemClass,\n ...(hasChildren.value ? [options.itemNestedClass] : []),\n {\n active: data.value.active || data.value.displayChildren,\n },\n ],\n }, [\n buildItem(),\n ]);\n };\n },\n});\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type {\n PropType,\n VNodeArrayChildren,\n VNodeChild,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n h, onMounted, onUnmounted, ref,\n} from 'vue';\nimport { SlotName } from '../../constants';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions } from '../../helpers';\nimport { VCNavItem } from '../item';\n\nexport const VCNavItems = defineComponent({\n props: {\n level: {\n type: Number,\n default: 0,\n },\n data: {\n type: Array as PropType<NavigationItemNormalized[]>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const options = buildComponentOptions();\n\n const manager = injectNavigationManager();\n const managerItems = ref<NavigationItemNormalized[]>([]);\n if (!props.data) {\n managerItems.value = manager.getItems(props.level);\n }\n\n const counter = ref(0);\n\n let removeListener : CallableFunction | undefined;\n\n onMounted(() => {\n removeListener = manager.on(\n 'levelUpdated',\n (level, items) => {\n if (level !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\n },\n );\n });\n\n onUnmounted(() => {\n if (typeof removeListener === 'function') {\n removeListener();\n\n removeListener = undefined;\n }\n });\n\n const items = computed(() => {\n if (typeof props.data !== 'undefined') {\n return props.data;\n }\n\n return managerItems.value;\n });\n\n return () => {\n const vNodes : VNodeArrayChildren = [];\n\n for (let i = 0; i < items.value.length; i++) {\n if (!items.value[i].display && !items.value[i].displayChildren) {\n continue;\n }\n\n let vNode : VNodeChild;\n if (hasNormalizedSlot(SlotName.ITEM, slots)) {\n vNode = normalizeSlot(SlotName.ITEM, { data: items.value[i] }, slots);\n } else {\n vNode = h(\n VCNavItem,\n {\n key: `${i}:${counter.value}`,\n data: items.value[i],\n },\n );\n }\n\n vNodes.push(vNode);\n }\n\n return h(options.groupTag, {\n class: options.groupClass,\n }, vNodes);\n };\n },\n});\n","import { applyStoreManagerOptions, installStoreManager } from '@vuecs/core';\n\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\nimport { NavigationManager, provideNavigationManager } from './manager';\n\nimport {\n VCNavItem,\n VCNavItems,\n} from './components';\nimport type { Options } from './types';\n\nexport * from './components';\nexport * from './manager';\nexport * from './types';\n\nexport function install(instance: App, options: Options) : void {\n const manager = new NavigationManager({\n items: options.items,\n });\n\n provideNavigationManager(manager, instance);\n\n const storeManager = installStoreManager(instance);\n if (options.storeManager) {\n applyStoreManagerOptions(storeManager, options.storeManager);\n }\n\n Object.entries({\n VCNavItem,\n VCNavItems,\n }).forEach(([componentName, component]) => {\n instance.component(componentName, component);\n });\n}\n\nexport default {\n install,\n} satisfies Plugin<Options>;\n"],"names":["buildComponentOptions","manager","createComponentOptionsManager","name","groupClass","mergeOption","get","groupTag","itemClass","itemNestedClass","itemTag","separatorTag","separatorClass","linkIconTag","linkIconClass","linkClass","linkRootClass","linkTextTag","linkTextClass","calculateItemScoreForPath","item","currentPath","url","activeMatch","startsWith","findItemMatchesIF","items","options","parent","output","i","length","score","path","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","meta","normalizeItem","normalizeItems","isTraceEqual","isTracePartOf","resetItemsByTraceIF","isEqual","active","display","displayChildren","resetItemsByTrace","findItemsWithLevel","tier","findItemWithLevel","undefined","removeItemsWithLevel","replaceLevelItem","input","next","replaceLevelItems","src","componentsExisting","isAbsoluteURL","str","substring","NavigationManager","EventEmitter","getItems","reset","built","itemsActive","build","building","emit","raw","itemsFn","matches","buildLevel","select","itemNew","itemOld","el","startLevel","toggle","isMatch","useCache","constructor","sym","Symbol","for","injectNavigationManager","app","instance","inject","Error","provideNavigationManager","provide","SlotName","ElementType","VCNavItem","defineComponent","props","type","Object","required","setup","slots","itemsNode","resolveComponent","toRef","hasChildren","computed","value","buildItem","SEPARATOR","hasSlot","hasNormalizedSlot","normalizeSlot","h","class","LINK","isActive","linkProps","disabled","prefetch","href","urlTarget","target","to","VCLink","onClicked","call","onClick","icon","SUB","title","SUB_TITLE","$event","preventDefault","vNodes","SUB_ITEMS","VCNavItems","Number","Array","managerItems","ref","counter","removeListener","onMounted","on","onUnmounted","vNode","ITEM","key","install","storeManager","installStoreManager","applyStoreManagerOptions","entries","forEach","componentName","component"],"mappings":";;;;;;;;;AAWO,SAASA,qBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,kCAAgD,CAAA;QAC5DC,IAAM,EAAA;AACV,KAAA,CAAA;IAEA,OAAO;AACHC,QAAAA,UAAAA,EAAYC,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,YAAe,CAAA,EAAA,cAAA,CAAA;QAC5DC,QAAUN,EAAAA,OAAAA,CAAQK,GAAG,CAAC,UAAe,CAAA,IAAA,IAAA;AAErCE,QAAAA,SAAAA,EAAWH,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,WAAc,CAAA,EAAA,aAAA,CAAA;AAC1DG,QAAAA,eAAAA,EAAiBJ,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,iBAAoB,CAAA,EAAA,oBAAA,CAAA;QACtEI,OAAST,EAAAA,OAAAA,CAAQK,GAAG,CAAC,SAAc,CAAA,IAAA,IAAA;QAEnCK,YAAcV,EAAAA,OAAAA,CAAQK,GAAG,CAAC,cAAmB,CAAA,IAAA,KAAA;AAC7CM,QAAAA,cAAAA,EAAgBP,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA,CAAA;QAEnEO,WAAaZ,EAAAA,OAAAA,CAAQK,GAAG,CAAC,aAAkB,CAAA,IAAA,KAAA;AAC3CQ,QAAAA,aAAAA,EAAeT,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA,CAAA;AAElES,QAAAA,SAAAA,EAAWV,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,WAAc,CAAA,EAAA,aAAA,CAAA;AAC1DU,QAAAA,aAAAA,EAAeX,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA,CAAA;QAClEW,WAAahB,EAAAA,OAAAA,CAAQK,GAAG,CAAC,aAAkB,CAAA,IAAA,KAAA;AAC3CY,QAAAA,aAAAA,EAAeb,gBAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA;AACtE,KAAA;AACJ;;ACzBA,SAASa,yBAAAA,CACLC,IAA8B,EAC9BC,WAAmB,EAAA;IAEnB,IAAID,IAAAA,CAAKE,GAAG,KAAK,GAAK,EAAA;QAClB,OAAO,CAAA;AACX;IAEA,IAAIF,IAAAA,CAAKG,WAAW,EAAE;QAClB,IAAIH,IAAAA,CAAKG,WAAW,KAAKF,WAAa,EAAA;YAClC,OAAO,CAAA;AACX;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKG,WAAW,CAAG,EAAA;YAC5C,OAAO,CAAA;AACX;AACJ;IAEA,IAAIH,IAAAA,CAAKE,GAAG,EAAE;QACV,IAAIF,IAAAA,CAAKE,GAAG,KAAKD,WAAa,EAAA;YAC1B,OAAO,CAAA;AACX;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKE,GAAG,CAAG,EAAA;YACpC,OAAO,CAAA;AACX;AACJ;IAEA,OAAO,CAAA;AACX;AAEA,SAASG,iBACLC,CAAAA,KAAiC,EACjCC,OAA+B,EAC/BC,MAAmB,EAAA;AAEnB,IAAA,MAAMC,SAGA,EAAE;AAER,IAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAIJ,KAAMK,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QACnC,MAAMV,IAAAA,GAAOM,KAAK,CAACI,CAAE,CAAA;QAErB,IAAI,EAAEE,KAAK,EAAE,GAAGJ,MAAAA;QAEhB,IAAID,OAAAA,CAAQM,IAAI,EAAE;YACdD,KAASb,IAAAA,yBAAAA,CAA0BC,IAAMO,EAAAA,OAAAA,CAAQM,IAAI,CAAA;AACzD;QAEA,IAAIb,IAAAA,CAAKc,OAAO,EAAE;YACdF,KAAS,IAAA,CAAA;AACb;QAEA,IAAIZ,IAAAA,CAAKe,QAAQ,EAAE;AACf,YAAA,MAAMC,YAAeX,GAAAA,iBAAAA,CAAkBL,IAAKe,CAAAA,QAAQ,EAAER,OAAS,EAAA;AAC3DK,gBAAAA;AACJ,aAAA,CAAA;AAEAH,YAAAA,MAAAA,CAAOQ,IAAI,CAAID,GAAAA,YAAAA,CAAAA;AACnB;AAEAP,QAAAA,MAAAA,CAAOQ,IAAI,CAAC;YAAEC,IAAMlB,EAAAA,IAAAA;AAAMY,YAAAA;AAAM,SAAA,CAAA;AACpC;IAEA,OAAOH,MAAAA,CAAOU,IAAI,CAAC,CAACC,CAAAA,EAAGC,IAAMA,CAAET,CAAAA,KAAK,GAAGQ,CAAAA,CAAER,KAAK,CAAA;AAClD;AAEO,SAASU,mBACZhB,CAAAA,KAAiC,EACjCC,OAAAA,GAAkC,EAAE,EAAA;IAEpC,MAAMgB,MAAAA,GAASlB,iBAAkBC,CAAAA,KAAAA,EAAOC,OAAS,EAAA;QAAEK,KAAO,EAAA;AAAE,KAAA,CAAA;IAC5D,MAAM,CAACY,MAAM,GAAGD,MAAAA;AAChB,IAAA,IAAI,CAACC,KAAO,EAAA;AACR,QAAA,OAAO,EAAE;AACb;AAEA,IAAA,OAAOD,OACFE,MAAM,CAAC,CAACC,KAAAA,GAAUA,MAAMd,KAAK,KAAKY,KAAMZ,CAAAA,KAAK,EAC7Ce,GAAG,CAAC,CAACD,KAAAA,GAAUA,MAAMR,IAAI,CAAA;AAClC;;ACvFA;;;;;AAKC,IAQD,SAASU,eACL5B,CAAAA,IAAoB,EACpB6B,QAA8B,EAC9BC,KAAe,EAAA;AAEf,IAAA,MAAMrB,MAAoC,GAAA;AACtC,QAAA,GAAGT,IAAI;AACP+B,QAAAA,KAAAA,EAAOF,SAASE,KAAK;AACrBhB,QAAAA,QAAAA,EAAU,EAAE;QACZe,KAAO,EAAA;AACAA,YAAAA,GAAAA,KAAAA;AACH9B,YAAAA,IAAAA,CAAKjB;AACR,SAAA;QACDiD,IAAMhC,EAAAA,IAAAA,CAAKgC,IAAI,IAAI;AACvB,KAAA;IAEA,IAAI,CAAChC,IAAKe,CAAAA,QAAQ,EAAE;QAChB,OAAON,MAAAA;AACX;IAEA,IAAK,IAAIC,IAAI,CAAGA,EAAAA,CAAAA,GAAIV,KAAKe,QAAQ,CAACJ,MAAM,EAAED,CAAK,EAAA,CAAA;AAC3CD,QAAAA,MAAAA,CAAOM,QAAQ,CAACE,IAAI,CAACW,eAAgB5B,CAAAA,IAAAA,CAAKe,QAAQ,CAACL,CAAE,CAAA,EAAEmB,QAAUpB,EAAAA,MAAAA,CAAOqB,KAAK,CAAA,CAAA;AACjF;IAEA,OAAOrB,MAAAA;AACX;AAEO,SAASwB,aAAAA,CACZjC,IAAoB,EACpB6B,QAA8B,EAAA;IAE9B,OAAOD,eAAAA,CAAgB5B,IAAM6B,EAAAA,QAAAA,EAAU,EAAE,CAAA;AAC7C;AAEO,SAASK,cAAAA,CACZ5B,KAAuB,EACvBC,OAA6B,EAAA;AAE7B,IAAA,OAAOD,MAAMqB,GAAG,CAAC,CAAC3B,IAAAA,GAASiC,cAAcjC,IAAMO,EAAAA,OAAAA,CAAAA,CAAAA;AACnD;;ACpDA;;;;;AAKC,IAEM,SAAS4B,YACZf,CAAAA,CAAW,EACXC,CAAW,EAAA;AAEX,IAAA,IAAID,CAAET,CAAAA,MAAM,KAAKU,CAAAA,CAAEV,MAAM,EAAE;QACvB,OAAO,KAAA;AACX;AAEA,IAAA,IAAK,IAAID,CAAI,GAAA,CAAA,EAAGA,IAAIU,CAAET,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;AAC/B,QAAA,IAAIU,CAAC,CAACV,CAAAA,CAAE,KAAKW,CAAC,CAACX,EAAE,EAAE;YACf,OAAO,KAAA;AACX;AACJ;IAEA,OAAO,IAAA;AACX;AAEO,SAAS0B,aAAAA,CAAcpC,IAAc,EAAEQ,MAAgB,EAAA;AAC1D,IAAA,IAAK,IAAIE,CAAI,GAAA,CAAA,EAAGA,IAAIV,IAAKW,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;AAClC,QAAA,IAAIF,MAAM,CAACE,CAAAA,CAAE,KAAKV,IAAI,CAACU,EAAE,EAAE;YACvB,OAAO,KAAA;AACX;AACJ;IAEA,OAAO,IAAA;AACX;;AC7BA,SAAS2B,mBAAAA,CACL/B,KAAiC,EACjCwB,KAAe,EAAA;AAEf,IAAA,IAAK,IAAIpB,CAAI,GAAA,CAAA,EAAGA,IAAIJ,KAAMK,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QACnC,MAAMV,IAAAA,GAAOM,KAAK,CAACI,CAAE,CAAA;AAErB,QAAA,MAAM4B,UAAUH,YAAa7B,CAAAA,KAAK,CAACI,CAAE,CAAA,CAACoB,KAAK,EAAEA,KAAAA,CAAAA;AAC7C9B,QAAAA,IAAAA,CAAKuC,MAAM,GAAGD,OAAAA;AACdtC,QAAAA,IAAAA,CAAKwC,OAAO,GAAG,IAAA;AAEf,QAAA,IAAIF,OAAS,EAAA;AACTtC,YAAAA,IAAAA,CAAKyC,eAAe,GAAG,IAAA;SACpB,MAAA;AACHzC,YAAAA,IAAAA,CAAKyC,eAAe,GAAGL,aAAcpC,CAAAA,IAAAA,CAAK8B,KAAK,EAAEA,KAAAA,CAAAA;AACrD;AAEA9B,QAAAA,IAAAA,CAAKe,QAAQ,GAAGsB,mBAAoBrC,CAAAA,IAAAA,CAAKe,QAAQ,EAAEe,KAAAA,CAAAA;AACvD;IAEA,OAAOxB,KAAAA;AACX;AAEO,SAASoC,iBAAAA,CACZpC,KAAiC,EACjCwB,KAAe,EAAA;AAEf,IAAA,OAAOO,oBAAoB/B,KAAOwB,EAAAA,KAAAA,CAAAA;AACtC;;AC1BO,SAASa,kBAAAA,CACZrC,KAAU,EACVsC,IAAY,EAAA;AAEZ,IAAA,OAAOtC,MAAMmB,MAAM,CAAC,CAACzB,IAASA,GAAAA,IAAAA,CAAK+B,KAAK,KAAKa,IAAAA,CAAAA;AACjD;AAEO,SAASC,iBAAAA,CACZD,IAAY,EACZtC,KAAU,EAAA;IAEV,MAAMY,IAAAA,GAAOyB,mBAAmBrC,KAAOsC,EAAAA,IAAAA,CAAAA;IACvC,IAAI1B,IAAAA,CAAKP,MAAM,IAAI,CAAG,EAAA;QAClB,OAAOO,IAAI,CAAC,CAAE,CAAA;AAClB;IAEA,OAAO4B,SAAAA;AACX;AAEO,SAASC,oBAAAA,CACZH,IAAY,EACZtC,KAAU,EAAA;AAEV,IAAA,OAAOA,MAAMmB,MAAM,CAAC,CAACzB,IAASA,GAAAA,IAAAA,CAAK+B,KAAK,KAAKa,IAAAA,CAAAA;AACjD;AAEO,SAASI,gBACZJ,CAAAA,IAAY,EACZK,KAAU,EACVC,IAAmB,EAAA;IAEnB,MAAMzC,MAAAA,GAASsC,qBAAqBH,IAAMK,EAAAA,KAAAA,CAAAA;AAE1C,IAAA,IAAIC,IAAM,EAAA;AACNA,QAAAA,IAAAA,CAAKnB,KAAK,GAAGa,IAAAA;QAEb,OAAO;AACAnC,YAAAA,GAAAA,MAAAA;AACHyC,YAAAA;AACH,SAAA;AACL;IAEA,OAAOzC,MAAAA;AACX;AAEO,SAAS0C,iBACZP,CAAAA,IAAY,EACZQ,GAAQ,EACRF,IAAS,EAAA;IAET,MAAMG,kBAAAA,GAAqBN,qBAAqBH,IAAMQ,EAAAA,GAAAA,CAAAA;IAEtD,OAAO;AACAC,QAAAA,GAAAA,kBAAAA;AACAH,QAAAA,GAAAA;AACN,KAAA;AACL;;AC7DO,SAASI,cAAcC,GAAW,EAAA;IACrC,OAAOA,GAAAA,CAAIC,SAAS,CAAC,CAAG,EAAA,CAAA,CAAA,KAAO,aAC3BD,GAAIC,CAAAA,SAAS,CAAC,CAAA,EAAG,CAAO,CAAA,KAAA,UAAA;AAChC;;ACmBO,MAAMC,iBAA0BC,SAAAA,yBAAAA,CAAAA;AAwCnCC,IAAAA,QAAAA,CAASf,IAAa,EAAE;QACpB,IAAI,OAAOA,SAAS,WAAa,EAAA;YAC7B,OAAO,IAAI,CAACtC,KAAK;AACrB;QAEA,OAAO,IAAI,CAACA,KAAK,CAACmB,MAAM,CAAC,CAACzB,IAAAA,GAASA,IAAK+B,CAAAA,KAAK,KAAKa,IAAAA,CAAAA;AACtD;IAEAgB,KAAQ,GAAA;QACJ,IAAI,CAACC,KAAK,GAAG,KAAA;QAEb,IAAI,CAACvD,KAAK,GAAG,EAAE;QACf,IAAI,CAACwD,WAAW,GAAG,EAAE;AACzB;IAEA,MAAMC,KAAAA,CAAMxD,OAAsC,EAAkB;AAChE,QAAA,IAAI,IAAI,CAACsD,KAAK,IAAI,IAAI,CAACG,QAAQ,EAAE;AAC7B,YAAA;AACJ;QAEA,IAAI,CAACA,QAAQ,GAAG,IAAA;QAEhB,IAAI,CAACC,IAAI,CAAC,UAAA,CAAA;QAEV,IAAIzD,MAAAA;AACJ,QAAA,IAAIuB,KAAQ,GAAA,CAAA;AAEZ,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAMmC,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAAEpC,gBAAAA,KAAAA;AAAOvB,gBAAAA;AAAO,aAAA,CAAA;AAC/C,YAAA,IAAI,CAAC0D,GAAAA,IAAOA,GAAIvD,CAAAA,MAAM,KAAK,CAAG,EAAA;AAC1B,gBAAA;AACJ;YAEA,MAAML,KAAAA,GAAQ4B,eAAegC,GAAK,EAAA;AAAEnC,gBAAAA;AAAM,aAAA,CAAA;YAE1C,MAAMqC,OAAAA,GAAU9C,oBAAoBhB,KAAO,EAAA;AACvCO,gBAAAA,IAAAA,EAAMN,QAAQM;AAClB,aAAA,CAAA;YAEA,MAAM,CAACa,MAAM,GAAG0C,OAAAA;AAEhB,YAAA,IAAI,CAAC1C,KAAO,EAAA;AACR,gBAAA;AACJ;AAEA,YAAA,IAAI,CAACoC,WAAW,CAAC7C,IAAI,CAACS,KAAAA,CAAAA;YAEtB,MAAM,IAAI,CAAC2C,UAAU,CAACtC,KAAAA,CAAAA;YAEtBvB,MAASkB,GAAAA,KAAAA;AAETK,YAAAA,KAAAA,EAAAA;AACJ;QAEA,IAAI,CAACiC,QAAQ,GAAG,KAAA;QAChB,IAAI,CAACH,KAAK,GAAG,IAAA;QAEb,IAAI,CAACI,IAAI,CAAC,OAAA,CAAA;AACV,QAAA,IAAI,CAACA,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC3D,KAAK,CAAA;AACnC;AAEA,IAAA,MAAMgE,MAAOvC,CAAAA,KAAa,EAAEwC,OAAiC,EAAE;AAC3D,QAAA,MAAMC,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAAC+B,WAAW,CAAA;AAEzD,QAAA,IACIU,WACArC,YAAaqC,CAAAA,OAAAA,CAAQ1C,KAAK,EAAEyC,OAAAA,CAAQzC,KAAK,CAC3C,EAAA;AACE,YAAA;AACJ;AAEA,QAAA,IAAI,CAACgC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACrC,MAAM,CACtC,CAACgD,EAAOA,GAAAA,EAAAA,CAAG1C,KAAK,GAAGA,KAAAA,CAAAA;AAEvB,QAAA,IAAI,CAAC+B,WAAW,CAAC7C,IAAI,CAACsD,OAAAA,CAAAA;AAEtB,QAAA,MAAMG,UAAa3C,GAAAA,KAAAA;AACnB,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAM8B,QAAQ,MAAM,IAAI,CAACQ,UAAU,CAC/BtC,OACA2C,UAAe3C,KAAAA,KAAAA,CAAAA;AAEnB,YAAA,IAAI,CAAC8B,KAAO,EAAA;AACR,gBAAA;AACJ;AAEA9B,YAAAA,KAAAA,EAAAA;AACJ;AACJ;AAEA,IAAA,MAAM4C,MAAO5C,CAAAA,KAAa,EAAE/B,IAA8B,EAAE;QACxD,IAAI4E,OAAAA;QACJ,IAAI5E,IAAAA,CAAKyC,eAAe,EAAE;YACtBmC,OAAU,GAAA,IAAA;SACP,MAAA;AACH,YAAA,MAAMJ,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAAC+B,WAAW,CAAA;YACzDc,OAAU,GAAA,CAAC,CAACJ,OAAWrC,IAAAA,YAAAA,CAAanC,KAAK8B,KAAK,EAAE0C,QAAQ1C,KAAK,CAAA;AACjE;AAEA,QAAA,IAAI8C,OAAS,EAAA;AACT,YAAA,IAAI,CAACd,WAAW,GAAGf,qBAAqBhB,KAAO,EAAA,IAAI,CAAC+B,WAAW,CAAA;SAC5D,MAAA;YACH,IAAI,CAACA,WAAW,GAAGd,gBAAAA,CAAiBjB,OAAO,IAAI,CAAC+B,WAAW,EAAE9D,IAAAA,CAAAA;AACjE;AAEA,QAAA,MAAM,IAAI,CAACqE,UAAU,CAACtC,KAAO,EAAA,IAAA,CAAA;AACjC;AAEA,IAAA,MAAgBsC,UAAWtC,CAAAA,KAAa,EAAE8C,QAAkB,EAAqB;QAC7E,IAAIvE,KAAAA;AAEJ,QAAA,IAAIuE,QAAU,EAAA;AACVvE,YAAAA,KAAAA,GAAQqC,kBAAmB,CAAA,IAAI,CAACrC,KAAK,EAAEyB,KAAAA,CAAAA;SACpC,MAAA;AACH,YAAA,MAAMvB,SAASqC,iBAAkBd,CAAAA,KAAAA,GAAQ,CAAG,EAAA,IAAI,CAAC+B,WAAW,CAAA;AAC5D,YAAA,MAAMI,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAC3BpC,gBAAAA,KAAAA;AACAvB,gBAAAA;AACJ,aAAA,CAAA;AAEAF,YAAAA,KAAAA,GAAQ4D,OAAOA,GAAIvD,CAAAA,MAAM,GAAG,CAAA,GACxBuB,eAAegC,GAAK,EAAA;AAAEnC,gBAAAA;AAAM,aAAA,CAAA,GAC5B,EAAE;AACV;AAEA,QAAA,IAAI,CAACzB,KAAAA,IAASA,KAAMK,CAAAA,MAAM,KAAK,CAAG,EAAA;AAC9B,YAAA,IAAI,CAACL,KAAK,GAAG,IAAI,CAACA,KAAK,CAACmB,MAAM,CAC1B,CAACzB,IAASA,GAAAA,IAAAA,CAAK+B,KAAK,GAAGA,KAAAA,CAAAA;AAG3B,YAAA,IAAI,CAACkC,IAAI,CAAC,cAAA,EAAgBlC,OAAO,EAAE,CAAA;YAEnC,OAAO,KAAA;AACX;AAEA,QAAA,IAAID,QAAmB,EAAE;AACzB,QAAA,MAAM9B,IAAO6C,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAAC+B,WAAW,CAAA;AACtD,QAAA,IAAI9D,IAAM,EAAA;AACN8B,YAAAA,KAAAA,GAAQ9B,KAAK8B,KAAK;AACtB;AAEAY,QAAAA,iBAAAA,CAAkBpC,KAAOwB,EAAAA,KAAAA,CAAAA;QAEzB,IAAI,CAACxB,KAAK,GAAG6C,iBAAAA,CAAkBpB,OAAO,IAAI,CAACzB,KAAK,EAAEA,KAAAA,CAAAA;AAElD,QAAA,IAAI,CAAC2D,IAAI,CAAC,cAAA,EAAgBlC,KAAOzB,EAAAA,KAAAA,CAAAA;QAEjC,OAAO,IAAA;AACX;AA5KAwE,IAAAA,WAAAA,CAAYvE,OAAiC,CAAE;QAC3C,KAAK,EAAA;QAEL,IAAI4D,OAAAA;AACJ,QAAA,IAAI,OAAO5D,OAAAA,CAAQD,KAAK,KAAK,UAAY,EAAA;AACrC6D,YAAAA,OAAAA,GAAU5D,QAAQD,KAAK;SACpB,MAAA;YACH6D,OAAU,GAAA,OAAO,EAAEpC,KAAK,EAAE,GAAA;AACtB,gBAAA,IAAIA,QAAQ,CAAG,EAAA;AACX,oBAAA,OAAO,EAAE;AACb;AAEA,gBAAA,OAAOxB,QAAQD,KAAK;AACxB,aAAA;AACJ;QAEA,IAAI,CAAC6D,OAAO,GAAGA,OAAAA;QACf,IAAI,CAAC7D,KAAK,GAAG,EAAE;QACf,IAAI,CAACwD,WAAW,GAAG,EAAE;QAErB,IAAI,CAACD,KAAK,GAAG,KAAA;QACb,IAAI,CAACG,QAAQ,GAAG,KAAA;AACpB;AAuJJ;;ACxMA,MAAMe,GAAAA,GAAMC,MAAOC,CAAAA,GAAG,CAAC,qBAAA,CAAA;AAEhB,SAASC,wBAAwBC,GAAS,EAAA;IAC7C,MAAMC,QAAAA,GAAWC,YAA0BN,GAAKI,EAAAA,GAAAA,CAAAA;AAChD,IAAA,IAAI,CAACC,QAAU,EAAA;AACX,QAAA,MAAM,IAAIE,KAAM,CAAA,8CAAA,CAAA;AACpB;IAEA,OAAOF,QAAAA;AACX;AAEO,SAASG,wBAAAA,CACZ1G,OAA0B,EAC1BsG,GAAS,EAAA;AAETK,IAAAA,YAAAA,CAAQT,KAAKlG,OAASsG,EAAAA,GAAAA,CAAAA;AAC1B;;AC3BO,IAAA,QAAKM,iBAAAA,SAAAA,QAAAA,EAAAA;;;;;;;AAAAA,IAAAA,OAAAA,QAAAA;AAOX,CAAA,CAAA,EAAA,CAAA;AAEM,IAAA,WAAKC,iBAAAA,SAAAA,WAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA;AAGX,CAAA,CAAA,EAAA,CAAA;;ACWM,MAAMC,YAAYC,mBAAgB,CAAA;IACrCC,KAAO,EAAA;QACH3E,IAAM,EAAA;YACF4E,IAAMC,EAAAA,MAAAA;YACNC,QAAU,EAAA;AACd;AACJ,KAAA;AACAC,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAMC,YAAYC,oBAAiB,CAAA,YAAA,CAAA;AAEnC,QAAA,MAAM7F,OAAU3B,GAAAA,qBAAAA,EAAAA;AAChB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA;QAEhB,MAAMhE,IAAAA,GAAOmF,UAAMR,KAAO,EAAA,MAAA,CAAA;AAC1B,QAAA,MAAMS,WAAcC,GAAAA,YAAAA,CAAS,IAAMrF,IAAAA,CAAKsF,KAAK,CAACzF,QAAQ,IAC9CG,IAAAA,CAAKsF,KAAK,CAACzF,QAAQ,CAACJ,MAAM,GAAG,CAAA,CAAA;AAErC,QAAA,MAAM2D,SAAS,OACXkC,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQyF,MAAM,CAACpD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA;AAC3C,SAAA;AAEA,QAAA,MAAM7B,SAAS,OACX6B,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQ8F,MAAM,CAACzD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA;AAC3C,SAAA;QAEA,OAAO,IAAA;AACH,YAAA,MAAMC,SAAY,GAAA,IAAA;;AAEd,gBAAA,IAAIvF,KAAKsF,KAAK,CAACV,IAAI,KAAKJ,WAAAA,CAAYgB,SAAS,EAAE;AAC3C,oBAAA,MAAMC,OAAUC,GAAAA,sBAAAA,CAAkBnB,QAASiB,CAAAA,SAAS,EAAER,KAAAA,CAAAA;AACtD,oBAAA,IAAIS,OAAS,EAAA;wBACT,OAAOE,kBAAAA,CAAcpB,QAASiB,CAAAA,SAAS,EAAE;AACrCxF,4BAAAA,IAAAA,EAAMA,KAAKsF;yBACZN,EAAAA,KAAAA,CAAAA;AACP;oBAEA,OAAOY,KAAAA,CAAEvG,OAAQhB,CAAAA,YAAY,EAAE;AAC3BwH,wBAAAA,KAAAA,EAAOxG,QAAQf;qBAChB0B,EAAAA,IAAAA,CAAKsF,KAAK,CAACzH,IAAI,CAAA;AACtB;;gBAGA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;AACpB,oBAAA,MAAMG,OAAUC,GAAAA,sBAAAA,CAAkBnB,QAASuB,CAAAA,IAAI,EAAEd,KAAAA,CAAAA;AACjD,oBAAA,IAAIS,OAAS,EAAA;wBACT,OAAOE,kBAAAA,CAAcpB,QAASuB,CAAAA,IAAI,EAAE;AAChC9F,4BAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,4BAAAA,MAAAA;4BACA2C,QAAU/F,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE;yBACtB2D,EAAAA,KAAAA,CAAAA;AACP;AACA,oBAAA,MAAMgB,SAA6B,GAAA;wBAC/B3E,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM;wBACzB4E,QAAU,EAAA,KAAA;wBACVC,QAAU,EAAA;AACd,qBAAA;AAEA,oBAAA,IAAIlG,IAAKsF,CAAAA,KAAK,CAACtG,GAAG,EAAE;AAChB,wBAAA,IACIoD,aAAcpC,CAAAA,IAAAA,CAAKsF,KAAK,CAACtG,GAAG,CAAA,IAChBgB,IAAKsF,CAAAA,KAAK,CAACtG,GAAG,CAACE,UAAU,CAAC,GACxC,CAAA,EAAA;AACE8G,4BAAAA,SAAAA,CAAUG,IAAI,GAAGnG,IAAKsF,CAAAA,KAAK,CAACtG,GAAG;AAC/B,4BAAA,IAAIgB,IAAKsF,CAAAA,KAAK,CAACc,SAAS,EAAE;AACtBJ,gCAAAA,SAAAA,CAAUK,MAAM,GAAGrG,IAAKsF,CAAAA,KAAK,CAACc,SAAS;AAC3C;yBACG,MAAA;AACHJ,4BAAAA,SAAAA,CAAUM,EAAE,GAAGtG,IAAKsF,CAAAA,KAAK,CAACtG,GAAG;AACjC;AACJ;AAEA,oBAAA,OAAO4G,MAAEW,WAAQ,EAAA;wBACbV,KAAO,EAAA;AACHxG,4BAAAA,OAAAA,CAAQZ;AACX,yBAAA;AACD,wBAAA,GAAGuH,SAAS;AACZQ,wBAAAA,SAAAA,CAAAA,GAAAA;AACI,4BAAA,IAAI,CAACxG,IAAAA,CAAKsF,KAAK,CAACtG,GAAG,EAAE;AACjB,gCAAA,OAAOoE,MAAOqD,CAAAA,IAAI,CAAC,IAAA,EAAMzG,KAAKsF,KAAK,CAAA;AACvC;4BAEA,OAAO1D,SAAAA;AACX,yBAAA;AACA8E,wBAAAA,OAAAA,CAAAA,GAAAA;AACI,4BAAA,OAAOtD,MAAOqD,CAAAA,IAAI,CAAC,IAAA,EAAMzG,KAAKsF,KAAK,CAAA;AACvC;qBACD,EAAA;AACC1F,wBAAAA,OAAAA,EAAS,IAAM;mCACPI,IAAKsF,CAAAA,KAAK,CAACqB,IAAI,GACf;oCAACf,KACGvG,CAAAA,OAAAA,CAAQd,WAAW,EACnB;AACIsH,wCAAAA,KAAAA,EAAOxG,QAAQb;qCAEnB,EAAA;AACIoH,wCAAAA,KAAAA,CAAE,GAAK,EAAA;4CAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB;AAAK,yCAAA;AACnC,qCAAA;AACH,iCAAA,GACF,EAAE;gCAENf,KAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,oCAAAA,KAAAA,EAAOxG,QAAQT;iCAChB,EAAA;oCACCoB,IAAKsF,CAAAA,KAAK,CAACzH;AACd,iCAAA;AACJ;AACL,qBAAA,CAAA;AACJ;AAEA,gBAAA,IAAI6H,sBAAkBnB,CAAAA,QAAAA,CAASqC,GAAG,EAAE5B,KAAQ,CAAA,EAAA;oBACxC,OAAOW,kBAAAA,CAAcpB,QAASqC,CAAAA,GAAG,EAAE;AAC/B5G,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA;qBACDuB,EAAAA,KAAAA,CAAAA;AACP;gBAEA,IAAI6B,KAAAA;AACJ,gBAAA,IAAInB,sBAAkBnB,CAAAA,QAAAA,CAASuC,SAAS,EAAE9B,KAAQ,CAAA,EAAA;oBAC9C6B,KAAQlB,GAAAA,kBAAAA,CAAcpB,QAASuC,CAAAA,SAAS,EAAE;AACtC9G,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA;AACJ,qBAAA,CAAA;iBACG,MAAA;AACHoD,oBAAAA,KAAAA,GAAQjB,MAAE,KAAO,EAAA;AACbC,wBAAAA,KAAAA,EAAOxG,QAAQZ,SAAS;AACxBiI,wBAAAA,OAAAA,CAAAA,CAAQK,MAAW,EAAA;AACfA,4BAAAA,MAAAA,CAAOC,cAAc,EAAA;4BAErB,OAAOvD,MAAAA,CAAOzD,KAAKsF,KAAK,CAAA;AAC5B;qBACD,EAAA;2BACKtF,IAAKsF,CAAAA,KAAK,CAACqB,IAAI,GACf;4BAACf,KACGvG,CAAAA,OAAAA,CAAQd,WAAW,EACnB;AACIsH,gCAAAA,KAAAA,EAAOxG,QAAQb;6BAEnB,EAAA;AACIoH,gCAAAA,KAAAA,CAAE,GAAK,EAAA;oCAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB;AAAK,iCAAA;AACnC,6BAAA;AACH,yBAAA,GACF,EAAE;wBAENf,KAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,4BAAAA,KAAAA,EAAOxG,QAAQT;yBAChB,EAAA;4BACCoB,IAAKsF,CAAAA,KAAK,CAACzH;AACd,yBAAA;AACJ,qBAAA,CAAA;AACL;gBAEA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;oBACpB,OAAOuB,KAAAA;AACX;gBAEA,IAAII,MAAAA;AAEJ,gBAAA,IAAIvB,sBAAkBnB,CAAAA,QAAAA,CAAS2C,SAAS,EAAElC,KAAQ,CAAA,EAAA;oBAC9CiC,MAAStB,GAAAA,kBAAAA,CAAcpB,QAAS2C,CAAAA,SAAS,EAAE;AACvClH,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA;AACJ,qBAAA,CAAA;iBACG,MAAA;AACHwD,oBAAAA,MAAAA,GAASrB,MAAEX,SAAW,EAAA;wBAClBpE,KAAOb,EAAAA,IAAAA,CAAKsF,KAAK,CAACzE,KAAK;wBACvBb,IAAMA,EAAAA,IAAAA,CAAKsF,KAAK,CAACzF;AACrB,qBAAA,CAAA;AACJ;gBAEA,OAAO;AACHgH,oBAAAA,KAAAA;AACAI,oBAAAA;AACH,iBAAA;AACL,aAAA;YAEA,OAAOrB,KAAAA,CAAEvG,OAAQjB,CAAAA,OAAO,EAAE;gBACtByH,KAAO,EAAA;AACHxG,oBAAAA,OAAAA,CAAQnB,SAAS;AACbkH,oBAAAA,GAAAA,WAAAA,CAAYE,KAAK,GAAG;AAACjG,wBAAAA,OAAAA,CAAQlB;AAAgB,qBAAA,GAAG,EAAE;AACtD,oBAAA;wBACIkD,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM,IAAIrB,IAAKsF,CAAAA,KAAK,CAAC/D;AAC5C;AACH;aACF,EAAA;AACCgE,gBAAAA,SAAAA;AACH,aAAA,CAAA;AACL,SAAA;AACJ;AACJ,CAAG;;AClMI,MAAM4B,aAAazC,mBAAgB,CAAA;IACtCC,KAAO,EAAA;QACH9D,KAAO,EAAA;YACH+D,IAAMwC,EAAAA,MAAAA;YACNxH,OAAS,EAAA;AACb,SAAA;QACAI,IAAM,EAAA;YACF4E,IAAMyC,EAAAA,KAAAA;YACNzH,OAASgC,EAAAA;AACb;AACJ,KAAA;AACAmD,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAM3F,OAAU3B,GAAAA,qBAAAA,EAAAA;AAEhB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA;QAChB,MAAMsD,YAAAA,GAAeC,QAAgC,EAAE,CAAA;QACvD,IAAI,CAAC5C,KAAM3E,CAAAA,IAAI,EAAE;AACbsH,YAAAA,YAAAA,CAAahC,KAAK,GAAG3H,OAAAA,CAAQ8E,QAAQ,CAACkC,MAAM9D,KAAK,CAAA;AACrD;AAEA,QAAA,MAAM2G,UAAUD,OAAI,CAAA,CAAA,CAAA;QAEpB,IAAIE,cAAAA;QAEJC,aAAU,CAAA,IAAA;AACND,YAAAA,cAAAA,GAAiB9J,OAAQgK,CAAAA,EAAE,CACvB,cAAA,EACA,CAAC9G,KAAOzB,EAAAA,KAAAA,GAAAA;gBACJ,IAAIyB,KAAAA,KAAU8D,KAAM9D,CAAAA,KAAK,EAAE;AACvB,oBAAA;AACJ;AAEAyG,gBAAAA,YAAAA,CAAahC,KAAK,GAAGlG,KAAAA;AACrBoI,gBAAAA,OAAAA,CAAQlC,KAAK,EAAA;AACjB,aAAA,CAAA;AAER,SAAA,CAAA;QAEAsC,eAAY,CAAA,IAAA;YACR,IAAI,OAAOH,mBAAmB,UAAY,EAAA;AACtCA,gBAAAA,cAAAA,EAAAA;gBAEAA,cAAiB7F,GAAAA,SAAAA;AACrB;AACJ,SAAA,CAAA;AAEA,QAAA,MAAMxC,QAAQiG,YAAS,CAAA,IAAA;AACnB,YAAA,IAAI,OAAOV,KAAAA,CAAM3E,IAAI,KAAK,WAAa,EAAA;AACnC,gBAAA,OAAO2E,MAAM3E,IAAI;AACrB;AAEA,YAAA,OAAOsH,aAAahC,KAAK;AAC7B,SAAA,CAAA;QAEA,OAAO,IAAA;AACH,YAAA,MAAM2B,SAA8B,EAAE;YAEtC,IAAK,IAAIzH,IAAI,CAAGA,EAAAA,CAAAA,GAAIJ,MAAMkG,KAAK,CAAC7F,MAAM,EAAED,CAAK,EAAA,CAAA;AACzC,gBAAA,IAAI,CAACJ,KAAAA,CAAMkG,KAAK,CAAC9F,EAAE,CAAC8B,OAAO,IAAI,CAAClC,MAAMkG,KAAK,CAAC9F,CAAE,CAAA,CAAC+B,eAAe,EAAE;AAC5D,oBAAA;AACJ;gBAEA,IAAIsG,KAAAA;AACJ,gBAAA,IAAInC,sBAAkBnB,CAAAA,QAAAA,CAASuD,IAAI,EAAE9C,KAAQ,CAAA,EAAA;oBACzC6C,KAAQlC,GAAAA,kBAAAA,CAAcpB,QAASuD,CAAAA,IAAI,EAAE;wBAAE9H,IAAMZ,EAAAA,KAAAA,CAAMkG,KAAK,CAAC9F,CAAE;qBAAIwF,EAAAA,KAAAA,CAAAA;iBAC5D,MAAA;AACH6C,oBAAAA,KAAAA,GAAQjC,MACJnB,SACA,EAAA;AACIsD,wBAAAA,GAAAA,EAAK,GAAGvI,CAAE,CAAA,CAAC,EAAEgI,OAAAA,CAAQlC,KAAK,CAAE,CAAA;wBAC5BtF,IAAMZ,EAAAA,KAAAA,CAAMkG,KAAK,CAAC9F,CAAE;AACxB,qBAAA,CAAA;AAER;AAEAyH,gBAAAA,MAAAA,CAAOlH,IAAI,CAAC8H,KAAAA,CAAAA;AAChB;YAEA,OAAOjC,KAAAA,CAAEvG,OAAQpB,CAAAA,QAAQ,EAAE;AACvB4H,gBAAAA,KAAAA,EAAOxG,QAAQvB;aAChBmJ,EAAAA,MAAAA,CAAAA;AACP,SAAA;AACJ;AACJ,CAAG;;ACzFI,SAASe,OAAAA,CAAQ9D,QAAa,EAAE7E,OAAgB,EAAA;IACnD,MAAM1B,OAAAA,GAAU,IAAI4E,iBAAkB,CAAA;AAClCnD,QAAAA,KAAAA,EAAOC,QAAQD;AACnB,KAAA,CAAA;AAEAiF,IAAAA,wBAAAA,CAAyB1G,OAASuG,EAAAA,QAAAA,CAAAA;AAElC,IAAA,MAAM+D,eAAeC,wBAAoBhE,CAAAA,QAAAA,CAAAA;IACzC,IAAI7E,OAAAA,CAAQ4I,YAAY,EAAE;QACtBE,6BAAyBF,CAAAA,YAAAA,EAAc5I,QAAQ4I,YAAY,CAAA;AAC/D;AAEApD,IAAAA,MAAAA,CAAOuD,OAAO,CAAC;AACX3D,QAAAA,SAAAA;AACA0C,QAAAA;AACJ,KAAA,CAAA,CAAGkB,OAAO,CAAC,CAAC,CAACC,eAAeC,SAAU,CAAA,GAAA;QAClCrE,QAASqE,CAAAA,SAAS,CAACD,aAAeC,EAAAA,SAAAA,CAAAA;AACtC,KAAA,CAAA;AACJ;AAEA,YAAe;AACXP,IAAAA;AACJ,CAA4B;;;;;;;;;;;;;"}
package/dist/index.css CHANGED
@@ -31,13 +31,12 @@
31
31
  border-left-color: #c8b98d !important;
32
32
  }
33
33
 
34
- .vc-nav-items .vc-nav-link.active:not(.vc-nav-link-root),
35
-
34
+ .vc-nav-items .vc-nav-link.active,
36
35
  .vc-nav-items .vc-nav-link:active,
37
36
  .vc-nav-items .vc-nav-link:hover,
38
37
 
39
- .vc-nav-items .vc-nav-link.router-link-active:not(.vc-nav-link-root),
40
- .vc-nav-items .vc-nav-link.nuxt-link-active:not(.vc-nav-link-root),
38
+ .vc-nav-items .vc-nav-link.router-link-active,
39
+ .vc-nav-items .vc-nav-link.nuxt-link-active,
41
40
 
42
41
  .vc-nav-items .vc-nav-link.router-link-exact-active,
43
42
  .vc-nav-items .vc-nav-link.nuxt-link-exact-active {
package/dist/index.mjs CHANGED
@@ -24,26 +24,35 @@ function buildComponentOptions() {
24
24
  };
25
25
  }
26
26
 
27
+ function calculateItemScoreForPath(item, currentPath) {
28
+ if (item.url === '/') {
29
+ return 1;
30
+ }
31
+ if (item.activeMatch) {
32
+ if (item.activeMatch === currentPath) {
33
+ return 6;
34
+ }
35
+ if (currentPath.startsWith(item.activeMatch)) {
36
+ return 4;
37
+ }
38
+ }
39
+ if (item.url) {
40
+ if (item.url === currentPath) {
41
+ return 3;
42
+ }
43
+ if (currentPath.startsWith(item.url)) {
44
+ return 2;
45
+ }
46
+ }
47
+ return 0;
48
+ }
27
49
  function findItemMatchesIF(items, options, parent) {
28
50
  const output = [];
29
51
  for(let i = 0; i < items.length; i++){
30
52
  const item = items[i];
31
53
  let { score } = parent;
32
54
  if (options.path) {
33
- if (item.activeMatch) {
34
- if (item.activeMatch === options.path) {
35
- score += 3;
36
- } else if (options.path.startsWith(item.activeMatch)) {
37
- score += 2;
38
- }
39
- }
40
- if (item.url && item.url !== '/') {
41
- if (item.url === options.path) {
42
- score += 3;
43
- } else if (options.path.startsWith(item.url)) {
44
- score += 2;
45
- }
46
- }
55
+ score += calculateItemScoreForPath(item, options.path);
47
56
  }
48
57
  if (item.default) {
49
58
  score += 1;
@@ -190,16 +199,17 @@ class NavigationManager extends EventEmitter {
190
199
  }
191
200
  return this.items.filter((item)=>item.level === tier);
192
201
  }
193
- async buildOnce(options) {
194
- if (this.built && !options.reset) {
195
- return this.items;
196
- }
197
- return this.build(options);
198
- }
199
- async build(options) {
200
- this.built = true;
202
+ reset() {
203
+ this.built = false;
201
204
  this.items = [];
202
205
  this.itemsActive = [];
206
+ }
207
+ async build(options) {
208
+ if (this.built || this.building) {
209
+ return;
210
+ }
211
+ this.building = true;
212
+ this.emit('building');
203
213
  let parent;
204
214
  let level = 0;
205
215
  while(true){
@@ -225,8 +235,10 @@ class NavigationManager extends EventEmitter {
225
235
  parent = match;
226
236
  level++;
227
237
  }
238
+ this.building = false;
239
+ this.built = true;
240
+ this.emit('built');
228
241
  this.emit('updated', this.items);
229
- return this.items;
230
242
  }
231
243
  async select(level, itemNew) {
232
244
  const itemOld = findItemWithLevel(level, this.itemsActive);
@@ -259,9 +271,9 @@ class NavigationManager extends EventEmitter {
259
271
  }
260
272
  await this.buildLevel(level, true);
261
273
  }
262
- async buildLevel(level, cached) {
274
+ async buildLevel(level, useCache) {
263
275
  let items;
264
- if (cached) {
276
+ if (useCache) {
265
277
  items = findItemsWithLevel(this.items, level);
266
278
  } else {
267
279
  const parent = findItemWithLevel(level - 1, this.itemsActive);
@@ -275,7 +287,7 @@ class NavigationManager extends EventEmitter {
275
287
  }
276
288
  if (!items || items.length === 0) {
277
289
  this.items = this.items.filter((item)=>item.level < level);
278
- this.emit('tierUpdated', level, []);
290
+ this.emit('levelUpdated', level, []);
279
291
  return false;
280
292
  }
281
293
  let trace = [];
@@ -285,7 +297,7 @@ class NavigationManager extends EventEmitter {
285
297
  }
286
298
  resetItemsByTrace(items, trace);
287
299
  this.items = replaceLevelItems(level, this.items, items);
288
- this.emit('tierUpdated', level, items);
300
+ this.emit('levelUpdated', level, items);
289
301
  return true;
290
302
  }
291
303
  constructor(options){
@@ -305,6 +317,7 @@ class NavigationManager extends EventEmitter {
305
317
  this.items = [];
306
318
  this.itemsActive = [];
307
319
  this.built = false;
320
+ this.building = false;
308
321
  }
309
322
  }
310
323
 
@@ -369,7 +382,7 @@ const VCNavItem = defineComponent({
369
382
  }, data.value.name);
370
383
  }
371
384
  // type: group
372
- if (!data.value.children || data.value.children.length === 0) {
385
+ if (!hasChildren.value) {
373
386
  const hasSlot = hasNormalizedSlot(SlotName.LINK, slots);
374
387
  if (hasSlot) {
375
388
  return normalizeSlot(SlotName.LINK, {
@@ -395,10 +408,7 @@ const VCNavItem = defineComponent({
395
408
  }
396
409
  return h(VCLink, {
397
410
  class: [
398
- options.linkClass,
399
- data.value.url && data.value.url === '/' ? [
400
- options.linkRootClass
401
- ] : []
411
+ options.linkClass
402
412
  ],
403
413
  ...linkProps,
404
414
  onClicked () {
@@ -526,8 +536,8 @@ const VCNavItems = defineComponent({
526
536
  const counter = ref(0);
527
537
  let removeListener;
528
538
  onMounted(()=>{
529
- removeListener = manager.on('tierUpdated', (tier, items)=>{
530
- if (tier !== props.level) {
539
+ removeListener = manager.on('levelUpdated', (level, items)=>{
540
+ if (level !== props.level) {
531
541
  return;
532
542
  }
533
543
  managerItems.value = items;
@@ -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 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 meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], defaults, output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, defaults, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n options: NormalizeItemOptions,\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item, options));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (let i = 0; i < item.length; i++) {\n if (parent[i] !== item[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n const isEqual = isTraceEqual(items[i].trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.displayChildren = true;\n } else {\n item.displayChildren = isTracePartOf(item.trace, trace);\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","type LevelRecord = {\n level: number,\n [key: string]: any\n};\n\nexport function findItemsWithLevel<T extends LevelRecord>(\n items: T[],\n tier: number,\n) : T[] {\n return items.filter((item) => item.level === tier);\n}\n\nexport function findItemWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T | undefined {\n const data = findItemsWithLevel(items, tier);\n if (data.length >= 1) {\n return data[0];\n }\n\n return undefined;\n}\n\nexport function removeItemsWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T[] {\n return items.filter((item) => item.level !== tier);\n}\n\nexport function replaceLevelItem<T extends LevelRecord>(\n tier: number,\n input: T[],\n next: T | undefined,\n): T[] {\n const output = removeItemsWithLevel(tier, input);\n\n if (next) {\n next.level = tier;\n\n return [\n ...output,\n next,\n ];\n }\n\n return output;\n}\n\nexport function replaceLevelItems<T extends LevelRecord>(\n tier: number,\n src: T[],\n next: T[],\n) : T[] {\n const componentsExisting = removeItemsWithLevel(tier, src);\n\n return [\n ...componentsExisting,\n ...next,\n ];\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { EventEmitter } from '@posva/event-emitter';\nimport {\n findBestItemMatches,\n findItemWithLevel,\n findItemsWithLevel,\n isTraceEqual,\n normalizeItems,\n removeItemsWithLevel,\n replaceLevelItem,\n replaceLevelItems,\n resetItemsByTrace,\n} from '../helpers';\nimport type { NavigationItemNormalized, NavigationItemsFn } from '../types';\nimport type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';\n\nexport class NavigationManager extends EventEmitter<{\n 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","meta","normalizeItem","normalizeItems","isTraceEqual","isTracePartOf","resetItemsByTraceIF","isEqual","active","display","displayChildren","resetItemsByTrace","findItemsWithLevel","tier","findItemWithLevel","undefined","removeItemsWithLevel","replaceLevelItem","input","next","replaceLevelItems","src","componentsExisting","isAbsoluteURL","str","substring","NavigationManager","EventEmitter","getItems","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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"}
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 calculateItemScoreForPath(\n item: NavigationItemNormalized,\n currentPath: string,\n) {\n if (item.url === '/') {\n return 1;\n }\n\n if (item.activeMatch) {\n if (item.activeMatch === currentPath) {\n return 6;\n } if (currentPath.startsWith(item.activeMatch)) {\n return 4;\n }\n }\n\n if (item.url) {\n if (item.url === currentPath) {\n return 3;\n } if (currentPath.startsWith(item.url)) {\n return 2;\n }\n }\n\n return 0;\n}\n\nfunction findItemMatchesIF(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions,\n parent: ParentMatch,\n) {\n const output : {\n data: NavigationItemNormalized,\n score: number\n }[] = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n let { score } = parent;\n\n if (options.path) {\n score += calculateItemScoreForPath(item, options.path);\n }\n\n if (item.default) {\n score += 1;\n }\n\n if (item.children) {\n const childMatches = findItemMatchesIF(item.children, options, {\n score,\n });\n\n output.push(...childMatches);\n }\n\n output.push({ data: item, score });\n }\n\n return output.sort((a, b) => b.score - a.score);\n}\n\nexport function findBestItemMatches(\n items: NavigationItemNormalized[],\n options: ItemMatchesFindOptions = {},\n) : NavigationItemNormalized[] {\n const result = findItemMatchesIF(items, options, { score: 0 });\n const [first] = result;\n if (!first) {\n return [];\n }\n\n return result\n .filter((match) => match.score === first.score)\n .map((match) => match.data);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NavigationItem, NavigationItemNormalized } from '../types';\n\ntype NormalizeItemOptions = {\n level: number\n};\n\nfunction normalizeItemIF(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n trace: string[],\n) : NavigationItemNormalized {\n const output : NavigationItemNormalized = {\n ...item,\n level: defaults.level,\n children: [],\n trace: [\n ...trace,\n item.name,\n ],\n meta: item.meta || {},\n };\n\n if (!item.children) {\n return output;\n }\n\n for (let i = 0; i < item.children.length; i++) {\n output.children.push(normalizeItemIF(item.children[i], defaults, output.trace));\n }\n\n return output;\n}\n\nexport function normalizeItem(\n item: NavigationItem,\n defaults: NormalizeItemOptions,\n) : NavigationItemNormalized {\n return normalizeItemIF(item, defaults, []);\n}\n\nexport function normalizeItems(\n items: NavigationItem[],\n options: NormalizeItemOptions,\n) : NavigationItemNormalized[] {\n return items.map((item) => normalizeItem(item, options));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isTraceEqual(\n a: string[],\n b: string[],\n): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function isTracePartOf(item: string[], parent: string[]) {\n for (let i = 0; i < item.length; i++) {\n if (parent[i] !== item[i]) {\n return false;\n }\n }\n\n return true;\n}\n","import type { NavigationItemNormalized } from '../types';\nimport { isTraceEqual, isTracePartOf } from './trace';\n\nfunction resetItemsByTraceIF(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n\n const isEqual = isTraceEqual(items[i].trace, trace);\n item.active = isEqual;\n item.display = true;\n\n if (isEqual) {\n item.displayChildren = true;\n } else {\n item.displayChildren = isTracePartOf(item.trace, trace);\n }\n\n item.children = resetItemsByTraceIF(item.children, trace);\n }\n\n return items;\n}\n\nexport function resetItemsByTrace(\n items: NavigationItemNormalized[],\n trace: string[],\n) {\n return resetItemsByTraceIF(items, trace);\n}\n","type LevelRecord = {\n level: number,\n [key: string]: any\n};\n\nexport function findItemsWithLevel<T extends LevelRecord>(\n items: T[],\n tier: number,\n) : T[] {\n return items.filter((item) => item.level === tier);\n}\n\nexport function findItemWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T | undefined {\n const data = findItemsWithLevel(items, tier);\n if (data.length >= 1) {\n return data[0];\n }\n\n return undefined;\n}\n\nexport function removeItemsWithLevel<T extends LevelRecord>(\n tier: number,\n items: T[],\n) : T[] {\n return items.filter((item) => item.level !== tier);\n}\n\nexport function replaceLevelItem<T extends LevelRecord>(\n tier: number,\n input: T[],\n next: T | undefined,\n): T[] {\n const output = removeItemsWithLevel(tier, input);\n\n if (next) {\n next.level = tier;\n\n return [\n ...output,\n next,\n ];\n }\n\n return output;\n}\n\nexport function replaceLevelItems<T extends LevelRecord>(\n tier: number,\n src: T[],\n next: T[],\n) : T[] {\n const componentsExisting = removeItemsWithLevel(tier, src);\n\n return [\n ...componentsExisting,\n ...next,\n ];\n}\n","export function isAbsoluteURL(str: string): boolean {\n return str.substring(0, 7) === 'http://' ||\n str.substring(0, 8) === 'https://';\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { EventEmitter } from '@posva/event-emitter';\nimport {\n findBestItemMatches,\n findItemWithLevel,\n findItemsWithLevel,\n isTraceEqual,\n normalizeItems,\n removeItemsWithLevel,\n replaceLevelItem,\n replaceLevelItems,\n resetItemsByTrace,\n} from '../helpers';\nimport type { NavigationItemNormalized, NavigationItemsFn } from '../types';\nimport type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';\n\nexport class NavigationManager extends EventEmitter<{\n building: [],\n built: [],\n updated: NavigationItemNormalized[],\n levelUpdated: [number, NavigationItemNormalized[]]\n}> {\n protected itemsActive : NavigationItemNormalized[];\n\n protected items : NavigationItemNormalized[];\n\n protected itemsFn : NavigationItemsFn;\n\n protected built : boolean;\n\n protected building : boolean;\n\n constructor(options: NavigationManagerOptions) {\n super();\n\n let itemsFn : NavigationItemsFn;\n if (typeof options.items === 'function') {\n itemsFn = options.items;\n } else {\n itemsFn = async ({ level }) => {\n if (level > 0) {\n return [];\n }\n\n return options.items as NavigationItemNormalized[];\n };\n }\n\n this.itemsFn = itemsFn;\n this.items = [];\n this.itemsActive = [];\n\n this.built = false;\n this.building = false;\n }\n\n getItems(tier?: number) {\n if (typeof tier === 'undefined') {\n return this.items;\n }\n\n return this.items.filter((item) => item.level === tier);\n }\n\n reset() {\n this.built = false;\n\n this.items = [];\n this.itemsActive = [];\n }\n\n async build(options: NavigationManagerBuildOptions) : Promise<void> {\n if (this.built || this.building) {\n return;\n }\n\n this.building = true;\n\n this.emit('building');\n\n let parent : NavigationItemNormalized | undefined;\n let level = 0;\n\n while (true) {\n const raw = await this.itemsFn({ level, parent });\n if (!raw || raw.length === 0) {\n break;\n }\n\n const items = normalizeItems(raw, { level });\n\n const matches = findBestItemMatches(items, {\n path: options.path,\n });\n\n const [match] = matches;\n\n if (!match) {\n break;\n }\n\n this.itemsActive.push(match);\n\n await this.buildLevel(level);\n\n parent = match;\n\n level++;\n }\n\n this.building = false;\n this.built = true;\n\n this.emit('built');\n this.emit('updated', this.items);\n }\n\n async select(level: number, itemNew: NavigationItemNormalized) {\n const itemOld = findItemWithLevel(level, this.itemsActive);\n\n if (\n itemOld &&\n isTraceEqual(itemOld.trace, itemNew.trace)\n ) {\n return;\n }\n\n this.itemsActive = this.itemsActive.filter(\n (el) => el.level < level,\n );\n this.itemsActive.push(itemNew);\n\n const startLevel = level;\n while (true) {\n const built = await this.buildLevel(\n level,\n startLevel === level,\n );\n if (!built) {\n break;\n }\n\n level++;\n }\n }\n\n async toggle(level: number, item: NavigationItemNormalized) {\n let isMatch : boolean;\n if (item.displayChildren) {\n isMatch = true;\n } else {\n const itemOld = findItemWithLevel(level, this.itemsActive);\n isMatch = !!itemOld && isTraceEqual(item.trace, itemOld.trace);\n }\n\n if (isMatch) {\n this.itemsActive = removeItemsWithLevel(level, this.itemsActive);\n } else {\n this.itemsActive = replaceLevelItem(level, this.itemsActive, item);\n }\n\n await this.buildLevel(level, true);\n }\n\n protected async buildLevel(level: number, useCache?: boolean) : Promise<boolean> {\n let items : NavigationItemNormalized[] | undefined;\n\n if (useCache) {\n items = findItemsWithLevel(this.items, level);\n } else {\n const parent = findItemWithLevel(level - 1, this.itemsActive);\n const raw = await this.itemsFn({\n level,\n parent,\n });\n\n items = raw && raw.length > 0 ?\n normalizeItems(raw, { level }) :\n [];\n }\n\n if (!items || items.length === 0) {\n this.items = this.items.filter(\n (item) => item.level < level,\n );\n\n this.emit('levelUpdated', level, []);\n\n return false;\n }\n\n let trace : string[] = [];\n const item = findItemWithLevel(level, this.itemsActive);\n if (item) {\n trace = item.trace;\n }\n\n resetItemsByTrace(items, trace);\n\n this.items = replaceLevelItems(level, this.items, items);\n\n this.emit('levelUpdated', level, items);\n\n return true;\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { inject, provide } from '@vuecs/core';\nimport type { App } from 'vue';\nimport type { NavigationManager } from './module';\n\nconst sym = Symbol.for('VCNavigationManager');\n\nexport function injectNavigationManager(app?: App) : NavigationManager {\n const instance = inject<NavigationManager>(sym, app);\n if (!instance) {\n throw new Error('A navigation provider has not been provided.');\n }\n\n return instance;\n}\n\nexport function provideNavigationManager(\n manager: NavigationManager,\n app?: App,\n) {\n provide(sym, manager, app);\n}\n","export enum SlotName {\n ITEM = 'item',\n SEPARATOR = 'separator',\n LINK = 'link',\n SUB = 'sub',\n SUB_TITLE = 'sub-title',\n SUB_ITEMS = 'sub-items',\n}\n\nexport enum ElementType {\n LINK = 'link',\n SEPARATOR = 'separator',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type { LinkProperties } from '@vuecs/link';\nimport { VCLink } from '@vuecs/link';\nimport type { PropType, VNodeChild } from 'vue';\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n toRef,\n} from 'vue';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions, isAbsoluteURL } from '../../helpers';\nimport { ElementType, SlotName } from '../../constants';\n\nexport const VCNavItem = defineComponent({\n props: {\n data: {\n type: Object as PropType<NavigationItemNormalized>,\n required: true,\n },\n },\n setup(props, { slots }) {\n const itemsNode = resolveComponent('VCNavItems');\n\n const options = buildComponentOptions();\n const manager = injectNavigationManager();\n\n const data = toRef(props, 'data');\n const hasChildren = computed(() => data.value.children &&\n data.value.children.length > 0);\n\n const select = async (\n value: NavigationItemNormalized,\n ) => {\n await manager.select(data.value.level, value);\n };\n\n const toggle = async (\n value: NavigationItemNormalized,\n ) => {\n await manager.toggle(data.value.level, value);\n };\n\n return () => {\n const buildItem = () : VNodeChild => {\n // type: separator\n if (data.value.type === ElementType.SEPARATOR) {\n const hasSlot = hasNormalizedSlot(SlotName.SEPARATOR, slots);\n if (hasSlot) {\n return normalizeSlot(SlotName.SEPARATOR, {\n data: data.value,\n }, slots);\n }\n\n return h(options.separatorTag, {\n class: options.separatorClass,\n }, data.value.name);\n }\n\n // type: group\n if (!hasChildren.value) {\n const hasSlot = hasNormalizedSlot(SlotName.LINK, slots);\n if (hasSlot) {\n return normalizeSlot(SlotName.LINK, {\n data: data.value,\n select,\n isActive: data.value.active,\n }, slots);\n }\n const linkProps : LinkProperties = {\n active: data.value.active,\n disabled: false,\n prefetch: true,\n };\n\n if (data.value.url) {\n if (\n isAbsoluteURL(data.value.url) ||\n data.value.url.startsWith('#')\n ) {\n linkProps.href = data.value.url;\n if (data.value.urlTarget) {\n linkProps.target = data.value.urlTarget;\n }\n } else {\n linkProps.to = data.value.url;\n }\n }\n\n return h(VCLink, {\n class: [\n options.linkClass,\n ],\n ...linkProps,\n onClicked() {\n if (!data.value.url) {\n return select.call(null, data.value);\n }\n\n return undefined;\n },\n onClick() {\n return select.call(null, data.value);\n },\n }, {\n default: () => [\n ...(data.value.icon ?\n [h(\n options.linkIconTag,\n {\n class: options.linkIconClass,\n },\n [\n h('i', { class: data.value.icon }),\n ],\n )] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ],\n });\n }\n\n if (hasNormalizedSlot(SlotName.SUB, slots)) {\n return normalizeSlot(SlotName.SUB, {\n data: data.value,\n select,\n toggle,\n }, slots);\n }\n\n let title : VNodeChild;\n if (hasNormalizedSlot(SlotName.SUB_TITLE, slots)) {\n title = normalizeSlot(SlotName.SUB_TITLE, {\n data: data.value,\n select,\n toggle,\n });\n } else {\n title = h('div', {\n class: options.linkClass,\n onClick($event: any) {\n $event.preventDefault();\n\n return toggle(data.value);\n },\n }, [\n ...(data.value.icon ?\n [h(\n options.linkIconTag,\n {\n class: options.linkIconClass,\n },\n [\n h('i', { class: data.value.icon }),\n ],\n )] :\n []\n ),\n h(options.linkTextTag, {\n class: options.linkTextClass,\n }, [\n data.value.name,\n ]),\n ]);\n }\n\n if (!hasChildren.value) {\n return title;\n }\n\n let vNodes : VNodeChild;\n\n if (hasNormalizedSlot(SlotName.SUB_ITEMS, slots)) {\n vNodes = normalizeSlot(SlotName.SUB_ITEMS, {\n data: data.value,\n select,\n toggle,\n });\n } else {\n vNodes = h(itemsNode, {\n level: data.value.level,\n data: data.value.children,\n });\n }\n\n return [\n title,\n vNodes,\n ];\n };\n\n return h(options.itemTag, {\n class: [\n options.itemClass,\n ...(hasChildren.value ? [options.itemNestedClass] : []),\n {\n active: data.value.active || data.value.displayChildren,\n },\n ],\n }, [\n buildItem(),\n ]);\n };\n },\n});\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasNormalizedSlot, normalizeSlot } from '@vuecs/core';\nimport type {\n PropType,\n VNodeArrayChildren,\n VNodeChild,\n} from 'vue';\nimport {\n computed,\n defineComponent,\n h, onMounted, onUnmounted, ref,\n} from 'vue';\nimport { SlotName } from '../../constants';\nimport { injectNavigationManager } from '../../manager';\nimport type { NavigationItemNormalized } from '../../types';\nimport { buildComponentOptions } from '../../helpers';\nimport { VCNavItem } from '../item';\n\nexport const VCNavItems = defineComponent({\n props: {\n level: {\n type: Number,\n default: 0,\n },\n data: {\n type: Array as PropType<NavigationItemNormalized[]>,\n default: undefined,\n },\n },\n setup(props, { slots }) {\n const options = buildComponentOptions();\n\n const manager = injectNavigationManager();\n const managerItems = ref<NavigationItemNormalized[]>([]);\n if (!props.data) {\n managerItems.value = manager.getItems(props.level);\n }\n\n const counter = ref(0);\n\n let removeListener : CallableFunction | undefined;\n\n onMounted(() => {\n removeListener = manager.on(\n 'levelUpdated',\n (level, items) => {\n if (level !== props.level) {\n return;\n }\n\n managerItems.value = items;\n counter.value++;\n },\n );\n });\n\n onUnmounted(() => {\n if (typeof removeListener === 'function') {\n removeListener();\n\n removeListener = undefined;\n }\n });\n\n const items = computed(() => {\n if (typeof props.data !== 'undefined') {\n return props.data;\n }\n\n return managerItems.value;\n });\n\n return () => {\n const vNodes : VNodeArrayChildren = [];\n\n for (let i = 0; i < items.value.length; i++) {\n if (!items.value[i].display && !items.value[i].displayChildren) {\n continue;\n }\n\n let vNode : VNodeChild;\n if (hasNormalizedSlot(SlotName.ITEM, slots)) {\n vNode = normalizeSlot(SlotName.ITEM, { data: items.value[i] }, slots);\n } else {\n vNode = h(\n VCNavItem,\n {\n key: `${i}:${counter.value}`,\n data: items.value[i],\n },\n );\n }\n\n vNodes.push(vNode);\n }\n\n return h(options.groupTag, {\n class: options.groupClass,\n }, vNodes);\n };\n },\n});\n","import { applyStoreManagerOptions, installStoreManager } from '@vuecs/core';\n\nimport type { App, Plugin } from 'vue';\n\nimport '../assets/index.css';\nimport './vue';\nimport { NavigationManager, provideNavigationManager } from './manager';\n\nimport {\n VCNavItem,\n VCNavItems,\n} from './components';\nimport type { Options } from './types';\n\nexport * from './components';\nexport * from './manager';\nexport * from './types';\n\nexport function install(instance: App, options: Options) : void {\n const manager = new NavigationManager({\n items: options.items,\n });\n\n provideNavigationManager(manager, instance);\n\n const storeManager = installStoreManager(instance);\n if (options.storeManager) {\n applyStoreManagerOptions(storeManager, options.storeManager);\n }\n\n Object.entries({\n VCNavItem,\n VCNavItems,\n }).forEach(([componentName, component]) => {\n instance.component(componentName, component);\n });\n}\n\nexport default {\n install,\n} satisfies Plugin<Options>;\n"],"names":["buildComponentOptions","manager","createComponentOptionsManager","name","groupClass","mergeOption","get","groupTag","itemClass","itemNestedClass","itemTag","separatorTag","separatorClass","linkIconTag","linkIconClass","linkClass","linkRootClass","linkTextTag","linkTextClass","calculateItemScoreForPath","item","currentPath","url","activeMatch","startsWith","findItemMatchesIF","items","options","parent","output","i","length","score","path","default","children","childMatches","push","data","sort","a","b","findBestItemMatches","result","first","filter","match","map","normalizeItemIF","defaults","trace","level","meta","normalizeItem","normalizeItems","isTraceEqual","isTracePartOf","resetItemsByTraceIF","isEqual","active","display","displayChildren","resetItemsByTrace","findItemsWithLevel","tier","findItemWithLevel","undefined","removeItemsWithLevel","replaceLevelItem","input","next","replaceLevelItems","src","componentsExisting","isAbsoluteURL","str","substring","NavigationManager","EventEmitter","getItems","reset","built","itemsActive","build","building","emit","raw","itemsFn","matches","buildLevel","select","itemNew","itemOld","el","startLevel","toggle","isMatch","useCache","constructor","sym","Symbol","for","injectNavigationManager","app","instance","inject","Error","provideNavigationManager","provide","SlotName","ElementType","VCNavItem","defineComponent","props","type","Object","required","setup","slots","itemsNode","resolveComponent","toRef","hasChildren","computed","value","buildItem","SEPARATOR","hasSlot","hasNormalizedSlot","normalizeSlot","h","class","LINK","isActive","linkProps","disabled","prefetch","href","urlTarget","target","to","VCLink","onClicked","call","onClick","icon","SUB","title","SUB_TITLE","$event","preventDefault","vNodes","SUB_ITEMS","VCNavItems","Number","Array","managerItems","ref","counter","removeListener","onMounted","on","onUnmounted","vNode","ITEM","key","install","storeManager","installStoreManager","applyStoreManagerOptions","entries","forEach","componentName","component"],"mappings":"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"}
@@ -2,19 +2,22 @@ import { EventEmitter } from '@posva/event-emitter';
2
2
  import type { NavigationItemNormalized, NavigationItemsFn } from '../types';
3
3
  import type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';
4
4
  export declare class NavigationManager extends EventEmitter<{
5
+ building: [];
6
+ built: [];
5
7
  updated: NavigationItemNormalized[];
6
- tierUpdated: [number, NavigationItemNormalized[]];
8
+ levelUpdated: [number, NavigationItemNormalized[]];
7
9
  }> {
8
10
  protected itemsActive: NavigationItemNormalized[];
9
11
  protected items: NavigationItemNormalized[];
10
12
  protected itemsFn: NavigationItemsFn;
11
13
  protected built: boolean;
14
+ protected building: boolean;
12
15
  constructor(options: NavigationManagerOptions);
13
16
  getItems(tier?: number): NavigationItemNormalized[];
14
- buildOnce(options: NavigationManagerBuildOptions): Promise<NavigationItemNormalized[]>;
15
- build(options: NavigationManagerBuildOptions): Promise<NavigationItemNormalized[]>;
17
+ reset(): void;
18
+ build(options: NavigationManagerBuildOptions): Promise<void>;
16
19
  select(level: number, itemNew: NavigationItemNormalized): Promise<void>;
17
20
  toggle(level: number, item: NavigationItemNormalized): Promise<void>;
18
- protected buildLevel(level: number, cached?: boolean): Promise<boolean>;
21
+ protected buildLevel(level: number, useCache?: boolean): Promise<boolean>;
19
22
  }
20
23
  //# sourceMappingURL=module.d.ts.map
@@ -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,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
+ {"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,QAAQ,EAAE,EAAE,CAAC;IACb,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,YAAY,EAAE,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;CACrD,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;IAE1B,SAAS,CAAC,QAAQ,EAAG,OAAO,CAAC;gBAEjB,OAAO,EAAE,wBAAwB;IAwB7C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAQtB,KAAK;IAOC,KAAK,CAAC,OAAO,EAAE,6BAA6B,GAAI,OAAO,CAAC,IAAI,CAAC;IA8C7D,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,QAAQ,CAAC,EAAE,OAAO,GAAI,OAAO,CAAC,OAAO,CAAC;CAyCnF"}
@@ -1,7 +1,6 @@
1
1
  import type { NavigationItem, NavigationItemsFn } from '../types';
2
2
  export type NavigationManagerBuildOptions = {
3
3
  path: string;
4
- reset?: boolean;
5
4
  };
6
5
  export type NavigationManagerOptions = {
7
6
  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,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,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,CAAA;CACf,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.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "A package for multi level navigations.",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -59,8 +59,8 @@
59
59
  "devDependencies": {
60
60
  "@vuecs/core": "^2.0.0",
61
61
  "@vuecs/link": "^1.0.0",
62
- "vue": "^3.5.12",
63
- "vue-router": "^4.4.3"
62
+ "vue": "^3.5.13",
63
+ "vue-router": "^4.5.0"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "@vuecs/core": "^2.0.0",