@ngutil/layout 0.0.3-dev.7 → 0.0.3-dev.8

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,7 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, inject, Input, QueryList } from "@angular/core";
2
2
  import { combineLatest, map, shareReplay, startWith, Subject, switchMap } from "rxjs";
3
- import { Destructible, NumberWithUnit } from "@ngutil/common";
4
- import { FastDOM } from "../util";
3
+ import { Destructible, FastDOM, NumberWithUnit } from "@ngutil/common";
5
4
  import { DockingContentComponent } from "./docking-content.component";
6
5
  import { DockingPanelComponent } from "./docking-panel.component";
7
6
  import * as i0 from "@angular/core";
@@ -262,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
262
261
  type: ContentChildren,
263
262
  args: [DockingPanelComponent]
264
263
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3JFLE9BQU8sRUFBNEIscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7QUFhM0YsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFBO0FBQzFCLE1BQU0sY0FBYyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUE7QUFJMUMsOEJBQThCO0FBQzlCLG9CQUFvQjtBQUNwQixtQ0FBbUM7QUFDbkMsSUFBSTtBQUVKLG1CQUFtQjtBQUNuQiwrQ0FBK0M7QUFDL0Msb0RBQW9EO0FBQ3BELGtFQUFrRTtBQUNsRSw2Q0FBNkM7QUFDN0MsK0JBQStCO0FBQy9CLGdEQUFnRDtBQUNoRCxpQkFBaUI7QUFDakIsWUFBWTtBQUNaLFFBQVE7QUFDUixJQUFJO0FBb0JKLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBbEJ4RDs7UUFtQmEsUUFBRyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENB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Q3JDLGlDQUFpQztRQUNqQyxZQUFZO1FBQ1osUUFBUTtRQUNSLElBQUk7UUFDSiwyQ0FBMkM7UUFDM0MsOEZBQThGO0lBQ2xHLENBQUM7OEdBek9RLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBMQU1qQix1QkFBdUIsbUVBQ3BCLHFCQUFxQix5RUFyQjVCOzs7Ozs7Ozs7O0tBVVQscXhCQVhTLHVCQUF1Qjs7MkZBZXhCLHNCQUFzQjtrQkFsQmxDLFNBQVM7K0JBQ0ksWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLHVCQUF1QixDQUFDLFlBQ3hCOzs7Ozs7Ozs7O0tBVVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBS3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFaUMsZ0JBQWdCO3NCQUF0RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFDRyxhQUFhO3NCQUFwRCxlQUFlO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgRGVzdHJ1Y3RpYmxlLCBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IEZhc3RET00gfSBmcm9tIFwiLi4vdXRpbFwiXG5pbXBvcnQgeyBEb2NraW5nQ29udGVudENvbXBvbmVudCB9IGZyb20gXCIuL2RvY2tpbmctY29udGVudC5jb21wb25lbnRcIlxuaW1wb3J0IHsgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzLCBEb2NraW5nUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLXBhbmVsLmNvbXBvbmVudFwiXG5cbnR5cGUgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb24gPSBcInRvcFwiIHwgXCJtaWRkbGVcIiB8IFwiYm90dG9tXCJcbnR5cGUgRG9ja2luZ0hvcml6b250YWxQb3NpdG9uID0gXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG50eXBlIERvY2tpbmdQb3NpdGlvbiA9IGAke0RvY2tpbmdWZXJ0aWNhbFBvc2l0aW9ufToke0RvY2tpbmdIb3Jpem9udGFsUG9zaXRvbn1gXG5leHBvcnQgdHlwZSBEb2NraW5nUmFuZ2UgPVxuICAgIHwgRG9ja2luZ1ZlcnRpY2FsUG9zaXRpb25cbiAgICB8IERvY2tpbmdIb3Jpem9udGFsUG9zaXRvblxuICAgIHwgRG9ja2luZ1Bvc2l0aW9uXG4gICAgfCBgJHtEb2NraW5nUG9zaXRpb259LSR7RG9ja2luZ1Bvc2l0aW9ufWBcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIiB8IFwiZml4ZWRcIlxuXG5jb25zdCBFTUJFRERFRF9aSU5ERVggPSAyMFxuY29uc3QgT1ZFUkxBWV9aSU5ERVggPSBFTUJFRERFRF9aSU5ERVggKiAyXG5cbnR5cGUgUGFuZWxzQ2hhbmdlcyA9IEFycmF5PHsgcGFuZWw6IERvY2tpbmdQYW5lbENvbXBvbmVudDsgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlcyB9PlxuXG4vLyBpbnRlcmZhY2UgUGFuZWxSZWZDaGFuZ2VzIHtcbi8vICAgICByZWY6IFBhbmVsUmVmXG4vLyAgICAgY2hhbmdlczogRG9ja2luZ1BhbmVsQ2hhbmdlc1xuLy8gfVxuXG4vLyBjbGFzcyBQYW5lbFJlZiB7XG4vLyAgICAgc3R5bGU6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB7fVxuLy8gICAgIHJlYWRvbmx5IGNoYW5nZXM6IE9ic2VydmFibGU8UGFuZWxSZWZDaGFuZ2VzPlxuLy8gICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYW5lbDogRG9ja2luZ1BhbmVsRGlyZWN0aXZlKSB7XG4vLyAgICAgICAgIHRoaXMuY2hhbmdlcyA9IHBhbmVsLmNoYW5nZXMucGlwZShcbi8vICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbi8vICAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IHRoaXMsIGNoYW5nZXMgfVxuLy8gICAgICAgICAgICAgfSlcbi8vICAgICAgICAgKVxuLy8gICAgIH1cbi8vIH1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibnUtZG9ja2luZ1wiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RvY2tpbmdDb250ZW50Q29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJudS1kb2NraW5nLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIEBpZiAoIWNvbnRlbnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgIDxudS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9udS1kb2NraW5nLWNvbnRlbnQ+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRG9ja2luZ0xheW91dENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KVxuXG4gICAgQElucHV0KCkgY29udGVudE9ubHkgPSBmYWxzZVxuICAgIEBJbnB1dCgpIHBvc2l0aW9uTW9kZTogRG9ja2luZ1Bvc2l0aW9uTW9kZSA9IFwiYWJzb2x1dGVcIlxuXG4gICAgQENvbnRlbnRDaGlsZChEb2NraW5nQ29udGVudENvbXBvbmVudCkgY29udGVudENvbXBvbmVudD86IERvY2tpbmdDb250ZW50Q29tcG9uZW50XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NraW5nUGFuZWxDb21wb25lbnQpIGRvY2tpbmdQYW5lbHMhOiBRdWVyeUxpc3Q8RG9ja2luZ1BhbmVsQ29tcG9uZW50PlxuXG4gICAgLy8gcmVhZG9ubHkgcGFuZWxzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYW5lbFJlZltdPihbXSlcbiAgICByZWFkb25seSBwYW5lbHMhOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+XG5cbiAgICAjcmVmbG93ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgKHRoaXMgYXMgeyBwYW5lbHM6IE9ic2VydmFibGU8QXJyYXk8RG9ja2luZ1BhbmVsQ29tcG9uZW50Pj4gfSkucGFuZWxzID0gdGhpcy5kb2NraW5nUGFuZWxzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMudG9BcnJheSgpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcblxuICAgICAgICAvLyB0aGlzLnBhbmVscy5zdWJzY3JpYmUocGFuZWxzID0+IGNvbnNvbGUubG9nKHsgcGFuZWxzIH0pKVxuXG4gICAgICAgIHRoaXMuZFxuICAgICAgICAgICAgLnN1Yihjb21iaW5lTGF0ZXN0KHsgcGFuZWxzOiB0aGlzLnBhbmVscywgcmVmbG93OiB0aGlzLiNyZWZsb3cucGlwZShzdGFydFdpdGgobnVsbCkpIH0pKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh7IHBhbmVscyB9KSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxzLm1hcChwYW5lbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFuZWwsIGNoYW5nZXMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy4jbGF5b3V0LmJpbmQodGhpcykpXG5cbiAgICAgICAgLy8gdGhpcy5kXG4gICAgICAgIC8vICAgICAuc3ViKG1lcmdlKHRoaXMuZG9ja2luZ1BhbmVscy5jaGFuZ2VzLCB0aGlzLiNyZWZsb3cpKVxuICAgICAgICAvLyAgICAgLnBpcGUoXG4gICAgICAgIC8vICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAvLyAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmRvY2tpbmdQYW5lbHMubWFwKHBhbmVsID0+IG5ldyBQYW5lbFJlZihwYW5lbCkpKSxcbiAgICAgICAgLy8gICAgICAgICBzd2l0Y2hNYXAocmVmcyA9PiBjb21iaW5lTGF0ZXN0KHJlZnMubWFwKHJlZiA9PiByZWYuY2hhbmdlcykpKSxcbiAgICAgICAgLy8gICAgICAgICBtYXAoY2hhbmdlcyA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMuI2xheW91dChjaGFuZ2VzKVxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gY2hhbmdlcy5tYXAoYyA9PiBjLnJlZilcbiAgICAgICAgLy8gICAgICAgICB9KVxuICAgICAgICAvLyAgICAgKVxuICAgICAgICAvLyAgICAgLnN1YnNjcmliZSh0aGlzLnBhbmVscylcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcImNvbnRlbnRPbmx5XCIgaW4gY2hhbmdlcyB8fCBcInBvc2l0aW9uTW9kZVwiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuI3JlZmxvdy5uZXh0KClcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNsYXlvdXQoZW50cmllczogUGFuZWxzQ2hhbmdlcykge1xuICAgICAgICBjb25zb2xlLmxvZyhcImxheW91dFwiLCBlbnRyaWVzKVxuICAgICAgICBsZXQgcGFkZGluZ1RvcCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdSaWdodCA9IDBcbiAgICAgICAgbGV0IHBhZGRpbmdCb3R0b20gPSAwXG4gICAgICAgIGxldCBwYWRkaW5nTGVmdCA9IDBcbiAgICAgICAgbGV0IGVtYmVkZGVkWkluZGV4ID0gRU1CRURERURfWklOREVYXG4gICAgICAgIGxldCBvdmVybGF5WkluZGV4ID0gT1ZFUkxBWV9aSU5ERVhcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50T25seSkge1xuICAgICAgICAgICAgLy8gVE9ETzouLi5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU3RhdGUgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxTaXplID1cbiAgICAgICAgICAgICAgICAgICAgcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5mdWxsU2l6ZS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwYW5lbFN0YXRlLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUubWluaVNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBwYW5lbFN0YXRlLnBvc2l0aW9uLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VtYmVkZGVkID0gcGFuZWxTdGF0ZS5tb2RlID09PSBcImVtYmVkZGVkXCJcblxuICAgICAgICAgICAgICAgIGxldCBwYW5lbFRvcCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxSaWdodCA9IG51bGxcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxCb3R0b20gPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsTGVmdCA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxMZWZ0ID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFRvcCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLnYgPT09IFwiYm90dG9tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIHBhbmVsQm90dG9tID0gMFxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwibGVmdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gTWF0aC5tYXgocGFkZGluZ0xlZnQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYW5lbFN0YXRlLnBvc2l0aW9uLmNlbGxzWzBdLmggPT09IFwicmlnaHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhbmVsU2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsUmlnaHQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbEdpdmVuU2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsU3RhdGUuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUuZnVsbFNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLm1pbmlTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IE51bWJlcldpdGhVbml0KDAsIFwicHhcIilcblxuICAgICAgICAgICAgICAgIEZhc3RET00uc2V0U3R5bGUoZW50cnkucGFuZWwuZWwubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICBcInotaW5kZXhcIjogYCR7aXNFbWJlZGRlZCA/IGVtYmVkZGVkWkluZGV4KysgOiBvdmVybGF5WkluZGV4Kyt9YCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtdFwiOiBwYW5lbFRvcCAhPSBudWxsID8gYCR7cGFuZWxUb3B9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtclwiOiBwYW5lbFJpZ2h0ICE9IG51bGwgPyBgJHtwYW5lbFJpZ2h0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWJcIjogcGFuZWxCb3R0b20gIT0gbnVsbCA/IGAke3BhbmVsQm90dG9tfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWxcIjogcGFuZWxMZWZ0ICE9IG51bGwgPyBgJHtwYW5lbExlZnR9cHhgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCItLWRvY2tpbmctcGFuZWwtd1wiOiAhaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLWhcIjogaXNIb3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke3BhbmVsR2l2ZW5TaXplLnVuaXQgPT09IFwiYXV0b1wiID8gXCJhdXRvXCIgOiBwYW5lbEdpdmVuU2l6ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtd1wiOiAhaXNIb3Jpem9udGFsID8gYCR7cGFuZWxTaXplfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJlYWwtaFwiOiBpc0hvcml6b250YWwgPyBgJHtwYW5lbFNpemV9cHhgIDogbnVsbFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHsgcGFkZGluZ1RvcCwgcGFkZGluZ1JpZ2h0LCBwYWRkaW5nQm90dG9tLCBwYWRkaW5nTGVmdCB9KVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtdG9wXCI6IGAke3BhZGRpbmdUb3B9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1yaWdodFwiOiBgJHtwYWRkaW5nUmlnaHR9cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1ib3R0b21cIjogYCR7cGFkZGluZ0JvdHRvbX1weGAsXG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LWxlZnRcIjogYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2xheW91dE9sZChlbnRyaWVzOiBQYW5lbHNDaGFuZ2VzKSB7XG4gICAgICAgIC8vIGxldCBwYWRkaW5nVG9wID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ1JpZ2h0ID0gMFxuICAgICAgICAvLyBsZXQgcGFkZGluZ0JvdHRvbSA9IDBcbiAgICAgICAgLy8gbGV0IHBhZGRpbmdMZWZ0ID0gMFxuICAgICAgICAvLyBpZiAoIXRoaXMuY29udGVudE9ubHkpIHtcbiAgICAgICAgLy8gICAgIGxldCBlbWJlZGRlZFpJbmRleCA9IEVNQkVEREVEX1pJTkRFWFxuICAgICAgICAvLyAgICAgbGV0IG92ZXJsYXlaSW5kZXggPSBPVkVSTEFZX1pJTkRFWFxuICAgICAgICAvLyAgICAgY29uc3QgbGVmdFJpZ2h0OiBQYW5lbFJlZkNoYW5nZXNbXSA9IGVudHJpZXMuZmlsdGVyKHYgPT5cbiAgICAgICAgLy8gICAgICAgICBbXCJsZWZ0XCIsIFwicmlnaHRcIl0uaW5jbHVkZXModi5jaGFuZ2VzLnBvc2l0aW9uLnNpZGUpXG4gICAgICAgIC8vICAgICApXG4gICAgICAgIC8vICAgICBjb25zdCB0b3BCb3R0b206IFBhbmVsUmVmQ2hhbmdlc1tdID0gZW50cmllcy5maWx0ZXIodiA9PlxuICAgICAgICAvLyAgICAgICAgIFtcInRvcFwiLCBcImJvdHRvbVwiXS5pbmNsdWRlcyh2LmNoYW5nZXMucG9zaXRpb24uc2lkZSlcbiAgICAgICAgLy8gICAgIClcbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgIC8vICAgICAgICAgY29uc3QgcmVmID0gZW50cnkucmVmXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS56SW5kZXggPSBgJHtlbWJlZGRlZFpJbmRleCsrfWBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJvdmVybGF5XCIpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLnpJbmRleCA9IGAke292ZXJsYXlaSW5kZXgrK31gXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsZWZ0UmlnaHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBjaGFuZ2VzID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHJlZiA9IGVudHJ5LnJlZlxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHBhZGRpbmcgPVxuICAgICAgICAvLyAgICAgICAgICAgICBjaGFuZ2VzLm1vZGUgPT09IFwiZW1iZWRkZWRcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgPyBjaGFuZ2VzLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5mdWxsU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIDogY2hhbmdlcy5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgID8gY2hhbmdlcy5taW5pU2l6ZVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICByZWYuc3R5bGUuYm90dG9tID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICBpZiAoY2hhbmdlcy5wb3NpdGlvbi5zaWRlID09PSBcImxlZnRcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IE1hdGgubWF4KHBhZGRpbmdMZWZ0LCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nUmlnaHQgPSBNYXRoLm1heChwYWRkaW5nUmlnaHQsIHBhZGRpbmcpXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgdG9wQm90dG9tKSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgY2hhbmdlcyA9IGVudHJ5LmNoYW5nZXNcbiAgICAgICAgLy8gICAgICAgICBjb25zdCByZWYgPSBlbnRyeS5yZWZcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBwYWRkaW5nID1cbiAgICAgICAgLy8gICAgICAgICAgICAgY2hhbmdlcy5tb2RlID09PSBcImVtYmVkZGVkXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgID8gY2hhbmdlcy5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5sZWZ0ID0gYCR7cGFkZGluZ0xlZnR9cHhgXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IGAke3BhZGRpbmdSaWdodH1weGBcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5yaWdodCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIGlmIChjaGFuZ2VzLnBvc2l0aW9uPy5jZWxsc1swXS52ID09PSBcInRvcFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHBhZGRpbmdUb3AgPSBNYXRoLm1heChwYWRkaW5nVG9wLCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCIwXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nQm90dG9tID0gTWF0aC5tYXgocGFkZGluZ0JvdHRvbSwgcGFkZGluZylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IGAwYFxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUudG9wID0gXCJcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvLyBjb25zdCBjZWwgPSB0aGlzLmNvbnRlbnRFbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIC8vIGNlbC5zdHlsZS5wYWRkaW5nID0gYCR7cGFkZGluZ1RvcH1weCAke3BhZGRpbmdSaWdodH1weCAke3BhZGRpbmdCb3R0b219cHggJHtwYWRkaW5nTGVmdH1weGBcbiAgICB9XG59XG4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy9kb2NraW5nL2RvY2tpbmctbGF5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFakcsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDckUsT0FBTyxFQUE0QixxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBOztBQWEzRixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUE7QUFDMUIsTUFBTSxjQUFjLEdBQUcsZUFBZSxHQUFHLENBQUMsQ0FBQTtBQUkxQyw4QkFBOEI7QUFDOUIsb0JBQW9CO0FBQ3BCLG1DQUFtQztBQUNuQyxJQUFJO0FBRUosbUJBQW1CO0FBQ25CLCtDQUErQztBQUMvQyxvREFBb0Q7QUFDcEQsa0VBQWtFO0FBQ2xFLDZDQUE2QztBQUM3QywrQkFBK0I7QUFDL0IsZ0RBQWdEO0FBQ2hELGlCQUFpQjtBQUNqQixZQUFZO0FBQ1osUUFBUTtBQUNSLElBQUk7QUFvQkosTUFBTSxPQUFPLHNCQUF1QixTQUFRLFlBQVk7SUFsQnhEOztRQW1CYSxRQUFHLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUE7UUFFckMsZ0JBQVcsR0FBRyxL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O1FBQ1IsSUFBSTtRQUNKLDJDQUEyQztRQUMzQyw4RkFBOEY7SUFDbEcsQ0FBQzs4R0F6T1Esc0JBQXNCO2tHQUF0QixzQkFBc0IsMExBTWpCLHVCQUF1QixtRUFDcEIscUJBQXFCLHlFQXJCNUI7Ozs7Ozs7Ozs7S0FVVCxxeEJBWFMsdUJBQXVCOzsyRkFleEIsc0JBQXNCO2tCQWxCbEMsU0FBUzsrQkFDSSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsdUJBQXVCLENBQUMsWUFDeEI7Ozs7Ozs7Ozs7S0FVVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFLdEMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVpQyxnQkFBZ0I7c0JBQXRELFlBQVk7dUJBQUMsdUJBQXVCO2dCQUNHLGFBQWE7c0JBQXBELGVBQWU7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBEZXN0cnVjdGlibGUsIEZhc3RET00sIE51bWJlcldpdGhVbml0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgRG9ja2luZ0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi9kb2NraW5nLWNvbnRlbnQuY29tcG9uZW50XCJcbmltcG9ydCB7IHR5cGUgRG9ja2luZ1BhbmVsQ2hhbmdlcywgRG9ja2luZ1BhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4vZG9ja2luZy1wYW5lbC5jb21wb25lbnRcIlxuXG50eXBlIERvY2tpbmdWZXJ0aWNhbFBvc2l0aW9uID0gXCJ0b3BcIiB8IFwibWlkZGxlXCIgfCBcImJvdHRvbVwiXG50eXBlIERvY2tpbmdIb3Jpem9udGFsUG9zaXRvbiA9IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIlxudHlwZSBEb2NraW5nUG9zaXRpb24gPSBgJHtEb2NraW5nVmVydGljYWxQb3NpdGlvbn06JHtEb2NraW5nSG9yaXpvbnRhbFBvc2l0b259YFxuZXhwb3J0IHR5cGUgRG9ja2luZ1JhbmdlID1cbiAgICB8IERvY2tpbmdWZXJ0aWNhbFBvc2l0aW9uXG4gICAgfCBEb2NraW5nSG9yaXpvbnRhbFBvc2l0b25cbiAgICB8IERvY2tpbmdQb3NpdGlvblxuICAgIHwgYCR7RG9ja2luZ1Bvc2l0aW9ufS0ke0RvY2tpbmdQb3NpdGlvbn1gXG5cbmV4cG9ydCB0eXBlIERvY2tpbmdQb3NpdGlvbk1vZGUgPSBcImFic29sdXRlXCIgfCBcImZpeGVkXCJcblxuY29uc3QgRU1CRURERURfWklOREVYID0gMjBcbmNvbnN0IE9WRVJMQVlfWklOREVYID0gRU1CRURERURfWklOREVYICogMlxuXG50eXBlIFBhbmVsc0NoYW5nZXMgPSBBcnJheTx7IHBhbmVsOiBEb2NraW5nUGFuZWxDb21wb25lbnQ7IGNoYW5nZXM6IERvY2tpbmdQYW5lbENoYW5nZXMgfT5cblxuLy8gaW50ZXJmYWNlIFBhbmVsUmVmQ2hhbmdlcyB7XG4vLyAgICAgcmVmOiBQYW5lbFJlZlxuLy8gICAgIGNoYW5nZXM6IERvY2tpbmdQYW5lbENoYW5nZXNcbi8vIH1cblxuLy8gY2xhc3MgUGFuZWxSZWYge1xuLy8gICAgIHN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge31cbi8vICAgICByZWFkb25seSBjaGFuZ2VzOiBPYnNlcnZhYmxlPFBhbmVsUmVmQ2hhbmdlcz5cbi8vICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGFuZWw6IERvY2tpbmdQYW5lbERpcmVjdGl2ZSkge1xuLy8gICAgICAgICB0aGlzLmNoYW5nZXMgPSBwYW5lbC5jaGFuZ2VzLnBpcGUoXG4vLyAgICAgICAgICAgICBtYXAoY2hhbmdlcyA9PiB7XG4vLyAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiB0aGlzLCBjaGFuZ2VzIH1cbi8vICAgICAgICAgICAgIH0pXG4vLyAgICAgICAgIClcbi8vICAgICB9XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51LWRvY2tpbmdcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEb2NraW5nQ29udGVudENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibnUtZG9ja2luZy1wYW5lbFwiPjwvbmctY29udGVudD5cblxuICAgICAgICBAaWYgKCFjb250ZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICA8bnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbnUtZG9ja2luZy1jb250ZW50PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm51LWRvY2tpbmctY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgfVxuICAgIGAsXG4gICAgc3R5bGVVcmw6IFwiLi9kb2NraW5nLWxheW91dC5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdMYXlvdXRDb21wb25lbnQgZXh0ZW5kcyBEZXN0cnVjdGlibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50PilcblxuICAgIEBJbnB1dCgpIGNvbnRlbnRPbmx5ID0gZmFsc2VcbiAgICBASW5wdXQoKSBwb3NpdGlvbk1vZGU6IERvY2tpbmdQb3NpdGlvbk1vZGUgPSBcImFic29sdXRlXCJcblxuICAgIEBDb250ZW50Q2hpbGQoRG9ja2luZ0NvbnRlbnRDb21wb25lbnQpIGNvbnRlbnRDb21wb25lbnQ/OiBEb2NraW5nQ29udGVudENvbXBvbmVudFxuICAgIEBDb250ZW50Q2hpbGRyZW4oRG9ja2luZ1BhbmVsQ29tcG9uZW50KSBkb2NraW5nUGFuZWxzITogUXVlcnlMaXN0PERvY2tpbmdQYW5lbENvbXBvbmVudD5cblxuICAgIC8vIHJlYWRvbmx5IHBhbmVscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFuZWxSZWZbXT4oW10pXG4gICAgcmVhZG9ubHkgcGFuZWxzITogT2JzZXJ2YWJsZTxBcnJheTxEb2NraW5nUGFuZWxDb21wb25lbnQ+PlxuXG4gICAgI3JlZmxvdyA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICh0aGlzIGFzIHsgcGFuZWxzOiBPYnNlcnZhYmxlPEFycmF5PERvY2tpbmdQYW5lbENvbXBvbmVudD4+IH0pLnBhbmVscyA9IHRoaXMuZG9ja2luZ1BhbmVscy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5kb2NraW5nUGFuZWxzLnRvQXJyYXkoKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG5cbiAgICAgICAgLy8gdGhpcy5wYW5lbHMuc3Vic2NyaWJlKHBhbmVscyA9PiBjb25zb2xlLmxvZyh7IHBhbmVscyB9KSlcblxuICAgICAgICB0aGlzLmRcbiAgICAgICAgICAgIC5zdWIoY29tYmluZUxhdGVzdCh7IHBhbmVsczogdGhpcy5wYW5lbHMsIHJlZmxvdzogdGhpcy4jcmVmbG93LnBpcGUoc3RhcnRXaXRoKG51bGwpKSB9KSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoeyBwYW5lbHMgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVscy5tYXAocGFuZWwgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcChjaGFuZ2VzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhbmVsLCBjaGFuZ2VzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuI2xheW91dC5iaW5kKHRoaXMpKVxuXG4gICAgICAgIC8vIHRoaXMuZFxuICAgICAgICAvLyAgICAgLnN1YihtZXJnZSh0aGlzLmRvY2tpbmdQYW5lbHMuY2hhbmdlcywgdGhpcy4jcmVmbG93KSlcbiAgICAgICAgLy8gICAgIC5waXBlKFxuICAgICAgICAvLyAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgLy8gICAgICAgICBtYXAoKCkgPT4gdGhpcy5kb2NraW5nUGFuZWxzLm1hcChwYW5lbCA9PiBuZXcgUGFuZWxSZWYocGFuZWwpKSksXG4gICAgICAgIC8vICAgICAgICAgc3dpdGNoTWFwKHJlZnMgPT4gY29tYmluZUxhdGVzdChyZWZzLm1hcChyZWYgPT4gcmVmLmNoYW5nZXMpKSksXG4gICAgICAgIC8vICAgICAgICAgbWFwKGNoYW5nZXMgPT4ge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLiNsYXlvdXQoY2hhbmdlcylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuIGNoYW5nZXMubWFwKGMgPT4gYy5yZWYpXG4gICAgICAgIC8vICAgICAgICAgfSlcbiAgICAgICAgLy8gICAgIClcbiAgICAgICAgLy8gICAgIC5zdWJzY3JpYmUodGhpcy5wYW5lbHMpXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXCJjb250ZW50T25seVwiIGluIGNoYW5nZXMgfHwgXCJwb3NpdGlvbk1vZGVcIiBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLiNyZWZsb3cubmV4dCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbGF5b3V0KGVudHJpZXM6IFBhbmVsc0NoYW5nZXMpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJsYXlvdXRcIiwgZW50cmllcylcbiAgICAgICAgbGV0IHBhZGRpbmdUb3AgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nUmlnaHQgPSAwXG4gICAgICAgIGxldCBwYWRkaW5nQm90dG9tID0gMFxuICAgICAgICBsZXQgcGFkZGluZ0xlZnQgPSAwXG4gICAgICAgIGxldCBlbWJlZGRlZFpJbmRleCA9IEVNQkVEREVEX1pJTkRFWFxuICAgICAgICBsZXQgb3ZlcmxheVpJbmRleCA9IE9WRVJMQVlfWklOREVYXG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudE9ubHkpIHtcbiAgICAgICAgICAgIC8vIFRPRE86Li4uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbFN0YXRlID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsU2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsU3RhdGUuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBhbmVsU3RhdGUuZnVsbFNpemUudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcGFuZWxTdGF0ZS5zdGF0ZSA9PT0gXCJtaW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLm1pbmlTaXplLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogMFxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gcGFuZWxTdGF0ZS5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbWJlZGRlZCA9IHBhbmVsU3RhdGUubW9kZSA9PT0gXCJlbWJlZGRlZFwiXG5cbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxUb3AgPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsUmlnaHQgPSBudWxsXG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsQm90dG9tID0gbnVsbFxuICAgICAgICAgICAgICAgIGxldCBwYW5lbExlZnQgPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsTGVmdCA9IDBcbiAgICAgICAgICAgICAgICAgICAgcGFuZWxSaWdodCA9IDBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhbmVsU3RhdGUucG9zaXRpb24uY2VsbHNbMF0udiA9PT0gXCJ0b3BcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wID0gTWF0aC5tYXgocGFkZGluZ1RvcCwgcGFuZWxTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxUb3AgPSAwXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS52ID09PSBcImJvdHRvbVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b20gPSBNYXRoLm1heChwYWRkaW5nQm90dG9tLCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbEJvdHRvbSA9IDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhbmVsVG9wID0gMFxuICAgICAgICAgICAgICAgICAgICBwYW5lbEJvdHRvbSA9IDBcblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS5oID09PSBcImxlZnRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IE1hdGgubWF4KHBhZGRpbmdMZWZ0LCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbExlZnQgPSAwXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFuZWxTdGF0ZS5wb3NpdGlvbi5jZWxsc1swXS5oID09PSBcInJpZ2h0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0ID0gTWF0aC5tYXgocGFkZGluZ1JpZ2h0LCBwYW5lbFNpemUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYW5lbFJpZ2h0ID0gMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxHaXZlblNpemUgPVxuICAgICAgICAgICAgICAgICAgICBwYW5lbFN0YXRlLnN0YXRlID09PSBcImZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwYW5lbFN0YXRlLmZ1bGxTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhbmVsU3RhdGUuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFuZWxTdGF0ZS5taW5pU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBOdW1iZXJXaXRoVW5pdCgwLCBcInB4XCIpXG5cbiAgICAgICAgICAgICAgICBGYXN0RE9NLnNldFN0eWxlKGVudHJ5LnBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ6LWluZGV4XCI6IGAke2lzRW1iZWRkZWQgPyBlbWJlZGRlZFpJbmRleCsrIDogb3ZlcmxheVpJbmRleCsrfWAsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXRcIjogcGFuZWxUb3AgIT0gbnVsbCA/IGAke3BhbmVsVG9wfXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXJcIjogcGFuZWxSaWdodCAhPSBudWxsID8gYCR7cGFuZWxSaWdodH1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1iXCI6IHBhbmVsQm90dG9tICE9IG51bGwgPyBgJHtwYW5lbEJvdHRvbX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1sXCI6IHBhbmVsTGVmdCAhPSBudWxsID8gYCR7cGFuZWxMZWZ0fXB4YCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLXBhbmVsLXdcIjogIWlzSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtwYW5lbEdpdmVuU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IFwiYXV0b1wiIDogcGFuZWxHaXZlblNpemV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1oXCI6IGlzSG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtwYW5lbEdpdmVuU2l6ZS51bml0ID09PSBcImF1dG9cIiA/IFwiYXV0b1wiIDogcGFuZWxHaXZlblNpemV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1yZWFsLXdcIjogIWlzSG9yaXpvbnRhbCA/IGAke3BhbmVsU2l6ZX1weGAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1wYW5lbC1yZWFsLWhcIjogaXNIb3Jpem9udGFsID8gYCR7cGFuZWxTaXplfXB4YCA6IG51bGxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh7IHBhZGRpbmdUb3AsIHBhZGRpbmdSaWdodCwgcGFkZGluZ0JvdHRvbSwgcGFkZGluZ0xlZnQgfSlcblxuICAgICAgICAgICAgRmFzdERPTS5zZXRTdHlsZSh0aGlzLiNlbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgXCItLWRvY2tpbmctbGF5b3V0LXRvcFwiOiBgJHtwYWRkaW5nVG9wfXB4YCxcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtcmlnaHRcIjogYCR7cGFkZGluZ1JpZ2h0fXB4YCxcbiAgICAgICAgICAgICAgICBcIi0tZG9ja2luZy1sYXlvdXQtYm90dG9tXCI6IGAke3BhZGRpbmdCb3R0b219cHhgLFxuICAgICAgICAgICAgICAgIFwiLS1kb2NraW5nLWxheW91dC1sZWZ0XCI6IGAke3BhZGRpbmdMZWZ0fXB4YFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNsYXlvdXRPbGQoZW50cmllczogUGFuZWxzQ2hhbmdlcykge1xuICAgICAgICAvLyBsZXQgcGFkZGluZ1RvcCA9IDBcbiAgICAgICAgLy8gbGV0IHBhZGRpbmdSaWdodCA9IDBcbiAgICAgICAgLy8gbGV0IHBhZGRpbmdCb3R0b20gPSAwXG4gICAgICAgIC8vIGxldCBwYWRkaW5nTGVmdCA9IDBcbiAgICAgICAgLy8gaWYgKCF0aGlzLmNvbnRlbnRPbmx5KSB7XG4gICAgICAgIC8vICAgICBsZXQgZW1iZWRkZWRaSW5kZXggPSBFTUJFRERFRF9aSU5ERVhcbiAgICAgICAgLy8gICAgIGxldCBvdmVybGF5WkluZGV4ID0gT1ZFUkxBWV9aSU5ERVhcbiAgICAgICAgLy8gICAgIGNvbnN0IGxlZnRSaWdodDogUGFuZWxSZWZDaGFuZ2VzW10gPSBlbnRyaWVzLmZpbHRlcih2ID0+XG4gICAgICAgIC8vICAgICAgICAgW1wibGVmdFwiLCBcInJpZ2h0XCJdLmluY2x1ZGVzKHYuY2hhbmdlcy5wb3NpdGlvbi5zaWRlKVxuICAgICAgICAvLyAgICAgKVxuICAgICAgICAvLyAgICAgY29uc3QgdG9wQm90dG9tOiBQYW5lbFJlZkNoYW5nZXNbXSA9IGVudHJpZXMuZmlsdGVyKHYgPT5cbiAgICAgICAgLy8gICAgICAgICBbXCJ0b3BcIiwgXCJib3R0b21cIl0uaW5jbHVkZXModi5jaGFuZ2VzLnBvc2l0aW9uLnNpZGUpXG4gICAgICAgIC8vICAgICApXG4gICAgICAgIC8vICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBjaGFuZ2VzID0gZW50cnkuY2hhbmdlc1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IHJlZiA9IGVudHJ5LnJlZlxuICAgICAgICAvLyAgICAgICAgIGlmIChjaGFuZ2VzLm1vZGUgPT09IFwiZW1iZWRkZWRcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUuekluZGV4ID0gYCR7ZW1iZWRkZWRaSW5kZXgrK31gXG4gICAgICAgIC8vICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzLm1vZGUgPT09IFwib3ZlcmxheVwiKSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS56SW5kZXggPSBgJHtvdmVybGF5WkluZGV4Kyt9YFxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGZvciAoY29uc3QgZW50cnkgb2YgbGVmdFJpZ2h0KSB7XG4gICAgICAgIC8vICAgICAgICAgY29uc3QgY2hhbmdlcyA9IGVudHJ5LmNoYW5nZXNcbiAgICAgICAgLy8gICAgICAgICBjb25zdCByZWYgPSBlbnRyeS5yZWZcbiAgICAgICAgLy8gICAgICAgICBjb25zdCBwYWRkaW5nID1cbiAgICAgICAgLy8gICAgICAgICAgICAgY2hhbmdlcy5tb2RlID09PSBcImVtYmVkZGVkXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgID8gY2hhbmdlcy5zdGF0ZSA9PT0gXCJmdWxsXCJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMuZnVsbFNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZXMuc3RhdGUgPT09IFwibWluaVwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA/IGNoYW5nZXMubWluaVNpemVcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgIC8vICAgICAgICAgcmVmLnN0eWxlLnRvcCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgcmVmLnN0eWxlLmJvdHRvbSA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNoYW5nZXMucG9zaXRpb24uc2lkZSA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcGFkZGluZ0xlZnQgPSBNYXRoLm1heChwYWRkaW5nTGVmdCwgcGFkZGluZylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmxlZnQgPSBcIjBcIlxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUucmlnaHQgPSBcIlwiXG4gICAgICAgIC8vICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcGFkZGluZ1JpZ2h0ID0gTWF0aC5tYXgocGFkZGluZ1JpZ2h0LCBwYWRkaW5nKVxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUucmlnaHQgPSBcIjBcIlxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRvcEJvdHRvbSkge1xuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSBlbnRyeS5jaGFuZ2VzXG4gICAgICAgIC8vICAgICAgICAgY29uc3QgcmVmID0gZW50cnkucmVmXG4gICAgICAgIC8vICAgICAgICAgY29uc3QgcGFkZGluZyA9XG4gICAgICAgIC8vICAgICAgICAgICAgIGNoYW5nZXMubW9kZSA9PT0gXCJlbWJlZGRlZFwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICA/IGNoYW5nZXMuc3RhdGUgPT09IFwiZnVsbFwiXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgPyBjaGFuZ2VzLmZ1bGxTaXplXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgOiBjaGFuZ2VzLnN0YXRlID09PSBcIm1pbmlcIlxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgPyBjaGFuZ2VzLm1pbmlTaXplXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAvLyAgICAgICAgIGlmIChjaGFuZ2VzLm1vZGUgPT09IFwiZW1iZWRkZWRcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUubGVmdCA9IGAke3BhZGRpbmdMZWZ0fXB4YFxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUucmlnaHQgPSBgJHtwYWRkaW5nUmlnaHR9cHhgXG4gICAgICAgIC8vICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLmxlZnQgPSBcIjBcIlxuICAgICAgICAvLyAgICAgICAgICAgICByZWYuc3R5bGUucmlnaHQgPSBcIjBcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICBpZiAoY2hhbmdlcy5wb3NpdGlvbj8uY2VsbHNbMF0udiA9PT0gXCJ0b3BcIikge1xuICAgICAgICAvLyAgICAgICAgICAgICBwYWRkaW5nVG9wID0gTWF0aC5tYXgocGFkZGluZ1RvcCwgcGFkZGluZylcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLnRvcCA9IFwiMFwiXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5ib3R0b20gPSBcIlwiXG4gICAgICAgIC8vICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgcGFkZGluZ0JvdHRvbSA9IE1hdGgubWF4KHBhZGRpbmdCb3R0b20sIHBhZGRpbmcpXG4gICAgICAgIC8vICAgICAgICAgICAgIHJlZi5zdHlsZS5ib3R0b20gPSBgMGBcbiAgICAgICAgLy8gICAgICAgICAgICAgcmVmLnN0eWxlLnRvcCA9IFwiXCJcbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gY29uc3QgY2VsID0gdGhpcy5jb250ZW50RWwubmF0aXZlRWxlbWVudFxuICAgICAgICAvLyBjZWwuc3R5bGUucGFkZGluZyA9IGAke3BhZGRpbmdUb3B9cHggJHtwYWRkaW5nUmlnaHR9cHggJHtwYWRkaW5nQm90dG9tfXB4ICR7cGFkZGluZ0xlZnR9cHhgXG4gICAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  import { Component, ElementRef, inject, Input, Output } from "@angular/core";
2
2
  import { BehaviorSubject, combineLatest, map, of, shareReplay, switchMap } from "rxjs";
