@ngutil/layout 0.0.84 → 0.0.86
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,6 +1,6 @@
|
|
|
1
1
|
import { BehaviorSubject, map, shareReplay, switchMap, Subject, scan, tap, distinctUntilChanged, finalize, of } from 'rxjs';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component, input, inject, ElementRef, model, computed, viewChild, contentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector, signal, output, effect, contentChild, linkedSignal, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { Component, input, inject, ElementRef, model, computed, viewChild, contentChildren, NgModule, Injectable, TemplateRef, Directive, ViewContainerRef, Injector, signal, output, effect, untracked, contentChild, linkedSignal, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { toObservable, takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { coerceBoolAttr, Destructible } from '@ngutil/common';
|
|
6
6
|
import { DimensionWatcher, Duration, Ease } from '@ngutil/style';
|
|
@@ -766,15 +766,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
766
766
|
}], ctorParameters: () => [] });
|
|
767
767
|
|
|
768
768
|
class Item {
|
|
769
|
+
// readonly data: WritableSignal<T>
|
|
769
770
|
constructor(data) {
|
|
770
771
|
this.data = data;
|
|
771
772
|
this.state = signal(0 /* SlideState.Pending */);
|
|
772
|
-
this.currentState = 0 /* SlideState.Pending */;
|
|
773
773
|
this.id = `${++uid}`;
|
|
774
|
+
// this.data = signal<T>(data)
|
|
774
775
|
}
|
|
775
776
|
setState(state) {
|
|
776
|
-
|
|
777
|
-
|
|
777
|
+
const current = untracked(this.state);
|
|
778
|
+
if (current !== state) {
|
|
778
779
|
this.state.set(state);
|
|
779
780
|
}
|
|
780
781
|
}
|
|
@@ -819,6 +820,9 @@ class InfiniteSlidingComponent {
|
|
|
819
820
|
unshift(data) {
|
|
820
821
|
this.data.set({ position: -1, data });
|
|
821
822
|
}
|
|
823
|
+
update(data) {
|
|
824
|
+
this.data.set({ position: 0, data });
|
|
825
|
+
}
|
|
822
826
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: InfiniteSlidingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
823
827
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: InfiniteSlidingComponent, isStandalone: true, selector: "nu-infinite-sliding", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { data: "dataChange" }, queries: [{ propertyName: "slide", first: true, predicate: InfiniteSlideDirective, descendants: true, isSignal: true }], exportAs: ["nuInfiniteSliding"], ngImport: i0, template: `
|
|
824
828
|
<nu-sliding [lazy]="true" [preferred]="preferredIndex()">
|
|
@@ -859,7 +863,17 @@ function insertData(list, slideData) {
|
|
|
859
863
|
return list;
|
|
860
864
|
}
|
|
861
865
|
const { position, data } = slideData;
|
|
862
|
-
if (position ===
|
|
866
|
+
if (position === 0) {
|
|
867
|
+
const visible = list.find(item => [0 /* SlideState.Pending */, 1 /* SlideState.Showing */, 2 /* SlideState.Shown */].includes(item.state()));
|
|
868
|
+
if (!visible) {
|
|
869
|
+
return [...list, new Item(data)];
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
visible.data = data;
|
|
873
|
+
return list.slice(0);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
else if (position === -1) {
|
|
863
877
|
return [new Item(data), ...list];
|
|
864
878
|
}
|
|
865
879
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-backdrop.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/sliding/infinite-slide.directive.ts","../../../../packages/layout/src/sliding/slide.directive.ts","../../../../packages/layout/src/sliding/sliding.component.ts","../../../../packages/layout/src/sliding/infinite-sliding.component.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * ----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGHT |\n * ----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\nimport { Rect } from \"@ngutil/style\"\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = (typeof vertical)[number]\nexport type L9Horizontal = (typeof horizontal)[number]\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}` | `${L9Horizontal}:${L9Vertical}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\"\n\nexport const L9GridTopLeft = { row: 1, col: 1 }\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v1, v2] = value.split(\":\")\n const v = vertical.includes(v1 as any) ? v1 : v2\n const h = horizontal.includes(v1 as any) ? v1 : v2\n\n if (v === h) {\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n return new L9Cell(v as any, h as any)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n\n intoGridArea(gridTopLeft: typeof L9GridTopLeft = L9GridTopLeft) {\n return `${gridTopLeft.row + vertical.indexOf(this.v)}/${gridTopLeft.col + horizontal.indexOf(this.h)}`\n }\n\n isEq(other: L9Cell) {\n return this.v === other.v && this.h === other.h\n }\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n intoGridArea(gridTopLeft: typeof L9GridTopLeft = L9GridTopLeft) {\n const start = this.cells[0]\n const end = this.cells[this.cells.length - 1]\n const endTopLeft = { row: gridTopLeft.row + 1, col: gridTopLeft.col + 1 }\n return `${start.intoGridArea(gridTopLeft)}/${end.intoGridArea(endTopLeft)}`\n }\n\n intoRect(): Rect {\n const start = this.cells[0]\n const end = this.cells[this.cells.length - 1]\n const x = horizontal.indexOf(start.h)\n const y = vertical.indexOf(start.v)\n\n return { x, y, width: horizontal.indexOf(end.h) - x + 1, height: vertical.indexOf(end.v) - y + 1 }\n }\n\n #determineOrient(): L9Orient {\n const rect = this.intoRect()\n if (rect.width === rect.height) {\n // corner\n if (rect.x === rect.y) {\n return \"vertical\"\n }\n\n if (rect.x === 0 || rect.x === 2) {\n return \"vertical\"\n } else if (rect.y === 0 || rect.y === 2) {\n return \"horizontal\"\n }\n } else if (rect.width > rect.height) {\n return \"horizontal\"\n } else if (rect.height > rect.width) {\n return \"vertical\"\n }\n\n return \"vertical\"\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent { }\n","import { Component, input } from \"@angular/core\"\n\n@Component({\n selector: \"nu-docking-backdrop\",\n host: {\n \"[attr.state]\": \"visible() ? 'visible' : 'hidden'\"\n },\n styleUrl: \"./docking-backdrop.component.scss\",\n template: ``\n})\nexport class DockingBackdropComponent {\n readonly visible = input.required()\n}\n","import { Component, computed, ElementRef, inject, input, model, viewChild } from \"@angular/core\"\nimport { takeUntilDestroyed, toObservable, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { switchMap } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\nexport type BackdropMode = boolean | \"full\" | \"panel-size\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\n\n@Component({\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n host: {\n \"[style.grid-area]\": \"gridArea()\",\n \"[style.--nudp-content-size.px]\": \"contentSize()\",\n \"[attr.state]\": \"_opened() ? 'opened' : 'closed'\",\n \"[attr.orient]\": \"orient()\",\n \"[attr.side]\": \"side()\",\n \"[attr.mode]\": \"mode()\"\n },\n styleUrl: \"./docking-panel.component.scss\",\n template: `<div class=\"wrapper\" #content><ng-content /></div>`\n})\nexport class DockingPanelComponent {\n readonly #dimWatcher = inject(DimensionWatcher)\n readonly el = inject(ElementRef)\n\n readonly position = input(DEFAULT_POSITION, { transform: L9Range.coerce })\n // TODO: linkedSignal\n readonly opened = model<boolean>(false)\n readonly _opened = computed(() => coerceBoolAttr(this.opened()))\n readonly mode = input<DockingPanelMode>(\"rigid\")\n readonly maxSize = input<number | undefined | null>(undefined)\n readonly backdrop = input<BackdropMode>(false)\n\n readonly gridArea = computed(() => this.position().intoGridArea())\n readonly orient = computed(() => this.position().orient)\n readonly side = computed(() => {\n const pos = this.position()\n return pos.orient === \"horizontal\" ? pos.cells[0].v : pos.cells[0].h\n })\n\n readonly content = viewChild.required(\"content\", { read: ElementRef })\n\n readonly dimension$ = toObservable(this.content).pipe(\n switchMap(content => this.#dimWatcher.watch(content, \"border-box\")),\n takeUntilDestroyed()\n )\n readonly dimension = toSignal(this.dimension$)\n\n readonly contentSize = computed(() => {\n const dim = this.dimension()\n if (!dim) {\n return 0\n }\n return this.orient() === \"horizontal\" ? dim.height : dim.width\n })\n\n // readonly backdropSize = computed(() => {\n // const mode = this.backdrop()\n // if (mode === true || mode === \"full\") {\n // return L9Range.coerce(\"top:left-bottom:right\").intoGridArea()\n // } else if (mode === \"panel-size\") {\n // const pos = this.position()\n // if (pos.orient === \"horizontal\") {\n\n // }\n\n // return \"\"\n // }\n // return null\n // })\n\n open() {\n this.opened.set(true)\n }\n\n close() {\n this.opened.set(false)\n }\n}\n","import { Component, computed, contentChildren } from \"@angular/core\"\n\nimport { DockingBackdropComponent } from \"./docking-backdrop.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\n@Component({\n selector: \"nu-docking\",\n exportAs: \"nuDocking\",\n imports: [DockingBackdropComponent],\n styleUrl: \"./docking-layout.component.scss\",\n template: `\n <ng-content />\n <nu-docking-backdrop [visible]=\"backdropVisible()\" (click)=\"doCloseActiveOverPanel()\"></nu-docking-backdrop>\n `\n})\nexport class DockingLayoutComponent {\n /**\n * True if u want to animate panel open/close with `mode=\"side\"`\n */\n // readonly animateSide = input(false)\n\n readonly panels = contentChildren(DockingPanelComponent)\n\n readonly activeOverPanel = computed(() => {\n const panels = this.panels()\n return panels.find(panel => panel.mode() === \"over\" && panel.opened())\n })\n\n readonly backdropVisible = computed(() => {\n const active = this.activeOverPanel()\n return active != null ? active.backdrop() !== false : false\n })\n\n doCloseActiveOverPanel() {\n const activePanel = this.activeOverPanel()\n if (activePanel) {\n activePanel.close()\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","import { Directive, inject, TemplateRef } from \"@angular/core\"\n\n// TODO: remove old variant: nuInfiniteSlidingItem\n@Directive({\n selector: \"ng-template[nuInfiniteSlide]\",\n exportAs: \"nuInfiniteSlide\"\n})\nexport class InfiniteSlideDirective {\n readonly tpl = inject(TemplateRef)\n}\n","import { Directive, effect, inject, output, signal, TemplateRef } from \"@angular/core\"\n\nexport const enum SlideAnimationState {\n LeftIn = \"left-in\",\n LeftOut = \"left-out\",\n RightIn = \"right-in\",\n RightOut = \"right-out\",\n FastOut = \"fast-out\",\n FastIn = \"fast-in\"\n}\n\nexport const enum SlideState {\n Pending = 0,\n Showing = 1,\n Shown = 2,\n Hiding = 3,\n Hidden = 4\n}\n\n@Directive({\n selector: \"ng-template[nuSlide]\",\n exportAs: \"nuSlide\"\n})\nexport class SlideDirective {\n readonly tpl = inject(TemplateRef)\n\n readonly rendered = signal(false)\n readonly active = signal(false)\n readonly animation = signal<SlideAnimationState | null>(null)\n readonly activated = output<boolean>()\n readonly state = output<SlideState>()\n\n constructor() {\n effect(() => {\n this.activated.emit(this.active())\n })\n }\n}\n","import { animate, AnimationEvent, state, style, transition, trigger } from \"@angular/animations\"\nimport { CommonModule } from \"@angular/common\"\nimport { Component, computed, contentChildren, effect, input, model, output } from \"@angular/core\"\n\nimport { clamp } from \"es-toolkit\"\n\nimport { Duration, Ease } from \"@ngutil/style\"\n\nimport { SlideAnimationState, SlideDirective, SlideState } from \"./slide.directive\"\n\nconst absolute = { position: \"absolute\", top: \"0px\", left: \"0px\" }\n\nconst anim = `${Duration.Fast} ${Ease.Acceleration}`\n\n@Component({\n selector: \"nu-sliding\",\n imports: [CommonModule],\n styles: `\n :host {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr;\n overflow: hidden;\n position: relative;\n\n .nu-slide {\n grid-column: 1;\n grid-row: 1;\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n position: relative;\n\n overflow: hidden;\n }\n }\n `,\n animations: [\n trigger(\"animate\", [\n state(SlideAnimationState.FastOut, style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\" })),\n state(SlideAnimationState.LeftOut, style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\" })),\n state(SlideAnimationState.RightOut, style({ display: \"none\", ...absolute, transform: \"translateX(100%)\" })),\n state(SlideAnimationState.FastIn, style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })),\n state(SlideAnimationState.LeftIn, style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })),\n state(\n SlideAnimationState.RightIn,\n style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })\n ),\n transition(`* => ${SlideAnimationState.LeftOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\" }),\n animate(anim, style({ transform: \"translateX(-100%)\" }))\n ]),\n transition(`* => ${SlideAnimationState.RightOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\" }),\n animate(anim, style({ transform: \"translateX(100%)\" }))\n ]),\n transition(`* => ${SlideAnimationState.LeftIn}`, [\n style({ display: \"\", position: \"relative\", transform: \"translateX(-100%)\" }),\n animate(anim, style({ transform: \"translateX(0)\" }))\n ]),\n transition(`* => ${SlideAnimationState.RightIn}`, [\n style({ display: \"\", position: \"relative\", transform: \"translateX(100%)\" }),\n animate(anim, style({ transform: \"translateX(0%)\" }))\n ])\n ])\n ],\n template: `\n @if (items(); as _items) {\n @for (item of _items; track item; let index = $index) {\n @if (item.rendered()) {\n <div\n class=\"nu-slide\"\n [@animate]=\"item.animation()\"\n (@animate.start)=\"onAnimationEvent($event, item)\"\n (@animate.done)=\"onAnimationEvent($event, item)\"\n >\n <ng-template [ngTemplateOutlet]=\"item.tpl\" />\n </div>\n }\n }\n }\n `\n})\nexport class SlidingComponent {\n /**\n * List of items\n */\n readonly items = contentChildren(SlideDirective)\n\n /**\n * Lazily rendering items\n */\n readonly lazy = input(true)\n\n /**\n * Index of the preferred item\n */\n readonly preferred = model(0)\n\n /**\n * Index of the active item\n */\n readonly active = computed(() => {\n const items = this.items()\n if (items.length === 0) {\n return -1\n }\n const index = this.preferred()\n return clamp(index, 0, items.length - 1)\n })\n\n /**\n * Changes of the active item\n */\n readonly changes = output<SlidingComponent>()\n\n constructor() {\n effect(() => {\n const activeIndex = this.active()\n const items = this.items()\n const lazy = this.lazy()\n const preferred = this.preferred()\n const currentActiveIndex = items.findIndex(item => item.active())\n if (activeIndex === currentActiveIndex) {\n if (items[activeIndex]?.active()) {\n return\n }\n }\n\n let activeItem: SlideDirective | undefined\n let inAnimation: SlideAnimationState | null = null\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const isActive = i === activeIndex\n\n if (isActive) {\n activeItem = item\n } else {\n const currentlyActive = item.active()\n item.active.set(false)\n\n if (lazy === false && !item.rendered()) {\n item.rendered.set(true)\n }\n\n if (item.animation() || item.rendered()) {\n if (currentlyActive) {\n if (activeIndex < currentActiveIndex) {\n item.animation.set(SlideAnimationState.RightOut)\n inAnimation = SlideAnimationState.LeftIn\n } else {\n item.animation.set(SlideAnimationState.LeftOut)\n inAnimation = SlideAnimationState.RightIn\n }\n } else {\n item.animation.set(SlideAnimationState.FastOut)\n }\n }\n }\n }\n\n if (activeItem) {\n if (inAnimation) {\n activeItem.animation.set(inAnimation)\n } else if (items.length === 1) {\n activeItem.animation.set(SlideAnimationState.FastIn)\n } else if (activeIndex < currentActiveIndex) {\n activeItem.animation.set(SlideAnimationState.LeftIn)\n } else {\n activeItem.animation.set(SlideAnimationState.RightIn)\n }\n activeItem.active.set(true)\n activeItem.rendered.set(true)\n }\n\n const preferredClamp = clamp(preferred, 0, items.length - 1)\n if (preferred !== preferredClamp) {\n this.preferred.set(preferredClamp)\n }\n\n this.changes.emit(this)\n })\n }\n\n onAnimationEvent(event: AnimationEvent, item: SlideDirective) {\n const isHiding = event.toState.endsWith(\"-out\")\n const isBegin = event.phaseName === \"start\"\n if (isBegin) {\n item.state.emit(isHiding ? SlideState.Hiding : SlideState.Showing)\n } else {\n item.state.emit(isHiding ? SlideState.Hidden : SlideState.Shown)\n }\n }\n}\n","import { NgTemplateOutlet } from \"@angular/common\"\nimport { ChangeDetectionStrategy, Component, computed, contentChild, linkedSignal, model, signal } from \"@angular/core\"\n\nimport { InfiniteSlideDirective } from \"./infinite-slide.directive\"\nimport { SlideDirective, SlideState } from \"./slide.directive\"\nimport { SlidingComponent } from \"./sliding.component\"\n\nexport type InfiniteSlideContext<T> = { $implicit: T }\n\nexport interface InfiniteSlideData<T> {\n position: -1 | 1\n data: T\n}\n\nclass Item<T> {\n readonly id: string\n readonly state = signal<SlideState>(SlideState.Pending)\n\n currentState = SlideState.Pending\n\n constructor(readonly data: T) {\n this.id = `${++uid}`\n }\n\n setState(state: SlideState): void {\n if (this.currentState !== state) {\n this.currentState = state\n this.state.set(state)\n }\n }\n}\n\nlet uid = 0\n\n/**\n * @example\n * ```html\n * <nu-infinite-sliding [data]=\"newSlide\">\n * <ng-template nuInfiniteSlide let-data>{{ data }}</ng-template>\n * </nu-infinite-sliding>\n * ```\n *\n * ```typescript\n * export class MyComponent {\n * readonly newSlide = signal<SlideData<string>>({ position: 1, data: \"Hello\" })\n *\n * addNewSlide() {\n * this.newSlide.set({ position: 1, data: \"World\" })\n * }\n * }\n * ```\n */\n@Component({\n selector: \"nu-infinite-sliding\",\n exportAs: \"nuInfiniteSliding\",\n imports: [SlidingComponent, SlideDirective, NgTemplateOutlet],\n template: `\n <nu-sliding [lazy]=\"true\" [preferred]=\"preferredIndex()\">\n @for (item of items(); track item.id) {\n <ng-template nuSlide (state)=\"item.setState($event)\">\n <ng-template\n [ngTemplateOutlet]=\"slide().tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: item.data }\"\n />\n </ng-template>\n }\n </nu-sliding>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InfiniteSlidingComponent<T = any> {\n readonly slide = contentChild.required(InfiniteSlideDirective)\n\n readonly data = model<InfiniteSlideData<T>>()\n\n readonly #items = linkedSignal<InfiniteSlideData<T> | undefined, Array<Item<T>>>({\n source: this.data,\n computation: (data, prev) => insertData(prev?.value ?? [], data)\n })\n\n readonly items = computed(() => this.#items().filter(item => item.state() !== SlideState.Hidden))\n\n readonly preferredIndex = linkedSignal<number, number>({\n source: computed(() => this.items().findIndex(item => item.state() === SlideState.Pending)),\n computation: (index, prev) => (index > -1 ? index : prev?.value ?? 0)\n })\n\n push(data: T) {\n this.data.set({ position: 1, data })\n }\n unshift(data: T) {\n this.data.set({ position: -1, data })\n }\n}\n\nfunction insertData<T>(list: Array<Item<T>>, slideData: InfiniteSlideData<T> | undefined): Array<Item<T>> {\n if (slideData == null) {\n return list\n }\n\n const { position, data } = slideData\n if (position === -1) {\n return [new Item(data), ...list]\n } else {\n return [...list, new Item(data)]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAWA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAU;AACrD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU;AAQhD,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;MAEhC,MAAM,CAAA;IACf,OAAO,MAAM,CAAC,KAAiB,EAAA;AAC3B,QAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AAChD,QAAA,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AAElD,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAA,CAAE,CAAC;;AAGnD,QAAA,OAAO,IAAI,MAAM,CAAC,CAAQ,EAAE,CAAQ,CAAC;;IAGzC,WACoB,CAAA,CAAa,EACb,CAAe,EAAA;QADf,IAAC,CAAA,CAAA,GAAD,CAAC;QACD,IAAC,CAAA,CAAA,GAAD,CAAC;;IAGrB,YAAY,CAAC,cAAoC,aAAa,EAAA;QAC1D,OAAO,CAAA,EAAG,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAI,CAAA,EAAA,WAAW,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAE;;AAG1G,IAAA,IAAI,CAAC,KAAa,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;;AAEtD;MAEY,OAAO,CAAA;IAChB,OAAO,MAAM,CAAC,KAA4B,EAAA;AACtC,QAAA,IAAI,KAAK,YAAY,OAAO,EAAE;AAC1B,YAAA,OAAO,KAAK;;aACT;AACH,YAAA,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;;;AAOjC,IAAA,WAAA,CAAY,KAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;;AAGzC,IAAA,IAAI,CAAC,KAAc,EAAA;AACf,QAAA,IAAI,KAAK,YAAY,OAAO,EAAE;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjC,YAAA,IAAI,SAAS,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE;AAC9D,gBAAA,OAAO,KAAK;;AAGhB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAErD,YAAA,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;AAC1D,gBAAA,OAAO,IAAI;;;AAGnB,QAAA,OAAO,KAAK;;IAGhB,YAAY,CAAC,cAAoC,aAAa,EAAA;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,QAAA,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,EAAE;AACzE,QAAA,OAAO,CAAG,EAAA,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;;IAG/E,QAAQ,GAAA;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAEnC,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;;IAGtG,gBAAgB,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC5B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE;;YAE5B,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;AACnB,gBAAA,OAAO,UAAU;;AAGrB,YAAA,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,OAAO,UAAU;;AACd,iBAAA,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,OAAO,YAAY;;;aAEpB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,OAAO,YAAY;;aAChB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,YAAA,OAAO,UAAU;;AAGrB,QAAA,OAAO,UAAU;;AAExB;AAED,SAAS,KAAK,CAAC,KAAU,EAAA;IACrB,MAAM,KAAK,GAAkB,EAAE;AAE/B,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;;AAEjC,SAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,QAAA,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;YACtB,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;AAEjC,SAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAA,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;AAE3B,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAA,CAAE,CAAC;;AAG1E,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,CAAA,CAAE,CAAC;;AAGtE,QAAA,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACtC,QAAA,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAS,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAS,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAS,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAS,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAS,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAS,CAAC,CAAC;AAEnF,QAAA,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE;AACpC,YAAA,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE;AACpC,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;;;;AAGzD,SAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC5B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGpC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,QAAA,MAAM,KAAK,CAAC,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,CAAG,CAAC;;AAG/C,IAAA,OAAO,KAAK;AAChB;;MC/Ja,OAAO,CAAA;AACP,IAAA,KAAK;AAqBd,IAAA,WAAA,CAA4B,MAAS,EAAA;QAAT,IAAM,CAAA,MAAA,GAAN,MAAM;AArBzB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAEvC,IAAK,CAAA,KAAA,GAA+B,IAAI,CAAC,KAAK,CAAC,IAAI,CACxD,GAAG,CAAC,IAAI,IAAG;YACP,MAAM,GAAG,GAAmB,EAAE;AAE9B,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;oBACX;;AAGJ,gBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3C,gBAAA,GAAG,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,UAAU,CAAqB,EAAA,CAAA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;AACzF,gBAAA,GAAG,CAAC,CAAK,EAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAA,EAAI,QAAQ,CAAI,CAAA,EAAA,UAAU,CAAqB,EAAA,CAAA,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;;AAG9F,YAAA,OAAO,GAAG;AACd,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACjB;;AAGJ;;MC1BY,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8GAFtB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA,CAAA,CAAA;;2FAE5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,oBAAoB,EAAA,QAAA,EACpB,kBAAkB,EAAA,QAAA,EAElB,CAA2B,yBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wLAAA,CAAA,EAAA;;;MCI5B,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;AASa,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE;AACtC;8GAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,oSAFvB,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,saAAA,CAAA,EAAA,CAAA,CAAA;;2FAEH,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACzB,IAAA,EAAA;AACF,wBAAA,cAAc,EAAE;AACnB,qBAAA,EAAA,QAAA,EAES,CAAE,CAAA,EAAA,MAAA,EAAA,CAAA,saAAA,CAAA,EAAA;;;ACMhB,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;MAgBlC,qBAAqB,CAAA;AAdlC,IAAA,WAAA,GAAA;AAea,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACtC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;;AAEjE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,OAAO,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA4B,SAAS,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,CAAC;AAErC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;AAC/C,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,MAAM,KAAK,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAE7D,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EACnE,kBAAkB,EAAE,CACvB;AACQ,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;YAC5B,IAAI,CAAC,GAAG,EAAE;AACN,gBAAA,OAAO,CAAC;;AAEZ,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK;AAClE,SAAC,CAAC;AAwBL;AAxDY,IAAA,WAAW;;;;;;;;;;;;;IAiDpB,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGzB,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;;8GAvDjB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAmB2B,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBzD,CAAoD,kDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8hDAAA,CAAA,EAAA,CAAA,CAAA;;2FAErD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAClB,gBAAgB,EACpB,IAAA,EAAA;AACF,wBAAA,mBAAmB,EAAE,YAAY;AACjC,wBAAA,gCAAgC,EAAE,eAAe;AACjD,wBAAA,cAAc,EAAE,iCAAiC;AACjD,wBAAA,eAAe,EAAE,UAAU;AAC3B,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,aAAa,EAAE;AAClB,qBAAA,EAAA,QAAA,EAES,CAAoD,kDAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8hDAAA,CAAA,EAAA;;;MCJrD,sBAAsB,CAAA;AAVnC,IAAA,WAAA,GAAA;AAWI;;AAEG;;AAGM,QAAA,IAAA,CAAA,MAAM,GAAG,eAAe,CAAC,qBAAqB,CAAC;AAE/C,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AAC1E,SAAC,CAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;AACrC,YAAA,OAAO,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,KAAK;AAC/D,SAAC,CAAC;AAQL;IANG,sBAAsB,GAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE;QAC1C,IAAI,WAAW,EAAE;YACb,WAAW,CAAC,KAAK,EAAE;;;8GArBlB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAMG,qBAAqB,EAX7C,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAOzB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,YACZ,WAAW,EAAA,OAAA,EACZ,CAAC,wBAAwB,CAAC,EAEzB,QAAA,EAAA;;;AAGT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA;;;ACdL,MAAM,OAAO,GAAG,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;MAM3E,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,OAAA,EAAA,CANX,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAAtE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAM1E,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACqBD,MAAM,UAAU,GAAG,2CAA2C;MAEjD,OAAO,CAAA;IAMhB,WACI,CAAA,IAAa,EACG,GAAY,EAAA;QAAZ,IAAG,CAAA,GAAA,GAAH,GAAG;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAA,CAAE,CAAC;;aAC7C;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAQ;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ;AAC3D,YAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAW;;;IAIpC,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AACrB,QAAA,IAAkC,CAAC,OAAO,GAAG,SAAS;;AAE/D;AAOD;;;;;;;;;;;;;;AAcG;AAEG,MAAO,YAAqC,SAAQ,YAAY,CAAA;AAClE,IAAA,OAAO,GAAG,IAAI,OAAO,EAAgB;AAErC,IAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACxB,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;AACpB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC;AAC7D,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG;;iBACvB;AACH,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;;AAExB,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC;AAC7D,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACZ,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;AAGhC,QAAA,OAAO,OAAO;KACjB,EAAE,EAAkB,CAAC,EACtB,GAAG,CAAC,OAAO,IAAG;QACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AACnB,gBAAA,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;;iBACrB;gBACH,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;;AAE3C,SAAC,CAAC;AACN,KAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACjB;AAED,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;AAEP,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE;;AAGzC,IAAA,MAAM,CAAC,GAAe,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;;AAG3C,IAAA,MAAM,CAAC,GAAe,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;;IAG3C,SAAS,GAAkD,EAAS;AAEpE,IAAA,KAAK,CAAC,IAAO,EAAA;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAA,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;aAC7C;AACH,YAAA,OAAO,QAAQ;;;AAIvB,IAAA,MAAM,CAAC,IAAO,EAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACrB,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAC5D,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACrB,wBAAA,OAAO,KAAK;;;AAGpB,gBAAA,OAAO,IAAI;;iBACR;AACH,gBAAA,OAAO,KAAK;;AAEpB,SAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACV,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACjB;;8GA5EI,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;MAkFqB,aAAa,CAAA;AADnC,IAAA,WAAA,GAAA;AAGuB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,EAAC,WAAc,EAAC;AAyBlD;IAvBG,IAAI,IAAI,CAAC,IAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AAEjB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGtC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAG1C,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;;AAErB,IAAA,KAAK;AACL,IAAA,QAAQ;IAER,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;;8GAxBxB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;AA+BK,MAAgB,mBAAsC,SAAQ,YAAY,CAAA;IAK5E,IAAI,IAAI,CAAC,IAAc,EAAA;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAG7B,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;;AAE3B,IAAA,KAAK;AAEL,IAAA,MAAM;AAUN,IAAA,MAAM;AAEN,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AA1BQ,QAAA,IAAA,CAAA,GAAG,GAAqB,MAAM,CAAC,gBAAgB,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAa,MAAM,CAAC,QAAQ,CAAC;AAUxD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAW,IAAI,CAAC;QAE3C,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,SAAS,CAAC,IAAI,IAAG;YACb,IAAI,IAAI,EAAE;gBACN,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;;iBAC5B;AACH,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;SAEpB,CAAC,CACL;QAED,IAAM,CAAA,MAAA,GAAwB,EAAE;AAWhC,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAA0B,KAAI;AAC/C,YAAA,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAE7D,YAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACpB,CAAC,CAAC,OAAO,EAAE;gBACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,gBAAA,IAAI,GAAG,IAAI,CAAC,EAAE;oBACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;;AAIlC,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;gBAC5C,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3C,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AAClD,oBAAA,IAAI,UAAU,KAAK,GAAG,EAAE;wBACpB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;;;qBAEpC;oBACH;AAAE,oBAAA,KAAkC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACxF,wBAAA,KAAK,EAAE,GAAG;wBACV,QAAQ,EAAE,IAAI,CAAC;AAClB,qBAAA,CAAC;AACF,oBAAA,KAAK,CAAC,OAAQ,CAAC,YAAY,EAAE;;AAEjC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE/B,SAAC;AAlCG,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAG3C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAG7D,IAAA,iBAAiB;AA6BjB,IAAA,iBAAiB,CAAC,OAA0B,EAAA;QACxC,MAAM,IAAI,GAAyC,EAAE;QACrD,IAAI,MAAM,GAAsB,EAAE;QAClC,MAAM,SAAS,GAAsB,EAAE;AAEvC,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;;qBACrB;oBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;iBAE3B;AACH,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;;QAI7B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;AAG7C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9B,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAI5B,QAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;;IAGhC,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;8GAlGF,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC;;;AC/LD;MAKa,sBAAsB,CAAA;AAJnC,IAAA,WAAA,GAAA;AAKa,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;MCiBY,cAAc,CAAA;AASvB,IAAA,WAAA,GAAA;AARS,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA6B,IAAI,CAAC;QACpD,IAAS,CAAA,SAAA,GAAG,MAAM,EAAW;QAC7B,IAAK,CAAA,KAAA,GAAG,MAAM,EAAc;QAGjC,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACtC,SAAC,CAAC;;8GAZG,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACZD,MAAM,QAAQ,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AAElE,MAAM,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAA,CAAE;MAwEvC,gBAAgB,CAAA;AAiCzB,IAAA,WAAA,GAAA;AAhCA;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC;AAEhD;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAE3B;;AAEG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;AAE7B;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,OAAO,CAAC,CAAC;;AAEb,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,SAAC,CAAC;AAEF;;AAEG;QACM,IAAO,CAAA,OAAA,GAAG,MAAM,EAAoB;QAGzC,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AACjE,YAAA,IAAI,WAAW,KAAK,kBAAkB,EAAE;gBACpC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC9B;;;AAIR,YAAA,IAAI,UAAsC;YAC1C,IAAI,WAAW,GAA+B,IAAI;AAElD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,gBAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,WAAW;gBAElC,IAAI,QAAQ,EAAE;oBACV,UAAU,GAAG,IAAI;;qBACd;AACH,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;oBAEtB,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpC,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;oBAG3B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACrC,IAAI,eAAe,EAAE;AACjB,4BAAA,IAAI,WAAW,GAAG,kBAAkB,EAAE;AAClC,gCAAA,IAAI,CAAC,SAAS,CAAC,GAAG,gDAA8B;AAChD,gCAAA,WAAW;;iCACR;AACH,gCAAA,IAAI,CAAC,SAAS,CAAC,GAAG,8CAA6B;AAC/C,gCAAA,WAAW;;;6BAEZ;AACH,4BAAA,IAAI,CAAC,SAAS,CAAC,GAAG,8CAA6B;;;;;YAM/D,IAAI,UAAU,EAAE;gBACZ,IAAI,WAAW,EAAE;AACb,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;;AAClC,qBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,4CAA4B;;AACjD,qBAAA,IAAI,WAAW,GAAG,kBAAkB,EAAE;AACzC,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,4CAA4B;;qBACjD;AACH,oBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,8CAA6B;;AAEzD,gBAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,gBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGjC,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,YAAA,IAAI,SAAS,KAAK,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;;AAGtC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,SAAC,CAAC;;IAGN,gBAAgB,CAAC,KAAqB,EAAE,IAAoB,EAAA;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,KAAK,OAAO;QAC3C,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAqB,CAAA,2BAAoB,CAAA,0BAAC;;aAC/D;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAqB,CAAA,2BAAkB,CAAA,wBAAC;;;8GA5G/D,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAIQ,cAAc,EArBrC,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlES,YAAY,EAsBV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,SAAS,EAAE;AACf,gBAAA,KAAK,+CAA8B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC3G,gBAAA,KAAK,+CAA8B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC3G,gBAAA,KAAK,iDAA+B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3G,gBAAA,KAAK,6CAA6B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAC3G,gBAAA,KAAK,6CAA6B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAC3G,gBAAA,KAAK,+CAED,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAC3E;AACD,gBAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,UAA2B,mCAAA,CAAE,EAAE;AAC9C,oBAAA,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;oBAC9D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;iBAC1D,CAAC;AACF,gBAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,WAA4B,oCAAA,CAAE,EAAE;AAC/C,oBAAA,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;oBAC9D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;iBACzD,CAAC;AACF,gBAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,SAA0B,kCAAA,CAAE,EAAE;AAC7C,oBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oBAC5E,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;iBACtD,CAAC;AACF,gBAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,UAA2B,mCAAA,CAAE,EAAE;AAC9C,oBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;oBAC3E,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;iBACvD;aACJ;AACJ,SAAA,EAAA,CAAA,CAAA;;2FAkBQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtE5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACb,OAAA,EAAA,CAAC,YAAY,CAAC,EAsBX,UAAA,EAAA;wBACR,OAAO,CAAC,SAAS,EAAE;AACf,4BAAA,KAAK,+CAA8B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC3G,4BAAA,KAAK,+CAA8B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC3G,4BAAA,KAAK,iDAA+B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3G,4BAAA,KAAK,6CAA6B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAC3G,4BAAA,KAAK,6CAA6B,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAC3G,4BAAA,KAAK,+CAED,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAC3E;AACD,4BAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,UAA2B,mCAAA,CAAE,EAAE;AAC9C,gCAAA,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;gCAC9D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;6BAC1D,CAAC;AACF,4BAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,WAA4B,oCAAA,CAAE,EAAE;AAC/C,gCAAA,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;gCAC9D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;6BACzD,CAAC;AACF,4BAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,SAA0B,kCAAA,CAAE,EAAE;AAC7C,gCAAA,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;gCAC5E,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;6BACtD,CAAC;AACF,4BAAA,UAAU,CAAC,CAAA,KAAA,EAAQ,UAA2B,mCAAA,CAAE,EAAE;AAC9C,gCAAA,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;gCAC3E,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;6BACvD;yBACJ;qBACJ,EACS,QAAA,EAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4OAAA,CAAA,EAAA;;;ACpEL,MAAM,IAAI,CAAA;AAMN,IAAA,WAAA,CAAqB,IAAO,EAAA;QAAP,IAAI,CAAA,IAAA,GAAJ,IAAI;QAJhB,IAAK,CAAA,KAAA,GAAG,MAAM,CAAA,CAAA,0BAAgC;AAEvD,QAAA,IAAA,CAAA,YAAY,GAAqB,CAAA;AAG7B,QAAA,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE;;AAGxB,IAAA,QAAQ,CAAC,KAAiB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;AAGhC;AAED,IAAI,GAAG,GAAG,CAAC;AAEX;;;;;;;;;;;;;;;;;AAiBG;MAmBU,wBAAwB,CAAA;AAlBrC,IAAA,WAAA,GAAA;AAmBa,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAErD,IAAI,CAAA,IAAA,GAAG,KAAK,EAAwB;QAEpC,IAAM,CAAA,MAAA,GAAG,YAAY,CAAmD;YAC7E,MAAM,EAAE,IAAI,CAAC,IAAI;AACjB,YAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI;AAClE,SAAA,CAAC;QAEO,IAAK,CAAA,KAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAA,CAAA,yBAAuB,CAAC;QAExF,IAAc,CAAA,cAAA,GAAG,YAAY,CAAiB;YACnD,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAuB,CAAA,0BAAC,CAAC;YAC3F,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC;AACvE,SAAA,CAAC;AAQL;AAlBY,IAAA,MAAM;AAYf,IAAA,IAAI,CAAC,IAAO,EAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;;AAExC,IAAA,OAAO,CAAC,IAAO,EAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;;8GArBhC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACM,sBAAsB,EAfnD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;AAWT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAZS,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAenD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAlBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,CAAC;AAC7D,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;AA0BD,SAAS,UAAU,CAAI,IAAoB,EAAE,SAA2C,EAAA;AACpF,IAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACnB,QAAA,OAAO,IAAI;;AAGf,IAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS;AACpC,IAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;QACjB,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;;SAC7B;QACH,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;;AAExC;;AC1GA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-backdrop.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/services/slots.service.ts","../../../../packages/layout/src/sliding/infinite-slide.directive.ts","../../../../packages/layout/src/sliding/slide.directive.ts","../../../../packages/layout/src/sliding/sliding.component.ts","../../../../packages/layout/src/sliding/infinite-sliding.component.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * ----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGHT |\n * ----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\nimport { Rect } from \"@ngutil/style\"\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = (typeof vertical)[number]\nexport type L9Horizontal = (typeof horizontal)[number]\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}` | `${L9Horizontal}:${L9Vertical}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\"\n\nexport const L9GridTopLeft = { row: 1, col: 1 }\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v1, v2] = value.split(\":\")\n const v = vertical.includes(v1 as any) ? v1 : v2\n const h = horizontal.includes(v1 as any) ? v1 : v2\n\n if (v === h) {\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n return new L9Cell(v as any, h as any)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n\n intoGridArea(gridTopLeft: typeof L9GridTopLeft = L9GridTopLeft) {\n return `${gridTopLeft.row + vertical.indexOf(this.v)}/${gridTopLeft.col + horizontal.indexOf(this.h)}`\n }\n\n isEq(other: L9Cell) {\n return this.v === other.v && this.h === other.h\n }\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n intoGridArea(gridTopLeft: typeof L9GridTopLeft = L9GridTopLeft) {\n const start = this.cells[0]\n const end = this.cells[this.cells.length - 1]\n const endTopLeft = { row: gridTopLeft.row + 1, col: gridTopLeft.col + 1 }\n return `${start.intoGridArea(gridTopLeft)}/${end.intoGridArea(endTopLeft)}`\n }\n\n intoRect(): Rect {\n const start = this.cells[0]\n const end = this.cells[this.cells.length - 1]\n const x = horizontal.indexOf(start.h)\n const y = vertical.indexOf(start.v)\n\n return { x, y, width: horizontal.indexOf(end.h) - x + 1, height: vertical.indexOf(end.v) - y + 1 }\n }\n\n #determineOrient(): L9Orient {\n const rect = this.intoRect()\n if (rect.width === rect.height) {\n // corner\n if (rect.x === rect.y) {\n return \"vertical\"\n }\n\n if (rect.x === 0 || rect.x === 2) {\n return \"vertical\"\n } else if (rect.y === 0 || rect.y === 2) {\n return \"horizontal\"\n }\n } else if (rect.width > rect.height) {\n return \"horizontal\"\n } else if (rect.height > rect.width) {\n return \"vertical\"\n }\n\n return \"vertical\"\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { type Dimension } from \"@ngutil/style\"\n\nimport { L9CellName, L9Horizontal, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n selector: \"nu-docking-content\",\n exportAs: \"nuDockingContent\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent { }\n","import { Component, input } from \"@angular/core\"\n\n@Component({\n selector: \"nu-docking-backdrop\",\n host: {\n \"[attr.state]\": \"visible() ? 'visible' : 'hidden'\"\n },\n styleUrl: \"./docking-backdrop.component.scss\",\n template: ``\n})\nexport class DockingBackdropComponent {\n readonly visible = input.required()\n}\n","import { Component, computed, ElementRef, inject, input, model, viewChild } from \"@angular/core\"\nimport { takeUntilDestroyed, toObservable, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { switchMap } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\nexport type BackdropMode = boolean | \"full\" | \"panel-size\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\n\n@Component({\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n host: {\n \"[style.grid-area]\": \"gridArea()\",\n \"[style.--nudp-content-size.px]\": \"contentSize()\",\n \"[attr.state]\": \"_opened() ? 'opened' : 'closed'\",\n \"[attr.orient]\": \"orient()\",\n \"[attr.side]\": \"side()\",\n \"[attr.mode]\": \"mode()\"\n },\n styleUrl: \"./docking-panel.component.scss\",\n template: `<div class=\"wrapper\" #content><ng-content /></div>`\n})\nexport class DockingPanelComponent {\n readonly #dimWatcher = inject(DimensionWatcher)\n readonly el = inject(ElementRef)\n\n readonly position = input(DEFAULT_POSITION, { transform: L9Range.coerce })\n // TODO: linkedSignal\n readonly opened = model<boolean>(false)\n readonly _opened = computed(() => coerceBoolAttr(this.opened()))\n readonly mode = input<DockingPanelMode>(\"rigid\")\n readonly maxSize = input<number | undefined | null>(undefined)\n readonly backdrop = input<BackdropMode>(false)\n\n readonly gridArea = computed(() => this.position().intoGridArea())\n readonly orient = computed(() => this.position().orient)\n readonly side = computed(() => {\n const pos = this.position()\n return pos.orient === \"horizontal\" ? pos.cells[0].v : pos.cells[0].h\n })\n\n readonly content = viewChild.required(\"content\", { read: ElementRef })\n\n readonly dimension$ = toObservable(this.content).pipe(\n switchMap(content => this.#dimWatcher.watch(content, \"border-box\")),\n takeUntilDestroyed()\n )\n readonly dimension = toSignal(this.dimension$)\n\n readonly contentSize = computed(() => {\n const dim = this.dimension()\n if (!dim) {\n return 0\n }\n return this.orient() === \"horizontal\" ? dim.height : dim.width\n })\n\n // readonly backdropSize = computed(() => {\n // const mode = this.backdrop()\n // if (mode === true || mode === \"full\") {\n // return L9Range.coerce(\"top:left-bottom:right\").intoGridArea()\n // } else if (mode === \"panel-size\") {\n // const pos = this.position()\n // if (pos.orient === \"horizontal\") {\n\n // }\n\n // return \"\"\n // }\n // return null\n // })\n\n open() {\n this.opened.set(true)\n }\n\n close() {\n this.opened.set(false)\n }\n}\n","import { Component, computed, contentChildren } from \"@angular/core\"\n\nimport { DockingBackdropComponent } from \"./docking-backdrop.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\n@Component({\n selector: \"nu-docking\",\n exportAs: \"nuDocking\",\n imports: [DockingBackdropComponent],\n styleUrl: \"./docking-layout.component.scss\",\n template: `\n <ng-content />\n <nu-docking-backdrop [visible]=\"backdropVisible()\" (click)=\"doCloseActiveOverPanel()\"></nu-docking-backdrop>\n `\n})\nexport class DockingLayoutComponent {\n /**\n * True if u want to animate panel open/close with `mode=\"side\"`\n */\n // readonly animateSide = input(false)\n\n readonly panels = contentChildren(DockingPanelComponent)\n\n readonly activeOverPanel = computed(() => {\n const panels = this.panels()\n return panels.find(panel => panel.mode() === \"over\" && panel.opened())\n })\n\n readonly backdropVisible = computed(() => {\n const active = this.activeOverPanel()\n return active != null ? active.backdrop() !== false : false\n })\n\n doCloseActiveOverPanel() {\n const activePanel = this.activeOverPanel()\n if (activePanel) {\n activePanel.close()\n }\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injectable,\n Injector,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\"\n\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n map,\n Observable,\n of,\n scan,\n shareReplay,\n Subject,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { Destructible, IDisposable } from \"@ngutil/common\"\n\ntype SlotOrder = `:${number}`\ntype SlotId = ` as ${string}`\nexport type Slot<T extends string> = `${T}${SlotOrder | \"\"}${SlotId | \"\"}`\nexport type SlotTpl = TemplateRef<any>\nexport type SlotViewRef = EmbeddedViewRef<any>\n\nconst SLOT_REGEX = /^([^:\\s]+)(?::(\\d+))?(?:\\s+as\\s+(.*?))?$/i\n\nexport class SlotDef<T extends string> implements IDisposable {\n readonly slot!: T\n readonly order!: number\n readonly id?: string\n readonly viewRef?: SlotViewRef\n\n constructor(\n slot: Slot<T>,\n public readonly tpl: SlotTpl\n ) {\n const match = slot.match(SLOT_REGEX)\n if (!match) {\n console.warn(`Invalid slot definition: ${slot}`)\n } else {\n this.slot = match[1] as any\n this.order = match[2] != null ? Number(match[2]) : Infinity\n this.id = match[3] as string\n }\n }\n\n dispose(): void {\n this.viewRef?.destroy()\n ;(this as { viewRef?: SlotViewRef }).viewRef = undefined\n }\n}\n\nexport interface SlotEvent<T extends string> {\n type: \"add\" | \"del\"\n def: SlotDef<T>\n}\n\n/**\n * @Directive({selector: \"ng-template[xyzSlot]\", inputs: [{name: \"slot\", alias: \"xyzSlot\"}]})\n * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }\n *\n * @Directive({selector: \"ng-template[xyzSlotOutlet]\", inputs: [{name: \"slot\", alias: \"xyzSlotOutlet\"}]})\n * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }\n *\n *\n * @Component({provides: [SlotsService]})\n * class XYZComponent {\n * slots: inject(SlotsService<XYZComponentSlots>)\n * }\n *\n *\n */\n@Injectable()\nexport class SlotsService<T extends string = any> extends Destructible {\n #events = new Subject<SlotEvent<T>>()\n\n #entries = this.#events.pipe(\n scan((entries, event) => {\n if (event.type === \"add\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries[index] = event.def\n } else {\n entries.push(event.def)\n }\n } else if (event.type === \"del\") {\n const index = entries.findIndex(value => value === event.def)\n if (index > -1) {\n entries.splice(index, 1)\n }\n }\n return entries\n }, [] as SlotDef<T>[]),\n tap(entries => {\n entries.sort((a, b) => {\n if (a.slot === b.slot) {\n return a.order - b.order\n } else {\n return a.slot.localeCompare(b.slot)\n }\n })\n }),\n shareReplay(1)\n )\n\n constructor() {\n super()\n // XXX: need to collect entries from the beginning\n this.d.sub(this.#entries).subscribe()\n }\n\n addTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"add\", def })\n }\n\n delTpl(def: SlotDef<T>) {\n this.#events.next({ type: \"del\", def })\n }\n\n #watchers: { [key in T]: Observable<Array<SlotDef<T>>> } = {} as any\n\n watch(slot: T) {\n const existing = this.#watchers[slot]\n if (existing == null) {\n return (this.#watchers[slot] = this.#watch(slot))\n } else {\n return existing\n }\n }\n\n #watch(slot: T) {\n return this.#entries.pipe(\n map(entries => entries.filter(entry => entry.slot === slot)),\n distinctUntilChanged((prev, curr) => {\n if (prev.length === curr.length) {\n for (let i = 0; i < prev.length; i++) {\n if (prev[i] !== curr[i]) {\n return false\n }\n }\n return true\n } else {\n return false\n }\n }),\n finalize(() => {\n delete this.#watchers[slot]\n }),\n shareReplay(1)\n )\n }\n}\n\n@Directive()\nexport abstract class SlotDirective<T extends string, C = any> implements OnDestroy {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly tpl = inject(TemplateRef<C>)\n\n set slot(slot: Slot<T>) {\n if (this.#slot !== slot) {\n this.#slot = slot\n\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n\n this.#slotDef = new SlotDef<T>(slot, this.tpl)\n this.slotSvc.addTpl(this.#slotDef)\n }\n }\n get slot() {\n return this.#slot\n }\n #slot!: Slot<T>\n #slotDef?: SlotDef<T>\n\n ngOnDestroy(): void {\n if (this.#slotDef) {\n this.slotSvc.delTpl(this.#slotDef)\n }\n }\n}\n\n@Directive()\nexport abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {\n protected abstract readonly slotSvc: SlotsService<T>\n protected readonly vcr: ViewContainerRef = inject(ViewContainerRef)\n protected readonly injector: Injector = inject(Injector)\n\n set slot(slot: T | null) {\n if (this.#slot.value !== slot) {\n this.#slot.next(slot)\n }\n }\n get slot() {\n return this.#slot.value\n }\n #slot = new BehaviorSubject<T | null>(null)\n\n #watch = this.#slot.pipe(\n switchMap(slot => {\n if (slot) {\n return this.slotSvc.watch(slot)\n } else {\n return of([])\n }\n })\n )\n\n #views: Array<SlotDef<any>> = []\n\n constructor() {\n super()\n this.d.any(this.#clearViews.bind(this))\n }\n\n ngOnInit(): void {\n this.d.sub(this.#watch).subscribe(this.#onEntriesChanged)\n }\n\n #onEntriesChanged = (entries: Array<SlotDef<T>>) => {\n const { remove, undecided } = this.#determineActions(entries)\n\n for (const r of remove) {\n r.dispose()\n const idx = this.#views.indexOf(r)\n if (idx >= 0) {\n this.#views.splice(idx, 1)\n }\n }\n\n this.#views.length = 0\n for (const [pos, entry] of undecided.entries()) {\n if (entry.viewRef && !entry.viewRef.destroyed) {\n const currentPos = this.vcr.indexOf(entry.viewRef)\n if (currentPos !== pos) {\n this.vcr.insert(entry.viewRef, pos)\n }\n } else {\n ;(entry as { viewRef: SlotViewRef }).viewRef = this.vcr.createEmbeddedView(entry.tpl, null, {\n index: pos,\n injector: this.injector\n })\n entry.viewRef!.markForCheck()\n }\n this.#views.push(entry)\n }\n }\n\n #determineActions(entries: Array<SlotDef<T>>) {\n const byId: { [key: string]: Array<SlotDef<T>> } = {}\n let remove: Array<SlotDef<T>> = []\n const undecided: Array<SlotDef<T>> = []\n\n for (const entry of entries) {\n if (entry.id != null) {\n if (!byId[entry.id]) {\n byId[entry.id] = [entry]\n } else {\n byId[entry.id].push(entry)\n }\n } else {\n undecided.push(entry)\n }\n }\n\n for (const values of Object.values(byId)) {\n remove = remove.concat(values.slice(0, -1))\n undecided.push(values[values.length - 1])\n }\n\n for (const current of this.#views) {\n if (!undecided.includes(current)) {\n remove.push(current)\n }\n }\n\n return { remove, undecided }\n }\n\n #clearViews() {\n this.vcr.clear()\n this.#views = []\n }\n}\n","import { Directive, inject, TemplateRef } from \"@angular/core\"\n\n// TODO: remove old variant: nuInfiniteSlidingItem\n@Directive({\n selector: \"ng-template[nuInfiniteSlide]\",\n exportAs: \"nuInfiniteSlide\"\n})\nexport class InfiniteSlideDirective {\n readonly tpl = inject(TemplateRef)\n}\n","import { Directive, effect, inject, output, signal, TemplateRef } from \"@angular/core\"\n\nexport const enum SlideAnimationState {\n LeftIn = \"left-in\",\n LeftOut = \"left-out\",\n RightIn = \"right-in\",\n RightOut = \"right-out\",\n FastOut = \"fast-out\",\n FastIn = \"fast-in\"\n}\n\nexport const enum SlideState {\n Pending = 0,\n Showing = 1,\n Shown = 2,\n Hiding = 3,\n Hidden = 4\n}\n\n@Directive({\n selector: \"ng-template[nuSlide]\",\n exportAs: \"nuSlide\"\n})\nexport class SlideDirective {\n readonly tpl = inject(TemplateRef)\n\n readonly rendered = signal(false)\n readonly active = signal(false)\n readonly animation = signal<SlideAnimationState | null>(null)\n readonly activated = output<boolean>()\n readonly state = output<SlideState>()\n\n constructor() {\n effect(() => {\n this.activated.emit(this.active())\n })\n }\n}\n","import { animate, AnimationEvent, state, style, transition, trigger } from \"@angular/animations\"\nimport { CommonModule } from \"@angular/common\"\nimport { Component, computed, contentChildren, effect, input, model, output } from \"@angular/core\"\n\nimport { clamp } from \"es-toolkit\"\n\nimport { Duration, Ease } from \"@ngutil/style\"\n\nimport { SlideAnimationState, SlideDirective, SlideState } from \"./slide.directive\"\n\nconst absolute = { position: \"absolute\", top: \"0px\", left: \"0px\" }\n\nconst anim = `${Duration.Fast} ${Ease.Acceleration}`\n\n@Component({\n selector: \"nu-sliding\",\n imports: [CommonModule],\n styles: `\n :host {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr;\n overflow: hidden;\n position: relative;\n\n .nu-slide {\n grid-column: 1;\n grid-row: 1;\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n position: relative;\n\n overflow: hidden;\n }\n }\n `,\n animations: [\n trigger(\"animate\", [\n state(SlideAnimationState.FastOut, style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\" })),\n state(SlideAnimationState.LeftOut, style({ display: \"none\", ...absolute, transform: \"translateX(-100%)\" })),\n state(SlideAnimationState.RightOut, style({ display: \"none\", ...absolute, transform: \"translateX(100%)\" })),\n state(SlideAnimationState.FastIn, style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })),\n state(SlideAnimationState.LeftIn, style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })),\n state(\n SlideAnimationState.RightIn,\n style({ display: \"\", position: \"relative\", transform: \"translateX(0)\" })\n ),\n transition(`* => ${SlideAnimationState.LeftOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\" }),\n animate(anim, style({ transform: \"translateX(-100%)\" }))\n ]),\n transition(`* => ${SlideAnimationState.RightOut}`, [\n style({ width: \"*\", ...absolute, transform: \"translateX(0)\" }),\n animate(anim, style({ transform: \"translateX(100%)\" }))\n ]),\n transition(`* => ${SlideAnimationState.LeftIn}`, [\n style({ display: \"\", position: \"relative\", transform: \"translateX(-100%)\" }),\n animate(anim, style({ transform: \"translateX(0)\" }))\n ]),\n transition(`* => ${SlideAnimationState.RightIn}`, [\n style({ display: \"\", position: \"relative\", transform: \"translateX(100%)\" }),\n animate(anim, style({ transform: \"translateX(0%)\" }))\n ])\n ])\n ],\n template: `\n @if (items(); as _items) {\n @for (item of _items; track item; let index = $index) {\n @if (item.rendered()) {\n <div\n class=\"nu-slide\"\n [@animate]=\"item.animation()\"\n (@animate.start)=\"onAnimationEvent($event, item)\"\n (@animate.done)=\"onAnimationEvent($event, item)\"\n >\n <ng-template [ngTemplateOutlet]=\"item.tpl\" />\n </div>\n }\n }\n }\n `\n})\nexport class SlidingComponent {\n /**\n * List of items\n */\n readonly items = contentChildren(SlideDirective)\n\n /**\n * Lazily rendering items\n */\n readonly lazy = input(true)\n\n /**\n * Index of the preferred item\n */\n readonly preferred = model(0)\n\n /**\n * Index of the active item\n */\n readonly active = computed(() => {\n const items = this.items()\n if (items.length === 0) {\n return -1\n }\n const index = this.preferred()\n return clamp(index, 0, items.length - 1)\n })\n\n /**\n * Changes of the active item\n */\n readonly changes = output<SlidingComponent>()\n\n constructor() {\n effect(() => {\n const activeIndex = this.active()\n const items = this.items()\n const lazy = this.lazy()\n const preferred = this.preferred()\n const currentActiveIndex = items.findIndex(item => item.active())\n if (activeIndex === currentActiveIndex) {\n if (items[activeIndex]?.active()) {\n return\n }\n }\n\n let activeItem: SlideDirective | undefined\n let inAnimation: SlideAnimationState | null = null\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const isActive = i === activeIndex\n\n if (isActive) {\n activeItem = item\n } else {\n const currentlyActive = item.active()\n item.active.set(false)\n\n if (lazy === false && !item.rendered()) {\n item.rendered.set(true)\n }\n\n if (item.animation() || item.rendered()) {\n if (currentlyActive) {\n if (activeIndex < currentActiveIndex) {\n item.animation.set(SlideAnimationState.RightOut)\n inAnimation = SlideAnimationState.LeftIn\n } else {\n item.animation.set(SlideAnimationState.LeftOut)\n inAnimation = SlideAnimationState.RightIn\n }\n } else {\n item.animation.set(SlideAnimationState.FastOut)\n }\n }\n }\n }\n\n if (activeItem) {\n if (inAnimation) {\n activeItem.animation.set(inAnimation)\n } else if (items.length === 1) {\n activeItem.animation.set(SlideAnimationState.FastIn)\n } else if (activeIndex < currentActiveIndex) {\n activeItem.animation.set(SlideAnimationState.LeftIn)\n } else {\n activeItem.animation.set(SlideAnimationState.RightIn)\n }\n activeItem.active.set(true)\n activeItem.rendered.set(true)\n }\n\n const preferredClamp = clamp(preferred, 0, items.length - 1)\n if (preferred !== preferredClamp) {\n this.preferred.set(preferredClamp)\n }\n\n this.changes.emit(this)\n })\n }\n\n onAnimationEvent(event: AnimationEvent, item: SlideDirective) {\n const isHiding = event.toState.endsWith(\"-out\")\n const isBegin = event.phaseName === \"start\"\n if (isBegin) {\n item.state.emit(isHiding ? SlideState.Hiding : SlideState.Showing)\n } else {\n item.state.emit(isHiding ? SlideState.Hidden : SlideState.Shown)\n }\n }\n}\n","import { NgTemplateOutlet } from \"@angular/common\"\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n linkedSignal,\n model,\n signal,\n untracked\n} from \"@angular/core\"\n\nimport { InfiniteSlideDirective } from \"./infinite-slide.directive\"\nimport { SlideDirective, SlideState } from \"./slide.directive\"\nimport { SlidingComponent } from \"./sliding.component\"\n\nexport type InfiniteSlideContext<T> = { $implicit: T }\n\nexport interface InfiniteSlideData<T> {\n position: -1 | 0 | 1\n data: T\n}\n\nclass Item<T> {\n readonly id: string\n readonly state = signal<SlideState>(SlideState.Pending)\n // readonly data: WritableSignal<T>\n\n constructor(public data: T) {\n this.id = `${++uid}`\n // this.data = signal<T>(data)\n }\n\n setState(state: SlideState): void {\n const current = untracked(this.state)\n if (current !== state) {\n this.state.set(state)\n }\n }\n}\n\nlet uid = 0\n\n/**\n * @example\n * ```html\n * <nu-infinite-sliding [data]=\"newSlide\">\n * <ng-template nuInfiniteSlide let-data>{{ data }}</ng-template>\n * </nu-infinite-sliding>\n * ```\n *\n * ```typescript\n * export class MyComponent {\n * readonly newSlide = signal<SlideData<string>>({ position: 1, data: \"Hello\" })\n *\n * addNewSlide() {\n * this.newSlide.set({ position: 1, data: \"World\" })\n * }\n * }\n * ```\n */\n@Component({\n selector: \"nu-infinite-sliding\",\n exportAs: \"nuInfiniteSliding\",\n imports: [SlidingComponent, SlideDirective, NgTemplateOutlet],\n template: `\n <nu-sliding [lazy]=\"true\" [preferred]=\"preferredIndex()\">\n @for (item of items(); track item.id) {\n <ng-template nuSlide (state)=\"item.setState($event)\">\n <ng-template\n [ngTemplateOutlet]=\"slide().tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: item.data }\"\n />\n </ng-template>\n }\n </nu-sliding>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InfiniteSlidingComponent<T = any> {\n readonly slide = contentChild.required(InfiniteSlideDirective)\n\n readonly data = model<InfiniteSlideData<T>>()\n\n readonly #items = linkedSignal<InfiniteSlideData<T> | undefined, Array<Item<T>>>({\n source: this.data,\n computation: (data, prev) => insertData(prev?.value ?? [], data)\n })\n\n readonly items = computed(() => this.#items().filter(item => item.state() !== SlideState.Hidden))\n\n readonly preferredIndex = linkedSignal<number, number>({\n source: computed(() => this.items().findIndex(item => item.state() === SlideState.Pending)),\n computation: (index, prev) => (index > -1 ? index : prev?.value ?? 0)\n })\n\n push(data: T) {\n this.data.set({ position: 1, data })\n }\n\n unshift(data: T) {\n this.data.set({ position: -1, data })\n }\n\n update(data: T) {\n this.data.set({ position: 0, data })\n }\n}\n\nfunction insertData<T>(list: Array<Item<T>>, slideData: InfiniteSlideData<T> | undefined): Array<Item<T>> {\n if (slideData == null) {\n return list\n }\n\n const { position, data } = slideData\n if (position === 0) {\n const visible = list.find(item =>\n [SlideState.Pending, SlideState.Showing, SlideState.Shown].includes(item.state())\n )\n if (!visible) {\n return [...list, new Item(data)]\n } else {\n visible.data = data\n return list.slice(0)\n }\n } else if (position === -1) {\n return [new Item(data), ...list]\n } else {\n return [...list, new Item(data)]\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/layout",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.86",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/animations": "19.2.8",
|
|
6
6
|
"@angular/common": "19.2.8",
|
|
7
7
|
"@angular/core": "19.2.8",
|
|
8
8
|
"es-toolkit": "^1.35.0",
|
|
9
9
|
"rxjs": "^7.8.1",
|
|
10
|
-
"@ngutil/common": "0.0.
|
|
11
|
-
"@ngutil/style": "0.0.
|
|
10
|
+
"@ngutil/common": "0.0.86",
|
|
11
|
+
"@ngutil/style": "0.0.86"
|
|
12
12
|
},
|
|
13
13
|
"publishConfig": {
|
|
14
14
|
"access": "public",
|
|
@@ -5,14 +5,13 @@ export type InfiniteSlideContext<T> = {
|
|
|
5
5
|
$implicit: T;
|
|
6
6
|
};
|
|
7
7
|
export interface InfiniteSlideData<T> {
|
|
8
|
-
position: -1 | 1;
|
|
8
|
+
position: -1 | 0 | 1;
|
|
9
9
|
data: T;
|
|
10
10
|
}
|
|
11
11
|
declare class Item<T> {
|
|
12
|
-
|
|
12
|
+
data: T;
|
|
13
13
|
readonly id: string;
|
|
14
14
|
readonly state: import("@angular/core").WritableSignal<SlideState>;
|
|
15
|
-
currentState: SlideState;
|
|
16
15
|
constructor(data: T);
|
|
17
16
|
setState(state: SlideState): void;
|
|
18
17
|
}
|
|
@@ -42,6 +41,7 @@ export declare class InfiniteSlidingComponent<T = any> {
|
|
|
42
41
|
readonly preferredIndex: import("@angular/core").WritableSignal<number>;
|
|
43
42
|
push(data: T): void;
|
|
44
43
|
unshift(data: T): void;
|
|
44
|
+
update(data: T): void;
|
|
45
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<InfiniteSlidingComponent<any>, never>;
|
|
46
46
|
static ɵcmp: i0.ɵɵComponentDeclaration<InfiniteSlidingComponent<any>, "nu-infinite-sliding", ["nuInfiniteSliding"], { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "data": "dataChange"; }, ["slide"], never, true, never>;
|
|
47
47
|
}
|