@ngutil/style 0.0.101 → 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.
- package/fesm2022/ngutil-style.mjs +19 -20
- package/fesm2022/ngutil-style.mjs.map +1 -1
- package/index.d.ts +197 -12
- package/package.json +4 -4
- package/sass/animation/vars/index.d.ts +0 -20
- package/sass/index.d.ts +0 -1
- package/services/color-scheme.service.d.ts +0 -9
- package/services/dimension-watcher.service.d.ts +0 -12
- package/services/media-watcher.service.d.ts +0 -11
- package/services/node-removed-watcher.service.d.ts +0 -9
- package/services/position-watcher.service.d.ts +0 -10
- package/services/rect-watcher.service.d.ts +0 -11
- package/util/alignment.d.ts +0 -14
- package/util/floating-position.d.ts +0 -76
- package/util/in-animation.d.ts +0 -4
- package/util/rect.d.ts +0 -18
- package/util/sides.d.ts +0 -17
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, NgZone, Injectable } from '@angular/core';
|
|
2
|
+
import { inject, NgZone, Injectable, DOCUMENT } from '@angular/core';
|
|
3
3
|
import { Observable, distinctUntilChanged, shareReplay, map, of, combineLatest } from 'rxjs';
|
|
4
|
-
import { DOCUMENT } from '@angular/common';
|
|
5
4
|
import { coerceElement, isPlainObject, __zone_symbol__, rawRequestAnimationFrame, rawCancelAnimationFrame, NumberWithUnit } from '@ngutil/common';
|
|
6
5
|
import { isEqual, clamp } from 'es-toolkit';
|
|
7
6
|
|
|
@@ -33,10 +32,10 @@ class MediaWatcher {
|
|
|
33
32
|
};
|
|
34
33
|
}).pipe(distinctUntilChanged(), shareReplay(1)));
|
|
35
34
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: MediaWatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: MediaWatcher, providedIn: "root" }); }
|
|
38
37
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: MediaWatcher, decorators: [{
|
|
40
39
|
type: Injectable,
|
|
41
40
|
args: [{ providedIn: "root" }]
|
|
42
41
|
}] });
|
|
@@ -48,10 +47,10 @@ class ColorSchemeService {
|
|
|
48
47
|
this.isLight = this.isDark.pipe(map(v => !v), shareReplay(1));
|
|
49
48
|
}
|
|
50
49
|
#mq;
|
|
51
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
52
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ColorSchemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ColorSchemeService, providedIn: "root" }); }
|
|
53
52
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: ColorSchemeService, decorators: [{
|
|
55
54
|
type: Injectable,
|
|
56
55
|
args: [{ providedIn: "root" }]
|
|
57
56
|
}] });
|
|
@@ -189,10 +188,10 @@ class DimensionWatcher {
|
|
|
189
188
|
};
|
|
190
189
|
}).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1)));
|
|
191
190
|
}
|
|
192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
193
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DimensionWatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
192
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DimensionWatcher, providedIn: "root" }); }
|
|
194
193
|
}
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: DimensionWatcher, decorators: [{
|
|
196
195
|
type: Injectable,
|
|
197
196
|
args: [{ providedIn: "root" }]
|
|
198
197
|
}] });
|
|
@@ -238,10 +237,10 @@ class PositionWatcher {
|
|
|
238
237
|
};
|
|
239
238
|
}).pipe(distinctUntilChanged(isEqual), shareReplay(1)));
|
|
240
239
|
}
|
|
241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
242
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
240
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PositionWatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
241
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PositionWatcher, providedIn: "root" }); }
|
|
243
242
|
}
|
|
244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: PositionWatcher, decorators: [{
|
|
245
244
|
type: Injectable,
|
|
246
245
|
args: [{ providedIn: "root" }]
|
|
247
246
|
}] });
|
|
@@ -259,10 +258,10 @@ class RectWatcher {
|
|
|
259
258
|
}))
|
|
260
259
|
.subscribe(dest));
|
|
261
260
|
}
|
|
262
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
263
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RectWatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
262
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RectWatcher, providedIn: "root" }); }
|
|
264
263
|
}
|
|
265
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: RectWatcher, decorators: [{
|
|
266
265
|
type: Injectable,
|
|
267
266
|
args: [{ providedIn: "root" }]
|
|
268
267
|
}] });
|
|
@@ -298,10 +297,10 @@ class NodeRemovedWatcher {
|
|
|
298
297
|
});
|
|
299
298
|
}));
|
|
300
299
|
}
|
|
301
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
302
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: NodeRemovedWatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
301
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: NodeRemovedWatcher, providedIn: "root" }); }
|
|
303
302
|
}
|
|
304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.13", ngImport: i0, type: NodeRemovedWatcher, decorators: [{
|
|
305
304
|
type: Injectable,
|
|
306
305
|
args: [{ providedIn: "root" }]
|
|
307
306
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-style.mjs","sources":["../../../../packages/style/src/services/media-watcher.service.ts","../../../../packages/style/src/services/color-scheme.service.ts","../../../../packages/style/src/sass/animation/vars/index.ts","../../../../packages/style/src/services/dimension-watcher.service.ts","../../../../packages/style/src/services/position-watcher.service.ts","../../../../packages/style/src/services/rect-watcher.service.ts","../../../../packages/style/src/services/node-removed-watcher.service.ts","../../../../packages/style/src/util/alignment.ts","../../../../packages/style/src/util/in-animation.ts","../../../../packages/style/src/util/sides.ts","../../../../packages/style/src/util/rect.ts","../../../../packages/style/src/util/floating-position.ts","../../../../packages/style/src/ngutil-style.ts"],"sourcesContent":["import { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\n@Injectable({ providedIn: \"root\" })\nexport class MediaWatcher {\n readonly #zone = inject(NgZone)\n #watches: { [key: string]: Observable<boolean> } = {}\n\n /**\n * svc.watch(\"(display-mode: standalone)\").subscribe(match => {})\n */\n watch(query: string): Observable<boolean> {\n let watcher = this.#watches[query]\n if (!watcher) {\n watcher = this.#newWatcher(query)\n this.#watches[query] = watcher\n }\n return watcher\n }\n\n #newWatcher(query: string): Observable<boolean> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const queryWatcher = window.matchMedia(query)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n queryWatcher.addEventListener(\"change\", listener)\n sub.next(queryWatcher.matches)\n return () => {\n queryWatcher.removeEventListener(\"change\", listener)\n delete this.#watches[query]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n }\n}\n","import { inject, Injectable } from \"@angular/core\"\n\nimport { map, Observable, shareReplay } from \"rxjs\"\n\nimport { MediaWatcher } from \"./media-watcher.service\"\n\n@Injectable({ providedIn: \"root\" })\nexport class ColorSchemeService {\n readonly #mq = inject(MediaWatcher)\n readonly isDark: Observable<boolean> = this.#mq.watch(\"(prefers-color-scheme: dark)\")\n readonly isLight = this.isDark.pipe(\n map(v => !v),\n shareReplay(1)\n )\n\n // TODO: set preferred color scheme (dark/light)\n}\n","/* eslint-disable */\n/* eslint-disable prettier/prettier */\n/* ! AUTO GENERATED DO NOT EDIT ! */\n\nexport class Ease {\n static readonly Deceleration = \"cubic-bezier(0, 0, 0.2, 1)\" as const\n static readonly Standard = \"cubic-bezier(0.4, 0, 0.2, 1)\" as const\n static readonly Acceleration = \"cubic-bezier(0.4, 0, 1, 1)\" as const\n static readonly Sharp = \"cubic-bezier(0.4, 0, 0.6, 1)\" as const\n /**\n * Reach nearly end position fast, and slowly move to final position\n */\n static readonly Emphasized = \"cubic-bezier(0.12, 0.9, 0.12, 0.9)\" as const\n}\n\nexport class Duration {\n static readonly Fast = \"200ms\" as const\n static readonly FastMs = 200 as const\n static readonly Medium = \"300ms\" as const\n static readonly MediumMs = 300 as const\n static readonly Slow = \"400ms\" as const\n static readonly SlowMs = 400 as const\n static readonly Snail = \"600ms\" as const\n static readonly SnailMs = 600 as const\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { Dimension } from \"../util/rect\"\n\nexport type WatchBox = ResizeObserverBoxOptions | \"scroll-box\"\nexport type Watches = Map<HTMLElement | Window, Observable<Dimension>>\n\n@Injectable({ providedIn: \"root\" })\nexport class DimensionWatcher {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n readonly #watches: { [key in WatchBox]?: Watches } = {}\n\n watch(element: ElementInput | Window, box: WatchBox): Observable<Dimension> {\n element = coerceElement(element)\n\n let watches = this.#watches[box]\n if (watches == null) {\n watches = new Map()\n this.#watches[box] = watches\n }\n\n let watcher = watches.get(element)\n if (watcher == null) {\n if (element instanceof Window) {\n if (box === \"scroll-box\") {\n watcher = this.#createScollWatcher(watches, this.#document.documentElement)\n } else {\n watcher = this.#createWindowResizeWatcher()\n }\n } else {\n if (box === \"scroll-box\") {\n watcher = this.#createScollWatcher(watches, element)\n } else {\n watcher = this.#createResizeWatcher(watches, element, box)\n }\n }\n\n watches.set(element, watcher)\n }\n\n return watcher\n }\n\n #createResizeWatcher(watches: Watches, 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 this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const observer = new ResizeObserver(entries => {\n if (!this.#document.contains(el)) {\n return\n }\n\n for (const entry of entries) {\n if (entry.borderBoxSize) {\n sub.next({\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize\n })\n } else {\n sub.next({\n width: el.offsetWidth,\n height: el.offsetHeight\n })\n }\n }\n })\n observer.observe(el, { box: box as ResizeObserverBoxOptions })\n\n return () => {\n observer.disconnect()\n watches.delete(el)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n\n #createScollWatcher(watches: Watches, el: HTMLElement): Observable<Dimension> {\n const borderBox = this.watch(el, \"border-box\")\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n let lastSw: number = NaN\n let lastSh: number = NaN\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: lastSw, height: lastSh })\n }\n }\n\n const dimSum = borderBox.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 emit()\n\n return () => {\n dimSum.unsubscribe()\n mutation.disconnect()\n watches.delete(el)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n\n #createWindowResizeWatcher(): Observable<Dimension> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const onResize = () => {\n sub.next({\n width: window.innerWidth,\n height: window.innerHeight\n })\n }\n onResize()\n window.addEventListener(\"resize\", onResize)\n return () => {\n window.removeEventListener(\"resize\", onResize)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n}\n\nfunction dimensionIsEq(a: Dimension, b: Dimension) {\n return a && b && a.width === b.width && a.height === b.height\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, of, shareReplay, Subscriber } from \"rxjs\"\n\nimport { isEqual } from \"es-toolkit\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { Position } from \"../util/rect\"\n\n@Injectable({ providedIn: \"root\" })\nexport class PositionWatcher {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n readonly #watches: Map<HTMLElement, Observable<Position>> = new Map()\n\n watch(element: ElementInput | Window): Observable<Position> {\n if (element instanceof Window) {\n return of({ x: 0, y: 0 })\n }\n\n element = coerceElement(element)\n\n let watcher = this.#watches.get(element)\n if (watcher == null) {\n watcher = this.#createWatcher(element)\n this.#watches.set(element, watcher)\n }\n\n return watcher\n }\n\n #createWatcher(element: HTMLElement): Observable<Position> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((dest: Subscriber<Position>) => {\n let rafId: number | undefined = undefined\n const emit = () => {\n if (!this.#document.contains(element)) {\n return\n }\n\n const rect = element.getBoundingClientRect()\n dest.next({\n x: rect.x,\n y: rect.y\n })\n if (!dest.closed) {\n rafId = requestAnimationFrame(emit)\n }\n }\n emit()\n return () => {\n rafId && cancelAnimationFrame(rafId)\n }\n }).pipe(distinctUntilChanged(isEqual), shareReplay(1))\n )\n }\n}\n","import { inject, Injectable } from \"@angular/core\"\n\nimport { combineLatest, map, Observable, Subscriber } from \"rxjs\"\n\nimport { ElementInput } from \"@ngutil/common\"\n\nimport { Rect } from \"../util/rect\"\nimport { DimensionWatcher, WatchBox } from \"./dimension-watcher.service\"\nimport { PositionWatcher } from \"./position-watcher.service\"\n\n@Injectable({ providedIn: \"root\" })\nexport class RectWatcher {\n readonly #dimWatcher = inject(DimensionWatcher)\n readonly #posWatcher = inject(PositionWatcher)\n\n watch(element: ElementInput | Window, watchBox: WatchBox): Observable<Rect> {\n return new Observable((dest: Subscriber<Rect>) =>\n combineLatest({\n dim: this.#dimWatcher.watch(element, watchBox),\n pos: this.#posWatcher.watch(element)\n })\n .pipe(\n map(({ dim, pos }) => {\n return { ...dim, ...pos }\n })\n )\n .subscribe(dest)\n )\n }\n}\n","import { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceElement, type ElementInput } from \"@ngutil/common\"\n\n@Injectable({ providedIn: \"root\" })\nexport class NodeRemovedWatcher {\n readonly #zone = inject(NgZone)\n #watches = new Map<HTMLElement, Observable<void>>()\n\n watch(element: ElementInput): Observable<void> {\n element = coerceElement(element)\n let watcher = this.#watches.get(element)\n if (watcher == null) {\n watcher = this.#createWatcher(element)\n this.#watches.set(element, watcher)\n }\n return watcher\n }\n\n #createWatcher(element: HTMLElement): Observable<void> {\n return this.#zone.runOutsideAngular(\n () =>\n new Observable<void>(dst => {\n this.#zone.runOutsideAngular(() => {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (Array.from(mutation.removedNodes).includes(element)) {\n dst.next()\n dst.complete()\n return\n }\n }\n })\n\n observer.observe(element.parentNode!, { childList: true })\n\n return () => {\n observer.disconnect()\n }\n })\n })\n )\n }\n}\n","import { isPlainObject } from \"@ngutil/common\"\n\nconst HORIZONTAL = [\"start\", \"left\", \"center\", \"end\", \"right\"] as const\nexport type AlignHorizontal = (typeof HORIZONTAL)[number]\n\nexport const AlignHorizontalOpposite: Record<AlignHorizontal, AlignHorizontal> = {\n start: \"end\",\n left: \"right\",\n center: \"center\",\n end: \"start\",\n right: \"left\"\n}\n\nconst VERTICAL = [\"top\", \"middle\", \"bottom\"] as const\nexport type AlignVertical = (typeof VERTICAL)[number]\n\nexport const AlignVerticalOpposite: Record<AlignVertical, AlignVertical> = {\n top: \"bottom\",\n middle: \"middle\",\n bottom: \"top\"\n}\n\nexport type AlignmentInput =\n | `${AlignHorizontal} ${AlignVertical}`\n | `${AlignVertical} ${AlignHorizontal}`\n | AlignVertical\n | AlignHorizontal\n | Alignment\n\nexport interface Alignment {\n horizontal: AlignHorizontal\n vertical: AlignVertical\n}\n\nconst DEFAULT: Alignment = { horizontal: \"center\", vertical: \"middle\" }\n\nexport function alignmentNormalize(value?: AlignmentInput): Alignment {\n if (value == null) {\n return DEFAULT\n }\n\n if (isPlainObject(value)) {\n if (\"horizontal\" in value && \"vertical\" in value) {\n return value\n } else {\n throw new Error(`Invalid alignment: ${value}`)\n }\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`Invalid alignment: ${value}`)\n }\n\n const entries = Array.from(new Set(value.split(/\\s+/g))) as [string, string]\n if (entries.length > 2) {\n throw new Error(`Cannot parse: ${value}`)\n }\n\n const horizontal = HORIZONTAL.find(v => entries[0] === v || entries[1] === v) || \"center\"\n const vertical = VERTICAL.find(v => entries[0] === v || entries[1] === v) || \"middle\"\n\n return { horizontal, vertical }\n}\n\nconst HorizontalOrigin: Record<AlignHorizontal, \"left\" | \"center\" | \"right\"> = {\n start: \"left\",\n left: \"left\",\n center: \"center\",\n right: \"right\",\n end: \"right\"\n}\n\nconst VerticalOrigin: Record<AlignVertical, \"top\" | \"center\" | \"bottom\"> = {\n top: \"top\",\n middle: \"center\",\n bottom: \"bottom\"\n}\n\nexport function alignmentToTransformOrigin(alignment: Alignment): string {\n return `${HorizontalOrigin[alignment.horizontal] || \"center\"} ${VerticalOrigin[alignment.vertical] || \"center\"}`\n}\n","import { combineLatest, distinctUntilChanged, map, Observable, Subscriber } from \"rxjs\"\n\nimport { __zone_symbol__, rawCancelAnimationFrame, rawRequestAnimationFrame } from \"@ngutil/common\"\n\nconst addEventListener = __zone_symbol__(\"addEventListener\")\nconst removeEventListener = __zone_symbol__(\"removeEventListener\")\n\nexport function inAnimation<T extends HTMLElement>(el: T, animations?: string[]) {\n return _in(\n el,\n \"animationName\",\n \"animationstart\",\n \"animationiteration\",\n \"animationend\",\n \"animationcancel\",\n animations\n )\n}\n\nexport function inTransition<T extends HTMLElement>(el: T, properties?: string[]) {\n return _in(el, \"propertyName\", \"transitionstart\", \"transitionrun\", \"transitionend\", \"transitioncancel\", properties)\n}\n\nexport function isAnimating<T extends HTMLElement>(el: T) {\n return combineLatest([inAnimation(el), inTransition(el)]).pipe(\n map(values => !!(values[0] || values[1])),\n distinctUntilChanged()\n )\n}\n\nfunction _in<T extends HTMLElement>(\n el: T,\n keyName: string,\n beginName: string,\n doingName: string,\n endName: string,\n cancelName: string,\n keys?: string[]\n) {\n return new Observable((dest: Subscriber<string[] | null>) => {\n const state: { [key: string]: number } = {}\n\n const start = (event: any) => {\n const key = event[keyName]\n if (keys && keys.length > 0 && !keys.includes(key)) {\n return\n }\n\n if (key in state) {\n state[key]++\n } else {\n state[key] = 1\n }\n dest.next(Object.keys(state))\n }\n\n const doing = (event: any) => {\n const key = event[keyName]\n if (keys && keys.length > 0 && !keys.includes(key)) {\n return\n }\n\n if (!(key in state)) {\n state[key] = 1\n dest.next(Object.keys(state))\n }\n }\n\n const end = (event: any) => {\n if (event[keyName] in state) {\n const key = event[keyName]\n state[key]--\n if (state[key] <= 0) {\n delete state[key]\n }\n }\n\n if (Object.keys(state).length === 0) {\n dest.next(null)\n }\n }\n\n el[addEventListener](beginName, start)\n el[addEventListener](doingName, doing)\n el[addEventListener](endName, end)\n el[addEventListener](cancelName, end)\n\n const raf = rawRequestAnimationFrame(() => {\n if (Object.keys(state).length === 0) {\n dest.next(null)\n }\n })\n\n return () => {\n rawCancelAnimationFrame(raf)\n el[removeEventListener](beginName, start)\n el[removeEventListener](doingName, doing)\n el[removeEventListener](endName, end)\n el[removeEventListener](cancelName, end)\n }\n }).pipe(distinctUntilChanged())\n}\n","import { isPlainObject, NumberWithUnit } from \"@ngutil/common\"\n\nexport interface Sides {\n top: NumberWithUnit\n right: NumberWithUnit\n bottom: NumberWithUnit\n left: NumberWithUnit\n}\n\nexport type SidesUnit = \"px\" | \"%\"\nexport type SidesNumber = `${number}${SidesUnit}` | number\nexport type SidesInputObj = { top?: SidesNumber; right?: SidesNumber; bottom?: SidesNumber; left?: SidesNumber }\nexport type SidesInput =\n | Sides\n | SidesNumber\n | SidesInputObj\n | `${SidesNumber} ${SidesNumber}`\n | `${SidesNumber} ${SidesNumber} ${SidesNumber}`\n | `${SidesNumber} ${SidesNumber} ${SidesNumber} ${SidesNumber}`\n\nexport function sidesNormalize(value: SidesInput): Sides {\n if (isPlainObject(value)) {\n return {\n top: NumberWithUnit.coerce(value.top || 0, \"px\"),\n right: NumberWithUnit.coerce(value.right || 0, \"px\"),\n bottom: NumberWithUnit.coerce(value.bottom || 0, \"px\"),\n left: NumberWithUnit.coerce(value.left || 0, \"px\")\n }\n } else if (typeof value === \"number\") {\n return sidesNormalize(`${value}px`)\n } else if (typeof value !== \"string\") {\n throw new Error(`Invalid sides: ${value}`)\n }\n\n const entries = value.split(/\\s+/g).map(v => NumberWithUnit.coerce(v, \"px\")) as [NumberWithUnit]\n\n if (entries.length < 0 || entries.length > 4) {\n throw new Error(`Cannot parse: ${value}`)\n }\n\n return compose(...entries)\n}\n\nfunction compose(\n top: NumberWithUnit,\n right: NumberWithUnit = top,\n bottom: NumberWithUnit = top,\n left: NumberWithUnit = right\n): Sides {\n return { top, right, bottom, left }\n}\n","import { AlignHorizontal, AlignmentInput, alignmentNormalize, AlignVertical } from \"./alignment\"\nimport { SidesInput, sidesNormalize } from \"./sides\"\n\nexport interface Dimension {\n width: number\n height: number\n}\n\nexport interface Position {\n x: number\n y: number\n}\n\nexport interface Rect extends Dimension, Position {}\n\nexport function rectOrigin(rect: Rect, origin: AlignmentInput): Position {\n const originNorm = alignmentNormalize(origin)\n return { x: rectHorizontalOrigin(rect, originNorm.horizontal), y: rectVerticalOrigin(rect, originNorm.vertical) }\n}\n\nfunction rectHorizontalOrigin(rect: Rect, horizontal: AlignHorizontal): number {\n switch (horizontal) {\n case \"start\":\n case \"left\":\n return rect.x\n\n case \"center\":\n return rect.x + rect.width / 2\n\n case \"end\":\n case \"right\":\n return rect.x + rect.width\n }\n}\n\nfunction rectVerticalOrigin(rect: Rect, vertical: AlignVertical): number {\n switch (vertical) {\n case \"top\":\n return rect.y\n\n case \"middle\":\n return rect.y + rect.height / 2\n\n case \"bottom\":\n return rect.y + rect.height\n }\n}\n\nexport function rectMoveOrigin(rect: Rect | Dimension, origin: AlignmentInput, position: Position): Rect {\n const originNorm = alignmentNormalize(origin)\n return {\n ...rect,\n x: rectMoveHorizontal(rect, originNorm.horizontal, position),\n y: rectMoveVertical(rect, originNorm.vertical, position)\n }\n}\n\nfunction rectMoveHorizontal(rect: Dimension, horizontal: AlignHorizontal, position: Position): number {\n switch (horizontal) {\n case \"start\":\n case \"left\":\n return position.x\n\n case \"center\":\n return position.x - rect.width / 2\n\n case \"end\":\n case \"right\":\n return position.x - rect.width\n }\n}\n\nfunction rectMoveVertical(rect: Dimension, vertical: AlignVertical, position: Position): number {\n switch (vertical) {\n case \"top\":\n return position.y\n\n case \"middle\":\n return position.y - rect.height / 2\n\n case \"bottom\":\n return position.y - rect.height\n }\n}\n\nexport function rectConstraint(rect: Rect, constraint: Rect): Rect {\n const x = Math.max(rect.x, constraint.x)\n const y = Math.max(rect.y, constraint.y)\n return {\n x: x,\n y: y,\n width: Math.min(x + rect.width, constraint.x + constraint.width) - x,\n height: Math.min(y + rect.height, constraint.y + constraint.height) - y\n }\n}\nexport function rectExpand(rect: Rect, margin: SidesInput): Rect {\n const marginNorm = sidesNormalize(margin)\n return {\n x: rect.x - marginNorm.left.value,\n y: rect.y - marginNorm.top.value,\n width: rect.width + marginNorm.left.value + marginNorm.right.value,\n height: rect.height + marginNorm.top.value + marginNorm.bottom.value\n }\n}\n\nexport function rectContract(rect: Rect, padding: SidesInput): Rect {\n const normMargin = sidesNormalize(padding)\n return {\n x: rect.x + normMargin.left.value,\n y: rect.y + normMargin.top.value,\n width: rect.width - normMargin.left.value - normMargin.right.value,\n height: rect.height - normMargin.top.value - normMargin.bottom.value\n }\n}\n\nexport function rectContainsPoint(rect: Rect, point: Position): boolean {\n return point.x >= rect.x && point.x < rect.x + rect.width && point.y >= rect.y && point.y < rect.y + rect.height\n}\n","import { clamp } from \"es-toolkit\"\n\nimport {\n AlignHorizontalOpposite,\n Alignment,\n AlignmentInput,\n alignmentNormalize,\n AlignVerticalOpposite\n} from \"./alignment\"\n// import type { FloatingPositionOptionsNormalized } from \"./position\"\nimport { Dimension, Position, Rect, rectContract, rectExpand, rectMoveOrigin, rectOrigin } from \"./rect\"\nimport { Sides, SidesInput, sidesNormalize } from \"./sides\"\n\nexport interface FloatingPositionInput {\n dims: FloatingPositionDims\n options: FloatingPositionOptions\n}\n\nexport interface FloatingPositionDims {\n content: Dimension\n anchor: Rect\n placement: Rect\n constraints?: FloatingPositionConstraintsInput\n}\n\nexport interface FloatingPositionOptions {\n content: FloatingPositionContentOptions\n anchor: FloatingPositionAnchorOptions\n placement: FloatingPositionPlacementOptions\n horizontalAlt?: FloatingPositionAltInput\n verticalAlt?: FloatingPositionAltInput\n}\n\nexport interface FloatingPositionContentOptions {\n link: AlignmentInput\n}\n\nexport interface FloatingPositionConstraintsInput {\n minWidth?: number\n maxWidth?: number\n minHeight?: number\n maxHeight?: number\n}\n\nexport interface FloatingPositionAnchorOptions {\n link: AlignmentInput\n margin?: SidesInput\n}\n\nexport interface FloatingPositionPlacementOptions {\n padding?: SidesInput\n}\n\nexport interface FloatingPosition {\n content: {\n rect: Position & Readonly<Dimension>\n link: Alignment\n readonly constrained: Readonly<Dimension>\n }\n anchor: {\n readonly rect: Readonly<Rect>\n link: Alignment\n }\n placement: {\n readonly rect: Readonly<Rect>\n readonly padding: Readonly<Sides>\n readonly rectWithPadding: Readonly<Rect>\n area: Readonly<Rect>\n }\n connection: Position\n direction: FloatingPositionDirection\n constraints?: FloatingPositionConstraintsInput\n}\n\ninterface PlacementArea {\n anchorLink: Alignment\n contentLink: Alignment\n area: FloatingPosition[\"placement\"][\"area\"]\n connection: Position\n}\n\ntype FloatingPositionAltConst =\n | \"none\"\n | \"flip\"\n | \"shift\"\n | \"flip-shift\"\n | \"greatest\"\n | \"greatest-shift\"\n | \"smallest\"\n | \"smallest-shift\"\nexport type FloatingPositionAltInput = FloatingPositionAltConst | FloatingPositionAltFunc\nexport type FloatingPositionAltFunc = (pos: FloatingPosition, axis: FloatingPositionAltAxis) => void\nexport type FloatingPositionAltNorm = Array<FloatingPositionAltFunc>\n\nexport const enum FloatingPositionAltAxis {\n Horizontal = \"H\",\n Vertical = \"V\"\n}\n\nconst ZERO_PADDING = sidesNormalize(0)\nconst ZERO_CONNECTION = { x: 0, y: 0 }\n\nexport function floatingPosition({ dims, options }: FloatingPositionInput): FloatingPosition {\n const padding = options.placement.padding ? sidesNormalize(options.placement.padding) : ZERO_PADDING\n const placement: FloatingPosition[\"placement\"] = {\n rect: dims.placement,\n padding: padding,\n rectWithPadding: rectContract(dims.placement, padding),\n area: { ...dims.placement }\n }\n\n const anchor: FloatingPosition[\"anchor\"] = {\n rect: options.anchor.margin ? rectExpand(dims.anchor, options.anchor.margin) : dims.anchor,\n link: alignmentNormalize(options.anchor.link)\n }\n\n const minWidth = dims.constraints?.minWidth || 0\n const minHeight = dims.constraints?.minHeight || 0\n const maxWidth = dims.constraints?.maxWidth || Infinity\n const maxHeight = dims.constraints?.maxHeight || Infinity\n const content: FloatingPosition[\"content\"] = {\n rect: { x: 0, y: 0, ...dims.content },\n link: alignmentNormalize(options.content.link),\n constrained: {\n width: clamp(dims.content.width, minWidth, maxWidth),\n height: clamp(dims.content.height, minHeight, maxHeight)\n }\n }\n\n const position = {\n placement,\n anchor,\n content,\n connection: ZERO_CONNECTION,\n constrains: dims.constraints,\n direction: FloatingPositionDirection.Down\n }\n const area = placementArea(position, anchor.link, content.link)\n setPlacement(position, area)\n\n if (options.horizontalAlt) {\n applyAlts(position, FloatingPositionAltAxis.Horizontal, options.horizontalAlt)\n }\n\n if (options.verticalAlt) {\n applyAlts(position, FloatingPositionAltAxis.Vertical, options.verticalAlt)\n }\n\n position.direction = floatingPositionDirection(position)\n return position\n}\n\nfunction placementArea(pos: FloatingPosition, anchorLink: Alignment, contentLink: Alignment): PlacementArea {\n const connection = rectOrigin(pos.anchor.rect, anchorLink)\n let { x, y } = connection\n const placement = pos.placement.rect\n const placementPad = pos.placement.padding\n let width = 0\n let height = 0\n\n switch (contentLink.horizontal) {\n case \"left\":\n case \"start\":\n width = placement.width - x\n break\n case \"center\":\n if (anchorLink.horizontal === \"center\") {\n width = placement.width\n x = placement.x\n } else {\n const leftSize = x - placementPad.left.value\n const rightSize = placement.width - x - placementPad.right.value\n const mw = Math.max(0, Math.min(leftSize, rightSize))\n width = mw * 2\n x -= mw\n }\n break\n case \"end\":\n case \"right\":\n width = x - placement.x\n x = placement.x\n break\n }\n\n switch (contentLink.vertical) {\n case \"top\":\n height = placement.height - y\n break\n case \"middle\":\n if (anchorLink.vertical === \"middle\") {\n height = placement.height\n y = placement.y\n } else {\n const topSize = y - placementPad.top.value\n const bottomSize = placement.height - y - placementPad.bottom.value\n const mh = Math.max(0, Math.min(topSize, bottomSize))\n height = mh * 2\n y -= mh\n }\n\n break\n case \"bottom\":\n height = y - placement.y\n y = placement.y\n break\n }\n\n const constraint = pos.placement.rectWithPadding\n const newX = Math.max(x, constraint.x)\n const newY = Math.max(y, constraint.y)\n const diffX = newX - x\n const diffY = newY - y\n\n const area = {\n x: newX,\n y: newY,\n width: Math.min(newX + width - diffX, constraint.x + constraint.width) - newX,\n height: Math.min(newY + height - diffY, constraint.y + constraint.height) - newY\n }\n\n return { area, contentLink, anchorLink, connection }\n}\n\nfunction setPlacement(position: FloatingPosition, { area, anchorLink, contentLink, connection }: PlacementArea): void {\n position.placement.area = area\n position.anchor.link = anchorLink\n position.content.link = contentLink\n\n const plannedContentRect = rectMoveOrigin(position.content.rect, contentLink, connection)\n position.connection = adjustConnection(area, plannedContentRect, connection)\n position.content.rect = rectMoveOrigin(position.content.rect, contentLink, connection)\n}\n\nfunction adjustConnection(\n placement: FloatingPosition[\"placement\"][\"area\"],\n content: FloatingPosition[\"content\"][\"rect\"],\n connection: FloatingPosition[\"connection\"]\n) {\n const x = Math.max(placement.x, content.x)\n const y = Math.max(placement.y, content.y)\n const leftDiff = x - content.x\n const topDiff = y - content.y\n const widthDiff = placement.x + placement.width - (x + content.width)\n const heightDiff = placement.y + placement.height - (y + content.height)\n\n const result = { ...connection }\n connection.x += leftDiff\n connection.y += topDiff\n\n if (widthDiff < 0) {\n connection.x += widthDiff\n }\n\n if (heightDiff < 0) {\n connection.y += heightDiff\n }\n return result\n}\n\nfunction applyAlts(pos: FloatingPosition, axis: FloatingPositionAltAxis, alts: FloatingPositionAltInput) {\n const norm = positionAltNormalize(alts)\n for (const alt of norm) {\n alt(pos, axis)\n }\n}\n\nexport function positionAltNormalize(\n input: FloatingPositionAltInput | FloatingPositionAltNorm\n): FloatingPositionAltNorm {\n if (Array.isArray(input)) {\n return input\n } else if (typeof input === \"function\") {\n return [input]\n } else if (typeof input === \"string\") {\n return altStringToFns(input)\n } else {\n throw new Error(`Invalid alt position: ${input}`)\n }\n}\n\nfunction altStringToFns(input: FloatingPositionAltConst): FloatingPositionAltNorm {\n switch (input) {\n case \"none\":\n return [none]\n case \"flip\":\n return [flip]\n case \"shift\":\n return [shift]\n case \"flip-shift\":\n return [flip, shift]\n case \"greatest\":\n return [greatest]\n case \"greatest-shift\":\n return [greatest, shift]\n case \"smallest\":\n return [smallest]\n case \"smallest-shift\":\n return [smallest, shift]\n }\n}\n\nfunction none(pos: FloatingPosition, axis: FloatingPositionAltAxis): void { }\n\nfunction flip(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n const wh: \"width\" | \"height\" = axis === FloatingPositionAltAxis.Horizontal ? \"width\" : \"height\"\n if (pos.placement.area[wh] >= pos.content.constrained[wh]) {\n return\n }\n return greatest(pos, axis)\n}\n\nfunction shift(pos: FloatingPosition, axis: FloatingPositionAltAxis): void { }\n\nfunction greatest(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n _bySize(pos, axis, (a, b) => a >= b)\n}\n\nfunction smallest(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n _bySize(pos, axis, (a, b) => a <= b)\n}\n\nfunction _bySize(pos: FloatingPosition, axis: FloatingPositionAltAxis, cmp: (a: number, b: number) => boolean): void {\n const wh: \"width\" | \"height\" = axis === FloatingPositionAltAxis.Horizontal ? \"width\" : \"height\"\n\n const current = pos.placement.area[wh]\n const anchorLink = oppositeLink(axis, pos.anchor.link)\n const contentLink = oppositeLink(axis, pos.content.link)\n const oppositePlacement = placementArea(pos, anchorLink, contentLink)\n\n if (cmp(current, oppositePlacement.area[wh])) {\n return\n }\n\n setPlacement(pos, oppositePlacement)\n}\n\nfunction oppositeLink(axis: FloatingPositionAltAxis, link: Alignment): Alignment {\n if (axis === FloatingPositionAltAxis.Horizontal) {\n return { horizontal: AlignHorizontalOpposite[link.horizontal], vertical: link.vertical }\n } else {\n return { horizontal: link.horizontal, vertical: AlignVerticalOpposite[link.vertical] }\n }\n}\n\nexport function floatingPositionToStyle(pos: Readonly<FloatingPosition>): Partial<CSSStyleDeclaration> {\n const contentRect = pos.content.rect\n const placementRect = pos.placement.rect\n // const { width: maxWidth, height: maxHeight } = pos.placement.area\n const style: Partial<CSSStyleDeclaration> = {}\n\n if (pos.content.link.horizontal === \"right\") {\n style[\"right\"] = `${placementRect.width - (contentRect.x + contentRect.width)}px`\n style[\"left\"] = \"auto\"\n } else {\n style[\"left\"] = `${contentRect.x}px`\n style[\"right\"] = \"auto\"\n }\n\n if (pos.content.link.vertical === \"bottom\") {\n style[\"bottom\"] = `${placementRect.height - (contentRect.y + contentRect.height)}px`\n style[\"top\"] = \"auto\"\n } else {\n style[\"top\"] = `${contentRect.y}px`\n style[\"bottom\"] = \"auto\"\n }\n\n // style[\"maxWidth\"] = `${maxWidth}px`\n // style[\"maxHeight\"] = `${maxHeight}px`\n\n return style\n}\n\nexport const enum FloatingPositionDirection {\n Up = \"up\",\n Down = \"down\",\n Left = \"left\",\n Right = \"right\",\n Center = \"center\"\n}\n\nexport function floatingPositionDirection(pos: Readonly<FloatingPosition>): FloatingPositionDirection {\n const { x: ax, y: ay, width: aw, height: ah } = pos.anchor.rect\n const { x: bx, y: by, width: bw, height: bh } = pos.content.rect\n const contentLink = pos.content.link\n const anchorLink = pos.anchor.link\n\n if (anchorLink.horizontal === \"center\" && anchorLink.vertical === \"middle\") {\n if (contentLink.horizontal === \"center\" && contentLink.vertical === \"middle\") {\n return FloatingPositionDirection.Center\n }\n\n const cx = pos.connection.x\n if (cx <= bx) {\n return FloatingPositionDirection.Right\n } else if (cx >= bx + bw) {\n return FloatingPositionDirection.Left\n }\n }\n\n const widthOverlapPx = Math.min(ax + aw, bx + bw) - Math.max(ax, bx)\n const widthOverlapPercent = widthOverlapPx / Math.max(aw, bw)\n const heightOverlapPx = Math.min(ay + ah, by + bh) - Math.max(ay, by)\n const heightOverlapPercent = heightOverlapPx / Math.max(ah, bh)\n\n if (widthOverlapPercent >= heightOverlapPercent) {\n if (contentLink.vertical === \"bottom\") {\n return FloatingPositionDirection.Up\n }\n\n return FloatingPositionDirection.Down\n } else {\n if (contentLink.horizontal === \"right\") {\n return FloatingPositionDirection.Left\n }\n\n return FloatingPositionDirection.Right\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-style.mjs","sources":["../../../../packages/style/src/services/media-watcher.service.ts","../../../../packages/style/src/services/color-scheme.service.ts","../../../../packages/style/src/sass/animation/vars/index.ts","../../../../packages/style/src/services/dimension-watcher.service.ts","../../../../packages/style/src/services/position-watcher.service.ts","../../../../packages/style/src/services/rect-watcher.service.ts","../../../../packages/style/src/services/node-removed-watcher.service.ts","../../../../packages/style/src/util/alignment.ts","../../../../packages/style/src/util/in-animation.ts","../../../../packages/style/src/util/sides.ts","../../../../packages/style/src/util/rect.ts","../../../../packages/style/src/util/floating-position.ts","../../../../packages/style/src/ngutil-style.ts"],"sourcesContent":["import { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\n@Injectable({ providedIn: \"root\" })\nexport class MediaWatcher {\n readonly #zone = inject(NgZone)\n #watches: { [key: string]: Observable<boolean> } = {}\n\n /**\n * svc.watch(\"(display-mode: standalone)\").subscribe(match => {})\n */\n watch(query: string): Observable<boolean> {\n let watcher = this.#watches[query]\n if (!watcher) {\n watcher = this.#newWatcher(query)\n this.#watches[query] = watcher\n }\n return watcher\n }\n\n #newWatcher(query: string): Observable<boolean> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const queryWatcher = window.matchMedia(query)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n queryWatcher.addEventListener(\"change\", listener)\n sub.next(queryWatcher.matches)\n return () => {\n queryWatcher.removeEventListener(\"change\", listener)\n delete this.#watches[query]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n }\n}\n","import { inject, Injectable } from \"@angular/core\"\n\nimport { map, Observable, shareReplay } from \"rxjs\"\n\nimport { MediaWatcher } from \"./media-watcher.service\"\n\n@Injectable({ providedIn: \"root\" })\nexport class ColorSchemeService {\n readonly #mq = inject(MediaWatcher)\n readonly isDark: Observable<boolean> = this.#mq.watch(\"(prefers-color-scheme: dark)\")\n readonly isLight = this.isDark.pipe(\n map(v => !v),\n shareReplay(1)\n )\n\n // TODO: set preferred color scheme (dark/light)\n}\n","/* eslint-disable */\n/* eslint-disable prettier/prettier */\n/* ! AUTO GENERATED DO NOT EDIT ! */\n\nexport class Ease {\n static readonly Deceleration = \"cubic-bezier(0, 0, 0.2, 1)\" as const\n static readonly Standard = \"cubic-bezier(0.4, 0, 0.2, 1)\" as const\n static readonly Acceleration = \"cubic-bezier(0.4, 0, 1, 1)\" as const\n static readonly Sharp = \"cubic-bezier(0.4, 0, 0.6, 1)\" as const\n /**\n * Reach nearly end position fast, and slowly move to final position\n */\n static readonly Emphasized = \"cubic-bezier(0.12, 0.9, 0.12, 0.9)\" as const\n}\n\nexport class Duration {\n static readonly Fast = \"200ms\" as const\n static readonly FastMs = 200 as const\n static readonly Medium = \"300ms\" as const\n static readonly MediumMs = 300 as const\n static readonly Slow = \"400ms\" as const\n static readonly SlowMs = 400 as const\n static readonly Snail = \"600ms\" as const\n static readonly SnailMs = 600 as const\n}\n","\nimport { inject, Injectable, NgZone, DOCUMENT } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { Dimension } from \"../util/rect\"\n\nexport type WatchBox = ResizeObserverBoxOptions | \"scroll-box\"\nexport type Watches = Map<HTMLElement | Window, Observable<Dimension>>\n\n@Injectable({ providedIn: \"root\" })\nexport class DimensionWatcher {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n readonly #watches: { [key in WatchBox]?: Watches } = {}\n\n watch(element: ElementInput | Window, box: WatchBox): Observable<Dimension> {\n element = coerceElement(element)\n\n let watches = this.#watches[box]\n if (watches == null) {\n watches = new Map()\n this.#watches[box] = watches\n }\n\n let watcher = watches.get(element)\n if (watcher == null) {\n if (element instanceof Window) {\n if (box === \"scroll-box\") {\n watcher = this.#createScollWatcher(watches, this.#document.documentElement)\n } else {\n watcher = this.#createWindowResizeWatcher()\n }\n } else {\n if (box === \"scroll-box\") {\n watcher = this.#createScollWatcher(watches, element)\n } else {\n watcher = this.#createResizeWatcher(watches, element, box)\n }\n }\n\n watches.set(element, watcher)\n }\n\n return watcher\n }\n\n #createResizeWatcher(watches: Watches, 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 this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const observer = new ResizeObserver(entries => {\n if (!this.#document.contains(el)) {\n return\n }\n\n for (const entry of entries) {\n if (entry.borderBoxSize) {\n sub.next({\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize\n })\n } else {\n sub.next({\n width: el.offsetWidth,\n height: el.offsetHeight\n })\n }\n }\n })\n observer.observe(el, { box: box as ResizeObserverBoxOptions })\n\n return () => {\n observer.disconnect()\n watches.delete(el)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n\n #createScollWatcher(watches: Watches, el: HTMLElement): Observable<Dimension> {\n const borderBox = this.watch(el, \"border-box\")\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n let lastSw: number = NaN\n let lastSh: number = NaN\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: lastSw, height: lastSh })\n }\n }\n\n const dimSum = borderBox.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 emit()\n\n return () => {\n dimSum.unsubscribe()\n mutation.disconnect()\n watches.delete(el)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n\n #createWindowResizeWatcher(): Observable<Dimension> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const onResize = () => {\n sub.next({\n width: window.innerWidth,\n height: window.innerHeight\n })\n }\n onResize()\n window.addEventListener(\"resize\", onResize)\n return () => {\n window.removeEventListener(\"resize\", onResize)\n }\n }).pipe(distinctUntilChanged(dimensionIsEq), shareReplay(1))\n )\n }\n}\n\nfunction dimensionIsEq(a: Dimension, b: Dimension) {\n return a && b && a.width === b.width && a.height === b.height\n}\n","\nimport { inject, Injectable, NgZone, DOCUMENT } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, of, shareReplay, Subscriber } from \"rxjs\"\n\nimport { isEqual } from \"es-toolkit\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { Position } from \"../util/rect\"\n\n@Injectable({ providedIn: \"root\" })\nexport class PositionWatcher {\n readonly #zone = inject(NgZone)\n readonly #document = inject(DOCUMENT)\n readonly #watches: Map<HTMLElement, Observable<Position>> = new Map()\n\n watch(element: ElementInput | Window): Observable<Position> {\n if (element instanceof Window) {\n return of({ x: 0, y: 0 })\n }\n\n element = coerceElement(element)\n\n let watcher = this.#watches.get(element)\n if (watcher == null) {\n watcher = this.#createWatcher(element)\n this.#watches.set(element, watcher)\n }\n\n return watcher\n }\n\n #createWatcher(element: HTMLElement): Observable<Position> {\n return this.#zone.runOutsideAngular(() =>\n new Observable((dest: Subscriber<Position>) => {\n let rafId: number | undefined = undefined\n const emit = () => {\n if (!this.#document.contains(element)) {\n return\n }\n\n const rect = element.getBoundingClientRect()\n dest.next({\n x: rect.x,\n y: rect.y\n })\n if (!dest.closed) {\n rafId = requestAnimationFrame(emit)\n }\n }\n emit()\n return () => {\n rafId && cancelAnimationFrame(rafId)\n }\n }).pipe(distinctUntilChanged(isEqual), shareReplay(1))\n )\n }\n}\n","import { inject, Injectable } from \"@angular/core\"\n\nimport { combineLatest, map, Observable, Subscriber } from \"rxjs\"\n\nimport { ElementInput } from \"@ngutil/common\"\n\nimport { Rect } from \"../util/rect\"\nimport { DimensionWatcher, WatchBox } from \"./dimension-watcher.service\"\nimport { PositionWatcher } from \"./position-watcher.service\"\n\n@Injectable({ providedIn: \"root\" })\nexport class RectWatcher {\n readonly #dimWatcher = inject(DimensionWatcher)\n readonly #posWatcher = inject(PositionWatcher)\n\n watch(element: ElementInput | Window, watchBox: WatchBox): Observable<Rect> {\n return new Observable((dest: Subscriber<Rect>) =>\n combineLatest({\n dim: this.#dimWatcher.watch(element, watchBox),\n pos: this.#posWatcher.watch(element)\n })\n .pipe(\n map(({ dim, pos }) => {\n return { ...dim, ...pos }\n })\n )\n .subscribe(dest)\n )\n }\n}\n","import { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceElement, type ElementInput } from \"@ngutil/common\"\n\n@Injectable({ providedIn: \"root\" })\nexport class NodeRemovedWatcher {\n readonly #zone = inject(NgZone)\n #watches = new Map<HTMLElement, Observable<void>>()\n\n watch(element: ElementInput): Observable<void> {\n element = coerceElement(element)\n let watcher = this.#watches.get(element)\n if (watcher == null) {\n watcher = this.#createWatcher(element)\n this.#watches.set(element, watcher)\n }\n return watcher\n }\n\n #createWatcher(element: HTMLElement): Observable<void> {\n return this.#zone.runOutsideAngular(\n () =>\n new Observable<void>(dst => {\n this.#zone.runOutsideAngular(() => {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (Array.from(mutation.removedNodes).includes(element)) {\n dst.next()\n dst.complete()\n return\n }\n }\n })\n\n observer.observe(element.parentNode!, { childList: true })\n\n return () => {\n observer.disconnect()\n }\n })\n })\n )\n }\n}\n","import { isPlainObject } from \"@ngutil/common\"\n\nconst HORIZONTAL = [\"start\", \"left\", \"center\", \"end\", \"right\"] as const\nexport type AlignHorizontal = (typeof HORIZONTAL)[number]\n\nexport const AlignHorizontalOpposite: Record<AlignHorizontal, AlignHorizontal> = {\n start: \"end\",\n left: \"right\",\n center: \"center\",\n end: \"start\",\n right: \"left\"\n}\n\nconst VERTICAL = [\"top\", \"middle\", \"bottom\"] as const\nexport type AlignVertical = (typeof VERTICAL)[number]\n\nexport const AlignVerticalOpposite: Record<AlignVertical, AlignVertical> = {\n top: \"bottom\",\n middle: \"middle\",\n bottom: \"top\"\n}\n\nexport type AlignmentInput =\n | `${AlignHorizontal} ${AlignVertical}`\n | `${AlignVertical} ${AlignHorizontal}`\n | AlignVertical\n | AlignHorizontal\n | Alignment\n\nexport interface Alignment {\n horizontal: AlignHorizontal\n vertical: AlignVertical\n}\n\nconst DEFAULT: Alignment = { horizontal: \"center\", vertical: \"middle\" }\n\nexport function alignmentNormalize(value?: AlignmentInput): Alignment {\n if (value == null) {\n return DEFAULT\n }\n\n if (isPlainObject(value)) {\n if (\"horizontal\" in value && \"vertical\" in value) {\n return value\n } else {\n throw new Error(`Invalid alignment: ${value}`)\n }\n }\n\n if (typeof value !== \"string\") {\n throw new Error(`Invalid alignment: ${value}`)\n }\n\n const entries = Array.from(new Set(value.split(/\\s+/g))) as [string, string]\n if (entries.length > 2) {\n throw new Error(`Cannot parse: ${value}`)\n }\n\n const horizontal = HORIZONTAL.find(v => entries[0] === v || entries[1] === v) || \"center\"\n const vertical = VERTICAL.find(v => entries[0] === v || entries[1] === v) || \"middle\"\n\n return { horizontal, vertical }\n}\n\nconst HorizontalOrigin: Record<AlignHorizontal, \"left\" | \"center\" | \"right\"> = {\n start: \"left\",\n left: \"left\",\n center: \"center\",\n right: \"right\",\n end: \"right\"\n}\n\nconst VerticalOrigin: Record<AlignVertical, \"top\" | \"center\" | \"bottom\"> = {\n top: \"top\",\n middle: \"center\",\n bottom: \"bottom\"\n}\n\nexport function alignmentToTransformOrigin(alignment: Alignment): string {\n return `${HorizontalOrigin[alignment.horizontal] || \"center\"} ${VerticalOrigin[alignment.vertical] || \"center\"}`\n}\n","import { combineLatest, distinctUntilChanged, map, Observable, Subscriber } from \"rxjs\"\n\nimport { __zone_symbol__, rawCancelAnimationFrame, rawRequestAnimationFrame } from \"@ngutil/common\"\n\nconst addEventListener = __zone_symbol__(\"addEventListener\")\nconst removeEventListener = __zone_symbol__(\"removeEventListener\")\n\nexport function inAnimation<T extends HTMLElement>(el: T, animations?: string[]) {\n return _in(\n el,\n \"animationName\",\n \"animationstart\",\n \"animationiteration\",\n \"animationend\",\n \"animationcancel\",\n animations\n )\n}\n\nexport function inTransition<T extends HTMLElement>(el: T, properties?: string[]) {\n return _in(el, \"propertyName\", \"transitionstart\", \"transitionrun\", \"transitionend\", \"transitioncancel\", properties)\n}\n\nexport function isAnimating<T extends HTMLElement>(el: T) {\n return combineLatest([inAnimation(el), inTransition(el)]).pipe(\n map(values => !!(values[0] || values[1])),\n distinctUntilChanged()\n )\n}\n\nfunction _in<T extends HTMLElement>(\n el: T,\n keyName: string,\n beginName: string,\n doingName: string,\n endName: string,\n cancelName: string,\n keys?: string[]\n) {\n return new Observable((dest: Subscriber<string[] | null>) => {\n const state: { [key: string]: number } = {}\n\n const start = (event: any) => {\n const key = event[keyName]\n if (keys && keys.length > 0 && !keys.includes(key)) {\n return\n }\n\n if (key in state) {\n state[key]++\n } else {\n state[key] = 1\n }\n dest.next(Object.keys(state))\n }\n\n const doing = (event: any) => {\n const key = event[keyName]\n if (keys && keys.length > 0 && !keys.includes(key)) {\n return\n }\n\n if (!(key in state)) {\n state[key] = 1\n dest.next(Object.keys(state))\n }\n }\n\n const end = (event: any) => {\n if (event[keyName] in state) {\n const key = event[keyName]\n state[key]--\n if (state[key] <= 0) {\n delete state[key]\n }\n }\n\n if (Object.keys(state).length === 0) {\n dest.next(null)\n }\n }\n\n el[addEventListener](beginName, start)\n el[addEventListener](doingName, doing)\n el[addEventListener](endName, end)\n el[addEventListener](cancelName, end)\n\n const raf = rawRequestAnimationFrame(() => {\n if (Object.keys(state).length === 0) {\n dest.next(null)\n }\n })\n\n return () => {\n rawCancelAnimationFrame(raf)\n el[removeEventListener](beginName, start)\n el[removeEventListener](doingName, doing)\n el[removeEventListener](endName, end)\n el[removeEventListener](cancelName, end)\n }\n }).pipe(distinctUntilChanged())\n}\n","import { isPlainObject, NumberWithUnit } from \"@ngutil/common\"\n\nexport interface Sides {\n top: NumberWithUnit\n right: NumberWithUnit\n bottom: NumberWithUnit\n left: NumberWithUnit\n}\n\nexport type SidesUnit = \"px\" | \"%\"\nexport type SidesNumber = `${number}${SidesUnit}` | number\nexport type SidesInputObj = { top?: SidesNumber; right?: SidesNumber; bottom?: SidesNumber; left?: SidesNumber }\nexport type SidesInput =\n | Sides\n | SidesNumber\n | SidesInputObj\n | `${SidesNumber} ${SidesNumber}`\n | `${SidesNumber} ${SidesNumber} ${SidesNumber}`\n | `${SidesNumber} ${SidesNumber} ${SidesNumber} ${SidesNumber}`\n\nexport function sidesNormalize(value: SidesInput): Sides {\n if (isPlainObject(value)) {\n return {\n top: NumberWithUnit.coerce(value.top || 0, \"px\"),\n right: NumberWithUnit.coerce(value.right || 0, \"px\"),\n bottom: NumberWithUnit.coerce(value.bottom || 0, \"px\"),\n left: NumberWithUnit.coerce(value.left || 0, \"px\")\n }\n } else if (typeof value === \"number\") {\n return sidesNormalize(`${value}px`)\n } else if (typeof value !== \"string\") {\n throw new Error(`Invalid sides: ${value}`)\n }\n\n const entries = value.split(/\\s+/g).map(v => NumberWithUnit.coerce(v, \"px\")) as [NumberWithUnit]\n\n if (entries.length < 0 || entries.length > 4) {\n throw new Error(`Cannot parse: ${value}`)\n }\n\n return compose(...entries)\n}\n\nfunction compose(\n top: NumberWithUnit,\n right: NumberWithUnit = top,\n bottom: NumberWithUnit = top,\n left: NumberWithUnit = right\n): Sides {\n return { top, right, bottom, left }\n}\n","import { AlignHorizontal, AlignmentInput, alignmentNormalize, AlignVertical } from \"./alignment\"\nimport { SidesInput, sidesNormalize } from \"./sides\"\n\nexport interface Dimension {\n width: number\n height: number\n}\n\nexport interface Position {\n x: number\n y: number\n}\n\nexport interface Rect extends Dimension, Position {}\n\nexport function rectOrigin(rect: Rect, origin: AlignmentInput): Position {\n const originNorm = alignmentNormalize(origin)\n return { x: rectHorizontalOrigin(rect, originNorm.horizontal), y: rectVerticalOrigin(rect, originNorm.vertical) }\n}\n\nfunction rectHorizontalOrigin(rect: Rect, horizontal: AlignHorizontal): number {\n switch (horizontal) {\n case \"start\":\n case \"left\":\n return rect.x\n\n case \"center\":\n return rect.x + rect.width / 2\n\n case \"end\":\n case \"right\":\n return rect.x + rect.width\n }\n}\n\nfunction rectVerticalOrigin(rect: Rect, vertical: AlignVertical): number {\n switch (vertical) {\n case \"top\":\n return rect.y\n\n case \"middle\":\n return rect.y + rect.height / 2\n\n case \"bottom\":\n return rect.y + rect.height\n }\n}\n\nexport function rectMoveOrigin(rect: Rect | Dimension, origin: AlignmentInput, position: Position): Rect {\n const originNorm = alignmentNormalize(origin)\n return {\n ...rect,\n x: rectMoveHorizontal(rect, originNorm.horizontal, position),\n y: rectMoveVertical(rect, originNorm.vertical, position)\n }\n}\n\nfunction rectMoveHorizontal(rect: Dimension, horizontal: AlignHorizontal, position: Position): number {\n switch (horizontal) {\n case \"start\":\n case \"left\":\n return position.x\n\n case \"center\":\n return position.x - rect.width / 2\n\n case \"end\":\n case \"right\":\n return position.x - rect.width\n }\n}\n\nfunction rectMoveVertical(rect: Dimension, vertical: AlignVertical, position: Position): number {\n switch (vertical) {\n case \"top\":\n return position.y\n\n case \"middle\":\n return position.y - rect.height / 2\n\n case \"bottom\":\n return position.y - rect.height\n }\n}\n\nexport function rectConstraint(rect: Rect, constraint: Rect): Rect {\n const x = Math.max(rect.x, constraint.x)\n const y = Math.max(rect.y, constraint.y)\n return {\n x: x,\n y: y,\n width: Math.min(x + rect.width, constraint.x + constraint.width) - x,\n height: Math.min(y + rect.height, constraint.y + constraint.height) - y\n }\n}\nexport function rectExpand(rect: Rect, margin: SidesInput): Rect {\n const marginNorm = sidesNormalize(margin)\n return {\n x: rect.x - marginNorm.left.value,\n y: rect.y - marginNorm.top.value,\n width: rect.width + marginNorm.left.value + marginNorm.right.value,\n height: rect.height + marginNorm.top.value + marginNorm.bottom.value\n }\n}\n\nexport function rectContract(rect: Rect, padding: SidesInput): Rect {\n const normMargin = sidesNormalize(padding)\n return {\n x: rect.x + normMargin.left.value,\n y: rect.y + normMargin.top.value,\n width: rect.width - normMargin.left.value - normMargin.right.value,\n height: rect.height - normMargin.top.value - normMargin.bottom.value\n }\n}\n\nexport function rectContainsPoint(rect: Rect, point: Position): boolean {\n return point.x >= rect.x && point.x < rect.x + rect.width && point.y >= rect.y && point.y < rect.y + rect.height\n}\n","import { clamp } from \"es-toolkit\"\n\nimport {\n AlignHorizontalOpposite,\n Alignment,\n AlignmentInput,\n alignmentNormalize,\n AlignVerticalOpposite\n} from \"./alignment\"\n// import type { FloatingPositionOptionsNormalized } from \"./position\"\nimport { Dimension, Position, Rect, rectContract, rectExpand, rectMoveOrigin, rectOrigin } from \"./rect\"\nimport { Sides, SidesInput, sidesNormalize } from \"./sides\"\n\nexport interface FloatingPositionInput {\n dims: FloatingPositionDims\n options: FloatingPositionOptions\n}\n\nexport interface FloatingPositionDims {\n content: Dimension\n anchor: Rect\n placement: Rect\n constraints?: FloatingPositionConstraintsInput\n}\n\nexport interface FloatingPositionOptions {\n content: FloatingPositionContentOptions\n anchor: FloatingPositionAnchorOptions\n placement: FloatingPositionPlacementOptions\n horizontalAlt?: FloatingPositionAltInput\n verticalAlt?: FloatingPositionAltInput\n}\n\nexport interface FloatingPositionContentOptions {\n link: AlignmentInput\n}\n\nexport interface FloatingPositionConstraintsInput {\n minWidth?: number\n maxWidth?: number\n minHeight?: number\n maxHeight?: number\n}\n\nexport interface FloatingPositionAnchorOptions {\n link: AlignmentInput\n margin?: SidesInput\n}\n\nexport interface FloatingPositionPlacementOptions {\n padding?: SidesInput\n}\n\nexport interface FloatingPosition {\n content: {\n rect: Position & Readonly<Dimension>\n link: Alignment\n readonly constrained: Readonly<Dimension>\n }\n anchor: {\n readonly rect: Readonly<Rect>\n link: Alignment\n }\n placement: {\n readonly rect: Readonly<Rect>\n readonly padding: Readonly<Sides>\n readonly rectWithPadding: Readonly<Rect>\n area: Readonly<Rect>\n }\n connection: Position\n direction: FloatingPositionDirection\n constraints?: FloatingPositionConstraintsInput\n}\n\ninterface PlacementArea {\n anchorLink: Alignment\n contentLink: Alignment\n area: FloatingPosition[\"placement\"][\"area\"]\n connection: Position\n}\n\ntype FloatingPositionAltConst =\n | \"none\"\n | \"flip\"\n | \"shift\"\n | \"flip-shift\"\n | \"greatest\"\n | \"greatest-shift\"\n | \"smallest\"\n | \"smallest-shift\"\nexport type FloatingPositionAltInput = FloatingPositionAltConst | FloatingPositionAltFunc\nexport type FloatingPositionAltFunc = (pos: FloatingPosition, axis: FloatingPositionAltAxis) => void\nexport type FloatingPositionAltNorm = Array<FloatingPositionAltFunc>\n\nexport const enum FloatingPositionAltAxis {\n Horizontal = \"H\",\n Vertical = \"V\"\n}\n\nconst ZERO_PADDING = sidesNormalize(0)\nconst ZERO_CONNECTION = { x: 0, y: 0 }\n\nexport function floatingPosition({ dims, options }: FloatingPositionInput): FloatingPosition {\n const padding = options.placement.padding ? sidesNormalize(options.placement.padding) : ZERO_PADDING\n const placement: FloatingPosition[\"placement\"] = {\n rect: dims.placement,\n padding: padding,\n rectWithPadding: rectContract(dims.placement, padding),\n area: { ...dims.placement }\n }\n\n const anchor: FloatingPosition[\"anchor\"] = {\n rect: options.anchor.margin ? rectExpand(dims.anchor, options.anchor.margin) : dims.anchor,\n link: alignmentNormalize(options.anchor.link)\n }\n\n const minWidth = dims.constraints?.minWidth || 0\n const minHeight = dims.constraints?.minHeight || 0\n const maxWidth = dims.constraints?.maxWidth || Infinity\n const maxHeight = dims.constraints?.maxHeight || Infinity\n const content: FloatingPosition[\"content\"] = {\n rect: { x: 0, y: 0, ...dims.content },\n link: alignmentNormalize(options.content.link),\n constrained: {\n width: clamp(dims.content.width, minWidth, maxWidth),\n height: clamp(dims.content.height, minHeight, maxHeight)\n }\n }\n\n const position = {\n placement,\n anchor,\n content,\n connection: ZERO_CONNECTION,\n constrains: dims.constraints,\n direction: FloatingPositionDirection.Down\n }\n const area = placementArea(position, anchor.link, content.link)\n setPlacement(position, area)\n\n if (options.horizontalAlt) {\n applyAlts(position, FloatingPositionAltAxis.Horizontal, options.horizontalAlt)\n }\n\n if (options.verticalAlt) {\n applyAlts(position, FloatingPositionAltAxis.Vertical, options.verticalAlt)\n }\n\n position.direction = floatingPositionDirection(position)\n return position\n}\n\nfunction placementArea(pos: FloatingPosition, anchorLink: Alignment, contentLink: Alignment): PlacementArea {\n const connection = rectOrigin(pos.anchor.rect, anchorLink)\n let { x, y } = connection\n const placement = pos.placement.rect\n const placementPad = pos.placement.padding\n let width = 0\n let height = 0\n\n switch (contentLink.horizontal) {\n case \"left\":\n case \"start\":\n width = placement.width - x\n break\n case \"center\":\n if (anchorLink.horizontal === \"center\") {\n width = placement.width\n x = placement.x\n } else {\n const leftSize = x - placementPad.left.value\n const rightSize = placement.width - x - placementPad.right.value\n const mw = Math.max(0, Math.min(leftSize, rightSize))\n width = mw * 2\n x -= mw\n }\n break\n case \"end\":\n case \"right\":\n width = x - placement.x\n x = placement.x\n break\n }\n\n switch (contentLink.vertical) {\n case \"top\":\n height = placement.height - y\n break\n case \"middle\":\n if (anchorLink.vertical === \"middle\") {\n height = placement.height\n y = placement.y\n } else {\n const topSize = y - placementPad.top.value\n const bottomSize = placement.height - y - placementPad.bottom.value\n const mh = Math.max(0, Math.min(topSize, bottomSize))\n height = mh * 2\n y -= mh\n }\n\n break\n case \"bottom\":\n height = y - placement.y\n y = placement.y\n break\n }\n\n const constraint = pos.placement.rectWithPadding\n const newX = Math.max(x, constraint.x)\n const newY = Math.max(y, constraint.y)\n const diffX = newX - x\n const diffY = newY - y\n\n const area = {\n x: newX,\n y: newY,\n width: Math.min(newX + width - diffX, constraint.x + constraint.width) - newX,\n height: Math.min(newY + height - diffY, constraint.y + constraint.height) - newY\n }\n\n return { area, contentLink, anchorLink, connection }\n}\n\nfunction setPlacement(position: FloatingPosition, { area, anchorLink, contentLink, connection }: PlacementArea): void {\n position.placement.area = area\n position.anchor.link = anchorLink\n position.content.link = contentLink\n\n const plannedContentRect = rectMoveOrigin(position.content.rect, contentLink, connection)\n position.connection = adjustConnection(area, plannedContentRect, connection)\n position.content.rect = rectMoveOrigin(position.content.rect, contentLink, connection)\n}\n\nfunction adjustConnection(\n placement: FloatingPosition[\"placement\"][\"area\"],\n content: FloatingPosition[\"content\"][\"rect\"],\n connection: FloatingPosition[\"connection\"]\n) {\n const x = Math.max(placement.x, content.x)\n const y = Math.max(placement.y, content.y)\n const leftDiff = x - content.x\n const topDiff = y - content.y\n const widthDiff = placement.x + placement.width - (x + content.width)\n const heightDiff = placement.y + placement.height - (y + content.height)\n\n const result = { ...connection }\n connection.x += leftDiff\n connection.y += topDiff\n\n if (widthDiff < 0) {\n connection.x += widthDiff\n }\n\n if (heightDiff < 0) {\n connection.y += heightDiff\n }\n return result\n}\n\nfunction applyAlts(pos: FloatingPosition, axis: FloatingPositionAltAxis, alts: FloatingPositionAltInput) {\n const norm = positionAltNormalize(alts)\n for (const alt of norm) {\n alt(pos, axis)\n }\n}\n\nexport function positionAltNormalize(\n input: FloatingPositionAltInput | FloatingPositionAltNorm\n): FloatingPositionAltNorm {\n if (Array.isArray(input)) {\n return input\n } else if (typeof input === \"function\") {\n return [input]\n } else if (typeof input === \"string\") {\n return altStringToFns(input)\n } else {\n throw new Error(`Invalid alt position: ${input}`)\n }\n}\n\nfunction altStringToFns(input: FloatingPositionAltConst): FloatingPositionAltNorm {\n switch (input) {\n case \"none\":\n return [none]\n case \"flip\":\n return [flip]\n case \"shift\":\n return [shift]\n case \"flip-shift\":\n return [flip, shift]\n case \"greatest\":\n return [greatest]\n case \"greatest-shift\":\n return [greatest, shift]\n case \"smallest\":\n return [smallest]\n case \"smallest-shift\":\n return [smallest, shift]\n }\n}\n\nfunction none(pos: FloatingPosition, axis: FloatingPositionAltAxis): void { }\n\nfunction flip(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n const wh: \"width\" | \"height\" = axis === FloatingPositionAltAxis.Horizontal ? \"width\" : \"height\"\n if (pos.placement.area[wh] >= pos.content.constrained[wh]) {\n return\n }\n return greatest(pos, axis)\n}\n\nfunction shift(pos: FloatingPosition, axis: FloatingPositionAltAxis): void { }\n\nfunction greatest(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n _bySize(pos, axis, (a, b) => a >= b)\n}\n\nfunction smallest(pos: FloatingPosition, axis: FloatingPositionAltAxis): void {\n _bySize(pos, axis, (a, b) => a <= b)\n}\n\nfunction _bySize(pos: FloatingPosition, axis: FloatingPositionAltAxis, cmp: (a: number, b: number) => boolean): void {\n const wh: \"width\" | \"height\" = axis === FloatingPositionAltAxis.Horizontal ? \"width\" : \"height\"\n\n const current = pos.placement.area[wh]\n const anchorLink = oppositeLink(axis, pos.anchor.link)\n const contentLink = oppositeLink(axis, pos.content.link)\n const oppositePlacement = placementArea(pos, anchorLink, contentLink)\n\n if (cmp(current, oppositePlacement.area[wh])) {\n return\n }\n\n setPlacement(pos, oppositePlacement)\n}\n\nfunction oppositeLink(axis: FloatingPositionAltAxis, link: Alignment): Alignment {\n if (axis === FloatingPositionAltAxis.Horizontal) {\n return { horizontal: AlignHorizontalOpposite[link.horizontal], vertical: link.vertical }\n } else {\n return { horizontal: link.horizontal, vertical: AlignVerticalOpposite[link.vertical] }\n }\n}\n\nexport function floatingPositionToStyle(pos: Readonly<FloatingPosition>): Partial<CSSStyleDeclaration> {\n const contentRect = pos.content.rect\n const placementRect = pos.placement.rect\n // const { width: maxWidth, height: maxHeight } = pos.placement.area\n const style: Partial<CSSStyleDeclaration> = {}\n\n if (pos.content.link.horizontal === \"right\") {\n style[\"right\"] = `${placementRect.width - (contentRect.x + contentRect.width)}px`\n style[\"left\"] = \"auto\"\n } else {\n style[\"left\"] = `${contentRect.x}px`\n style[\"right\"] = \"auto\"\n }\n\n if (pos.content.link.vertical === \"bottom\") {\n style[\"bottom\"] = `${placementRect.height - (contentRect.y + contentRect.height)}px`\n style[\"top\"] = \"auto\"\n } else {\n style[\"top\"] = `${contentRect.y}px`\n style[\"bottom\"] = \"auto\"\n }\n\n // style[\"maxWidth\"] = `${maxWidth}px`\n // style[\"maxHeight\"] = `${maxHeight}px`\n\n return style\n}\n\nexport const enum FloatingPositionDirection {\n Up = \"up\",\n Down = \"down\",\n Left = \"left\",\n Right = \"right\",\n Center = \"center\"\n}\n\nexport function floatingPositionDirection(pos: Readonly<FloatingPosition>): FloatingPositionDirection {\n const { x: ax, y: ay, width: aw, height: ah } = pos.anchor.rect\n const { x: bx, y: by, width: bw, height: bh } = pos.content.rect\n const contentLink = pos.content.link\n const anchorLink = pos.anchor.link\n\n if (anchorLink.horizontal === \"center\" && anchorLink.vertical === \"middle\") {\n if (contentLink.horizontal === \"center\" && contentLink.vertical === \"middle\") {\n return FloatingPositionDirection.Center\n }\n\n const cx = pos.connection.x\n if (cx <= bx) {\n return FloatingPositionDirection.Right\n } else if (cx >= bx + bw) {\n return FloatingPositionDirection.Left\n }\n }\n\n const widthOverlapPx = Math.min(ax + aw, bx + bw) - Math.max(ax, bx)\n const widthOverlapPercent = widthOverlapPx / Math.max(aw, bw)\n const heightOverlapPx = Math.min(ay + ah, by + bh) - Math.max(ay, by)\n const heightOverlapPercent = heightOverlapPx / Math.max(ah, bh)\n\n if (widthOverlapPercent >= heightOverlapPercent) {\n if (contentLink.vertical === \"bottom\") {\n return FloatingPositionDirection.Up\n }\n\n return FloatingPositionDirection.Down\n } else {\n if (contentLink.horizontal === \"right\") {\n return FloatingPositionDirection.Left\n }\n\n return FloatingPositionDirection.Right\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,12 +1,197 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { NumberWithUnit, ElementInput } from '@ngutil/common';
|
|
4
|
+
|
|
5
|
+
declare class MediaWatcher {
|
|
6
|
+
#private;
|
|
7
|
+
/**
|
|
8
|
+
* svc.watch("(display-mode: standalone)").subscribe(match => {})
|
|
9
|
+
*/
|
|
10
|
+
watch(query: string): Observable<boolean>;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MediaWatcher, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MediaWatcher>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class ColorSchemeService {
|
|
16
|
+
#private;
|
|
17
|
+
readonly isDark: Observable<boolean>;
|
|
18
|
+
readonly isLight: Observable<boolean>;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ColorSchemeService, never>;
|
|
20
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ColorSchemeService>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
declare class Ease {
|
|
24
|
+
static readonly Deceleration: "cubic-bezier(0, 0, 0.2, 1)";
|
|
25
|
+
static readonly Standard: "cubic-bezier(0.4, 0, 0.2, 1)";
|
|
26
|
+
static readonly Acceleration: "cubic-bezier(0.4, 0, 1, 1)";
|
|
27
|
+
static readonly Sharp: "cubic-bezier(0.4, 0, 0.6, 1)";
|
|
28
|
+
/**
|
|
29
|
+
* Reach nearly end position fast, and slowly move to final position
|
|
30
|
+
*/
|
|
31
|
+
static readonly Emphasized: "cubic-bezier(0.12, 0.9, 0.12, 0.9)";
|
|
32
|
+
}
|
|
33
|
+
declare class Duration {
|
|
34
|
+
static readonly Fast: "200ms";
|
|
35
|
+
static readonly FastMs: 200;
|
|
36
|
+
static readonly Medium: "300ms";
|
|
37
|
+
static readonly MediumMs: 300;
|
|
38
|
+
static readonly Slow: "400ms";
|
|
39
|
+
static readonly SlowMs: 400;
|
|
40
|
+
static readonly Snail: "600ms";
|
|
41
|
+
static readonly SnailMs: 600;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare const HORIZONTAL: readonly ["start", "left", "center", "end", "right"];
|
|
45
|
+
type AlignHorizontal = (typeof HORIZONTAL)[number];
|
|
46
|
+
declare const VERTICAL: readonly ["top", "middle", "bottom"];
|
|
47
|
+
type AlignVertical = (typeof VERTICAL)[number];
|
|
48
|
+
type AlignmentInput = `${AlignHorizontal} ${AlignVertical}` | `${AlignVertical} ${AlignHorizontal}` | AlignVertical | AlignHorizontal | Alignment;
|
|
49
|
+
interface Alignment {
|
|
50
|
+
horizontal: AlignHorizontal;
|
|
51
|
+
vertical: AlignVertical;
|
|
52
|
+
}
|
|
53
|
+
declare function alignmentNormalize(value?: AlignmentInput): Alignment;
|
|
54
|
+
declare function alignmentToTransformOrigin(alignment: Alignment): string;
|
|
55
|
+
|
|
56
|
+
interface Sides {
|
|
57
|
+
top: NumberWithUnit;
|
|
58
|
+
right: NumberWithUnit;
|
|
59
|
+
bottom: NumberWithUnit;
|
|
60
|
+
left: NumberWithUnit;
|
|
61
|
+
}
|
|
62
|
+
type SidesUnit = "px" | "%";
|
|
63
|
+
type SidesNumber = `${number}${SidesUnit}` | number;
|
|
64
|
+
type SidesInputObj = {
|
|
65
|
+
top?: SidesNumber;
|
|
66
|
+
right?: SidesNumber;
|
|
67
|
+
bottom?: SidesNumber;
|
|
68
|
+
left?: SidesNumber;
|
|
69
|
+
};
|
|
70
|
+
type SidesInput = Sides | SidesNumber | SidesInputObj | `${SidesNumber} ${SidesNumber}` | `${SidesNumber} ${SidesNumber} ${SidesNumber}` | `${SidesNumber} ${SidesNumber} ${SidesNumber} ${SidesNumber}`;
|
|
71
|
+
declare function sidesNormalize(value: SidesInput): Sides;
|
|
72
|
+
|
|
73
|
+
interface Dimension {
|
|
74
|
+
width: number;
|
|
75
|
+
height: number;
|
|
76
|
+
}
|
|
77
|
+
interface Position {
|
|
78
|
+
x: number;
|
|
79
|
+
y: number;
|
|
80
|
+
}
|
|
81
|
+
interface Rect extends Dimension, Position {
|
|
82
|
+
}
|
|
83
|
+
declare function rectOrigin(rect: Rect, origin: AlignmentInput): Position;
|
|
84
|
+
declare function rectMoveOrigin(rect: Rect | Dimension, origin: AlignmentInput, position: Position): Rect;
|
|
85
|
+
declare function rectConstraint(rect: Rect, constraint: Rect): Rect;
|
|
86
|
+
declare function rectExpand(rect: Rect, margin: SidesInput): Rect;
|
|
87
|
+
declare function rectContract(rect: Rect, padding: SidesInput): Rect;
|
|
88
|
+
declare function rectContainsPoint(rect: Rect, point: Position): boolean;
|
|
89
|
+
|
|
90
|
+
type WatchBox = ResizeObserverBoxOptions | "scroll-box";
|
|
91
|
+
declare class DimensionWatcher {
|
|
92
|
+
#private;
|
|
93
|
+
watch(element: ElementInput | Window, box: WatchBox): Observable<Dimension>;
|
|
94
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DimensionWatcher, never>;
|
|
95
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DimensionWatcher>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
declare class PositionWatcher {
|
|
99
|
+
#private;
|
|
100
|
+
watch(element: ElementInput | Window): Observable<Position>;
|
|
101
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PositionWatcher, never>;
|
|
102
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PositionWatcher>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare class RectWatcher {
|
|
106
|
+
#private;
|
|
107
|
+
watch(element: ElementInput | Window, watchBox: WatchBox): Observable<Rect>;
|
|
108
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RectWatcher, never>;
|
|
109
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RectWatcher>;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
declare class NodeRemovedWatcher {
|
|
113
|
+
#private;
|
|
114
|
+
watch(element: ElementInput): Observable<void>;
|
|
115
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NodeRemovedWatcher, never>;
|
|
116
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NodeRemovedWatcher>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
declare function inAnimation<T extends HTMLElement>(el: T, animations?: string[]): Observable<string[] | null>;
|
|
120
|
+
declare function inTransition<T extends HTMLElement>(el: T, properties?: string[]): Observable<string[] | null>;
|
|
121
|
+
declare function isAnimating<T extends HTMLElement>(el: T): Observable<boolean>;
|
|
122
|
+
|
|
123
|
+
interface FloatingPositionInput {
|
|
124
|
+
dims: FloatingPositionDims;
|
|
125
|
+
options: FloatingPositionOptions;
|
|
126
|
+
}
|
|
127
|
+
interface FloatingPositionDims {
|
|
128
|
+
content: Dimension;
|
|
129
|
+
anchor: Rect;
|
|
130
|
+
placement: Rect;
|
|
131
|
+
constraints?: FloatingPositionConstraintsInput;
|
|
132
|
+
}
|
|
133
|
+
interface FloatingPositionOptions {
|
|
134
|
+
content: FloatingPositionContentOptions;
|
|
135
|
+
anchor: FloatingPositionAnchorOptions;
|
|
136
|
+
placement: FloatingPositionPlacementOptions;
|
|
137
|
+
horizontalAlt?: FloatingPositionAltInput;
|
|
138
|
+
verticalAlt?: FloatingPositionAltInput;
|
|
139
|
+
}
|
|
140
|
+
interface FloatingPositionContentOptions {
|
|
141
|
+
link: AlignmentInput;
|
|
142
|
+
}
|
|
143
|
+
interface FloatingPositionConstraintsInput {
|
|
144
|
+
minWidth?: number;
|
|
145
|
+
maxWidth?: number;
|
|
146
|
+
minHeight?: number;
|
|
147
|
+
maxHeight?: number;
|
|
148
|
+
}
|
|
149
|
+
interface FloatingPositionAnchorOptions {
|
|
150
|
+
link: AlignmentInput;
|
|
151
|
+
margin?: SidesInput;
|
|
152
|
+
}
|
|
153
|
+
interface FloatingPositionPlacementOptions {
|
|
154
|
+
padding?: SidesInput;
|
|
155
|
+
}
|
|
156
|
+
interface FloatingPosition {
|
|
157
|
+
content: {
|
|
158
|
+
rect: Position & Readonly<Dimension>;
|
|
159
|
+
link: Alignment;
|
|
160
|
+
readonly constrained: Readonly<Dimension>;
|
|
161
|
+
};
|
|
162
|
+
anchor: {
|
|
163
|
+
readonly rect: Readonly<Rect>;
|
|
164
|
+
link: Alignment;
|
|
165
|
+
};
|
|
166
|
+
placement: {
|
|
167
|
+
readonly rect: Readonly<Rect>;
|
|
168
|
+
readonly padding: Readonly<Sides>;
|
|
169
|
+
readonly rectWithPadding: Readonly<Rect>;
|
|
170
|
+
area: Readonly<Rect>;
|
|
171
|
+
};
|
|
172
|
+
connection: Position;
|
|
173
|
+
direction: FloatingPositionDirection;
|
|
174
|
+
constraints?: FloatingPositionConstraintsInput;
|
|
175
|
+
}
|
|
176
|
+
type FloatingPositionAltConst = "none" | "flip" | "shift" | "flip-shift" | "greatest" | "greatest-shift" | "smallest" | "smallest-shift";
|
|
177
|
+
type FloatingPositionAltInput = FloatingPositionAltConst | FloatingPositionAltFunc;
|
|
178
|
+
type FloatingPositionAltFunc = (pos: FloatingPosition, axis: FloatingPositionAltAxis) => void;
|
|
179
|
+
type FloatingPositionAltNorm = Array<FloatingPositionAltFunc>;
|
|
180
|
+
declare const enum FloatingPositionAltAxis {
|
|
181
|
+
Horizontal = "H",
|
|
182
|
+
Vertical = "V"
|
|
183
|
+
}
|
|
184
|
+
declare function floatingPosition({ dims, options }: FloatingPositionInput): FloatingPosition;
|
|
185
|
+
declare function positionAltNormalize(input: FloatingPositionAltInput | FloatingPositionAltNorm): FloatingPositionAltNorm;
|
|
186
|
+
declare function floatingPositionToStyle(pos: Readonly<FloatingPosition>): Partial<CSSStyleDeclaration>;
|
|
187
|
+
declare const enum FloatingPositionDirection {
|
|
188
|
+
Up = "up",
|
|
189
|
+
Down = "down",
|
|
190
|
+
Left = "left",
|
|
191
|
+
Right = "right",
|
|
192
|
+
Center = "center"
|
|
193
|
+
}
|
|
194
|
+
declare function floatingPositionDirection(pos: Readonly<FloatingPosition>): FloatingPositionDirection;
|
|
195
|
+
|
|
196
|
+
export { ColorSchemeService, DimensionWatcher, Duration, Ease, FloatingPositionAltAxis, FloatingPositionDirection, MediaWatcher, NodeRemovedWatcher, PositionWatcher, RectWatcher, alignmentNormalize, alignmentToTransformOrigin, floatingPosition, floatingPositionDirection, floatingPositionToStyle, inAnimation, inTransition, isAnimating, positionAltNormalize, rectConstraint, rectContainsPoint, rectContract, rectExpand, rectMoveOrigin, rectOrigin, sidesNormalize };
|
|
197
|
+
export type { AlignHorizontal, AlignVertical, Alignment, AlignmentInput, Dimension, FloatingPosition, FloatingPositionAltFunc, FloatingPositionAltInput, FloatingPositionAltNorm, FloatingPositionAnchorOptions, FloatingPositionConstraintsInput, FloatingPositionContentOptions, FloatingPositionDims, FloatingPositionInput, FloatingPositionOptions, FloatingPositionPlacementOptions, Position, Rect, Sides, SidesInput, WatchBox };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/style",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.104",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"sass": "./index.scss",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"@angular/common": "
|
|
17
|
-
"@angular/core": "
|
|
16
|
+
"@angular/common": "20.3.13",
|
|
17
|
+
"@angular/core": "20.3.13",
|
|
18
18
|
"es-toolkit": "^1.35.0",
|
|
19
19
|
"rxjs": "^7.8.1",
|
|
20
|
-
"@ngutil/common": "0.0.
|
|
20
|
+
"@ngutil/common": "0.0.104"
|
|
21
21
|
},
|
|
22
22
|
"publishConfig": {
|
|
23
23
|
"access": "public",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export declare class Ease {
|
|
2
|
-
static readonly Deceleration: "cubic-bezier(0, 0, 0.2, 1)";
|
|
3
|
-
static readonly Standard: "cubic-bezier(0.4, 0, 0.2, 1)";
|
|
4
|
-
static readonly Acceleration: "cubic-bezier(0.4, 0, 1, 1)";
|
|
5
|
-
static readonly Sharp: "cubic-bezier(0.4, 0, 0.6, 1)";
|
|
6
|
-
/**
|
|
7
|
-
* Reach nearly end position fast, and slowly move to final position
|
|
8
|
-
*/
|
|
9
|
-
static readonly Emphasized: "cubic-bezier(0.12, 0.9, 0.12, 0.9)";
|
|
10
|
-
}
|
|
11
|
-
export declare class Duration {
|
|
12
|
-
static readonly Fast: "200ms";
|
|
13
|
-
static readonly FastMs: 200;
|
|
14
|
-
static readonly Medium: "300ms";
|
|
15
|
-
static readonly MediumMs: 300;
|
|
16
|
-
static readonly Slow: "400ms";
|
|
17
|
-
static readonly SlowMs: 400;
|
|
18
|
-
static readonly Snail: "600ms";
|
|
19
|
-
static readonly SnailMs: 600;
|
|
20
|
-
}
|
package/sass/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Ease, Duration } from "./animation/vars";
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class ColorSchemeService {
|
|
4
|
-
#private;
|
|
5
|
-
readonly isDark: Observable<boolean>;
|
|
6
|
-
readonly isLight: Observable<boolean>;
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ColorSchemeService, never>;
|
|
8
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ColorSchemeService>;
|
|
9
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ElementInput } from "@ngutil/common";
|
|
3
|
-
import { Dimension } from "../util/rect";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export type WatchBox = ResizeObserverBoxOptions | "scroll-box";
|
|
6
|
-
export type Watches = Map<HTMLElement | Window, Observable<Dimension>>;
|
|
7
|
-
export declare class DimensionWatcher {
|
|
8
|
-
#private;
|
|
9
|
-
watch(element: ElementInput | Window, box: WatchBox): Observable<Dimension>;
|
|
10
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DimensionWatcher, never>;
|
|
11
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<DimensionWatcher>;
|
|
12
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class MediaWatcher {
|
|
4
|
-
#private;
|
|
5
|
-
/**
|
|
6
|
-
* svc.watch("(display-mode: standalone)").subscribe(match => {})
|
|
7
|
-
*/
|
|
8
|
-
watch(query: string): Observable<boolean>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MediaWatcher, never>;
|
|
10
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MediaWatcher>;
|
|
11
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { type ElementInput } from "@ngutil/common";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class NodeRemovedWatcher {
|
|
5
|
-
#private;
|
|
6
|
-
watch(element: ElementInput): Observable<void>;
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NodeRemovedWatcher, never>;
|
|
8
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NodeRemovedWatcher>;
|
|
9
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ElementInput } from "@ngutil/common";
|
|
3
|
-
import { Position } from "../util/rect";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class PositionWatcher {
|
|
6
|
-
#private;
|
|
7
|
-
watch(element: ElementInput | Window): Observable<Position>;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PositionWatcher, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<PositionWatcher>;
|
|
10
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
import { ElementInput } from "@ngutil/common";
|
|
3
|
-
import { Rect } from "../util/rect";
|
|
4
|
-
import { WatchBox } from "./dimension-watcher.service";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class RectWatcher {
|
|
7
|
-
#private;
|
|
8
|
-
watch(element: ElementInput | Window, watchBox: WatchBox): Observable<Rect>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RectWatcher, never>;
|
|
10
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<RectWatcher>;
|
|
11
|
-
}
|
package/util/alignment.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare const HORIZONTAL: readonly ["start", "left", "center", "end", "right"];
|
|
2
|
-
export type AlignHorizontal = (typeof HORIZONTAL)[number];
|
|
3
|
-
export declare const AlignHorizontalOpposite: Record<AlignHorizontal, AlignHorizontal>;
|
|
4
|
-
declare const VERTICAL: readonly ["top", "middle", "bottom"];
|
|
5
|
-
export type AlignVertical = (typeof VERTICAL)[number];
|
|
6
|
-
export declare const AlignVerticalOpposite: Record<AlignVertical, AlignVertical>;
|
|
7
|
-
export type AlignmentInput = `${AlignHorizontal} ${AlignVertical}` | `${AlignVertical} ${AlignHorizontal}` | AlignVertical | AlignHorizontal | Alignment;
|
|
8
|
-
export interface Alignment {
|
|
9
|
-
horizontal: AlignHorizontal;
|
|
10
|
-
vertical: AlignVertical;
|
|
11
|
-
}
|
|
12
|
-
export declare function alignmentNormalize(value?: AlignmentInput): Alignment;
|
|
13
|
-
export declare function alignmentToTransformOrigin(alignment: Alignment): string;
|
|
14
|
-
export {};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { Alignment, AlignmentInput } from "./alignment";
|
|
2
|
-
import { Dimension, Position, Rect } from "./rect";
|
|
3
|
-
import { Sides, SidesInput } from "./sides";
|
|
4
|
-
export interface FloatingPositionInput {
|
|
5
|
-
dims: FloatingPositionDims;
|
|
6
|
-
options: FloatingPositionOptions;
|
|
7
|
-
}
|
|
8
|
-
export interface FloatingPositionDims {
|
|
9
|
-
content: Dimension;
|
|
10
|
-
anchor: Rect;
|
|
11
|
-
placement: Rect;
|
|
12
|
-
constraints?: FloatingPositionConstraintsInput;
|
|
13
|
-
}
|
|
14
|
-
export interface FloatingPositionOptions {
|
|
15
|
-
content: FloatingPositionContentOptions;
|
|
16
|
-
anchor: FloatingPositionAnchorOptions;
|
|
17
|
-
placement: FloatingPositionPlacementOptions;
|
|
18
|
-
horizontalAlt?: FloatingPositionAltInput;
|
|
19
|
-
verticalAlt?: FloatingPositionAltInput;
|
|
20
|
-
}
|
|
21
|
-
export interface FloatingPositionContentOptions {
|
|
22
|
-
link: AlignmentInput;
|
|
23
|
-
}
|
|
24
|
-
export interface FloatingPositionConstraintsInput {
|
|
25
|
-
minWidth?: number;
|
|
26
|
-
maxWidth?: number;
|
|
27
|
-
minHeight?: number;
|
|
28
|
-
maxHeight?: number;
|
|
29
|
-
}
|
|
30
|
-
export interface FloatingPositionAnchorOptions {
|
|
31
|
-
link: AlignmentInput;
|
|
32
|
-
margin?: SidesInput;
|
|
33
|
-
}
|
|
34
|
-
export interface FloatingPositionPlacementOptions {
|
|
35
|
-
padding?: SidesInput;
|
|
36
|
-
}
|
|
37
|
-
export interface FloatingPosition {
|
|
38
|
-
content: {
|
|
39
|
-
rect: Position & Readonly<Dimension>;
|
|
40
|
-
link: Alignment;
|
|
41
|
-
readonly constrained: Readonly<Dimension>;
|
|
42
|
-
};
|
|
43
|
-
anchor: {
|
|
44
|
-
readonly rect: Readonly<Rect>;
|
|
45
|
-
link: Alignment;
|
|
46
|
-
};
|
|
47
|
-
placement: {
|
|
48
|
-
readonly rect: Readonly<Rect>;
|
|
49
|
-
readonly padding: Readonly<Sides>;
|
|
50
|
-
readonly rectWithPadding: Readonly<Rect>;
|
|
51
|
-
area: Readonly<Rect>;
|
|
52
|
-
};
|
|
53
|
-
connection: Position;
|
|
54
|
-
direction: FloatingPositionDirection;
|
|
55
|
-
constraints?: FloatingPositionConstraintsInput;
|
|
56
|
-
}
|
|
57
|
-
type FloatingPositionAltConst = "none" | "flip" | "shift" | "flip-shift" | "greatest" | "greatest-shift" | "smallest" | "smallest-shift";
|
|
58
|
-
export type FloatingPositionAltInput = FloatingPositionAltConst | FloatingPositionAltFunc;
|
|
59
|
-
export type FloatingPositionAltFunc = (pos: FloatingPosition, axis: FloatingPositionAltAxis) => void;
|
|
60
|
-
export type FloatingPositionAltNorm = Array<FloatingPositionAltFunc>;
|
|
61
|
-
export declare const enum FloatingPositionAltAxis {
|
|
62
|
-
Horizontal = "H",
|
|
63
|
-
Vertical = "V"
|
|
64
|
-
}
|
|
65
|
-
export declare function floatingPosition({ dims, options }: FloatingPositionInput): FloatingPosition;
|
|
66
|
-
export declare function positionAltNormalize(input: FloatingPositionAltInput | FloatingPositionAltNorm): FloatingPositionAltNorm;
|
|
67
|
-
export declare function floatingPositionToStyle(pos: Readonly<FloatingPosition>): Partial<CSSStyleDeclaration>;
|
|
68
|
-
export declare const enum FloatingPositionDirection {
|
|
69
|
-
Up = "up",
|
|
70
|
-
Down = "down",
|
|
71
|
-
Left = "left",
|
|
72
|
-
Right = "right",
|
|
73
|
-
Center = "center"
|
|
74
|
-
}
|
|
75
|
-
export declare function floatingPositionDirection(pos: Readonly<FloatingPosition>): FloatingPositionDirection;
|
|
76
|
-
export {};
|
package/util/in-animation.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { Observable } from "rxjs";
|
|
2
|
-
export declare function inAnimation<T extends HTMLElement>(el: T, animations?: string[]): Observable<string[] | null>;
|
|
3
|
-
export declare function inTransition<T extends HTMLElement>(el: T, properties?: string[]): Observable<string[] | null>;
|
|
4
|
-
export declare function isAnimating<T extends HTMLElement>(el: T): Observable<boolean>;
|
package/util/rect.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { AlignmentInput } from "./alignment";
|
|
2
|
-
import { SidesInput } from "./sides";
|
|
3
|
-
export interface Dimension {
|
|
4
|
-
width: number;
|
|
5
|
-
height: number;
|
|
6
|
-
}
|
|
7
|
-
export interface Position {
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
-
}
|
|
11
|
-
export interface Rect extends Dimension, Position {
|
|
12
|
-
}
|
|
13
|
-
export declare function rectOrigin(rect: Rect, origin: AlignmentInput): Position;
|
|
14
|
-
export declare function rectMoveOrigin(rect: Rect | Dimension, origin: AlignmentInput, position: Position): Rect;
|
|
15
|
-
export declare function rectConstraint(rect: Rect, constraint: Rect): Rect;
|
|
16
|
-
export declare function rectExpand(rect: Rect, margin: SidesInput): Rect;
|
|
17
|
-
export declare function rectContract(rect: Rect, padding: SidesInput): Rect;
|
|
18
|
-
export declare function rectContainsPoint(rect: Rect, point: Position): boolean;
|
package/util/sides.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { NumberWithUnit } from "@ngutil/common";
|
|
2
|
-
export interface Sides {
|
|
3
|
-
top: NumberWithUnit;
|
|
4
|
-
right: NumberWithUnit;
|
|
5
|
-
bottom: NumberWithUnit;
|
|
6
|
-
left: NumberWithUnit;
|
|
7
|
-
}
|
|
8
|
-
export type SidesUnit = "px" | "%";
|
|
9
|
-
export type SidesNumber = `${number}${SidesUnit}` | number;
|
|
10
|
-
export type SidesInputObj = {
|
|
11
|
-
top?: SidesNumber;
|
|
12
|
-
right?: SidesNumber;
|
|
13
|
-
bottom?: SidesNumber;
|
|
14
|
-
left?: SidesNumber;
|
|
15
|
-
};
|
|
16
|
-
export type SidesInput = Sides | SidesNumber | SidesInputObj | `${SidesNumber} ${SidesNumber}` | `${SidesNumber} ${SidesNumber} ${SidesNumber}` | `${SidesNumber} ${SidesNumber} ${SidesNumber} ${SidesNumber}`;
|
|
17
|
-
export declare function sidesNormalize(value: SidesInput): Sides;
|