@ngutil/style 0.0.57 → 0.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,11 @@
1
+ import { DOCUMENT } from "@angular/common";
1
2
  import { inject, Injectable, NgZone } from "@angular/core";
2
3
  import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
3
4
  import { coerceElement } from "@ngutil/common";
4
5
  import * as i0 from "@angular/core";
5
6
  export class DimensionWatcher {
6
7
  #zone = inject(NgZone);
8
+ #document = inject(DOCUMENT);
7
9
  #watches = {};
8
10
  watch(element, box) {
9
11
  element = coerceElement(element);
@@ -35,6 +37,9 @@ export class DimensionWatcher {
35
37
  }
36
38
  return this.#zone.runOutsideAngular(() => new Observable((sub) => {
37
39
  const observer = new ResizeObserver(entries => {
40
+ if (!this.#document.contains(el)) {
41
+ return;
42
+ }
38
43
  for (const entry of entries) {
39
44
  if (entry.borderBoxSize) {
40
45
  sub.next({
@@ -112,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
112
117
  function dimensionIsEq(a, b) {
113
118
  return a && b && a.width === b.width && a.height === b.height;
114
119
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0eWxlL3NyYy9zZXJ2aWNlcy9kaW1lbnNpb24td2F0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUVoRixPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFBOztBQVE1RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2hCLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEIsUUFBUSxHQUFvQyxFQUFFLENBQUE7SUFFdkQsS0FBSyxDQUFDLE9BQThCLEVBQUUsR0FBYTtRQUMvQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWhDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDaEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUE7UUFDaEMsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLFlBQVksTUFBTSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQTtZQUMvQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFB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QUFDLENBQUE7WUFDM0MsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUNsRCxDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9ELENBQUE7SUFDTCxDQUFDOzhHQW5IUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXVIbEMsU0FBUyxhQUFhLENBQUMsQ0FBWSxFQUFFLENBQVk7SUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGNvZXJjZUVsZW1lbnQsIEVsZW1lbnRJbnB1dCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsL3JlY3RcIlxuXG5leHBvcnQgdHlwZSBXYXRjaEJveCA9IFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB8IFwic2Nyb2xsLWJveFwiXG5leHBvcnQgdHlwZSBXYXRjaGVzID0gTWFwPEhUTUxFbGVtZW50IHwgV2luZG93LCBPYnNlcnZhYmxlPERpbWVuc2lvbj4+XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25XYXRjaGVyIHtcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI3dhdGNoZXM6IHsgW2tleSBpbiBXYXRjaEJveF0/OiBXYXRjaGVzIH0gPSB7fVxuXG4gICAgd2F0Y2goZWxlbWVudDogRWxlbWVudElucHV0IHwgV2luZG93LCBib3g6IFdhdGNoQm94KTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICAgICAgZWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoZWxlbWVudClcblxuICAgICAgICBsZXQgd2F0Y2hlcyA9IHRoaXMuI3dhdGNoZXNbYm94XVxuICAgICAgICBpZiAod2F0Y2hlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICB3YXRjaGVzID0gbmV3IE1hcCgpXG4gICAgICAgICAgICB0aGlzLiN3YXRjaGVzW2JveF0gPSB3YXRjaGVzXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd2F0Y2hlciA9IHdhdGNoZXMuZ2V0KGVsZW1lbnQpXG4gICAgICAgIGlmICh3YXRjaGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgV2luZG93KSB7XG4gICAgICAgICAgICAgICAgd2F0Y2hlciA9IHRoaXMuI2NyZWF0ZVdpbmRvd1Jlc2l6ZVdhdGNoZXIoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoYm94ID09PSBcInNjcm9sbC1ib3hcIikge1xuICAgICAgICAgICAgICAgICAgICB3YXRjaGVyID0gdGhpcy4jY3JlYXRlU2NvbGxXYXRjaGVyKHdhdGNoZXMsIGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hlciA9IHRoaXMuI2NyZWF0ZVJlc2l6ZVdhdGNoZXIod2F0Y2hlcywgZWxlbWVudCwgYm94KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2F0Y2hlcy5zZXQoZWxlbWVudCwgd2F0Y2hlcilcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3YXRjaGVyXG4gICAgfVxuXG4gICAgI2NyZWF0ZVJlc2l6ZVdhdGNoZXIod2F0Y2hlczogV2F0Y2hlcywgZWw6IEhUTUxFbGVtZW50LCBib3g6IFdhdGNoQm94KTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICAgICAgaWYgKGJveCAhPT0gXCJib3JkZXItYm94XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlbnRyeS5ib3JkZXJCb3hTaXplWzBdLmJsb2NrU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGVsLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWwsIHsgYm94OiBib3ggYXMgUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hlcy5kZWxldGUoZWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChkaW1lbnNpb25Jc0VxKSwgc2hhcmVSZXBsYXkoMSkpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjY3JlYXRlU2NvbGxXYXRjaGVyKHdhdGNoZXM6IFdhdGNoZXMsIGVsOiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8RGltZW5zaW9uPiB7XG4gICAgICAgIGNvbnN0IGJvcmRlckJveCA9IHRoaXMud2F0Y2goZWwsIFwiYm9yZGVyLWJveFwiKVxuICAgICAgICByZXR1cm4gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgbmV3IE9ic2VydmFibGUoKHN1YjogU3Vic2NyaWJlcjxEaW1lbnNpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gTmFOXG4gICAgICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gTmFOXG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdyA9IGVsLnNjcm9sbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoID0gZWwuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdyA9IHN3XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2ggPSBzaFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogbGFzdFN3LCBoZWlnaHQ6IGxhc3RTaCB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGltU3VtID0gYm9yZGVyQm94LnN1YnNjcmliZShlbWl0KVxuICAgICAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZW1pdClcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgZW1pdCgpXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkaW1TdW0udW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbi5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hlcy5kZWxldGUoZWwpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChkaW1lbnNpb25Jc0VxKSwgc2hhcmVSZXBsYXkoMSkpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjY3JlYXRlV2luZG93UmVzaXplV2F0Y2hlcigpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgbmV3IE9ic2VydmFibGUoKHN1YjogU3Vic2NyaWJlcjxEaW1lbnNpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25SZXNpemUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogd2luZG93LmlubmVySGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uUmVzaXplKClcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBvblJlc2l6ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBvblJlc2l6ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGRpbWVuc2lvbklzRXEpLCBzaGFyZVJlcGxheSgxKSlcbiAgICAgICAgKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGltZW5zaW9uSXNFcShhOiBEaW1lbnNpb24sIGI6IERpbWVuc2lvbikge1xuICAgIHJldHVybiBhICYmIGIgJiYgYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHRcbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0eWxlL3NyYy9zZXJ2aWNlcy9kaW1lbnNpb24td2F0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTs7QUFRNUQsTUFBTSxPQUFPLGdCQUFnQjtJQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RCLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUIsUUFBUSxHQUFvQyxFQUFFLENBQUE7SUFFdkQsS0FBSyxDQUFDLE9BQThCLEVBQUUsR0FBYTtRQUMvQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWhDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDaEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUE7UUFDaEMsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLFlBQVksTUFBTSxF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Q0FBQyxJQUFJLENBQUM7b0JBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVO29CQUN4QixNQUFNLEVBQUUsTUFBTSxDQUFDLFdBQVc7aUJBQzdCLENBQUMsQ0FBQTtZQUNOLENBQUMsQ0FBQTtZQUNELFFBQVEsRUFBRSxDQUFBO1lBQ1YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMzQyxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ2xELENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0QsQ0FBQTtJQUNMLENBQUM7OEdBeEhRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBNEhsQyxTQUFTLGFBQWEsQ0FBQyxDQUFZLEVBQUUsQ0FBWTtJQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGNvZXJjZUVsZW1lbnQsIEVsZW1lbnRJbnB1dCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsL3JlY3RcIlxuXG5leHBvcnQgdHlwZSBXYXRjaEJveCA9IFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB8IFwic2Nyb2xsLWJveFwiXG5leHBvcnQgdHlwZSBXYXRjaGVzID0gTWFwPEhUTUxFbGVtZW50IHwgV2luZG93LCBPYnNlcnZhYmxlPERpbWVuc2lvbj4+XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25XYXRjaGVyIHtcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI2RvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKVxuICAgIHJlYWRvbmx5ICN3YXRjaGVzOiB7IFtrZXkgaW4gV2F0Y2hCb3hdPzogV2F0Y2hlcyB9ID0ge31cblxuICAgIHdhdGNoKGVsZW1lbnQ6IEVsZW1lbnRJbnB1dCB8IFdpbmRvdywgYm94OiBXYXRjaEJveCk6IE9ic2VydmFibGU8RGltZW5zaW9uPiB7XG4gICAgICAgIGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnQpXG5cbiAgICAgICAgbGV0IHdhdGNoZXMgPSB0aGlzLiN3YXRjaGVzW2JveF1cbiAgICAgICAgaWYgKHdhdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgd2F0Y2hlcyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgdGhpcy4jd2F0Y2hlc1tib3hdID0gd2F0Y2hlc1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHdhdGNoZXIgPSB3YXRjaGVzLmdldChlbGVtZW50KVxuICAgICAgICBpZiAod2F0Y2hlciA9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFdpbmRvdykge1xuICAgICAgICAgICAgICAgIHdhdGNoZXIgPSB0aGlzLiNjcmVhdGVXaW5kb3dSZXNpemVXYXRjaGVyKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGJveCA9PT0gXCJzY3JvbGwtYm94XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hlciA9IHRoaXMuI2NyZWF0ZVNjb2xsV2F0Y2hlcih3YXRjaGVzLCBlbGVtZW50KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdhdGNoZXIgPSB0aGlzLiNjcmVhdGVSZXNpemVXYXRjaGVyKHdhdGNoZXMsIGVsZW1lbnQsIGJveClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdhdGNoZXMuc2V0KGVsZW1lbnQsIHdhdGNoZXIpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cblxuICAgICNjcmVhdGVSZXNpemVXYXRjaGVyKHdhdGNoZXM6IFdhdGNoZXMsIGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCk6IE9ic2VydmFibGU8RGltZW5zaW9uPiB7XG4gICAgICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYm94IG1vZGU6ICR7Ym94fWApXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICAgICAgbmV3IE9ic2VydmFibGUoKHN1YjogU3Vic2NyaWJlcjxEaW1lbnNpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy4jZG9jdW1lbnQuY29udGFpbnMoZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmJvcmRlckJveFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlbnRyeS5ib3JkZXJCb3hTaXplWzBdLmlubGluZVNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZW50cnkuYm9yZGVyQm94U2l6ZVswXS5ibG9ja1NpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGVsLCB7IGJveDogYm94IGFzIFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoZXMuZGVsZXRlKGVsKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoZGltZW5zaW9uSXNFcSksIHNoYXJlUmVwbGF5KDEpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgI2NyZWF0ZVNjb2xsV2F0Y2hlcih3YXRjaGVzOiBXYXRjaGVzLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgICAgICBjb25zdCBib3JkZXJCb3ggPSB0aGlzLndhdGNoKGVsLCBcImJvcmRlci1ib3hcIilcbiAgICAgICAgcmV0dXJuIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBsYXN0U3c6IG51bWJlciA9IE5hTlxuICAgICAgICAgICAgICAgIGxldCBsYXN0U2g6IG51bWJlciA9IE5hTlxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW1pdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3cgPSBlbC5zY3JvbGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFN3ICE9PSBzdyB8fCBsYXN0U2ggIT09IHNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3cgPSBzd1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHsgd2lkdGg6IGxhc3RTdywgaGVpZ2h0OiBsYXN0U2ggfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRpbVN1bSA9IGJvcmRlckJveC5zdWJzY3JpYmUoZW1pdClcbiAgICAgICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24ub2JzZXJ2ZShlbCwge1xuICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGVtaXQoKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGltU3VtLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICAgICAgICAgIHdhdGNoZXMuZGVsZXRlKGVsKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoZGltZW5zaW9uSXNFcSksIHNoYXJlUmVwbGF5KDEpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgI2NyZWF0ZVdpbmRvd1Jlc2l6ZVdhdGNoZXIoKTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9uUmVzaXplID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdWIubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvblJlc2l6ZSgpXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgb25SZXNpemUpXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgb25SZXNpemUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChkaW1lbnNpb25Jc0VxKSwgc2hhcmVSZXBsYXkoMSkpXG4gICAgICAgIClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRpbWVuc2lvbklzRXEoYTogRGltZW5zaW9uLCBiOiBEaW1lbnNpb24pIHtcbiAgICByZXR1cm4gYSAmJiBiICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { DOCUMENT } from "@angular/common";
1
2
  import { inject, Injectable, NgZone } from "@angular/core";
2
3
  import { distinctUntilChanged, Observable, of, shareReplay } from "rxjs";
3
4
  import { isEqual } from "lodash";
@@ -5,6 +6,7 @@ import { coerceElement } from "@ngutil/common";
5
6
  import * as i0 from "@angular/core";
6
7
  export class PositionWatcher {
7
8
  #zone = inject(NgZone);
9
+ #document = inject(DOCUMENT);
8
10
  #watches = new Map();
9
11
  watch(element) {
10
12
  if (element instanceof Window) {
@@ -22,6 +24,9 @@ export class PositionWatcher {
22
24
  return this.#zone.runOutsideAngular(() => new Observable((dest) => {
23
25
  let rafId = undefined;
24
26
  const emit = () => {
27
+ if (!this.#document.contains(element)) {
28
+ return;
29
+ }
25
30
  const rect = element.getBoundingClientRect();
26
31
  dest.next({
27
32
  x: rect.x,
@@ -44,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
44
49
  type: Injectable,
45
50
  args: [{ providedIn: "root" }]
46
51
  }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24td2F0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3R5bGUvc3JjL3NlcnZpY2VzL3Bvc2l0aW9uLXdhdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFaEMsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTs7QUFLNUQsTUFBTSxPQUFPLGVBQWU7SUFDZixLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3RCLFFBQVEsR0FBMkMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUVyRSxLQUFLLENBQUMsT0FBOEI7UUFDaEMsSUFBSSxPQUFPLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzdCLENBQUM7UUFFRCxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWhDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQ3JDLElBQUksVUFBVSxDQUFDLENBQUMsSUFBMEIsRUFBRSxFQUFFO1lBQzFDLElBQUksS0FBSyxHQUF1QixTQUFTLENBQUE7WUFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO2dCQUNkLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNOLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDVCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ1osQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2YsS0FBSyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2QyxDQUFDO1lBQ0wsQ0FBQyxDQUFBO1lBQ0QsSUFBSSxFQUFFLENBQUE7WUFDTixPQUFPLEdBQUcsRUFBRTtnQkFDUixLQUFLLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDeEMsQ0FBQyxDQUFBO1FBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6RCxDQUFBO0lBQ0wsQ0FBQzs4R0F4Q1EsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vdXRpbC9yZWN0XCJcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uV2F0Y2hlciB7XG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKVxuICAgIHJlYWRvbmx5ICN3YXRjaGVzOiBNYXA8SFRNTEVsZW1lbnQsIE9ic2VydmFibGU8UG9zaXRpb24+PiA9IG5ldyBNYXAoKVxuXG4gICAgd2F0Y2goZWxlbWVudDogRWxlbWVudElucHV0IHwgV2luZG93KTogT2JzZXJ2YWJsZTxQb3NpdGlvbj4ge1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHsgeDogMCwgeTogMCB9KVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoZWxlbWVudClcblxuICAgICAgICBsZXQgd2F0Y2hlciA9IHRoaXMuI3dhdGNoZXMuZ2V0KGVsZW1lbnQpXG4gICAgICAgIGlmICh3YXRjaGVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHdhdGNoZXIgPSB0aGlzLiNjcmVhdGVXYXRjaGVyKGVsZW1lbnQpXG4gICAgICAgICAgICB0aGlzLiN3YXRjaGVzLnNldChlbGVtZW50LCB3YXRjaGVyKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdhdGNoZXJcbiAgICB9XG5cbiAgICAjY3JlYXRlV2F0Y2hlcihlbGVtZW50OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8UG9zaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgICAgICAgIG5ldyBPYnNlcnZhYmxlKChkZXN0OiBTdWJzY3JpYmVyPFBvc2l0aW9uPikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByYWZJZDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgY29uc3QgZW1pdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAgICAgZGVzdC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHJlY3QueCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHJlY3QueVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc3QuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShlbWl0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVtaXQoKVxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJhZklkICYmIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCksIHNoYXJlUmVwbGF5KDEpKVxuICAgICAgICApXG4gICAgfVxufVxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24td2F0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3R5bGUvc3JjL3NlcnZpY2VzL3Bvc2l0aW9uLXdhdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUVwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWhDLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7O0FBSzVELE1BQU0sT0FBTyxlQUFlO0lBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLFFBQVEsR0FBMkMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUVyRSxLQUFLLENBQUMsT0FBOEI7UUFDaEMsSUFBSSxPQUFPLFlBQVksTUFBTSxFQUFFLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzdCLENBQUM7UUFFRCxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWhDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDbEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFvQjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQ3JDLElBQUksVUFBVSxDQUFDLENBQUMsSUFBMEIsRUFBRSxFQUFFO1lBQzFDLElBQUksS0FBSyxHQUF1QixTQUFTLENBQUE7WUFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUNwQyxPQUFNO2dCQUNWLENBQUM7Z0JBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUE7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ04sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNULENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDWixDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZixLQUFLLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3ZDLENBQUM7WUFDTCxDQUFDLENBQUE7WUFDRCxJQUFJLEVBQUUsQ0FBQTtZQUNOLE9BQU8sR0FBRyxFQUFFO2dCQUNSLEtBQUssSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN4QyxDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUE7SUFDTCxDQUFDOzhHQTdDUSxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIlxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vdXRpbC9yZWN0XCJcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uV2F0Y2hlciB7XG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKVxuICAgIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVClcbiAgICByZWFkb25seSAjd2F0Y2hlczogTWFwPEhUTUxFbGVtZW50LCBPYnNlcnZhYmxlPFBvc2l0aW9uPj4gPSBuZXcgTWFwKClcblxuICAgIHdhdGNoKGVsZW1lbnQ6IEVsZW1lbnRJbnB1dCB8IFdpbmRvdyk6IE9ic2VydmFibGU8UG9zaXRpb24+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBXaW5kb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7IHg6IDAsIHk6IDAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnQpXG5cbiAgICAgICAgbGV0IHdhdGNoZXIgPSB0aGlzLiN3YXRjaGVzLmdldChlbGVtZW50KVxuICAgICAgICBpZiAod2F0Y2hlciA9PSBudWxsKSB7XG4gICAgICAgICAgICB3YXRjaGVyID0gdGhpcy4jY3JlYXRlV2F0Y2hlcihlbGVtZW50KVxuICAgICAgICAgICAgdGhpcy4jd2F0Y2hlcy5zZXQoZWxlbWVudCwgd2F0Y2hlcilcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3YXRjaGVyXG4gICAgfVxuXG4gICAgI2NyZWF0ZVdhdGNoZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPFBvc2l0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoZGVzdDogU3Vic2NyaWJlcjxQb3NpdGlvbj4pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIGNvbnN0IGVtaXQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy4jZG9jdW1lbnQuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAgICAgZGVzdC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHJlY3QueCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHJlY3QueVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc3QuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShlbWl0KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVtaXQoKVxuICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJhZklkICYmIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCksIHNoYXJlUmVwbGF5KDEpKVxuICAgICAgICApXG4gICAgfVxufVxuIl19
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, NgZone, Injectable } from '@angular/core';
3
3
  import { Observable, distinctUntilChanged, shareReplay, map, of, combineLatest } from 'rxjs';
4
+ import { DOCUMENT } from '@angular/common';
4
5
  import { coerceElement, isPlainObject, __zone_symbol__, rawRequestAnimationFrame, rawCancelAnimationFrame, NumberWithUnit } from '@ngutil/common';
5
6
  import { isEqual } from 'lodash';
6
7
 
@@ -81,6 +82,7 @@ class Duration {
81
82
 
82
83
  class DimensionWatcher {
83
84
  #zone = inject(NgZone);
85
+ #document = inject(DOCUMENT);
84
86
  #watches = {};
85
87
  watch(element, box) {
86
88
  element = coerceElement(element);
@@ -112,6 +114,9 @@ class DimensionWatcher {
112
114
  }
113
115
  return this.#zone.runOutsideAngular(() => new Observable((sub) => {
114
116
  const observer = new ResizeObserver(entries => {
117
+ if (!this.#document.contains(el)) {
118
+ return;
119
+ }
115
120
  for (const entry of entries) {
116
121
  if (entry.borderBoxSize) {
117
122
  sub.next({
@@ -192,6 +197,7 @@ function dimensionIsEq(a, b) {
192
197
 
193
198
  class PositionWatcher {
194
199
  #zone = inject(NgZone);
200
+ #document = inject(DOCUMENT);
195
201
  #watches = new Map();
196
202
  watch(element) {
197
203
  if (element instanceof Window) {
@@ -209,6 +215,9 @@ class PositionWatcher {
209
215
  return this.#zone.runOutsideAngular(() => new Observable((dest) => {
210
216
  let rafId = undefined;
211
217
  const emit = () => {
218
+ if (!this.#document.contains(element)) {
219
+ return;
220
+ }
212
221
  const rect = element.getBoundingClientRect();
213
222
  dest.next({
214
223
  x: rect.x,
@@ -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/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/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 { 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 #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 watcher = this.#createWindowResizeWatcher()\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 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 { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, of, shareReplay, Subscriber } from \"rxjs\"\n\nimport { isEqual } from \"lodash\"\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 #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 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 { isPlainObject } from \"@ngutil/common\"\n\nconst HORIZONTAL = [\"start\", \"left\", \"center\", \"end\", \"right\", \"max-width\"] as const\nexport type AlignHorizontal = (typeof HORIZONTAL)[number]\n\nconst VERTICAL = [\"top\", \"middle\", \"bottom\", \"max-height\"] as const\nexport type AlignVertical = (typeof VERTICAL)[number]\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: { [key: string]: string } = {\n start: \"left\",\n left: \"left\",\n center: \"center\",\n right: \"right\",\n end: \"right\"\n}\n\nconst VerticalOrigin: { [key: string]: string } = {\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 case \"max-width\":\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 case \"max-height\":\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 case \"max-width\":\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 case \"max-height\":\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 return {\n x: Math.max(rect.x, constraint.x),\n y: Math.max(rect.y, constraint.y),\n width: Math.min(rect.x + rect.width, constraint.x + constraint.width) - rect.x,\n height: Math.min(rect.y + rect.height, constraint.y + constraint.height) - rect.y\n }\n}\nexport function rectExpand(rect: Rect, margin: SidesInput) {\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) {\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","/**\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/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/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 watcher = this.#createWindowResizeWatcher()\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 \"lodash\"\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 { isPlainObject } from \"@ngutil/common\"\n\nconst HORIZONTAL = [\"start\", \"left\", \"center\", \"end\", \"right\", \"max-width\"] as const\nexport type AlignHorizontal = (typeof HORIZONTAL)[number]\n\nconst VERTICAL = [\"top\", \"middle\", \"bottom\", \"max-height\"] as const\nexport type AlignVertical = (typeof VERTICAL)[number]\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: { [key: string]: string } = {\n start: \"left\",\n left: \"left\",\n center: \"center\",\n right: \"right\",\n end: \"right\"\n}\n\nconst VerticalOrigin: { [key: string]: string } = {\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 case \"max-width\":\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 case \"max-height\":\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 case \"max-width\":\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 case \"max-height\":\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 return {\n x: Math.max(rect.x, constraint.x),\n y: Math.max(rect.y, constraint.y),\n width: Math.min(rect.x + rect.width, constraint.x + constraint.width) - rect.x,\n height: Math.min(rect.y + rect.height, constraint.y + constraint.height) - rect.y\n }\n}\nexport function rectExpand(rect: Rect, margin: SidesInput) {\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) {\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngutil/style",
3
- "version": "0.0.57",
3
+ "version": "0.0.58",
4
4
  "exports": {
5
5
  ".": {
6
6
  "sass": "./index.scss",
@@ -18,7 +18,7 @@
18
18
  "@angular/common": "18.2.6",
19
19
  "@angular/core": "18.2.6",
20
20
  "rxjs": "^7.8.1",
21
- "@ngutil/common": "0.0.57"
21
+ "@ngutil/common": "0.0.58"
22
22
  },
23
23
  "publishConfig": {
24
24
  "access": "public",