@vuecs/navigation 2.3.0 → 2.3.1

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;
@@ -279,7 +288,7 @@ class NavigationManager extends eventEmitter.EventEmitter {
279
288
  }
280
289
  if (!items || items.length === 0) {
281
290
  this.items = this.items.filter((item)=>item.level < level);
282
- this.emit('tierUpdated', level, []);
291
+ this.emit('levelUpdated', level, []);
283
292
  return false;
284
293
  }
285
294
  let trace = [];
@@ -289,7 +298,7 @@ class NavigationManager extends eventEmitter.EventEmitter {
289
298
  }
290
299
  resetItemsByTrace(items, trace);
291
300
  this.items = replaceLevelItems(level, this.items, items);
292
- this.emit('tierUpdated', level, items);
301
+ this.emit('levelUpdated', level, items);
293
302
  return true;
294
303
  }
295
304
  constructor(options){
@@ -373,7 +382,7 @@ const VCNavItem = vue.defineComponent({
373
382
  }, data.value.name);
374
383
  }
375
384
  // type: group
376
- if (!data.value.children || data.value.children.length === 0) {
385
+ if (!hasChildren.value) {
377
386
  const hasSlot = core.hasNormalizedSlot(SlotName.LINK, slots);
378
387
  if (hasSlot) {
379
388
  return core.normalizeSlot(SlotName.LINK, {
@@ -399,10 +408,7 @@ const VCNavItem = vue.defineComponent({
399
408
  }
400
409
  return vue.h(link.VCLink, {
401
410
  class: [
402
- options.linkClass,
403
- data.value.url && data.value.url === '/' ? [
404
- options.linkRootClass
405
- ] : []
411
+ options.linkClass
406
412
  ],
407
413
  ...linkProps,
408
414
  onClicked () {
@@ -530,8 +536,8 @@ const VCNavItems = vue.defineComponent({
530
536
  const counter = vue.ref(0);
531
537
  let removeListener;
532
538
  vue.onMounted(()=>{
533
- removeListener = manager.on('tierUpdated', (tier, items)=>{
534
- if (tier !== props.level) {
539
+ removeListener = manager.on('levelUpdated', (level, items)=>{
540
+ if (level !== props.level) {
535
541
  return;
536
542
  }
537
543
  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 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 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('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","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":";;;;;;;;;AAWO,SAASA,qBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,kCAAgD,CAAA;QAC5DC,IAAM,EAAA,YAAA;AACV,KAAA,CAAA,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,CAAA;AACtE,KAAA,CAAA;AACJ;;ACzBA,SAASa,yBAAAA,CACLC,IAA8B,EAC9BC,WAAmB,EAAA;IAEnB,IAAID,IAAAA,CAAKE,GAAG,KAAK,GAAK,EAAA;QAClB,OAAO,CAAA,CAAA;AACX,KAAA;IAEA,IAAIF,IAAAA,CAAKG,WAAW,EAAE;QAClB,IAAIH,IAAAA,CAAKG,WAAW,KAAKF,WAAa,EAAA;YAClC,OAAO,CAAA,CAAA;AACX,SAAA;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKG,WAAW,CAAG,EAAA;YAC5C,OAAO,CAAA,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,IAAIH,IAAAA,CAAKE,GAAG,EAAE;QACV,IAAIF,IAAAA,CAAKE,GAAG,KAAKD,WAAa,EAAA;YAC1B,OAAO,CAAA,CAAA;AACX,SAAA;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKE,GAAG,CAAG,EAAA;YACpC,OAAO,CAAA,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,CAAA,CAAA;AACX,CAAA;AAEA,SAASG,iBACLC,CAAAA,KAAiC,EACjCC,OAA+B,EAC/BC,MAAmB,EAAA;AAEnB,IAAA,MAAMC,SAGA,EAAE,CAAA;AAER,IAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAIJ,KAAMK,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QACnC,MAAMV,IAAAA,GAAOM,KAAK,CAACI,CAAE,CAAA,CAAA;QAErB,IAAI,EAAEE,KAAK,EAAE,GAAGJ,MAAAA,CAAAA;QAEhB,IAAID,OAAAA,CAAQM,IAAI,EAAE;YACdD,KAASb,IAAAA,yBAAAA,CAA0BC,IAAMO,EAAAA,OAAAA,CAAQM,IAAI,CAAA,CAAA;AACzD,SAAA;QAEA,IAAIb,IAAAA,CAAKc,OAAO,EAAE;YACdF,KAAS,IAAA,CAAA,CAAA;AACb,SAAA;QAEA,IAAIZ,IAAAA,CAAKe,QAAQ,EAAE;AACf,YAAA,MAAMC,YAAeX,GAAAA,iBAAAA,CAAkBL,IAAKe,CAAAA,QAAQ,EAAER,OAAS,EAAA;AAC3DK,gBAAAA,KAAAA;AACJ,aAAA,CAAA,CAAA;AAEAH,YAAAA,MAAAA,CAAOQ,IAAI,CAAID,GAAAA,YAAAA,CAAAA,CAAAA;AACnB,SAAA;AAEAP,QAAAA,MAAAA,CAAOQ,IAAI,CAAC;YAAEC,IAAMlB,EAAAA,IAAAA;AAAMY,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA;AACpC,KAAA;IAEA,OAAOH,MAAAA,CAAOU,IAAI,CAAC,CAACC,CAAAA,EAAGC,IAAMA,CAAET,CAAAA,KAAK,GAAGQ,CAAAA,CAAER,KAAK,CAAA,CAAA;AAClD,CAAA;AAEO,SAASU,mBACZhB,CAAAA,KAAiC,EACjCC,OAAAA,GAAkC,EAAE,EAAA;IAEpC,MAAMgB,MAAAA,GAASlB,iBAAkBC,CAAAA,KAAAA,EAAOC,OAAS,EAAA;QAAEK,KAAO,EAAA,CAAA;AAAE,KAAA,CAAA,CAAA;IAC5D,MAAM,CAACY,MAAM,GAAGD,MAAAA,CAAAA;AAChB,IAAA,IAAI,CAACC,KAAO,EAAA;AACR,QAAA,OAAO,EAAE,CAAA;AACb,KAAA;AAEA,IAAA,OAAOD,OACFE,MAAM,CAAC,CAACC,KAAAA,GAAUA,MAAMd,KAAK,KAAKY,KAAMZ,CAAAA,KAAK,EAC7Ce,GAAG,CAAC,CAACD,KAAAA,GAAUA,MAAMR,IAAI,CAAA,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,IAAI;AACZ,SAAA;QACDiD,IAAMhC,EAAAA,IAAAA,CAAKgC,IAAI,IAAI,EAAC;AACxB,KAAA,CAAA;IAEA,IAAI,CAAChC,IAAKe,CAAAA,QAAQ,EAAE;QAChB,OAAON,MAAAA,CAAAA;AACX,KAAA;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,CAAA;AACjF,KAAA;IAEA,OAAOrB,MAAAA,CAAAA;AACX,CAAA;AAEO,SAASwB,aAAAA,CACZjC,IAAoB,EACpB6B,QAA8B,EAAA;IAE9B,OAAOD,eAAAA,CAAgB5B,IAAM6B,EAAAA,QAAAA,EAAU,EAAE,CAAA,CAAA;AAC7C,CAAA;AAEO,SAASK,cAAAA,CACZ5B,KAAuB,EACvBC,OAA6B,EAAA;AAE7B,IAAA,OAAOD,MAAMqB,GAAG,CAAC,CAAC3B,IAAAA,GAASiC,cAAcjC,IAAMO,EAAAA,OAAAA,CAAAA,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,CAAA;AACX,KAAA;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,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,IAAA,CAAA;AACX,CAAA;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,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,IAAA,CAAA;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,CAAA;AAErB,QAAA,MAAM4B,UAAUH,YAAa7B,CAAAA,KAAK,CAACI,CAAE,CAAA,CAACoB,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AAC7C9B,QAAAA,IAAAA,CAAKuC,MAAM,GAAGD,OAAAA,CAAAA;AACdtC,QAAAA,IAAAA,CAAKwC,OAAO,GAAG,IAAA,CAAA;AAEf,QAAA,IAAIF,OAAS,EAAA;AACTtC,YAAAA,IAAAA,CAAKyC,eAAe,GAAG,IAAA,CAAA;SACpB,MAAA;AACHzC,YAAAA,IAAAA,CAAKyC,eAAe,GAAGL,aAAcpC,CAAAA,IAAAA,CAAK8B,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AACrD,SAAA;AAEA9B,QAAAA,IAAAA,CAAKe,QAAQ,GAAGsB,mBAAoBrC,CAAAA,IAAAA,CAAKe,QAAQ,EAAEe,KAAAA,CAAAA,CAAAA;AACvD,KAAA;IAEA,OAAOxB,KAAAA,CAAAA;AACX,CAAA;AAEO,SAASoC,iBAAAA,CACZpC,KAAiC,EACjCwB,KAAe,EAAA;AAEf,IAAA,OAAOO,oBAAoB/B,KAAOwB,EAAAA,KAAAA,CAAAA,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,CAAAA;AACjD,CAAA;AAEO,SAASC,iBAAAA,CACZD,IAAY,EACZtC,KAAU,EAAA;IAEV,MAAMY,IAAAA,GAAOyB,mBAAmBrC,KAAOsC,EAAAA,IAAAA,CAAAA,CAAAA;IACvC,IAAI1B,IAAAA,CAAKP,MAAM,IAAI,CAAG,EAAA;QAClB,OAAOO,IAAI,CAAC,CAAE,CAAA,CAAA;AAClB,KAAA;IAEA,OAAO4B,SAAAA,CAAAA;AACX,CAAA;AAEO,SAASC,oBAAAA,CACZH,IAAY,EACZtC,KAAU,EAAA;AAEV,IAAA,OAAOA,MAAMmB,MAAM,CAAC,CAACzB,IAASA,GAAAA,IAAAA,CAAK+B,KAAK,KAAKa,IAAAA,CAAAA,CAAAA;AACjD,CAAA;AAEO,SAASI,gBACZJ,CAAAA,IAAY,EACZK,KAAU,EACVC,IAAmB,EAAA;IAEnB,MAAMzC,MAAAA,GAASsC,qBAAqBH,IAAMK,EAAAA,KAAAA,CAAAA,CAAAA;AAE1C,IAAA,IAAIC,IAAM,EAAA;AACNA,QAAAA,IAAAA,CAAKnB,KAAK,GAAGa,IAAAA,CAAAA;QAEb,OAAO;AACAnC,YAAAA,GAAAA,MAAAA;AACHyC,YAAAA,IAAAA;AACH,SAAA,CAAA;AACL,KAAA;IAEA,OAAOzC,MAAAA,CAAAA;AACX,CAAA;AAEO,SAAS0C,iBACZP,CAAAA,IAAY,EACZQ,GAAQ,EACRF,IAAS,EAAA;IAET,MAAMG,kBAAAA,GAAqBN,qBAAqBH,IAAMQ,EAAAA,GAAAA,CAAAA,CAAAA;IAEtD,OAAO;AACAC,QAAAA,GAAAA,kBAAAA;AACAH,QAAAA,GAAAA,IAAAA;AACN,KAAA,CAAA;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,CAAA;AAChC;;ACmBO,MAAMC,iBAA0BC,SAAAA,yBAAAA,CAAAA;AAmCnCC,IAAAA,QAAAA,CAASf,IAAa,EAAE;QACpB,IAAI,OAAOA,SAAS,WAAa,EAAA;YAC7B,OAAO,IAAI,CAACtC,KAAK,CAAA;AACrB,SAAA;QAEA,OAAO,IAAI,CAACA,KAAK,CAACmB,MAAM,CAAC,CAACzB,IAAAA,GAASA,IAAK+B,CAAAA,KAAK,KAAKa,IAAAA,CAAAA,CAAAA;AACtD,KAAA;IAEA,MAAMgB,SAAAA,CAAUrD,OAAsC,EAAwC;AAC1F,QAAA,IAAI,IAAI,CAACsD,KAAK,IAAI,CAACtD,OAAAA,CAAQuD,KAAK,EAAE;YAC9B,OAAO,IAAI,CAACxD,KAAK,CAAA;AACrB,SAAA;QAEA,OAAO,IAAI,CAACyD,KAAK,CAACxD,OAAAA,CAAAA,CAAAA;AACtB,KAAA;IAEA,MAAMwD,KAAAA,CAAMxD,OAAsC,EAAwC;QACtF,IAAI,CAACsD,KAAK,GAAG,IAAA,CAAA;QAEb,IAAI,CAACvD,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC0D,WAAW,GAAG,EAAE,CAAA;QAErB,IAAIxD,MAAAA,CAAAA;AACJ,QAAA,IAAIuB,KAAQ,GAAA,CAAA,CAAA;AAEZ,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAMkC,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAAEnC,gBAAAA,KAAAA;AAAOvB,gBAAAA,MAAAA;AAAO,aAAA,CAAA,CAAA;AAC/C,YAAA,IAAI,CAACyD,GAAAA,IAAOA,GAAItD,CAAAA,MAAM,KAAK,CAAG,EAAA;AAC1B,gBAAA,MAAA;AACJ,aAAA;YAEA,MAAML,KAAAA,GAAQ4B,eAAe+B,GAAK,EAAA;AAAElC,gBAAAA,KAAAA;AAAM,aAAA,CAAA,CAAA;YAE1C,MAAMoC,OAAAA,GAAU7C,oBAAoBhB,KAAO,EAAA;AACvCO,gBAAAA,IAAAA,EAAMN,QAAQM,IAAI;AACtB,aAAA,CAAA,CAAA;YAEA,MAAM,CAACa,MAAM,GAAGyC,OAAAA,CAAAA;AAEhB,YAAA,IAAI,CAACzC,KAAO,EAAA;AACR,gBAAA,MAAA;AACJ,aAAA;AAEA,YAAA,IAAI,CAACsC,WAAW,CAAC/C,IAAI,CAACS,KAAAA,CAAAA,CAAAA;YAEtB,MAAM,IAAI,CAAC0C,UAAU,CAACrC,KAAAA,CAAAA,CAAAA;YAEtBvB,MAASkB,GAAAA,KAAAA,CAAAA;AAETK,YAAAA,KAAAA,EAAAA,CAAAA;AACJ,SAAA;AAEA,QAAA,IAAI,CAACsC,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC/D,KAAK,CAAA,CAAA;QAE/B,OAAO,IAAI,CAACA,KAAK,CAAA;AACrB,KAAA;AAEA,IAAA,MAAMgE,MAAOvC,CAAAA,KAAa,EAAEwC,OAAiC,EAAE;AAC3D,QAAA,MAAMC,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AAEzD,QAAA,IACIQ,WACArC,YAAaqC,CAAAA,OAAAA,CAAQ1C,KAAK,EAAEyC,OAAAA,CAAQzC,KAAK,CAC3C,EAAA;AACE,YAAA,OAAA;AACJ,SAAA;AAEA,QAAA,IAAI,CAACkC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACvC,MAAM,CACtC,CAACgD,EAAOA,GAAAA,EAAAA,CAAG1C,KAAK,GAAGA,KAAAA,CAAAA,CAAAA;AAEvB,QAAA,IAAI,CAACiC,WAAW,CAAC/C,IAAI,CAACsD,OAAAA,CAAAA,CAAAA;AAEtB,QAAA,MAAMG,UAAa3C,GAAAA,KAAAA,CAAAA;AACnB,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAM8B,QAAQ,MAAM,IAAI,CAACO,UAAU,CAC/BrC,OACA2C,UAAe3C,KAAAA,KAAAA,CAAAA,CAAAA;AAEnB,YAAA,IAAI,CAAC8B,KAAO,EAAA;AACR,gBAAA,MAAA;AACJ,aAAA;AAEA9B,YAAAA,KAAAA,EAAAA,CAAAA;AACJ,SAAA;AACJ,KAAA;AAEA,IAAA,MAAM4C,MAAO5C,CAAAA,KAAa,EAAE/B,IAA8B,EAAE;QACxD,IAAI4E,OAAAA,CAAAA;QACJ,IAAI5E,IAAAA,CAAKyC,eAAe,EAAE;YACtBmC,OAAU,GAAA,IAAA,CAAA;SACP,MAAA;AACH,YAAA,MAAMJ,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;YACzDY,OAAU,GAAA,CAAC,CAACJ,OAAWrC,IAAAA,YAAAA,CAAanC,KAAK8B,KAAK,EAAE0C,QAAQ1C,KAAK,CAAA,CAAA;AACjE,SAAA;AAEA,QAAA,IAAI8C,OAAS,EAAA;AACT,YAAA,IAAI,CAACZ,WAAW,GAAGjB,qBAAqBhB,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;SAC5D,MAAA;YACH,IAAI,CAACA,WAAW,GAAGhB,gBAAAA,CAAiBjB,OAAO,IAAI,CAACiC,WAAW,EAAEhE,IAAAA,CAAAA,CAAAA;AACjE,SAAA;AAEA,QAAA,MAAM,IAAI,CAACoE,UAAU,CAACrC,KAAO,EAAA,IAAA,CAAA,CAAA;AACjC,KAAA;AAEA,IAAA,MAAgBqC,UAAWrC,CAAAA,KAAa,EAAE8C,MAAgB,EAAqB;QAC3E,IAAIvE,KAAAA,CAAAA;AAEJ,QAAA,IAAIuE,MAAQ,EAAA;AACRvE,YAAAA,KAAAA,GAAQqC,kBAAmB,CAAA,IAAI,CAACrC,KAAK,EAAEyB,KAAAA,CAAAA,CAAAA;SACpC,MAAA;AACH,YAAA,MAAMvB,SAASqC,iBAAkBd,CAAAA,KAAAA,GAAQ,CAAG,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AAC5D,YAAA,MAAMC,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAC3BnC,gBAAAA,KAAAA;AACAvB,gBAAAA,MAAAA;AACJ,aAAA,CAAA,CAAA;AAEAF,YAAAA,KAAAA,GAAQ2D,OAAOA,GAAItD,CAAAA,MAAM,GAAG,CAAA,GACxBuB,eAAe+B,GAAK,EAAA;AAAElC,gBAAAA,KAAAA;AAAM,aAAA,CAAA,GAC5B,EAAE,CAAA;AACV,SAAA;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,CAAAA;AAG3B,YAAA,IAAI,CAACsC,IAAI,CAAC,cAAA,EAAgBtC,OAAO,EAAE,CAAA,CAAA;YAEnC,OAAO,KAAA,CAAA;AACX,SAAA;AAEA,QAAA,IAAID,QAAmB,EAAE,CAAA;AACzB,QAAA,MAAM9B,IAAO6C,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AACtD,QAAA,IAAIhE,IAAM,EAAA;AACN8B,YAAAA,KAAAA,GAAQ9B,KAAK8B,KAAK,CAAA;AACtB,SAAA;AAEAY,QAAAA,iBAAAA,CAAkBpC,KAAOwB,EAAAA,KAAAA,CAAAA,CAAAA;QAEzB,IAAI,CAACxB,KAAK,GAAG6C,iBAAAA,CAAkBpB,OAAO,IAAI,CAACzB,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AAElD,QAAA,IAAI,CAAC+D,IAAI,CAAC,cAAA,EAAgBtC,KAAOzB,EAAAA,KAAAA,CAAAA,CAAAA;QAEjC,OAAO,IAAA,CAAA;AACX,KAAA;AAvKAwE,IAAAA,WAAAA,CAAYvE,OAAiC,CAAE;QAC3C,KAAK,EAAA,CAAA;QAEL,IAAI2D,OAAAA,CAAAA;AACJ,QAAA,IAAI,OAAO3D,OAAAA,CAAQD,KAAK,KAAK,UAAY,EAAA;AACrC4D,YAAAA,OAAAA,GAAU3D,QAAQD,KAAK,CAAA;SACpB,MAAA;YACH4D,OAAU,GAAA,OAAO,EAAEnC,KAAK,EAAE,GAAA;AACtB,gBAAA,IAAIA,QAAQ,CAAG,EAAA;AACX,oBAAA,OAAO,EAAE,CAAA;AACb,iBAAA;AAEA,gBAAA,OAAOxB,QAAQD,KAAK,CAAA;AACxB,aAAA,CAAA;AACJ,SAAA;QAEA,IAAI,CAAC4D,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAAC5D,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC0D,WAAW,GAAG,EAAE,CAAA;QAErB,IAAI,CAACH,KAAK,GAAG,KAAA,CAAA;AACjB,KAAA;AAmJJ;;AC/LA,MAAMkB,GAAAA,GAAMC,MAAOC,CAAAA,GAAG,CAAC,qBAAA,CAAA,CAAA;AAEhB,SAASC,wBAAwBC,GAAS,EAAA;IAC7C,MAAMC,QAAAA,GAAWC,YAA0BN,GAAKI,EAAAA,GAAAA,CAAAA,CAAAA;AAChD,IAAA,IAAI,CAACC,QAAU,EAAA;AACX,QAAA,MAAM,IAAIE,KAAM,CAAA,8CAAA,CAAA,CAAA;AACpB,KAAA;IAEA,OAAOF,QAAAA,CAAAA;AACX,CAAA;AAEO,SAASG,wBAAAA,CACZ1G,OAA0B,EAC1BsG,GAAS,EAAA;AAETK,IAAAA,YAAAA,CAAQT,KAAKlG,OAASsG,EAAAA,GAAAA,CAAAA,CAAAA;AAC1B;;AC3BA,IAAO,QAAKM,iBAAAA,SAAAA,QAAAA,EAAAA;;;;;;;AAAAA,IAAAA,OAAAA,QAAAA,CAAAA;;AASZ,IAAO,WAAKC,iBAAAA,SAAAA,WAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;;;ACcL,MAAMC,YAAYC,mBAAgB,CAAA;IACrCC,KAAO,EAAA;QACH3E,IAAM,EAAA;YACF4E,IAAMC,EAAAA,MAAAA;YACNC,QAAU,EAAA,IAAA;AACd,SAAA;AACJ,KAAA;AACAC,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAMC,YAAYC,oBAAiB,CAAA,YAAA,CAAA,CAAA;AAEnC,QAAA,MAAM7F,OAAU3B,GAAAA,qBAAAA,EAAAA,CAAAA;AAChB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA,CAAAA;QAEhB,MAAMhE,IAAAA,GAAOmF,UAAMR,KAAO,EAAA,MAAA,CAAA,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,CAAA;AAErC,QAAA,MAAM2D,SAAS,OACXkC,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQyF,MAAM,CAACpD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA,CAAAA;AAC3C,SAAA,CAAA;AAEA,QAAA,MAAM7B,SAAS,OACX6B,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQ8F,MAAM,CAACzD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA,CAAAA;AAC3C,SAAA,CAAA;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,CAAAA;AACtD,oBAAA,IAAIS,OAAS,EAAA;wBACT,OAAOE,kBAAAA,CAAcpB,QAASiB,CAAAA,SAAS,EAAE;AACrCxF,4BAAAA,IAAAA,EAAMA,KAAKsF,KAAK;yBACjBN,EAAAA,KAAAA,CAAAA,CAAAA;AACP,qBAAA;oBAEA,OAAOY,KAAAA,CAAEvG,OAAQhB,CAAAA,YAAY,EAAE;AAC3BwH,wBAAAA,KAAAA,EAAOxG,QAAQf,cAAc;qBAC9B0B,EAAAA,IAAAA,CAAKsF,KAAK,CAACzH,IAAI,CAAA,CAAA;AACtB,iBAAA;;gBAGA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;AACpB,oBAAA,MAAMG,OAAUC,GAAAA,sBAAAA,CAAkBnB,QAASuB,CAAAA,IAAI,EAAEd,KAAAA,CAAAA,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,MAAM;yBAC5B2D,EAAAA,KAAAA,CAAAA,CAAAA;AACP,qBAAA;AACA,oBAAA,MAAMgB,SAA6B,GAAA;wBAC/B3E,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM;wBACzB4E,QAAU,EAAA,KAAA;wBACVC,QAAU,EAAA,IAAA;AACd,qBAAA,CAAA;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,CAAA;AAC/B,4BAAA,IAAIgB,IAAKsF,CAAAA,KAAK,CAACc,SAAS,EAAE;AACtBJ,gCAAAA,SAAAA,CAAUK,MAAM,GAAGrG,IAAKsF,CAAAA,KAAK,CAACc,SAAS,CAAA;AAC3C,6BAAA;yBACG,MAAA;AACHJ,4BAAAA,SAAAA,CAAUM,EAAE,GAAGtG,IAAKsF,CAAAA,KAAK,CAACtG,GAAG,CAAA;AACjC,yBAAA;AACJ,qBAAA;AAEA,oBAAA,OAAO4G,MAAEW,WAAQ,EAAA;wBACbV,KAAO,EAAA;AACHxG,4BAAAA,OAAAA,CAAQZ,SAAS;AACpB,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,CAAA;AACvC,6BAAA;4BAEA,OAAO1D,SAAAA,CAAAA;AACX,yBAAA;AACA8E,wBAAAA,OAAAA,CAAAA,GAAAA;AACI,4BAAA,OAAOtD,MAAOqD,CAAAA,IAAI,CAAC,IAAA,EAAMzG,KAAKsF,KAAK,CAAA,CAAA;AACvC,yBAAA;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,aAAa;qCAEhC,EAAA;AACIoH,wCAAAA,KAAAA,CAAE,GAAK,EAAA;4CAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB,IAAI;AAAC,yCAAA,CAAA;AACnC,qCAAA,CAAA;AACH,iCAAA,GACF,EAAE;gCAENf,KAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,oCAAAA,KAAAA,EAAOxG,QAAQT,aAAa;iCAC7B,EAAA;oCACCoB,IAAKsF,CAAAA,KAAK,CAACzH,IAAI;AAClB,iCAAA,CAAA;AACJ,6BAAA;AACL,qBAAA,CAAA,CAAA;AACJ,iBAAA;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,MAAAA;qBACDuB,EAAAA,KAAAA,CAAAA,CAAAA;AACP,iBAAA;gBAEA,IAAI6B,KAAAA,CAAAA;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,MAAAA;AACJ,qBAAA,CAAA,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,CAAA;4BAErB,OAAOvD,MAAAA,CAAOzD,KAAKsF,KAAK,CAAA,CAAA;AAC5B,yBAAA;qBACD,EAAA;2BACKtF,IAAKsF,CAAAA,KAAK,CAACqB,IAAI,GACf;4BAACf,KACGvG,CAAAA,OAAAA,CAAQd,WAAW,EACnB;AACIsH,gCAAAA,KAAAA,EAAOxG,QAAQb,aAAa;6BAEhC,EAAA;AACIoH,gCAAAA,KAAAA,CAAE,GAAK,EAAA;oCAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB,IAAI;AAAC,iCAAA,CAAA;AACnC,6BAAA,CAAA;AACH,yBAAA,GACF,EAAE;wBAENf,KAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,4BAAAA,KAAAA,EAAOxG,QAAQT,aAAa;yBAC7B,EAAA;4BACCoB,IAAKsF,CAAAA,KAAK,CAACzH,IAAI;AAClB,yBAAA,CAAA;AACJ,qBAAA,CAAA,CAAA;AACL,iBAAA;gBAEA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;oBACpB,OAAOuB,KAAAA,CAAAA;AACX,iBAAA;gBAEA,IAAII,MAAAA,CAAAA;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,MAAAA;AACJ,qBAAA,CAAA,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,QAAQ;AAC7B,qBAAA,CAAA,CAAA;AACJ,iBAAA;gBAEA,OAAO;AACHgH,oBAAAA,KAAAA;AACAI,oBAAAA,MAAAA;AACH,iBAAA,CAAA;AACL,aAAA,CAAA;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,eAAe;AAAC,qBAAA,GAAG,EAAE;AACtD,oBAAA;wBACIkD,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM,IAAIrB,IAAKsF,CAAAA,KAAK,CAAC/D,eAAe;AAC3D,qBAAA;AACH,iBAAA;aACF,EAAA;AACCgE,gBAAAA,SAAAA,EAAAA;AACH,aAAA,CAAA,CAAA;AACL,SAAA,CAAA;AACJ,KAAA;AACJ,CAAG;;AClMI,MAAM4B,aAAazC,mBAAgB,CAAA;IACtCC,KAAO,EAAA;QACH9D,KAAO,EAAA;YACH+D,IAAMwC,EAAAA,MAAAA;YACNxH,OAAS,EAAA,CAAA;AACb,SAAA;QACAI,IAAM,EAAA;YACF4E,IAAMyC,EAAAA,KAAAA;YACNzH,OAASgC,EAAAA,SAAAA;AACb,SAAA;AACJ,KAAA;AACAmD,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAM3F,OAAU3B,GAAAA,qBAAAA,EAAAA,CAAAA;AAEhB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA,CAAAA;QAChB,MAAMsD,YAAAA,GAAeC,QAAgC,EAAE,CAAA,CAAA;QACvD,IAAI,CAAC5C,KAAM3E,CAAAA,IAAI,EAAE;AACbsH,YAAAA,YAAAA,CAAahC,KAAK,GAAG3H,OAAAA,CAAQ8E,QAAQ,CAACkC,MAAM9D,KAAK,CAAA,CAAA;AACrD,SAAA;AAEA,QAAA,MAAM2G,UAAUD,OAAI,CAAA,CAAA,CAAA,CAAA;QAEpB,IAAIE,cAAAA,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,OAAA;AACJ,iBAAA;AAEAyG,gBAAAA,YAAAA,CAAahC,KAAK,GAAGlG,KAAAA,CAAAA;AACrBoI,gBAAAA,OAAAA,CAAQlC,KAAK,EAAA,CAAA;AACjB,aAAA,CAAA,CAAA;AAER,SAAA,CAAA,CAAA;QAEAsC,eAAY,CAAA,IAAA;YACR,IAAI,OAAOH,mBAAmB,UAAY,EAAA;AACtCA,gBAAAA,cAAAA,EAAAA,CAAAA;gBAEAA,cAAiB7F,GAAAA,SAAAA,CAAAA;AACrB,aAAA;AACJ,SAAA,CAAA,CAAA;AAEA,QAAA,MAAMxC,QAAQiG,YAAS,CAAA,IAAA;AACnB,YAAA,IAAI,OAAOV,KAAAA,CAAM3E,IAAI,KAAK,WAAa,EAAA;AACnC,gBAAA,OAAO2E,MAAM3E,IAAI,CAAA;AACrB,aAAA;AAEA,YAAA,OAAOsH,aAAahC,KAAK,CAAA;AAC7B,SAAA,CAAA,CAAA;QAEA,OAAO,IAAA;AACH,YAAA,MAAM2B,SAA8B,EAAE,CAAA;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,SAAA;AACJ,iBAAA;gBAEA,IAAIsG,KAAAA,CAAAA;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,CAAA;qBAAIwF,EAAAA,KAAAA,CAAAA,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,CAAA;AACxB,qBAAA,CAAA,CAAA;AAER,iBAAA;AAEAyH,gBAAAA,MAAAA,CAAOlH,IAAI,CAAC8H,KAAAA,CAAAA,CAAAA;AAChB,aAAA;YAEA,OAAOjC,KAAAA,CAAEvG,OAAQpB,CAAAA,QAAQ,EAAE;AACvB4H,gBAAAA,KAAAA,EAAOxG,QAAQvB,UAAU;aAC1BmJ,EAAAA,MAAAA,CAAAA,CAAAA;AACP,SAAA,CAAA;AACJ,KAAA;AACJ,CAAG;;ACzFI,SAASe,OAAAA,CAAQ9D,QAAa,EAAE7E,OAAgB,EAAA;IACnD,MAAM1B,OAAAA,GAAU,IAAI4E,iBAAkB,CAAA;AAClCnD,QAAAA,KAAAA,EAAOC,QAAQD,KAAK;AACxB,KAAA,CAAA,CAAA;AAEAiF,IAAAA,wBAAAA,CAAyB1G,OAASuG,EAAAA,QAAAA,CAAAA,CAAAA;AAElC,IAAA,MAAM+D,eAAeC,wBAAoBhE,CAAAA,QAAAA,CAAAA,CAAAA;IACzC,IAAI7E,OAAAA,CAAQ4I,YAAY,EAAE;QACtBE,6BAAyBF,CAAAA,YAAAA,EAAc5I,QAAQ4I,YAAY,CAAA,CAAA;AAC/D,KAAA;AAEApD,IAAAA,MAAAA,CAAOuD,OAAO,CAAC;AACX3D,QAAAA,SAAAA;AACA0C,QAAAA,UAAAA;AACJ,KAAA,CAAA,CAAGkB,OAAO,CAAC,CAAC,CAACC,eAAeC,SAAU,CAAA,GAAA;QAClCrE,QAASqE,CAAAA,SAAS,CAACD,aAAeC,EAAAA,SAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA,CAAA;AACJ,CAAA;AAEA,YAAe;AACXP,IAAAA,OAAAA;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;
@@ -275,7 +284,7 @@ class NavigationManager extends EventEmitter {
275
284
  }
276
285
  if (!items || items.length === 0) {
277
286
  this.items = this.items.filter((item)=>item.level < level);
278
- this.emit('tierUpdated', level, []);
287
+ this.emit('levelUpdated', level, []);
279
288
  return false;
280
289
  }
281
290
  let trace = [];
@@ -285,7 +294,7 @@ class NavigationManager extends EventEmitter {
285
294
  }
286
295
  resetItemsByTrace(items, trace);
287
296
  this.items = replaceLevelItems(level, this.items, items);
288
- this.emit('tierUpdated', level, items);
297
+ this.emit('levelUpdated', level, items);
289
298
  return true;
290
299
  }
291
300
  constructor(options){
@@ -369,7 +378,7 @@ const VCNavItem = defineComponent({
369
378
  }, data.value.name);
370
379
  }
371
380
  // type: group
372
- if (!data.value.children || data.value.children.length === 0) {
381
+ if (!hasChildren.value) {
373
382
  const hasSlot = hasNormalizedSlot(SlotName.LINK, slots);
374
383
  if (hasSlot) {
375
384
  return normalizeSlot(SlotName.LINK, {
@@ -395,10 +404,7 @@ const VCNavItem = defineComponent({
395
404
  }
396
405
  return h(VCLink, {
397
406
  class: [
398
- options.linkClass,
399
- data.value.url && data.value.url === '/' ? [
400
- options.linkRootClass
401
- ] : []
407
+ options.linkClass
402
408
  ],
403
409
  ...linkProps,
404
410
  onClicked () {
@@ -526,8 +532,8 @@ const VCNavItems = defineComponent({
526
532
  const counter = ref(0);
527
533
  let removeListener;
528
534
  onMounted(()=>{
529
- removeListener = manager.on('tierUpdated', (tier, items)=>{
530
- if (tier !== props.level) {
535
+ removeListener = manager.on('levelUpdated', (level, items)=>{
536
+ if (level !== props.level) {
531
537
  return;
532
538
  }
533
539
  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 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 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('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","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":";;;;;AAWO,SAASA,qBAAAA,GAAAA;AACZ,IAAA,MAAMC,UAAUC,6BAAgD,CAAA;QAC5DC,IAAM,EAAA,YAAA;AACV,KAAA,CAAA,CAAA;IAEA,OAAO;AACHC,QAAAA,UAAAA,EAAYC,WAAY,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,WAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,WAAc,CAAA,EAAA,aAAA,CAAA;AAC1DG,QAAAA,eAAAA,EAAiBJ,WAAY,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,WAAY,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,WAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA,CAAA;AAElES,QAAAA,SAAAA,EAAWV,WAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,WAAc,CAAA,EAAA,aAAA,CAAA;AAC1DU,QAAAA,aAAAA,EAAeX,WAAY,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,WAAY,CAAA,OAAA,EAASJ,OAAQK,CAAAA,GAAG,CAAC,eAAkB,CAAA,EAAA,kBAAA,CAAA;AACtE,KAAA,CAAA;AACJ;;ACzBA,SAASa,yBAAAA,CACLC,IAA8B,EAC9BC,WAAmB,EAAA;IAEnB,IAAID,IAAAA,CAAKE,GAAG,KAAK,GAAK,EAAA;QAClB,OAAO,CAAA,CAAA;AACX,KAAA;IAEA,IAAIF,IAAAA,CAAKG,WAAW,EAAE;QAClB,IAAIH,IAAAA,CAAKG,WAAW,KAAKF,WAAa,EAAA;YAClC,OAAO,CAAA,CAAA;AACX,SAAA;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKG,WAAW,CAAG,EAAA;YAC5C,OAAO,CAAA,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,IAAIH,IAAAA,CAAKE,GAAG,EAAE;QACV,IAAIF,IAAAA,CAAKE,GAAG,KAAKD,WAAa,EAAA;YAC1B,OAAO,CAAA,CAAA;AACX,SAAA;AAAE,QAAA,IAAIA,WAAYG,CAAAA,UAAU,CAACJ,IAAAA,CAAKE,GAAG,CAAG,EAAA;YACpC,OAAO,CAAA,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,CAAA,CAAA;AACX,CAAA;AAEA,SAASG,iBACLC,CAAAA,KAAiC,EACjCC,OAA+B,EAC/BC,MAAmB,EAAA;AAEnB,IAAA,MAAMC,SAGA,EAAE,CAAA;AAER,IAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAIJ,KAAMK,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QACnC,MAAMV,IAAAA,GAAOM,KAAK,CAACI,CAAE,CAAA,CAAA;QAErB,IAAI,EAAEE,KAAK,EAAE,GAAGJ,MAAAA,CAAAA;QAEhB,IAAID,OAAAA,CAAQM,IAAI,EAAE;YACdD,KAASb,IAAAA,yBAAAA,CAA0BC,IAAMO,EAAAA,OAAAA,CAAQM,IAAI,CAAA,CAAA;AACzD,SAAA;QAEA,IAAIb,IAAAA,CAAKc,OAAO,EAAE;YACdF,KAAS,IAAA,CAAA,CAAA;AACb,SAAA;QAEA,IAAIZ,IAAAA,CAAKe,QAAQ,EAAE;AACf,YAAA,MAAMC,YAAeX,GAAAA,iBAAAA,CAAkBL,IAAKe,CAAAA,QAAQ,EAAER,OAAS,EAAA;AAC3DK,gBAAAA,KAAAA;AACJ,aAAA,CAAA,CAAA;AAEAH,YAAAA,MAAAA,CAAOQ,IAAI,CAAID,GAAAA,YAAAA,CAAAA,CAAAA;AACnB,SAAA;AAEAP,QAAAA,MAAAA,CAAOQ,IAAI,CAAC;YAAEC,IAAMlB,EAAAA,IAAAA;AAAMY,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA;AACpC,KAAA;IAEA,OAAOH,MAAAA,CAAOU,IAAI,CAAC,CAACC,CAAAA,EAAGC,IAAMA,CAAET,CAAAA,KAAK,GAAGQ,CAAAA,CAAER,KAAK,CAAA,CAAA;AAClD,CAAA;AAEO,SAASU,mBACZhB,CAAAA,KAAiC,EACjCC,OAAAA,GAAkC,EAAE,EAAA;IAEpC,MAAMgB,MAAAA,GAASlB,iBAAkBC,CAAAA,KAAAA,EAAOC,OAAS,EAAA;QAAEK,KAAO,EAAA,CAAA;AAAE,KAAA,CAAA,CAAA;IAC5D,MAAM,CAACY,MAAM,GAAGD,MAAAA,CAAAA;AAChB,IAAA,IAAI,CAACC,KAAO,EAAA;AACR,QAAA,OAAO,EAAE,CAAA;AACb,KAAA;AAEA,IAAA,OAAOD,OACFE,MAAM,CAAC,CAACC,KAAAA,GAAUA,MAAMd,KAAK,KAAKY,KAAMZ,CAAAA,KAAK,EAC7Ce,GAAG,CAAC,CAACD,KAAAA,GAAUA,MAAMR,IAAI,CAAA,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,IAAI;AACZ,SAAA;QACDiD,IAAMhC,EAAAA,IAAAA,CAAKgC,IAAI,IAAI,EAAC;AACxB,KAAA,CAAA;IAEA,IAAI,CAAChC,IAAKe,CAAAA,QAAQ,EAAE;QAChB,OAAON,MAAAA,CAAAA;AACX,KAAA;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,CAAA;AACjF,KAAA;IAEA,OAAOrB,MAAAA,CAAAA;AACX,CAAA;AAEO,SAASwB,aAAAA,CACZjC,IAAoB,EACpB6B,QAA8B,EAAA;IAE9B,OAAOD,eAAAA,CAAgB5B,IAAM6B,EAAAA,QAAAA,EAAU,EAAE,CAAA,CAAA;AAC7C,CAAA;AAEO,SAASK,cAAAA,CACZ5B,KAAuB,EACvBC,OAA6B,EAAA;AAE7B,IAAA,OAAOD,MAAMqB,GAAG,CAAC,CAAC3B,IAAAA,GAASiC,cAAcjC,IAAMO,EAAAA,OAAAA,CAAAA,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,CAAA;AACX,KAAA;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,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,IAAA,CAAA;AACX,CAAA;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,CAAA;AACX,SAAA;AACJ,KAAA;IAEA,OAAO,IAAA,CAAA;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,CAAA;AAErB,QAAA,MAAM4B,UAAUH,YAAa7B,CAAAA,KAAK,CAACI,CAAE,CAAA,CAACoB,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AAC7C9B,QAAAA,IAAAA,CAAKuC,MAAM,GAAGD,OAAAA,CAAAA;AACdtC,QAAAA,IAAAA,CAAKwC,OAAO,GAAG,IAAA,CAAA;AAEf,QAAA,IAAIF,OAAS,EAAA;AACTtC,YAAAA,IAAAA,CAAKyC,eAAe,GAAG,IAAA,CAAA;SACpB,MAAA;AACHzC,YAAAA,IAAAA,CAAKyC,eAAe,GAAGL,aAAcpC,CAAAA,IAAAA,CAAK8B,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AACrD,SAAA;AAEA9B,QAAAA,IAAAA,CAAKe,QAAQ,GAAGsB,mBAAoBrC,CAAAA,IAAAA,CAAKe,QAAQ,EAAEe,KAAAA,CAAAA,CAAAA;AACvD,KAAA;IAEA,OAAOxB,KAAAA,CAAAA;AACX,CAAA;AAEO,SAASoC,iBAAAA,CACZpC,KAAiC,EACjCwB,KAAe,EAAA;AAEf,IAAA,OAAOO,oBAAoB/B,KAAOwB,EAAAA,KAAAA,CAAAA,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,CAAAA;AACjD,CAAA;AAEO,SAASC,iBAAAA,CACZD,IAAY,EACZtC,KAAU,EAAA;IAEV,MAAMY,IAAAA,GAAOyB,mBAAmBrC,KAAOsC,EAAAA,IAAAA,CAAAA,CAAAA;IACvC,IAAI1B,IAAAA,CAAKP,MAAM,IAAI,CAAG,EAAA;QAClB,OAAOO,IAAI,CAAC,CAAE,CAAA,CAAA;AAClB,KAAA;IAEA,OAAO4B,SAAAA,CAAAA;AACX,CAAA;AAEO,SAASC,oBAAAA,CACZH,IAAY,EACZtC,KAAU,EAAA;AAEV,IAAA,OAAOA,MAAMmB,MAAM,CAAC,CAACzB,IAASA,GAAAA,IAAAA,CAAK+B,KAAK,KAAKa,IAAAA,CAAAA,CAAAA;AACjD,CAAA;AAEO,SAASI,gBACZJ,CAAAA,IAAY,EACZK,KAAU,EACVC,IAAmB,EAAA;IAEnB,MAAMzC,MAAAA,GAASsC,qBAAqBH,IAAMK,EAAAA,KAAAA,CAAAA,CAAAA;AAE1C,IAAA,IAAIC,IAAM,EAAA;AACNA,QAAAA,IAAAA,CAAKnB,KAAK,GAAGa,IAAAA,CAAAA;QAEb,OAAO;AACAnC,YAAAA,GAAAA,MAAAA;AACHyC,YAAAA,IAAAA;AACH,SAAA,CAAA;AACL,KAAA;IAEA,OAAOzC,MAAAA,CAAAA;AACX,CAAA;AAEO,SAAS0C,iBACZP,CAAAA,IAAY,EACZQ,GAAQ,EACRF,IAAS,EAAA;IAET,MAAMG,kBAAAA,GAAqBN,qBAAqBH,IAAMQ,EAAAA,GAAAA,CAAAA,CAAAA;IAEtD,OAAO;AACAC,QAAAA,GAAAA,kBAAAA;AACAH,QAAAA,GAAAA,IAAAA;AACN,KAAA,CAAA;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,CAAA;AAChC;;ACmBO,MAAMC,iBAA0BC,SAAAA,YAAAA,CAAAA;AAmCnCC,IAAAA,QAAAA,CAASf,IAAa,EAAE;QACpB,IAAI,OAAOA,SAAS,WAAa,EAAA;YAC7B,OAAO,IAAI,CAACtC,KAAK,CAAA;AACrB,SAAA;QAEA,OAAO,IAAI,CAACA,KAAK,CAACmB,MAAM,CAAC,CAACzB,IAAAA,GAASA,IAAK+B,CAAAA,KAAK,KAAKa,IAAAA,CAAAA,CAAAA;AACtD,KAAA;IAEA,MAAMgB,SAAAA,CAAUrD,OAAsC,EAAwC;AAC1F,QAAA,IAAI,IAAI,CAACsD,KAAK,IAAI,CAACtD,OAAAA,CAAQuD,KAAK,EAAE;YAC9B,OAAO,IAAI,CAACxD,KAAK,CAAA;AACrB,SAAA;QAEA,OAAO,IAAI,CAACyD,KAAK,CAACxD,OAAAA,CAAAA,CAAAA;AACtB,KAAA;IAEA,MAAMwD,KAAAA,CAAMxD,OAAsC,EAAwC;QACtF,IAAI,CAACsD,KAAK,GAAG,IAAA,CAAA;QAEb,IAAI,CAACvD,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC0D,WAAW,GAAG,EAAE,CAAA;QAErB,IAAIxD,MAAAA,CAAAA;AACJ,QAAA,IAAIuB,KAAQ,GAAA,CAAA,CAAA;AAEZ,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAMkC,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAAEnC,gBAAAA,KAAAA;AAAOvB,gBAAAA,MAAAA;AAAO,aAAA,CAAA,CAAA;AAC/C,YAAA,IAAI,CAACyD,GAAAA,IAAOA,GAAItD,CAAAA,MAAM,KAAK,CAAG,EAAA;AAC1B,gBAAA,MAAA;AACJ,aAAA;YAEA,MAAML,KAAAA,GAAQ4B,eAAe+B,GAAK,EAAA;AAAElC,gBAAAA,KAAAA;AAAM,aAAA,CAAA,CAAA;YAE1C,MAAMoC,OAAAA,GAAU7C,oBAAoBhB,KAAO,EAAA;AACvCO,gBAAAA,IAAAA,EAAMN,QAAQM,IAAI;AACtB,aAAA,CAAA,CAAA;YAEA,MAAM,CAACa,MAAM,GAAGyC,OAAAA,CAAAA;AAEhB,YAAA,IAAI,CAACzC,KAAO,EAAA;AACR,gBAAA,MAAA;AACJ,aAAA;AAEA,YAAA,IAAI,CAACsC,WAAW,CAAC/C,IAAI,CAACS,KAAAA,CAAAA,CAAAA;YAEtB,MAAM,IAAI,CAAC0C,UAAU,CAACrC,KAAAA,CAAAA,CAAAA;YAEtBvB,MAASkB,GAAAA,KAAAA,CAAAA;AAETK,YAAAA,KAAAA,EAAAA,CAAAA;AACJ,SAAA;AAEA,QAAA,IAAI,CAACsC,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC/D,KAAK,CAAA,CAAA;QAE/B,OAAO,IAAI,CAACA,KAAK,CAAA;AACrB,KAAA;AAEA,IAAA,MAAMgE,MAAOvC,CAAAA,KAAa,EAAEwC,OAAiC,EAAE;AAC3D,QAAA,MAAMC,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AAEzD,QAAA,IACIQ,WACArC,YAAaqC,CAAAA,OAAAA,CAAQ1C,KAAK,EAAEyC,OAAAA,CAAQzC,KAAK,CAC3C,EAAA;AACE,YAAA,OAAA;AACJ,SAAA;AAEA,QAAA,IAAI,CAACkC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACvC,MAAM,CACtC,CAACgD,EAAOA,GAAAA,EAAAA,CAAG1C,KAAK,GAAGA,KAAAA,CAAAA,CAAAA;AAEvB,QAAA,IAAI,CAACiC,WAAW,CAAC/C,IAAI,CAACsD,OAAAA,CAAAA,CAAAA;AAEtB,QAAA,MAAMG,UAAa3C,GAAAA,KAAAA,CAAAA;AACnB,QAAA,MAAO,IAAM,CAAA;AACT,YAAA,MAAM8B,QAAQ,MAAM,IAAI,CAACO,UAAU,CAC/BrC,OACA2C,UAAe3C,KAAAA,KAAAA,CAAAA,CAAAA;AAEnB,YAAA,IAAI,CAAC8B,KAAO,EAAA;AACR,gBAAA,MAAA;AACJ,aAAA;AAEA9B,YAAAA,KAAAA,EAAAA,CAAAA;AACJ,SAAA;AACJ,KAAA;AAEA,IAAA,MAAM4C,MAAO5C,CAAAA,KAAa,EAAE/B,IAA8B,EAAE;QACxD,IAAI4E,OAAAA,CAAAA;QACJ,IAAI5E,IAAAA,CAAKyC,eAAe,EAAE;YACtBmC,OAAU,GAAA,IAAA,CAAA;SACP,MAAA;AACH,YAAA,MAAMJ,OAAU3B,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;YACzDY,OAAU,GAAA,CAAC,CAACJ,OAAWrC,IAAAA,YAAAA,CAAanC,KAAK8B,KAAK,EAAE0C,QAAQ1C,KAAK,CAAA,CAAA;AACjE,SAAA;AAEA,QAAA,IAAI8C,OAAS,EAAA;AACT,YAAA,IAAI,CAACZ,WAAW,GAAGjB,qBAAqBhB,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;SAC5D,MAAA;YACH,IAAI,CAACA,WAAW,GAAGhB,gBAAAA,CAAiBjB,OAAO,IAAI,CAACiC,WAAW,EAAEhE,IAAAA,CAAAA,CAAAA;AACjE,SAAA;AAEA,QAAA,MAAM,IAAI,CAACoE,UAAU,CAACrC,KAAO,EAAA,IAAA,CAAA,CAAA;AACjC,KAAA;AAEA,IAAA,MAAgBqC,UAAWrC,CAAAA,KAAa,EAAE8C,MAAgB,EAAqB;QAC3E,IAAIvE,KAAAA,CAAAA;AAEJ,QAAA,IAAIuE,MAAQ,EAAA;AACRvE,YAAAA,KAAAA,GAAQqC,kBAAmB,CAAA,IAAI,CAACrC,KAAK,EAAEyB,KAAAA,CAAAA,CAAAA;SACpC,MAAA;AACH,YAAA,MAAMvB,SAASqC,iBAAkBd,CAAAA,KAAAA,GAAQ,CAAG,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AAC5D,YAAA,MAAMC,GAAM,GAAA,MAAM,IAAI,CAACC,OAAO,CAAC;AAC3BnC,gBAAAA,KAAAA;AACAvB,gBAAAA,MAAAA;AACJ,aAAA,CAAA,CAAA;AAEAF,YAAAA,KAAAA,GAAQ2D,OAAOA,GAAItD,CAAAA,MAAM,GAAG,CAAA,GACxBuB,eAAe+B,GAAK,EAAA;AAAElC,gBAAAA,KAAAA;AAAM,aAAA,CAAA,GAC5B,EAAE,CAAA;AACV,SAAA;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,CAAAA;AAG3B,YAAA,IAAI,CAACsC,IAAI,CAAC,cAAA,EAAgBtC,OAAO,EAAE,CAAA,CAAA;YAEnC,OAAO,KAAA,CAAA;AACX,SAAA;AAEA,QAAA,IAAID,QAAmB,EAAE,CAAA;AACzB,QAAA,MAAM9B,IAAO6C,GAAAA,iBAAAA,CAAkBd,KAAO,EAAA,IAAI,CAACiC,WAAW,CAAA,CAAA;AACtD,QAAA,IAAIhE,IAAM,EAAA;AACN8B,YAAAA,KAAAA,GAAQ9B,KAAK8B,KAAK,CAAA;AACtB,SAAA;AAEAY,QAAAA,iBAAAA,CAAkBpC,KAAOwB,EAAAA,KAAAA,CAAAA,CAAAA;QAEzB,IAAI,CAACxB,KAAK,GAAG6C,iBAAAA,CAAkBpB,OAAO,IAAI,CAACzB,KAAK,EAAEA,KAAAA,CAAAA,CAAAA;AAElD,QAAA,IAAI,CAAC+D,IAAI,CAAC,cAAA,EAAgBtC,KAAOzB,EAAAA,KAAAA,CAAAA,CAAAA;QAEjC,OAAO,IAAA,CAAA;AACX,KAAA;AAvKAwE,IAAAA,WAAAA,CAAYvE,OAAiC,CAAE;QAC3C,KAAK,EAAA,CAAA;QAEL,IAAI2D,OAAAA,CAAAA;AACJ,QAAA,IAAI,OAAO3D,OAAAA,CAAQD,KAAK,KAAK,UAAY,EAAA;AACrC4D,YAAAA,OAAAA,GAAU3D,QAAQD,KAAK,CAAA;SACpB,MAAA;YACH4D,OAAU,GAAA,OAAO,EAAEnC,KAAK,EAAE,GAAA;AACtB,gBAAA,IAAIA,QAAQ,CAAG,EAAA;AACX,oBAAA,OAAO,EAAE,CAAA;AACb,iBAAA;AAEA,gBAAA,OAAOxB,QAAQD,KAAK,CAAA;AACxB,aAAA,CAAA;AACJ,SAAA;QAEA,IAAI,CAAC4D,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAAC5D,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC0D,WAAW,GAAG,EAAE,CAAA;QAErB,IAAI,CAACH,KAAK,GAAG,KAAA,CAAA;AACjB,KAAA;AAmJJ;;AC/LA,MAAMkB,GAAAA,GAAMC,MAAOC,CAAAA,GAAG,CAAC,qBAAA,CAAA,CAAA;AAEhB,SAASC,wBAAwBC,GAAS,EAAA;IAC7C,MAAMC,QAAAA,GAAWC,OAA0BN,GAAKI,EAAAA,GAAAA,CAAAA,CAAAA;AAChD,IAAA,IAAI,CAACC,QAAU,EAAA;AACX,QAAA,MAAM,IAAIE,KAAM,CAAA,8CAAA,CAAA,CAAA;AACpB,KAAA;IAEA,OAAOF,QAAAA,CAAAA;AACX,CAAA;AAEO,SAASG,wBAAAA,CACZ1G,OAA0B,EAC1BsG,GAAS,EAAA;AAETK,IAAAA,OAAAA,CAAQT,KAAKlG,OAASsG,EAAAA,GAAAA,CAAAA,CAAAA;AAC1B;;AC3BA,IAAO,QAAKM,iBAAAA,SAAAA,QAAAA,EAAAA;;;;;;;AAAAA,IAAAA,OAAAA,QAAAA,CAAAA;;AASZ,IAAO,WAAKC,iBAAAA,SAAAA,WAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;;;ACcL,MAAMC,YAAYC,eAAgB,CAAA;IACrCC,KAAO,EAAA;QACH3E,IAAM,EAAA;YACF4E,IAAMC,EAAAA,MAAAA;YACNC,QAAU,EAAA,IAAA;AACd,SAAA;AACJ,KAAA;AACAC,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAMC,YAAYC,gBAAiB,CAAA,YAAA,CAAA,CAAA;AAEnC,QAAA,MAAM7F,OAAU3B,GAAAA,qBAAAA,EAAAA,CAAAA;AAChB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA,CAAAA;QAEhB,MAAMhE,IAAAA,GAAOmF,MAAMR,KAAO,EAAA,MAAA,CAAA,CAAA;AAC1B,QAAA,MAAMS,WAAcC,GAAAA,QAAAA,CAAS,IAAMrF,IAAAA,CAAKsF,KAAK,CAACzF,QAAQ,IAC9CG,IAAAA,CAAKsF,KAAK,CAACzF,QAAQ,CAACJ,MAAM,GAAG,CAAA,CAAA,CAAA;AAErC,QAAA,MAAM2D,SAAS,OACXkC,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQyF,MAAM,CAACpD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA,CAAAA;AAC3C,SAAA,CAAA;AAEA,QAAA,MAAM7B,SAAS,OACX6B,KAAAA,GAAAA;AAEA,YAAA,MAAM3H,QAAQ8F,MAAM,CAACzD,KAAKsF,KAAK,CAACzE,KAAK,EAAEyE,KAAAA,CAAAA,CAAAA;AAC3C,SAAA,CAAA;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,iBAAAA,CAAkBnB,QAASiB,CAAAA,SAAS,EAAER,KAAAA,CAAAA,CAAAA;AACtD,oBAAA,IAAIS,OAAS,EAAA;wBACT,OAAOE,aAAAA,CAAcpB,QAASiB,CAAAA,SAAS,EAAE;AACrCxF,4BAAAA,IAAAA,EAAMA,KAAKsF,KAAK;yBACjBN,EAAAA,KAAAA,CAAAA,CAAAA;AACP,qBAAA;oBAEA,OAAOY,CAAAA,CAAEvG,OAAQhB,CAAAA,YAAY,EAAE;AAC3BwH,wBAAAA,KAAAA,EAAOxG,QAAQf,cAAc;qBAC9B0B,EAAAA,IAAAA,CAAKsF,KAAK,CAACzH,IAAI,CAAA,CAAA;AACtB,iBAAA;;gBAGA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;AACpB,oBAAA,MAAMG,OAAUC,GAAAA,iBAAAA,CAAkBnB,QAASuB,CAAAA,IAAI,EAAEd,KAAAA,CAAAA,CAAAA;AACjD,oBAAA,IAAIS,OAAS,EAAA;wBACT,OAAOE,aAAAA,CAAcpB,QAASuB,CAAAA,IAAI,EAAE;AAChC9F,4BAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,4BAAAA,MAAAA;4BACA2C,QAAU/F,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM;yBAC5B2D,EAAAA,KAAAA,CAAAA,CAAAA;AACP,qBAAA;AACA,oBAAA,MAAMgB,SAA6B,GAAA;wBAC/B3E,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM;wBACzB4E,QAAU,EAAA,KAAA;wBACVC,QAAU,EAAA,IAAA;AACd,qBAAA,CAAA;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,CAAA;AAC/B,4BAAA,IAAIgB,IAAKsF,CAAAA,KAAK,CAACc,SAAS,EAAE;AACtBJ,gCAAAA,SAAAA,CAAUK,MAAM,GAAGrG,IAAKsF,CAAAA,KAAK,CAACc,SAAS,CAAA;AAC3C,6BAAA;yBACG,MAAA;AACHJ,4BAAAA,SAAAA,CAAUM,EAAE,GAAGtG,IAAKsF,CAAAA,KAAK,CAACtG,GAAG,CAAA;AACjC,yBAAA;AACJ,qBAAA;AAEA,oBAAA,OAAO4G,EAAEW,MAAQ,EAAA;wBACbV,KAAO,EAAA;AACHxG,4BAAAA,OAAAA,CAAQZ,SAAS;AACpB,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,CAAA;AACvC,6BAAA;4BAEA,OAAO1D,SAAAA,CAAAA;AACX,yBAAA;AACA8E,wBAAAA,OAAAA,CAAAA,GAAAA;AACI,4BAAA,OAAOtD,MAAOqD,CAAAA,IAAI,CAAC,IAAA,EAAMzG,KAAKsF,KAAK,CAAA,CAAA;AACvC,yBAAA;qBACD,EAAA;AACC1F,wBAAAA,OAAAA,EAAS,IAAM;mCACPI,IAAKsF,CAAAA,KAAK,CAACqB,IAAI,GACf;oCAACf,CACGvG,CAAAA,OAAAA,CAAQd,WAAW,EACnB;AACIsH,wCAAAA,KAAAA,EAAOxG,QAAQb,aAAa;qCAEhC,EAAA;AACIoH,wCAAAA,CAAAA,CAAE,GAAK,EAAA;4CAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB,IAAI;AAAC,yCAAA,CAAA;AACnC,qCAAA,CAAA;AACH,iCAAA,GACF,EAAE;gCAENf,CAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,oCAAAA,KAAAA,EAAOxG,QAAQT,aAAa;iCAC7B,EAAA;oCACCoB,IAAKsF,CAAAA,KAAK,CAACzH,IAAI;AAClB,iCAAA,CAAA;AACJ,6BAAA;AACL,qBAAA,CAAA,CAAA;AACJ,iBAAA;AAEA,gBAAA,IAAI6H,iBAAkBnB,CAAAA,QAAAA,CAASqC,GAAG,EAAE5B,KAAQ,CAAA,EAAA;oBACxC,OAAOW,aAAAA,CAAcpB,QAASqC,CAAAA,GAAG,EAAE;AAC/B5G,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA,MAAAA;qBACDuB,EAAAA,KAAAA,CAAAA,CAAAA;AACP,iBAAA;gBAEA,IAAI6B,KAAAA,CAAAA;AACJ,gBAAA,IAAInB,iBAAkBnB,CAAAA,QAAAA,CAASuC,SAAS,EAAE9B,KAAQ,CAAA,EAAA;oBAC9C6B,KAAQlB,GAAAA,aAAAA,CAAcpB,QAASuC,CAAAA,SAAS,EAAE;AACtC9G,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA,MAAAA;AACJ,qBAAA,CAAA,CAAA;iBACG,MAAA;AACHoD,oBAAAA,KAAAA,GAAQjB,EAAE,KAAO,EAAA;AACbC,wBAAAA,KAAAA,EAAOxG,QAAQZ,SAAS;AACxBiI,wBAAAA,OAAAA,CAAAA,CAAQK,MAAW,EAAA;AACfA,4BAAAA,MAAAA,CAAOC,cAAc,EAAA,CAAA;4BAErB,OAAOvD,MAAAA,CAAOzD,KAAKsF,KAAK,CAAA,CAAA;AAC5B,yBAAA;qBACD,EAAA;2BACKtF,IAAKsF,CAAAA,KAAK,CAACqB,IAAI,GACf;4BAACf,CACGvG,CAAAA,OAAAA,CAAQd,WAAW,EACnB;AACIsH,gCAAAA,KAAAA,EAAOxG,QAAQb,aAAa;6BAEhC,EAAA;AACIoH,gCAAAA,CAAAA,CAAE,GAAK,EAAA;oCAAEC,KAAO7F,EAAAA,IAAAA,CAAKsF,KAAK,CAACqB,IAAI;AAAC,iCAAA,CAAA;AACnC,6BAAA,CAAA;AACH,yBAAA,GACF,EAAE;wBAENf,CAAEvG,CAAAA,OAAAA,CAAQV,WAAW,EAAE;AACnBkH,4BAAAA,KAAAA,EAAOxG,QAAQT,aAAa;yBAC7B,EAAA;4BACCoB,IAAKsF,CAAAA,KAAK,CAACzH,IAAI;AAClB,yBAAA,CAAA;AACJ,qBAAA,CAAA,CAAA;AACL,iBAAA;gBAEA,IAAI,CAACuH,WAAYE,CAAAA,KAAK,EAAE;oBACpB,OAAOuB,KAAAA,CAAAA;AACX,iBAAA;gBAEA,IAAII,MAAAA,CAAAA;AAEJ,gBAAA,IAAIvB,iBAAkBnB,CAAAA,QAAAA,CAAS2C,SAAS,EAAElC,KAAQ,CAAA,EAAA;oBAC9CiC,MAAStB,GAAAA,aAAAA,CAAcpB,QAAS2C,CAAAA,SAAS,EAAE;AACvClH,wBAAAA,IAAAA,EAAMA,KAAKsF,KAAK;AAChBlC,wBAAAA,MAAAA;AACAK,wBAAAA,MAAAA;AACJ,qBAAA,CAAA,CAAA;iBACG,MAAA;AACHwD,oBAAAA,MAAAA,GAASrB,EAAEX,SAAW,EAAA;wBAClBpE,KAAOb,EAAAA,IAAAA,CAAKsF,KAAK,CAACzE,KAAK;wBACvBb,IAAMA,EAAAA,IAAAA,CAAKsF,KAAK,CAACzF,QAAQ;AAC7B,qBAAA,CAAA,CAAA;AACJ,iBAAA;gBAEA,OAAO;AACHgH,oBAAAA,KAAAA;AACAI,oBAAAA,MAAAA;AACH,iBAAA,CAAA;AACL,aAAA,CAAA;YAEA,OAAOrB,CAAAA,CAAEvG,OAAQjB,CAAAA,OAAO,EAAE;gBACtByH,KAAO,EAAA;AACHxG,oBAAAA,OAAAA,CAAQnB,SAAS;AACbkH,oBAAAA,GAAAA,WAAAA,CAAYE,KAAK,GAAG;AAACjG,wBAAAA,OAAAA,CAAQlB,eAAe;AAAC,qBAAA,GAAG,EAAE;AACtD,oBAAA;wBACIkD,MAAQrB,EAAAA,IAAAA,CAAKsF,KAAK,CAACjE,MAAM,IAAIrB,IAAKsF,CAAAA,KAAK,CAAC/D,eAAe;AAC3D,qBAAA;AACH,iBAAA;aACF,EAAA;AACCgE,gBAAAA,SAAAA,EAAAA;AACH,aAAA,CAAA,CAAA;AACL,SAAA,CAAA;AACJ,KAAA;AACJ,CAAG;;AClMI,MAAM4B,aAAazC,eAAgB,CAAA;IACtCC,KAAO,EAAA;QACH9D,KAAO,EAAA;YACH+D,IAAMwC,EAAAA,MAAAA;YACNxH,OAAS,EAAA,CAAA;AACb,SAAA;QACAI,IAAM,EAAA;YACF4E,IAAMyC,EAAAA,KAAAA;YACNzH,OAASgC,EAAAA,SAAAA;AACb,SAAA;AACJ,KAAA;AACAmD,IAAAA,KAAAA,CAAAA,CAAMJ,KAAK,EAAE,EAAEK,KAAK,EAAE,EAAA;AAClB,QAAA,MAAM3F,OAAU3B,GAAAA,qBAAAA,EAAAA,CAAAA;AAEhB,QAAA,MAAMC,OAAUqG,GAAAA,uBAAAA,EAAAA,CAAAA;QAChB,MAAMsD,YAAAA,GAAeC,IAAgC,EAAE,CAAA,CAAA;QACvD,IAAI,CAAC5C,KAAM3E,CAAAA,IAAI,EAAE;AACbsH,YAAAA,YAAAA,CAAahC,KAAK,GAAG3H,OAAAA,CAAQ8E,QAAQ,CAACkC,MAAM9D,KAAK,CAAA,CAAA;AACrD,SAAA;AAEA,QAAA,MAAM2G,UAAUD,GAAI,CAAA,CAAA,CAAA,CAAA;QAEpB,IAAIE,cAAAA,CAAAA;QAEJC,SAAU,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,OAAA;AACJ,iBAAA;AAEAyG,gBAAAA,YAAAA,CAAahC,KAAK,GAAGlG,KAAAA,CAAAA;AACrBoI,gBAAAA,OAAAA,CAAQlC,KAAK,EAAA,CAAA;AACjB,aAAA,CAAA,CAAA;AAER,SAAA,CAAA,CAAA;QAEAsC,WAAY,CAAA,IAAA;YACR,IAAI,OAAOH,mBAAmB,UAAY,EAAA;AACtCA,gBAAAA,cAAAA,EAAAA,CAAAA;gBAEAA,cAAiB7F,GAAAA,SAAAA,CAAAA;AACrB,aAAA;AACJ,SAAA,CAAA,CAAA;AAEA,QAAA,MAAMxC,QAAQiG,QAAS,CAAA,IAAA;AACnB,YAAA,IAAI,OAAOV,KAAAA,CAAM3E,IAAI,KAAK,WAAa,EAAA;AACnC,gBAAA,OAAO2E,MAAM3E,IAAI,CAAA;AACrB,aAAA;AAEA,YAAA,OAAOsH,aAAahC,KAAK,CAAA;AAC7B,SAAA,CAAA,CAAA;QAEA,OAAO,IAAA;AACH,YAAA,MAAM2B,SAA8B,EAAE,CAAA;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,SAAA;AACJ,iBAAA;gBAEA,IAAIsG,KAAAA,CAAAA;AACJ,gBAAA,IAAInC,iBAAkBnB,CAAAA,QAAAA,CAASuD,IAAI,EAAE9C,KAAQ,CAAA,EAAA;oBACzC6C,KAAQlC,GAAAA,aAAAA,CAAcpB,QAASuD,CAAAA,IAAI,EAAE;wBAAE9H,IAAMZ,EAAAA,KAAAA,CAAMkG,KAAK,CAAC9F,CAAE,CAAA;qBAAIwF,EAAAA,KAAAA,CAAAA,CAAAA;iBAC5D,MAAA;AACH6C,oBAAAA,KAAAA,GAAQjC,EACJnB,SACA,EAAA;AACIsD,wBAAAA,GAAAA,EAAK,GAAGvI,CAAE,CAAA,CAAC,EAAEgI,OAAAA,CAAQlC,KAAK,CAAE,CAAA;wBAC5BtF,IAAMZ,EAAAA,KAAAA,CAAMkG,KAAK,CAAC9F,CAAE,CAAA;AACxB,qBAAA,CAAA,CAAA;AAER,iBAAA;AAEAyH,gBAAAA,MAAAA,CAAOlH,IAAI,CAAC8H,KAAAA,CAAAA,CAAAA;AAChB,aAAA;YAEA,OAAOjC,CAAAA,CAAEvG,OAAQpB,CAAAA,QAAQ,EAAE;AACvB4H,gBAAAA,KAAAA,EAAOxG,QAAQvB,UAAU;aAC1BmJ,EAAAA,MAAAA,CAAAA,CAAAA;AACP,SAAA,CAAA;AACJ,KAAA;AACJ,CAAG;;ACzFI,SAASe,OAAAA,CAAQ9D,QAAa,EAAE7E,OAAgB,EAAA;IACnD,MAAM1B,OAAAA,GAAU,IAAI4E,iBAAkB,CAAA;AAClCnD,QAAAA,KAAAA,EAAOC,QAAQD,KAAK;AACxB,KAAA,CAAA,CAAA;AAEAiF,IAAAA,wBAAAA,CAAyB1G,OAASuG,EAAAA,QAAAA,CAAAA,CAAAA;AAElC,IAAA,MAAM+D,eAAeC,mBAAoBhE,CAAAA,QAAAA,CAAAA,CAAAA;IACzC,IAAI7E,OAAAA,CAAQ4I,YAAY,EAAE;QACtBE,wBAAyBF,CAAAA,YAAAA,EAAc5I,QAAQ4I,YAAY,CAAA,CAAA;AAC/D,KAAA;AAEApD,IAAAA,MAAAA,CAAOuD,OAAO,CAAC;AACX3D,QAAAA,SAAAA;AACA0C,QAAAA,UAAAA;AACJ,KAAA,CAAA,CAAGkB,OAAO,CAAC,CAAC,CAACC,eAAeC,SAAU,CAAA,GAAA;QAClCrE,QAASqE,CAAAA,SAAS,CAACD,aAAeC,EAAAA,SAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA,CAAA;AACJ,CAAA;AAEA,YAAe;AACXP,IAAAA,OAAAA;AACJ,CAA4B;;;;"}
@@ -3,7 +3,7 @@ import type { NavigationItemNormalized, NavigationItemsFn } from '../types';
3
3
  import type { NavigationManagerBuildOptions, NavigationManagerOptions } from './types';
4
4
  export declare class NavigationManager extends EventEmitter<{
5
5
  updated: NavigationItemNormalized[];
6
- tierUpdated: [number, NavigationItemNormalized[]];
6
+ levelUpdated: [number, NavigationItemNormalized[]];
7
7
  }> {
8
8
  protected itemsActive: NavigationItemNormalized[];
9
9
  protected items: NavigationItemNormalized[];
@@ -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,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;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuecs/navigation",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "A package for multi level navigations.",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",