@ngutil/layout 0.0.102 → 0.0.104

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"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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"}
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/index.d.ts CHANGED
@@ -1,4 +1,279 @@
1
- export * from "./l9";
2
- export * from "./docking";
3
- export * from "./services/slots.service";
4
- export * from "./sliding";
1
+ import * as _ngutil_style from '@ngutil/style';
2
+ import { Rect } from '@ngutil/style';
3
+ import * as rxjs from 'rxjs';
4
+ import { Observable } from 'rxjs';
5
+ import * as _angular_core from '@angular/core';
6
+ import { ElementRef, TemplateRef, EmbeddedViewRef, OnDestroy, OnInit, ViewContainerRef, Injector } from '@angular/core';
7
+ import { IDisposable, Destructible } from '@ngutil/common';
8
+ import { AnimationEvent } from '@angular/animations';
9
+
10
+ /**
11
+ * -----------------------------------------------
12
+ * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |
13
+ * ----------------------------------------------
14
+ * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGHT |
15
+ * ----------------------------------------------
16
+ * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |
17
+ * -----------------------------------------------
18
+ */
19
+
20
+ declare const vertical: readonly ["top", "middle", "bottom"];
21
+ declare const horizontal: readonly ["left", "center", "right"];
22
+ type L9Vertical = (typeof vertical)[number];
23
+ type L9Horizontal = (typeof horizontal)[number];
24
+ type L9CellName = `${L9Vertical}:${L9Horizontal}` | `${L9Horizontal}:${L9Vertical}`;
25
+ type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`;
26
+ type L9Orient = "horizontal" | "vertical";
27
+ declare const L9GridTopLeft: {
28
+ row: number;
29
+ col: number;
30
+ };
31
+ declare class L9Cell {
32
+ readonly v: L9Vertical;
33
+ readonly h: L9Horizontal;
34
+ static coerce(value: L9CellName): L9Cell;
35
+ constructor(v: L9Vertical, h: L9Horizontal);
36
+ intoGridArea(gridTopLeft?: typeof L9GridTopLeft): string;
37
+ isEq(other: L9Cell): boolean;
38
+ }
39
+ declare class L9Range {
40
+ #private;
41
+ static coerce(value: L9Range | L9RangeName): L9Range;
42
+ readonly cells: Array<L9Cell>;
43
+ readonly orient: L9Orient;
44
+ constructor(range: L9RangeName);
45
+ isEq(other: L9Range): boolean;
46
+ intoGridArea(gridTopLeft?: typeof L9GridTopLeft): string;
47
+ intoRect(): Rect;
48
+ }
49
+
50
+ type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${"w" | "h"}`;
51
+ type L9StyleVars<T extends string> = {
52
+ [key in L9StateVar<T>]?: string;
53
+ };
54
+ declare class L9State<T extends string> {
55
+ #private;
56
+ readonly prefix: T;
57
+ readonly style: Observable<L9StyleVars<T>>;
58
+ constructor(prefix: T);
59
+ }
60
+
61
+ declare class DockingContentComponent {
62
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockingContentComponent, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockingContentComponent, "nu-docking-content", ["nuDockingContent"], {}, {}, never, ["*"], true, never>;
64
+ }
65
+
66
+ type DockingPanelMode = "over" | "push" | "rigid";
67
+ type BackdropMode = boolean | "full" | "panel-size";
68
+ declare class DockingPanelComponent {
69
+ #private;
70
+ readonly el: ElementRef<any>;
71
+ readonly position: _angular_core.InputSignalWithTransform<L9Range, L9RangeName | L9Range>;
72
+ readonly opened: _angular_core.ModelSignal<boolean>;
73
+ readonly _opened: _angular_core.Signal<boolean>;
74
+ readonly mode: _angular_core.InputSignal<DockingPanelMode>;
75
+ readonly maxSize: _angular_core.InputSignal<number | null | undefined>;
76
+ readonly backdrop: _angular_core.InputSignal<BackdropMode>;
77
+ readonly gridArea: _angular_core.Signal<string>;
78
+ readonly orient: _angular_core.Signal<L9Orient>;
79
+ readonly side: _angular_core.Signal<"top" | "middle" | "bottom" | "left" | "center" | "right">;
80
+ readonly content: _angular_core.Signal<ElementRef<any>>;
81
+ readonly dimension$: rxjs.Observable<_ngutil_style.Dimension>;
82
+ readonly dimension: _angular_core.Signal<_ngutil_style.Dimension | undefined>;
83
+ readonly contentSize: _angular_core.Signal<number>;
84
+ open(): void;
85
+ close(): void;
86
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockingPanelComponent, never>;
87
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockingPanelComponent, "nu-docking-panel", ["nuDockingPanel"], { "position": { "alias": "position"; "required": false; "isSignal": true; }; "opened": { "alias": "opened"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; }, { "opened": "openedChange"; }, never, ["*"], true, never>;
88
+ }
89
+
90
+ declare class DockingLayoutComponent {
91
+ /**
92
+ * True if u want to animate panel open/close with `mode="side"`
93
+ */
94
+ readonly panels: _angular_core.Signal<readonly DockingPanelComponent[]>;
95
+ readonly activeOverPanel: _angular_core.Signal<DockingPanelComponent | undefined>;
96
+ readonly backdropVisible: _angular_core.Signal<boolean>;
97
+ doCloseActiveOverPanel(): void;
98
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DockingLayoutComponent, never>;
99
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DockingLayoutComponent, "nu-docking", ["nuDocking"], {}, {}, ["panels"], ["*"], true, never>;
100
+ }
101
+
102
+ declare class NuDockingLayout {
103
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NuDockingLayout, never>;
104
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NuDockingLayout, never, [typeof DockingLayoutComponent, typeof DockingPanelComponent, typeof DockingContentComponent], [typeof DockingLayoutComponent, typeof DockingPanelComponent, typeof DockingContentComponent]>;
105
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<NuDockingLayout>;
106
+ }
107
+
108
+ type SlotOrder = `:${number}`;
109
+ type SlotId = ` as ${string}`;
110
+ type Slot<T extends string> = `${T}${SlotOrder | ""}${SlotId | ""}`;
111
+ type SlotTpl = TemplateRef<any>;
112
+ type SlotViewRef = EmbeddedViewRef<any>;
113
+ declare class SlotDef<T extends string> implements IDisposable {
114
+ readonly tpl: SlotTpl;
115
+ readonly slot: T;
116
+ readonly order: number;
117
+ readonly id?: string;
118
+ readonly viewRef?: SlotViewRef;
119
+ constructor(slot: Slot<T>, tpl: SlotTpl);
120
+ dispose(): void;
121
+ }
122
+ interface SlotEvent<T extends string> {
123
+ type: "add" | "del";
124
+ def: SlotDef<T>;
125
+ }
126
+ /**
127
+ * @Directive({selector: "ng-template[xyzSlot]", inputs: [{name: "slot", alias: "xyzSlot"}]})
128
+ * class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }
129
+ *
130
+ * @Directive({selector: "ng-template[xyzSlotOutlet]", inputs: [{name: "slot", alias: "xyzSlotOutlet"}]})
131
+ * class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }
132
+ *
133
+ *
134
+ * @Component({provides: [SlotsService]})
135
+ * class XYZComponent {
136
+ * slots: inject(SlotsService<XYZComponentSlots>)
137
+ * }
138
+ *
139
+ *
140
+ */
141
+ declare class SlotsService<T extends string = any> extends Destructible {
142
+ #private;
143
+ constructor();
144
+ addTpl(def: SlotDef<T>): void;
145
+ delTpl(def: SlotDef<T>): void;
146
+ watch(slot: T): Observable<SlotDef<T>[]>;
147
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlotsService<any>, never>;
148
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SlotsService<any>>;
149
+ }
150
+ declare abstract class SlotDirective<T extends string, C = any> implements OnDestroy {
151
+ #private;
152
+ protected abstract readonly slotSvc: SlotsService<T>;
153
+ protected readonly tpl: TemplateRef<any>;
154
+ set slot(slot: Slot<T>);
155
+ get slot(): Slot<T>;
156
+ ngOnDestroy(): void;
157
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlotDirective<any, any>, never>;
158
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SlotDirective<any, any>, never, never, {}, {}, never, never, true, never>;
159
+ }
160
+ declare abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {
161
+ #private;
162
+ protected abstract readonly slotSvc: SlotsService<T>;
163
+ protected readonly vcr: ViewContainerRef;
164
+ protected readonly injector: Injector;
165
+ set slot(slot: T | null);
166
+ get slot(): T | null;
167
+ constructor();
168
+ ngOnInit(): void;
169
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlotOutletDirective<any>, never>;
170
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SlotOutletDirective<any>, never, never, {}, {}, never, never, true, never>;
171
+ }
172
+
173
+ declare class InfiniteSlideDirective {
174
+ readonly tpl: TemplateRef<any>;
175
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfiniteSlideDirective, never>;
176
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<InfiniteSlideDirective, "ng-template[nuInfiniteSlide]", ["nuInfiniteSlide"], {}, {}, never, never, true, never>;
177
+ }
178
+
179
+ declare const enum SlideAnimationState {
180
+ LeftIn = "left-in",
181
+ LeftOut = "left-out",
182
+ RightIn = "right-in",
183
+ RightOut = "right-out",
184
+ FastOut = "fast-out",
185
+ FastIn = "fast-in"
186
+ }
187
+ declare const enum SlideState {
188
+ Pending = 0,
189
+ Showing = 1,
190
+ Shown = 2,
191
+ Hiding = 3,
192
+ Hidden = 4
193
+ }
194
+ declare class SlideDirective {
195
+ readonly tpl: TemplateRef<any>;
196
+ readonly rendered: _angular_core.WritableSignal<boolean>;
197
+ readonly active: _angular_core.WritableSignal<boolean>;
198
+ readonly animation: _angular_core.WritableSignal<SlideAnimationState | null>;
199
+ readonly activated: _angular_core.OutputEmitterRef<boolean>;
200
+ readonly state: _angular_core.OutputEmitterRef<SlideState>;
201
+ constructor();
202
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideDirective, never>;
203
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SlideDirective, "ng-template[nuSlide]", ["nuSlide"], {}, { "activated": "activated"; "state": "state"; }, never, never, true, never>;
204
+ }
205
+
206
+ type InfiniteSlideContext<T> = {
207
+ $implicit: T;
208
+ };
209
+ interface InfiniteSlideData<T> {
210
+ position: -1 | 0 | 1;
211
+ data: T;
212
+ }
213
+ declare class Item<T> {
214
+ data: T;
215
+ readonly id: string;
216
+ readonly state: _angular_core.WritableSignal<SlideState>;
217
+ constructor(data: T);
218
+ setState(state: SlideState): void;
219
+ }
220
+ /**
221
+ * @example
222
+ * ```html
223
+ * <nu-infinite-sliding [data]="newSlide">
224
+ * <ng-template nuInfiniteSlide let-data>{{ data }}</ng-template>
225
+ * </nu-infinite-sliding>
226
+ * ```
227
+ *
228
+ * ```typescript
229
+ * export class MyComponent {
230
+ * readonly newSlide = signal<SlideData<string>>({ position: 1, data: "Hello" })
231
+ *
232
+ * addNewSlide() {
233
+ * this.newSlide.set({ position: 1, data: "World" })
234
+ * }
235
+ * }
236
+ * ```
237
+ */
238
+ declare class InfiniteSlidingComponent<T = any> {
239
+ #private;
240
+ readonly slide: _angular_core.Signal<InfiniteSlideDirective>;
241
+ readonly data: _angular_core.ModelSignal<InfiniteSlideData<T> | undefined>;
242
+ readonly items: _angular_core.Signal<Item<T>[]>;
243
+ readonly preferredIndex: _angular_core.WritableSignal<number>;
244
+ push(data: T): void;
245
+ unshift(data: T): void;
246
+ update(data: T): void;
247
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfiniteSlidingComponent<any>, never>;
248
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InfiniteSlidingComponent<any>, "nu-infinite-sliding", ["nuInfiniteSliding"], { "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "data": "dataChange"; }, ["slide"], never, true, never>;
249
+ }
250
+
251
+ declare class SlidingComponent {
252
+ /**
253
+ * List of items
254
+ */
255
+ readonly items: _angular_core.Signal<readonly SlideDirective[]>;
256
+ /**
257
+ * Lazily rendering items
258
+ */
259
+ readonly lazy: _angular_core.InputSignal<boolean>;
260
+ /**
261
+ * Index of the preferred item
262
+ */
263
+ readonly preferred: _angular_core.ModelSignal<number>;
264
+ /**
265
+ * Index of the active item
266
+ */
267
+ readonly active: _angular_core.Signal<number>;
268
+ /**
269
+ * Changes of the active item
270
+ */
271
+ readonly changes: _angular_core.OutputEmitterRef<SlidingComponent>;
272
+ constructor();
273
+ onAnimationEvent(event: AnimationEvent, item: SlideDirective): void;
274
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidingComponent, never>;
275
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidingComponent, "nu-sliding", never, { "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "preferred": { "alias": "preferred"; "required": false; "isSignal": true; }; }, { "preferred": "preferredChange"; "changes": "changes"; }, ["items"], never, true, never>;
276
+ }
277
+
278
+ export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, InfiniteSlideDirective, InfiniteSlidingComponent, L9Cell, L9GridTopLeft, L9Range, L9State, NuDockingLayout, SlideAnimationState, SlideDirective, SlideState, SlidingComponent, SlotDef, SlotDirective, SlotOutletDirective, SlotsService };
279
+ export type { InfiniteSlideContext, InfiniteSlideData, L9CellName, L9Horizontal, L9Orient, L9RangeName, L9StateVar, L9StyleVars, L9Vertical, Slot, SlotEvent, SlotTpl, SlotViewRef };