3
- import { coerceBoolAttr, Destructible, NumberWithUnit } from "@ngutil/common";
3
+ import { coerceBoolAttr, Destructible, FastDOM, NumberWithUnit } from "@ngutil/common";
4
4
  import { L9Range } from "../l9/range";
5
- import { FastDOM, watchDimension } from "../util";
5
+ import { watchDimension } from "../util";
6
6
  import * as i0 from "@angular/core";
7
7
  const DEFAULT_POSITION = L9Range.coerce("left");
8
8
  export class DockingPanelComponent extends Destructible {
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
145
145
  type: Input,
146
146
  args: ["minimizable"]
147
147
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUE7QUFFaEgsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTs7QUFLakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBUy9DLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBR25ELElBQ0ksYUFBYSxDQUFDLEdBQTBCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBRXZFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxJQUFJ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RkFFNUIscUJBQXFCO2tCQVBqQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsWUFDbEIsZ0JBQWdCLFlBRWhCLDJCQUEyQjt3REFNakMsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQWlCYixVQUFVO3NCQURiLEtBQUs7dUJBQUMsT0FBTztnQkFPTCxLQUFLO3NCQURiLE1BQU07dUJBQUMsY0FBYztnQkFJbEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLE1BQU07Z0JBU1QsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsVUFBVTtnQkFVYixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbEF0dHIsIERlc3RydWN0aWJsZSwgTnVtYmVyV2l0aFVuaXQsIE51bWJlcldpdGhVbml0SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyBGYXN0RE9NLCB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTRVQgUE9TSVRJT05cIiwgY29lcmNlZCwgdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKVxuXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2luZy1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL2RvY2tpbmcvZG9ja2luZy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRWxHLE9BQU8sRUFFSCxjQUFjLEVBQ2QsWUFBWSxFQUNaLE9BQU8sRUFDUCxjQUFjLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBZSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBOztBQUt4QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFTL0MsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFHbkQsSUFDSSxhQUFhLENBQUMsR0FBMEI7UUFDeEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFdkUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUks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QUU1QixxQkFBcUI7a0JBUGpDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGtCQUFrQixZQUNsQixnQkFBZ0IsWUFFaEIsMkJBQTJCO3dEQU1qQyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBaUJiLFVBQVU7c0JBRGIsS0FBSzt1QkFBQyxPQUFPO2dCQU9MLEtBQUs7c0JBRGIsTUFBTTt1QkFBQyxjQUFjO2dCQUlsQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsTUFBTTtnQkFTVCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLFVBQVU7Z0JBVWIsYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyxVQUFVO2dCQVViLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHtcbiAgICBCb29sZWFuSW5wdXQsXG4gICAgY29lcmNlQm9vbEF0dHIsXG4gICAgRGVzdHJ1Y3RpYmxlLFxuICAgIEZhc3RET00sXG4gICAgTnVtYmVyV2l0aFVuaXQsXG4gICAgTnVtYmVyV2l0aFVuaXRJbnB1dFxufSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBMOVJhbmdlLCBMOVJhbmdlTmFtZSB9IGZyb20gXCIuLi9sOS9yYW5nZVwiXG5pbXBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuLi91dGlsXCJcblxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsU3RhdGUgPSBcImZ1bGxcIiB8IFwibWluaVwiIHwgXCJpbnZpc2libGVcIlxuZXhwb3J0IHR5cGUgRG9ja2luZ1BhbmVsTW9kZSA9IFwib3ZlcmxheVwiIHwgXCJlbWJlZGRlZFwiXG5cbmNvbnN0IERFRkFVTFRfUE9TSVRJT04gPSBMOVJhbmdlLmNvZXJjZShcImxlZnRcIilcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJudS1kb2NraW5nLXBhbmVsXCIsXG4gICAgZXhwb3J0QXM6IFwibnVEb2NraW5nUGFuZWxcIixcbiAgICBzdHlsZVVybDogXCIuL2RvY2tpbmctcGFuZWwuY29tcG9uZW50LnNjc3NcIixcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gXG59KVxuZXhwb3J0IGNsYXNzIERvY2tpbmdQYW5lbENvbXBvbmVudCBleHRlbmRzIERlc3RydWN0aWJsZSB7XG4gICAgcmVhZG9ubHkgZWwgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pXG5cbiAgICBASW5wdXQoXCJwb3NpdGlvblwiKVxuICAgIHNldCBwb3NpdGlvbklucHV0KHZhbDogTDlSYW5nZSB8IEw5UmFuZ2VOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWQgPSBMOVJhbmdlLmNvZXJjZSh2YWwpXG5cbiAgICAgICAgY29uc29sZS5sb2coXCJTRVQgUE9TSVRJT05cIiwgY29lcmNlZCwgdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKVxuXG4gICAgICAgIGlmIChjb2VyY2VkLm9yaWVudCA9PT0gXCJyZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbiB2YWx1ZTogJHt2YWx9YClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wb3NpdGlvbi52YWx1ZS5pc0VxKGNvZXJjZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSBwb3NpdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TDlSYW5nZT4oREVGQVVMVF9QT1NJVElPTilcblxuICAgIEBJbnB1dChcInN0YXRlXCIpXG4gICAgc2V0IHN0YXRlSW5wdXQodmFsOiBEb2NraW5nUGFuZWxTdGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQodmFsKVxuICAgICAgICB9XG4gICAgfVxuICAgIEBPdXRwdXQoXCJzdGF0ZUNoYW5nZXNcIilcbiAgICByZWFkb25seSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsU3RhdGU+KFwiaW52aXNpYmxlXCIpXG5cbiAgICBASW5wdXQoXCJtb2RlXCIpXG4gICAgc2V0IG1vZGVJbnB1dCh2YWw6IERvY2tpbmdQYW5lbE1vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZS52YWx1ZSAhPT0gdmFsKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUubmV4dCh2YWwpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVhZG9ubHkgbW9kZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9ja2luZ1BhbmVsTW9kZT4oXCJvdmVybGF5XCIpXG5cbiAgICBASW5wdXQoXCJmdWxsU2l6ZVwiKVxuICAgIHNldCBmdWxsU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jZnVsbFNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI2Z1bGxTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjZnVsbFNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pU2l6ZVwiKVxuICAgIHNldCBtaW5pU2l6ZUlucHV0KHZhbDogTnVtYmVyV2l0aFVuaXRJbnB1dCkge1xuICAgICAgICBjb25zdCBjb2VyY2VkID0gTnVtYmVyV2l0aFVuaXQuY29lcmNlKHZhbCwgXCJweFwiKVxuICAgICAgICBpZiAodGhpcy4jbWluaVNpemUudmFsdWUgIT09IGNvZXJjZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI21pbmlTaXplLm5leHQoY29lcmNlZClcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWFkb25seSAjbWluaVNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE51bWJlcldpdGhVbml0PihOdW1iZXJXaXRoVW5pdC5jb2VyY2UoMCkpXG5cbiAgICBASW5wdXQoXCJtaW5pbWl6YWJsZVwiKVxuICAgIHNldCBtaW5pbWl6YWJsZSh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLiNtaW5pbWl6YWJsZSA9IGNvZXJjZUJvb2xBdHRyKHZhbClcbiAgICAgICAgdGhpcy4jbWluaW1pemFibGVBdXRvID0gZmFsc2VcbiAgICB9XG4gICAgZ2V0IG1pbmltaXphYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWluaW1pemFibGVcbiAgICB9XG4gICAgI21pbmltaXphYmxlOiBib29sZWFuID0gZmFsc2VcbiAgICAjbWluaW1pemFibGVBdXRvOiBib29sZWFuID0gdHJ1ZVxuXG4gICAgcmVhZG9ubHkgI2F1dG9TaXplID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGRpbTogd2F0Y2hEaW1lbnNpb24odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBcInNjcm9sbC1ib3hcIiksXG4gICAgICAgIHBvczogdGhpcy5wb3NpdGlvblxuICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoeyBkaW0sIHBvcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAocG9zLm9yaWVudCA9PT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLmhlaWdodFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGltLndpZHRoXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGZ1bGxTaXplID0gdGhpcy4jZnVsbFNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IG1pbmlTaXplID0gdGhpcy4jbWluaVNpemUucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNpemUgPT4ge1xuICAgICAgICAgICAgaWYgKHNpemUudW5pdCA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYXV0b1NpemVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNpemUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IGNoYW5nZXMgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICAgIGZ1bGxTaXplOiB0aGlzLmZ1bGxTaXplLFxuICAgICAgICBtaW5pU2l6ZTogdGhpcy5taW5pU2l6ZVxuICAgIH0pXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuXG4gICAgICAgIHRoaXMuZC5zdWIodGhpcy5jaGFuZ2VzKS5zdWJzY3JpYmUoY2hhbmdlcyA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jbWluaW1pemFibGVBdXRvKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jbWluaW1pemFibGUgPSB0aGlzLiNtaW5pU2l6ZS52YWx1ZS52YWx1ZSAhPT0gMFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGYXN0RE9NLnNldEF0dHJpYnV0ZXModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IGNoYW5nZXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgb3JpZW50OiBjaGFuZ2VzLnBvc2l0aW9uLm9yaWVudCxcbiAgICAgICAgICAgICAgICBtb2RlOiBjaGFuZ2VzLm1vZGUsXG4gICAgICAgICAgICAgICAgc2lkZTpcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlcy5wb3NpdGlvbi5vcmllbnQgPT09IFwiaG9yaXpvbnRhbFwiID8gY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS52IDogY2hhbmdlcy5wb3NpdGlvbi5jZWxsc1swXS5oXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubmV4dChcImZ1bGxcIilcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5uZXh0KFwiaW52aXNpYmxlXCIpXG4gICAgfVxuXG4gICAgbWluaW1pemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1pbmltaXphYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLm5leHQoXCJtaW5pXCIpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbnR5cGUgQ2hhbmdlc09ic2VydmFibGUgPSB0eXBlb2YgRG9ja2luZ1BhbmVsQ29tcG9uZW50LnByb3RvdHlwZS5jaGFuZ2VzXG5leHBvcnQgdHlwZSBEb2NraW5nUGFuZWxDaGFuZ2VzID0gQ2hhbmdlc09ic2VydmFibGUgZXh0ZW5kcyBPYnNlcnZhYmxlPGluZmVyIFQ+ID8gVCA6IG5ldmVyXG4iXX0=
@@ -2,7 +2,7 @@ import { inject, NgZone } from "@angular/core";
2
2
  import { distinctUntilChanged, Observable, shareReplay } from "rxjs";
3
3
  import { NumberWithUnit } from "@ngutil/common";
4
4
  const RESIZE_WATCHES = new Map();
5
- const SCROLL_CONTENT_WATCHES = new Map();
5
+ const SCROLL_WATCHES = new Map();
6
6
  export function watchDimension(el, box = "border-box") {
7
7
  const zone = inject(NgZone);
8
8
  return box === "scroll-box" ? _watchScroll(zone, el) : _watchResize(zone, el, box);
@@ -11,7 +11,7 @@ function _watchResize(zone, el, box) {
11
11
  return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box));
12
12
  }
