@ngutil/common 0.0.38 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/form/index.mjs +2 -0
- package/esm2022/form/observable.mjs +30 -0
- package/esm2022/index.mjs +3 -2
- package/esm2022/state-chain.mjs +4 -1
- package/esm2022/util.mjs +28 -1
- package/fesm2022/ngutil-common.mjs +109 -53
- package/fesm2022/ngutil-common.mjs.map +1 -1
- package/form/index.d.ts +1 -0
- package/form/observable.d.ts +17 -0
- package/index.d.ts +2 -1
- package/package.json +1 -1
- package/util.d.ts +2 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from "./observable";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2Zvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9vYnNlcnZhYmxlXCJcbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
2
|
+
import { debounceTime, distinctUntilChanged, map, shareReplay, startWith } from "rxjs";
|
|
3
|
+
import { isEqual } from "lodash";
|
|
4
|
+
import { isFalsy } from "../util";
|
|
5
|
+
export const DEFAULT = { distinct: true, destruct: true };
|
|
6
|
+
export const VALUE_DEFAULT = { ...DEFAULT, falsyToNull: true };
|
|
7
|
+
export function fcObservableValue(fc, opts = VALUE_DEFAULT) {
|
|
8
|
+
let result = fc.valueChanges.pipe(startWith(null), map(() => fc.value));
|
|
9
|
+
if (opts.debounce) {
|
|
10
|
+
result = result.pipe(debounceTime(opts.debounce));
|
|
11
|
+
}
|
|
12
|
+
if (opts.falsyToNull) {
|
|
13
|
+
result = result.pipe(map(v => (isFalsy(v) ? null : v)));
|
|
14
|
+
}
|
|
15
|
+
return handleCommonOptions(result, opts);
|
|
16
|
+
}
|
|
17
|
+
export function fcObservableProperty(fc, property, opts = DEFAULT) {
|
|
18
|
+
const result = fc.statusChanges.pipe(startWith(null), map(() => fc[property]));
|
|
19
|
+
return handleCommonOptions(result, opts);
|
|
20
|
+
}
|
|
21
|
+
function handleCommonOptions(o, opts) {
|
|
22
|
+
if (opts.distinct) {
|
|
23
|
+
o = o.pipe(distinctUntilChanged(isEqual));
|
|
24
|
+
}
|
|
25
|
+
if (opts.destruct) {
|
|
26
|
+
o = o.pipe(takeUntilDestroyed());
|
|
27
|
+
}
|
|
28
|
+
return o.pipe(shareReplay(1));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvZm9ybS9vYnNlcnZhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBd0JqQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQXNCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDNUUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUV0RixNQUFNLFVBQVUsaUJBQWlCLENBQzdCLEVBQWtCLEVBQ2xCLE9BQVUsYUFBb0I7SUFFOUIsSUFBSSxNQUFNLEdBQW9CLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDdEIsQ0FBQTtJQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQVEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxFQUFrQixFQUNsQixRQUFXLEVBQ1gsT0FBMEIsT0FBTztJQUVqQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDaEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDMUIsQ0FBQTtJQUVELE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFJLENBQWdCLEVBQUUsSUFBdUI7SUFDckUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiXG5cbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBpc0ZhbHN5IH0gZnJvbSBcIi4uL3V0aWxcIlxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFibGVPcHRpb25zIHtcbiAgICBkaXN0aW5jdD86IGJvb2xlYW5cbiAgICBkZXN0cnVjdD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYnNlcnZhYmxlVmFsdWVPcHRpb25zIGV4dGVuZHMgT2JzZXJ2YWJsZU9wdGlvbnMge1xuICAgIGRlYm91bmNlPzogbnVtYmVyXG4gICAgZmFsc3lUb051bGw/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZvcm1Db250cm9sUHJvcGVydGllcyA9XG4gICAgfCBcInZhbGlkXCJcbiAgICB8IFwiaW52YWxpZFwiXG4gICAgfCBcInN0YXR1c1wiXG4gICAgfCBcInByaXN0aW5lXCJcbiAgICB8IFwiZGlydHlcIlxuICAgIHwgXCJ0b3VjaGVkXCJcbiAgICB8IFwidW50b3VjaGVkXCJcbiAgICB8IFwiZGlzYWJsZWRcIlxuICAgIHwgXCJlbmFibGVkXCJcbiAgICB8IFwiZXJyb3JzXCJcblxuZXhwb3J0IGNvbnN0IERFRkFVTFQ6IE9ic2VydmFibGVPcHRpb25zID0geyBkaXN0aW5jdDogdHJ1ZSwgZGVzdHJ1Y3Q6IHRydWUgfVxuZXhwb3J0IGNvbnN0IFZBTFVFX0RFRkFVTFQ6IE9ic2VydmFibGVWYWx1ZU9wdGlvbnMgPSB7IC4uLkRFRkFVTFQsIGZhbHN5VG9OdWxsOiB0cnVlIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZjT2JzZXJ2YWJsZVZhbHVlPFQsIE8gZXh0ZW5kcyBPYnNlcnZhYmxlVmFsdWVPcHRpb25zPihcbiAgICBmYzogRm9ybUNvbnRyb2w8VD4sXG4gICAgb3B0czogTyA9IFZBTFVFX0RFRkFVTFQgYXMgYW55XG4pOiBPYnNlcnZhYmxlPE8gZXh0ZW5kcyB7IGZhbHN5VG9OdWxsOiB0cnVlIH0gPyBUIHwgbnVsbCA6IFQ+IHtcbiAgICBsZXQgcmVzdWx0OiBPYnNlcnZhYmxlPGFueT4gPSBmYy52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICBtYXAoKCkgPT4gZmMudmFsdWUpXG4gICAgKVxuXG4gICAgaWYgKG9wdHMuZGVib3VuY2UpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnBpcGUoZGVib3VuY2VUaW1lKG9wdHMuZGVib3VuY2UpKVxuICAgIH1cblxuICAgIGlmIChvcHRzLmZhbHN5VG9OdWxsKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5waXBlKG1hcCh2ID0+IChpc0ZhbHN5KHYpID8gbnVsbCA6IHYpKSlcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlQ29tbW9uT3B0aW9ucyhyZXN1bHQsIG9wdHMpIGFzIGFueVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmNPYnNlcnZhYmxlUHJvcGVydHk8VCwgUCBleHRlbmRzIEZvcm1Db250cm9sUHJvcGVydGllcz4oXG4gICAgZmM6IEZvcm1Db250cm9sPFQ+LFxuICAgIHByb3BlcnR5OiBQLFxuICAgIG9wdHM6IE9ic2VydmFibGVPcHRpb25zID0gREVGQVVMVFxuKTogT2JzZXJ2YWJsZTxGb3JtQ29udHJvbDxUPltQXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZjLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICBtYXAoKCkgPT4gZmNbcHJvcGVydHldKVxuICAgIClcblxuICAgIHJldHVybiBoYW5kbGVDb21tb25PcHRpb25zKHJlc3VsdCwgb3B0cylcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ29tbW9uT3B0aW9uczxUPihvOiBPYnNlcnZhYmxlPFQ+LCBvcHRzOiBPYnNlcnZhYmxlT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChvcHRzLmRpc3RpbmN0KSB7XG4gICAgICAgIG8gPSBvLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCkpXG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZGVzdHJ1Y3QpIHtcbiAgICAgICAgbyA9IG8ucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICB9XG5cbiAgICByZXR1cm4gby5waXBlKHNoYXJlUmVwbGF5KDEpKVxufVxuIl19
|
package/esm2022/index.mjs
CHANGED
|
@@ -3,10 +3,11 @@ export { DisabledState, Disabled } from "./disabled";
|
|
|
3
3
|
export { NumberWithUnit, UNIT_REGEX, NUMBER_REGEX } from "./number-with-unit";
|
|
4
4
|
export { coerceBoolAttr } from "./coerce/bool-attr";
|
|
5
5
|
export { coerceElement, isElementInput } from "./coerce/element";
|
|
6
|
+
export * from "./form";
|
|
6
7
|
export { StateChain } from "./state-chain";
|
|
7
8
|
export { rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, __zone_symbol__ } from "./unngzone";
|
|
8
9
|
export { FastDOM } from "./dom";
|
|
9
10
|
export { Busy, BusyTrackerState, BusyTracker } from "./busy";
|
|
10
11
|
export { isPrimitive } from "./types/primitive";
|
|
11
|
-
export { deepClone, deepFreeze, isPlainObject, toSorted } from "./util";
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export { deepClone, deepFreeze, isPlainObject, toSorted, isFalsy, isTruthy } from "./util";
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFlLE1BQU0sWUFBWSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQXVCLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRyxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLG9CQUFvQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQWdCLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlFLGNBQWMsUUFBUSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFBO0FBRTdELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLGFBQWEsRUFDYixlQUFlLEVBQ2xCLE1BQU0sWUFBWSxDQUFBO0FBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBNEMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBT3RHLE9BQU8sRUFBdUIsV0FBVyxFQUErQixNQUFNLG1CQUFtQixDQUFBO0FBRWpHLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbm5lY3RQcm90b2NvbCB9IGZyb20gXCIuL2Nvbm5lY3QtcHJvdG9jb2xcIlxuZXhwb3J0IHsgRGVzdHJ1Y3QsIERlc3RydWN0aWJsZSwgSURpc3Bvc2FibGUgfSBmcm9tIFwiLi9kZXN0cnVjdFwiXG5leHBvcnQgeyBEaXNhYmxlZFN0YXRlLCBEaXNhYmxlZCB9IGZyb20gXCIuL2Rpc2FibGVkXCJcbmV4cG9ydCB7IE51bWJlcldpdGhVbml0LCBOdW1iZXJXaXRoVW5pdElucHV0LCBVTklUX1JFR0VYLCBOVU1CRVJfUkVHRVggfSBmcm9tIFwiLi9udW1iZXItd2l0aC11bml0XCJcblxuZXhwb3J0IHsgY29lcmNlQm9vbEF0dHIsIEJvb2xlYW5JbnB1dCB9IGZyb20gXCIuL2NvZXJjZS9ib29sLWF0dHJcIlxuZXhwb3J0IHsgY29lcmNlRWxlbWVudCwgRWxlbWVudElucHV0LCBpc0VsZW1lbnRJbnB1dCB9IGZyb20gXCIuL2NvZXJjZS9lbGVtZW50XCJcblxuZXhwb3J0ICogZnJvbSBcIi4vZm9ybVwiXG5cbmV4cG9ydCB7IFN0YXRlQ2hhaW4sIFN0YXRlQ2hhaW5IYW5kbGVyIH0gZnJvbSBcIi4vc3RhdGUtY2hhaW5cIlxuXG5leHBvcnQge1xuICAgIHJhd0NhbmNlbEFuaW1hdGlvbkZyYW1lLFxuICAgIHJhd0NsZWFySW50ZXJ2YWwsXG4gICAgcmF3Q2xlYXJUaW1lb3V0LFxuICAgIHJhd1JlcXVlc3RBbmltYXRpb25GcmFtZSxcbiAgICByYXdTZXRJbnRlcnZhbCxcbiAgICByYXdTZXRUaW1lb3V0LFxuICAgIF9fem9uZV9zeW1ib2xfX1xufSBmcm9tIFwiLi91bm5nem9uZVwiXG5leHBvcnQgeyBGYXN0RE9NIH0gZnJvbSBcIi4vZG9tXCJcbmV4cG9ydCB7IEJ1c3ksIEJ1c3lFdmVudCwgQnVzeUV2ZW50UGFyYW1zLCBCdXN5UHJvZ3Jlc3MsIEJ1c3lUcmFja2VyU3RhdGUsIEJ1c3lUcmFja2VyIH0gZnJvbSBcIi4vYnVzeVwiXG5cbmV4cG9ydCB7IENvbmNhdCB9IGZyb20gXCIuL3R5cGVzL2NvbmNhdFwiXG5leHBvcnQgeyBFdmFsLCBJZkFueSwgSXNBbnksIElmVHVwbGUsIElzVHVwbGUsIFR1cGxlSXRlbXMsIE9iamVjdEtleSwgTWF4UmVjdXJzaW9uIH0gZnJvbSBcIi4vdHlwZXMvdXRpbFwiXG5leHBvcnQgeyBGbGF0dGVuLCBGbGF0dGVuS2V5cyB9IGZyb20gXCIuL3R5cGVzL2ZsYXR0ZW5cIlxuZXhwb3J0IHsgTWVyZ2VVbmlvbiB9IGZyb20gXCIuL3R5cGVzL21lcmdlLXVuaW9uXCJcbmV4cG9ydCB7IE51bWJlclJhbmdlIH0gZnJvbSBcIi4vdHlwZXMvbnVtYmVyLXJhbmdlXCJcbmV4cG9ydCB7IFByaW1pdGl2ZSwgQnVpbHRpbnMsIGlzUHJpbWl0aXZlLCBBc1ByaW1pdGl2ZSwgVG9QcmltaXRpdmVNYXAgfSBmcm9tIFwiLi90eXBlcy9wcmltaXRpdmVcIlxuZXhwb3J0IHsgRGVlcFJlYWRvbmx5LCBSZWFkb25seURhdGUgfSBmcm9tIFwiLi90eXBlcy9yZWFkb25seVwiXG5leHBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBGcmVlemUsIGlzUGxhaW5PYmplY3QsIHRvU29ydGVkLCBpc0ZhbHN5LCBpc1RydXRoeSB9IGZyb20gXCIuL3V0aWxcIlxuIl19
|
package/esm2022/state-chain.mjs
CHANGED
|
@@ -56,6 +56,9 @@ export class StateChain {
|
|
|
56
56
|
return concat(...states.map(state => this.#run(state).pipe(tap(s => s && executed.push(s))))).pipe(catchError(err => (err instanceof StopStateChain ? of(executed) : throwError(() => err))));
|
|
57
57
|
}
|
|
58
58
|
#run(state) {
|
|
59
|
+
if (this.#handlers == null) {
|
|
60
|
+
return of(null);
|
|
61
|
+
}
|
|
59
62
|
const options = this.states[state];
|
|
60
63
|
return new Observable(dst => {
|
|
61
64
|
if (this.#executed.includes(state)) {
|
|
@@ -117,4 +120,4 @@ export class StateChain {
|
|
|
117
120
|
this.#handlers = null;
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3N0YXRlLWNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsRUFFVixFQUFFLEVBQ0YsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEVBQ2IsTUFBTSxNQUFNLENBQUE7QUFJYixNQUFNLE9BQU8sY0FBZSxTQUFRLEtBQUs7Q0FBRztBQVc1QyxNQUFNLE9BQU8sVUFBVTtJQUVWLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQW1EO0lBRXJFLFFBQVEsQ0FBMEI7SUFHbEMsWUFBWSxNQUFTO1FBTlosY0FBUyxHQUFRLEVBQUUsQ0FBQTtRQUNuQixjQUFTLEdBQWlELEVBQUUsQ0FBQTtRQUVyRSxhQUFRLEdBQUcsSUFBSSxhQUFhLENBQUksQ0FBQyxDQUFDLENBQUE7UUFDekIsYUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUE7UUFHNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7UUFFM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQTtZQUM1QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxFQUFFLENBQUMsS0FBUSxFQUFFLEVBQXFCO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFF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Q0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDaEMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FBQTtZQUVMLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUMvQixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUM7eUJBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3RCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDdkIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDO3lCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUN0QixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3ZCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsT0FBTztRQUNILENBQUM7UUFBQyxJQUFZLENBQUMsU0FBUyxHQUFHLElBQVcsQ0FBQTtJQUMxQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgY29uY2F0LFxuICAgIGZvcmtKb2luLFxuICAgIGZyb20sXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgT2JzZXJ2YWJsZUlucHV0LFxuICAgIG9mLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgdGFwLFxuICAgIHRocm93RXJyb3Jcbn0gZnJvbSBcInJ4anNcIlxuXG5leHBvcnQgdHlwZSBTdGF0ZUNoYWluSGFuZGxlciA9ICgpID0+IE9ic2VydmFibGVJbnB1dDx1bmtub3duPiB8IG51bGwgfCB1bmRlZmluZWQgfCB2b2lkXG5cbmV4cG9ydCBjbGFzcyBTdG9wU3RhdGVDaGFpbiBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCB0eXBlIFN0YXRlT3B0aW9ucyA9IFJlY29yZDxzdHJpbmcsIHsgb3JkZXI/OiBcInBhcmFsbGVsXCIgfCBcInNlcXVlbnRpYWxcIjsgY2FuY2VsbGFibGU/OiBib29sZWFuIH0+XG5cbmV4cG9ydCB0eXBlIFN0YXRlUmVtYXA8QSwgQj4gPVxuICAgIEEgZXh0ZW5kcyBTdGF0ZUNoYWluPGluZmVyIEFPLCBpbmZlciBBUz5cbiAgICAgICAgPyBCIGV4dGVuZHMgU3RhdGVDaGFpbjxpbmZlciBCTywgaW5mZXIgQlM+XG4gICAgICAgICAgICA/IFBhcnRpYWw8eyBbSyBpbiBBU106IEJTIH0+XG4gICAgICAgICAgICA6IG5ldmVyXG4gICAgICAgIDogbmV2ZXJcblxuZXhwb3J0IGNsYXNzIFN0YXRlQ2hhaW48VCBleHRlbmRzIFN0YXRlT3B0aW9ucywgUyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCA9IGtleW9mIFQ+IHtcbiAgICByZWFkb25seSBzdGF0ZXM6IFRcbiAgICByZWFkb25seSAjZXhlY3V0ZWQ6IFNbXSA9IFtdXG4gICAgcmVhZG9ubHkgI2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxTLCBBcnJheTxTdGF0ZUNoYWluSGFuZGxlcj4+PiA9IHt9XG5cbiAgICAjY3VycmVudCA9IG5ldyBSZXBsYXlTdWJqZWN0PFM+KDEpXG4gICAgcmVhZG9ubHkgY3VycmVudCQgPSB0aGlzLiNjdXJyZW50LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICBjb25zdHJ1Y3RvcihzdGF0ZXM6IFQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB7IC4uLnN0YXRlcyB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKHN0YXRlcykpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcmRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUub3JkZXIgPSBcInBhcmFsbGVsXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uKHN0YXRlOiBTLCBmbjogU3RhdGVDaGFpbkhhbmRsZXIpIHtcbiAgICAgICAgaWYgKHN0YXRlIGluIHRoaXMuI2hhbmRsZXJzKSB7XG4gICAgICAgICAgICB0aGlzLiNoYW5kbGVyc1tzdGF0ZV0hLnB1c2goZm4pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNoYW5kbGVyc1tzdGF0ZV0gPSBbZm5dXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy4jaGFuZGxlcnNbc3RhdGVdIS5pbmRleE9mKGZuKVxuICAgICAgICAgICAgaWYgKGlkeCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jaGFuZGxlcnNbc3RhdGVdIS5zcGxpY2UoaWR4LCAxKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVuIHRoaXMgc3RhdGUgY2hhbmdlcyBvbiBvdGhlciBzdGF0ZVxuICAgICAqL1xuICAgIGNvbnRyb2w8VCBleHRlbmRzIFN0YXRlQ2hhaW48YW55LCBhbnk+PihzdGF0ZTogVCwgcmVtYXA/OiBTdGF0ZVJlbWFwPHRoaXMsIFQ+KSB7XG4gICAgICAgIGNvbnN0IHJlbW92ZTogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IHNlbGZTdGF0ZSBvZiBPYmplY3Qua2V5cyh0aGlzLnN0YXRlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IG90aGVyU3RhdGUgPSAocmVtYXAgYXMgdW5rbm93biBhcyBhbnkpPy5bc2VsZlN0YXRlXSB8fCBzZWxmU3RhdGVcbiAgICAgICAgICAgIGlmIChvdGhlclN0YXRlIGluIHN0YXRlLnN0YXRlcykge1xuICAgICAgICAgICAgICAgIHJlbW92ZS5wdXNoKHRoaXMub24oc2VsZlN0YXRlIGFzIGFueSwgKCkgPT4gc3RhdGUucnVuKFtvdGhlclN0YXRlXSkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm4gb2YgcmVtb3ZlKSB7XG4gICAgICAgICAgICAgICAgZm4oKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVuKHN0YXRlczogU1tdKSB7XG4gICAgICAgIGlmIChzdGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHN0YXRlc1wiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhlY3V0ZWQ6IFNbXSA9IFtdXG4gICAgICAgIHJldHVybiBjb25jYXQoLi4uc3RhdGVzLm1hcChzdGF0ZSA9PiB0aGlzLiNydW4oc3RhdGUpLnBpcGUodGFwKHMgPT4gcyAmJiBleGVjdXRlZC5wdXNoKHMpKSkpKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gKGVyciBpbnN0YW5jZW9mIFN0b3BTdGF0ZUNoYWluID8gb2YoZXhlY3V0ZWQpIDogdGhyb3dFcnJvcigoKSA9PiBlcnIpKSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgICNydW4oc3RhdGU6IFMpOiBPYnNlcnZhYmxlPFMgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnN0YXRlc1tzdGF0ZSBhcyBhbnldXG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGRzdCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jZXhlY3V0ZWQuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgZHN0Lm5leHQoc3RhdGUpXG4gICAgICAgICAgICAgICAgZHN0LmNvbXBsZXRlKClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2V4ZWN1dGVkLnB1c2goc3RhdGUpXG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50Lm5leHQoc3RhdGUpXG5cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy4jaGFuZGxlcnNbc3RhdGVdXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMgPT0gbnVsbCB8fCBoYW5kbGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBkc3QubmV4dChzdGF0ZSlcbiAgICAgICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IGhhbmRsZXJzXG4gICAgICAgICAgICAgICAgLm1hcChoYW5kbGVyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlcigpXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoaGFuZGxlciA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFN0b3BTdGF0ZUNoYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuI2V4ZWN1dGVkLmluZGV4T2Yoc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZXhlY3V0ZWQuc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuZXJyb3IoZXJyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKG9ic2VydmFibGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlc1swXS5waXBlKG1hcCgoKSA9PiBzdGF0ZSkpLnN1YnNjcmliZShkc3QpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9yZGVyID09PSBcInBhcmFsbGVsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKG9ic2VydmFibGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCgpID0+IHN0YXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZHN0KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25jYXQoLi4ub2JzZXJ2YWJsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoKCkgPT4gc3RhdGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShkc3QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIDsodGhpcyBhcyBhbnkpLiNoYW5kbGVycyA9IG51bGwgYXMgYW55XG4gICAgfVxufVxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3N0YXRlLWNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsRUFFVixFQUFFLEVBQ0YsYUFBYSxFQUNiLEdBQUcsRUFDSCxVQUFVLEVBQ2IsTUFBTSxNQUFNLENBQUE7QUFJYixNQUFNLE9BQU8sY0FBZSxTQUFRLEtBQUs7Q0FBRztBQVc1QyxNQUFNLE9BQU8sVUFBVTtJQUVWLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQW1EO0lBRXJFLFFBQVEsQ0FBMEI7SUFHbEMsWUFBWSxNQUFTO1FBTlosY0FBUyxHQUFRLEVBQUUsQ0FBQTtRQUNuQixjQUFTLEdBQWlELEVBQUUsQ0FBQTtRQUVyRSxhQUFRLEdBQUcsSUFBSSxhQUFhLENBQUksQ0FBQyxDQUFDLENBQUE7UUFDekIsYUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUE7UUFHNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUE7UUFFM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQTtZQUM1QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxFQUFFLENBQUMsS0FBUSxFQUFFLEVBQXFCO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBQyxFQUFF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QyxRQUFRLEVBQUUsQ0FBQTtvQkFDZCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDbkIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFBO1lBRUwsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQy9CLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQzt5QkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDdEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN2QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUM7eUJBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3RCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDdkIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxPQUFPO1FBQ0gsQ0FBQztRQUFDLElBQVksQ0FBQyxTQUFTLEdBQUcsSUFBVyxDQUFBO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBjb25jYXQsXG4gICAgZm9ya0pvaW4sXG4gICAgZnJvbSxcbiAgICBtYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBPYnNlcnZhYmxlSW5wdXQsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICB0YXAsXG4gICAgdGhyb3dFcnJvclxufSBmcm9tIFwicnhqc1wiXG5cbmV4cG9ydCB0eXBlIFN0YXRlQ2hhaW5IYW5kbGVyID0gKCkgPT4gT2JzZXJ2YWJsZUlucHV0PHVua25vd24+IHwgbnVsbCB8IHVuZGVmaW5lZCB8IHZvaWRcblxuZXhwb3J0IGNsYXNzIFN0b3BTdGF0ZUNoYWluIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IHR5cGUgU3RhdGVPcHRpb25zID0gUmVjb3JkPHN0cmluZywgeyBvcmRlcj86IFwicGFyYWxsZWxcIiB8IFwic2VxdWVudGlhbFwiOyBjYW5jZWxsYWJsZT86IGJvb2xlYW4gfT5cblxuZXhwb3J0IHR5cGUgU3RhdGVSZW1hcDxBLCBCPiA9XG4gICAgQSBleHRlbmRzIFN0YXRlQ2hhaW48aW5mZXIgQU8sIGluZmVyIEFTPlxuICAgICAgICA/IEIgZXh0ZW5kcyBTdGF0ZUNoYWluPGluZmVyIEJPLCBpbmZlciBCUz5cbiAgICAgICAgICAgID8gUGFydGlhbDx7IFtLIGluIEFTXTogQlMgfT5cbiAgICAgICAgICAgIDogbmV2ZXJcbiAgICAgICAgOiBuZXZlclxuXG5leHBvcnQgY2xhc3MgU3RhdGVDaGFpbjxUIGV4dGVuZHMgU3RhdGVPcHRpb25zLCBTIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sID0ga2V5b2YgVD4ge1xuICAgIHJlYWRvbmx5IHN0YXRlczogVFxuICAgIHJlYWRvbmx5ICNleGVjdXRlZDogU1tdID0gW11cbiAgICByZWFkb25seSAjaGFuZGxlcnM6IFBhcnRpYWw8UmVjb3JkPFMsIEFycmF5PFN0YXRlQ2hhaW5IYW5kbGVyPj4+ID0ge31cblxuICAgICNjdXJyZW50ID0gbmV3IFJlcGxheVN1YmplY3Q8Uz4oMSlcbiAgICByZWFkb25seSBjdXJyZW50JCA9IHRoaXMuI2N1cnJlbnQuYXNPYnNlcnZhYmxlKClcblxuICAgIGNvbnN0cnVjdG9yKHN0YXRlczogVCkge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IHsgLi4uc3RhdGVzIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoc3RhdGVzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlLm9yZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5vcmRlciA9IFwicGFyYWxsZWxcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb24oc3RhdGU6IFMsIGZuOiBTdGF0ZUNoYWluSGFuZGxlcikge1xuICAgICAgICBpZiAoc3RhdGUgaW4gdGhpcy4jaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIHRoaXMuI2hhbmRsZXJzW3N0YXRlXSEucHVzaChmbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI2hhbmRsZXJzW3N0YXRlXSA9IFtmbl1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLiNoYW5kbGVyc1tzdGF0ZV0hLmluZGV4T2YoZm4pXG4gICAgICAgICAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNoYW5kbGVyc1tzdGF0ZV0hLnNwbGljZShpZHgsIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGhpcyBzdGF0ZSBjaGFuZ2VzIG9uIG90aGVyIHN0YXRlXG4gICAgICovXG4gICAgY29udHJvbDxUIGV4dGVuZHMgU3RhdGVDaGFpbjxhbnksIGFueT4+KHN0YXRlOiBULCByZW1hcD86IFN0YXRlUmVtYXA8dGhpcywgVD4pIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgc2VsZlN0YXRlIG9mIE9iamVjdC5rZXlzKHRoaXMuc3RhdGVzKSkge1xuICAgICAgICAgICAgY29uc3Qgb3RoZXJTdGF0ZSA9IChyZW1hcCBhcyB1bmtub3duIGFzIGFueSk/LltzZWxmU3RhdGVdIHx8IHNlbGZTdGF0ZVxuICAgICAgICAgICAgaWYgKG90aGVyU3RhdGUgaW4gc3RhdGUuc3RhdGVzKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlLnB1c2godGhpcy5vbihzZWxmU3RhdGUgYXMgYW55LCAoKSA9PiBzdGF0ZS5ydW4oW290aGVyU3RhdGVdKSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmbiBvZiByZW1vdmUpIHtcbiAgICAgICAgICAgICAgICBmbigpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBydW4oc3RhdGVzOiBTW10pIHtcbiAgICAgICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3Npbmcgc3RhdGVzXCIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleGVjdXRlZDogU1tdID0gW11cbiAgICAgICAgcmV0dXJuIGNvbmNhdCguLi5zdGF0ZXMubWFwKHN0YXRlID0+IHRoaXMuI3J1bihzdGF0ZSkucGlwZSh0YXAocyA9PiBzICYmIGV4ZWN1dGVkLnB1c2gocykpKSkpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiAoZXJyIGluc3RhbmNlb2YgU3RvcFN0YXRlQ2hhaW4gPyBvZihleGVjdXRlZCkgOiB0aHJvd0Vycm9yKCgpID0+IGVycikpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgI3J1bihzdGF0ZTogUyk6IE9ic2VydmFibGU8UyB8IG51bGw+IHtcbiAgICAgICAgaWYgKHRoaXMuI2hhbmRsZXJzID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnN0YXRlc1tzdGF0ZSBhcyBhbnldXG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGRzdCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jZXhlY3V0ZWQuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgZHN0Lm5leHQoc3RhdGUpXG4gICAgICAgICAgICAgICAgZHN0LmNvbXBsZXRlKClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2V4ZWN1dGVkLnB1c2goc3RhdGUpXG4gICAgICAgICAgICB0aGlzLiNjdXJyZW50Lm5leHQoc3RhdGUpXG5cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy4jaGFuZGxlcnNbc3RhdGVdXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMgPT0gbnVsbCB8fCBoYW5kbGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBkc3QubmV4dChzdGF0ZSlcbiAgICAgICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IGhhbmRsZXJzXG4gICAgICAgICAgICAgICAgLm1hcChoYW5kbGVyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlcigpXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoaGFuZGxlciA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFN0b3BTdGF0ZUNoYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuI2V4ZWN1dGVkLmluZGV4T2Yoc3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZXhlY3V0ZWQuc3BsaWNlKGlkeCwgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuZXJyb3IoZXJyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuY29tcGxldGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKG9ic2VydmFibGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlc1swXS5waXBlKG1hcCgoKSA9PiBzdGF0ZSkpLnN1YnNjcmliZShkc3QpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm9yZGVyID09PSBcInBhcmFsbGVsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKG9ic2VydmFibGVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCgpID0+IHN0YXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZHN0KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25jYXQoLi4ub2JzZXJ2YWJsZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoKCkgPT4gc3RhdGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShkc3QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIDsodGhpcyBhcyBhbnkpLiNoYW5kbGVycyA9IG51bGwgYXMgYW55XG4gICAgfVxufVxuIl19
|
package/esm2022/util.mjs
CHANGED
|
@@ -49,4 +49,31 @@ export function toSorted(items, fn) {
|
|
|
49
49
|
return items.slice(0).sort(fn);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
export function isFalsy(value) {
|
|
53
|
+
if (value == null) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
else if (Array.isArray(value)) {
|
|
57
|
+
return value.length === 0;
|
|
58
|
+
}
|
|
59
|
+
else if (isPlainObject(value)) {
|
|
60
|
+
return Object.keys(value).length === 0;
|
|
61
|
+
}
|
|
62
|
+
else if (value instanceof Set) {
|
|
63
|
+
return value.size === 0;
|
|
64
|
+
}
|
|
65
|
+
else if (value instanceof Map) {
|
|
66
|
+
return value.size === 0;
|
|
67
|
+
}
|
|
68
|
+
else if (typeof value === "string") {
|
|
69
|
+
return value.length === 0;
|
|
70
|
+
}
|
|
71
|
+
else if (typeof value === "number") {
|
|
72
|
+
return isNaN(value) || value === 0;
|
|
73
|
+
}
|
|
74
|
+
return value === false;
|
|
75
|
+
}
|
|
76
|
+
export function isTruthy(value) {
|
|
77
|
+
return !isFalsy(value);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxJQUFJLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFJbkUsd0JBQXdCO0FBRXhCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBcUIsT0FBTyxlQUFlLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUM5Ryx5RkFBeUY7QUFDekYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFnRCxjQUFxQixDQUFBO0FBRS9GLE1BQU0sVUFBVSxVQUFVLENBQUksR0FBTTtJQUNoQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNkLE9BQU8sR0FBVSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsS0FBSztZQUNMLEdBQUcsQ0FBQyxNQUFNO2dCQUNWLEdBQUcsQ0FBQyxHQUFHO29CQUNIO3dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtvQkFDdkMsQ0FBQyxDQUFBO0lBQ2IsQ0FBQztTQUFNLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxHQUFHO1lBQ0gsR0FBRyxDQUFDLEtBQUs7Z0JBQ1QsR0FBRyxDQUFDLE1BQU07b0JBQ047d0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO29CQUN2QyxDQUFDLENBQUE7SUFDYixDQUFDO0lBRUQsY0FBYztJQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFbEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksR0FBSSxHQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUE7UUFFeEIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEIsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxHQUFVLENBQUE7QUFDckIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBSSxLQUFtQixFQUFFLEVBQTBCO0lBQ3ZFLElBQUksT0FBUSxLQUFhLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2hELE9BQVEsS0FBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN0QyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbEMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQVU7SUFDOUIsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO1NBQU0sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtJQUMxQyxDQUFDO1NBQU0sSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQTtJQUMzQixDQUFDO1NBQU0sSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQTtJQUMzQixDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUNELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQTtBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFVO0lBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhaW5PYmplY3QgYXMgX2lzUGxhaW5PYmplY3QsIGNsb25lRGVlcCB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBEZWVwUmVhZG9ubHkgfSBmcm9tIFwiLi90eXBlcy9yZWFkb25seVwiXG5cbi8vIGV4cG9ydCB7IGRlZXBGcmVlemUgfVxuXG5leHBvcnQgY29uc3QgZGVlcENsb25lOiA8VD4ob2JqOiBUKSA9PiBUID0gdHlwZW9mIHN0cnVjdHVyZWRDbG9uZSA9PT0gXCJmdW5jdGlvblwiID8gc3RydWN0dXJlZENsb25lIDogY2xvbmVEZWVwXG4vLyBleHBvcnQgY29uc3QgZGVlcEZyZWV6ZTogPFQ+KG9iajogVCkgPT4gRGVlcFJlYWRvbmx5PFQ+ID0gbyA9PiBPYmplY3QuZnJlZXplKG8pIGFzIGFueVxuZXhwb3J0IGNvbnN0IGlzUGxhaW5PYmplY3Q6IChhcmc6IGFueSkgPT4gYXJnIGlzIHsgW2tleTogc3RyaW5nXTogYW55IH0gPSBfaXNQbGFpbk9iamVjdCBhcyBhbnlcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBGcmVlemU8VD4ob2JqOiBUKTogRGVlcFJlYWRvbmx5PFQ+IHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9iaiBhcyBhbnlcbiAgICB9XG5cbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIG9iai5jbGVhciA9XG4gICAgICAgICAgICBvYmouZGVsZXRlID1cbiAgICAgICAgICAgIG9iai5zZXQgPVxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibWFwIGlzIHJlYWQtb25seVwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBvYmouYWRkID1cbiAgICAgICAgICAgIG9iai5jbGVhciA9XG4gICAgICAgICAgICBvYmouZGVsZXRlID1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNldCBpcyByZWFkLW9ubHlcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRnJlZXplIHNlbGZcbiAgICBPYmplY3QuZnJlZXplKG9iailcblxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgY29uc3QgcHJvcCA9IChvYmogYXMgYW55KVtuYW1lXVxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIHByb3BcblxuICAgICAgICAvLyBGcmVlemUgcHJvcCBpZiBpdCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gYW5kIGFsc28gbm90IGFscmVhZHkgZnJvemVuXG4gICAgICAgIGlmICgodHlwZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlID09PSBcImZ1bmN0aW9uXCIpICYmICFPYmplY3QuaXNGcm96ZW4ocHJvcCkpIHtcbiAgICAgICAgICAgIGRlZXBGcmVlemUocHJvcClcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gb2JqIGFzIGFueVxufVxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdG9Tb3J0ZWQoW3tpZDogMX0sIHtpZDogMn0sIHtpZDogM31dLCBzb3J0QnkoW3tpZDogXCJkZXNjXCJ9XSkpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU29ydGVkPFQ+KGl0ZW1zOiByZWFkb25seSBUW10sIGZuOiAoYTogVCwgYjogVCkgPT4gbnVtYmVyKTogVFtdIHtcbiAgICBpZiAodHlwZW9mIChpdGVtcyBhcyBhbnkpLnRvU29ydGVkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIChpdGVtcyBhcyBhbnkpLnRvU29ydGVkKGZuKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5zbGljZSgwKS5zb3J0KGZuKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFsc3kodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubGVuZ3RoID09PSAwXG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMFxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNpemUgPT09IDBcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zaXplID09PSAwXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IDBcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID09PSBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUcnV0aHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNGYWxzeSh2YWx1ZSlcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Directive, inject, DestroyRef, computed, isSignal, Injectable, Inject, SkipSelf, Optional, input, signal, effect, ElementRef } from '@angular/core';
|
|
3
|
-
import { Subject, share, take, takeUntil, BehaviorSubject, scan, tap, map, shareReplay, Observable, finalize, isObservable, throwError, combineLatest, filter, switchMap, ReplaySubject, concat, catchError, of, from, forkJoin } from 'rxjs';
|
|
3
|
+
import { Subject, share, take, takeUntil, BehaviorSubject, scan, tap, map, shareReplay, Observable, finalize, isObservable, throwError, combineLatest, filter, switchMap, startWith, debounceTime, distinctUntilChanged, ReplaySubject, concat, catchError, of, from, forkJoin } from 'rxjs';
|
|
4
4
|
import { NgControl } from '@angular/forms';
|
|
5
5
|
import { toSignal, takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
6
6
|
import { isEqual, cloneDeep, isPlainObject as isPlainObject$1 } from 'lodash';
|
|
@@ -470,6 +470,110 @@ function isElementInput(value) {
|
|
|
470
470
|
return value instanceof Element || value instanceof ElementRef;
|
|
471
471
|
}
|
|
472
472
|
|
|
473
|
+
// export { deepFreeze }
|
|
474
|
+
const deepClone = typeof structuredClone === "function" ? structuredClone : cloneDeep;
|
|
475
|
+
// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any
|
|
476
|
+
const isPlainObject = isPlainObject$1;
|
|
477
|
+
function deepFreeze(obj) {
|
|
478
|
+
if (obj == null) {
|
|
479
|
+
return obj;
|
|
480
|
+
}
|
|
481
|
+
if (obj instanceof Map) {
|
|
482
|
+
obj.clear =
|
|
483
|
+
obj.delete =
|
|
484
|
+
obj.set =
|
|
485
|
+
function () {
|
|
486
|
+
throw new Error("map is read-only");
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
else if (obj instanceof Set) {
|
|
490
|
+
obj.add =
|
|
491
|
+
obj.clear =
|
|
492
|
+
obj.delete =
|
|
493
|
+
function () {
|
|
494
|
+
throw new Error("set is read-only");
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
// Freeze self
|
|
498
|
+
Object.freeze(obj);
|
|
499
|
+
Object.getOwnPropertyNames(obj).forEach(name => {
|
|
500
|
+
const prop = obj[name];
|
|
501
|
+
const type = typeof prop;
|
|
502
|
+
// Freeze prop if it is an object or function and also not already frozen
|
|
503
|
+
if ((type === "object" || type === "function") && !Object.isFrozen(prop)) {
|
|
504
|
+
deepFreeze(prop);
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
return obj;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* @example
|
|
511
|
+
* ```ts
|
|
512
|
+
* toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: "desc"}]))
|
|
513
|
+
* ```
|
|
514
|
+
*/
|
|
515
|
+
function toSorted(items, fn) {
|
|
516
|
+
if (typeof items.toSorted === "function") {
|
|
517
|
+
return items.toSorted(fn);
|
|
518
|
+
}
|
|
519
|
+
else {
|
|
520
|
+
return items.slice(0).sort(fn);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
function isFalsy(value) {
|
|
524
|
+
if (value == null) {
|
|
525
|
+
return true;
|
|
526
|
+
}
|
|
527
|
+
else if (Array.isArray(value)) {
|
|
528
|
+
return value.length === 0;
|
|
529
|
+
}
|
|
530
|
+
else if (isPlainObject(value)) {
|
|
531
|
+
return Object.keys(value).length === 0;
|
|
532
|
+
}
|
|
533
|
+
else if (value instanceof Set) {
|
|
534
|
+
return value.size === 0;
|
|
535
|
+
}
|
|
536
|
+
else if (value instanceof Map) {
|
|
537
|
+
return value.size === 0;
|
|
538
|
+
}
|
|
539
|
+
else if (typeof value === "string") {
|
|
540
|
+
return value.length === 0;
|
|
541
|
+
}
|
|
542
|
+
else if (typeof value === "number") {
|
|
543
|
+
return isNaN(value) || value === 0;
|
|
544
|
+
}
|
|
545
|
+
return value === false;
|
|
546
|
+
}
|
|
547
|
+
function isTruthy(value) {
|
|
548
|
+
return !isFalsy(value);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
const DEFAULT = { distinct: true, destruct: true };
|
|
552
|
+
const VALUE_DEFAULT = { ...DEFAULT, falsyToNull: true };
|
|
553
|
+
function fcObservableValue(fc, opts = VALUE_DEFAULT) {
|
|
554
|
+
let result = fc.valueChanges.pipe(startWith(null), map(() => fc.value));
|
|
555
|
+
if (opts.debounce) {
|
|
556
|
+
result = result.pipe(debounceTime(opts.debounce));
|
|
557
|
+
}
|
|
558
|
+
if (opts.falsyToNull) {
|
|
559
|
+
result = result.pipe(map(v => (isFalsy(v) ? null : v)));
|
|
560
|
+
}
|
|
561
|
+
return handleCommonOptions(result, opts);
|
|
562
|
+
}
|
|
563
|
+
function fcObservableProperty(fc, property, opts = DEFAULT) {
|
|
564
|
+
const result = fc.statusChanges.pipe(startWith(null), map(() => fc[property]));
|
|
565
|
+
return handleCommonOptions(result, opts);
|
|
566
|
+
}
|
|
567
|
+
function handleCommonOptions(o, opts) {
|
|
568
|
+
if (opts.distinct) {
|
|
569
|
+
o = o.pipe(distinctUntilChanged(isEqual));
|
|
570
|
+
}
|
|
571
|
+
if (opts.destruct) {
|
|
572
|
+
o = o.pipe(takeUntilDestroyed());
|
|
573
|
+
}
|
|
574
|
+
return o.pipe(shareReplay(1));
|
|
575
|
+
}
|
|
576
|
+
|
|
473
577
|
class StopStateChain extends Error {
|
|
474
578
|
}
|
|
475
579
|
class StateChain {
|
|
@@ -527,6 +631,9 @@ class StateChain {
|
|
|
527
631
|
return concat(...states.map(state => this.#run(state).pipe(tap(s => s && executed.push(s))))).pipe(catchError(err => (err instanceof StopStateChain ? of(executed) : throwError(() => err))));
|
|
528
632
|
}
|
|
529
633
|
#run(state) {
|
|
634
|
+
if (this.#handlers == null) {
|
|
635
|
+
return of(null);
|
|
636
|
+
}
|
|
530
637
|
const options = this.states[state];
|
|
531
638
|
return new Observable(dst => {
|
|
532
639
|
if (this.#executed.includes(state)) {
|
|
@@ -673,60 +780,9 @@ function runQ(items) {
|
|
|
673
780
|
}
|
|
674
781
|
const FastDOM = new _FastDOM();
|
|
675
782
|
|
|
676
|
-
// export { deepFreeze }
|
|
677
|
-
const deepClone = typeof structuredClone === "function" ? structuredClone : cloneDeep;
|
|
678
|
-
// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any
|
|
679
|
-
const isPlainObject = isPlainObject$1;
|
|
680
|
-
function deepFreeze(obj) {
|
|
681
|
-
if (obj == null) {
|
|
682
|
-
return obj;
|
|
683
|
-
}
|
|
684
|
-
if (obj instanceof Map) {
|
|
685
|
-
obj.clear =
|
|
686
|
-
obj.delete =
|
|
687
|
-
obj.set =
|
|
688
|
-
function () {
|
|
689
|
-
throw new Error("map is read-only");
|
|
690
|
-
};
|
|
691
|
-
}
|
|
692
|
-
else if (obj instanceof Set) {
|
|
693
|
-
obj.add =
|
|
694
|
-
obj.clear =
|
|
695
|
-
obj.delete =
|
|
696
|
-
function () {
|
|
697
|
-
throw new Error("set is read-only");
|
|
698
|
-
};
|
|
699
|
-
}
|
|
700
|
-
// Freeze self
|
|
701
|
-
Object.freeze(obj);
|
|
702
|
-
Object.getOwnPropertyNames(obj).forEach(name => {
|
|
703
|
-
const prop = obj[name];
|
|
704
|
-
const type = typeof prop;
|
|
705
|
-
// Freeze prop if it is an object or function and also not already frozen
|
|
706
|
-
if ((type === "object" || type === "function") && !Object.isFrozen(prop)) {
|
|
707
|
-
deepFreeze(prop);
|
|
708
|
-
}
|
|
709
|
-
});
|
|
710
|
-
return obj;
|
|
711
|
-
}
|
|
712
|
-
/**
|
|
713
|
-
* @example
|
|
714
|
-
* ```ts
|
|
715
|
-
* toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: "desc"}]))
|
|
716
|
-
* ```
|
|
717
|
-
*/
|
|
718
|
-
function toSorted(items, fn) {
|
|
719
|
-
if (typeof items.toSorted === "function") {
|
|
720
|
-
return items.toSorted(fn);
|
|
721
|
-
}
|
|
722
|
-
else {
|
|
723
|
-
return items.slice(0).sort(fn);
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
|
|
727
783
|
/**
|
|
728
784
|
* Generated bundle index. Do not edit.
|
|
729
785
|
*/
|
|
730
786
|
|
|
731
|
-
export { Busy, BusyTracker, BusyTrackerState, Destruct, Destructible, Disabled, DisabledState, FastDOM, NUMBER_REGEX, NumberWithUnit, StateChain, UNIT_REGEX, __zone_symbol__, coerceBoolAttr, coerceElement, deepClone, deepFreeze, isElementInput, isPlainObject, rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, toSorted };
|
|
787
|
+
export { Busy, BusyTracker, BusyTrackerState, DEFAULT, Destruct, Destructible, Disabled, DisabledState, FastDOM, NUMBER_REGEX, NumberWithUnit, StateChain, UNIT_REGEX, VALUE_DEFAULT, __zone_symbol__, coerceBoolAttr, coerceElement, deepClone, deepFreeze, fcObservableProperty, fcObservableValue, isElementInput, isFalsy, isPlainObject, isTruthy, rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, toSorted };
|
|
732
788
|
//# sourceMappingURL=ngutil-common.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngutil-common.mjs","sources":["../../../../packages/common/src/destruct.ts","../../../../packages/common/src/busy.ts","../../../../packages/common/src/disabled.ts","../../../../packages/common/src/number-with-unit.ts","../../../../packages/common/src/coerce/bool-attr.ts","../../../../packages/common/src/coerce/element.ts","../../../../packages/common/src/state-chain.ts","../../../../packages/common/src/unngzone.ts","../../../../packages/common/src/dom.ts","../../../../packages/common/src/util.ts","../../../../packages/common/src/ngutil-common.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\n\nimport { Observable, share, Subject, take, takeUntil } from \"rxjs\"\n\nexport interface IDisposable {\n dispose(): void\n}\n\nexport class Destruct {\n readonly #on = new Subject<void>()\n readonly on = this.#on.pipe(share())\n\n constructor(fn?: () => void) {\n if (fn != null) {\n this.any(fn)\n }\n }\n get done(): boolean {\n return this.#on.closed\n }\n\n sub<T>(o: Observable<T>): Observable<T> {\n if (this.done) {\n return o.pipe(take(0))\n } else {\n return o.pipe(takeUntil(this.on))\n }\n }\n\n disposable<T extends IDisposable>(d: T): T {\n if (this.done) {\n d.dispose()\n } else {\n this.on.subscribe(d.dispose.bind(d))\n }\n\n return d\n }\n\n node<T extends Node>(el: T): T {\n const remove = () => {\n const parent = el.parentNode\n if (parent) {\n parent.removeChild(el)\n }\n }\n if (this.done) {\n remove()\n } else {\n this.on.subscribe(remove)\n }\n\n return el\n }\n\n any(f: () => void): void {\n if (this.done) {\n f()\n } else {\n this.on.subscribe(f)\n }\n }\n\n run() {\n if (!this.done) {\n this.#on.next()\n this.#on.complete()\n }\n }\n}\n\n@Directive()\nexport abstract class Destructible implements OnDestroy, IDisposable {\n /** @ignore */\n readonly d = new Destruct()\n\n /** @ignore */\n ngOnDestroy() {\n this.d.run()\n delete (this as any).d\n }\n\n /** @ignore */\n dispose() {\n this.ngOnDestroy()\n }\n}\n","import {\n computed,\n DestroyRef,\n Directive,\n inject,\n Inject,\n Injectable,\n input,\n InputSignal,\n isSignal,\n Optional,\n Signal,\n SkipSelf\n} from \"@angular/core\"\nimport { takeUntilDestroyed, toObservable, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n finalize,\n isObservable,\n map,\n Observable,\n scan,\n shareReplay,\n switchMap,\n tap,\n throwError\n} from \"rxjs\"\n\nimport { isEqual } from \"lodash\"\n\nimport { ConnectProtocol } from \"./connect-protocol\"\n\nexport type BusyProgress = { total: number; current: number; message?: string }\nexport type BusyEventParams = { busy?: boolean; progress?: BusyProgress }\nexport type BusyEvent = { name: string } & BusyEventParams\n\nexport type BusyConnectable = Observable<boolean | BusyEventParams> | BusyTracker<any> | Signal<boolean>\n\nexport class BusyTrackerState<T extends string> implements ConnectProtocol {\n readonly #events = new BehaviorSubject<BusyEvent | null>(null)\n\n #data: { [key: string]: BusyEventParams } = {}\n\n readonly current$ = this.#events.pipe(\n scan((state, current) => {\n if (current == null) {\n return state\n }\n\n if (current.busy == null) {\n delete state[current.name]\n } else {\n state[current.name] = { busy: current.busy, progress: current.progress }\n }\n return state\n }, {} as any),\n tap(state => (this.#data = state)),\n map(() => this),\n shareReplay(1)\n )\n\n get isBusy(): boolean {\n return Object.values(this.#data).some(v => v.busy)\n }\n\n get progress(): BusyProgress | undefined {\n let total = 0\n let current = 0\n const messages = []\n\n for (const v of Object.values(this.#data)) {\n if (v.progress) {\n total += v.progress.total\n current += v.progress.current\n if (v.progress.message) {\n messages.push(v.progress.message)\n }\n }\n }\n\n if (total !== 0 && current !== 0) {\n return { total, current, message: messages.length > 0 ? messages.join(\"\\n\") : undefined }\n }\n\n return undefined\n }\n\n is(name: T): boolean {\n return this.#data[name]?.busy === true\n }\n\n has(name: T): boolean {\n return this.#data[name] != null\n }\n\n set(name: T, busy: boolean | undefined, progress?: BusyProgress) {\n const current = this.#data[name]\n if (current == null || current.busy !== busy || !isEqual(current.progress, progress)) {\n this.#events.next({ name, busy, progress })\n }\n }\n\n get(name: T): BusyEventParams | undefined {\n return this.#data[name]\n }\n\n keys() {\n return Object.keys(this.#data)\n }\n\n entries() {\n return Object.entries(this.#data)\n }\n\n connect(o: Observable<typeof this> | typeof this, prefix?: string): Observable<unknown> {\n if (o instanceof BusyTrackerState) {\n return this.connect(o.current$, prefix)\n } else {\n return new Observable(() => {\n const otherKeys: string[] = []\n\n const sub = o.subscribe(otherState => {\n for (const [k, v] of otherState.entries()) {\n const key = prefix ? `${prefix}-${k}` : k\n if (!otherKeys.includes(key)) {\n otherKeys.push(key)\n }\n this.set(key as T, v.busy, v.progress)\n }\n })\n\n return () => {\n sub.unsubscribe()\n for (const k of otherKeys) {\n this.set(k as T, undefined, undefined)\n }\n }\n })\n }\n }\n}\n\n/**\n * ```ts\n * @Component({\n * provides: [BusyTracker],\n * template: `\n * <spinner *ngIf=\"busy.is('reload') | async\">\n * <spinner *ngIf=\"busy.any | async\">\n * <button nuBusy=\"reload\"></button>\n * `\n * })\n * export class Grid {\n * readonly busy = inject(BusyTracker<\"create\" | \"reload\" | \"update\" | \"delete\">)\n * }\n * ```\n */\n@Injectable()\nexport class BusyTracker<T extends string> implements ConnectProtocol {\n private readonly destroyRef = inject(DestroyRef)\n\n private readonly _state = this.parent\n ? (this.parent as unknown as { _state: BusyTrackerState<T> })._state\n : new BusyTrackerState()\n\n readonly state$ = this._state.current$\n\n readonly state: Signal<BusyTrackerState<T>> = toSignal(this.state$, { requireSync: true })\n\n readonly any = computed(() => this.state().isBusy)\n\n readonly progress = computed(() => this.state().progress)\n\n constructor(@Inject(BusyTracker) @SkipSelf() @Optional() private readonly parent?: BusyTracker<any>) {}\n\n init(name: T, busy: boolean, progress?: BusyProgress) {\n const state = this.state()\n if (!state.has(name)) {\n this.set(name, busy, progress)\n }\n }\n\n set(name: T, busy: boolean, progress?: BusyProgress) {\n this._state.set(name, busy, progress)\n }\n\n is(name: T): Observable<boolean> {\n return this.state$.pipe(map(state => state.is(name)))\n }\n\n watch(name: T): Observable<BusyEventParams | undefined> {\n return this.state$.pipe(map(state => state.get(name)))\n }\n\n /**\n * ```ts\n * observable.pipe(this.busy.rx(\"save\"))\n * ```\n */\n rx(name: T) {\n return <S>(src: Observable<S>) =>\n src.pipe(\n tap(() => this.set(name, true)),\n finalize(() => this.set(name, false))\n )\n }\n\n connect(value: BusyConnectable, name?: T): Observable<unknown> {\n if (isObservable(value)) {\n if (name == null) {\n return throwError(() => new Error(\"Missing `name` param\"))\n }\n\n return new Observable(() => {\n const sub = value.subscribe(busyValue => {\n if (typeof busyValue === \"boolean\") {\n this.set(name as T, busyValue)\n } else {\n this.set(name as T, !!busyValue.busy, busyValue.progress)\n }\n })\n return sub.unsubscribe.bind(sub)\n }).pipe(takeUntilDestroyed(this.destroyRef))\n } else if (value instanceof BusyTracker) {\n return this._state.connect(value.state$, name).pipe(takeUntilDestroyed(this.destroyRef))\n } else if (isSignal(value)) {\n return this.connect(toObservable(value), name)\n }\n return throwError(() => new Error(\"Unsupported Busy source\"))\n }\n}\n\n// TODO: BusyState directive\n\n/**\n * ```ts\n * @Component({\n * template: `\n * <button nuBusy=\"save\">SAVE</button>\n * <progress nuBusy=\"fileUpload\">\n * <progress nuBusy=\"*\">\n * `\n * })\n * ```\n */\n@Directive({\n standalone: true,\n selector: \"[nuBusy]\",\n exportAs: \"nuBusy\"\n})\nexport class Busy<T extends string> implements ConnectProtocol {\n readonly tracker: BusyTracker<T> = inject(BusyTracker, { skipSelf: true })\n\n readonly name: InputSignal<T> = input.required<T>({ alias: \"nuBusy\" })\n readonly #name = toObservable(this.name)\n\n readonly state$ = combineLatest({ name: this.#name, state: this.tracker.state$ }).pipe(\n map(({ name, state }) => {\n if (name === \"*\") {\n const isBusy = state.isBusy\n return {\n isBusy: isBusy,\n isOthersBusy: isBusy,\n progress: state.progress\n }\n }\n\n const self = state.get(name)\n if (self) {\n const isBusy = self.busy === true\n return {\n isBusy: isBusy,\n isOthersBusy: state.isBusy && !isBusy,\n progress: self.progress\n }\n } else {\n return {\n isBusy: false,\n isOthersBusy: state.isBusy,\n progress: undefined\n }\n }\n }),\n shareReplay(1)\n )\n\n readonly isBusy$ = this.state$.pipe(\n map(v => v.isBusy),\n shareReplay(1)\n )\n readonly isBusy = toSignal(this.isBusy$, { rejectErrors: true })\n\n readonly isOthersBusy$ = this.state$.pipe(\n map(v => v.isOthersBusy),\n shareReplay(1)\n )\n readonly isOthersBusy = toSignal(this.isOthersBusy$, { rejectErrors: true })\n\n readonly progress$ = this.state$.pipe(\n map(v => v.progress),\n shareReplay(1)\n )\n readonly progress = toSignal(this.progress$, { rejectErrors: true })\n\n connect(value: BusyConnectable) {\n return new Observable(() => {\n const tsub = this.#name\n .pipe(\n filter(name => name !== \"*\"),\n switchMap(name => this.tracker.connect(value, name))\n )\n .subscribe()\n return tsub.unsubscribe.bind(tsub)\n })\n }\n}\n","import { computed, Directive, effect, inject, input, signal, Signal } from \"@angular/core\"\nimport { NgControl } from \"@angular/forms\"\n\nimport { Busy } from \"./busy\"\n\n/**\n * @example\n * ```typescript\n * @Component({\n * standalone: true,\n * hostDirectives: [DisabledState],\n * template: `<button [disabled]=\"disabledState.isDisabled()\">Submit</button>`,\n * })\n * export class Button {\n * readonly disabledState = inject(DisabledState)\n * }\n * ```\n */\n@Directive({\n standalone: true,\n exportAs: \"nuDisabled\",\n host: {\n \"[attr.disabled]\": \"isDisabled() ? '' : null\"\n }\n})\nexport class DisabledState {\n readonly #parent = inject(DisabledState, { skipSelf: true, optional: true })\n readonly #busy = inject(Busy, { self: true, optional: true })\n readonly #disabled = signal<boolean>(false)\n\n readonly isDisabled: Signal<boolean> = computed(\n () => !!(this.#parent?.isDisabled() || this.#busy?.isOthersBusy() || this.#disabled())\n )\n\n constructor() {\n effect(() => this.isDisabled())\n }\n\n set(value: boolean) {\n this.#disabled.set(value)\n }\n}\n\n/**\n * @example\n * ```html\n * <form nuDisabled nuBusy=\"submit\">\n * <button [nuDisabled]=\"form.invalid\" nuBusy=\"submit\">Submit</button>\n * </form>\n * ```\n */\n@Directive({\n standalone: true,\n selector: \"[nuDisabled]\",\n hostDirectives: [DisabledState]\n})\nexport class Disabled {\n readonly #state = inject(DisabledState, { self: true })\n readonly #control = inject(NgControl, { self: true, optional: true })\n readonly nuDisabled = input(false)\n\n constructor() {\n effect(() => this.#state.set(this.nuDisabled()), { allowSignalWrites: true })\n effect(() => {\n const control = this.#control?.control\n if (!control) {\n // TODO: retry\n return\n }\n\n if (this.#state.isDisabled()) {\n control.enabled && control.disable()\n } else {\n control.disabled && control.enable()\n }\n })\n }\n}\n\n// @Directive({\n// standalone: true,\n// // eslint-disable-next-line max-len\n// selector: \"[nuDisabled][formControl],[nuDisabled][formControlName],[nuDisabled][formGroup],[nuDisabled][formGroupName]\"\n// })\n// export class FormControlDisabled {\n// readonly #disabled = inject(DisabledState, { self: true })\n// readonly #control = inject(NgControl, { self: true })\n\n// constructor() {\n// effect(() => {\n// const control = this.#control.control\n// if (!control) {\n// // TODO: retry\n// return\n// }\n\n// if (this.#disabled.isDisabled()) {\n// control.enabled && control.disable()\n// } else {\n// control.disabled && control.enable()\n// }\n// })\n// }\n// }\n","export type NumberWithUnitInput = number | string | NumberWithUnit\n\nconst specials = [\"auto\", \"inherit\"]\n\nexport const UNIT_REGEX = \"v[h|w|min|max]|p[c|t|x]|[re|e|c|m]m|[l|c]h|%|in|Q|ex|m?s\"\nexport const NUMBER_REGEX = \"[+-]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)\"\n\nconst regex = new RegExp(`^(${NUMBER_REGEX})\\\\s*(${UNIT_REGEX})?$`)\n\nexport class NumberWithUnit {\n static coerce(value: any, defaultUnit?: string) {\n if (value instanceof NumberWithUnit) {\n return value\n } else if (specials.includes(value)) {\n return new NumberWithUnit(NaN, value)\n } else if (typeof value === \"string\") {\n const match = value.match(regex)\n if (match) {\n return new NumberWithUnit(Number(match[1]), match[2] || defaultUnit)\n }\n } else if (typeof value === \"number\") {\n return new NumberWithUnit(value, defaultUnit)\n }\n\n throw new Error(`Not implemented number with unit: ${value}`)\n }\n\n constructor(\n public readonly value: number,\n public readonly unit?: string\n ) {}\n\n toString() {\n if (isNaN(this.value)) {\n return this.unit\n } else if (this.unit != null) {\n return `${this.value}${this.unit}`\n } else {\n return `${this.value}`\n }\n }\n}\n","export type BooleanInput = string | boolean | null | undefined\n\nexport function coerceBoolAttr(value: BooleanInput): boolean {\n return value != null && `${value}` !== \"false\"\n}\n","import { ElementRef } from \"@angular/core\"\n\nexport type ElementInput<T extends Element = HTMLElement> = T | ElementRef<T>\n\nexport function coerceElement<T>(value: T | ElementRef<T>): T {\n if (value instanceof ElementRef) {\n return value.nativeElement\n }\n return value\n}\n\nexport function isElementInput(value: any): value is ElementInput {\n return value instanceof Element || value instanceof ElementRef\n}\n","import {\n catchError,\n concat,\n forkJoin,\n from,\n map,\n Observable,\n ObservableInput,\n of,\n ReplaySubject,\n tap,\n throwError\n} from \"rxjs\"\n\nexport type StateChainHandler = () => ObservableInput<unknown> | null | undefined | void\n\nexport class StopStateChain extends Error {}\n\nexport type StateOptions = Record<string, { order?: \"parallel\" | \"sequential\"; cancellable?: boolean }>\n\nexport type StateRemap<A, B> =\n A extends StateChain<infer AO, infer AS>\n ? B extends StateChain<infer BO, infer BS>\n ? Partial<{ [K in AS]: BS }>\n : never\n : never\n\nexport class StateChain<T extends StateOptions, S extends string | number | symbol = keyof T> {\n readonly states: T\n readonly #executed: S[] = []\n readonly #handlers: Partial<Record<S, Array<StateChainHandler>>> = {}\n\n #current = new ReplaySubject<S>(1)\n readonly current$ = this.#current.asObservable()\n\n constructor(states: T) {\n this.states = { ...states }\n\n for (const value of Object.values(states)) {\n if (value.order == null) {\n value.order = \"parallel\"\n }\n }\n }\n\n on(state: S, fn: StateChainHandler) {\n if (state in this.#handlers) {\n this.#handlers[state]!.push(fn)\n } else {\n this.#handlers[state] = [fn]\n }\n\n return () => {\n const idx = this.#handlers[state]!.indexOf(fn)\n if (idx > -1) {\n this.#handlers[state]!.splice(idx, 1)\n }\n }\n }\n\n /**\n * Run this state changes on other state\n */\n control<T extends StateChain<any, any>>(state: T, remap?: StateRemap<this, T>) {\n const remove: Array<() => void> = []\n for (const selfState of Object.keys(this.states)) {\n const otherState = (remap as unknown as any)?.[selfState] || selfState\n if (otherState in state.states) {\n remove.push(this.on(selfState as any, () => state.run([otherState])))\n }\n }\n\n return () => {\n for (const fn of remove) {\n fn()\n }\n }\n }\n\n run(states: S[]) {\n if (states.length === 0) {\n throw new Error(\"Missing states\")\n }\n\n const executed: S[] = []\n return concat(...states.map(state => this.#run(state).pipe(tap(s => s && executed.push(s))))).pipe(\n catchError(err => (err instanceof StopStateChain ? of(executed) : throwError(() => err)))\n )\n }\n\n #run(state: S): Observable<S | null> {\n const options = this.states[state as any]\n\n return new Observable(dst => {\n if (this.#executed.includes(state)) {\n dst.next(state)\n dst.complete()\n return\n }\n this.#executed.push(state)\n this.#current.next(state)\n\n const handlers = this.#handlers[state]\n if (handlers == null || handlers.length === 0) {\n dst.next(state)\n dst.complete()\n return\n }\n\n const observables = handlers\n .map(handler => {\n const result = handler()\n if (result == null) {\n return of(null)\n } else {\n return from(result)\n }\n })\n .map(handler =>\n handler.pipe(\n catchError(err => {\n if (err instanceof StopStateChain) {\n const idx = this.#executed.indexOf(state)\n if (idx > -1) {\n this.#executed.splice(idx, 1)\n }\n dst.error(err)\n dst.complete()\n return of(null)\n } else {\n return throwError(() => err)\n }\n })\n )\n )\n\n if (observables.length === 1) {\n return observables[0].pipe(map(() => state)).subscribe(dst)\n } else {\n if (options.order === \"parallel\") {\n return forkJoin(observables)\n .pipe(map(() => state))\n .subscribe(dst)\n } else {\n return concat(...observables)\n .pipe(map(() => state))\n .subscribe(dst)\n }\n }\n })\n }\n\n destroy() {\n ;(this as any).#handlers = null as any\n }\n}\n","export const Zone = (window as any).Zone\n\nexport function __zone_symbol__<T extends string>(val: T): T {\n const symbol =\n typeof Zone !== \"undefined\" && (Zone as any).__symbol__\n ? (Zone as any).__symbol__(val)\n : `__zone_symbol__${val}`\n return typeof window[symbol] !== \"undefined\" ? symbol : val\n}\n\nexport const rawSetTimeout = window[__zone_symbol__(\"setTimeout\")]\nexport const rawClearTimeout = window[__zone_symbol__(\"clearTimeout\")]\nexport const rawSetInterval = window[__zone_symbol__(\"setInterval\")]\nexport const rawClearInterval = window[__zone_symbol__(\"clearInterval\")]\nexport const rawRequestAnimationFrame = window[__zone_symbol__(\"requestAnimationFrame\")]\nexport const rawCancelAnimationFrame = window[__zone_symbol__(\"cancelAnimationFrame\")]\n","import { rawRequestAnimationFrame } from \"./unngzone\"\n\ntype FastDomHandler = () => void\n\nclass _FastDOM {\n #rafId: any\n #mutate: Array<FastDomHandler> = []\n #measure: Array<FastDomHandler> = []\n\n public mutate(handler: FastDomHandler) {\n this.#mutate.push(handler)\n this._schedule()\n }\n\n public mutateNext(handler: FastDomHandler) {\n this.#mutate.push(() => {\n this.#mutate.push(handler)\n })\n this._schedule()\n }\n\n public measure(handler: FastDomHandler) {\n this.#measure.push(handler)\n this._schedule()\n }\n\n public setStyle(el: HTMLElement, style: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(style)) {\n if (v == null) {\n el.style.removeProperty(k)\n } else {\n el.style.setProperty(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n public setAttributes(el: HTMLElement, attrs: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(attrs)) {\n if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n private _schedule() {\n if (!this.#rafId) {\n this.#rafId = rawRequestAnimationFrame(this._apply.bind(this))\n }\n }\n\n private _apply() {\n this.#rafId = null\n\n const measure = this.#measure.slice()\n const mutate = this.#mutate.slice()\n this.#measure.length = 0\n this.#mutate.length = 0\n\n runQ(measure)\n runQ(mutate)\n\n if (this.#measure.length || this.#mutate.length) {\n this._schedule()\n }\n }\n}\n\nfunction runQ(items: FastDomHandler[]) {\n let item: FastDomHandler\n while ((item = items.shift()!)) {\n item()\n }\n}\n\nexport const FastDOM = new _FastDOM()\n","import { isPlainObject as _isPlainObject, cloneDeep } from \"lodash\"\n\nimport { DeepReadonly } from \"./types/readonly\"\n\n// export { deepFreeze }\n\nexport const deepClone: <T>(obj: T) => T = typeof structuredClone === \"function\" ? structuredClone : cloneDeep\n// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any\nexport const isPlainObject: (arg: any) => arg is { [key: string]: any } = _isPlainObject as any\n\nexport function deepFreeze<T>(obj: T): DeepReadonly<T> {\n if (obj == null) {\n return obj as any\n }\n\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error(\"map is read-only\")\n }\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error(\"set is read-only\")\n }\n }\n\n // Freeze self\n Object.freeze(obj)\n\n Object.getOwnPropertyNames(obj).forEach(name => {\n const prop = (obj as any)[name]\n const type = typeof prop\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === \"object\" || type === \"function\") && !Object.isFrozen(prop)) {\n deepFreeze(prop)\n }\n })\n\n return obj as any\n}\n\n/**\n * @example\n * ```ts\n * toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: \"desc\"}]))\n * ```\n */\nexport function toSorted<T>(items: readonly T[], fn: (a: T, b: T) => number): T[] {\n if (typeof (items as any).toSorted === \"function\") {\n return (items as any).toSorted(fn)\n } else {\n return items.slice(0).sort(fn)\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_isPlainObject"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngutil-common.mjs","sources":["../../../../packages/common/src/destruct.ts","../../../../packages/common/src/busy.ts","../../../../packages/common/src/disabled.ts","../../../../packages/common/src/number-with-unit.ts","../../../../packages/common/src/coerce/bool-attr.ts","../../../../packages/common/src/coerce/element.ts","../../../../packages/common/src/util.ts","../../../../packages/common/src/form/observable.ts","../../../../packages/common/src/state-chain.ts","../../../../packages/common/src/unngzone.ts","../../../../packages/common/src/dom.ts","../../../../packages/common/src/ngutil-common.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\n\nimport { Observable, share, Subject, take, takeUntil } from \"rxjs\"\n\nexport interface IDisposable {\n dispose(): void\n}\n\nexport class Destruct {\n readonly #on = new Subject<void>()\n readonly on = this.#on.pipe(share())\n\n constructor(fn?: () => void) {\n if (fn != null) {\n this.any(fn)\n }\n }\n get done(): boolean {\n return this.#on.closed\n }\n\n sub<T>(o: Observable<T>): Observable<T> {\n if (this.done) {\n return o.pipe(take(0))\n } else {\n return o.pipe(takeUntil(this.on))\n }\n }\n\n disposable<T extends IDisposable>(d: T): T {\n if (this.done) {\n d.dispose()\n } else {\n this.on.subscribe(d.dispose.bind(d))\n }\n\n return d\n }\n\n node<T extends Node>(el: T): T {\n const remove = () => {\n const parent = el.parentNode\n if (parent) {\n parent.removeChild(el)\n }\n }\n if (this.done) {\n remove()\n } else {\n this.on.subscribe(remove)\n }\n\n return el\n }\n\n any(f: () => void): void {\n if (this.done) {\n f()\n } else {\n this.on.subscribe(f)\n }\n }\n\n run() {\n if (!this.done) {\n this.#on.next()\n this.#on.complete()\n }\n }\n}\n\n@Directive()\nexport abstract class Destructible implements OnDestroy, IDisposable {\n /** @ignore */\n readonly d = new Destruct()\n\n /** @ignore */\n ngOnDestroy() {\n this.d.run()\n delete (this as any).d\n }\n\n /** @ignore */\n dispose() {\n this.ngOnDestroy()\n }\n}\n","import {\n computed,\n DestroyRef,\n Directive,\n inject,\n Inject,\n Injectable,\n input,\n InputSignal,\n isSignal,\n Optional,\n Signal,\n SkipSelf\n} from \"@angular/core\"\nimport { takeUntilDestroyed, toObservable, toSignal } from \"@angular/core/rxjs-interop\"\n\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n finalize,\n isObservable,\n map,\n Observable,\n scan,\n shareReplay,\n switchMap,\n tap,\n throwError\n} from \"rxjs\"\n\nimport { isEqual } from \"lodash\"\n\nimport { ConnectProtocol } from \"./connect-protocol\"\n\nexport type BusyProgress = { total: number; current: number; message?: string }\nexport type BusyEventParams = { busy?: boolean; progress?: BusyProgress }\nexport type BusyEvent = { name: string } & BusyEventParams\n\nexport type BusyConnectable = Observable<boolean | BusyEventParams> | BusyTracker<any> | Signal<boolean>\n\nexport class BusyTrackerState<T extends string> implements ConnectProtocol {\n readonly #events = new BehaviorSubject<BusyEvent | null>(null)\n\n #data: { [key: string]: BusyEventParams } = {}\n\n readonly current$ = this.#events.pipe(\n scan((state, current) => {\n if (current == null) {\n return state\n }\n\n if (current.busy == null) {\n delete state[current.name]\n } else {\n state[current.name] = { busy: current.busy, progress: current.progress }\n }\n return state\n }, {} as any),\n tap(state => (this.#data = state)),\n map(() => this),\n shareReplay(1)\n )\n\n get isBusy(): boolean {\n return Object.values(this.#data).some(v => v.busy)\n }\n\n get progress(): BusyProgress | undefined {\n let total = 0\n let current = 0\n const messages = []\n\n for (const v of Object.values(this.#data)) {\n if (v.progress) {\n total += v.progress.total\n current += v.progress.current\n if (v.progress.message) {\n messages.push(v.progress.message)\n }\n }\n }\n\n if (total !== 0 && current !== 0) {\n return { total, current, message: messages.length > 0 ? messages.join(\"\\n\") : undefined }\n }\n\n return undefined\n }\n\n is(name: T): boolean {\n return this.#data[name]?.busy === true\n }\n\n has(name: T): boolean {\n return this.#data[name] != null\n }\n\n set(name: T, busy: boolean | undefined, progress?: BusyProgress) {\n const current = this.#data[name]\n if (current == null || current.busy !== busy || !isEqual(current.progress, progress)) {\n this.#events.next({ name, busy, progress })\n }\n }\n\n get(name: T): BusyEventParams | undefined {\n return this.#data[name]\n }\n\n keys() {\n return Object.keys(this.#data)\n }\n\n entries() {\n return Object.entries(this.#data)\n }\n\n connect(o: Observable<typeof this> | typeof this, prefix?: string): Observable<unknown> {\n if (o instanceof BusyTrackerState) {\n return this.connect(o.current$, prefix)\n } else {\n return new Observable(() => {\n const otherKeys: string[] = []\n\n const sub = o.subscribe(otherState => {\n for (const [k, v] of otherState.entries()) {\n const key = prefix ? `${prefix}-${k}` : k\n if (!otherKeys.includes(key)) {\n otherKeys.push(key)\n }\n this.set(key as T, v.busy, v.progress)\n }\n })\n\n return () => {\n sub.unsubscribe()\n for (const k of otherKeys) {\n this.set(k as T, undefined, undefined)\n }\n }\n })\n }\n }\n}\n\n/**\n * ```ts\n * @Component({\n * provides: [BusyTracker],\n * template: `\n * <spinner *ngIf=\"busy.is('reload') | async\">\n * <spinner *ngIf=\"busy.any | async\">\n * <button nuBusy=\"reload\"></button>\n * `\n * })\n * export class Grid {\n * readonly busy = inject(BusyTracker<\"create\" | \"reload\" | \"update\" | \"delete\">)\n * }\n * ```\n */\n@Injectable()\nexport class BusyTracker<T extends string> implements ConnectProtocol {\n private readonly destroyRef = inject(DestroyRef)\n\n private readonly _state = this.parent\n ? (this.parent as unknown as { _state: BusyTrackerState<T> })._state\n : new BusyTrackerState()\n\n readonly state$ = this._state.current$\n\n readonly state: Signal<BusyTrackerState<T>> = toSignal(this.state$, { requireSync: true })\n\n readonly any = computed(() => this.state().isBusy)\n\n readonly progress = computed(() => this.state().progress)\n\n constructor(@Inject(BusyTracker) @SkipSelf() @Optional() private readonly parent?: BusyTracker<any>) {}\n\n init(name: T, busy: boolean, progress?: BusyProgress) {\n const state = this.state()\n if (!state.has(name)) {\n this.set(name, busy, progress)\n }\n }\n\n set(name: T, busy: boolean, progress?: BusyProgress) {\n this._state.set(name, busy, progress)\n }\n\n is(name: T): Observable<boolean> {\n return this.state$.pipe(map(state => state.is(name)))\n }\n\n watch(name: T): Observable<BusyEventParams | undefined> {\n return this.state$.pipe(map(state => state.get(name)))\n }\n\n /**\n * ```ts\n * observable.pipe(this.busy.rx(\"save\"))\n * ```\n */\n rx(name: T) {\n return <S>(src: Observable<S>) =>\n src.pipe(\n tap(() => this.set(name, true)),\n finalize(() => this.set(name, false))\n )\n }\n\n connect(value: BusyConnectable, name?: T): Observable<unknown> {\n if (isObservable(value)) {\n if (name == null) {\n return throwError(() => new Error(\"Missing `name` param\"))\n }\n\n return new Observable(() => {\n const sub = value.subscribe(busyValue => {\n if (typeof busyValue === \"boolean\") {\n this.set(name as T, busyValue)\n } else {\n this.set(name as T, !!busyValue.busy, busyValue.progress)\n }\n })\n return sub.unsubscribe.bind(sub)\n }).pipe(takeUntilDestroyed(this.destroyRef))\n } else if (value instanceof BusyTracker) {\n return this._state.connect(value.state$, name).pipe(takeUntilDestroyed(this.destroyRef))\n } else if (isSignal(value)) {\n return this.connect(toObservable(value), name)\n }\n return throwError(() => new Error(\"Unsupported Busy source\"))\n }\n}\n\n// TODO: BusyState directive\n\n/**\n * ```ts\n * @Component({\n * template: `\n * <button nuBusy=\"save\">SAVE</button>\n * <progress nuBusy=\"fileUpload\">\n * <progress nuBusy=\"*\">\n * `\n * })\n * ```\n */\n@Directive({\n standalone: true,\n selector: \"[nuBusy]\",\n exportAs: \"nuBusy\"\n})\nexport class Busy<T extends string> implements ConnectProtocol {\n readonly tracker: BusyTracker<T> = inject(BusyTracker, { skipSelf: true })\n\n readonly name: InputSignal<T> = input.required<T>({ alias: \"nuBusy\" })\n readonly #name = toObservable(this.name)\n\n readonly state$ = combineLatest({ name: this.#name, state: this.tracker.state$ }).pipe(\n map(({ name, state }) => {\n if (name === \"*\") {\n const isBusy = state.isBusy\n return {\n isBusy: isBusy,\n isOthersBusy: isBusy,\n progress: state.progress\n }\n }\n\n const self = state.get(name)\n if (self) {\n const isBusy = self.busy === true\n return {\n isBusy: isBusy,\n isOthersBusy: state.isBusy && !isBusy,\n progress: self.progress\n }\n } else {\n return {\n isBusy: false,\n isOthersBusy: state.isBusy,\n progress: undefined\n }\n }\n }),\n shareReplay(1)\n )\n\n readonly isBusy$ = this.state$.pipe(\n map(v => v.isBusy),\n shareReplay(1)\n )\n readonly isBusy = toSignal(this.isBusy$, { rejectErrors: true })\n\n readonly isOthersBusy$ = this.state$.pipe(\n map(v => v.isOthersBusy),\n shareReplay(1)\n )\n readonly isOthersBusy = toSignal(this.isOthersBusy$, { rejectErrors: true })\n\n readonly progress$ = this.state$.pipe(\n map(v => v.progress),\n shareReplay(1)\n )\n readonly progress = toSignal(this.progress$, { rejectErrors: true })\n\n connect(value: BusyConnectable) {\n return new Observable(() => {\n const tsub = this.#name\n .pipe(\n filter(name => name !== \"*\"),\n switchMap(name => this.tracker.connect(value, name))\n )\n .subscribe()\n return tsub.unsubscribe.bind(tsub)\n })\n }\n}\n","import { computed, Directive, effect, inject, input, signal, Signal } from \"@angular/core\"\nimport { NgControl } from \"@angular/forms\"\n\nimport { Busy } from \"./busy\"\n\n/**\n * @example\n * ```typescript\n * @Component({\n * standalone: true,\n * hostDirectives: [DisabledState],\n * template: `<button [disabled]=\"disabledState.isDisabled()\">Submit</button>`,\n * })\n * export class Button {\n * readonly disabledState = inject(DisabledState)\n * }\n * ```\n */\n@Directive({\n standalone: true,\n exportAs: \"nuDisabled\",\n host: {\n \"[attr.disabled]\": \"isDisabled() ? '' : null\"\n }\n})\nexport class DisabledState {\n readonly #parent = inject(DisabledState, { skipSelf: true, optional: true })\n readonly #busy = inject(Busy, { self: true, optional: true })\n readonly #disabled = signal<boolean>(false)\n\n readonly isDisabled: Signal<boolean> = computed(\n () => !!(this.#parent?.isDisabled() || this.#busy?.isOthersBusy() || this.#disabled())\n )\n\n constructor() {\n effect(() => this.isDisabled())\n }\n\n set(value: boolean) {\n this.#disabled.set(value)\n }\n}\n\n/**\n * @example\n * ```html\n * <form nuDisabled nuBusy=\"submit\">\n * <button [nuDisabled]=\"form.invalid\" nuBusy=\"submit\">Submit</button>\n * </form>\n * ```\n */\n@Directive({\n standalone: true,\n selector: \"[nuDisabled]\",\n hostDirectives: [DisabledState]\n})\nexport class Disabled {\n readonly #state = inject(DisabledState, { self: true })\n readonly #control = inject(NgControl, { self: true, optional: true })\n readonly nuDisabled = input(false)\n\n constructor() {\n effect(() => this.#state.set(this.nuDisabled()), { allowSignalWrites: true })\n effect(() => {\n const control = this.#control?.control\n if (!control) {\n // TODO: retry\n return\n }\n\n if (this.#state.isDisabled()) {\n control.enabled && control.disable()\n } else {\n control.disabled && control.enable()\n }\n })\n }\n}\n\n// @Directive({\n// standalone: true,\n// // eslint-disable-next-line max-len\n// selector: \"[nuDisabled][formControl],[nuDisabled][formControlName],[nuDisabled][formGroup],[nuDisabled][formGroupName]\"\n// })\n// export class FormControlDisabled {\n// readonly #disabled = inject(DisabledState, { self: true })\n// readonly #control = inject(NgControl, { self: true })\n\n// constructor() {\n// effect(() => {\n// const control = this.#control.control\n// if (!control) {\n// // TODO: retry\n// return\n// }\n\n// if (this.#disabled.isDisabled()) {\n// control.enabled && control.disable()\n// } else {\n// control.disabled && control.enable()\n// }\n// })\n// }\n// }\n","export type NumberWithUnitInput = number | string | NumberWithUnit\n\nconst specials = [\"auto\", \"inherit\"]\n\nexport const UNIT_REGEX = \"v[h|w|min|max]|p[c|t|x]|[re|e|c|m]m|[l|c]h|%|in|Q|ex|m?s\"\nexport const NUMBER_REGEX = \"[+-]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.\\\\d*|\\\\d+)\"\n\nconst regex = new RegExp(`^(${NUMBER_REGEX})\\\\s*(${UNIT_REGEX})?$`)\n\nexport class NumberWithUnit {\n static coerce(value: any, defaultUnit?: string) {\n if (value instanceof NumberWithUnit) {\n return value\n } else if (specials.includes(value)) {\n return new NumberWithUnit(NaN, value)\n } else if (typeof value === \"string\") {\n const match = value.match(regex)\n if (match) {\n return new NumberWithUnit(Number(match[1]), match[2] || defaultUnit)\n }\n } else if (typeof value === \"number\") {\n return new NumberWithUnit(value, defaultUnit)\n }\n\n throw new Error(`Not implemented number with unit: ${value}`)\n }\n\n constructor(\n public readonly value: number,\n public readonly unit?: string\n ) {}\n\n toString() {\n if (isNaN(this.value)) {\n return this.unit\n } else if (this.unit != null) {\n return `${this.value}${this.unit}`\n } else {\n return `${this.value}`\n }\n }\n}\n","export type BooleanInput = string | boolean | null | undefined\n\nexport function coerceBoolAttr(value: BooleanInput): boolean {\n return value != null && `${value}` !== \"false\"\n}\n","import { ElementRef } from \"@angular/core\"\n\nexport type ElementInput<T extends Element = HTMLElement> = T | ElementRef<T>\n\nexport function coerceElement<T>(value: T | ElementRef<T>): T {\n if (value instanceof ElementRef) {\n return value.nativeElement\n }\n return value\n}\n\nexport function isElementInput(value: any): value is ElementInput {\n return value instanceof Element || value instanceof ElementRef\n}\n","import { isPlainObject as _isPlainObject, cloneDeep } from \"lodash\"\n\nimport { DeepReadonly } from \"./types/readonly\"\n\n// export { deepFreeze }\n\nexport const deepClone: <T>(obj: T) => T = typeof structuredClone === \"function\" ? structuredClone : cloneDeep\n// export const deepFreeze: <T>(obj: T) => DeepReadonly<T> = o => Object.freeze(o) as any\nexport const isPlainObject: (arg: any) => arg is { [key: string]: any } = _isPlainObject as any\n\nexport function deepFreeze<T>(obj: T): DeepReadonly<T> {\n if (obj == null) {\n return obj as any\n }\n\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error(\"map is read-only\")\n }\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error(\"set is read-only\")\n }\n }\n\n // Freeze self\n Object.freeze(obj)\n\n Object.getOwnPropertyNames(obj).forEach(name => {\n const prop = (obj as any)[name]\n const type = typeof prop\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === \"object\" || type === \"function\") && !Object.isFrozen(prop)) {\n deepFreeze(prop)\n }\n })\n\n return obj as any\n}\n\n/**\n * @example\n * ```ts\n * toSorted([{id: 1}, {id: 2}, {id: 3}], sortBy([{id: \"desc\"}]))\n * ```\n */\nexport function toSorted<T>(items: readonly T[], fn: (a: T, b: T) => number): T[] {\n if (typeof (items as any).toSorted === \"function\") {\n return (items as any).toSorted(fn)\n } else {\n return items.slice(0).sort(fn)\n }\n}\n\nexport function isFalsy(value: any): boolean {\n if (value == null) {\n return true\n } else if (Array.isArray(value)) {\n return value.length === 0\n } else if (isPlainObject(value)) {\n return Object.keys(value).length === 0\n } else if (value instanceof Set) {\n return value.size === 0\n } else if (value instanceof Map) {\n return value.size === 0\n } else if (typeof value === \"string\") {\n return value.length === 0\n } else if (typeof value === \"number\") {\n return isNaN(value) || value === 0\n }\n return value === false\n}\n\nexport function isTruthy(value: any): boolean {\n return !isFalsy(value)\n}\n","import { takeUntilDestroyed } from \"@angular/core/rxjs-interop\"\nimport { FormControl } from \"@angular/forms\"\n\nimport { debounceTime, distinctUntilChanged, map, Observable, shareReplay, startWith } from \"rxjs\"\n\nimport { isEqual } from \"lodash\"\n\nimport { isFalsy } from \"../util\"\n\nexport interface ObservableOptions {\n distinct?: boolean\n destruct?: boolean\n}\n\nexport interface ObservableValueOptions extends ObservableOptions {\n debounce?: number\n falsyToNull?: boolean\n}\n\nexport type FormControlProperties =\n | \"valid\"\n | \"invalid\"\n | \"status\"\n | \"pristine\"\n | \"dirty\"\n | \"touched\"\n | \"untouched\"\n | \"disabled\"\n | \"enabled\"\n | \"errors\"\n\nexport const DEFAULT: ObservableOptions = { distinct: true, destruct: true }\nexport const VALUE_DEFAULT: ObservableValueOptions = { ...DEFAULT, falsyToNull: true }\n\nexport function fcObservableValue<T, O extends ObservableValueOptions>(\n fc: FormControl<T>,\n opts: O = VALUE_DEFAULT as any\n): Observable<O extends { falsyToNull: true } ? T | null : T> {\n let result: Observable<any> = fc.valueChanges.pipe(\n startWith(null),\n map(() => fc.value)\n )\n\n if (opts.debounce) {\n result = result.pipe(debounceTime(opts.debounce))\n }\n\n if (opts.falsyToNull) {\n result = result.pipe(map(v => (isFalsy(v) ? null : v)))\n }\n\n return handleCommonOptions(result, opts) as any\n}\n\nexport function fcObservableProperty<T, P extends FormControlProperties>(\n fc: FormControl<T>,\n property: P,\n opts: ObservableOptions = DEFAULT\n): Observable<FormControl<T>[P]> {\n const result = fc.statusChanges.pipe(\n startWith(null),\n map(() => fc[property])\n )\n\n return handleCommonOptions(result, opts)\n}\n\nfunction handleCommonOptions<T>(o: Observable<T>, opts: ObservableOptions): Observable<T> {\n if (opts.distinct) {\n o = o.pipe(distinctUntilChanged(isEqual))\n }\n\n if (opts.destruct) {\n o = o.pipe(takeUntilDestroyed())\n }\n\n return o.pipe(shareReplay(1))\n}\n","import {\n catchError,\n concat,\n forkJoin,\n from,\n map,\n Observable,\n ObservableInput,\n of,\n ReplaySubject,\n tap,\n throwError\n} from \"rxjs\"\n\nexport type StateChainHandler = () => ObservableInput<unknown> | null | undefined | void\n\nexport class StopStateChain extends Error {}\n\nexport type StateOptions = Record<string, { order?: \"parallel\" | \"sequential\"; cancellable?: boolean }>\n\nexport type StateRemap<A, B> =\n A extends StateChain<infer AO, infer AS>\n ? B extends StateChain<infer BO, infer BS>\n ? Partial<{ [K in AS]: BS }>\n : never\n : never\n\nexport class StateChain<T extends StateOptions, S extends string | number | symbol = keyof T> {\n readonly states: T\n readonly #executed: S[] = []\n readonly #handlers: Partial<Record<S, Array<StateChainHandler>>> = {}\n\n #current = new ReplaySubject<S>(1)\n readonly current$ = this.#current.asObservable()\n\n constructor(states: T) {\n this.states = { ...states }\n\n for (const value of Object.values(states)) {\n if (value.order == null) {\n value.order = \"parallel\"\n }\n }\n }\n\n on(state: S, fn: StateChainHandler) {\n if (state in this.#handlers) {\n this.#handlers[state]!.push(fn)\n } else {\n this.#handlers[state] = [fn]\n }\n\n return () => {\n const idx = this.#handlers[state]!.indexOf(fn)\n if (idx > -1) {\n this.#handlers[state]!.splice(idx, 1)\n }\n }\n }\n\n /**\n * Run this state changes on other state\n */\n control<T extends StateChain<any, any>>(state: T, remap?: StateRemap<this, T>) {\n const remove: Array<() => void> = []\n for (const selfState of Object.keys(this.states)) {\n const otherState = (remap as unknown as any)?.[selfState] || selfState\n if (otherState in state.states) {\n remove.push(this.on(selfState as any, () => state.run([otherState])))\n }\n }\n\n return () => {\n for (const fn of remove) {\n fn()\n }\n }\n }\n\n run(states: S[]) {\n if (states.length === 0) {\n throw new Error(\"Missing states\")\n }\n\n const executed: S[] = []\n return concat(...states.map(state => this.#run(state).pipe(tap(s => s && executed.push(s))))).pipe(\n catchError(err => (err instanceof StopStateChain ? of(executed) : throwError(() => err)))\n )\n }\n\n #run(state: S): Observable<S | null> {\n if (this.#handlers == null) {\n return of(null)\n }\n const options = this.states[state as any]\n\n return new Observable(dst => {\n if (this.#executed.includes(state)) {\n dst.next(state)\n dst.complete()\n return\n }\n this.#executed.push(state)\n this.#current.next(state)\n\n const handlers = this.#handlers[state]\n if (handlers == null || handlers.length === 0) {\n dst.next(state)\n dst.complete()\n return\n }\n\n const observables = handlers\n .map(handler => {\n const result = handler()\n if (result == null) {\n return of(null)\n } else {\n return from(result)\n }\n })\n .map(handler =>\n handler.pipe(\n catchError(err => {\n if (err instanceof StopStateChain) {\n const idx = this.#executed.indexOf(state)\n if (idx > -1) {\n this.#executed.splice(idx, 1)\n }\n dst.error(err)\n dst.complete()\n return of(null)\n } else {\n return throwError(() => err)\n }\n })\n )\n )\n\n if (observables.length === 1) {\n return observables[0].pipe(map(() => state)).subscribe(dst)\n } else {\n if (options.order === \"parallel\") {\n return forkJoin(observables)\n .pipe(map(() => state))\n .subscribe(dst)\n } else {\n return concat(...observables)\n .pipe(map(() => state))\n .subscribe(dst)\n }\n }\n })\n }\n\n destroy() {\n ;(this as any).#handlers = null as any\n }\n}\n","export const Zone = (window as any).Zone\n\nexport function __zone_symbol__<T extends string>(val: T): T {\n const symbol =\n typeof Zone !== \"undefined\" && (Zone as any).__symbol__\n ? (Zone as any).__symbol__(val)\n : `__zone_symbol__${val}`\n return typeof window[symbol] !== \"undefined\" ? symbol : val\n}\n\nexport const rawSetTimeout = window[__zone_symbol__(\"setTimeout\")]\nexport const rawClearTimeout = window[__zone_symbol__(\"clearTimeout\")]\nexport const rawSetInterval = window[__zone_symbol__(\"setInterval\")]\nexport const rawClearInterval = window[__zone_symbol__(\"clearInterval\")]\nexport const rawRequestAnimationFrame = window[__zone_symbol__(\"requestAnimationFrame\")]\nexport const rawCancelAnimationFrame = window[__zone_symbol__(\"cancelAnimationFrame\")]\n","import { rawRequestAnimationFrame } from \"./unngzone\"\n\ntype FastDomHandler = () => void\n\nclass _FastDOM {\n #rafId: any\n #mutate: Array<FastDomHandler> = []\n #measure: Array<FastDomHandler> = []\n\n public mutate(handler: FastDomHandler) {\n this.#mutate.push(handler)\n this._schedule()\n }\n\n public mutateNext(handler: FastDomHandler) {\n this.#mutate.push(() => {\n this.#mutate.push(handler)\n })\n this._schedule()\n }\n\n public measure(handler: FastDomHandler) {\n this.#measure.push(handler)\n this._schedule()\n }\n\n public setStyle(el: HTMLElement, style: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(style)) {\n if (v == null) {\n el.style.removeProperty(k)\n } else {\n el.style.setProperty(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n public setAttributes(el: HTMLElement, attrs: { [key: string]: any }, chain?: FastDomHandler) {\n this.mutate(() => {\n for (const [k, v] of Object.entries(attrs)) {\n if (v == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, v)\n }\n }\n\n chain && chain()\n })\n }\n\n private _schedule() {\n if (!this.#rafId) {\n this.#rafId = rawRequestAnimationFrame(this._apply.bind(this))\n }\n }\n\n private _apply() {\n this.#rafId = null\n\n const measure = this.#measure.slice()\n const mutate = this.#mutate.slice()\n this.#measure.length = 0\n this.#mutate.length = 0\n\n runQ(measure)\n runQ(mutate)\n\n if (this.#measure.length || this.#mutate.length) {\n this._schedule()\n }\n }\n}\n\nfunction runQ(items: FastDomHandler[]) {\n let item: FastDomHandler\n while ((item = items.shift()!)) {\n item()\n }\n}\n\nexport const FastDOM = new _FastDOM()\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_isPlainObject"],"mappings":"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"}
|
package/form/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./observable";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FormControl } from "@angular/forms";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
export interface ObservableOptions {
|
|
4
|
+
distinct?: boolean;
|
|
5
|
+
destruct?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ObservableValueOptions extends ObservableOptions {
|
|
8
|
+
debounce?: number;
|
|
9
|
+
falsyToNull?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type FormControlProperties = "valid" | "invalid" | "status" | "pristine" | "dirty" | "touched" | "untouched" | "disabled" | "enabled" | "errors";
|
|
12
|
+
export declare const DEFAULT: ObservableOptions;
|
|
13
|
+
export declare const VALUE_DEFAULT: ObservableValueOptions;
|
|
14
|
+
export declare function fcObservableValue<T, O extends ObservableValueOptions>(fc: FormControl<T>, opts?: O): Observable<O extends {
|
|
15
|
+
falsyToNull: true;
|
|
16
|
+
} ? T | null : T>;
|
|
17
|
+
export declare function fcObservableProperty<T, P extends FormControlProperties>(fc: FormControl<T>, property: P, opts?: ObservableOptions): Observable<FormControl<T>[P]>;
|
package/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { DisabledState, Disabled } from "./disabled";
|
|
|
4
4
|
export { NumberWithUnit, NumberWithUnitInput, UNIT_REGEX, NUMBER_REGEX } from "./number-with-unit";
|
|
5
5
|
export { coerceBoolAttr, BooleanInput } from "./coerce/bool-attr";
|
|
6
6
|
export { coerceElement, ElementInput, isElementInput } from "./coerce/element";
|
|
7
|
+
export * from "./form";
|
|
7
8
|
export { StateChain, StateChainHandler } from "./state-chain";
|
|
8
9
|
export { rawCancelAnimationFrame, rawClearInterval, rawClearTimeout, rawRequestAnimationFrame, rawSetInterval, rawSetTimeout, __zone_symbol__ } from "./unngzone";
|
|
9
10
|
export { FastDOM } from "./dom";
|
|
@@ -15,4 +16,4 @@ export { MergeUnion } from "./types/merge-union";
|
|
|
15
16
|
export { NumberRange } from "./types/number-range";
|
|
16
17
|
export { Primitive, Builtins, isPrimitive, AsPrimitive, ToPrimitiveMap } from "./types/primitive";
|
|
17
18
|
export { DeepReadonly, ReadonlyDate } from "./types/readonly";
|
|
18
|
-
export { deepClone, deepFreeze, isPlainObject, toSorted } from "./util";
|
|
19
|
+
export { deepClone, deepFreeze, isPlainObject, toSorted, isFalsy, isTruthy } from "./util";
|
package/package.json
CHANGED
package/util.d.ts
CHANGED
|
@@ -11,3 +11,5 @@ export declare function deepFreeze<T>(obj: T): DeepReadonly<T>;
|
|
|
11
11
|
* ```
|
|
12
12
|
*/
|
|
13
13
|
export declare function toSorted<T>(items: readonly T[], fn: (a: T, b: T) => number): T[];
|
|
14
|
+
export declare function isFalsy(value: any): boolean;
|
|
15
|
+
export declare function isTruthy(value: any): boolean;
|