@ngutil/aria 0.0.68 → 0.0.70
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,7 @@
|
|
|
1
1
|
import { DOCUMENT } from "@angular/common";
|
|
2
2
|
import { inject, Injectable, NgZone } from "@angular/core";
|
|
3
3
|
import { concatMap, filter, finalize, fromEvent, map, merge, of, scan, share, startWith, takeWhile, tap } from "rxjs";
|
|
4
|
-
import { flatten } from "lodash";
|
|
4
|
+
import { flatten } from "lodash-es";
|
|
5
5
|
import { coerceElement } from "@ngutil/common";
|
|
6
6
|
import { Listeners } from "./gestures";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
@@ -143,4 +143,4 @@ function direction(prev, curr) {
|
|
|
143
143
|
// const svc = new GesturesService()
|
|
144
144
|
// const w = svc.watch(document.createElement("div"), DragAndDrop)
|
|
145
145
|
function noop() { }
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBRUwsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFHNUQsT0FBTyxFQU9ILFNBQVMsRUFDWixNQUFNLFlBQVksQ0FBQTs7QUFHbkIsTUFBTSxPQUFPLGVBQWU7SUFDZixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEIsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFzRSxDQUFBO0lBRW5HLEtBQUssQ0FBeUIsRUFBZ0IsRUFBRSxHQUFHLFFBQXNCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDL0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUUzRSxJQUFJLFdBQTJDLENBQUE7WUFDL0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDdEIsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUE7Z0JBQ25DLENBQUM7Z0JBQ0QsT0FBTyxXQUFXLEtBQUssS0FBSyxDQUFDLFdBQVcsQ0FBQTtZQUM1QyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDVixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVksQ0FBQyxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLElBQUksQ0FDQSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBSSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFPLENBQUMsRUFDOUQsRUFBMEIsQ0FDN0IsRUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxpQ0FBcUIsRUFBRSxJQUFJLENBQUMsRUFDMUQsS0FBSyxFQUFFLENBQ1YsQ0FBQTtnQkFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMzRCxDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxhQUFhLENBQXlCLE9BQW9CLEVBQUUsU0FBbUI7UUFDM0UsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFBO1FBQzdCLE1BQU0sT0FBTyxHQUFnQyxFQUFFLENBQUE7UUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFNUIsTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLEtBQUsscUNBQXVCO2dCQUM3QixDQUFDLENBQUMsUUFBUTtnQkFDVixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7WUFFdkUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sRUFBRSxFQUFFLENBQUE7WUFDZixDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFJLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNsRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7UUFDTCxDQUFDLENBQUE7UUFFRCxPQUFPO1lBQ0gsT0FBTyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDN0IsS0FBSyxFQUFFO2dCQUNILHdDQUEwQixFQUFFLFVBQVUsQ0FBQyxPQUFPLHdDQUEwQixDQUFDO2dCQUN6RSx3Q0FBMEIsRUFBRSxVQUFVLENBQUMsT0FBTyx3Q0FBMEIsQ0FBQzthQUM1RTtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUF5QixPQUFvQixFQUFFLElBQVk7UUFDbkUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtZQUNsRSxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUVwRCxJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7Z0JBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQTtZQUNuRCxDQUFDO1lBRUQsSUFBSSxRQUFRLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN4QyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFBO2dCQUVoQyxRQUFRLEdBQUcsU0FBUyxDQUFnQixTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQWMsQ0FBQyxDQUFDLElBQUksQ0FDckUsUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDVixlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNoQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQ0MsTUFBTSxDQUFDLEVBQUUsQ0FDTCxDQUFDO29CQUNHLE1BQU07b0JBQ04sS0FBSztvQkFDTCxXQUFXO29CQUNYLGNBQWMsRUFBRSxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtpQkFDaEYsQ0FBb0MsQ0FDNUMsQ0FDSixDQUFBO2dCQUVELElBQUksS0FBSyxxQ0FBdUIsRUFBRSxDQUFDO29CQUMvQixRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNSLENBQUM7d0JBQUMsS0FBb0MsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFxQixDQUFBO29CQUN0RixDQUFDLENBQUMsQ0FDTCxDQUFBO2dCQUNMLENBQUM7Z0JBRUQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtnQkFFakMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDdkMsQ0FBQztZQUVELE9BQU8sUUFBNEMsQ0FBQTtRQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7OEdBMUhRLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUE4SGxDLFNBQVMsaUJBQWlCLENBQUMsS0FBOEI7SUFDckQsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNIO2dCQUNJLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDaEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ25CO1NBQ0osQ0FBQTtJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDekMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUF5QixLQUFpQjtJQUM3RCxJQUFJLEtBQUssQ0FBQyxLQUFLLHFDQUF1QixFQUFFLENBQUM7UUFDckMsS0FBSyxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUN4RixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7UUFFRCxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNyQixPQUFPO2dCQUNILEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDcEQsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDNUUsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUN6QyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLGtFQUFrRTtBQUNsRSxTQUFTLElBQUksS0FBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQge1xuICAgIGNvbmNhdE1hcCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmUsXG4gICAgc3RhcnRXaXRoLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXBcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSBcImxvZGFzaFwiXG5pbXBvcnQgeyBNdXRhYmxlIH0gZnJvbSBcInV0aWxpdHktdHlwZXNcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmltcG9ydCB7XG4gICAgR2VzdHVyZSxcbiAgICBHZXN0dXJlRXZlbnQsXG4gICAgR2VzdHVyZU1hdGNoU3RhdGUsXG4gICAgR2VzdHVyZU9yaWdpbixcbiAgICBHZXN0dXJlUGhhc2UsXG4gICAgR2VzdHVyZVBvaW50ZXJUeXBlLFxuICAgIExpc3RlbmVyc1xufSBmcm9tIFwiLi9nZXN0dXJlc1wiXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBHZXN0dXJlc1NlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVClcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI2xpc3RlbmVycyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQgfCBEb2N1bWVudCwgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4+PigpXG5cbiAgICB3YXRjaDxUIGV4dGVuZHMgR2VzdHVyZUV2ZW50PihlbDogRWxlbWVudElucHV0LCAuLi5nZXN0dXJlczogR2VzdHVyZTxUPltdKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IGZsYXR0ZW4oZ2VzdHVyZXMubWFwKHYgPT4gdi5saXN0ZW5lcnMgfHwgW10pKVxuICAgICAgICAgICAgY29uc3QgeyB0cmlnZ2VyLCB3YXRjaCB9ID0gdGhpcy4jZ2V0TGlzdGVuZXJzKGNvZXJjZUVsZW1lbnQoZWwpLCBsaXN0ZW5lcnMpXG5cbiAgICAgICAgICAgIGxldCBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlIHwgdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlci5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludGVyVHlwZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSA9IHN0YXRlLnBvaW50ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlID09PSBzdGF0ZS5wb2ludGVyVHlwZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hpbmcgPSB3YXRjaFtwb2ludGVyVHlwZSFdLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSwgY3VycikgPT4gdXBkYXRlUG9pbnRlcnM8VD4oeyAuLi5zdGF0ZSwgLi4uY3VyciB9IGFzIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSBhcyBHZXN0dXJlTWF0Y2hTdGF0ZTxUPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVdoaWxlKHN0YXRlID0+IHN0YXRlLnBoYXNlICE9PSBHZXN0dXJlUGhhc2UuRW5kLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoLi4uZ2VzdHVyZXMubWFwKHYgPT4gdi5oYW5kbGVyKHdhdGNoaW5nKSkpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgICNnZXRMaXN0ZW5lcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oaW5wdXRFbDogSFRNTEVsZW1lbnQsIGxpc3RlbmVyczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgY29uc3Qgd2F0Y2hlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBjb25mID0gTGlzdGVuZXJzW25hbWVdXG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgY29uZi5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0XG4gICAgICAgICAgICAgICAgICAgID8gdHJpZ2dlcnNcbiAgICAgICAgICAgICAgICAgICAgOiAod2F0Y2hlc1tjb25mLnBvaW50ZXJUeXBlXSA9IHdhdGNoZXNbY29uZi5wb2ludGVyVHlwZV0gfHwgW10pXG5cbiAgICAgICAgICAgIGlmIChjb250YWluZXIuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIucHVzaChuYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJNaXNzaW5nIHN0YXJ0IGV2ZW50c1wiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IChuYW1lczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jZ2V0TGlzdGVuZXI8VD4oaW5wdXRFbCwgbmFtZXNbMF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5uYW1lcy5tYXAodiA9PiB0aGlzLiNnZXRMaXN0ZW5lcjxUPihpbnB1dEVsLCB2KSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHJpZ2dlcjogb2JzZXJ2YWJsZSh0cmlnZ2VycyksXG4gICAgICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgICAgIFtHZXN0dXJlUG9pbnRlclR5cGUuTW91c2VdOiBvYnNlcnZhYmxlKHdhdGNoZXNbR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlXSksXG4gICAgICAgICAgICAgICAgW0dlc3R1cmVQb2ludGVyVHlwZS5Ub3VjaF06IG9ic2VydmFibGUod2F0Y2hlc1tHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldExpc3RlbmVyPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ+KGlucHV0RWw6IEhUTUxFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IExpc3RlbmVyc1tuYW1lXS50YXJnZXRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE9iaiA9IHRhcmdldCA9PT0gXCJkb2N1bWVudFwiID8gdGhpcy4jZG9jdW1lbnQgOiBpbnB1dEVsXG4gICAgICAgICAgICBsZXQgdGFyZ2V0TGlzdGVuZXJzID0gdGhpcy4jbGlzdGVuZXJzLmdldCh0YXJnZXRPYmopXG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRMaXN0ZW5lcnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgICAgIHRoaXMuI2xpc3RlbmVycy5zZXQodGFyZ2V0T2JqLCB0YXJnZXRMaXN0ZW5lcnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IHRhcmdldExpc3RlbmVycy5nZXQobmFtZSlcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwaGFzZSwgcG9pbnRlclR5cGUsIG9wdGlvbnMgfSA9IExpc3RlbmVyc1tuYW1lXVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3NpdmUgPSBvcHRpb25zPy5wYXNzaXZlXG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGZyb21FdmVudDxHZXN0dXJlT3JpZ2luPih0YXJnZXRPYmosIG5hbWUsIG9wdGlvbnMgYXMgYW55KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0ZW5lcnMuZGVsZXRlKG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQ6IHBhc3NpdmUgPT09IGZhbHNlID8gb3JpZ2luLnByZXZlbnREZWZhdWx0LmJpbmQob3JpZ2luKSA6IG5vb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyB1bmtub3duIGFzIEdlc3R1cmVNYXRjaFN0YXRlPFQ+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBpZiAocGhhc2UgPT09IEdlc3R1cmVQaGFzZS5TdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsoc3RhdGUgYXMgTXV0YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4pLnRhcmdldCA9IHN0YXRlLm9yaWdpbi50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoc2hhcmUoKSlcblxuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycy5zZXQobmFtZSwgbGlzdGVuZXIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lciBhcyBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PlxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcG9pbnRlcnNGcm9tRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogUG9zaXRpb25bXSB7XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQudG91Y2hlcykubWFwKHQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgeDogdC5jbGllbnRYLCB5OiB0LmNsaWVudFkgfVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlUG9pbnRlcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oc3RhdGU6IE11dGFibGU8VD4pOiBHZXN0dXJlTWF0Y2hTdGF0ZTxUPiB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSBHZXN0dXJlUGhhc2UuU3RhcnQpIHtcbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pLm1hcCh2ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiB2LCBjdXJyZW50OiB2LCBkaXN0YW5jZTogeyB4OiAwLCB5OiAwIH0sIGRpcmVjdGlvbjogeyB4OiAwLCB5OiAwIH0gfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9pbnRlcnMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pXG4gICAgICAgIGlmIChwb2ludGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBzdGF0ZS5wb2ludGVycy5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwb2ludGVyc1tpXVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdGFydDogdi5zdGFydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBwLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiB7IHg6IHAueCAtIHYuc3RhcnQueCwgeTogcC55IC0gdi5zdGFydC55IH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpcmVjdGlvbih2LnN0YXJ0LngsIHAueCksIHk6IGRpcmVjdGlvbih2LnN0YXJ0LnksIHAueSkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZVxufVxuXG5mdW5jdGlvbiBkaXJlY3Rpb24ocHJldjogbnVtYmVyLCBjdXJyOiBudW1iZXIpOiAtMSB8IDAgfCAxIHtcbiAgICByZXR1cm4gY3VyciA+IHByZXYgPyAxIDogY3VyciA8IHByZXYgPyAtMSA6IDBcbn1cblxuLy8gY29uc3Qgc3ZjID0gbmV3IEdlc3R1cmVzU2VydmljZSgpXG4vLyBjb25zdCB3ID0gc3ZjLndhdGNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIERyYWdBbmREcm9wKVxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FyaWEvc3JjL2dlc3R1cmVzL2dlc3R1cmVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBRUwsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFHNUQsT0FBTyxFQU9ILFNBQVMsRUFDWixNQUFNLFlBQVksQ0FBQTs7QUFHbkIsTUFBTSxPQUFPLGVBQWU7SUFDZixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEIsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFzRSxDQUFBO0lBRW5HLEtBQUssQ0FBeUIsRUFBZ0IsRUFBRSxHQUFHLFFBQXNCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDL0QsTUFBTSxFQUFFLE9BQU8s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LE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNyQixPQUFPO2dCQUNILEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDcEQsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDNUUsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUN6QyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQsb0NBQW9DO0FBQ3BDLGtFQUFrRTtBQUNsRSxTQUFTLElBQUksS0FBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuXG5pbXBvcnQge1xuICAgIGNvbmNhdE1hcCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmUsXG4gICAgc3RhcnRXaXRoLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXBcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5pbXBvcnQgeyBNdXRhYmxlIH0gZnJvbSBcInV0aWxpdHktdHlwZXNcIlxuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBFbGVtZW50SW5wdXQgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiQG5ndXRpbC9zdHlsZVwiXG5cbmltcG9ydCB7XG4gICAgR2VzdHVyZSxcbiAgICBHZXN0dXJlRXZlbnQsXG4gICAgR2VzdHVyZU1hdGNoU3RhdGUsXG4gICAgR2VzdHVyZU9yaWdpbixcbiAgICBHZXN0dXJlUGhhc2UsXG4gICAgR2VzdHVyZVBvaW50ZXJUeXBlLFxuICAgIExpc3RlbmVyc1xufSBmcm9tIFwiLi9nZXN0dXJlc1wiXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBHZXN0dXJlc1NlcnZpY2Uge1xuICAgIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVClcbiAgICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpXG4gICAgcmVhZG9ubHkgI2xpc3RlbmVycyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQgfCBEb2N1bWVudCwgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4+PigpXG5cbiAgICB3YXRjaDxUIGV4dGVuZHMgR2VzdHVyZUV2ZW50PihlbDogRWxlbWVudElucHV0LCAuLi5nZXN0dXJlczogR2VzdHVyZTxUPltdKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IGZsYXR0ZW4oZ2VzdHVyZXMubWFwKHYgPT4gdi5saXN0ZW5lcnMgfHwgW10pKVxuICAgICAgICAgICAgY29uc3QgeyB0cmlnZ2VyLCB3YXRjaCB9ID0gdGhpcy4jZ2V0TGlzdGVuZXJzKGNvZXJjZUVsZW1lbnQoZWwpLCBsaXN0ZW5lcnMpXG5cbiAgICAgICAgICAgIGxldCBwb2ludGVyVHlwZTogR2VzdHVyZVBvaW50ZXJUeXBlIHwgdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlci5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludGVyVHlwZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSA9IHN0YXRlLnBvaW50ZXJUeXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXJUeXBlID09PSBzdGF0ZS5wb2ludGVyVHlwZVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCh2ID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2F0Y2hpbmcgPSB3YXRjaFtwb2ludGVyVHlwZSFdLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoKHYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSwgY3VycikgPT4gdXBkYXRlUG9pbnRlcnM8VD4oeyAuLi5zdGF0ZSwgLi4uY3VyciB9IGFzIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSBhcyBHZXN0dXJlTWF0Y2hTdGF0ZTxUPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVdoaWxlKHN0YXRlID0+IHN0YXRlLnBoYXNlICE9PSBHZXN0dXJlUGhhc2UuRW5kLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoLi4uZ2VzdHVyZXMubWFwKHYgPT4gdi5oYW5kbGVyKHdhdGNoaW5nKSkpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgICNnZXRMaXN0ZW5lcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oaW5wdXRFbDogSFRNTEVsZW1lbnQsIGxpc3RlbmVyczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgY29uc3Qgd2F0Y2hlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBjb25mID0gTGlzdGVuZXJzW25hbWVdXG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgY29uZi5waGFzZSA9PT0gR2VzdHVyZVBoYXNlLlN0YXJ0XG4gICAgICAgICAgICAgICAgICAgID8gdHJpZ2dlcnNcbiAgICAgICAgICAgICAgICAgICAgOiAod2F0Y2hlc1tjb25mLnBvaW50ZXJUeXBlXSA9IHdhdGNoZXNbY29uZi5wb2ludGVyVHlwZV0gfHwgW10pXG5cbiAgICAgICAgICAgIGlmIChjb250YWluZXIuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIucHVzaChuYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJNaXNzaW5nIHN0YXJ0IGV2ZW50c1wiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZSA9IChuYW1lczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jZ2V0TGlzdGVuZXI8VD4oaW5wdXRFbCwgbmFtZXNbMF0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi5uYW1lcy5tYXAodiA9PiB0aGlzLiNnZXRMaXN0ZW5lcjxUPihpbnB1dEVsLCB2KSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHJpZ2dlcjogb2JzZXJ2YWJsZSh0cmlnZ2VycyksXG4gICAgICAgICAgICB3YXRjaDoge1xuICAgICAgICAgICAgICAgIFtHZXN0dXJlUG9pbnRlclR5cGUuTW91c2VdOiBvYnNlcnZhYmxlKHdhdGNoZXNbR2VzdHVyZVBvaW50ZXJUeXBlLk1vdXNlXSksXG4gICAgICAgICAgICAgICAgW0dlc3R1cmVQb2ludGVyVHlwZS5Ub3VjaF06IG9ic2VydmFibGUod2F0Y2hlc1tHZXN0dXJlUG9pbnRlclR5cGUuVG91Y2hdKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldExpc3RlbmVyPFQgZXh0ZW5kcyBHZXN0dXJlRXZlbnQ+KGlucHV0RWw6IEhUTUxFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IExpc3RlbmVyc1tuYW1lXS50YXJnZXRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE9iaiA9IHRhcmdldCA9PT0gXCJkb2N1bWVudFwiID8gdGhpcy4jZG9jdW1lbnQgOiBpbnB1dEVsXG4gICAgICAgICAgICBsZXQgdGFyZ2V0TGlzdGVuZXJzID0gdGhpcy4jbGlzdGVuZXJzLmdldCh0YXJnZXRPYmopXG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRMaXN0ZW5lcnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgICAgIHRoaXMuI2xpc3RlbmVycy5zZXQodGFyZ2V0T2JqLCB0YXJnZXRMaXN0ZW5lcnMpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IHRhcmdldExpc3RlbmVycy5nZXQobmFtZSlcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBwaGFzZSwgcG9pbnRlclR5cGUsIG9wdGlvbnMgfSA9IExpc3RlbmVyc1tuYW1lXVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3NpdmUgPSBvcHRpb25zPy5wYXNzaXZlXG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGZyb21FdmVudDxHZXN0dXJlT3JpZ2luPih0YXJnZXRPYmosIG5hbWUsIG9wdGlvbnMgYXMgYW55KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0ZW5lcnMuZGVsZXRlKG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQ6IHBhc3NpdmUgPT09IGZhbHNlID8gb3JpZ2luLnByZXZlbnREZWZhdWx0LmJpbmQob3JpZ2luKSA6IG5vb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyB1bmtub3duIGFzIEdlc3R1cmVNYXRjaFN0YXRlPFQ+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBpZiAocGhhc2UgPT09IEdlc3R1cmVQaGFzZS5TdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsoc3RhdGUgYXMgTXV0YWJsZTxHZXN0dXJlTWF0Y2hTdGF0ZT4pLnRhcmdldCA9IHN0YXRlLm9yaWdpbi50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLnBpcGUoc2hhcmUoKSlcblxuICAgICAgICAgICAgICAgIHRhcmdldExpc3RlbmVycy5zZXQobmFtZSwgbGlzdGVuZXIpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lciBhcyBPYnNlcnZhYmxlPEdlc3R1cmVNYXRjaFN0YXRlPFQ+PlxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcG9pbnRlcnNGcm9tRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogUG9zaXRpb25bXSB7XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQudG91Y2hlcykubWFwKHQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgeDogdC5jbGllbnRYLCB5OiB0LmNsaWVudFkgfVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlUG9pbnRlcnM8VCBleHRlbmRzIEdlc3R1cmVFdmVudD4oc3RhdGU6IE11dGFibGU8VD4pOiBHZXN0dXJlTWF0Y2hTdGF0ZTxUPiB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSBHZXN0dXJlUGhhc2UuU3RhcnQpIHtcbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pLm1hcCh2ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0OiB2LCBjdXJyZW50OiB2LCBkaXN0YW5jZTogeyB4OiAwLCB5OiAwIH0sIGRpcmVjdGlvbjogeyB4OiAwLCB5OiAwIH0gfVxuICAgICAgICB9KVxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9pbnRlcnMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlcnMgPSBwb2ludGVyc0Zyb21FdmVudChzdGF0ZS5vcmlnaW4pXG4gICAgICAgIGlmIChwb2ludGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucG9pbnRlcnMgPSBzdGF0ZS5wb2ludGVycy5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSBwb2ludGVyc1tpXVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzdGFydDogdi5zdGFydCxcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBwLFxuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiB7IHg6IHAueCAtIHYuc3RhcnQueCwgeTogcC55IC0gdi5zdGFydC55IH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpcmVjdGlvbih2LnN0YXJ0LngsIHAueCksIHk6IGRpcmVjdGlvbih2LnN0YXJ0LnksIHAueSkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZVxufVxuXG5mdW5jdGlvbiBkaXJlY3Rpb24ocHJldjogbnVtYmVyLCBjdXJyOiBudW1iZXIpOiAtMSB8IDAgfCAxIHtcbiAgICByZXR1cm4gY3VyciA+IHByZXYgPyAxIDogY3VyciA8IHByZXYgPyAtMSA6IDBcbn1cblxuLy8gY29uc3Qgc3ZjID0gbmV3IEdlc3R1cmVzU2VydmljZSgpXG4vLyBjb25zdCB3ID0gc3ZjLndhdGNoKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIERyYWdBbmREcm9wKVxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Directive } from "@angular/core";
|
|
2
2
|
import { toSignal } from "@angular/core/rxjs-interop";
|
|
3
3
|
import { animationFrames, map, Observable, of, scan, shareReplay, startWith, Subject, switchMap, takeWhile } from "rxjs";
|
|
4
|
-
import { clamp } from "lodash";
|
|
4
|
+
import { clamp } from "lodash-es";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
const SEGMENT_REGISTER = { type: "fix", percent: 0 };
|
|
7
7
|
const SEGMENT_COMPLETE = { type: "fix", percent: 1 };
|
|
@@ -138,4 +138,4 @@ export class ProgressSegmentRef {
|
|
|
138
138
|
return this;
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy91aS1zdGF0ZS9wcm9ncmVzcy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXhILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUE7O0FBc0M5QixNQUFNLGdCQUFnQixHQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDOUQsTUFBTSxnQkFBZ0IsR0FBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFBO0FBRzlELE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRWEsY0FBUyxHQUEwQyxFQUFFLENBQUE7UUFFckQsV0FBTSxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFBO1FBRTVDLFdBQU0sR0FBa0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtZQUNoQyxDQUFDO1lBRUQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFBO1lBQ2hCLENBQUM7WUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQTtZQUN0RSxPQUFPLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFBO1lBRWxDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQTtnQkFDdkIsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7WUFDeEIsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQTtZQUN4QixDQUFDO1lBRUQsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBQy9ELENBQUMsRUFBRSxFQUF1QixDQUFDLEVBQzNCLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFxQyxDQUFBO1lBQ3RFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuRyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3BHLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQTtZQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUVqRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2YsR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO2dCQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUMxQixJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQy9CLE9BQU8sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFBO29CQUM5QixDQUFDO29CQUNELE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksR0FBRyxpQkFBaUIsR0FBRyxNQUFNLENBQUE7b0JBRWpFLElBQUksT0FBZSxDQUFBO29CQUVuQixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUNsQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7NEJBQzNCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO3dCQUNoQyxDQUFDO3dCQUVELE9BQU8sR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUE7d0JBQ3pFLElBQUksT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDOzRCQUNqQixNQUFNLEtBQUssR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQTs0QkFDcEYsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO3dCQUNyQyxDQUFDO29CQUNMLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUE7d0JBQ3ZCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNuRCxDQUFDO29CQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7b0JBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQTtnQkFDL0IsQ0FBQztnQkFFRCxPQUFPLEtBQUssQ0FBQTtZQUNoQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUNoRixDQUFBO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDakQsQ0FBQTtRQUVRLFdBQU0sR0FBZ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUNqRSxVQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUU3QixhQUFRLEdBQXVCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDUixLQUFLLElBQUksSUFBSTtZQUNULENBQUMsQ0FBQyxLQUFLLENBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDckQsQ0FBQyxFQUNELENBQUMsQ0FDSjtZQUNILENBQUMsQ0FBQyxDQUFDLENBQ1YsRUFDRCxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNqRCxDQUFBO1FBRVEsWUFBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7S0FpQzdDO0lBMUhZLFNBQVMsQ0FBNEM7SUFFckQsTUFBTSxDQUFzQztJQUU1QyxNQUFNLENBbUVkO0lBb0JELE9BQU8sQ0FBQyxJQUFZLEVBQUUsZUFBdUIsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUE7UUFDNUcsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzlCLE9BQU8sT0FBTyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBb0IsRUFBRSxJQUFZLEVBQUUsWUFBcUI7UUFDN0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUE7WUFDaEQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUMxQyxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN6RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDaEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7b0JBQ2xDLFFBQVEsRUFBRSxPQUFPLENBQUMsS0FBSztvQkFDdkIsS0FBSyxFQUFFLENBQUM7b0JBQ1IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLEtBQUs7aUJBQ2QsQ0FBQTtZQUNMLENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQTtRQUNkLENBQUMsRUFBRSxFQUF1QixDQUFDLENBQUE7SUFDL0IsQ0FBQzs4R0ExSFEsYUFBYTtrR0FBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixTQUFTOztBQThIVixNQUFNLE9BQU8sa0JBQWtCO0lBQ2xCLFFBQVEsQ0FBK0I7SUFFaEQsSUFBSSxZQUFZLENBQUMsS0FBeUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFBO1lBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDM0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzdCLENBQUM7SUFDRCxhQUFhLENBQVM7SUFFdEIsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxNQUFNLENBQVc7SUFFakIsWUFDSSxPQUFzQyxFQUN0QixJQUFZLEVBQzVCLFlBQXFCO1FBREwsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUc1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWtCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUE7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ2xGLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZXMsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNjYW4sIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVdoaWxlIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCJsb2Rhc2hcIlxuaW1wb3J0IHsgTXV0YWJsZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc0NvbW1vbiB7XG4gICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZ1xuICAgIHJlYWRvbmx5IFtvdGhlcjogc3RyaW5nXTogdW5rbm93blxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzTGF4IHtcbiAgICByZWFkb25seSB0eXBlOiBcImxheFwiXG4gICAgcmVhZG9ubHkgcHJlZGljdGVkVGltZTogbnVtYmVyXG4gICAgLy8gcmVhZG9ubHkgdXBkYXRlSW50ZXJ2YWw6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzRml4IHtcbiAgICByZWFkb25seSB0eXBlOiBcImZpeFwiXG4gICAgcmVhZG9ubHkgcGVyY2VudDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzID0gKFByb2dyZXNzTGF4IHwgUHJvZ3Jlc3NGaXgpICYgUHJvZ3Jlc3NDb21tb25cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1NlZ21lbnRJbnB1dCB7XG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG4gICAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogbnVtYmVyXG4gICAgcmVhZG9ubHkgcHJvZ3Jlc3M6IERlZXBSZWFkb25seTxQcm9ncmVzcz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1NlZ2VtZW50IGV4dGVuZHMgUHJvZ3Jlc3NTZWdtZW50SW5wdXQge1xuICAgIHJhdGlvOiBudW1iZXJcbiAgICBzaGFyZTogbnVtYmVyXG4gICAgZG9uZTogYm9vbGVhblxuICAgIGxheEJlZ2luPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzU2VnZW1lbnRzID0geyBba2V5OiBzdHJpbmddOiBQcm9ncmVzc1NlZ2VtZW50IH1cblxuY29uc3QgU0VHTUVOVF9SRUdJU1RFUjogUHJvZ3Jlc3MgPSB7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQ6IDAgfVxuY29uc3QgU0VHTUVOVF9DT01QTEVURTogUHJvZ3Jlc3MgPSB7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQ6IDEgfVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1N0YXRlIHtcbiAgICByZWFkb25seSAjc2VnbWVudHM6IHsgW2tleTogc3RyaW5nXTogUHJvZ3Jlc3NTZWdtZW50UmVmIH0gPSB7fVxuXG4gICAgcmVhZG9ubHkgI2lucHV0ID0gbmV3IFN1YmplY3Q8UHJvZ3Jlc3NTZWdtZW50SW5wdXQ+KClcblxuICAgIHJlYWRvbmx5ICNzdGF0ZTogT2JzZXJ2YWJsZTxQcm9ncmVzc1NlZ2VtZW50cz4gPSB0aGlzLiNpbnB1dC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHNjYW4oKHN0YXRlLCBpbnB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoaXMuI2luaXRpYWxTdGF0ZSgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gc3RhdGVbaW5wdXQubmFtZV0gPz8geyByYXRpbzogMCwgc2hhcmU6IDAsIGRvbmU6IGZhbHNlIH1cbiAgICAgICAgICAgIGN1cnJlbnQgPSB7IC4uLmN1cnJlbnQsIC4uLmlucHV0IH1cblxuICAgICAgICAgICAgaWYgKGlucHV0LnByb2dyZXNzLnR5cGUgPT09IFwibGF4XCIpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY3VycmVudC5sYXhCZWdpblxuICAgICAgICAgICAgICAgIGN1cnJlbnQuZG9uZSA9IGZhbHNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbnB1dC5wcm9ncmVzcy50eXBlID09PSBcImZpeFwiICYmIGlucHV0LnByb2dyZXNzLnBlcmNlbnQgPCAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5kb25lID0gZmFsc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIFtpbnB1dC5uYW1lXTogeyAuLi5jdXJyZW50LCAuLi5pbnB1dCB9IH1cbiAgICAgICAgfSwge30gYXMgUHJvZ3Jlc3NTZWdlbWVudHMpLFxuICAgICAgICBzd2l0Y2hNYXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2xpc3QgPSBPYmplY3QudmFsdWVzKHN0YXRlKSBhcyBBcnJheTxNdXRhYmxlPFByb2dyZXNzU2VnZW1lbnQ+PlxuICAgICAgICAgICAgY29uc3QgbWluID0gc2xpc3QucmVkdWNlKChtaW4sIGN1cnJlbnQpID0+IE1hdGgubWluKG1pbiwgY3VycmVudC5kaXN0cmlidXRpb24gfHwgMCksIEluZmluaXR5KSB8fCAxXG4gICAgICAgICAgICBjb25zdCB0b3RhbERpc3RyaWJ1dGlvbiA9IHNsaXN0LnJlZHVjZSgodG90YWwsIGN1cnJlbnQpID0+IHRvdGFsICsgKGN1cnJlbnQuZGlzdHJpYnV0aW9uIHx8IG1pbiksIDApXG4gICAgICAgICAgICBjb25zdCBoYXNMYXggPSBzbGlzdC5zb21lKHNlZ21lbnQgPT4gc2VnbWVudC5wcm9ncmVzcy50eXBlID09PSBcImxheFwiKVxuICAgICAgICAgICAgY29uc3QgdHJpZ2dlciA9IGhhc0xheCA/IGFuaW1hdGlvbkZyYW1lcygpIDogb2YoeyB0aW1lc3RhbXA6IHBlcmZvcm1hbmNlLm5vdygpIH0pXG5cbiAgICAgICAgICAgIHJldHVybiB0cmlnZ2VyLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh7IHRpbWVzdGFtcCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQuZGlzdHJpYnV0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmRpc3RyaWJ1dGlvbiA9IG1pblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5yYXRpbyA9IHNlZ21lbnQuZGlzdHJpYnV0aW9uIC8gdG90YWxEaXN0cmlidXRpb24gKyAwLjAwMDFcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnQ6IG51bWJlclxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5wcm9ncmVzcy50eXBlID09PSBcImxheFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQubGF4QmVnaW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmxheEJlZ2luID0gdGltZXN0YW1wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9ICh0aW1lc3RhbXAgLSBzZWdtZW50LmxheEJlZ2luKSAvIHNlZ21lbnQucHJvZ3Jlc3MucHJlZGljdGVkVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJjZW50ID49IDAuOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbCA9ICh0aW1lc3RhbXAgLSBzZWdtZW50LmxheEJlZ2luKSAvIChzZWdtZW50LnByb2dyZXNzLnByZWRpY3RlZFRpbWUgKiA1MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IDAuOCArIE1hdGgubG9nMXAoZmluYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VnbWVudC5sYXhCZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjbGFtcChzZWdtZW50LnByb2dyZXNzLnBlcmNlbnQsIDAsIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuc2hhcmUgPSBwZXJjZW50ICogc2VnbWVudC5yYXRpb1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5kb25lID0gcGVyY2VudCA+PSAxXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGVcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoc3RhdGUgPT4gT2JqZWN0LnZhbHVlcyhzdGF0ZSkuc29tZShzZWdtZW50ID0+ICFzZWdtZW50LmRvbmUpLCB0cnVlKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIHJlYWRvbmx5IHZhbHVlJDogT2JzZXJ2YWJsZTxEZWVwUmVhZG9ubHk8UHJvZ3Jlc3NTZWdlbWVudHM+PiA9IHRoaXMuI3N0YXRlXG4gICAgcmVhZG9ubHkgdmFsdWUgPSB0b1NpZ25hbCh0aGlzLnZhbHVlJClcblxuICAgIHJlYWRvbmx5IHBlcmNlbnQkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBtYXAodmFsdWUgPT5cbiAgICAgICAgICAgIHZhbHVlICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IGNsYW1wKFxuICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXModmFsdWUpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIuc2hhcmUsIDApLFxuICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogMFxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgcGVyY2VudCA9IHRvU2lnbmFsKHRoaXMucGVyY2VudCQpXG5cbiAgICBzZWdtZW50KG5hbWU6IHN0cmluZywgZGlzdHJpYnV0aW9uOiBudW1iZXIgPSAxKTogUHJvZ3Jlc3NTZWdtZW50UmVmIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudCA9XG4gICAgICAgICAgICB0aGlzLiNzZWdtZW50c1tuYW1lXSA/PyAodGhpcy4jc2VnbWVudHNbbmFtZV0gPSBuZXcgUHJvZ3Jlc3NTZWdtZW50UmVmKHRoaXMuI2lucHV0LCBuYW1lLCBkaXN0cmlidXRpb24pKVxuICAgICAgICBzZWdtZW50Lm5leHQoU0VHTUVOVF9SRUdJU1RFUilcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRcbiAgICB9XG5cbiAgICBjb25uZWN0KHN0YXRlOiBQcm9ncmVzc1N0YXRlLCBuYW1lOiBzdHJpbmcsIGRpc3RyaWJ1dGlvbj86IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudCA9IHRoaXMuc2VnbWVudChuYW1lLCBkaXN0cmlidXRpb24pXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUucGVyY2VudCQuc3Vic2NyaWJlKHBlcmNlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQubmV4dCh7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgI2luaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy4jc2VnbWVudHMpLnJlZHVjZSgocmVzLCBzZWdtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VnbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlc1tzZWdtZW50Lm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBzZWdtZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbjogc2VnbWVudC5kaXN0cmlidXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBzZWdtZW50LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICByYXRpbzogMCxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICB9LCB7fSBhcyBQcm9ncmVzc1NlZ2VtZW50cylcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1NlZ21lbnRSZWYge1xuICAgIHJlYWRvbmx5ICNzdWJqZWN0OiBTdWJqZWN0PFByb2dyZXNzU2VnbWVudElucHV0PlxuXG4gICAgc2V0IGRpc3RyaWJ1dGlvbih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLiNkaXN0cmlidXRpb24gIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLiNkaXN0cmlidXRpb24gPSB2YWx1ZVxuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNuZXh0KHRoaXMuI3ZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRpc3RyaWJ1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2Rpc3RyaWJ1dGlvblxuICAgIH1cbiAgICAjZGlzdHJpYnV0aW9uPzogbnVtYmVyXG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiN2YWx1ZVxuICAgIH1cbiAgICAjdmFsdWU/OiBQcm9ncmVzc1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHN1YmplY3Q6IFN1YmplY3Q8UHJvZ3Jlc3NTZWdtZW50SW5wdXQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBkaXN0cmlidXRpb24/OiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy4jc3ViamVjdCA9IHN1YmplY3RcbiAgICAgICAgdGhpcy4jZGlzdHJpYnV0aW9uID0gZGlzdHJpYnV0aW9uXG4gICAgfVxuXG4gICAgbmV4dChwcm9ncmVzczogUHJvZ3Jlc3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI25leHQocHJvZ3Jlc3MpXG4gICAgfVxuXG4gICAgY29tcGxldGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNuZXh0KFNFR01FTlRfQ09NUExFVEUpXG4gICAgfVxuXG4gICAgI25leHQocHJvZ3Jlc3M6IFByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuI3ZhbHVlID0gcHJvZ3Jlc3NcbiAgICAgICAgdGhpcy4jc3ViamVjdC5uZXh0KHsgbmFtZTogdGhpcy5uYW1lLCBkaXN0cmlidXRpb246IHRoaXMuZGlzdHJpYnV0aW9uLCBwcm9ncmVzcyB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cbn1cbiJdfQ==
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Mtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hcmlhL3NyYy91aS1zdGF0ZS9wcm9ncmVzcy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBRXhILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUE7O0FBc0NqQyxNQUFNLGdCQUFnQixHQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDOUQsTUFBTSxnQkFBZ0IsR0FBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFBO0FBRzlELE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRWEsY0FBUyxHQUEwQyxFQUFFLENBQUE7UUFFckQsV0FBTSxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFBO1FBRTVDLFdBQU0sR0FBa0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtZQUNoQyxDQUFDO1lBRUQsSUFBSSxLQUFLLElB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Q1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzdCLENBQUM7SUFDRCxhQUFhLENBQVM7SUFFdEIsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFDRCxNQUFNLENBQVc7SUFFakIsWUFDSSxPQUFzQyxFQUN0QixJQUFZLEVBQzVCLFlBQXFCO1FBREwsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUc1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWtCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBa0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUE7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ2xGLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIlxuXG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZXMsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNjYW4sIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVdoaWxlIH0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCJsb2Rhc2gtZXNcIlxuaW1wb3J0IHsgTXV0YWJsZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc0NvbW1vbiB7XG4gICAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZ1xuICAgIHJlYWRvbmx5IFtvdGhlcjogc3RyaW5nXTogdW5rbm93blxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzTGF4IHtcbiAgICByZWFkb25seSB0eXBlOiBcImxheFwiXG4gICAgcmVhZG9ubHkgcHJlZGljdGVkVGltZTogbnVtYmVyXG4gICAgLy8gcmVhZG9ubHkgdXBkYXRlSW50ZXJ2YWw6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzRml4IHtcbiAgICByZWFkb25seSB0eXBlOiBcImZpeFwiXG4gICAgcmVhZG9ubHkgcGVyY2VudDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzID0gKFByb2dyZXNzTGF4IHwgUHJvZ3Jlc3NGaXgpICYgUHJvZ3Jlc3NDb21tb25cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1NlZ21lbnRJbnB1dCB7XG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG4gICAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uPzogbnVtYmVyXG4gICAgcmVhZG9ubHkgcHJvZ3Jlc3M6IERlZXBSZWFkb25seTxQcm9ncmVzcz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc1NlZ2VtZW50IGV4dGVuZHMgUHJvZ3Jlc3NTZWdtZW50SW5wdXQge1xuICAgIHJhdGlvOiBudW1iZXJcbiAgICBzaGFyZTogbnVtYmVyXG4gICAgZG9uZTogYm9vbGVhblxuICAgIGxheEJlZ2luPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzU2VnZW1lbnRzID0geyBba2V5OiBzdHJpbmddOiBQcm9ncmVzc1NlZ2VtZW50IH1cblxuY29uc3QgU0VHTUVOVF9SRUdJU1RFUjogUHJvZ3Jlc3MgPSB7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQ6IDAgfVxuY29uc3QgU0VHTUVOVF9DT01QTEVURTogUHJvZ3Jlc3MgPSB7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQ6IDEgfVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1N0YXRlIHtcbiAgICByZWFkb25seSAjc2VnbWVudHM6IHsgW2tleTogc3RyaW5nXTogUHJvZ3Jlc3NTZWdtZW50UmVmIH0gPSB7fVxuXG4gICAgcmVhZG9ubHkgI2lucHV0ID0gbmV3IFN1YmplY3Q8UHJvZ3Jlc3NTZWdtZW50SW5wdXQ+KClcblxuICAgIHJlYWRvbmx5ICNzdGF0ZTogT2JzZXJ2YWJsZTxQcm9ncmVzc1NlZ2VtZW50cz4gPSB0aGlzLiNpbnB1dC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHNjYW4oKHN0YXRlLCBpbnB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoaXMuI2luaXRpYWxTdGF0ZSgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gc3RhdGVbaW5wdXQubmFtZV0gPz8geyByYXRpbzogMCwgc2hhcmU6IDAsIGRvbmU6IGZhbHNlIH1cbiAgICAgICAgICAgIGN1cnJlbnQgPSB7IC4uLmN1cnJlbnQsIC4uLmlucHV0IH1cblxuICAgICAgICAgICAgaWYgKGlucHV0LnByb2dyZXNzLnR5cGUgPT09IFwibGF4XCIpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY3VycmVudC5sYXhCZWdpblxuICAgICAgICAgICAgICAgIGN1cnJlbnQuZG9uZSA9IGZhbHNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbnB1dC5wcm9ncmVzcy50eXBlID09PSBcImZpeFwiICYmIGlucHV0LnByb2dyZXNzLnBlcmNlbnQgPCAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5kb25lID0gZmFsc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIFtpbnB1dC5uYW1lXTogeyAuLi5jdXJyZW50LCAuLi5pbnB1dCB9IH1cbiAgICAgICAgfSwge30gYXMgUHJvZ3Jlc3NTZWdlbWVudHMpLFxuICAgICAgICBzd2l0Y2hNYXAoc3RhdGUgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2xpc3QgPSBPYmplY3QudmFsdWVzKHN0YXRlKSBhcyBBcnJheTxNdXRhYmxlPFByb2dyZXNzU2VnZW1lbnQ+PlxuICAgICAgICAgICAgY29uc3QgbWluID0gc2xpc3QucmVkdWNlKChtaW4sIGN1cnJlbnQpID0+IE1hdGgubWluKG1pbiwgY3VycmVudC5kaXN0cmlidXRpb24gfHwgMCksIEluZmluaXR5KSB8fCAxXG4gICAgICAgICAgICBjb25zdCB0b3RhbERpc3RyaWJ1dGlvbiA9IHNsaXN0LnJlZHVjZSgodG90YWwsIGN1cnJlbnQpID0+IHRvdGFsICsgKGN1cnJlbnQuZGlzdHJpYnV0aW9uIHx8IG1pbiksIDApXG4gICAgICAgICAgICBjb25zdCBoYXNMYXggPSBzbGlzdC5zb21lKHNlZ21lbnQgPT4gc2VnbWVudC5wcm9ncmVzcy50eXBlID09PSBcImxheFwiKVxuICAgICAgICAgICAgY29uc3QgdHJpZ2dlciA9IGhhc0xheCA/IGFuaW1hdGlvbkZyYW1lcygpIDogb2YoeyB0aW1lc3RhbXA6IHBlcmZvcm1hbmNlLm5vdygpIH0pXG5cbiAgICAgICAgICAgIHJldHVybiB0cmlnZ2VyLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCh7IHRpbWVzdGFtcCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzbGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQuZGlzdHJpYnV0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmRpc3RyaWJ1dGlvbiA9IG1pblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5yYXRpbyA9IHNlZ21lbnQuZGlzdHJpYnV0aW9uIC8gdG90YWxEaXN0cmlidXRpb24gKyAwLjAwMDFcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnQ6IG51bWJlclxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5wcm9ncmVzcy50eXBlID09PSBcImxheFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQubGF4QmVnaW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmxheEJlZ2luID0gdGltZXN0YW1wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9ICh0aW1lc3RhbXAgLSBzZWdtZW50LmxheEJlZ2luKSAvIHNlZ21lbnQucHJvZ3Jlc3MucHJlZGljdGVkVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJjZW50ID49IDAuOCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbCA9ICh0aW1lc3RhbXAgLSBzZWdtZW50LmxheEJlZ2luKSAvIChzZWdtZW50LnByb2dyZXNzLnByZWRpY3RlZFRpbWUgKiA1MClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IDAuOCArIE1hdGgubG9nMXAoZmluYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VnbWVudC5sYXhCZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBjbGFtcChzZWdtZW50LnByb2dyZXNzLnBlcmNlbnQsIDAsIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuc2hhcmUgPSBwZXJjZW50ICogc2VnbWVudC5yYXRpb1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5kb25lID0gcGVyY2VudCA+PSAxXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGVcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoc3RhdGUgPT4gT2JqZWN0LnZhbHVlcyhzdGF0ZSkuc29tZShzZWdtZW50ID0+ICFzZWdtZW50LmRvbmUpLCB0cnVlKVxuICAgICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIHJlYWRvbmx5IHZhbHVlJDogT2JzZXJ2YWJsZTxEZWVwUmVhZG9ubHk8UHJvZ3Jlc3NTZWdlbWVudHM+PiA9IHRoaXMuI3N0YXRlXG4gICAgcmVhZG9ubHkgdmFsdWUgPSB0b1NpZ25hbCh0aGlzLnZhbHVlJClcblxuICAgIHJlYWRvbmx5IHBlcmNlbnQkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBtYXAodmFsdWUgPT5cbiAgICAgICAgICAgIHZhbHVlICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IGNsYW1wKFxuICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXModmFsdWUpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIuc2hhcmUsIDApLFxuICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogMFxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgcGVyY2VudCA9IHRvU2lnbmFsKHRoaXMucGVyY2VudCQpXG5cbiAgICBzZWdtZW50KG5hbWU6IHN0cmluZywgZGlzdHJpYnV0aW9uOiBudW1iZXIgPSAxKTogUHJvZ3Jlc3NTZWdtZW50UmVmIHtcbiAgICAgICAgY29uc3Qgc2VnbWVudCA9XG4gICAgICAgICAgICB0aGlzLiNzZWdtZW50c1tuYW1lXSA/PyAodGhpcy4jc2VnbWVudHNbbmFtZV0gPSBuZXcgUHJvZ3Jlc3NTZWdtZW50UmVmKHRoaXMuI2lucHV0LCBuYW1lLCBkaXN0cmlidXRpb24pKVxuICAgICAgICBzZWdtZW50Lm5leHQoU0VHTUVOVF9SRUdJU1RFUilcbiAgICAgICAgcmV0dXJuIHNlZ21lbnRcbiAgICB9XG5cbiAgICBjb25uZWN0KHN0YXRlOiBQcm9ncmVzc1N0YXRlLCBuYW1lOiBzdHJpbmcsIGRpc3RyaWJ1dGlvbj86IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudCA9IHRoaXMuc2VnbWVudChuYW1lLCBkaXN0cmlidXRpb24pXG4gICAgICAgICAgICByZXR1cm4gc3RhdGUucGVyY2VudCQuc3Vic2NyaWJlKHBlcmNlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQubmV4dCh7IHR5cGU6IFwiZml4XCIsIHBlcmNlbnQgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgI2luaXRpYWxTdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy4jc2VnbWVudHMpLnJlZHVjZSgocmVzLCBzZWdtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VnbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJlc1tzZWdtZW50Lm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBzZWdtZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbjogc2VnbWVudC5kaXN0cmlidXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBzZWdtZW50LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICByYXRpbzogMCxcbiAgICAgICAgICAgICAgICAgICAgc2hhcmU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRvbmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICB9LCB7fSBhcyBQcm9ncmVzc1NlZ2VtZW50cylcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzc1NlZ21lbnRSZWYge1xuICAgIHJlYWRvbmx5ICNzdWJqZWN0OiBTdWJqZWN0PFByb2dyZXNzU2VnbWVudElucHV0PlxuXG4gICAgc2V0IGRpc3RyaWJ1dGlvbih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLiNkaXN0cmlidXRpb24gIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLiNkaXN0cmlidXRpb24gPSB2YWx1ZVxuICAgICAgICAgICAgaWYgKHRoaXMuI3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNuZXh0KHRoaXMuI3ZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRpc3RyaWJ1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2Rpc3RyaWJ1dGlvblxuICAgIH1cbiAgICAjZGlzdHJpYnV0aW9uPzogbnVtYmVyXG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiN2YWx1ZVxuICAgIH1cbiAgICAjdmFsdWU/OiBQcm9ncmVzc1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHN1YmplY3Q6IFN1YmplY3Q8UHJvZ3Jlc3NTZWdtZW50SW5wdXQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBkaXN0cmlidXRpb24/OiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy4jc3ViamVjdCA9IHN1YmplY3RcbiAgICAgICAgdGhpcy4jZGlzdHJpYnV0aW9uID0gZGlzdHJpYnV0aW9uXG4gICAgfVxuXG4gICAgbmV4dChwcm9ncmVzczogUHJvZ3Jlc3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI25leHQocHJvZ3Jlc3MpXG4gICAgfVxuXG4gICAgY29tcGxldGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNuZXh0KFNFR01FTlRfQ09NUExFVEUpXG4gICAgfVxuXG4gICAgI25leHQocHJvZ3Jlc3M6IFByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuI3ZhbHVlID0gcHJvZ3Jlc3NcbiAgICAgICAgdGhpcy4jc3ViamVjdC5uZXh0KHsgbmFtZTogdGhpcy5uYW1lLCBkaXN0cmlidXRpb246IHRoaXMuZGlzdHJpYnV0aW9uLCBwcm9ncmVzcyB9KVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cbn1cbiJdfQ==
|
package/fesm2022/ngutil-aria.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { FocusTrapFactory } from '@angular/cdk/a11y';
|
|
|
6
6
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
7
7
|
import { focusable, isFocusable } from 'tabbable';
|
|
8
8
|
import { coerceElement, Destructible, isElementInput, deepClone, coerceBoolAttr } from '@ngutil/common';
|
|
9
|
-
import { flatten, clamp } from 'lodash';
|
|
9
|
+
import { flatten, clamp } from 'lodash-es';
|
|
10
10
|
|
|
11
11
|
const EVENT_OPTIONS$1 = {
|
|
12
12
|
capture: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-aria.mjs","sources":["../../../../packages/aria/src/activity/activity.service.ts","../../../../packages/aria/src/focus/focus.service.ts","../../../../packages/aria/src/focus/focus-trap.directive.ts","../../../../packages/aria/src/focus/focus-state.directive.ts","../../../../packages/aria/src/focus/focusable.directive.ts","../../../../packages/aria/src/keystroke/keystroke.service.ts","../../../../packages/aria/src/gestures/gestures/_base.ts","../../../../packages/aria/src/gestures/gestures/dragging.ts","../../../../packages/aria/src/gestures/gestures.service.ts","../../../../packages/aria/src/ui-state/selector.ts","../../../../packages/aria/src/ui-state/ui-state.ts","../../../../packages/aria/src/ui-state/abstract.ts","../../../../packages/aria/src/ui-state/busy.directive.ts","../../../../packages/aria/src/ui-state/disabled.directive.ts","../../../../packages/aria/src/ui-state/readonly.directive.ts","../../../../packages/aria/src/ui-state/progress-state.ts","../../../../packages/aria/src/ui-state/index.ts","../../../../packages/aria/src/ngutil-aria.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n share,\n shareReplay,\n startWith,\n switchMap,\n take,\n throttleTime,\n timer\n} from \"rxjs\"\n\n// TODO: detect program activity\nexport type ActivityOrigin = \"mouse\" | \"keyboard\" | \"touch\" | \"program\"\n\nexport interface ActivityEvent {\n origin: ActivityOrigin\n type: keyof typeof EVENT_ORIGIN\n node?: Node\n}\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nconst EVENT_ORIGIN = {\n keydown: \"keyboard\",\n mousedown: \"mouse\",\n mousemove: \"mouse\",\n touchstart: \"touch\"\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ActivityService {\n readonly #zone = inject(NgZone)\n readonly #doc = inject(DOCUMENT)\n\n readonly events$: Observable<ActivityEvent> = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent(this.#doc, \"keydown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousedown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousemove\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"touchstart\", EVENT_OPTIONS)\n ).pipe(\n map(event => {\n const type = event.type as ActivityEvent[\"type\"]\n return {\n origin: EVENT_ORIGIN[type] as ActivityOrigin,\n type: type,\n node: event.target as any\n }\n }),\n share()\n )\n )\n\n watchActivity(node?: HTMLElement) {\n if (node) {\n return this.events$.pipe(\n filter(\n event =>\n event.node != null &&\n (event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))\n ),\n shareReplay(1)\n )\n } else {\n return this.events$\n }\n }\n\n watchInactvity(timeout: number) {\n return this.events$.pipe(\n startWith(null),\n throttleTime(timeout / 2),\n switchMap(() => timer(0, timeout).pipe(take(2))),\n map(v => v !== 0),\n distinctUntilChanged(),\n shareReplay(1)\n )\n }\n}\n","import { FocusTrapFactory } from \"@angular/cdk/a11y\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { inject, Inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { combineLatest, distinctUntilChanged, filter, fromEvent, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { ActivityOrigin, ActivityService } from \"../activity\"\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nexport type FocusOrigin = ActivityOrigin | null\n\nexport interface FocusChanges {\n origin: FocusOrigin\n element: HTMLElement\n}\n\nexport interface FocusableEvent {\n origin: FocusOrigin\n exact: boolean\n node: Node\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly events: Observable<FocusChanges>\n\n constructor(@Inject(DOCUMENT) document: Document, @Inject(NgZone) zone: NgZone) {\n this.events = zone.runOutsideAngular(() => {\n const focus = fromEvent(document, \"focus\", EVENT_OPTIONS).pipe(map(e => e.target as Node))\n const blur = fromEvent(document, \"blur\", EVENT_OPTIONS).pipe(\n startWith(null),\n map(e => (e?.target as Node) || null)\n )\n\n return combineLatest({\n activity: this.#activity.events$.pipe(\n filter(event => event.type !== \"mousemove\"),\n distinctUntilChanged((prev, curr): boolean => {\n if (prev && curr) {\n return prev.origin === curr.origin && prev.node === curr.node\n } else {\n return false\n }\n })\n ),\n focus: focus,\n blur: blur\n }).pipe(\n takeUntilDestroyed(),\n map(({ activity, focus, blur }) => {\n // console.log({ activity, focus, blur })\n\n // If focus in with alt+tab\n if (blur === document && activity.origin === \"keyboard\") {\n return { origin: \"program\", element: focus }\n }\n\n if (focus === document) {\n return { origin: \"program\", element: focus }\n }\n\n // If press tab button, first fire the event in the currently focused element\n if (focus === blur) {\n return null\n }\n\n // When press tab, the activity is on the current fucesd element,\n // so when blur is changed to it, the focus change is completed\n if (activity.origin === \"keyboard\" && isActivityElement(activity.node, blur)) {\n return { origin: \"keyboard\", element: focus }\n }\n\n if (isActivityElement(activity.node, focus)) {\n return { origin: activity.origin, element: focus }\n } else {\n return { origin: \"program\", element: focus }\n }\n }),\n filter(v => !!v),\n shareReplay(1)\n ) as any\n })\n }\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (\n event.element &&\n (event.element === el || (typeof el.contains === \"function\" && el.contains(event.element)))\n ) {\n return event\n }\n return { element: el, origin: null } as FocusChanges\n })\n )\n }\n\n focus(node: HTMLElement, _origin: FocusOrigin | null) {\n // TODO: focus origin\n node.focus()\n }\n\n queryFocusable(inside: HTMLElement): FocusableElement[] {\n return focusable(inside, { includeContainer: false })\n }\n\n getFirstFocusable(inside: HTMLElement): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: Element): boolean {\n return isFocusable(node)\n }\n\n focusTrap(inside: HTMLElement, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(inside, deferCaptureElements)\n }\n}\n\nfunction isActivityElement(activityEl?: Node | null, focused?: Node | null): boolean {\n return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl))\n}\n","import { ElementRef, inject } from \"@angular/core\"\n\nimport { BehaviorSubject } from \"rxjs\"\n\nimport { Destructible } from \"@ngutil/common\"\n\nimport { FocusService } from \"./focus.service\"\n\n// TODO: implement\nexport class FocusTrap extends Destructible {\n #manager = inject(FocusService)\n #el = inject(ElementRef<HTMLElement>)\n\n get enabled() {\n return this.#enabled.value\n }\n set enabled(val: boolean) {\n if (this.#enabled.value !== val) {\n this.#enabled.next(val)\n }\n }\n #enabled = new BehaviorSubject<boolean>(true)\n\n enable() {\n this.enabled = true\n }\n\n disable() {\n this.enabled = false\n }\n}\n","import { Directive, effect, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ElementInput } from \"dist/packages/common\"\n\nimport { ConnectProtocol, isElementInput } from \"@ngutil/common\"\n\nimport { FocusChanges, FocusService } from \"./focus.service\"\n\n@Directive({\n standalone: true,\n host: {\n \"[attr.focus]\": \"origin()\",\n \"[attr.focusWithin]\": \"within()\"\n }\n})\nexport class FocusState implements ConnectProtocol {\n readonly #focus = inject(FocusService)\n readonly #el = inject<ElementRef<HTMLElement>>(ElementRef)\n readonly #parent = inject(FocusState, { optional: true, skipSelf: true })\n readonly #default: FocusChanges = { element: this.#el.nativeElement, origin: null }\n\n readonly #self = this.#focus.watch(this.#el).pipe(takeUntilDestroyed(), shareReplay(1))\n\n readonly #connected = new BehaviorSubject<Observable<FocusChanges>[]>([])\n readonly #connEvent = this.#connected.pipe(\n switchMap(values => (values.length === 0 ? of([]) : combineLatest(values))),\n takeUntilDestroyed(),\n map(values => values.filter(v => v.origin != null)),\n map(values => values[0] || this.#default),\n shareReplay(1)\n )\n\n readonly event$: Observable<FocusChanges> = combineLatest([this.#self, this.#connEvent]).pipe(\n debounceTime(100),\n map(values => values.find(v => v.origin != null) || this.#default),\n shareReplay(1)\n )\n\n readonly origin$ = this.event$.pipe(map(event => event.origin))\n readonly within$ = this.event$.pipe(map(event => (event.element !== this.#el.nativeElement ? event.origin : null)))\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true })\n readonly origin = toSignal(this.origin$, { rejectErrors: true, manualCleanup: true })\n readonly within = toSignal(this.within$, { rejectErrors: true, manualCleanup: true })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this.origin(), { allowSignalWrites: false })\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\n }\n\n connect(value: FocusState | ElementInput) {\n return new Observable(() => {\n const src = (isElementInput(value) ? this.#focus.watch(value) : value.event$).pipe(shareReplay(1))\n this.#connected.next([...this.#connected.value, src])\n\n return () => {\n let current = this.#connected.value\n const idx = current.indexOf(src)\n if (idx >= 0) {\n current = [...current]\n current.splice(idx, 1)\n this.#connected.next(current)\n }\n }\n })\n }\n}\n","import { computed, Directive, effect, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"./focus-state.directive\"\n\n// TODO: what happens when disabled is changed\n\n@Directive({\n standalone: true,\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly state = inject(FocusState)\n\n readonly focusable = input<boolean | number>(true, { alias: \"nuFocusable\" })\n readonly tabindex = input(0, { transform: Number })\n\n readonly _tabindex = computed(() => {\n const focusable = this.focusable()\n const tabindex = this.tabindex()\n\n if (focusable === false) {\n return -1\n }\n\n if (typeof focusable === \"number\") {\n return focusable\n }\n\n if (focusable === true && tabindex != null && !isNaN(tabindex)) {\n return tabindex\n }\n\n return 0\n })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this._tabindex(), { allowSignalWrites: false })\n }\n\n connect(value: Focusable | FocusState | ElementInput) {\n if (value instanceof FocusState || isElementInput(value)) {\n return this.state.connect(value)\n } else {\n return this.state.connect(value.state)\n }\n }\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n EMPTY,\n filter,\n from,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n share,\n shareReplay,\n startWith,\n Subscriber,\n switchMap\n} from \"rxjs\"\n\nimport { coerceElement, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"../focus\"\n\nexport interface Keystroke {\n // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n key: KeyboardEvent[\"key\"]\n shift?: boolean\n ctrl?: boolean\n alt?: boolean\n state: \"down\" | \"up\"\n}\n\nexport interface KeystrokeEvent {\n original: KeyboardEvent\n keystroke: Keystroke\n}\n\nexport type KeystrokeActivation = ElementInput | FocusState | Observable<ElementInput | FocusState | boolean>\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n\n readonly #keyEvent = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent<KeyboardEvent>(this.#document, \"keydown\", { capture: true, passive: false }),\n fromEvent<KeyboardEvent>(this.#document, \"keyup\", { capture: true, passive: false })\n ).pipe(\n filter(event => event.defaultPrevented === false),\n share()\n )\n )\n\n readonly #focusEvent = this.#zone.runOutsideAngular(() =>\n fromEvent(this.#document, \"focus\", { capture: true, passive: true }).pipe(\n startWith(null),\n map(() => this.#document.activeElement),\n shareReplay(1)\n )\n )\n\n watch(activation: KeystrokeActivation, ...keystrokes: Keystroke[]): Observable<KeystrokeEvent> {\n return new Observable((dst: Subscriber<KeystrokeEvent>) =>\n this.#trigger(activation)\n .pipe(\n distinctUntilChanged(),\n switchMap(enabled => {\n if (enabled) {\n return this.#keyEvent\n } else {\n return EMPTY\n }\n }),\n map(event => {\n if (event.defaultPrevented) {\n return []\n }\n\n const idFromEvent = keystrokeId(eventToKeystroke(event))\n const matches = keystrokes\n .filter(ks => keystrokeId(ks) === idFromEvent)\n .map(ks => {\n return {\n original: event,\n keystroke: ks\n }\n })\n\n if (matches.length > 0) {\n event.preventDefault()\n }\n\n return matches\n }),\n filter(matches => matches.length > 0),\n switchMap(matches => of(...matches))\n )\n .subscribe(dst)\n )\n }\n\n #trigger(activation: KeystrokeActivation): Observable<boolean | HTMLElement> {\n if (isElementInput(activation)) {\n return this.#focusActivation(coerceElement(activation))\n } else if (activation instanceof FocusState) {\n return activation.origin$.pipe(map(origin => origin != null))\n } else {\n return from(activation).pipe(\n switchMap(value => {\n if (isElementInput(value) || value instanceof FocusState) {\n return this.#trigger(value)\n } else {\n return of(value)\n }\n })\n )\n }\n }\n\n #focusActivation(element: HTMLElement): Observable<boolean> {\n return this.#focusEvent.pipe(map(focused => focused === element || element.contains(focused)))\n }\n}\n\nfunction keystrokeId(ks: Keystroke): string {\n let res = ks.key\n if (ks.shift) {\n res += \"+shift\"\n }\n if (ks.ctrl) {\n res += \"+ctrl\"\n }\n if (ks.alt) {\n res += \"+alt\"\n }\n res += `${ks.state}`\n return res\n}\n\nfunction eventToKeystroke(event: KeyboardEvent): Keystroke {\n return {\n key: event.key,\n shift: event.shiftKey,\n ctrl: event.ctrlKey,\n alt: event.altKey,\n state: event.type === \"keyup\" ? \"up\" : \"down\"\n }\n}\n","import { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nexport interface Gesture<T extends GestureEvent> {\n name: string\n priority: number\n listeners?: Array<keyof DocumentEventMap>\n handler: GestureHandler<T>\n}\n\nexport type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState<T>>) => Observable<T>\n\nexport type GestureListener = {\n name: keyof DocumentEventMap\n target: ListenerTarget\n // options?: AddEventListenerOptions\n}\n\nexport interface GestureEvent<T extends string = string> {\n readonly type: T\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\n\n preventDefault(): void\n}\n\ntype GestureEventFixFields = \"target\" | \"origin\" | \"pointers\" | \"phase\" | \"pointerType\" | \"preventDefault\"\n\nexport type PointersPosition = ReadonlyArray<Readonly<Position>>\n\nexport interface GesturePointer {\n readonly start: Position\n readonly current: Position\n readonly end?: Position\n readonly distance: Position\n readonly direction: { x: -1 | 0 | 1; y: -1 | 0 | 1 }\n}\n\nexport type GestureOrigin = MouseEvent | TouchEvent\n\nexport const enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport const enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport type GestureMatchState<T extends GestureEvent = GestureEvent> = Partial<\n Mutable<Omit<T, GestureEventFixFields>>\n> &\n Pick<T, GestureEventFixFields> & {\n readonly pending?: Array<string>\n }\n\nexport function stateToEvent<T extends GestureEvent>(state: GestureMatchState, type: string): T {\n return {\n type: type,\n origin: state.origin!,\n target: state.target!,\n pointerType: state.pointerType!,\n phase: state.phase!,\n pointers: state.pointers!\n } as T\n}\n\nexport interface ListenerConfig {\n target: ListenerTarget\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const enum ListenerTarget {\n Document = \"document\",\n Element = \"element\"\n}\n\nexport const Listeners: { [key: string]: ListenerConfig } = {\n mousedown: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n mousemove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n mouseup: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n },\n touchstart: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n touchmove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n touchend: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchcancel: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n }\n} as const\n","import { filter, map, tap } from \"rxjs\"\n\nimport { Gesture, GestureEvent, GesturePhase, stateToEvent } from \"./_base\"\n\n// export type DraggingEvent = GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\">\n\nexport interface DraggingEvent extends GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\"> {}\n\nconst TypeMap = {\n [GesturePhase.Start]: \"dragging-start\",\n [GesturePhase.Moving]: \"dragging-move\",\n [GesturePhase.End]: \"dragging-end\"\n}\n\nexport const Dragging: Gesture<DraggingEvent> = {\n name: \"dragging\",\n listeners: [\"mousedown\", \"mousemove\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"],\n priority: 0,\n handler: events =>\n events.pipe(\n filter(state => !state.pending || state.pending.length === 0),\n tap(state => state.preventDefault()),\n map(state => stateToEvent(state, TypeMap[state.phase]))\n )\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n concatMap,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n scan,\n share,\n startWith,\n takeWhile,\n tap\n} from \"rxjs\"\n\nimport { flatten } from \"lodash\"\nimport { Mutable } from \"utility-types\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport {\n Gesture,\n GestureEvent,\n GestureMatchState,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gestures\"\n\n@Injectable({ providedIn: \"root\" })\nexport class GesturesService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n readonly #listeners = new Map<HTMLElement | Document, Map<string, Observable<GestureMatchState>>>()\n\n watch<T extends GestureEvent>(el: ElementInput, ...gestures: Gesture<T>[]): Observable<T> {\n return this.#zone.runOutsideAngular(() => {\n const listeners = flatten(gestures.map(v => v.listeners || []))\n const { trigger, watch } = this.#getListeners(coerceElement(el), listeners)\n\n let pointerType: GesturePointerType | undefined\n return trigger.pipe(\n filter(state => {\n if (pointerType == null) {\n pointerType = state.pointerType\n }\n return pointerType === state.pointerType\n }),\n concatMap(v =>\n this.#zone.runOutsideAngular(() => {\n const watching = watch[pointerType!].pipe(\n startWith(v),\n scan(\n (state, curr) => updatePointers<T>({ ...state, ...curr } as T),\n {} as GestureMatchState<T>\n ),\n takeWhile(state => state.phase !== GesturePhase.End, true),\n share()\n )\n return merge(...gestures.map(v => v.handler(watching)))\n })\n )\n )\n })\n }\n\n #getListeners<T extends GestureEvent>(inputEl: HTMLElement, listeners: string[]) {\n const triggers: string[] = []\n const watches: { [key: string]: string[] } = {}\n\n for (const name of listeners) {\n const conf = Listeners[name]\n\n const container =\n conf.phase === GesturePhase.Start\n ? triggers\n : (watches[conf.pointerType] = watches[conf.pointerType] || [])\n\n if (container.indexOf(name) === -1) {\n container.push(name)\n }\n }\n\n if (triggers.length === 0) {\n throw Error(\"Missing start events\")\n }\n\n const observable = (names: string[]) => {\n if (names.length === 0) {\n return of()\n } else if (names.length === 1) {\n return this.#getListener<T>(inputEl, names[0])\n } else {\n return merge(...names.map(v => this.#getListener<T>(inputEl, v)))\n }\n }\n\n return {\n trigger: observable(triggers),\n watch: {\n [GesturePointerType.Mouse]: observable(watches[GesturePointerType.Mouse]),\n [GesturePointerType.Touch]: observable(watches[GesturePointerType.Touch])\n }\n }\n }\n\n #getListener<T extends GestureEvent>(inputEl: HTMLElement, name: string): Observable<GestureMatchState<T>> {\n return this.#zone.runOutsideAngular(() => {\n const target = Listeners[name].target\n const targetObj = target === \"document\" ? this.#document : inputEl\n let targetListeners = this.#listeners.get(targetObj)\n\n if (targetListeners == null) {\n targetListeners = new Map()\n this.#listeners.set(targetObj, targetListeners)\n }\n\n let listener = targetListeners.get(name)\n if (listener == null) {\n const { phase, pointerType, options } = Listeners[name]\n const passive = options?.passive\n\n listener = fromEvent<GestureOrigin>(targetObj, name, options as any).pipe(\n finalize(() => {\n targetListeners.delete(name)\n }),\n map(\n origin =>\n ({\n origin,\n phase,\n pointerType,\n preventDefault: passive === false ? origin.preventDefault.bind(origin) : noop\n }) as unknown as GestureMatchState<T>\n )\n )\n\n if (phase === GesturePhase.Start) {\n listener = listener.pipe(\n tap(state => {\n ;(state as Mutable<GestureMatchState>).target = state.origin.target as HTMLElement\n })\n )\n }\n\n listener = listener.pipe(share())\n\n targetListeners.set(name, listener)\n }\n\n return listener as Observable<GestureMatchState<T>>\n })\n }\n}\n\nfunction pointersFromEvent(event: MouseEvent | TouchEvent): Position[] {\n if (event instanceof MouseEvent) {\n return [\n {\n x: event.clientX,\n y: event.clientY\n }\n ]\n } else {\n return Array.from(event.touches).map(t => {\n return { x: t.clientX, y: t.clientY }\n })\n }\n}\n\nfunction updatePointers<T extends GestureEvent>(state: Mutable<T>): GestureMatchState<T> {\n if (state.phase === GesturePhase.Start) {\n state.pointers = pointersFromEvent(state.origin).map(v => {\n return { start: v, current: v, distance: { x: 0, y: 0 }, direction: { x: 0, y: 0 } }\n })\n } else if (state.pointers) {\n const pointers = pointersFromEvent(state.origin)\n if (pointers.length === 0) {\n return state\n }\n\n state.pointers = state.pointers.map((v, i) => {\n const p = pointers[i]\n return {\n start: v.start,\n current: p,\n distance: { x: p.x - v.start.x, y: p.y - v.start.y },\n direction: { x: direction(v.start.x, p.x), y: direction(v.start.y, p.y) }\n }\n })\n }\n\n return state\n}\n\nfunction direction(prev: number, curr: number): -1 | 0 | 1 {\n return curr > prev ? 1 : curr < prev ? -1 : 0\n}\n\n// const svc = new GesturesService()\n// const w = svc.watch(document.createElement(\"div\"), DragAndDrop)\nfunction noop() {}\n","import type { UiStateDetails } from \"./ui-state\"\n\nexport type CompiledSelector = (state: UiStateDetails) => boolean\n\nexport const enum TokenType {\n Any = 1,\n Name = 2,\n Negate = 3,\n Or = 4,\n And = 5,\n Subscript = 7,\n MultiSubscript = 8\n}\n\nexport interface AstBase {\n begin: number\n end: number\n}\n\nexport interface AstAny extends AstBase {\n type: TokenType.Any\n}\n\nexport interface AstName extends AstBase {\n type: TokenType.Name\n value: string\n}\n\nexport interface AstNegate extends AstBase {\n type: TokenType.Negate\n value: SelectorAst\n}\n\nexport interface AstOr extends AstBase {\n type: TokenType.Or\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstAnd extends AstBase {\n type: TokenType.And\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstSubscript extends AstBase {\n type: TokenType.Subscript\n base: AstName\n subscript: AstAny | AstName\n}\n\nexport interface AstMultiSubscript extends AstBase {\n type: TokenType.MultiSubscript\n base: AstName\n subscripts: AstName[]\n}\n\nexport type SelectorAst = AstAny | AstName | AstNegate | AstOr | AstAnd | AstSubscript | AstMultiSubscript\n\nconst COMPILE_CACHE: { [key: string]: CompiledSelector } = {}\nexport function compile(selector: string): CompiledSelector {\n return (COMPILE_CACHE[selector] ??= _compile(parse(selector)))\n}\n\nclass Cursor {\n position: number = 0\n\n get ch() {\n return this.data[this.position]\n }\n\n constructor(readonly data: string) {}\n\n inc(value: number = 1) {\n this.position += value\n return this\n }\n\n eatWs() {\n let end = this.position\n while (end < this.data.length && /[ \\r\\n\\t]/.test(this.data[end])) {\n end++\n }\n this.position = end\n return this\n }\n\n is(ch: string) {\n if (ch.length === 1) {\n return this.ch === ch\n }\n const begin = this.position\n const end = begin + ch.length\n return this.data.substring(begin, end) === ch\n }\n\n eof() {\n return this.position >= this.data.length\n }\n\n set(position: number) {\n this.position = position\n return this\n }\n}\n\n/**\n * expression:\n * - \"*\": any\n * - \"name without dot\": top level: eg. \"busy\" or \"disabled\", this is equal to \"busy.*\"\n * - \"name with dot\": nested: eg. \"busy.self\" or \"busy.loading\"\n * - negate: \"!busy\", \"!busy.*\", \"!busy.save\"\n * - OR: \"busy.* || !disabled.*\"\n * - AND: \"busy.* && !disabled.*\"\n * - GROUP: \"(busy || disabled) && !readonly\"\n * - Shorted of multiple source of same base: \"busy{load,save}\", if one of load or save is true, the result is true\n */\nexport function parse(selector: string): SelectorAst {\n const cursor = new Cursor(selector)\n const res = expression(cursor.eatWs())\n if (res == null) {\n throw new Error(`invalid selector: ${selector}`)\n }\n\n if (!cursor.eof()) {\n throw new Error(`unexpected charcter: ${selector[res.end]} at ${res.end}`)\n }\n return res\n}\n\nfunction expression(cursor: Cursor) {\n return binary(cursor) || leftExpr(cursor)\n}\n\nfunction leftExpr(cursor: Cursor) {\n const begin = cursor.position\n const left = unary(cursor) || group(cursor) || load(cursor)\n if (left != null) {\n return left\n }\n cursor.set(begin)\n return null\n}\n\nfunction group(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"(\")) {\n const expr = expression(cursor.inc().eatWs())\n if (cursor.eatWs().is(\")\")) {\n cursor.inc()\n return binary(cursor.eatWs(), expr) || expr\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction binary(cursor: Cursor, left: SelectorAst | null = null): SelectorAst | null {\n const begin = cursor.position\n left = left ?? leftExpr(cursor)\n if (left != null) {\n cursor.eatWs()\n const result = and(left, cursor) || or(left, cursor)\n if (result != null) {\n return result\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction and(left: SelectorAst, cursor: Cursor): AstAnd | null {\n if (cursor.is(\"&&\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.And, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction or(left: SelectorAst, cursor: Cursor): AstOr | null {\n if (cursor.is(\"||\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.Or, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction unary(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"!\")) {\n const expr = leftExpr(cursor.inc().eatWs())\n if (expr != null) {\n return { type: TokenType.Negate, value: expr, begin, end: cursor.position }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction load(cursor: Cursor): AstAny | AstName | AstSubscript | AstMultiSubscript | null {\n cursor.eatWs()\n const _any = any(cursor)\n if (_any != null) {\n return _any\n }\n\n const base = name(cursor)\n if (base == null) {\n return null\n }\n\n cursor.eatWs()\n const sub = loadSingle(cursor) || loadMulti(cursor)\n if (sub == null) {\n return base\n } else if (Array.isArray(sub)) {\n return {\n type: TokenType.MultiSubscript,\n base,\n subscripts: sub,\n begin: base.begin,\n end: sub[sub.length - 1].end\n }\n } else {\n return { type: TokenType.Subscript, base, subscript: sub, begin: base.begin, end: sub.end }\n }\n}\n\nfunction loadSingle(cursor: Cursor): AstAny | AstName | null {\n const begin = cursor.position\n if (cursor.is(\".\")) {\n cursor.inc().eatWs()\n const prop = any(cursor) || name(cursor)\n if (prop != null) {\n return prop\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction loadMulti(cursor: Cursor): AstName[] | null {\n const begin = cursor.position\n if (cursor.is(\"{\")) {\n const names = [] as AstName[]\n let entry: AstName | null = null\n\n cursor.inc().eatWs()\n while ((entry = name(cursor))) {\n names.push(entry)\n cursor.eatWs()\n\n if (cursor.is(\",\")) {\n cursor.inc()\n }\n\n cursor.eatWs()\n if (cursor.is(\"}\")) {\n if (names.length === 0) {\n throw new Error(\"expected name\")\n }\n cursor.inc()\n return names\n }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction name(cursor: Cursor): AstName | null {\n const begin = cursor.position\n while (!cursor.eof() && isNameCh(cursor.ch)) {\n cursor.inc()\n }\n if (cursor.position > begin) {\n return { type: TokenType.Name, begin, end: cursor.position, value: cursor.data.slice(begin, cursor.position) }\n }\n cursor.set(begin)\n return null\n}\n\nfunction isNameCh(ch: string): boolean {\n return /[^.,{}()!\\s&|]/.test(ch)\n}\n\nfunction any(cursor: Cursor): AstAny | null {\n if (cursor.is(\"*\")) {\n const begin = cursor.position\n cursor.inc()\n return { type: TokenType.Any, begin, end: cursor.position }\n }\n return null\n}\n\nfunction _compile(ast: SelectorAst, parent?: string): CompiledSelector {\n switch (ast.type) {\n case TokenType.Any:\n return compileAny(ast, parent)\n case TokenType.Subscript:\n return compileSubscript(ast, parent)\n case TokenType.MultiSubscript:\n return compileMultiSubscript(ast, parent)\n case TokenType.Name:\n return compileName(ast, parent)\n case TokenType.Negate:\n return compileNot(_compile(ast.value, parent))\n case TokenType.Or:\n return compileOr(_compile(ast.left, parent), _compile(ast.right, parent))\n case TokenType.And:\n return compileAnd(_compile(ast.left, parent), _compile(ast.right, parent))\n }\n return () => false\n}\n\nfunction compileAny(ast: AstAny, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return Object.values(v[parent]).some(v => v === true)\n }\n } else {\n return v => {\n for (const entry of Object.values(v)) {\n if (Object.values(entry).some(v => v === true)) {\n return true\n }\n }\n return false\n }\n }\n}\n\nfunction compileSubscript(ast: AstSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n\n if (ast.subscript.type === TokenType.Any) {\n return compileAny(ast.subscript, parent)\n }\n if (ast.subscript.type === TokenType.Name) {\n return compileName(ast.subscript, parent)\n }\n\n return () => false\n}\n\nfunction compileMultiSubscript(ast: AstMultiSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n const values = ast.subscripts.map(v =>\n compileSubscript(\n { type: TokenType.Subscript, base: ast.base, subscript: v, begin: v.begin, end: v.end },\n parent\n )\n )\n\n if (values.length === 1) {\n return values[0]\n } else {\n let result = values[0]\n for (let i = 1; i < values.length; i++) {\n result = compileOr(result, values[i])\n }\n return result\n }\n}\n\nfunction compileName(ast: AstName, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return !!v[parent][ast.value]\n }\n } else {\n return v => {\n const many = v[ast.value]\n return many != null && Object.values(many).some(v => v === true)\n }\n }\n}\n\nfunction compileNot(compiled: CompiledSelector): CompiledSelector {\n return v => !compiled(v)\n}\n\nfunction compileOr(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) || right(v)\n}\n\nfunction compileAnd(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) && right(v)\n}\n","import { computed, Directive, inject, signal, untracked } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { deepClone } from \"@ngutil/common\"\n\nimport { compile as compileSelector } from \"./selector\"\n\n/**\n * {\n * busy: {\n * self: true,\n * parent: false,\n * disabled: false\n * }\n * }\n */\nexport type UiStateDetails = { readonly [key: string]: UiStateEntry }\n\nexport type UiStateEntry = { readonly [key: UiStateSource]: boolean }\n\nexport type UiStateValue = { readonly [key: string]: boolean }\n\nexport type UiStateSource = \"parent\" | \"self\" | string\n\nexport type UiStateSelector = string\n\n@Directive({ standalone: true })\nexport class UiState<N extends string = string, S extends UiStateSource = UiStateSource> {\n readonly #parent = inject(UiState, { skipSelf: true, optional: true })\n\n get root(): UiState {\n return this.#parent?.root || this\n }\n\n readonly #self = signal<UiStateDetails>({})\n\n readonly merged = computed<UiStateDetails>(() => {\n const parent = this.#parent?.merged()\n const self = this.#self()\n if (parent) {\n const result: Mutable<UiStateDetails> = deepClone(self)\n\n for (const [k, v] of Object.entries(parent)) {\n const parentIsTrue = Object.values(v).includes(true)\n const { self: _, ...parentWihtoutSelf } = v\n if (result[k] != null) {\n result[k] = {\n ...parentWihtoutSelf,\n ...result[k],\n parent: parentIsTrue\n }\n } else {\n result[k] = { ...parentWihtoutSelf, parent: parentIsTrue }\n }\n }\n\n return result\n } else {\n return self\n }\n })\n\n readonly value = computed<UiStateValue>(() => {\n const merged = this.merged()\n const result: Mutable<UiStateValue> = {}\n\n for (const [k, v] of Object.entries(merged)) {\n result[k] = Object.values(v).includes(true)\n }\n\n return result\n })\n\n readonly inertSelector = signal(\"busy || disabled\")\n\n set(name: N, value: boolean, source: S = \"self\" as S) {\n if (source === \"parent\") {\n console.error(\"can't set parent state\")\n return\n }\n\n const current = untracked(this.#self)\n const entry = current[name] || {}\n\n if (entry[source] !== value) {\n this.#self.set({ ...current, [name]: { ...entry, [source]: value } })\n }\n\n // TODO: maybe some option to propagate to root\n // const root = this.root\n // if (source !== \"self\" && root !== this) {\n // root.set(name, value, source)\n // }\n }\n\n is(selector: UiStateSelector = \"*\"): boolean {\n return compileSelector(selector)(this.merged())\n }\n\n intercept(name: N, source: S) {\n return <S>(src: Observable<S>) => this.wrap(src, name, source)\n }\n\n wrap<T>(observable: Observable<T>, name: N, source: S): Observable<T> {\n return new Observable<T>(subscriber => {\n this.set(name, true, source)\n subscriber.add(() => this.set(name, false, source))\n return observable.subscribe(subscriber)\n })\n }\n\n isInert() {\n return this.is(this.inertSelector())\n }\n}\n","import { computed, Directive, effect, inject, Signal } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\n\nimport { UiState } from \"./ui-state\"\n\nexport const NOTSET: any = Symbol(\"NOTSET\")\n\n@Directive()\nexport abstract class AbstractUiState<N extends string> {\n readonly state: UiState<N> = inject(UiState)\n\n abstract readonly input: Signal<boolean>\n abstract readonly when: Signal<string>\n\n readonly yes = computed(() => {\n const when = this.when()\n if (when !== NOTSET) {\n // TODO: add prefix if only provide loading, or simething simple selector\n return this.state.is(`${this.name}.self || (${when})`)\n }\n return this.state.is(this.name)\n })\n readonly no = computed(() => !this.yes())\n\n constructor(readonly name: N) {\n effect(\n () => {\n const input = this.input()\n if (input !== NOTSET) {\n this.state.set(name, !!coerceBoolAttr(input))\n }\n },\n { allowSignalWrites: true }\n )\n }\n\n set(value: boolean, source: string) {\n this.state.set(this.name, value, source)\n }\n\n intercept(source: string) {\n return this.state.intercept(this.name, source)\n }\n\n wrap<T>(observable: Observable<T>, source: string): Observable<T> {\n return this.state.wrap(observable, this.name, source)\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuBusy], [nuBusyWhen]\",\n exportAs: \"busy\",\n standalone: true,\n host: {\n \"[attr.aria-busy]\": \"yes() ? 'true' : 'false'\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class BusyDirective extends AbstractUiState<\"busy\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuBusy\" })\n readonly when = input(NOTSET as string, { alias: \"nuBusyWhen\" })\n\n constructor() {\n super(\"busy\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDisabled], [nuDisabledWhen]\",\n exportAs: \"disabled\",\n standalone: true,\n host: {\n \"[attr.aria-disabled]\": \"yes() ? 'true' : 'false'\",\n \"[attr.disabled]\": \"yes() ? '' : null\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DisabledDirective extends AbstractUiState<\"disabled\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDisabled\" })\n readonly when = input(NOTSET as string, { alias: \"nuDisabledWhen\" })\n\n constructor() {\n super(\"disabled\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuReadonly], [nuReadonlyWhen]\",\n exportAs: \"readonly\",\n standalone: true,\n host: {\n \"[attr.aria-readonly]\": \"yes() ? 'true' : 'false'\",\n \"[attr.readonly]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class ReadonlyDirective extends AbstractUiState<\"readonly\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuReadonly\" })\n readonly when = input(NOTSET as string, { alias: \"nuReadonlyWhen\" })\n\n constructor() {\n super(\"readonly\")\n }\n}\n","import { Directive } from \"@angular/core\"\nimport { toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { animationFrames, map, Observable, of, scan, shareReplay, startWith, Subject, switchMap, takeWhile } from \"rxjs\"\n\nimport { clamp } from \"lodash\"\nimport { Mutable } from \"utility-types\"\n\nimport { DeepReadonly } from \"@ngutil/common\"\n\nexport interface ProgressCommon {\n readonly message?: string\n readonly [other: string]: unknown\n}\n\nexport interface ProgressLax {\n readonly type: \"lax\"\n readonly predictedTime: number\n // readonly updateInterval: number\n}\n\nexport interface ProgressFix {\n readonly type: \"fix\"\n readonly percent: number\n}\n\nexport type Progress = (ProgressLax | ProgressFix) & ProgressCommon\n\nexport interface ProgressSegmentInput {\n readonly name: string\n readonly distribution?: number\n readonly progress: DeepReadonly<Progress>\n}\n\nexport interface ProgressSegement extends ProgressSegmentInput {\n ratio: number\n share: number\n done: boolean\n laxBegin?: number\n}\n\nexport type ProgressSegements = { [key: string]: ProgressSegement }\n\nconst SEGMENT_REGISTER: Progress = { type: \"fix\", percent: 0 }\nconst SEGMENT_COMPLETE: Progress = { type: \"fix\", percent: 1 }\n\n@Directive()\nexport class ProgressState {\n readonly #segments: { [key: string]: ProgressSegmentRef } = {}\n\n readonly #input = new Subject<ProgressSegmentInput>()\n\n readonly #state: Observable<ProgressSegements> = this.#input.pipe(\n startWith(null),\n scan((state, input) => {\n if (Object.keys(state).length === 0) {\n state = this.#initialState()\n }\n\n if (input == null) {\n return state\n }\n\n let current = state[input.name] ?? { ratio: 0, share: 0, done: false }\n current = { ...current, ...input }\n\n if (input.progress.type === \"lax\") {\n delete current.laxBegin\n current.done = false\n }\n\n if (input.progress.type === \"fix\" && input.progress.percent < 1) {\n current.done = false\n }\n\n return { ...state, [input.name]: { ...current, ...input } }\n }, {} as ProgressSegements),\n switchMap(state => {\n const slist = Object.values(state) as Array<Mutable<ProgressSegement>>\n const min = slist.reduce((min, current) => Math.min(min, current.distribution || 0), Infinity) || 1\n const totalDistribution = slist.reduce((total, current) => total + (current.distribution || min), 0)\n const hasLax = slist.some(segment => segment.progress.type === \"lax\")\n const trigger = hasLax ? animationFrames() : of({ timestamp: performance.now() })\n\n return trigger.pipe(\n map(({ timestamp }) => {\n for (const segment of slist) {\n if (segment.distribution == null) {\n segment.distribution = min\n }\n segment.ratio = segment.distribution / totalDistribution + 0.0001\n\n let percent: number\n\n if (segment.progress.type === \"lax\") {\n if (segment.laxBegin == null) {\n segment.laxBegin = timestamp\n }\n\n percent = (timestamp - segment.laxBegin) / segment.progress.predictedTime\n if (percent >= 0.8) {\n const final = (timestamp - segment.laxBegin) / (segment.progress.predictedTime * 50)\n percent = 0.8 + Math.log1p(final)\n }\n } else {\n delete segment.laxBegin\n percent = clamp(segment.progress.percent, 0, 1)\n }\n\n segment.share = percent * segment.ratio\n segment.done = percent >= 1\n }\n\n return state\n }),\n takeWhile(state => Object.values(state).some(segment => !segment.done), true)\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly value$: Observable<DeepReadonly<ProgressSegements>> = this.#state\n readonly value = toSignal(this.value$)\n\n readonly percent$: Observable<number> = this.value$.pipe(\n map(value =>\n value != null\n ? clamp(\n Object.values(value).reduce((a, b) => a + b.share, 0),\n 0,\n 1\n )\n : 0\n ),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly percent = toSignal(this.percent$)\n\n segment(name: string, distribution: number = 1): ProgressSegmentRef {\n const segment =\n this.#segments[name] ?? (this.#segments[name] = new ProgressSegmentRef(this.#input, name, distribution))\n segment.next(SEGMENT_REGISTER)\n return segment\n }\n\n connect(state: ProgressState, name: string, distribution?: number): Observable<void> {\n return new Observable(() => {\n const segment = this.segment(name, distribution)\n return state.percent$.subscribe(percent => {\n segment.next({ type: \"fix\", percent })\n })\n })\n }\n\n #initialState() {\n return Object.values(this.#segments).reduce((res, segment) => {\n if (segment.value) {\n res[segment.name] = {\n name: segment.name,\n distribution: segment.distribution,\n progress: segment.value,\n ratio: 0,\n share: 0,\n done: false\n }\n }\n return res\n }, {} as ProgressSegements)\n }\n}\n\nexport class ProgressSegmentRef {\n readonly #subject: Subject<ProgressSegmentInput>\n\n set distribution(value: number | undefined) {\n if (this.#distribution !== value) {\n this.#distribution = value\n if (this.#value != null) {\n this.#next(this.#value)\n }\n }\n }\n\n get distribution() {\n return this.#distribution\n }\n #distribution?: number\n\n get value() {\n return this.#value\n }\n #value?: Progress\n\n constructor(\n subject: Subject<ProgressSegmentInput>,\n public readonly name: string,\n distribution?: number\n ) {\n this.#subject = subject\n this.#distribution = distribution\n }\n\n next(progress: Progress) {\n return this.#next(progress)\n }\n\n complete() {\n return this.#next(SEGMENT_COMPLETE)\n }\n\n #next(progress: Progress) {\n this.#value = progress\n this.#subject.next({ name: this.name, distribution: this.distribution, progress })\n return this\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { BusyDirective } from \"./busy.directive\"\nimport { DisabledDirective } from \"./disabled.directive\"\nimport { ReadonlyDirective } from \"./readonly.directive\"\n\nexport * from \"./abstract\"\nexport * from \"./busy.directive\"\nexport * from \"./disabled.directive\"\nexport * from \"./progress-state\"\nexport * from \"./readonly.directive\"\nexport * from \"./ui-state\"\n\nconst entries = [BusyDirective, DisabledDirective, ReadonlyDirective]\n\n@NgModule({\n imports: entries,\n exports: entries\n})\nexport class UiStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","_a","i1.FocusState","compileSelector"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngutil-aria.mjs","sources":["../../../../packages/aria/src/activity/activity.service.ts","../../../../packages/aria/src/focus/focus.service.ts","../../../../packages/aria/src/focus/focus-trap.directive.ts","../../../../packages/aria/src/focus/focus-state.directive.ts","../../../../packages/aria/src/focus/focusable.directive.ts","../../../../packages/aria/src/keystroke/keystroke.service.ts","../../../../packages/aria/src/gestures/gestures/_base.ts","../../../../packages/aria/src/gestures/gestures/dragging.ts","../../../../packages/aria/src/gestures/gestures.service.ts","../../../../packages/aria/src/ui-state/selector.ts","../../../../packages/aria/src/ui-state/ui-state.ts","../../../../packages/aria/src/ui-state/abstract.ts","../../../../packages/aria/src/ui-state/busy.directive.ts","../../../../packages/aria/src/ui-state/disabled.directive.ts","../../../../packages/aria/src/ui-state/readonly.directive.ts","../../../../packages/aria/src/ui-state/progress-state.ts","../../../../packages/aria/src/ui-state/index.ts","../../../../packages/aria/src/ngutil-aria.ts"],"sourcesContent":["import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n share,\n shareReplay,\n startWith,\n switchMap,\n take,\n throttleTime,\n timer\n} from \"rxjs\"\n\n// TODO: detect program activity\nexport type ActivityOrigin = \"mouse\" | \"keyboard\" | \"touch\" | \"program\"\n\nexport interface ActivityEvent {\n origin: ActivityOrigin\n type: keyof typeof EVENT_ORIGIN\n node?: Node\n}\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nconst EVENT_ORIGIN = {\n keydown: \"keyboard\",\n mousedown: \"mouse\",\n mousemove: \"mouse\",\n touchstart: \"touch\"\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class ActivityService {\n readonly #zone = inject(NgZone)\n readonly #doc = inject(DOCUMENT)\n\n readonly events$: Observable<ActivityEvent> = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent(this.#doc, \"keydown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousedown\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"mousemove\", EVENT_OPTIONS),\n fromEvent(this.#doc, \"touchstart\", EVENT_OPTIONS)\n ).pipe(\n map(event => {\n const type = event.type as ActivityEvent[\"type\"]\n return {\n origin: EVENT_ORIGIN[type] as ActivityOrigin,\n type: type,\n node: event.target as any\n }\n }),\n share()\n )\n )\n\n watchActivity(node?: HTMLElement) {\n if (node) {\n return this.events$.pipe(\n filter(\n event =>\n event.node != null &&\n (event.node === node || (event.node instanceof HTMLElement && event.node.contains(node)))\n ),\n shareReplay(1)\n )\n } else {\n return this.events$\n }\n }\n\n watchInactvity(timeout: number) {\n return this.events$.pipe(\n startWith(null),\n throttleTime(timeout / 2),\n switchMap(() => timer(0, timeout).pipe(take(2))),\n map(v => v !== 0),\n distinctUntilChanged(),\n shareReplay(1)\n )\n }\n}\n","import { FocusTrapFactory } from \"@angular/cdk/a11y\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { inject, Inject, Injectable, NgZone } from \"@angular/core\"\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\n\nimport { combineLatest, distinctUntilChanged, filter, fromEvent, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { focusable, type FocusableElement, isFocusable } from \"tabbable\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\n\nimport { ActivityOrigin, ActivityService } from \"../activity\"\n\nconst EVENT_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true\n}\n\nexport type FocusOrigin = ActivityOrigin | null\n\nexport interface FocusChanges {\n origin: FocusOrigin\n element: HTMLElement\n}\n\nexport interface FocusableEvent {\n origin: FocusOrigin\n exact: boolean\n node: Node\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class FocusService {\n readonly #activity = inject(ActivityService)\n readonly #focusTrap = inject(FocusTrapFactory)\n readonly events: Observable<FocusChanges>\n\n constructor(@Inject(DOCUMENT) document: Document, @Inject(NgZone) zone: NgZone) {\n this.events = zone.runOutsideAngular(() => {\n const focus = fromEvent(document, \"focus\", EVENT_OPTIONS).pipe(map(e => e.target as Node))\n const blur = fromEvent(document, \"blur\", EVENT_OPTIONS).pipe(\n startWith(null),\n map(e => (e?.target as Node) || null)\n )\n\n return combineLatest({\n activity: this.#activity.events$.pipe(\n filter(event => event.type !== \"mousemove\"),\n distinctUntilChanged((prev, curr): boolean => {\n if (prev && curr) {\n return prev.origin === curr.origin && prev.node === curr.node\n } else {\n return false\n }\n })\n ),\n focus: focus,\n blur: blur\n }).pipe(\n takeUntilDestroyed(),\n map(({ activity, focus, blur }) => {\n // console.log({ activity, focus, blur })\n\n // If focus in with alt+tab\n if (blur === document && activity.origin === \"keyboard\") {\n return { origin: \"program\", element: focus }\n }\n\n if (focus === document) {\n return { origin: \"program\", element: focus }\n }\n\n // If press tab button, first fire the event in the currently focused element\n if (focus === blur) {\n return null\n }\n\n // When press tab, the activity is on the current fucesd element,\n // so when blur is changed to it, the focus change is completed\n if (activity.origin === \"keyboard\" && isActivityElement(activity.node, blur)) {\n return { origin: \"keyboard\", element: focus }\n }\n\n if (isActivityElement(activity.node, focus)) {\n return { origin: activity.origin, element: focus }\n } else {\n return { origin: \"program\", element: focus }\n }\n }),\n filter(v => !!v),\n shareReplay(1)\n ) as any\n })\n }\n\n watch(element: ElementInput) {\n const el = coerceElement(element)\n return this.events.pipe(\n map(event => {\n if (\n event.element &&\n (event.element === el || (typeof el.contains === \"function\" && el.contains(event.element)))\n ) {\n return event\n }\n return { element: el, origin: null } as FocusChanges\n })\n )\n }\n\n focus(node: HTMLElement, _origin: FocusOrigin | null) {\n // TODO: focus origin\n node.focus()\n }\n\n queryFocusable(inside: HTMLElement): FocusableElement[] {\n return focusable(inside, { includeContainer: false })\n }\n\n getFirstFocusable(inside: HTMLElement): FocusableElement | undefined {\n return this.queryFocusable(inside)[0]\n }\n\n isFocusable(node: Element): boolean {\n return isFocusable(node)\n }\n\n focusTrap(inside: HTMLElement, deferCaptureElements: boolean = false) {\n return this.#focusTrap.create(inside, deferCaptureElements)\n }\n}\n\nfunction isActivityElement(activityEl?: Node | null, focused?: Node | null): boolean {\n return activityEl != null && focused != null && (activityEl === focused || focused.contains(activityEl))\n}\n","import { ElementRef, inject } from \"@angular/core\"\n\nimport { BehaviorSubject } from \"rxjs\"\n\nimport { Destructible } from \"@ngutil/common\"\n\nimport { FocusService } from \"./focus.service\"\n\n// TODO: implement\nexport class FocusTrap extends Destructible {\n #manager = inject(FocusService)\n #el = inject(ElementRef<HTMLElement>)\n\n get enabled() {\n return this.#enabled.value\n }\n set enabled(val: boolean) {\n if (this.#enabled.value !== val) {\n this.#enabled.next(val)\n }\n }\n #enabled = new BehaviorSubject<boolean>(true)\n\n enable() {\n this.enabled = true\n }\n\n disable() {\n this.enabled = false\n }\n}\n","import { Directive, effect, ElementRef, inject } from \"@angular/core\"\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, shareReplay, switchMap } from \"rxjs\"\n\nimport { ElementInput } from \"dist/packages/common\"\n\nimport { ConnectProtocol, isElementInput } from \"@ngutil/common\"\n\nimport { FocusChanges, FocusService } from \"./focus.service\"\n\n@Directive({\n standalone: true,\n host: {\n \"[attr.focus]\": \"origin()\",\n \"[attr.focusWithin]\": \"within()\"\n }\n})\nexport class FocusState implements ConnectProtocol {\n readonly #focus = inject(FocusService)\n readonly #el = inject<ElementRef<HTMLElement>>(ElementRef)\n readonly #parent = inject(FocusState, { optional: true, skipSelf: true })\n readonly #default: FocusChanges = { element: this.#el.nativeElement, origin: null }\n\n readonly #self = this.#focus.watch(this.#el).pipe(takeUntilDestroyed(), shareReplay(1))\n\n readonly #connected = new BehaviorSubject<Observable<FocusChanges>[]>([])\n readonly #connEvent = this.#connected.pipe(\n switchMap(values => (values.length === 0 ? of([]) : combineLatest(values))),\n takeUntilDestroyed(),\n map(values => values.filter(v => v.origin != null)),\n map(values => values[0] || this.#default),\n shareReplay(1)\n )\n\n readonly event$: Observable<FocusChanges> = combineLatest([this.#self, this.#connEvent]).pipe(\n debounceTime(100),\n map(values => values.find(v => v.origin != null) || this.#default),\n shareReplay(1)\n )\n\n readonly origin$ = this.event$.pipe(map(event => event.origin))\n readonly within$ = this.event$.pipe(map(event => (event.element !== this.#el.nativeElement ? event.origin : null)))\n\n readonly event = toSignal(this.event$, { rejectErrors: true, manualCleanup: true })\n readonly origin = toSignal(this.origin$, { rejectErrors: true, manualCleanup: true })\n readonly within = toSignal(this.within$, { rejectErrors: true, manualCleanup: true })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this.origin(), { allowSignalWrites: false })\n this.#parent?.connect(this).pipe(takeUntilDestroyed()).subscribe()\n }\n\n connect(value: FocusState | ElementInput) {\n return new Observable(() => {\n const src = (isElementInput(value) ? this.#focus.watch(value) : value.event$).pipe(shareReplay(1))\n this.#connected.next([...this.#connected.value, src])\n\n return () => {\n let current = this.#connected.value\n const idx = current.indexOf(src)\n if (idx >= 0) {\n current = [...current]\n current.splice(idx, 1)\n this.#connected.next(current)\n }\n }\n })\n }\n}\n","import { computed, Directive, effect, inject, input } from \"@angular/core\"\n\nimport { ConnectProtocol, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"./focus-state.directive\"\n\n// TODO: what happens when disabled is changed\n\n@Directive({\n standalone: true,\n selector: \"[nuFocusable]\",\n exportAs: \"nuFocusable\",\n host: {\n \"[attr.tabindex]\": \"_tabindex()\"\n },\n hostDirectives: [FocusState]\n})\nexport class Focusable implements ConnectProtocol {\n readonly state = inject(FocusState)\n\n readonly focusable = input<boolean | number>(true, { alias: \"nuFocusable\" })\n readonly tabindex = input(0, { transform: Number })\n\n readonly _tabindex = computed(() => {\n const focusable = this.focusable()\n const tabindex = this.tabindex()\n\n if (focusable === false) {\n return -1\n }\n\n if (typeof focusable === \"number\") {\n return focusable\n }\n\n if (focusable === true && tabindex != null && !isNaN(tabindex)) {\n return tabindex\n }\n\n return 0\n })\n\n constructor() {\n // TODO: miért kell ez?, ha nincs itt akkor nem frissül\n effect(() => this._tabindex(), { allowSignalWrites: false })\n }\n\n connect(value: Focusable | FocusState | ElementInput) {\n if (value instanceof FocusState || isElementInput(value)) {\n return this.state.connect(value)\n } else {\n return this.state.connect(value.state)\n }\n }\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n distinctUntilChanged,\n EMPTY,\n filter,\n from,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n share,\n shareReplay,\n startWith,\n Subscriber,\n switchMap\n} from \"rxjs\"\n\nimport { coerceElement, ElementInput, isElementInput } from \"@ngutil/common\"\n\nimport { FocusState } from \"../focus\"\n\nexport interface Keystroke {\n // https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values\n key: KeyboardEvent[\"key\"]\n shift?: boolean\n ctrl?: boolean\n alt?: boolean\n state: \"down\" | \"up\"\n}\n\nexport interface KeystrokeEvent {\n original: KeyboardEvent\n keystroke: Keystroke\n}\n\nexport type KeystrokeActivation = ElementInput | FocusState | Observable<ElementInput | FocusState | boolean>\n\n@Injectable({ providedIn: \"root\" })\nexport class KeystrokeService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n\n readonly #keyEvent = this.#zone.runOutsideAngular(() =>\n merge(\n fromEvent<KeyboardEvent>(this.#document, \"keydown\", { capture: true, passive: false }),\n fromEvent<KeyboardEvent>(this.#document, \"keyup\", { capture: true, passive: false })\n ).pipe(\n filter(event => event.defaultPrevented === false),\n share()\n )\n )\n\n readonly #focusEvent = this.#zone.runOutsideAngular(() =>\n fromEvent(this.#document, \"focus\", { capture: true, passive: true }).pipe(\n startWith(null),\n map(() => this.#document.activeElement),\n shareReplay(1)\n )\n )\n\n watch(activation: KeystrokeActivation, ...keystrokes: Keystroke[]): Observable<KeystrokeEvent> {\n return new Observable((dst: Subscriber<KeystrokeEvent>) =>\n this.#trigger(activation)\n .pipe(\n distinctUntilChanged(),\n switchMap(enabled => {\n if (enabled) {\n return this.#keyEvent\n } else {\n return EMPTY\n }\n }),\n map(event => {\n if (event.defaultPrevented) {\n return []\n }\n\n const idFromEvent = keystrokeId(eventToKeystroke(event))\n const matches = keystrokes\n .filter(ks => keystrokeId(ks) === idFromEvent)\n .map(ks => {\n return {\n original: event,\n keystroke: ks\n }\n })\n\n if (matches.length > 0) {\n event.preventDefault()\n }\n\n return matches\n }),\n filter(matches => matches.length > 0),\n switchMap(matches => of(...matches))\n )\n .subscribe(dst)\n )\n }\n\n #trigger(activation: KeystrokeActivation): Observable<boolean | HTMLElement> {\n if (isElementInput(activation)) {\n return this.#focusActivation(coerceElement(activation))\n } else if (activation instanceof FocusState) {\n return activation.origin$.pipe(map(origin => origin != null))\n } else {\n return from(activation).pipe(\n switchMap(value => {\n if (isElementInput(value) || value instanceof FocusState) {\n return this.#trigger(value)\n } else {\n return of(value)\n }\n })\n )\n }\n }\n\n #focusActivation(element: HTMLElement): Observable<boolean> {\n return this.#focusEvent.pipe(map(focused => focused === element || element.contains(focused)))\n }\n}\n\nfunction keystrokeId(ks: Keystroke): string {\n let res = ks.key\n if (ks.shift) {\n res += \"+shift\"\n }\n if (ks.ctrl) {\n res += \"+ctrl\"\n }\n if (ks.alt) {\n res += \"+alt\"\n }\n res += `${ks.state}`\n return res\n}\n\nfunction eventToKeystroke(event: KeyboardEvent): Keystroke {\n return {\n key: event.key,\n shift: event.shiftKey,\n ctrl: event.ctrlKey,\n alt: event.altKey,\n state: event.type === \"keyup\" ? \"up\" : \"down\"\n }\n}\n","import { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { Position } from \"@ngutil/style\"\n\nexport interface Gesture<T extends GestureEvent> {\n name: string\n priority: number\n listeners?: Array<keyof DocumentEventMap>\n handler: GestureHandler<T>\n}\n\nexport type GestureHandler<T extends GestureEvent> = (events: Observable<GestureMatchState<T>>) => Observable<T>\n\nexport type GestureListener = {\n name: keyof DocumentEventMap\n target: ListenerTarget\n // options?: AddEventListenerOptions\n}\n\nexport interface GestureEvent<T extends string = string> {\n readonly type: T\n readonly origin: GestureOrigin\n readonly target: HTMLElement\n readonly pointerType: GesturePointerType\n readonly phase: GesturePhase\n readonly pointers: ReadonlyArray<GesturePointer>\n\n preventDefault(): void\n}\n\ntype GestureEventFixFields = \"target\" | \"origin\" | \"pointers\" | \"phase\" | \"pointerType\" | \"preventDefault\"\n\nexport type PointersPosition = ReadonlyArray<Readonly<Position>>\n\nexport interface GesturePointer {\n readonly start: Position\n readonly current: Position\n readonly end?: Position\n readonly distance: Position\n readonly direction: { x: -1 | 0 | 1; y: -1 | 0 | 1 }\n}\n\nexport type GestureOrigin = MouseEvent | TouchEvent\n\nexport const enum GesturePointerType {\n Mouse = \"mouse\",\n Touch = \"touch\"\n}\n\nexport const enum GesturePhase {\n Start = \"start\",\n Moving = \"moving\",\n End = \"end\"\n}\n\nexport type GestureMatchState<T extends GestureEvent = GestureEvent> = Partial<\n Mutable<Omit<T, GestureEventFixFields>>\n> &\n Pick<T, GestureEventFixFields> & {\n readonly pending?: Array<string>\n }\n\nexport function stateToEvent<T extends GestureEvent>(state: GestureMatchState, type: string): T {\n return {\n type: type,\n origin: state.origin!,\n target: state.target!,\n pointerType: state.pointerType!,\n phase: state.phase!,\n pointers: state.pointers!\n } as T\n}\n\nexport interface ListenerConfig {\n target: ListenerTarget\n options?: AddEventListenerOptions\n pointerType: GesturePointerType\n phase: GesturePhase\n}\n\nexport const enum ListenerTarget {\n Document = \"document\",\n Element = \"element\"\n}\n\nexport const Listeners: { [key: string]: ListenerConfig } = {\n mousedown: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n mousemove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n mouseup: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Mouse,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n },\n touchstart: {\n target: ListenerTarget.Element,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Start,\n options: { capture: true, passive: false }\n },\n touchmove: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.Moving,\n options: { capture: true, passive: false }\n },\n touchend: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: false }\n },\n touchcancel: {\n target: ListenerTarget.Document,\n pointerType: GesturePointerType.Touch,\n phase: GesturePhase.End,\n options: { capture: true, passive: true }\n }\n} as const\n","import { filter, map, tap } from \"rxjs\"\n\nimport { Gesture, GestureEvent, GesturePhase, stateToEvent } from \"./_base\"\n\n// export type DraggingEvent = GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\">\n\nexport interface DraggingEvent extends GestureEvent<\"dragging-start\" | \"dragging-end\" | \"dragging-move\"> {}\n\nconst TypeMap = {\n [GesturePhase.Start]: \"dragging-start\",\n [GesturePhase.Moving]: \"dragging-move\",\n [GesturePhase.End]: \"dragging-end\"\n}\n\nexport const Dragging: Gesture<DraggingEvent> = {\n name: \"dragging\",\n listeners: [\"mousedown\", \"mousemove\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"],\n priority: 0,\n handler: events =>\n events.pipe(\n filter(state => !state.pending || state.pending.length === 0),\n tap(state => state.preventDefault()),\n map(state => stateToEvent(state, TypeMap[state.phase]))\n )\n}\n","import { DOCUMENT } from \"@angular/common\"\nimport { inject, Injectable, NgZone } from \"@angular/core\"\n\nimport {\n concatMap,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n Observable,\n of,\n scan,\n share,\n startWith,\n takeWhile,\n tap\n} from \"rxjs\"\n\nimport { flatten } from \"lodash-es\"\nimport { Mutable } from \"utility-types\"\n\nimport { coerceElement, ElementInput } from \"@ngutil/common\"\nimport { Position } from \"@ngutil/style\"\n\nimport {\n Gesture,\n GestureEvent,\n GestureMatchState,\n GestureOrigin,\n GesturePhase,\n GesturePointerType,\n Listeners\n} from \"./gestures\"\n\n@Injectable({ providedIn: \"root\" })\nexport class GesturesService {\n readonly #document = inject(DOCUMENT)\n readonly #zone = inject(NgZone)\n readonly #listeners = new Map<HTMLElement | Document, Map<string, Observable<GestureMatchState>>>()\n\n watch<T extends GestureEvent>(el: ElementInput, ...gestures: Gesture<T>[]): Observable<T> {\n return this.#zone.runOutsideAngular(() => {\n const listeners = flatten(gestures.map(v => v.listeners || []))\n const { trigger, watch } = this.#getListeners(coerceElement(el), listeners)\n\n let pointerType: GesturePointerType | undefined\n return trigger.pipe(\n filter(state => {\n if (pointerType == null) {\n pointerType = state.pointerType\n }\n return pointerType === state.pointerType\n }),\n concatMap(v =>\n this.#zone.runOutsideAngular(() => {\n const watching = watch[pointerType!].pipe(\n startWith(v),\n scan(\n (state, curr) => updatePointers<T>({ ...state, ...curr } as T),\n {} as GestureMatchState<T>\n ),\n takeWhile(state => state.phase !== GesturePhase.End, true),\n share()\n )\n return merge(...gestures.map(v => v.handler(watching)))\n })\n )\n )\n })\n }\n\n #getListeners<T extends GestureEvent>(inputEl: HTMLElement, listeners: string[]) {\n const triggers: string[] = []\n const watches: { [key: string]: string[] } = {}\n\n for (const name of listeners) {\n const conf = Listeners[name]\n\n const container =\n conf.phase === GesturePhase.Start\n ? triggers\n : (watches[conf.pointerType] = watches[conf.pointerType] || [])\n\n if (container.indexOf(name) === -1) {\n container.push(name)\n }\n }\n\n if (triggers.length === 0) {\n throw Error(\"Missing start events\")\n }\n\n const observable = (names: string[]) => {\n if (names.length === 0) {\n return of()\n } else if (names.length === 1) {\n return this.#getListener<T>(inputEl, names[0])\n } else {\n return merge(...names.map(v => this.#getListener<T>(inputEl, v)))\n }\n }\n\n return {\n trigger: observable(triggers),\n watch: {\n [GesturePointerType.Mouse]: observable(watches[GesturePointerType.Mouse]),\n [GesturePointerType.Touch]: observable(watches[GesturePointerType.Touch])\n }\n }\n }\n\n #getListener<T extends GestureEvent>(inputEl: HTMLElement, name: string): Observable<GestureMatchState<T>> {\n return this.#zone.runOutsideAngular(() => {\n const target = Listeners[name].target\n const targetObj = target === \"document\" ? this.#document : inputEl\n let targetListeners = this.#listeners.get(targetObj)\n\n if (targetListeners == null) {\n targetListeners = new Map()\n this.#listeners.set(targetObj, targetListeners)\n }\n\n let listener = targetListeners.get(name)\n if (listener == null) {\n const { phase, pointerType, options } = Listeners[name]\n const passive = options?.passive\n\n listener = fromEvent<GestureOrigin>(targetObj, name, options as any).pipe(\n finalize(() => {\n targetListeners.delete(name)\n }),\n map(\n origin =>\n ({\n origin,\n phase,\n pointerType,\n preventDefault: passive === false ? origin.preventDefault.bind(origin) : noop\n }) as unknown as GestureMatchState<T>\n )\n )\n\n if (phase === GesturePhase.Start) {\n listener = listener.pipe(\n tap(state => {\n ;(state as Mutable<GestureMatchState>).target = state.origin.target as HTMLElement\n })\n )\n }\n\n listener = listener.pipe(share())\n\n targetListeners.set(name, listener)\n }\n\n return listener as Observable<GestureMatchState<T>>\n })\n }\n}\n\nfunction pointersFromEvent(event: MouseEvent | TouchEvent): Position[] {\n if (event instanceof MouseEvent) {\n return [\n {\n x: event.clientX,\n y: event.clientY\n }\n ]\n } else {\n return Array.from(event.touches).map(t => {\n return { x: t.clientX, y: t.clientY }\n })\n }\n}\n\nfunction updatePointers<T extends GestureEvent>(state: Mutable<T>): GestureMatchState<T> {\n if (state.phase === GesturePhase.Start) {\n state.pointers = pointersFromEvent(state.origin).map(v => {\n return { start: v, current: v, distance: { x: 0, y: 0 }, direction: { x: 0, y: 0 } }\n })\n } else if (state.pointers) {\n const pointers = pointersFromEvent(state.origin)\n if (pointers.length === 0) {\n return state\n }\n\n state.pointers = state.pointers.map((v, i) => {\n const p = pointers[i]\n return {\n start: v.start,\n current: p,\n distance: { x: p.x - v.start.x, y: p.y - v.start.y },\n direction: { x: direction(v.start.x, p.x), y: direction(v.start.y, p.y) }\n }\n })\n }\n\n return state\n}\n\nfunction direction(prev: number, curr: number): -1 | 0 | 1 {\n return curr > prev ? 1 : curr < prev ? -1 : 0\n}\n\n// const svc = new GesturesService()\n// const w = svc.watch(document.createElement(\"div\"), DragAndDrop)\nfunction noop() {}\n","import type { UiStateDetails } from \"./ui-state\"\n\nexport type CompiledSelector = (state: UiStateDetails) => boolean\n\nexport const enum TokenType {\n Any = 1,\n Name = 2,\n Negate = 3,\n Or = 4,\n And = 5,\n Subscript = 7,\n MultiSubscript = 8\n}\n\nexport interface AstBase {\n begin: number\n end: number\n}\n\nexport interface AstAny extends AstBase {\n type: TokenType.Any\n}\n\nexport interface AstName extends AstBase {\n type: TokenType.Name\n value: string\n}\n\nexport interface AstNegate extends AstBase {\n type: TokenType.Negate\n value: SelectorAst\n}\n\nexport interface AstOr extends AstBase {\n type: TokenType.Or\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstAnd extends AstBase {\n type: TokenType.And\n left: SelectorAst\n right: SelectorAst\n}\n\nexport interface AstSubscript extends AstBase {\n type: TokenType.Subscript\n base: AstName\n subscript: AstAny | AstName\n}\n\nexport interface AstMultiSubscript extends AstBase {\n type: TokenType.MultiSubscript\n base: AstName\n subscripts: AstName[]\n}\n\nexport type SelectorAst = AstAny | AstName | AstNegate | AstOr | AstAnd | AstSubscript | AstMultiSubscript\n\nconst COMPILE_CACHE: { [key: string]: CompiledSelector } = {}\nexport function compile(selector: string): CompiledSelector {\n return (COMPILE_CACHE[selector] ??= _compile(parse(selector)))\n}\n\nclass Cursor {\n position: number = 0\n\n get ch() {\n return this.data[this.position]\n }\n\n constructor(readonly data: string) {}\n\n inc(value: number = 1) {\n this.position += value\n return this\n }\n\n eatWs() {\n let end = this.position\n while (end < this.data.length && /[ \\r\\n\\t]/.test(this.data[end])) {\n end++\n }\n this.position = end\n return this\n }\n\n is(ch: string) {\n if (ch.length === 1) {\n return this.ch === ch\n }\n const begin = this.position\n const end = begin + ch.length\n return this.data.substring(begin, end) === ch\n }\n\n eof() {\n return this.position >= this.data.length\n }\n\n set(position: number) {\n this.position = position\n return this\n }\n}\n\n/**\n * expression:\n * - \"*\": any\n * - \"name without dot\": top level: eg. \"busy\" or \"disabled\", this is equal to \"busy.*\"\n * - \"name with dot\": nested: eg. \"busy.self\" or \"busy.loading\"\n * - negate: \"!busy\", \"!busy.*\", \"!busy.save\"\n * - OR: \"busy.* || !disabled.*\"\n * - AND: \"busy.* && !disabled.*\"\n * - GROUP: \"(busy || disabled) && !readonly\"\n * - Shorted of multiple source of same base: \"busy{load,save}\", if one of load or save is true, the result is true\n */\nexport function parse(selector: string): SelectorAst {\n const cursor = new Cursor(selector)\n const res = expression(cursor.eatWs())\n if (res == null) {\n throw new Error(`invalid selector: ${selector}`)\n }\n\n if (!cursor.eof()) {\n throw new Error(`unexpected charcter: ${selector[res.end]} at ${res.end}`)\n }\n return res\n}\n\nfunction expression(cursor: Cursor) {\n return binary(cursor) || leftExpr(cursor)\n}\n\nfunction leftExpr(cursor: Cursor) {\n const begin = cursor.position\n const left = unary(cursor) || group(cursor) || load(cursor)\n if (left != null) {\n return left\n }\n cursor.set(begin)\n return null\n}\n\nfunction group(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"(\")) {\n const expr = expression(cursor.inc().eatWs())\n if (cursor.eatWs().is(\")\")) {\n cursor.inc()\n return binary(cursor.eatWs(), expr) || expr\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction binary(cursor: Cursor, left: SelectorAst | null = null): SelectorAst | null {\n const begin = cursor.position\n left = left ?? leftExpr(cursor)\n if (left != null) {\n cursor.eatWs()\n const result = and(left, cursor) || or(left, cursor)\n if (result != null) {\n return result\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction and(left: SelectorAst, cursor: Cursor): AstAnd | null {\n if (cursor.is(\"&&\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.And, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction or(left: SelectorAst, cursor: Cursor): AstOr | null {\n if (cursor.is(\"||\")) {\n cursor.inc(2)\n const right = expression(cursor.eatWs())\n if (right == null) {\n return null\n }\n return { type: TokenType.Or, left, right, begin: left.begin, end: cursor.position }\n }\n return null\n}\n\nfunction unary(cursor: Cursor): SelectorAst | null {\n const begin = cursor.position\n if (cursor.is(\"!\")) {\n const expr = leftExpr(cursor.inc().eatWs())\n if (expr != null) {\n return { type: TokenType.Negate, value: expr, begin, end: cursor.position }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction load(cursor: Cursor): AstAny | AstName | AstSubscript | AstMultiSubscript | null {\n cursor.eatWs()\n const _any = any(cursor)\n if (_any != null) {\n return _any\n }\n\n const base = name(cursor)\n if (base == null) {\n return null\n }\n\n cursor.eatWs()\n const sub = loadSingle(cursor) || loadMulti(cursor)\n if (sub == null) {\n return base\n } else if (Array.isArray(sub)) {\n return {\n type: TokenType.MultiSubscript,\n base,\n subscripts: sub,\n begin: base.begin,\n end: sub[sub.length - 1].end\n }\n } else {\n return { type: TokenType.Subscript, base, subscript: sub, begin: base.begin, end: sub.end }\n }\n}\n\nfunction loadSingle(cursor: Cursor): AstAny | AstName | null {\n const begin = cursor.position\n if (cursor.is(\".\")) {\n cursor.inc().eatWs()\n const prop = any(cursor) || name(cursor)\n if (prop != null) {\n return prop\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction loadMulti(cursor: Cursor): AstName[] | null {\n const begin = cursor.position\n if (cursor.is(\"{\")) {\n const names = [] as AstName[]\n let entry: AstName | null = null\n\n cursor.inc().eatWs()\n while ((entry = name(cursor))) {\n names.push(entry)\n cursor.eatWs()\n\n if (cursor.is(\",\")) {\n cursor.inc()\n }\n\n cursor.eatWs()\n if (cursor.is(\"}\")) {\n if (names.length === 0) {\n throw new Error(\"expected name\")\n }\n cursor.inc()\n return names\n }\n }\n }\n cursor.set(begin)\n return null\n}\n\nfunction name(cursor: Cursor): AstName | null {\n const begin = cursor.position\n while (!cursor.eof() && isNameCh(cursor.ch)) {\n cursor.inc()\n }\n if (cursor.position > begin) {\n return { type: TokenType.Name, begin, end: cursor.position, value: cursor.data.slice(begin, cursor.position) }\n }\n cursor.set(begin)\n return null\n}\n\nfunction isNameCh(ch: string): boolean {\n return /[^.,{}()!\\s&|]/.test(ch)\n}\n\nfunction any(cursor: Cursor): AstAny | null {\n if (cursor.is(\"*\")) {\n const begin = cursor.position\n cursor.inc()\n return { type: TokenType.Any, begin, end: cursor.position }\n }\n return null\n}\n\nfunction _compile(ast: SelectorAst, parent?: string): CompiledSelector {\n switch (ast.type) {\n case TokenType.Any:\n return compileAny(ast, parent)\n case TokenType.Subscript:\n return compileSubscript(ast, parent)\n case TokenType.MultiSubscript:\n return compileMultiSubscript(ast, parent)\n case TokenType.Name:\n return compileName(ast, parent)\n case TokenType.Negate:\n return compileNot(_compile(ast.value, parent))\n case TokenType.Or:\n return compileOr(_compile(ast.left, parent), _compile(ast.right, parent))\n case TokenType.And:\n return compileAnd(_compile(ast.left, parent), _compile(ast.right, parent))\n }\n return () => false\n}\n\nfunction compileAny(ast: AstAny, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return Object.values(v[parent]).some(v => v === true)\n }\n } else {\n return v => {\n for (const entry of Object.values(v)) {\n if (Object.values(entry).some(v => v === true)) {\n return true\n }\n }\n return false\n }\n }\n}\n\nfunction compileSubscript(ast: AstSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n\n if (ast.subscript.type === TokenType.Any) {\n return compileAny(ast.subscript, parent)\n }\n if (ast.subscript.type === TokenType.Name) {\n return compileName(ast.subscript, parent)\n }\n\n return () => false\n}\n\nfunction compileMultiSubscript(ast: AstMultiSubscript, parent?: string): CompiledSelector {\n parent ??= ast.base.value\n const values = ast.subscripts.map(v =>\n compileSubscript(\n { type: TokenType.Subscript, base: ast.base, subscript: v, begin: v.begin, end: v.end },\n parent\n )\n )\n\n if (values.length === 1) {\n return values[0]\n } else {\n let result = values[0]\n for (let i = 1; i < values.length; i++) {\n result = compileOr(result, values[i])\n }\n return result\n }\n}\n\nfunction compileName(ast: AstName, parent?: string): CompiledSelector {\n if (parent) {\n return v => {\n if (v[parent] == null) {\n return false\n }\n return !!v[parent][ast.value]\n }\n } else {\n return v => {\n const many = v[ast.value]\n return many != null && Object.values(many).some(v => v === true)\n }\n }\n}\n\nfunction compileNot(compiled: CompiledSelector): CompiledSelector {\n return v => !compiled(v)\n}\n\nfunction compileOr(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) || right(v)\n}\n\nfunction compileAnd(left: CompiledSelector, right: CompiledSelector): CompiledSelector {\n return v => left(v) && right(v)\n}\n","import { computed, Directive, inject, signal, untracked } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { Mutable } from \"utility-types\"\n\nimport { deepClone } from \"@ngutil/common\"\n\nimport { compile as compileSelector } from \"./selector\"\n\n/**\n * {\n * busy: {\n * self: true,\n * parent: false,\n * disabled: false\n * }\n * }\n */\nexport type UiStateDetails = { readonly [key: string]: UiStateEntry }\n\nexport type UiStateEntry = { readonly [key: UiStateSource]: boolean }\n\nexport type UiStateValue = { readonly [key: string]: boolean }\n\nexport type UiStateSource = \"parent\" | \"self\" | string\n\nexport type UiStateSelector = string\n\n@Directive({ standalone: true })\nexport class UiState<N extends string = string, S extends UiStateSource = UiStateSource> {\n readonly #parent = inject(UiState, { skipSelf: true, optional: true })\n\n get root(): UiState {\n return this.#parent?.root || this\n }\n\n readonly #self = signal<UiStateDetails>({})\n\n readonly merged = computed<UiStateDetails>(() => {\n const parent = this.#parent?.merged()\n const self = this.#self()\n if (parent) {\n const result: Mutable<UiStateDetails> = deepClone(self)\n\n for (const [k, v] of Object.entries(parent)) {\n const parentIsTrue = Object.values(v).includes(true)\n const { self: _, ...parentWihtoutSelf } = v\n if (result[k] != null) {\n result[k] = {\n ...parentWihtoutSelf,\n ...result[k],\n parent: parentIsTrue\n }\n } else {\n result[k] = { ...parentWihtoutSelf, parent: parentIsTrue }\n }\n }\n\n return result\n } else {\n return self\n }\n })\n\n readonly value = computed<UiStateValue>(() => {\n const merged = this.merged()\n const result: Mutable<UiStateValue> = {}\n\n for (const [k, v] of Object.entries(merged)) {\n result[k] = Object.values(v).includes(true)\n }\n\n return result\n })\n\n readonly inertSelector = signal(\"busy || disabled\")\n\n set(name: N, value: boolean, source: S = \"self\" as S) {\n if (source === \"parent\") {\n console.error(\"can't set parent state\")\n return\n }\n\n const current = untracked(this.#self)\n const entry = current[name] || {}\n\n if (entry[source] !== value) {\n this.#self.set({ ...current, [name]: { ...entry, [source]: value } })\n }\n\n // TODO: maybe some option to propagate to root\n // const root = this.root\n // if (source !== \"self\" && root !== this) {\n // root.set(name, value, source)\n // }\n }\n\n is(selector: UiStateSelector = \"*\"): boolean {\n return compileSelector(selector)(this.merged())\n }\n\n intercept(name: N, source: S) {\n return <S>(src: Observable<S>) => this.wrap(src, name, source)\n }\n\n wrap<T>(observable: Observable<T>, name: N, source: S): Observable<T> {\n return new Observable<T>(subscriber => {\n this.set(name, true, source)\n subscriber.add(() => this.set(name, false, source))\n return observable.subscribe(subscriber)\n })\n }\n\n isInert() {\n return this.is(this.inertSelector())\n }\n}\n","import { computed, Directive, effect, inject, Signal } from \"@angular/core\"\n\nimport { Observable } from \"rxjs\"\n\nimport { coerceBoolAttr } from \"@ngutil/common\"\n\nimport { UiState } from \"./ui-state\"\n\nexport const NOTSET: any = Symbol(\"NOTSET\")\n\n@Directive()\nexport abstract class AbstractUiState<N extends string> {\n readonly state: UiState<N> = inject(UiState)\n\n abstract readonly input: Signal<boolean>\n abstract readonly when: Signal<string>\n\n readonly yes = computed(() => {\n const when = this.when()\n if (when !== NOTSET) {\n // TODO: add prefix if only provide loading, or simething simple selector\n return this.state.is(`${this.name}.self || (${when})`)\n }\n return this.state.is(this.name)\n })\n readonly no = computed(() => !this.yes())\n\n constructor(readonly name: N) {\n effect(\n () => {\n const input = this.input()\n if (input !== NOTSET) {\n this.state.set(name, !!coerceBoolAttr(input))\n }\n },\n { allowSignalWrites: true }\n )\n }\n\n set(value: boolean, source: string) {\n this.state.set(this.name, value, source)\n }\n\n intercept(source: string) {\n return this.state.intercept(this.name, source)\n }\n\n wrap<T>(observable: Observable<T>, source: string): Observable<T> {\n return this.state.wrap(observable, this.name, source)\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuBusy], [nuBusyWhen]\",\n exportAs: \"busy\",\n standalone: true,\n host: {\n \"[attr.aria-busy]\": \"yes() ? 'true' : 'false'\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class BusyDirective extends AbstractUiState<\"busy\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuBusy\" })\n readonly when = input(NOTSET as string, { alias: \"nuBusyWhen\" })\n\n constructor() {\n super(\"busy\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuDisabled], [nuDisabledWhen]\",\n exportAs: \"disabled\",\n standalone: true,\n host: {\n \"[attr.aria-disabled]\": \"yes() ? 'true' : 'false'\",\n \"[attr.disabled]\": \"yes() ? '' : null\",\n \"[attr.inert]\": \"state.isInert() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class DisabledDirective extends AbstractUiState<\"disabled\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuDisabled\" })\n readonly when = input(NOTSET as string, { alias: \"nuDisabledWhen\" })\n\n constructor() {\n super(\"disabled\")\n }\n}\n","import { Directive, input } from \"@angular/core\"\n\nimport { AbstractUiState, NOTSET } from \"./abstract\"\nimport { UiState } from \"./ui-state\"\n\n@Directive({\n selector: \"[nuReadonly], [nuReadonlyWhen]\",\n exportAs: \"readonly\",\n standalone: true,\n host: {\n \"[attr.aria-readonly]\": \"yes() ? 'true' : 'false'\",\n \"[attr.readonly]\": \"yes() ? '' : null\"\n },\n providers: [UiState]\n})\nexport class ReadonlyDirective extends AbstractUiState<\"readonly\"> {\n readonly input = input(NOTSET as boolean, { alias: \"nuReadonly\" })\n readonly when = input(NOTSET as string, { alias: \"nuReadonlyWhen\" })\n\n constructor() {\n super(\"readonly\")\n }\n}\n","import { Directive } from \"@angular/core\"\nimport { toSignal } from \"@angular/core/rxjs-interop\"\n\nimport { animationFrames, map, Observable, of, scan, shareReplay, startWith, Subject, switchMap, takeWhile } from \"rxjs\"\n\nimport { clamp } from \"lodash-es\"\nimport { Mutable } from \"utility-types\"\n\nimport { DeepReadonly } from \"@ngutil/common\"\n\nexport interface ProgressCommon {\n readonly message?: string\n readonly [other: string]: unknown\n}\n\nexport interface ProgressLax {\n readonly type: \"lax\"\n readonly predictedTime: number\n // readonly updateInterval: number\n}\n\nexport interface ProgressFix {\n readonly type: \"fix\"\n readonly percent: number\n}\n\nexport type Progress = (ProgressLax | ProgressFix) & ProgressCommon\n\nexport interface ProgressSegmentInput {\n readonly name: string\n readonly distribution?: number\n readonly progress: DeepReadonly<Progress>\n}\n\nexport interface ProgressSegement extends ProgressSegmentInput {\n ratio: number\n share: number\n done: boolean\n laxBegin?: number\n}\n\nexport type ProgressSegements = { [key: string]: ProgressSegement }\n\nconst SEGMENT_REGISTER: Progress = { type: \"fix\", percent: 0 }\nconst SEGMENT_COMPLETE: Progress = { type: \"fix\", percent: 1 }\n\n@Directive()\nexport class ProgressState {\n readonly #segments: { [key: string]: ProgressSegmentRef } = {}\n\n readonly #input = new Subject<ProgressSegmentInput>()\n\n readonly #state: Observable<ProgressSegements> = this.#input.pipe(\n startWith(null),\n scan((state, input) => {\n if (Object.keys(state).length === 0) {\n state = this.#initialState()\n }\n\n if (input == null) {\n return state\n }\n\n let current = state[input.name] ?? { ratio: 0, share: 0, done: false }\n current = { ...current, ...input }\n\n if (input.progress.type === \"lax\") {\n delete current.laxBegin\n current.done = false\n }\n\n if (input.progress.type === \"fix\" && input.progress.percent < 1) {\n current.done = false\n }\n\n return { ...state, [input.name]: { ...current, ...input } }\n }, {} as ProgressSegements),\n switchMap(state => {\n const slist = Object.values(state) as Array<Mutable<ProgressSegement>>\n const min = slist.reduce((min, current) => Math.min(min, current.distribution || 0), Infinity) || 1\n const totalDistribution = slist.reduce((total, current) => total + (current.distribution || min), 0)\n const hasLax = slist.some(segment => segment.progress.type === \"lax\")\n const trigger = hasLax ? animationFrames() : of({ timestamp: performance.now() })\n\n return trigger.pipe(\n map(({ timestamp }) => {\n for (const segment of slist) {\n if (segment.distribution == null) {\n segment.distribution = min\n }\n segment.ratio = segment.distribution / totalDistribution + 0.0001\n\n let percent: number\n\n if (segment.progress.type === \"lax\") {\n if (segment.laxBegin == null) {\n segment.laxBegin = timestamp\n }\n\n percent = (timestamp - segment.laxBegin) / segment.progress.predictedTime\n if (percent >= 0.8) {\n const final = (timestamp - segment.laxBegin) / (segment.progress.predictedTime * 50)\n percent = 0.8 + Math.log1p(final)\n }\n } else {\n delete segment.laxBegin\n percent = clamp(segment.progress.percent, 0, 1)\n }\n\n segment.share = percent * segment.ratio\n segment.done = percent >= 1\n }\n\n return state\n }),\n takeWhile(state => Object.values(state).some(segment => !segment.done), true)\n )\n }),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly value$: Observable<DeepReadonly<ProgressSegements>> = this.#state\n readonly value = toSignal(this.value$)\n\n readonly percent$: Observable<number> = this.value$.pipe(\n map(value =>\n value != null\n ? clamp(\n Object.values(value).reduce((a, b) => a + b.share, 0),\n 0,\n 1\n )\n : 0\n ),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n\n readonly percent = toSignal(this.percent$)\n\n segment(name: string, distribution: number = 1): ProgressSegmentRef {\n const segment =\n this.#segments[name] ?? (this.#segments[name] = new ProgressSegmentRef(this.#input, name, distribution))\n segment.next(SEGMENT_REGISTER)\n return segment\n }\n\n connect(state: ProgressState, name: string, distribution?: number): Observable<void> {\n return new Observable(() => {\n const segment = this.segment(name, distribution)\n return state.percent$.subscribe(percent => {\n segment.next({ type: \"fix\", percent })\n })\n })\n }\n\n #initialState() {\n return Object.values(this.#segments).reduce((res, segment) => {\n if (segment.value) {\n res[segment.name] = {\n name: segment.name,\n distribution: segment.distribution,\n progress: segment.value,\n ratio: 0,\n share: 0,\n done: false\n }\n }\n return res\n }, {} as ProgressSegements)\n }\n}\n\nexport class ProgressSegmentRef {\n readonly #subject: Subject<ProgressSegmentInput>\n\n set distribution(value: number | undefined) {\n if (this.#distribution !== value) {\n this.#distribution = value\n if (this.#value != null) {\n this.#next(this.#value)\n }\n }\n }\n\n get distribution() {\n return this.#distribution\n }\n #distribution?: number\n\n get value() {\n return this.#value\n }\n #value?: Progress\n\n constructor(\n subject: Subject<ProgressSegmentInput>,\n public readonly name: string,\n distribution?: number\n ) {\n this.#subject = subject\n this.#distribution = distribution\n }\n\n next(progress: Progress) {\n return this.#next(progress)\n }\n\n complete() {\n return this.#next(SEGMENT_COMPLETE)\n }\n\n #next(progress: Progress) {\n this.#value = progress\n this.#subject.next({ name: this.name, distribution: this.distribution, progress })\n return this\n }\n}\n","import { NgModule } from \"@angular/core\"\n\nimport { BusyDirective } from \"./busy.directive\"\nimport { DisabledDirective } from \"./disabled.directive\"\nimport { ReadonlyDirective } from \"./readonly.directive\"\n\nexport * from \"./abstract\"\nexport * from \"./busy.directive\"\nexport * from \"./disabled.directive\"\nexport * from \"./progress-state\"\nexport * from \"./readonly.directive\"\nexport * from \"./ui-state\"\n\nconst entries = [BusyDirective, DisabledDirective, ReadonlyDirective]\n\n@NgModule({\n imports: entries,\n exports: entries\n})\nexport class UiStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EVENT_OPTIONS","_a","i1.FocusState","compileSelector"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngutil/aria",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.70",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/cdk": "18.2.6",
|
|
6
6
|
"@angular/common": "18.2.6",
|
|
7
7
|
"@angular/core": "18.2.6",
|
|
8
|
+
"lodash-es": "^4.17.21",
|
|
8
9
|
"rxjs": "^7.8.1",
|
|
9
10
|
"tabbable": "^6.2.0",
|
|
10
11
|
"utility-types": "^3.11.0",
|
|
11
|
-
"@ngutil/
|
|
12
|
-
"@ngutil/
|
|
12
|
+
"@ngutil/common": "0.0.70",
|
|
13
|
+
"@ngutil/style": "0.0.70"
|
|
13
14
|
},
|
|
14
15
|
"publishConfig": {
|
|
15
16
|
"access": "public",
|