13
13
  function _watchScroll(zone, el) {
14
- return _watch(zone, el, SCROLL_CONTENT_WATCHES, () => _createScollWatcher(zone, el));
14
+ return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el));
15
15
  }
16
16
  function _watch(zone, el, watches, factory) {
17
17
  const existing = watches.get(el);
@@ -74,10 +74,11 @@ function _createScollWatcher(zone, el) {
74
74
  return () => {
75
75
  dimSum.unsubscribe();
76
76
  mutation.disconnect();
77
+ SCROLL_WATCHES.delete(el);
77
78
  };
78
79
  }).pipe(shareReplay(1)));
79
80
  }
80
81
  function _number(val) {
81
82
  return new NumberWithUnit(val, "pk");
82
83
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvZGltZW5zaW9uLXdhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTy9DLE1BQU0sY0FBYyxHQUFZLElBQUksR0FBRyxFQUFFLENBQUE7QUFDekMsTUFBTSxzQkFBc0IsR0FBWSxJQUFJLEdBQUcsRUFBRSxDQUFBO0FBRWpELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFBZSxFQUFFLE1BQWdCLFlBQVk7SUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLE9BQU8sR0FBRyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxFQUFlLEVBQUUsR0FBYTtJQUM5RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQVksRUFBRSxFQUFlO0lBQy9DLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxF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LFlBQVksQ0FBQTtZQUMxQixJQUFJLE1BQU0sS0FBSyxFQUFFLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsRUFBRSxDQUFBO2dCQUNYLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDakUsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixhQUFhLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsRUFBRTtZQUNSLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNwQixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDekIsQ0FBQyxDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMxQixDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLEdBQVc7SUFDeEIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YnNjcmliZXIgfSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IE51bWJlcldpdGhVbml0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uXCJcblxudHlwZSBXYXRjaGVzID0gTWFwPEhUTUxFbGVtZW50LCBPYnNlcnZhYmxlPERpbWVuc2lvbj4+XG5leHBvcnQgdHlwZSBXYXRjaEJveCA9IFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB8IFwic2Nyb2xsLWJveFwiXG5cbmNvbnN0IFJFU0laRV9XQVRDSEVTOiBXYXRjaGVzID0gbmV3IE1hcCgpXG5jb25zdCBTQ1JPTExfQ09OVEVOVF9XQVRDSEVTOiBXYXRjaGVzID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaERpbWVuc2lvbihlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3ggPSBcImJvcmRlci1ib3hcIik6IE9ic2VydmFibGU8RGltZW5zaW9uPiB7XG4gICAgY29uc3Qgem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmV0dXJuIGJveCA9PT0gXCJzY3JvbGwtYm94XCIgPyBfd2F0Y2hTY3JvbGwoem9uZSwgZWwpIDogX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBib3gpXG59XG5cbmZ1bmN0aW9uIF93YXRjaFJlc2l6ZSh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCkge1xuICAgIHJldHVybiBfd2F0Y2goem9uZSwgZWwsIFJFU0laRV9XQVRDSEVTLCAoKSA9PiBfY3JlYXRlUmVzaXplV2F0Y2hlcih6b25lLCBlbCwgYm94KSlcbn1cblxuZnVuY3Rpb24gX3dhdGNoU2Nyb2xsKHpvbmU6IE5nWm9uZSwgZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIF93YXRjaCh6b25lLCBlbCwgU0NST0xMX0NPTlRFTlRfV0FUQ0hFUywgKCkgPT4gX2NyZWF0ZVNjb2xsV2F0Y2hlcih6b25lLCBlbCkpXG59XG5cbmZ1bmN0aW9uIF93YXRjaCh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgd2F0Y2hlczogV2F0Y2hlcywgZmFjdG9yeTogKCkgPT4gT2JzZXJ2YWJsZTxEaW1lbnNpb24+KSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB3YXRjaGVzLmdldChlbClcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gZmFjdG9yeSgpXG4gICAgICAgIHdhdGNoZXMuc2V0KGVsLCB3YXRjaGVyKVxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJlc2l6ZVdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3gpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICB9XG5cbiAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uYmxvY2tTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX251bWJlcihlbC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVsLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgeyBib3g6IGJveCBhcyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICBSRVNJWkVfV0FUQ0hFUy5kZWxldGUoZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gcCAmJiBjICYmIHAud2lkdGggPT09IGMud2lkdGggJiYgcC5oZWlnaHQgPT09IGMuaGVpZ2h0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTY29sbFdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gMFxuICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gMFxuXG4gICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ID0gZWwuc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFN3ID0gc3dcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogX251bWJlcihsYXN0U3cpLCBoZWlnaHQ6IF9udW1iZXIobGFzdFNoKSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGltU3VtID0gX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBcImJvcmRlci1ib3hcIikuc3Vic2NyaWJlKGVtaXQpXG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpbVN1bS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gICAgKVxufVxuXG5mdW5jdGlvbiBfbnVtYmVyKHZhbDogbnVtYmVyKTogTnVtYmVyV2l0aFVuaXQge1xuICAgIHJldHVybiBuZXcgTnVtYmVyV2l0aFVuaXQodmFsLCBcInBrXCIpXG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9uLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvZGltZW5zaW9uLXdhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBTy9DLE1BQU0sY0FBYyxHQUFZLElBQUksR0FBRyxFQUFFLENBQUE7QUFDekMsTUFBTSxjQUFjLEdBQVksSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUV6QyxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQWUsRUFBRSxNQUFnQixZQUFZO0lBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixPQUFPLEdBQUcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZSxFQUFFLEdBQWE7SUFDOUQsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsRUFBZTtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUs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blxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBTdWJzY3JpYmVyIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBOdW1iZXJXaXRoVW5pdCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5cbnR5cGUgV2F0Y2hlcyA9IE1hcDxIVE1MRWxlbWVudCwgT2JzZXJ2YWJsZTxEaW1lbnNpb24+PlxuZXhwb3J0IHR5cGUgV2F0Y2hCb3ggPSBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfCBcInNjcm9sbC1ib3hcIlxuXG5jb25zdCBSRVNJWkVfV0FUQ0hFUzogV2F0Y2hlcyA9IG5ldyBNYXAoKVxuY29uc3QgU0NST0xMX1dBVENIRVM6IFdhdGNoZXMgPSBuZXcgTWFwKClcblxuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoRGltZW5zaW9uKGVsOiBIVE1MRWxlbWVudCwgYm94OiBXYXRjaEJveCA9IFwiYm9yZGVyLWJveFwiKTogT2JzZXJ2YWJsZTxEaW1lbnNpb24+IHtcbiAgICBjb25zdCB6b25lID0gaW5qZWN0KE5nWm9uZSlcbiAgICByZXR1cm4gYm94ID09PSBcInNjcm9sbC1ib3hcIiA/IF93YXRjaFNjcm9sbCh6b25lLCBlbCkgOiBfd2F0Y2hSZXNpemUoem9uZSwgZWwsIGJveClcbn1cblxuZnVuY3Rpb24gX3dhdGNoUmVzaXplKHpvbmU6IE5nWm9uZSwgZWw6IEhUTUxFbGVtZW50LCBib3g6IFdhdGNoQm94KSB7XG4gICAgcmV0dXJuIF93YXRjaCh6b25lLCBlbCwgUkVTSVpFX1dBVENIRVMsICgpID0+IF9jcmVhdGVSZXNpemVXYXRjaGVyKHpvbmUsIGVsLCBib3gpKVxufVxuXG5mdW5jdGlvbiBfd2F0Y2hTY3JvbGwoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gX3dhdGNoKHpvbmUsIGVsLCBTQ1JPTExfV0FUQ0hFUywgKCkgPT4gX2NyZWF0ZVNjb2xsV2F0Y2hlcih6b25lLCBlbCkpXG59XG5cbmZ1bmN0aW9uIF93YXRjaCh6b25lOiBOZ1pvbmUsIGVsOiBIVE1MRWxlbWVudCwgd2F0Y2hlczogV2F0Y2hlcywgZmFjdG9yeTogKCkgPT4gT2JzZXJ2YWJsZTxEaW1lbnNpb24+KSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB3YXRjaGVzLmdldChlbClcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB3YXRjaGVyID0gZmFjdG9yeSgpXG4gICAgICAgIHdhdGNoZXMuc2V0KGVsLCB3YXRjaGVyKVxuICAgICAgICByZXR1cm4gd2F0Y2hlclxuICAgIH1cbiAgICByZXR1cm4gZXhpc3Rpbmdcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZVJlc2l6ZVdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQsIGJveDogV2F0Y2hCb3gpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIGlmIChib3ggIT09IFwiYm9yZGVyLWJveFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCBib3ggbW9kZTogJHtib3h9YClcbiAgICB9XG5cbiAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICBuZXcgT2JzZXJ2YWJsZSgoc3ViOiBTdWJzY3JpYmVyPERpbWVuc2lvbj4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuYm9yZGVyQm94U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uaW5saW5lU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVudHJ5LmJvcmRlckJveFNpemVbMF0uYmxvY2tTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogX251bWJlcihlbC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBfbnVtYmVyKGVsLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbCwgeyBib3g6IGJveCBhcyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSlcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgICAgICAgICBSRVNJWkVfV0FUQ0hFUy5kZWxldGUoZWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gcCAmJiBjICYmIHAud2lkdGggPT09IGMud2lkdGggJiYgcC5oZWlnaHQgPT09IGMuaGVpZ2h0KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgIClcbiAgICApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTY29sbFdhdGNoZXIoem9uZTogTmdab25lLCBlbDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPERpbWVuc2lvbj4ge1xuICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlKChzdWI6IFN1YnNjcmliZXI8RGltZW5zaW9uPikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhc3RTdzogbnVtYmVyID0gMFxuICAgICAgICAgICAgbGV0IGxhc3RTaDogbnVtYmVyID0gMFxuXG4gICAgICAgICAgICBjb25zdCBlbWl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ID0gZWwuc2Nyb2xsV2lkdGhcbiAgICAgICAgICAgICAgICBjb25zdCBzaCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICAgIGlmIChsYXN0U3cgIT09IHN3IHx8IGxhc3RTaCAhPT0gc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdFN3ID0gc3dcbiAgICAgICAgICAgICAgICAgICAgbGFzdFNoID0gc2hcbiAgICAgICAgICAgICAgICAgICAgc3ViLm5leHQoeyB3aWR0aDogX251bWJlcihsYXN0U3cpLCBoZWlnaHQ6IF9udW1iZXIobGFzdFNoKSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGltU3VtID0gX3dhdGNoUmVzaXplKHpvbmUsIGVsLCBcImJvcmRlci1ib3hcIikuc3Vic2NyaWJlKGVtaXQpXG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGVtaXQpXG4gICAgICAgICAgICBtdXRhdGlvbi5vYnNlcnZlKGVsLCB7XG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpbVN1bS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgbXV0YXRpb24uZGlzY29ubmVjdCgpXG4gICAgICAgICAgICAgICAgU0NST0xMX1dBVENIRVMuZGVsZXRlKGVsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuICAgIClcbn1cblxuZnVuY3Rpb24gX251bWJlcih2YWw6IG51bWJlcik6IE51bWJlcldpdGhVbml0IHtcbiAgICByZXR1cm4gbmV3IE51bWJlcldpdGhVbml0KHZhbCwgXCJwa1wiKVxufVxuIl19
@@ -1,4 +1,3 @@
1
1
  export { watchMedia } from "./media-watcher";
2
2
  export { watchDimension } from "./dimension-watcher";
3
- export { FastDOM } from "./dom";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uXCJcbmV4cG9ydCB7IFJlY3QgfSBmcm9tIFwiLi9yZWN0XCJcbmV4cG9ydCB7IHdhdGNoTWVkaWEgfSBmcm9tIFwiLi9tZWRpYS13YXRjaGVyXCJcbmV4cG9ydCB7IHdhdGNoRGltZW5zaW9uIH0gZnJvbSBcIi4vZGltZW5zaW9uLXdhdGNoZXJcIlxuZXhwb3J0IHsgRmFzdERPTSB9IGZyb20gXCIuL2RvbVwiXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9sYXlvdXQvc3JjL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvblwiXG5leHBvcnQgeyBSZWN0IH0gZnJvbSBcIi4vcmVjdFwiXG5leHBvcnQgeyB3YXRjaE1lZGlhIH0gZnJvbSBcIi4vbWVkaWEtd2F0Y2hlclwiXG5leHBvcnQgeyB3YXRjaERpbWVuc2lvbiB9IGZyb20gXCIuL2RpbWVuc2lvbi13YXRjaGVyXCJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, NgZone, Component, ElementRef, Input, Output, ChangeDetectionStrategy, ContentChild, ContentChildren, NgModule } from '@angular/core';
3
3
  import { Observable, distinctUntilChanged, shareReplay, BehaviorSubject, map, combineLatest, switchMap, of, Subject, startWith } from 'rxjs';
