@ngutil/layout 0.0.3-dev.8 → 0.0.3
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.
- package/docking/docking-content.component.d.ts +1 -1
- package/docking/docking-layout.component.d.ts +1 -3
- package/docking/docking-panel.component.d.ts +10 -4
- package/esm2022/docking/docking-content.component.mjs +3 -3
- package/esm2022/docking/docking-layout.component.mjs +16 -140
- package/esm2022/docking/docking-panel.component.mjs +70 -15
- package/esm2022/index.mjs +2 -2
- package/esm2022/l9/state.mjs +1 -9
- package/esm2022/services/slots.service.mjs +240 -0
- package/fesm2022/ngutil-layout.mjs +322 -269
- package/fesm2022/ngutil-layout.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/l9/state.d.ts +1 -3
- package/package.json +4 -2
- package/services/slots.service.d.ts +69 -0
- package/esm2022/util/dimension-watcher.mjs +0 -84
- package/esm2022/util/dimension.mjs +0 -2
- package/esm2022/util/index.mjs +0 -3
- package/esm2022/util/media-watcher.mjs +0 -29
- package/esm2022/util/rect.mjs +0 -2
- package/util/dimension-watcher.d.ts +0 -4
- package/util/dimension.d.ts +0 -5
- package/util/index.d.ts +0 -4
- package/util/media-watcher.d.ts +0 -5
- package/util/rect.d.ts +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/util/media-watcher.ts","../../../../packages/layout/src/util/dimension-watcher.ts","../../../../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-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nconst WATCHES: { [key: string]: Observable<boolean> } = {}\n\n/**\n * watchMedia(\"(display-mode: standalone)\")\n */\nexport function watchMedia(expr: string): Observable<boolean> {\n const existing = WATCHES[expr]\n if (existing == null) {\n return (WATCHES[expr] = _createWatcher(expr))\n }\n return existing\n}\n\nfunction _createWatcher(expr: string): Observable<boolean> {\n const zone = inject(NgZone)\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const query = window.matchMedia(expr)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n query.addEventListener(\"change\", listener)\n sub.next(query.matches)\n return () => {\n query.removeEventListener(\"change\", listener)\n delete WATCHES[expr]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n}\n","import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nimport { NumberWithUnit } from \"@ngutil/common\"\n\nimport { Dimension } from \"./dimension\"\n\ntype Watches = Map<HTMLElement, Observable<Dimension>>\nexport type WatchBox = ResizeObserverBoxOptions | \"scroll-box\"\n\nconst RESIZE_WATCHES: Watches = new Map()\nconst SCROLL_WATCHES: Watches = new Map()\n\nexport function watchDimension(el: HTMLElement, box: WatchBox = \"border-box\"): Observable<Dimension> {\n const zone = inject(NgZone)\n return box === \"scroll-box\" ? _watchScroll(zone, el) : _watchResize(zone, el, box)\n}\n\nfunction _watchResize(zone: NgZone, el: HTMLElement, box: WatchBox) {\n return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box))\n}\n\nfunction _watchScroll(zone: NgZone, el: HTMLElement) {\n return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el))\n}\n\nfunction _watch(zone: NgZone, el: HTMLElement, watches: Watches, factory: () => Observable<Dimension>) {\n const existing = watches.get(el)\n if (existing == null) {\n const watcher = factory()\n watches.set(el, watcher)\n return watcher\n }\n return existing\n}\n\nfunction _createResizeWatcher(zone: NgZone, el: HTMLElement, box: WatchBox): Observable<Dimension> {\n if (box !== \"border-box\") {\n throw new Error(`Currently not implemented box mode: ${box}`)\n }\n\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.borderBoxSize) {\n sub.next({\n width: _number(entry.borderBoxSize[0].inlineSize),\n height: _number(entry.borderBoxSize[0].blockSize)\n })\n } else {\n sub.next({\n width: _number(el.offsetWidth),\n height: _number(el.offsetHeight)\n })\n }\n }\n })\n observer.observe(el, { box: box as ResizeObserverBoxOptions })\n\n return () => {\n observer.disconnect()\n RESIZE_WATCHES.delete(el)\n }\n }).pipe(\n distinctUntilChanged((p, c) => p && c && p.width === c.width && p.height === c.height),\n shareReplay(1)\n )\n )\n}\n\nfunction _createScollWatcher(zone: NgZone, el: HTMLElement): Observable<Dimension> {\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n let lastSw: number = 0\n let lastSh: number = 0\n\n const emit = () => {\n const sw = el.scrollWidth\n const sh = el.scrollHeight\n if (lastSw !== sw || lastSh !== sh) {\n lastSw = sw\n lastSh = sh\n sub.next({ width: _number(lastSw), height: _number(lastSh) })\n }\n }\n\n const dimSum = _watchResize(zone, el, \"border-box\").subscribe(emit)\n const mutation = new MutationObserver(emit)\n mutation.observe(el, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true\n })\n\n return () => {\n dimSum.unsubscribe()\n mutation.disconnect()\n SCROLL_WATCHES.delete(el)\n }\n }).pipe(shareReplay(1))\n )\n}\n\nfunction _number(val: number): NumberWithUnit {\n return new NumberWithUnit(val, \"pk\")\n}\n","/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\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 #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\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 { Dimension } from \"../util\"\nimport { L9CellName, L9Horizontal, L9Range, L9RangeName, 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 update(range: L9Range | L9RangeName, dim: Dimension) {\n range = L9Range.coerce(range)\n const dims = { ...this.#dims.value }\n // for (const cell of range.horizontals) {\n // dims[cell] = dim.width\n // }\n }\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, ElementRef, inject, Input, Output } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\nimport { watchDimension } from \"../util\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"invisible\"\nexport type DockingPanelMode = \"overlay\" | \"embedded\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingPanelComponent extends Destructible {\n readonly el = inject(ElementRef<HTMLElement>)\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n\n console.log(\"SET POSITION\", coerced, this.position.value.isEq(coerced))\n\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"invisible\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"overlay\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n readonly #autoSize = combineLatest({\n dim: watchDimension(this.el.nativeElement, \"scroll-box\"),\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize\n })\n\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n })\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"invisible\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM, NumberWithUnit } from \"@ngutil/common\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, 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\nexport type DockingPositionMode = \"absolute\" | \"fixed\"\n\nconst EMBEDDED_ZINDEX = 20\nconst OVERLAY_ZINDEX = EMBEDDED_ZINDEX * 2\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n// interface PanelRefChanges {\n// ref: PanelRef\n// changes: DockingPanelChanges\n// }\n\n// class PanelRef {\n// style: Partial<CSSStyleDeclaration> = {}\n// readonly changes: Observable<PanelRefChanges>\n// constructor(public readonly panel: DockingPanelDirective) {\n// this.changes = panel.changes.pipe(\n// map(changes => {\n// return { ref: this, changes }\n// })\n// )\n// }\n// }\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n @Input() positionMode: DockingPositionMode = \"absolute\"\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n // this.panels.subscribe(panels => console.log({ panels }))\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n\n // this.d\n // .sub(merge(this.dockingPanels.changes, this.#reflow))\n // .pipe(\n // startWith(null),\n // map(() => this.dockingPanels.map(panel => new PanelRef(panel))),\n // switchMap(refs => combineLatest(refs.map(ref => ref.changes))),\n // map(changes => {\n // this.#layout(changes)\n // return changes.map(c => c.ref)\n // })\n // )\n // .subscribe(this.panels)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n console.log(\"layout\", entries)\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let embeddedZIndex = EMBEDDED_ZINDEX\n let overlayZIndex = OVERLAY_ZINDEX\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isEmbedded = panelState.mode === \"embedded\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isEmbedded) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isEmbedded) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isEmbedded) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isEmbedded) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n const panelGivenSize =\n panelState.state === \"full\"\n ? panelState.fullSize\n : panelState.state === \"mini\"\n ? panelState.miniSize\n : new NumberWithUnit(0, \"px\")\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${isEmbedded ? embeddedZIndex++ : overlayZIndex++}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null,\n \"--docking-panel-w\": !isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-h\": isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-real-w\": !isHorizontal ? `${panelSize}px` : null,\n \"--docking-panel-real-h\": isHorizontal ? `${panelSize}px` : null\n })\n }\n\n console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft })\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n }\n }\n\n #layoutOld(entries: PanelsChanges) {\n // let paddingTop = 0\n // let paddingRight = 0\n // let paddingBottom = 0\n // let paddingLeft = 0\n // if (!this.contentOnly) {\n // let embeddedZIndex = EMBEDDED_ZINDEX\n // let overlayZIndex = OVERLAY_ZINDEX\n // const leftRight: PanelRefChanges[] = entries.filter(v =>\n // [\"left\", \"right\"].includes(v.changes.position.side)\n // )\n // const topBottom: PanelRefChanges[] = entries.filter(v =>\n // [\"top\", \"bottom\"].includes(v.changes.position.side)\n // )\n // for (const entry of entries) {\n // const changes = entry.changes\n // const ref = entry.ref\n // if (changes.mode === \"embedded\") {\n // ref.style.zIndex = `${embeddedZIndex++}`\n // } else if (changes.mode === \"overlay\") {\n // ref.style.zIndex = `${overlayZIndex++}`\n // }\n // }\n // for (const entry of leftRight) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // ref.style.top = \"0\"\n // ref.style.bottom = \"0\"\n // if (changes.position.side === \"left\") {\n // paddingLeft = Math.max(paddingLeft, padding)\n // ref.style.left = \"0\"\n // ref.style.right = \"\"\n // } else {\n // paddingRight = Math.max(paddingRight, padding)\n // ref.style.right = \"0\"\n // ref.style.left = \"\"\n // }\n // }\n // for (const entry of topBottom) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // if (changes.mode === \"embedded\") {\n // ref.style.left = `${paddingLeft}px`\n // ref.style.right = `${paddingRight}px`\n // } else {\n // ref.style.left = \"0\"\n // ref.style.right = \"0\"\n // }\n // if (changes.position?.cells[0].v === \"top\") {\n // paddingTop = Math.max(paddingTop, padding)\n // ref.style.top = \"0\"\n // ref.style.bottom = \"\"\n // } else {\n // paddingBottom = Math.max(paddingBottom, padding)\n // ref.style.bottom = `0`\n // ref.style.top = \"\"\n // }\n // }\n // }\n // const cel = this.contentEl.nativeElement\n // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`\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","/**\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-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/ngutil-layout.ts"],"sourcesContent":["/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\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 #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\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 standalone: true,\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 { AfterViewInit, Component, ElementRef, inject, Input, Output, ViewChild } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, ReplaySubject, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\nimport { DimensionWatcher } from \"@ngutil/style\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"hidden\"\nexport type DockingPanelMode = \"over\" | \"push\" | \"rigid\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\nconst HIDDEN_SIZE = new NumberWithUnit(0, \"px\")\nconst AUTO_SIZE = NumberWithUnit.coerce(\"auto\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `\n <div class=\"content\" #content>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DockingPanelComponent extends Destructible implements AfterViewInit {\n readonly el = inject(ElementRef<HTMLElement>)\n readonly #dimWatcher = inject(DimensionWatcher)\n @ViewChild(\"content\", { read: ElementRef, static: true })\n readonly content!: ElementRef<HTMLElement>\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"full\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"rigid\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(AUTO_SIZE)\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(HIDDEN_SIZE)\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n readonly #contentSize = new ReplaySubject<{ width: NumberWithUnit; height: NumberWithUnit }>(1)\n\n readonly #autoSize = combineLatest({\n dim: this.#contentSize,\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize,\n contentSize: this.#contentSize\n })\n\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n\n const isHorizontal = changes.position.orient === \"horizontal\"\n let w = null\n let h = null\n\n // TODO: when change state from mini -> hidden, currently wrong behavior\n // the good behavior is to not gain fullSize ang go to hidden\n if (changes.state === \"mini\") {\n if (isHorizontal) {\n h = changes.miniSize.unit === \"auto\" ? changes.contentSize.height : changes.miniSize\n } else {\n w = changes.miniSize.unit === \"auto\" ? changes.contentSize.width : changes.miniSize\n }\n } else {\n if (isHorizontal) {\n h = changes.fullSize.unit === \"auto\" ? changes.contentSize.height : changes.fullSize\n } else {\n w = changes.fullSize.unit === \"auto\" ? changes.contentSize.width : changes.fullSize\n }\n }\n\n FastDOM.setStyle(\n this.el.nativeElement,\n {\n \"--docking-panel-w\": w != null ? `${w}` : null,\n \"--docking-panel-h\": h != null ? `${h}` : null,\n \"--docking-panel-content-w\": changes.contentSize.width,\n \"--docking-panel-content-h\": changes.contentSize.height\n },\n () => FastDOM.setAttributes(this.el.nativeElement, { animate: \"\" })\n )\n })\n }\n\n ngAfterViewInit(): void {\n this.d\n .sub(this.#dimWatcher.watch(this.content, \"scroll-box\"))\n .pipe(\n map(dim => {\n return {\n width: new NumberWithUnit(dim.width, \"px\"),\n height: new NumberWithUnit(dim.height, \"px\")\n }\n })\n )\n .subscribe(this.#contentSize)\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"hidden\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM } from \"@ngutil/common\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, 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\nconst RIGID_ZINDEX = 20\nconst OVER_ZINDEX = RIGID_ZINDEX * 2\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let rigidZIndex = RIGID_ZINDEX\n let overZIndex = OVER_ZINDEX\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isRigid = panelState.mode === \"rigid\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isRigid) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isRigid) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isRigid) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isRigid) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${isRigid ? rigidZIndex++ : overZIndex++}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null\n })\n }\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/l9/state.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import {
|
|
3
|
-
import { L9Horizontal, L9Range, L9RangeName, L9Vertical } from "./range";
|
|
2
|
+
import { L9Horizontal, L9Vertical } from "./range";
|
|
4
3
|
export type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${"w" | "h"}`;
|
|
5
4
|
export type L9StyleVars<T extends string> = {
|
|
6
5
|
[key in L9StateVar<T>]?: string;
|
|
@@ -10,5 +9,4 @@ export declare class L9State<T extends string> {
|
|
|
10
9
|
readonly prefix: T;
|
|
11
10
|
readonly style: Observable<L9StyleVars<T>>;
|
|
12
11
|
constructor(prefix: T);
|
|
13
|
-
update(range: L9Range | L9RangeName, dim: Dimension): void;
|
|
14
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/layout",
|
|
3
|
-
"version": "0.0.3
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"directory": "../../dist/packages/layout/"
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
"peerDependencies": {
|
|
9
9
|
"@angular/common": "^17.1.0",
|
|
10
10
|
"@angular/core": "^17.1.0",
|
|
11
|
-
"
|
|
11
|
+
"rxjs": "^7.8.1",
|
|
12
|
+
"@ngutil/style": "0.0.3",
|
|
13
|
+
"@ngutil/common": "0.0.3"
|
|
12
14
|
},
|
|
13
15
|
"dependencies": {
|
|
14
16
|
"tslib": "^2.3.0"
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { EmbeddedViewRef, Injector, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { Destructible, IDisposable } from "@ngutil/common";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
type SlotOrder = `:${number}`;
|
|
6
|
+
type SlotId = ` as ${string}`;
|
|
7
|
+
export type Slot<T extends string> = `${T}${SlotOrder | ""}${SlotId | ""}`;
|
|
8
|
+
export type SlotTpl = TemplateRef<any>;
|
|
9
|
+
export type SlotViewRef = EmbeddedViewRef<any>;
|
|
10
|
+
export declare class SlotDef<T extends string> implements IDisposable {
|
|
11
|
+
readonly tpl: SlotTpl;
|
|
12
|
+
readonly slot: T;
|
|
13
|
+
readonly order: number;
|
|
14
|
+
readonly id?: string;
|
|
15
|
+
readonly viewRef?: SlotViewRef;
|
|
16
|
+
constructor(slot: Slot<T>, tpl: SlotTpl);
|
|
17
|
+
dispose(): void;
|
|
18
|
+
}
|
|
19
|
+
export interface SlotEvent<T extends string> {
|
|
20
|
+
type: "add" | "del";
|
|
21
|
+
def: SlotDef<T>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @Directive({selector: "ng-template[xyzSlot]", inputs: [{name: "slot", alias: "xyzSlot"}]})
|
|
25
|
+
* class XYZSlotDirective extends SlotDirective<XYZComponentSlots> { }
|
|
26
|
+
*
|
|
27
|
+
* @Directive({selector: "ng-template[xyzSlotOutlet]", inputs: [{name: "slot", alias: "xyzSlotOutlet"}]})
|
|
28
|
+
* class XYZSlotOutletDirective extends SlotOutletDirective<XYZComponentSlots> { }
|
|
29
|
+
*
|
|
30
|
+
*
|
|
31
|
+
* @Component({provides: [SlotsService]})
|
|
32
|
+
* class XYZComponent {
|
|
33
|
+
* slots: inject(SlotsService<XYZComponentSlots>)
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
export declare class SlotsService<T extends string = any> extends Destructible {
|
|
39
|
+
#private;
|
|
40
|
+
constructor();
|
|
41
|
+
addTpl(def: SlotDef<T>): void;
|
|
42
|
+
delTpl(def: SlotDef<T>): void;
|
|
43
|
+
watch(slot: T): Observable<SlotDef<T>[]>;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SlotsService<any>, never>;
|
|
45
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SlotsService<any>>;
|
|
46
|
+
}
|
|
47
|
+
export declare abstract class SlotDirective<T extends string, C = any> implements OnDestroy {
|
|
48
|
+
#private;
|
|
49
|
+
protected abstract readonly slotSvc: SlotsService<T>;
|
|
50
|
+
protected readonly tpl: TemplateRef<any>;
|
|
51
|
+
set slot(slot: Slot<T>);
|
|
52
|
+
get slot(): Slot<T>;
|
|
53
|
+
ngOnDestroy(): void;
|
|
54
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SlotDirective<any, any>, never>;
|
|
55
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SlotDirective<any, any>, never, never, {}, {}, never, never, false, never>;
|
|
56
|
+
}
|
|
57
|
+
export declare abstract class SlotOutletDirective<T extends string> extends Destructible implements OnInit {
|
|
58
|
+
#private;
|
|
59
|
+
protected abstract readonly slotSvc: SlotsService<T>;
|
|
60
|
+
protected readonly vcr: ViewContainerRef;
|
|
61
|
+
protected readonly injector: Injector;
|
|
62
|
+
set slot(slot: T | null);
|
|
63
|
+
get slot(): T | null;
|
|
64
|
+
constructor();
|
|
65
|
+
ngOnInit(): void;
|
|
66
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SlotOutletDirective<any>, never>;
|
|
67
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SlotOutletDirective<any>, never, never, {}, {}, never, never, false, never>;
|
|
68
|
+
}
|
|
69
|
+
export {};
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { inject, NgZone } from "@angular/core";
|
|
2
|
-
import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
|
|
3
|
-
import { NumberWithUnit } from "@ngutil/common";
|
|
4
|
-
const RESIZE_WATCHES = new Map();
|
|
5
|
-
const SCROLL_WATCHES = new Map();
|
|
6
|
-
export function watchDimension(el, box = "border-box") {
|
|
7
|
-
const zone = inject(NgZone);
|
|
8
|
-
return box === "scroll-box" ? _watchScroll(zone, el) : _watchResize(zone, el, box);
|
|
9
|
-
}
|
|
10
|
-
function _watchResize(zone, el, box) {
|
|
11
|
-
return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box));
|
|
12
|
-
}
|
|
13
|
-
function _watchScroll(zone, el) {
|
|
14
|
-
return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el));
|
|
15
|
-
}
|
|
16
|
-
function _watch(zone, el, watches, factory) {
|
|
17
|
-
const existing = watches.get(el);
|
|
18
|
-
if (existing == null) {
|
|
19
|
-
const watcher = factory();
|
|
20
|
-
watches.set(el, watcher);
|
|
21
|
-
return watcher;
|
|
22
|
-
}
|
|
23
|
-
return existing;
|
|
24
|
-
}
|
|
25
|
-
function _createResizeWatcher(zone, el, box) {
|
|
26
|
-
if (box !== "border-box") {
|
|
27
|
-
throw new Error(`Currently not implemented box mode: ${box}`);
|
|
28
|
-
}
|
|
29
|
-
return zone.runOutsideAngular(() => new Observable((sub) => {
|
|
30
|
-
const observer = new ResizeObserver(entries => {
|
|
31
|
-
for (const entry of entries) {
|
|
32
|
-
if (entry.borderBoxSize) {
|
|
33
|
-
sub.next({
|
|
34
|
-
width: _number(entry.borderBoxSize[0].inlineSize),
|
|
35
|
-
height: _number(entry.borderBoxSize[0].blockSize)
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
sub.next({
|
|
40
|
-
width: _number(el.offsetWidth),
|
|
41
|
-
height: _number(el.offsetHeight)
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
observer.observe(el, { box: box });
|
|
47
|
-
return () => {
|
|
48
|
-
observer.disconnect();
|
|
49
|
-
RESIZE_WATCHES.delete(el);
|
|
50
|
-
};
|
|
51
|
-
}).pipe(distinctUntilChanged((p, c) => p && c && p.width === c.width && p.height === c.height), shareReplay(1)));
|
|
52
|
-
}
|
|
53
|
-
function _createScollWatcher(zone, el) {
|
|
54
|
-
return zone.runOutsideAngular(() => new Observable((sub) => {
|
|
55
|
-
let lastSw = 0;
|
|
56
|
-
let lastSh = 0;
|
|
57
|
-
const emit = () => {
|
|
58
|
-
const sw = el.scrollWidth;
|
|
59
|
-
const sh = el.scrollHeight;
|
|
60
|
-
if (lastSw !== sw || lastSh !== sh) {
|
|
61
|
-
lastSw = sw;
|
|
62
|
-
lastSh = sh;
|
|
63
|
-
sub.next({ width: _number(lastSw), height: _number(lastSh) });
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const dimSum = _watchResize(zone, el, "border-box").subscribe(emit);
|
|
67
|
-
const mutation = new MutationObserver(emit);
|
|
68
|
-
mutation.observe(el, {
|
|
69
|
-
subtree: true,
|
|
70
|
-
childList: true,
|
|
71
|
-
attributes: true,
|
|
72
|
-
characterData: true
|
|
73
|
-
});
|
|
74
|
-
return () => {
|
|
75
|
-
dimSum.unsubscribe();
|
|
76
|
-
mutation.disconnect();
|
|
77
|
-
SCROLL_WATCHES.delete(el);
|
|
78
|
-
};
|
|
79
|
-
}).pipe(shareReplay(1)));
|
|
80
|
-
}
|
|
81
|
-
function _number(val) {
|
|
82
|
-
return new NumberWithUnit(val, "pk");
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvZGltZW5zaW9uLXdhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTy9DLE1BQU0sY0FBYyxHQUFZLElBQUksR0FBRyxFQUFFLENBQUE7QUFDekMsTUFBTSxjQUFjLEdBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUV6QyxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQWUsRUFBRSxNQUFnQixZQUFZO0lBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZSxFQUFFLEdBQWE7SUFDOUQsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZTtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUs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blxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5cbnR5cGUgV2F0Y2hlcyA9IE1hcDxIVE1MRWxlbWVudCwgT2JzZXJ2YWJsZTxEaW1lbnNpb24+PlxuZXhwb3J0IHR5cGUgV2F0Y2hCb3ggPSBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfCBcInNjcm9sbC1ib3hcIlxuXG5jb25zdCBSRVNJWkVfV0FUQ0hFUzogV2F0Y2hlcyA9IG5ldyBNYXAoKVxuY29uc3QgU0NST0xMX1dBVENIRVM6IFdhdGNoZXMgPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoRGltZW5zaW9uKGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCA9IFwiYm9yZGVyLWJveFwiKTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSlcbiAgICByZXR1cm4gYm94ID09PSBcInNjcm9sbC1ib3hcIiA/IF93YXRjaFNjcm9sbCh6b25lLCBlbCkgOiBfd2F0Y2hSZXNpemUoem9uZSwgZWwsIGJveClcbn1cblxuZnVuY3Rpb24gX3dhdGNoUmVzaXplKHpvbmU6IE5nWm9uZSwgZWw6IEhUTUxFbGVtZW50LCBib3g6IFdhdGNoQm94KSB7XG4gICAgcmV0dXJuIF93YXRjaCh6b25lLCBlbCwgUkVTSVpFX1dBVENIRVMsICgpID0+IF9jcmVhdGVSZXNpemVXYXRjaGVyKHpvbmUsIGVsLCBib3gpKVxufVxuXG5mdW5jdGlvbiBfd2F0Y2hTY3JvbGwoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gX3dhdGNoKHpvbmUsIGVsLCBTQ1JPTExfV0FUQ0hFUywgKCkgPT4gX2NyZWF0ZVNjb2xsV2F0Y2hlcih6b25lLCBlbCkpXG59XG5cbmZ1bmN0aW9uIF93YXRjaCh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgd2F0Y2hlczogV2F0Y2hlcywgZmFjdG9yeTogKCkgPT4gT2JzZXJ2YWJsZTxEaW1lbnNpb24+KSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB3YXRjaGVzLmdldChlbClcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gZmFjdG9yeSgpXG4gICAgICAgIHdhdGNoZXMuc2V0KGVsLCB3YXRjaGVyKVxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJlc2l6ZVdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3gpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICB9XG5cbiAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uYmxvY2tTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX251bWJlcihlbC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVsLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgeyBib3g6IGJveCBhcyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICBSRVNJWkVfV0FUQ0hFUy5kZWxldGUoZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gcCAmJiBjICYmIHAud2lkdGggPT09IGMud2lkdGggJiYgcC5oZWlnaHQgPT09IGMuaGVpZ2h0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTY29sbFdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gMFxuICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gMFxuXG4gICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ID0gZWwuc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFN3ID0gc3dcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogX251bWJlcihsYXN0U3cpLCBoZWlnaHQ6IF9udW1iZXIobGFzdFNoKSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGltU3VtID0gX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBcImJvcmRlci1ib3hcIikuc3Vic2NyaWJlKGVtaXQpXG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpbVN1bS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICAgICAgU0NST0xMX1dBVENIRVMuZGVsZXRlKGVsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICAgIClcbn1cblxuZnVuY3Rpb24gX251bWJlcih2YWw6IG51bWJlcik6IE51bWJlcldpdGhVbml0IHtcbiAgICByZXR1cm4gbmV3IE51bWJlcldpdGhVbml0KHZhbCwgXCJwa1wiKVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy91dGlsL2RpbWVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVtYmVyV2l0aFVuaXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIERpbWVuc2lvbiB7XG4gICAgd2lkdGg6IE51bWJlcldpdGhVbml0XG4gICAgaGVpZ2h0OiBOdW1iZXJXaXRoVW5pdFxufVxuIl19
|
package/esm2022/util/index.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { watchMedia } from "./media-watcher";
|
|
2
|
-
export { watchDimension } from "./dimension-watcher";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5leHBvcnQgeyBSZWN0IH0gZnJvbSBcIi4vcmVjdFwiXG5leHBvcnQgeyB3YXRjaE1lZGlhIH0gZnJvbSBcIi4vbWVkaWEtd2F0Y2hlclwiXG5leHBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvbi13YXRjaGVyXCJcbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { inject, NgZone } from "@angular/core";
|
|
2
|
-
import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
|
|
3
|
-
const WATCHES = {};
|
|
4
|
-
/**
|
|
5
|
-
* watchMedia("(display-mode: standalone)")
|
|
6
|
-
*/
|
|
7
|
-
export function watchMedia(expr) {
|
|
8
|
-
const existing = WATCHES[expr];
|
|
9
|
-
if (existing == null) {
|
|
10
|
-
return (WATCHES[expr] = _createWatcher(expr));
|
|
11
|
-
}
|
|
12
|
-
return existing;
|
|
13
|
-
}
|
|
14
|
-
function _createWatcher(expr) {
|
|
15
|
-
const zone = inject(NgZone);
|
|
16
|
-
return zone.runOutsideAngular(() => new Observable((sub) => {
|
|
17
|
-
const query = window.matchMedia(expr);
|
|
18
|
-
const listener = (event) => {
|
|
19
|
-
sub.next(event.matches);
|
|
20
|
-
};
|
|
21
|
-
query.addEventListener("change", listener);
|
|
22
|
-
sub.next(query.matches);
|
|
23
|
-
return () => {
|
|
24
|
-
query.removeEventListener("change", listener);
|
|
25
|
-
delete WATCHES[expr];
|
|
26
|
-
};
|
|
27
|
-
}).pipe(distinctUntilChanged(), shareReplay(1)));
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvdXRpbC9tZWRpYS13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRWhGLE1BQU0sT0FBTyxHQUEyQyxFQUFFLENBQUE7QUFFMUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVk7SUFDbkMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDL0IsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUF3QixFQUFFLEVBQUU7UUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtZQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQixDQUFDLENBQUE7UUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZCLE9BQU8sR0FBRyxFQUFFO1lBQ1IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDLENBQUE7SUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEQsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIE5nWm9uZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcblxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5jb25zdCBXQVRDSEVTOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8Ym9vbGVhbj4gfSA9IHt9XG5cbi8qKlxuICogd2F0Y2hNZWRpYShcIihkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaE1lZGlhKGV4cHI6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gV0FUQ0hFU1tleHByXVxuICAgIGlmIChleGlzdGluZyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAoV0FUQ0hFU1tleHByXSA9IF9jcmVhdGVXYXRjaGVyKGV4cHIpKVxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVdhdGNoZXIoZXhwcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmV0dXJuIHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgbmV3IE9ic2VydmFibGUoKHN1YjogU3Vic2NyaWJlcjxib29sZWFuPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYShleHByKVxuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSAoZXZlbnQ6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChldmVudC5tYXRjaGVzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlcnkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBsaXN0ZW5lcilcbiAgICAgICAgICAgIHN1Yi5uZXh0KHF1ZXJ5Lm1hdGNoZXMpXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgbGlzdGVuZXIpXG4gICAgICAgICAgICAgICAgZGVsZXRlIFdBVENIRVNbZXhwcl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSlcbiAgICApXG59XG4iXX0=
|
package/esm2022/util/rect.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2xheW91dC9zcmMvdXRpbC9yZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaW1lbnNpb24gfSBmcm9tIFwiLi9kaW1lbnNpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY3QgZXh0ZW5kcyBEaW1lbnNpb24ge1xuICAgIHg6IG51bWJlclxuICAgIHk6IG51bWJlclxufVxuIl19
|
package/util/dimension.d.ts
DELETED
package/util/index.d.ts
DELETED
package/util/media-watcher.d.ts
DELETED