4
- import { NumberWithUnit, rawRequestAnimationFrame, Destructible, coerceBoolAttr } from '@ngutil/common';
4
+ import { NumberWithUnit, Destructible, coerceBoolAttr, FastDOM } from '@ngutil/common';
5
5
 
6
6
  const WATCHES = {};
7
7
  /**
@@ -31,7 +31,7 @@ function _createWatcher(expr) {
31
31
  }
32
32
 
33
33
  const RESIZE_WATCHES = new Map();
34
- const SCROLL_CONTENT_WATCHES = new Map();
34
+ const SCROLL_WATCHES = new Map();
35
35
  function watchDimension(el, box = "border-box") {
36
36
  const zone = inject(NgZone);
37
37
  return box === "scroll-box" ? _watchScroll(zone, el) : _watchResize(zone, el, box);
@@ -40,7 +40,7 @@ function _watchResize(zone, el, box) {
40
40
  return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box));
41
41
  }
42
42
  function _watchScroll(zone, el) {
43
- return _watch(zone, el, SCROLL_CONTENT_WATCHES, () => _createScollWatcher(zone, el));
43
+ return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el));
44
44
  }
45
45
  function _watch(zone, el, watches, factory) {
46
46
  const existing = watches.get(el);
@@ -103,6 +103,7 @@ function _createScollWatcher(zone, el) {
103
103
  return () => {
104
104
  dimSum.unsubscribe();
105
105
  mutation.disconnect();
106
+ SCROLL_WATCHES.delete(el);
106
107
  };
107
108
  }).pipe(shareReplay(1)));
108
109
  }
@@ -110,76 +111,6 @@ function _number(val) {
110
111
  return new NumberWithUnit(val, "pk");
111
112
  }
112
113
 
113
- class _FastDOM {
114
- #rafId;
115
- #mutate = [];
116
- #measure = [];
117
- mutate(handler) {
118
- this.#mutate.push(handler);
119
- this._schedule();
120
- }
121
- mutateNext(handler) {
122
- this.#mutate.push(() => {
123
- this.#mutate.push(handler);
124
- });
125
- this._schedule();
126
- }
127
- measure(handler) {
128
- this.#measure.push(handler);
129
- this._schedule();
130
- }
131
- setStyle(el, style, chain) {
132
- this.mutate(() => {
133
- for (const [k, v] of Object.entries(style)) {
134
- if (v == null) {
135
- el.style.removeProperty(k);
136
- }
137
- else {
138
- el.style.setProperty(k, v);
139
- }
140
- }
141
- chain && chain();
142
- });
143
- }
144
- setAttributes(el, attrs, chain) {
145
- this.mutate(() => {
146
- for (const [k, v] of Object.entries(attrs)) {
147
- if (v == null) {
148
- el.removeAttribute(k);
149
- }
150
- else {
151
- el.setAttribute(k, v);
152
- }
153
- }
154
- chain && chain();
155
- });
156
- }
157
- _schedule() {
158
- if (!this.#rafId) {
159
- this.#rafId = rawRequestAnimationFrame(this._apply.bind(this));
160
- }
161
- }
162
- _apply() {
163
- this.#rafId = null;
164
- const measure = this.#measure.slice();
165
- const mutate = this.#mutate.slice();
166
- this.#measure.length = 0;
167
- this.#mutate.length = 0;
168
- runQ(measure);
169
- runQ(mutate);
170
- if (this.#measure.length || this.#mutate.length) {
171
- this._schedule();
172
- }
173
- }
174
- }
175
- function runQ(items) {
176
- let item;
177
- while ((item = items.shift())) {
178
- item();
179
- }
180
- }
181
- const FastDOM = new _FastDOM();
182
-
183
114
  /**
184
115
  * -----------------------------------------------
185
116
  * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |
@@ -743,5 +674,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
743
674
  * Generated bundle index. Do not edit.
744
675
  */
745
676
 
746
- export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, FastDOM, L9Cell, L9Range, L9State, NuDockingLayout, watchDimension, watchMedia };
677
+ export { DockingContentComponent, DockingLayoutComponent, DockingPanelComponent, L9Cell, L9Range, L9State, NuDockingLayout, watchDimension, watchMedia };
747
678
  //# sourceMappingURL=ngutil-layout.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/util/media-watcher.ts","../../../../packages/layout/src/util/dimension-watcher.ts","../../../../packages/layout/src/util/dom.ts","../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nconst WATCHES: { [key: string]: Observable<boolean> } = {}\n\n/**\n * watchMedia(\"(display-mode: standalone)\")\n */\nexport function watchMedia(expr: string): Observable<boolean> {\n const existing = WATCHES[expr]\n if (existing == null) {\n return (WATCHES[expr] = _createWatcher(expr))\n }\n return existing\n}\n\nfunction _createWatcher(expr: string): Observable<boolean> {\n const zone = inject(NgZone)\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const query = window.matchMedia(expr)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n query.addEventListener(\"change\", listener)\n sub.next(query.matches)\n return () => {\n query.removeEventListener(\"change\", listener)\n delete WATCHES[expr]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n}\n","import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nimport { NumberWithUnit } from \"@ngutil/common\"\n\nimport { Dimension } from \"./dimension\"\n\ntype Watches = Map<HTMLElement, Observable<Dimension>>\nexport type WatchBox = ResizeObserverBoxOptions | \"scroll-box\"\n\nconst RESIZE_WATCHES: Watches = new Map()\nconst SCROLL_CONTENT_WATCHES: Watches = new Map()\n\nexport function watchDimension(el: HTMLElement, box: WatchBox = \"border-box\"): Observable<Dimension> {\n const zone = inject(NgZone)\n return box === \"scroll-box\" ? _watchScroll(zone, el) : _watchResize(zone, el, box)\n}\n\nfunction _watchResize(zone: NgZone, el: HTMLElement, box: WatchBox) {\n return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box))\n}\n\nfunction _watchScroll(zone: NgZone, el: HTMLElement) {\n return _watch(zone, el, SCROLL_CONTENT_WATCHES, () => _createScollWatcher(zone, el))\n}\n\nfunction _watch(zone: NgZone, el: HTMLElement, watches: Watches, factory: () => Observable<Dimension>) {\n const existing = watches.get(el)\n if (existing == null) {\n const watcher = factory()\n watches.set(el, watcher)\n return watcher\n }\n return existing\n}\n\nfunction _createResizeWatcher(zone: NgZone, el: HTMLElement, box: WatchBox): Observable<Dimension> {\n if (box !== \"border-box\") {\n throw new Error(`Currently not implemented box mode: ${box}`)\n }\n\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.borderBoxSize) {\n sub.next({\n width: _number(entry.borderBoxSize[0].inlineSize),\n height: _number(entry.borderBoxSize[0].blockSize)\n })\n } else {\n sub.next({\n width: _number(el.offsetWidth),\n height: _number(el.offsetHeight)\n })\n }\n }\n })\n observer.observe(el, { box: box as ResizeObserverBoxOptions })\n\n return () => {\n observer.disconnect()\n RESIZE_WATCHES.delete(el)\n }\n }).pipe(\n distinctUntilChanged((p, c) => p && c && p.width === c.width && p.height === c.height),\n shareReplay(1)\n )\n )\n}\n\nfunction _createScollWatcher(zone: NgZone, el: HTMLElement): Observable<Dimension> {\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n let lastSw: number = 0\n let lastSh: number = 0\n\n const emit = () => {\n const sw = el.scrollWidth\n const sh = el.scrollHeight\n if (lastSw !== sw || lastSh !== sh) {\n lastSw = sw\n lastSh = sh\n sub.next({ width: _number(lastSw), height: _number(lastSh) })\n }\n }\n\n const dimSum = _watchResize(zone, el, \"border-box\").subscribe(emit)\n const mutation = new MutationObserver(emit)\n mutation.observe(el, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true\n })\n\n return () => {\n dimSum.unsubscribe()\n mutation.disconnect()\n }\n }).pipe(shareReplay(1))\n )\n}\n\nfunction _number(val: number): NumberWithUnit {\n return new NumberWithUnit(val, \"pk\")\n}\n","import { rawRequestAnimationFrame } from \"@ngutil/common\"\n\ntype FastDomHandler = () => void\n\nclass _FastDOM {\n #rafId: any\n #mutate: Array<FastDomHandler> = []\n #measure: Array<FastDomHandler> = []\n\n public mutate(handler: FastDomHandler) {\n this.#mutate.push(handler)\n this._schedule()\n }\n\n public mutateNext(handler: FastDomHandler) {\n this.#mutate.push(() => {\n this.#mutate.push(handler)\n })\n this._schedule()\n }\n\n public measure(handler: FastDomHandler) {\n this.#measure.push(handler)\n this._schedule()\n }\n\n public setStyle(el: HTMLElement, style: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(style)) {\n if (v == null) {\n el.style.removeProperty(k)\n } else {\n el.style.setProperty(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n public setAttributes(el: HTMLElement, attrs: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(attrs)) {\n if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n private _schedule() {\n if (!this.#rafId) {\n this.#rafId = rawRequestAnimationFrame(this._apply.bind(this))\n }\n }\n\n private _apply() {\n this.#rafId = null\n\n const measure = this.#measure.slice()\n const mutate = this.#mutate.slice()\n this.#measure.length = 0\n this.#mutate.length = 0\n\n runQ(measure)\n runQ(mutate)\n\n if (this.#measure.length || this.#mutate.length) {\n this._schedule()\n }\n }\n}\n\nfunction runQ(items: FastDomHandler[]) {\n let item: FastDomHandler\n while ((item = items.shift()!)) {\n item()\n }\n}\n\nexport const FastDOM = new _FastDOM()\n","/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { Dimension } from \"../util\"\nimport { L9CellName, L9Horizontal, L9Range, L9RangeName, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n\n update(range: L9Range | L9RangeName, dim: Dimension) {\n range = L9Range.coerce(range)\n const dims = { ...this.#dims.value }\n // for (const cell of range.horizontals) {\n // dims[cell] = dim.width\n // }\n }\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, ElementRef, inject, Input, Output } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { BooleanInput, coerceBoolAttr, Destructible, NumberWithUnit, NumberWithUnitInput } from \"@ngutil/common\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\nimport { FastDOM, watchDimension } from \"../util\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"invisible\"\nexport type DockingPanelMode = \"overlay\" | \"embedded\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingPanelComponent extends Destructible {\n readonly el = inject(ElementRef<HTMLElement>)\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n\n console.log(\"SET POSITION\", coerced, this.position.value.isEq(coerced))\n\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"invisible\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"overlay\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n readonly #autoSize = combineLatest({\n dim: watchDimension(this.el.nativeElement, \"scroll-box\"),\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize\n })\n\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n })\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"invisible\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, NumberWithUnit } from \"@ngutil/common\"\n\nimport { FastDOM } from \"../util\"\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nexport type DockingPositionMode = \"absolute\" | \"fixed\"\n\nconst EMBEDDED_ZINDEX = 20\nconst OVERLAY_ZINDEX = EMBEDDED_ZINDEX * 2\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n// interface PanelRefChanges {\n// ref: PanelRef\n// changes: DockingPanelChanges\n// }\n\n// class PanelRef {\n// style: Partial<CSSStyleDeclaration> = {}\n// readonly changes: Observable<PanelRefChanges>\n// constructor(public readonly panel: DockingPanelDirective) {\n// this.changes = panel.changes.pipe(\n// map(changes => {\n// return { ref: this, changes }\n// })\n// )\n// }\n// }\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n @Input() positionMode: DockingPositionMode = \"absolute\"\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n // this.panels.subscribe(panels => console.log({ panels }))\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n\n // this.d\n // .sub(merge(this.dockingPanels.changes, this.#reflow))\n // .pipe(\n // startWith(null),\n // map(() => this.dockingPanels.map(panel => new PanelRef(panel))),\n // switchMap(refs => combineLatest(refs.map(ref => ref.changes))),\n // map(changes => {\n // this.#layout(changes)\n // return changes.map(c => c.ref)\n // })\n // )\n // .subscribe(this.panels)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n console.log(\"layout\", entries)\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let embeddedZIndex = EMBEDDED_ZINDEX\n let overlayZIndex = OVERLAY_ZINDEX\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isEmbedded = panelState.mode === \"embedded\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isEmbedded) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isEmbedded) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isEmbedded) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isEmbedded) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n const panelGivenSize =\n panelState.state === \"full\"\n ? panelState.fullSize\n : panelState.state === \"mini\"\n ? panelState.miniSize\n : new NumberWithUnit(0, \"px\")\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${isEmbedded ? embeddedZIndex++ : overlayZIndex++}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null,\n \"--docking-panel-w\": !isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-h\": isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-real-w\": !isHorizontal ? `${panelSize}px` : null,\n \"--docking-panel-real-h\": isHorizontal ? `${panelSize}px` : null\n })\n }\n\n console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft })\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n }\n }\n\n #layoutOld(entries: PanelsChanges) {\n // let paddingTop = 0\n // let paddingRight = 0\n // let paddingBottom = 0\n // let paddingLeft = 0\n // if (!this.contentOnly) {\n // let embeddedZIndex = EMBEDDED_ZINDEX\n // let overlayZIndex = OVERLAY_ZINDEX\n // const leftRight: PanelRefChanges[] = entries.filter(v =>\n // [\"left\", \"right\"].includes(v.changes.position.side)\n // )\n // const topBottom: PanelRefChanges[] = entries.filter(v =>\n // [\"top\", \"bottom\"].includes(v.changes.position.side)\n // )\n // for (const entry of entries) {\n // const changes = entry.changes\n // const ref = entry.ref\n // if (changes.mode === \"embedded\") {\n // ref.style.zIndex = `${embeddedZIndex++}`\n // } else if (changes.mode === \"overlay\") {\n // ref.style.zIndex = `${overlayZIndex++}`\n // }\n // }\n // for (const entry of leftRight) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // ref.style.top = \"0\"\n // ref.style.bottom = \"0\"\n // if (changes.position.side === \"left\") {\n // paddingLeft = Math.max(paddingLeft, padding)\n // ref.style.left = \"0\"\n // ref.style.right = \"\"\n // } else {\n // paddingRight = Math.max(paddingRight, padding)\n // ref.style.right = \"0\"\n // ref.style.left = \"\"\n // }\n // }\n // for (const entry of topBottom) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // if (changes.mode === \"embedded\") {\n // ref.style.left = `${paddingLeft}px`\n // ref.style.right = `${paddingRight}px`\n // } else {\n // ref.style.left = \"0\"\n // ref.style.right = \"0\"\n // }\n // if (changes.position?.cells[0].v === \"top\") {\n // paddingTop = Math.max(paddingTop, padding)\n // ref.style.top = \"0\"\n // ref.style.bottom = \"\"\n // } else {\n // paddingBottom = Math.max(paddingBottom, padding)\n // ref.style.bottom = `0`\n // ref.style.top = \"\"\n // }\n // }\n // }\n // const cel = this.contentEl.nativeElement\n // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngutil-layout.mjs","sources":["../../../../packages/layout/src/util/media-watcher.ts","../../../../packages/layout/src/util/dimension-watcher.ts","../../../../packages/layout/src/l9/range.ts","../../../../packages/layout/src/l9/state.ts","../../../../packages/layout/src/docking/docking-content.component.ts","../../../../packages/layout/src/docking/docking-panel.component.ts","../../../../packages/layout/src/docking/docking-layout.component.ts","../../../../packages/layout/src/docking/index.ts","../../../../packages/layout/src/ngutil-layout.ts"],"sourcesContent":["import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nconst WATCHES: { [key: string]: Observable<boolean> } = {}\n\n/**\n * watchMedia(\"(display-mode: standalone)\")\n */\nexport function watchMedia(expr: string): Observable<boolean> {\n const existing = WATCHES[expr]\n if (existing == null) {\n return (WATCHES[expr] = _createWatcher(expr))\n }\n return existing\n}\n\nfunction _createWatcher(expr: string): Observable<boolean> {\n const zone = inject(NgZone)\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<boolean>) => {\n const query = window.matchMedia(expr)\n const listener = (event: MediaQueryListEvent) => {\n sub.next(event.matches)\n }\n query.addEventListener(\"change\", listener)\n sub.next(query.matches)\n return () => {\n query.removeEventListener(\"change\", listener)\n delete WATCHES[expr]\n }\n }).pipe(distinctUntilChanged(), shareReplay(1))\n )\n}\n","import { inject, NgZone } from \"@angular/core\"\n\nimport { distinctUntilChanged, Observable, shareReplay, Subscriber } from \"rxjs\"\n\nimport { NumberWithUnit } from \"@ngutil/common\"\n\nimport { Dimension } from \"./dimension\"\n\ntype Watches = Map<HTMLElement, Observable<Dimension>>\nexport type WatchBox = ResizeObserverBoxOptions | \"scroll-box\"\n\nconst RESIZE_WATCHES: Watches = new Map()\nconst SCROLL_WATCHES: Watches = new Map()\n\nexport function watchDimension(el: HTMLElement, box: WatchBox = \"border-box\"): Observable<Dimension> {\n const zone = inject(NgZone)\n return box === \"scroll-box\" ? _watchScroll(zone, el) : _watchResize(zone, el, box)\n}\n\nfunction _watchResize(zone: NgZone, el: HTMLElement, box: WatchBox) {\n return _watch(zone, el, RESIZE_WATCHES, () => _createResizeWatcher(zone, el, box))\n}\n\nfunction _watchScroll(zone: NgZone, el: HTMLElement) {\n return _watch(zone, el, SCROLL_WATCHES, () => _createScollWatcher(zone, el))\n}\n\nfunction _watch(zone: NgZone, el: HTMLElement, watches: Watches, factory: () => Observable<Dimension>) {\n const existing = watches.get(el)\n if (existing == null) {\n const watcher = factory()\n watches.set(el, watcher)\n return watcher\n }\n return existing\n}\n\nfunction _createResizeWatcher(zone: NgZone, el: HTMLElement, box: WatchBox): Observable<Dimension> {\n if (box !== \"border-box\") {\n throw new Error(`Currently not implemented box mode: ${box}`)\n }\n\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.borderBoxSize) {\n sub.next({\n width: _number(entry.borderBoxSize[0].inlineSize),\n height: _number(entry.borderBoxSize[0].blockSize)\n })\n } else {\n sub.next({\n width: _number(el.offsetWidth),\n height: _number(el.offsetHeight)\n })\n }\n }\n })\n observer.observe(el, { box: box as ResizeObserverBoxOptions })\n\n return () => {\n observer.disconnect()\n RESIZE_WATCHES.delete(el)\n }\n }).pipe(\n distinctUntilChanged((p, c) => p && c && p.width === c.width && p.height === c.height),\n shareReplay(1)\n )\n )\n}\n\nfunction _createScollWatcher(zone: NgZone, el: HTMLElement): Observable<Dimension> {\n return zone.runOutsideAngular(() =>\n new Observable((sub: Subscriber<Dimension>) => {\n let lastSw: number = 0\n let lastSh: number = 0\n\n const emit = () => {\n const sw = el.scrollWidth\n const sh = el.scrollHeight\n if (lastSw !== sw || lastSh !== sh) {\n lastSw = sw\n lastSh = sh\n sub.next({ width: _number(lastSw), height: _number(lastSh) })\n }\n }\n\n const dimSum = _watchResize(zone, el, \"border-box\").subscribe(emit)\n const mutation = new MutationObserver(emit)\n mutation.observe(el, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true\n })\n\n return () => {\n dimSum.unsubscribe()\n mutation.disconnect()\n SCROLL_WATCHES.delete(el)\n }\n }).pipe(shareReplay(1))\n )\n}\n\nfunction _number(val: number): NumberWithUnit {\n return new NumberWithUnit(val, \"pk\")\n}\n","/**\n * -----------------------------------------------\n * | TOP:LEFT | TOP:CENTER | TOP:RIGHT |\n * -----------------------------------------------\n * | MIDDLE:LEFT | MIDDLE:CENTER | MIDDLE:RIGH |\n * -----------------------------------------------\n * | BOTTOMN:LEFT | BOTTOM:CENTER | BOTTOM:RIGHT |\n * -----------------------------------------------\n */\n\nconst vertical = [\"top\", \"middle\", \"bottom\"] as const\nconst horizontal = [\"left\", \"center\", \"right\"] as const\n\nexport type L9Vertical = \"top\" | \"middle\" | \"bottom\"\nexport type L9Horizontal = \"left\" | \"center\" | \"right\"\nexport type L9CellName = `${L9Vertical}:${L9Horizontal}`\nexport type L9RangeName = L9Vertical | L9Horizontal | L9CellName | `${L9CellName}-${L9CellName}`\nexport type L9Orient = \"horizontal\" | \"vertical\" | \"rect\"\n\nexport class L9Cell {\n static coerce(value: L9CellName) {\n const [v, h] = value.split(\":\")\n\n if (vertical.includes(v as any) && horizontal.includes(h as any)) {\n return new L9Cell(v as any, h as any)\n }\n\n throw new Error(`Invalid cell value: ${value}`)\n }\n\n constructor(\n public readonly v: L9Vertical,\n public readonly h: L9Horizontal\n ) {}\n}\n\nexport class L9Range {\n static coerce(value: L9Range | L9RangeName) {\n if (value instanceof L9Range) {\n return value\n } else {\n return new L9Range(value)\n }\n }\n\n readonly cells: Array<L9Cell>\n readonly orient: L9Orient\n\n constructor(range: L9RangeName) {\n this.cells = parse(range)\n this.orient = this.#determineOrient()\n }\n\n isEq(other: L9Range) {\n if (other instanceof L9Range) {\n const selfFirst = this.cells[0]\n const otherFirst = other.cells[0]\n\n if (selfFirst.h !== otherFirst.h || selfFirst.v !== otherFirst.v) {\n return false\n }\n\n const selfLast = this.cells[this.cells.length - 1]\n const otherLast = other.cells[other.cells.length - 1]\n\n if (selfLast.h === otherLast.h && selfLast.v === otherLast.v) {\n return true\n }\n }\n return false\n }\n\n #determineOrient(): L9Orient {\n const { v: sv, h: sh } = this.cells[0]\n const { v: ev, h: eh } = this.cells[this.cells.length - 1]\n\n if (sv === ev) {\n return \"horizontal\"\n } else if (sh === eh) {\n return \"vertical\"\n } else {\n return \"rect\"\n }\n }\n}\n\nfunction parse(value: any): Array<L9Cell> {\n const cells: Array<L9Cell> = []\n\n if (vertical.includes(value)) {\n for (const h of horizontal) {\n cells.push(new L9Cell(value, h))\n }\n } else if (horizontal.includes(value)) {\n for (const v of vertical) {\n cells.push(new L9Cell(v, value))\n }\n } else if (value.includes(\"-\")) {\n const [begin, end] = value.split(\"-\")\n const beginCells = parse(begin)\n const endCells = parse(end)\n\n if (beginCells.length > 1) {\n throw new Error(`Currently not supported begin range value: ${begin}`)\n }\n\n if (endCells.length > 1) {\n throw new Error(`Currently not supported end range value: ${end}`)\n }\n\n const { v: bv, h: bh } = beginCells[0]\n const { v: ev, h: eh } = endCells[0]\n\n const vstart = Math.min(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const vend = Math.max(vertical.indexOf(bv as any), vertical.indexOf(ev as any))\n const hstart = Math.min(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n const hend = Math.max(horizontal.indexOf(bh as any), horizontal.indexOf(eh as any))\n\n for (let vi = vstart; vi <= vend; vi++) {\n for (let hi = hstart; hi <= hend; hi++) {\n cells.push(new L9Cell(vertical[vi], horizontal[hi]))\n }\n }\n } else if (value.includes(\":\")) {\n cells.push(L9Cell.coerce(value))\n }\n\n if (cells.length === 0) {\n throw Error(`Undefined l9cell: \"${value}\"`)\n }\n\n return cells\n}\n","import { BehaviorSubject, map, Observable, shareReplay } from \"rxjs\"\n\nimport { Dimension } from \"../util\"\nimport { L9CellName, L9Horizontal, L9Range, L9RangeName, L9Vertical } from \"./range\"\n\nexport type L9StateVar<T extends string> = `--${T}-${L9Vertical}-${L9Horizontal}-${\"w\" | \"h\"}`\nexport type L9StyleVars<T extends string> = { [key in L9StateVar<T>]?: string }\n\ntype L9Dims = { [key in L9CellName]?: Dimension }\n\nexport class L9State<T extends string> {\n readonly #dims = new BehaviorSubject<L9Dims>({})\n\n readonly style: Observable<L9StyleVars<T>> = this.#dims.pipe(\n map(dims => {\n const res: L9StyleVars<T> = {}\n\n for (const [k, v] of Object.entries(dims)) {\n if (v == null) {\n continue\n }\n\n const [vertical, horizontal] = k.split(\":\")\n res[`--${this.prefix}-${vertical}-${horizontal}-w` as L9StateVar<T>] = v.width.toString()\n res[`--${this.prefix}-${vertical}-${horizontal}-h` as L9StateVar<T>] = v.height.toString()\n }\n\n return res\n }),\n shareReplay(1)\n )\n\n constructor(public readonly prefix: T) {}\n\n update(range: L9Range | L9RangeName, dim: Dimension) {\n range = L9Range.coerce(range)\n const dims = { ...this.#dims.value }\n // for (const cell of range.horizontals) {\n // dims[cell] = dim.width\n // }\n }\n}\n","import { Component } from \"@angular/core\"\n\n@Component({\n standalone: true,\n selector: \"nu-docking-content\",\n styleUrl: \"./docking-content.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingContentComponent {}\n","import { Component, ElementRef, inject, Input, Output } from \"@angular/core\"\n\nimport { BehaviorSubject, combineLatest, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport {\n BooleanInput,\n coerceBoolAttr,\n Destructible,\n FastDOM,\n NumberWithUnit,\n NumberWithUnitInput\n} from \"@ngutil/common\"\n\nimport { L9Range, L9RangeName } from \"../l9/range\"\nimport { watchDimension } from \"../util\"\n\nexport type DockingPanelState = \"full\" | \"mini\" | \"invisible\"\nexport type DockingPanelMode = \"overlay\" | \"embedded\"\n\nconst DEFAULT_POSITION = L9Range.coerce(\"left\")\n\n@Component({\n standalone: true,\n selector: \"nu-docking-panel\",\n exportAs: \"nuDockingPanel\",\n styleUrl: \"./docking-panel.component.scss\",\n template: `<ng-content></ng-content>`\n})\nexport class DockingPanelComponent extends Destructible {\n readonly el = inject(ElementRef<HTMLElement>)\n\n @Input(\"position\")\n set positionInput(val: L9Range | L9RangeName) {\n const coerced = L9Range.coerce(val)\n\n console.log(\"SET POSITION\", coerced, this.position.value.isEq(coerced))\n\n if (coerced.orient === \"rect\") {\n throw new Error(`Invalid position value: ${val}`)\n }\n\n if (!this.position.value.isEq(coerced)) {\n this.position.next(coerced)\n }\n }\n readonly position = new BehaviorSubject<L9Range>(DEFAULT_POSITION)\n\n @Input(\"state\")\n set stateInput(val: DockingPanelState) {\n if (this.state.value !== val) {\n this.state.next(val)\n }\n }\n @Output(\"stateChanges\")\n readonly state = new BehaviorSubject<DockingPanelState>(\"invisible\")\n\n @Input(\"mode\")\n set modeInput(val: DockingPanelMode) {\n if (this.mode.value !== val) {\n this.mode.next(val)\n }\n }\n readonly mode = new BehaviorSubject<DockingPanelMode>(\"overlay\")\n\n @Input(\"fullSize\")\n set fullSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#fullSize.value !== coerced) {\n this.#fullSize.next(coerced)\n }\n }\n readonly #fullSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"miniSize\")\n set miniSizeInput(val: NumberWithUnitInput) {\n const coerced = NumberWithUnit.coerce(val, \"px\")\n if (this.#miniSize.value !== coerced) {\n this.#miniSize.next(coerced)\n }\n }\n readonly #miniSize = new BehaviorSubject<NumberWithUnit>(NumberWithUnit.coerce(0))\n\n @Input(\"minimizable\")\n set minimizable(val: BooleanInput) {\n this.#minimizable = coerceBoolAttr(val)\n this.#minimizableAuto = false\n }\n get minimizable(): boolean {\n return this.#minimizable\n }\n #minimizable: boolean = false\n #minimizableAuto: boolean = true\n\n readonly #autoSize = combineLatest({\n dim: watchDimension(this.el.nativeElement, \"scroll-box\"),\n pos: this.position\n }).pipe(\n map(({ dim, pos }) => {\n if (pos.orient === \"horizontal\") {\n return dim.height\n } else {\n return dim.width\n }\n }),\n shareReplay(1)\n )\n\n readonly fullSize = this.#fullSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly miniSize = this.#miniSize.pipe(\n switchMap(size => {\n if (size.unit === \"auto\") {\n return this.#autoSize\n } else {\n return of(size)\n }\n }),\n shareReplay(1)\n )\n\n readonly changes = combineLatest({\n position: this.position,\n state: this.state,\n mode: this.mode,\n fullSize: this.fullSize,\n miniSize: this.miniSize\n })\n\n constructor() {\n super()\n\n this.d.sub(this.changes).subscribe(changes => {\n if (this.#minimizableAuto) {\n this.#minimizable = this.#miniSize.value.value !== 0\n }\n\n FastDOM.setAttributes(this.el.nativeElement, {\n state: changes.state,\n orient: changes.position.orient,\n mode: changes.mode,\n side:\n changes.position.orient === \"horizontal\" ? changes.position.cells[0].v : changes.position.cells[0].h\n })\n })\n }\n\n open() {\n this.state.next(\"full\")\n }\n\n close() {\n this.state.next(\"invisible\")\n }\n\n minimize() {\n if (this.minimizable) {\n this.state.next(\"mini\")\n }\n }\n}\n\ntype ChangesObservable = typeof DockingPanelComponent.prototype.changes\nexport type DockingPanelChanges = ChangesObservable extends Observable<infer T> ? T : never\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges\n} from \"@angular/core\"\n\nimport { combineLatest, map, Observable, shareReplay, startWith, Subject, switchMap } from \"rxjs\"\n\nimport { Destructible, FastDOM, NumberWithUnit } from \"@ngutil/common\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { type DockingPanelChanges, DockingPanelComponent } from \"./docking-panel.component\"\n\ntype DockingVerticalPosition = \"top\" | \"middle\" | \"bottom\"\ntype DockingHorizontalPositon = \"left\" | \"center\" | \"right\"\ntype DockingPosition = `${DockingVerticalPosition}:${DockingHorizontalPositon}`\nexport type DockingRange =\n | DockingVerticalPosition\n | DockingHorizontalPositon\n | DockingPosition\n | `${DockingPosition}-${DockingPosition}`\n\nexport type DockingPositionMode = \"absolute\" | \"fixed\"\n\nconst EMBEDDED_ZINDEX = 20\nconst OVERLAY_ZINDEX = EMBEDDED_ZINDEX * 2\n\ntype PanelsChanges = Array<{ panel: DockingPanelComponent; changes: DockingPanelChanges }>\n\n// interface PanelRefChanges {\n// ref: PanelRef\n// changes: DockingPanelChanges\n// }\n\n// class PanelRef {\n// style: Partial<CSSStyleDeclaration> = {}\n// readonly changes: Observable<PanelRefChanges>\n// constructor(public readonly panel: DockingPanelDirective) {\n// this.changes = panel.changes.pipe(\n// map(changes => {\n// return { ref: this, changes }\n// })\n// )\n// }\n// }\n\n@Component({\n selector: \"nu-docking\",\n standalone: true,\n imports: [DockingContentComponent],\n template: `\n <ng-content select=\"nu-docking-panel\"></ng-content>\n\n @if (!contentComponent) {\n <nu-docking-content>\n <ng-content></ng-content>\n </nu-docking-content>\n } @else {\n <ng-content select=\"nu-docking-content\"></ng-content>\n }\n `,\n styleUrl: \"./docking-layout.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DockingLayoutComponent extends Destructible implements AfterViewInit, OnChanges {\n readonly #el = inject(ElementRef<HTMLElement>)\n\n @Input() contentOnly = false\n @Input() positionMode: DockingPositionMode = \"absolute\"\n\n @ContentChild(DockingContentComponent) contentComponent?: DockingContentComponent\n @ContentChildren(DockingPanelComponent) dockingPanels!: QueryList<DockingPanelComponent>\n\n // readonly panels = new BehaviorSubject<PanelRef[]>([])\n readonly panels!: Observable<Array<DockingPanelComponent>>\n\n #reflow = new Subject<void>()\n\n ngAfterViewInit(): void {\n // eslint-disable-next-line prettier/prettier\n (this as { panels: Observable<Array<DockingPanelComponent>> }).panels = this.dockingPanels.changes.pipe(\n startWith(null),\n map(() => this.dockingPanels.toArray()),\n shareReplay(1)\n )\n\n // this.panels.subscribe(panels => console.log({ panels }))\n\n this.d\n .sub(combineLatest({ panels: this.panels, reflow: this.#reflow.pipe(startWith(null)) }))\n .pipe(\n switchMap(({ panels }) =>\n combineLatest(\n panels.map(panel =>\n panel.changes.pipe(\n map(changes => {\n return { panel, changes }\n })\n )\n )\n )\n )\n )\n .subscribe(this.#layout.bind(this))\n\n // this.d\n // .sub(merge(this.dockingPanels.changes, this.#reflow))\n // .pipe(\n // startWith(null),\n // map(() => this.dockingPanels.map(panel => new PanelRef(panel))),\n // switchMap(refs => combineLatest(refs.map(ref => ref.changes))),\n // map(changes => {\n // this.#layout(changes)\n // return changes.map(c => c.ref)\n // })\n // )\n // .subscribe(this.panels)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\"contentOnly\" in changes || \"positionMode\" in changes) {\n this.#reflow.next()\n }\n }\n\n #layout(entries: PanelsChanges) {\n console.log(\"layout\", entries)\n let paddingTop = 0\n let paddingRight = 0\n let paddingBottom = 0\n let paddingLeft = 0\n let embeddedZIndex = EMBEDDED_ZINDEX\n let overlayZIndex = OVERLAY_ZINDEX\n\n if (this.contentOnly) {\n // TODO:...\n } else {\n for (const entry of entries) {\n const panelState = entry.changes\n const panelSize =\n panelState.state === \"full\"\n ? panelState.fullSize.value\n : panelState.state === \"mini\"\n ? panelState.miniSize.value\n : 0\n\n const isHorizontal = panelState.position.orient === \"horizontal\"\n const isEmbedded = panelState.mode === \"embedded\"\n\n let panelTop = null\n let panelRight = null\n let panelBottom = null\n let panelLeft = null\n\n if (isHorizontal) {\n panelLeft = 0\n panelRight = 0\n if (panelState.position.cells[0].v === \"top\") {\n if (isEmbedded) {\n paddingTop = Math.max(paddingTop, panelSize)\n }\n panelTop = 0\n } else if (panelState.position.cells[0].v === \"bottom\") {\n if (isEmbedded) {\n paddingBottom = Math.max(paddingBottom, panelSize)\n }\n panelBottom = 0\n }\n } else {\n panelTop = 0\n panelBottom = 0\n\n if (panelState.position.cells[0].h === \"left\") {\n if (isEmbedded) {\n paddingLeft = Math.max(paddingLeft, panelSize)\n }\n panelLeft = 0\n } else if (panelState.position.cells[0].h === \"right\") {\n if (isEmbedded) {\n paddingRight = Math.max(paddingRight, panelSize)\n }\n panelRight = 0\n }\n }\n\n const panelGivenSize =\n panelState.state === \"full\"\n ? panelState.fullSize\n : panelState.state === \"mini\"\n ? panelState.miniSize\n : new NumberWithUnit(0, \"px\")\n\n FastDOM.setStyle(entry.panel.el.nativeElement, {\n \"z-index\": `${isEmbedded ? embeddedZIndex++ : overlayZIndex++}`,\n \"--docking-panel-t\": panelTop != null ? `${panelTop}px` : null,\n \"--docking-panel-r\": panelRight != null ? `${panelRight}px` : null,\n \"--docking-panel-b\": panelBottom != null ? `${panelBottom}px` : null,\n \"--docking-panel-l\": panelLeft != null ? `${panelLeft}px` : null,\n \"--docking-panel-w\": !isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-h\": isHorizontal\n ? `${panelGivenSize.unit === \"auto\" ? \"auto\" : panelGivenSize}`\n : null,\n \"--docking-panel-real-w\": !isHorizontal ? `${panelSize}px` : null,\n \"--docking-panel-real-h\": isHorizontal ? `${panelSize}px` : null\n })\n }\n\n console.log({ paddingTop, paddingRight, paddingBottom, paddingLeft })\n\n FastDOM.setStyle(this.#el.nativeElement, {\n \"--docking-layout-top\": `${paddingTop}px`,\n \"--docking-layout-right\": `${paddingRight}px`,\n \"--docking-layout-bottom\": `${paddingBottom}px`,\n \"--docking-layout-left\": `${paddingLeft}px`\n })\n }\n }\n\n #layoutOld(entries: PanelsChanges) {\n // let paddingTop = 0\n // let paddingRight = 0\n // let paddingBottom = 0\n // let paddingLeft = 0\n // if (!this.contentOnly) {\n // let embeddedZIndex = EMBEDDED_ZINDEX\n // let overlayZIndex = OVERLAY_ZINDEX\n // const leftRight: PanelRefChanges[] = entries.filter(v =>\n // [\"left\", \"right\"].includes(v.changes.position.side)\n // )\n // const topBottom: PanelRefChanges[] = entries.filter(v =>\n // [\"top\", \"bottom\"].includes(v.changes.position.side)\n // )\n // for (const entry of entries) {\n // const changes = entry.changes\n // const ref = entry.ref\n // if (changes.mode === \"embedded\") {\n // ref.style.zIndex = `${embeddedZIndex++}`\n // } else if (changes.mode === \"overlay\") {\n // ref.style.zIndex = `${overlayZIndex++}`\n // }\n // }\n // for (const entry of leftRight) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // ref.style.top = \"0\"\n // ref.style.bottom = \"0\"\n // if (changes.position.side === \"left\") {\n // paddingLeft = Math.max(paddingLeft, padding)\n // ref.style.left = \"0\"\n // ref.style.right = \"\"\n // } else {\n // paddingRight = Math.max(paddingRight, padding)\n // ref.style.right = \"0\"\n // ref.style.left = \"\"\n // }\n // }\n // for (const entry of topBottom) {\n // const changes = entry.changes\n // const ref = entry.ref\n // const padding =\n // changes.mode === \"embedded\"\n // ? changes.state === \"full\"\n // ? changes.fullSize\n // : changes.state === \"mini\"\n // ? changes.miniSize\n // : 0\n // : 0\n // if (changes.mode === \"embedded\") {\n // ref.style.left = `${paddingLeft}px`\n // ref.style.right = `${paddingRight}px`\n // } else {\n // ref.style.left = \"0\"\n // ref.style.right = \"0\"\n // }\n // if (changes.position?.cells[0].v === \"top\") {\n // paddingTop = Math.max(paddingTop, padding)\n // ref.style.top = \"0\"\n // ref.style.bottom = \"\"\n // } else {\n // paddingBottom = Math.max(paddingBottom, padding)\n // ref.style.bottom = `0`\n // ref.style.top = \"\"\n // }\n // }\n // }\n // const cel = this.contentEl.nativeElement\n // cel.style.padding = `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { DockingContentComponent } from \"./docking-content.component\"\nimport { DockingLayoutComponent } from \"./docking-layout.component\"\nimport { DockingPanelComponent } from \"./docking-panel.component\"\n\nexport { DockingLayoutComponent, DockingPanelComponent, DockingContentComponent }\n\nconst members = [DockingLayoutComponent, DockingPanelComponent, DockingContentComponent]\n\n@NgModule({\n imports: members,\n exports: members\n})\nexport class NuDockingLayout {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngutil/layout",
3
- "version": "0.0.3-dev.7",
3
+ "version": "0.0.3-dev.8",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "directory": "../../dist/packages/layout/"
@@ -8,7 +8,7 @@
8
8
  "peerDependencies": {
9
9
  "@angular/common": "^17.1.0",
10
10
  "@angular/core": "^17.1.0",
11
- "@ngutil/common": "0.0.3-dev.7"
11
+ "@ngutil/common": "0.0.3-dev.8"
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": "^2.3.0"
package/util/index.d.ts CHANGED
@@ -2,4 +2,3 @@ export { Dimension } from "./dimension";
2
2
  export { Rect } from "./rect";
3
3
  export { watchMedia } from "./media-watcher";
4
4
  export { watchDimension } from "./dimension-watcher";
5
- export { FastDOM } from "./dom";
@@ -1,71 +0,0 @@
1
- import { rawRequestAnimationFrame } from "@ngutil/common";
2
- class _FastDOM {
3
- #rafId;
4
- #mutate = [];
5
- #measure = [];
6
- mutate(handler) {
7
- this.#mutate.push(handler);
8
- this._schedule();
9
- }
10
- mutateNext(handler) {
11
- this.#mutate.push(() => {
12
- this.#mutate.push(handler);
13
- });
14
- this._schedule();
15
- }
16
- measure(handler) {
17
- this.#measure.push(handler);
18
- this._schedule();
19
- }
20
- setStyle(el, style, chain) {
21
- this.mutate(() => {
22
- for (const [k, v] of Object.entries(style)) {
23
- if (v == null) {
24
- el.style.removeProperty(k);
25
- }
26
- else {
27
- el.style.setProperty(k, v);
28
- }
29
- }
30
- chain && chain();
31
- });
32
- }
33
- setAttributes(el, attrs, chain) {
34
- this.mutate(() => {
35
- for (const [k, v] of Object.entries(attrs)) {
36
- if (v == null) {
37
- el.removeAttribute(k);
38
- }
39
- else {
40
- el.setAttribute(k, v);
41
- }
42
- }
43
- chain && chain();
44
- });
45
- }
46
- _schedule() {
47
- if (!this.#rafId) {
48
- this.#rafId = rawRequestAnimationFrame(this._apply.bind(this));
49
- }
50
- }
51
- _apply() {
52
- this.#rafId = null;
53
- const measure = this.#measure.slice();
54
- const mutate = this.#mutate.slice();
55
- this.#measure.length = 0;
56
- this.#mutate.length = 0;
57
- runQ(measure);
58
- runQ(mutate);
59
- if (this.#measure.length || this.#mutate.length) {
60
- this._schedule();
61
- }
62
- }
63
- }
64
- function runQ(items) {
65
- let item;
66
- while ((item = items.shift())) {
67
- item();
68
- }
69
- }
70
- export const FastDOM = new _FastDOM();
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF5b3V0L3NyYy91dGlsL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUl6RCxNQUFNLFFBQVE7SUFDVixNQUFNLENBQUs7SUFDWCxPQUFPLEdBQTBCLEVBQUUsQ0FBQTtJQUNuQyxRQUFRLEdBQTBCLEVBQUUsQ0FBQTtJQUU3QixNQUFNLENBQUMsT0FBdUI7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3BCLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBdUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3BCLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBdUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3BCLENBQUM7SUFFTSxRQUFRLENBQUMsRUFBZSxFQUFFLEtBQTZCLEVBQUUsS0FBc0I7UUFDbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDYixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDWixFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDOUIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDOUIsQ0FBQztZQUNMLENBQUM7WUFFRCxLQUFLLElBQUksS0FBSyxFQUFFLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU0sYUFBYSxDQUFDLEVBQWUsRUFBRSxLQUE2QixFQUFFLEtBQXNCO1FBQ3ZGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ2IsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1osRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDekIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUN6QixDQUFDO1lBQ0wsQ0FBQztZQUVELEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTyxTQUFTO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU07UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtRQUVsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFWixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUF1QjtJQUNqQyxJQUFJLElBQW9CLENBQUE7SUFDeEIsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLElBQUksRUFBRSxDQUFBO0lBQ1YsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhd1JlcXVlc3RBbmltYXRpb25GcmFtZSB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbnR5cGUgRmFzdERvbUhhbmRsZXIgPSAoKSA9PiB2b2lkXG5cbmNsYXNzIF9GYXN0RE9NIHtcbiAgICAjcmFmSWQ6IGFueVxuICAgICNtdXRhdGU6IEFycmF5PEZhc3REb21IYW5kbGVyPiA9IFtdXG4gICAgI21lYXN1cmU6IEFycmF5PEZhc3REb21IYW5kbGVyPiA9IFtdXG5cbiAgICBwdWJsaWMgbXV0YXRlKGhhbmRsZXI6IEZhc3REb21IYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuI211dGF0ZS5wdXNoKGhhbmRsZXIpXG4gICAgICAgIHRoaXMuX3NjaGVkdWxlKClcbiAgICB9XG5cbiAgICBwdWJsaWMgbXV0YXRlTmV4dChoYW5kbGVyOiBGYXN0RG9tSGFuZGxlcikge1xuICAgICAgICB0aGlzLiNtdXRhdGUucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNtdXRhdGUucHVzaChoYW5kbGVyKVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLl9zY2hlZHVsZSgpXG4gICAgfVxuXG4gICAgcHVibGljIG1lYXN1cmUoaGFuZGxlcjogRmFzdERvbUhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy4jbWVhc3VyZS5wdXNoKGhhbmRsZXIpXG4gICAgICAgIHRoaXMuX3NjaGVkdWxlKClcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U3R5bGUoZWw6IEhUTUxFbGVtZW50LCBzdHlsZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhaW4/OiBGYXN0RG9tSGFuZGxlcikge1xuICAgICAgICB0aGlzLm11dGF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhzdHlsZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KGspXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoaywgdilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNoYWluICYmIGNoYWluKClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXR0cmlidXRlcyhlbDogSFRNTEVsZW1lbnQsIGF0dHJzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFpbj86IEZhc3REb21IYW5kbGVyKSB7XG4gICAgICAgIHRoaXMubXV0YXRlKCgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJzKSkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGspXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGssIHYpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjaGFpbiAmJiBjaGFpbigpXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2NoZWR1bGUoKSB7XG4gICAgICAgIGlmICghdGhpcy4jcmFmSWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3JhZklkID0gcmF3UmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2FwcGx5LmJpbmQodGhpcykpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBseSgpIHtcbiAgICAgICAgdGhpcy4jcmFmSWQgPSBudWxsXG5cbiAgICAgICAgY29uc3QgbWVhc3VyZSA9IHRoaXMuI21lYXN1cmUuc2xpY2UoKVxuICAgICAgICBjb25zdCBtdXRhdGUgPSB0aGlzLiNtdXRhdGUuc2xpY2UoKVxuICAgICAgICB0aGlzLiNtZWFzdXJlLmxlbmd0aCA9IDBcbiAgICAgICAgdGhpcy4jbXV0YXRlLmxlbmd0aCA9IDBcblxuICAgICAgICBydW5RKG1lYXN1cmUpXG4gICAgICAgIHJ1blEobXV0YXRlKVxuXG4gICAgICAgIGlmICh0aGlzLiNtZWFzdXJlLmxlbmd0aCB8fCB0aGlzLiNtdXRhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZSgpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJ1blEoaXRlbXM6IEZhc3REb21IYW5kbGVyW10pIHtcbiAgICBsZXQgaXRlbTogRmFzdERvbUhhbmRsZXJcbiAgICB3aGlsZSAoKGl0ZW0gPSBpdGVtcy5zaGlmdCgpISkpIHtcbiAgICAgICAgaXRlbSgpXG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgRmFzdERPTSA9IG5ldyBfRmFzdERPTSgpXG4iXX0=
package/util/dom.d.ts DELETED
@@ -1,17 +0,0 @@
1
- type FastDomHandler = () => void;
2
- declare class _FastDOM {
3
- #private;
4
- mutate(handler: FastDomHandler): void;
5
- mutateNext(handler: FastDomHandler): void;
6
- measure(handler: FastDomHandler): void;
7
- setStyle(el: HTMLElement, style: {
8
- [key: string]: any;
9
- }, chain?: FastDomHandler): void;
10
- setAttributes(el: HTMLElement, attrs: {
11
- [key: string]: any;
12
- }, chain?: FastDomHandler): void;
13
- private _schedule;
14
- private _apply;
15
- }
16
- export declare const FastDOM: _FastDOM;
17
- export {};