@ngutil/common 0.0.29 → 0.0.31

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.
@@ -31,7 +31,7 @@ export class DisabledState {
31
31
  this.#disabled.set(value);
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DisabledState, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DisabledState, isStandalone: true, host: { properties: { "attr.disabled": "isDisabled()" } }, exportAs: ["nuDisabled"], ngImport: i0 }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DisabledState, isStandalone: true, host: { properties: { "attr.disabled": "isDisabled() ? '' : null" } }, exportAs: ["nuDisabled"], ngImport: i0 }); }
35
35
  }
36
36
  _a = DisabledState;
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DisabledState, decorators: [{
@@ -40,7 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
40
40
  standalone: true,
41
41
  exportAs: "nuDisabled",
42
42
  host: {
43
- "[attr.disabled]": "isDisabled()"
43
+ "[attr.disabled]": "isDisabled() ? '' : null"
44
44
  }
45
45
  }]
46
46
  }], ctorParameters: () => [] });
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
85
85
  hostDirectives: [DisabledState]
86
86
  }]
87
87
  }], ctorParameters: () => [] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2Rpc2FibGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7O0FBRTdCOzs7Ozs7Ozs7Ozs7R0FZRztBQVFILE1BQU0sT0FBTyxhQUFhO0lBQ2IsT0FBTyxDQUE0RDtJQUNuRSxLQUFLLENBQStDO0lBQ3BELFNBQVMsQ0FBeUI7SUFNM0M7UUFSUyxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDbkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BELGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUE7UUFFbEMsZUFBVSxHQUFvQixRQUFRLENBQzNDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDekYsQ0FBQTtRQUdHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWM7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDOzhHQWZRLGFBQWE7a0dBQWIsYUFBYTs7OzJGQUFiLGFBQWE7a0JBUHpCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixJQUFJLEVBQUU7d0JBQ0YsaUJBQWlCLEVBQUUsY0FBYztxQkFDcEM7aUJBQ0o7O0FBbUJEOzs7Ozs7O0dBT0c7QUFNSCxNQUFNLE9BQU8sUUFBUTtJQUNSLE1BQU0sQ0FBd0M7SUFDOUMsUUFBUSxDQUFvRDtJQUdyRTtRQUpTLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDOUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzVELGVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7UUFHOUIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM3RSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7WUFDdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNYLGNBQWM7Z0JBQ2QsT0FBTTtZQUNWLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDeEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBQ3hDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7OEdBcEJRLFFBQVE7a0dBQVIsUUFBUSxpT0EvQlIsYUFBYTs7MkZBK0JiLFFBQVE7a0JBTHBCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwsIFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiXG5cbmltcG9ydCB7IEJ1c3kgfSBmcm9tIFwiLi9idXN5XCJcblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7XG4gKiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gKiAgIGhvc3REaXJlY3RpdmVzOiBbRGlzYWJsZWRTdGF0ZV0sXG4gKiAgIHRlbXBsYXRlOiBgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTdGF0ZS5pc0Rpc2FibGVkKClcIj5TdWJtaXQ8L2J1dHRvbj5gLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBCdXR0b24ge1xuICogICByZWFkb25seSBkaXNhYmxlZFN0YXRlID0gaW5qZWN0KERpc2FibGVkU3RhdGUpXG4gKiB9XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBleHBvcnRBczogXCJudURpc2FibGVkXCIsXG4gICAgaG9zdDoge1xuICAgICAgICBcIlthdHRyLmRpc2FibGVkXVwiOiBcImlzRGlzYWJsZWQoKVwiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEaXNhYmxlZFN0YXRlIHtcbiAgICByZWFkb25seSAjcGFyZW50ID0gaW5qZWN0KERpc2FibGVkU3RhdGUsIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgI2J1c3kgPSBpbmplY3QoQnVzeSwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5ICNkaXNhYmxlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSlcblxuICAgIHJlYWRvbmx5IGlzRGlzYWJsZWQ6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiAhISh0aGlzLiNwYXJlbnQ/LmlzRGlzYWJsZWQoKSB8fCB0aGlzLiNidXN5Py5pc090aGVyc0J1c3koKSB8fCB0aGlzLiNkaXNhYmxlZCgpKVxuICAgIClcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5pc0Rpc2FibGVkKCkpXG4gICAgfVxuXG4gICAgc2V0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuI2Rpc2FibGVkLnNldCh2YWx1ZSlcbiAgICB9XG59XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqICAgIDxmb3JtIG51RGlzYWJsZWQgbnVCdXN5PVwic3VibWl0XCI+XG4gKiAgICAgIDxidXR0b24gW251RGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCIgbnVCdXN5PVwic3VibWl0XCI+U3VibWl0PC9idXR0b24+XG4gKiAgICA8L2Zvcm0+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogXCJbbnVEaXNhYmxlZF1cIixcbiAgICBob3N0RGlyZWN0aXZlczogW0Rpc2FibGVkU3RhdGVdXG59KVxuZXhwb3J0IGNsYXNzIERpc2FibGVkIHtcbiAgICByZWFkb25seSAjc3RhdGUgPSBpbmplY3QoRGlzYWJsZWRTdGF0ZSwgeyBzZWxmOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgI2NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgbnVEaXNhYmxlZCA9IGlucHV0KGZhbHNlKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLiNzdGF0ZS5zZXQodGhpcy5udURpc2FibGVkKCkpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy4jY29udHJvbD8uY29udHJvbFxuICAgICAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogcmV0cnlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuI3N0YXRlLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlZCAmJiBjb250cm9sLmRpc2FibGUoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG5cbi8vIEBEaXJlY3RpdmUoe1xuLy8gICAgIHN0YW5kYWxvbmU6IHRydWUsXG4vLyAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vICAgICBzZWxlY3RvcjogXCJbbnVEaXNhYmxlZF1bZm9ybUNvbnRyb2xdLFtudURpc2FibGVkXVtmb3JtQ29udHJvbE5hbWVdLFtudURpc2FibGVkXVtmb3JtR3JvdXBdLFtudURpc2FibGVkXVtmb3JtR3JvdXBOYW1lXVwiXG4vLyB9KVxuLy8gZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sRGlzYWJsZWQge1xuLy8gICAgIHJlYWRvbmx5ICNkaXNhYmxlZCA9IGluamVjdChEaXNhYmxlZFN0YXRlLCB7IHNlbGY6IHRydWUgfSlcbi8vICAgICByZWFkb25seSAjY29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgc2VsZjogdHJ1ZSB9KVxuXG4vLyAgICAgY29uc3RydWN0b3IoKSB7XG4vLyAgICAgICAgIGVmZmVjdCgoKSA9PiB7XG4vLyAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy4jY29udHJvbC5jb250cm9sXG4vLyAgICAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbi8vICAgICAgICAgICAgICAgICAvLyBUT0RPOiByZXRyeVxuLy8gICAgICAgICAgICAgICAgIHJldHVyblxuLy8gICAgICAgICAgICAgfVxuXG4vLyAgICAgICAgICAgICBpZiAodGhpcy4jZGlzYWJsZWQuaXNEaXNhYmxlZCgpKSB7XG4vLyAgICAgICAgICAgICAgICAgY29udHJvbC5lbmFibGVkICYmIGNvbnRyb2wuZGlzYWJsZSgpXG4vLyAgICAgICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGUoKVxuLy8gICAgICAgICAgICAgfVxuLy8gICAgICAgICB9KVxuLy8gICAgIH1cbi8vIH1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2Rpc2FibGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7O0FBRTdCOzs7Ozs7Ozs7Ozs7R0FZRztBQVFILE1BQU0sT0FBTyxhQUFhO0lBQ2IsT0FBTyxDQUE0RDtJQUNuRSxLQUFLLENBQStDO0lBQ3BELFNBQVMsQ0FBeUI7SUFNM0M7UUFSUyxZQUFPLEdBQUcsTUFBTSxDQUFDLEVBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDbkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3BELGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUE7UUFFbEMsZUFBVSxHQUFvQixRQUFRLENBQzNDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FDekYsQ0FBQTtRQUdHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWM7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDOzhHQWZRLGFBQWE7a0dBQWIsYUFBYTs7OzJGQUFiLGFBQWE7a0JBUHpCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixJQUFJLEVBQUU7d0JBQ0YsaUJBQWlCLEVBQUUsMEJBQTBCO3FCQUNoRDtpQkFDSjs7QUFtQkQ7Ozs7Ozs7R0FPRztBQU1ILE1BQU0sT0FBTyxRQUFRO0lBQ1IsTUFBTSxDQUF3QztJQUM5QyxRQUFRLENBQW9EO0lBR3JFO1FBSlMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUQsZUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUc5QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzdFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQTtZQUN0QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ1gsY0FBYztnQkFDZCxPQUFNO1lBQ1YsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDeEMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs4R0FwQlEsUUFBUTtrR0FBUixRQUFRLGlPQS9CUixhQUFhOzsyRkErQmIsUUFBUTtrQkFMcEIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCJcblxuaW1wb3J0IHsgQnVzeSB9IGZyb20gXCIuL2J1c3lcIlxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAqICAgaG9zdERpcmVjdGl2ZXM6IFtEaXNhYmxlZFN0YXRlXSxcbiAqICAgdGVtcGxhdGU6IGA8YnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFN0YXRlLmlzRGlzYWJsZWQoKVwiPlN1Ym1pdDwvYnV0dG9uPmAsXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEJ1dHRvbiB7XG4gKiAgIHJlYWRvbmx5IGRpc2FibGVkU3RhdGUgPSBpbmplY3QoRGlzYWJsZWRTdGF0ZSlcbiAqIH1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGV4cG9ydEFzOiBcIm51RGlzYWJsZWRcIixcbiAgICBob3N0OiB7XG4gICAgICAgIFwiW2F0dHIuZGlzYWJsZWRdXCI6IFwiaXNEaXNhYmxlZCgpID8gJycgOiBudWxsXCJcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIERpc2FibGVkU3RhdGUge1xuICAgIHJlYWRvbmx5ICNwYXJlbnQgPSBpbmplY3QoRGlzYWJsZWRTdGF0ZSwgeyBza2lwU2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSlcbiAgICByZWFkb25seSAjYnVzeSA9IGluamVjdChCdXN5LCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgcmVhZG9ubHkgI2Rpc2FibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKVxuXG4gICAgcmVhZG9ubHkgaXNEaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+ICEhKHRoaXMuI3BhcmVudD8uaXNEaXNhYmxlZCgpIHx8IHRoaXMuI2J1c3k/LmlzT3RoZXJzQnVzeSgpIHx8IHRoaXMuI2Rpc2FibGVkKCkpXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB0aGlzLmlzRGlzYWJsZWQoKSlcbiAgICB9XG5cbiAgICBzZXQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy4jZGlzYWJsZWQuc2V0KHZhbHVlKVxuICAgIH1cbn1cblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogICAgPGZvcm0gbnVEaXNhYmxlZCBudUJ1c3k9XCJzdWJtaXRcIj5cbiAqICAgICAgPGJ1dHRvbiBbbnVEaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIiBudUJ1c3k9XCJzdWJtaXRcIj5TdWJtaXQ8L2J1dHRvbj5cbiAqICAgIDwvZm9ybT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiBcIltudURpc2FibGVkXVwiLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbRGlzYWJsZWRTdGF0ZV1cbn0pXG5leHBvcnQgY2xhc3MgRGlzYWJsZWQge1xuICAgIHJlYWRvbmx5ICNzdGF0ZSA9IGluamVjdChEaXNhYmxlZFN0YXRlLCB7IHNlbGY6IHRydWUgfSlcbiAgICByZWFkb25seSAjY29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSlcbiAgICByZWFkb25seSBudURpc2FibGVkID0gaW5wdXQoZmFsc2UpXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuI3N0YXRlLnNldCh0aGlzLm51RGlzYWJsZWQoKSksIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLiNjb250cm9sPy5jb250cm9sXG4gICAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiByZXRyeVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy4jc3RhdGUuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5lbmFibGVkICYmIGNvbnRyb2wuZGlzYWJsZSgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuLy8gQERpcmVjdGl2ZSh7XG4vLyAgICAgc3RhbmRhbG9uZTogdHJ1ZSxcbi8vICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy8gICAgIHNlbGVjdG9yOiBcIltudURpc2FibGVkXVtmb3JtQ29udHJvbF0sW251RGlzYWJsZWRdW2Zvcm1Db250cm9sTmFtZV0sW251RGlzYWJsZWRdW2Zvcm1Hcm91cF0sW251RGlzYWJsZWRdW2Zvcm1Hcm91cE5hbWVdXCJcbi8vIH0pXG4vLyBleHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xEaXNhYmxlZCB7XG4vLyAgICAgcmVhZG9ubHkgI2Rpc2FibGVkID0gaW5qZWN0KERpc2FibGVkU3RhdGUsIHsgc2VsZjogdHJ1ZSB9KVxuLy8gICAgIHJlYWRvbmx5ICNjb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlIH0pXG5cbi8vICAgICBjb25zdHJ1Y3RvcigpIHtcbi8vICAgICAgICAgZWZmZWN0KCgpID0+IHtcbi8vICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLiNjb250cm9sLmNvbnRyb2xcbi8vICAgICAgICAgICAgIGlmICghY29udHJvbCkge1xuLy8gICAgICAgICAgICAgICAgIC8vIFRPRE86IHJldHJ5XG4vLyAgICAgICAgICAgICAgICAgcmV0dXJuXG4vLyAgICAgICAgICAgICB9XG5cbi8vICAgICAgICAgICAgIGlmICh0aGlzLiNkaXNhYmxlZC5pc0Rpc2FibGVkKCkpIHtcbi8vICAgICAgICAgICAgICAgICBjb250cm9sLmVuYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlKClcbi8vICAgICAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgICAgICAgY29udHJvbC5kaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZSgpXG4vLyAgICAgICAgICAgICB9XG4vLyAgICAgICAgIH0pXG4vLyAgICAgfVxuLy8gfVxuIl19
@@ -361,7 +361,7 @@ class DisabledState {
361
361
  this.#disabled.set(value);
362
362
  }
363
363
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DisabledState, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
364
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DisabledState, isStandalone: true, host: { properties: { "attr.disabled": "isDisabled()" } }, exportAs: ["nuDisabled"], ngImport: i0 }); }
364
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DisabledState, isStandalone: true, host: { properties: { "attr.disabled": "isDisabled() ? '' : null" } }, exportAs: ["nuDisabled"], ngImport: i0 }); }
365
365
  }
366
366
  _a = DisabledState;
367
367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DisabledState, decorators: [{
@@ -370,7 +370,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
370
370
  standalone: true,
371
371
  exportAs: "nuDisabled",
372
372
  host: {
373
- "[attr.disabled]": "isDisabled()"
373
+ "[attr.disabled]": "isDisabled() ? '' : null"
374
374
  }
375
375
  }]
376
376
  }], ctorParameters: () => [] });
@@ -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()\"\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 (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","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":";;;;;;;;MAQa,QAAQ,CAAA;AACR,IAAA,GAAG,CAAsB;AAGlC,IAAA,WAAA,CAAY,EAAe,EAAA;AAHlB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,OAAO,EAAQ,CAAA;QACzB,IAAE,CAAA,EAAA,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;AAGhC,QAAA,IAAI,EAAE,IAAI,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SACf;KACJ;AACD,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;KACzB;AAED,IAAA,GAAG,CAAI,CAAgB,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SACzB;aAAM;YACH,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;SACpC;KACJ;AAED,IAAA,UAAU,CAAwB,CAAI,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,CAAC,CAAC,OAAO,EAAE,CAAA;SACd;aAAM;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SACvC;AAED,QAAA,OAAO,CAAC,CAAA;KACX;AAED,IAAA,IAAI,CAAiB,EAAK,EAAA;QACtB,MAAM,MAAM,GAAG,MAAK;AAChB,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAA;YAC5B,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;aACzB;AACL,SAAC,CAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,MAAM,EAAE,CAAA;SACX;aAAM;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SAC5B;AAED,QAAA,OAAO,EAAE,CAAA;KACZ;AAED,IAAA,GAAG,CAAC,CAAa,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,CAAC,EAAE,CAAA;SACN;aAAM;AACH,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;SACvB;KACJ;IAED,GAAG,GAAA;AACC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;SACtB;KACJ;AACJ,CAAA;MAGqB,YAAY,CAAA;AADlC,IAAA,WAAA,GAAA;;AAGa,QAAA,IAAA,CAAA,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;AAY9B,KAAA;;IATG,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QACZ,OAAQ,IAAY,CAAC,CAAC,CAAA;KACzB;;IAGD,OAAO,GAAA;QACH,IAAI,CAAC,WAAW,EAAE,CAAA;KACrB;8GAbiB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;;;MC9BG,gBAAgB,CAAA;AAA7B,IAAA,WAAA,GAAA;AACa,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAA;QAE9D,IAAK,CAAA,KAAA,GAAuC,EAAE,CAAA;AAErC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACjC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,KAAI;AACpB,YAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACjB,gBAAA,OAAO,KAAK,CAAA;aACf;AAED,YAAA,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;AACtB,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;aAC7B;iBAAM;AACH,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;aAC3E;AACD,YAAA,OAAO,KAAK,CAAA;AAChB,SAAC,EAAE,EAAS,CAAC,EACb,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,EAClC,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;KAiFJ;AArGY,IAAA,OAAO,CAA8C;AAE9D,IAAA,KAAK,CAAyC;AAoB9C,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;KACrD;AAED,IAAA,IAAI,QAAQ,GAAA;QACR,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,MAAM,QAAQ,GAAG,EAAE,CAAA;AAEnB,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACZ,gBAAA,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAA;AACzB,gBAAA,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAA;AAC7B,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;iBACpC;aACJ;SACJ;QAED,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;YAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAAA;SAC5F;AAED,QAAA,OAAO,SAAS,CAAA;KACnB;AAED,IAAA,EAAE,CAAC,IAAO,EAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;KACzC;AAED,IAAA,GAAG,CAAC,IAAO,EAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;KAClC;AAED,IAAA,GAAG,CAAC,IAAO,EAAE,IAAyB,EAAE,QAAuB,EAAA;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;AAClF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;SAC9C;KACJ;AAED,IAAA,GAAG,CAAC,IAAO,EAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;KAC1B;IAED,IAAI,GAAA;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACjC;IAED,OAAO,GAAA;QACH,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACpC;IAED,OAAO,CAAC,CAAwC,EAAE,MAAe,EAAA;AAC7D,QAAA,IAAI,CAAC,YAAY,gBAAgB,EAAE;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;SAC1C;aAAM;AACH,YAAA,OAAO,IAAI,UAAU,CAAC,MAAK;gBACvB,MAAM,SAAS,GAAa,EAAE,CAAA;gBAE9B,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,IAAG;AACjC,oBAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE;AACvC,wBAAA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,CAAC,CAAE,CAAA,GAAG,CAAC,CAAA;wBACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1B,4BAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;yBACtB;AACD,wBAAA,IAAI,CAAC,GAAG,CAAC,GAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;qBACzC;AACL,iBAAC,CAAC,CAAA;AAEF,gBAAA,OAAO,MAAK;oBACR,GAAG,CAAC,WAAW,EAAE,CAAA;AACjB,oBAAA,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;wBACvB,IAAI,CAAC,GAAG,CAAC,CAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;qBACzC;AACL,iBAAC,CAAA;AACL,aAAC,CAAC,CAAA;SACL;KACJ;AACJ,CAAA;AAED;;;;;;;;;;;;;;AAcG;MAEU,WAAW,CAAA;AAepB,IAAA,WAAA,CAA0E,MAAyB,EAAA;QAAzB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;AAdlF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAE/B,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,MAAM;AACjC,cAAG,IAAI,CAAC,MAAqD,CAAC,MAAM;AACpE,cAAE,IAAI,gBAAgB,EAAE,CAAA;AAEnB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;AAE7B,QAAA,IAAA,CAAA,KAAK,GAAgC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AAEjF,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAA;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;KAE8C;AAEvG,IAAA,IAAI,CAAC,IAAO,EAAE,IAAa,EAAE,QAAuB,EAAA;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;SACjC;KACJ;AAED,IAAA,GAAG,CAAC,IAAO,EAAE,IAAa,EAAE,QAAuB,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;KACxC;AAED,IAAA,EAAE,CAAC,IAAO,EAAA;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACxD;AAED,IAAA,KAAK,CAAC,IAAO,EAAA;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KACzD;AAED;;;;AAIG;AACH,IAAA,EAAE,CAAC,IAAO,EAAA;AACN,QAAA,OAAO,CAAI,GAAkB,KACzB,GAAG,CAAC,IAAI,CACJ,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAC/B,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACxC,CAAA;KACR;IAED,OAAO,CAAC,KAAsB,EAAE,IAAQ,EAAA;AACpC,QAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;aAC7D;AAED,YAAA,OAAO,IAAI,UAAU,CAAC,MAAK;gBACvB,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,IAAG;AACpC,oBAAA,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;AAChC,wBAAA,IAAI,CAAC,GAAG,CAAC,IAAS,EAAE,SAAS,CAAC,CAAA;qBACjC;yBAAM;AACH,wBAAA,IAAI,CAAC,GAAG,CAAC,IAAS,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;qBAC5D;AACL,iBAAC,CAAC,CAAA;gBACF,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACnC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;SAC/C;AAAM,aAAA,IAAI,KAAK,YAAY,WAAW,EAAE;YACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;SAC3F;AAAM,aAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;SACjD;QACD,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;KAChE;AAvEQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAeA,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAftB,WAAW,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;0BAgBM,MAAM;2BAAC,WAAW,CAAA;;0BAAG,QAAQ;;0BAAI,QAAQ;;AA2D1D;AAEA;;;;;;;;;;AAUG;MAMU,IAAI,CAAA;AALjB,IAAA,WAAA,GAAA;QAMa,IAAO,CAAA,OAAA,GAAmB,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjE,IAAI,CAAA,IAAA,GAAmB,KAAK,CAAC,QAAQ,CAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC7D,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAI;AACpB,YAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;gBAC3B,OAAO;AACH,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,YAAY,EAAE,MAAM;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBAC3B,CAAA;aACJ;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5B,IAAI,IAAI,EAAE;AACN,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAA;gBACjC,OAAO;AACH,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM;oBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B,CAAA;aACJ;iBAAM;gBACH,OAAO;AACH,oBAAA,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,KAAK,CAAC,MAAM;AAC1B,oBAAA,QAAQ,EAAE,SAAS;iBACtB,CAAA;aACJ;AACL,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;QAEQ,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAClB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AACQ,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAEvD,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EACxB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AACQ,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAEnE,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EACpB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AACQ,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;AAavE,KAAA;AA7DY,IAAA,KAAK,CAA0B;AAkDxC,IAAA,OAAO,CAAC,KAAsB,EAAA;AAC1B,QAAA,OAAO,IAAI,UAAU,CAAC,MAAK;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;AAClB,iBAAA,IAAI,CACD,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAC5B,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CACvD;AACA,iBAAA,SAAS,EAAE,CAAA;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,SAAC,CAAC,CAAA;KACL;8GAhEQ,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAJ,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAJ,IAAI,EAAA,UAAA,EAAA,CAAA;kBALhB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,QAAQ;AACrB,iBAAA,CAAA;;;;ACvPD;;;;;;;;;;;;AAYG;MAQU,aAAa,CAAA;AACb,IAAA,OAAO,CAA4D;AACnE,IAAA,KAAK,CAA+C;AACpD,IAAA,SAAS,CAAyB;AAM3C,IAAA,WAAA,GAAA;AARS,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,EAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AACnE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC,CAAA;AAElC,QAAA,IAAA,CAAA,UAAU,GAAoB,QAAQ,CAC3C,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CACzF,CAAA;QAGG,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;KAClC;AAED,IAAA,GAAG,CAAC,KAAc,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KAC5B;8GAfQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,cAAc;AACpC,qBAAA;AACJ,iBAAA,CAAA;;AAmBD;;;;;;;AAOG;MAMU,QAAQ,CAAA;AACR,IAAA,MAAM,CAAwC;AAC9C,IAAA,QAAQ,CAAoD;AAGrE,IAAA,WAAA,GAAA;QAJS,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AAC5D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAG9B,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7E,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAA;YACtC,IAAI,CAAC,OAAO,EAAE;;gBAEV,OAAM;aACT;AAED,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;AAC1B,gBAAA,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;aACvC;iBAAM;AACH,gBAAA,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;aACvC;AACL,SAAC,CAAC,CAAA;KACL;8GApBQ,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,iOA/BR,aAAa,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FA+Bb,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;oBACxB,cAAc,EAAE,CAAC,aAAa,CAAC;AAClC,iBAAA,CAAA;;;ACrDD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAE7B,MAAM,UAAU,GAAG,2DAA0D;AAC7E,MAAM,YAAY,GAAG,wCAAuC;AAEnE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAK,EAAA,EAAA,YAAY,CAAS,MAAA,EAAA,UAAU,CAAK,GAAA,CAAA,CAAC,CAAA;MAEtD,cAAc,CAAA;AACvB,IAAA,OAAO,MAAM,CAAC,KAAU,EAAE,WAAoB,EAAA;AAC1C,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SACxC;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAChC,IAAI,KAAK,EAAE;AACP,gBAAA,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAA;aACvE;SACJ;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,YAAA,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;SAChD;AAED,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAA,CAAE,CAAC,CAAA;KAChE;IAED,WACoB,CAAA,KAAa,EACb,IAAa,EAAA;QADb,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;KAC7B;IAEJ,QAAQ,GAAA;AACJ,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,IAAI,CAAA;SACnB;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC1B,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAA;SACrC;aAAM;AACH,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA;SACzB;KACJ;AACJ;;ACrCK,SAAU,cAAc,CAAC,KAAmB,EAAA;IAC9C,OAAO,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,CAAA,CAAE,KAAK,OAAO,CAAA;AAClD;;ACAM,SAAU,aAAa,CAAI,KAAwB,EAAA;AACrD,IAAA,IAAI,KAAK,YAAY,UAAU,EAAE;QAC7B,OAAO,KAAK,CAAC,aAAa,CAAA;KAC7B;AACD,IAAA,OAAO,KAAK,CAAA;AAChB;;ACOM,MAAO,cAAe,SAAQ,KAAK,CAAA;AAAG,CAAA;MAW/B,UAAU,CAAA;AAEV,IAAA,SAAS,CAAU;AACnB,IAAA,SAAS,CAAmD;AAErE,IAAA,QAAQ,CAA0B;AAGlC,IAAA,WAAA,CAAY,MAAS,EAAA;QANZ,IAAS,CAAA,SAAA,GAAQ,EAAE,CAAA;QACnB,IAAS,CAAA,SAAA,GAAiD,EAAE,CAAA;AAErE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAA;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAA;AAG5C,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;QAE3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACvC,YAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrB,gBAAA,KAAK,CAAC,KAAK,GAAG,UAAU,CAAA;aAC3B;SACJ;KACJ;IAED,EAAE,CAAC,KAAQ,EAAE,EAAqB,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAClC;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SAC/B;AAED,QAAA,OAAO,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC9C,YAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;aACxC;AACL,SAAC,CAAA;KACJ;AAED;;AAEG;IACH,OAAO,CAAiC,KAAQ,EAAE,KAA2B,EAAA;QACzE,MAAM,MAAM,GAAsB,EAAE,CAAA;AACpC,QAAA,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC9C,MAAM,UAAU,GAAI,KAAwB,GAAG,SAAS,CAAC,IAAI,SAAS,CAAA;AACtE,YAAA,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAgB,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;aACxE;SACJ;AAED,QAAA,OAAO,MAAK;AACR,YAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;AACrB,gBAAA,EAAE,EAAE,CAAA;aACP;AACL,SAAC,CAAA;KACJ;AAED,IAAA,GAAG,CAAC,MAAW,EAAA;AACX,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;SACpC;QAED,MAAM,QAAQ,GAAQ,EAAE,CAAA;AACxB,QAAA,OAAO,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9F,UAAU,CAAC,GAAG,KAAK,GAAG,YAAY,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAC5F,CAAA;KACJ;AAED,IAAA,IAAI,CAAC,KAAQ,EAAA;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAY,CAAC,CAAA;AAEzC,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IAAG;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACf,GAAG,CAAC,QAAQ,EAAE,CAAA;gBACd,OAAM;aACT;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACf,GAAG,CAAC,QAAQ,EAAE,CAAA;gBACd,OAAM;aACT;YAED,MAAM,WAAW,GAAG,QAAQ;iBACvB,GAAG,CAAC,OAAO,IAAG;AACX,gBAAA,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;AACxB,gBAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;iBAClB;qBAAM;AACH,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;iBACtB;AACL,aAAC,CAAC;AACD,iBAAA,GAAG,CAAC,OAAO,IACR,OAAO,CAAC,IAAI,CACR,UAAU,CAAC,GAAG,IAAG;AACb,gBAAA,IAAI,GAAG,YAAY,cAAc,EAAE;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACzC,oBAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;wBACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;qBAChC;AACD,oBAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACd,GAAG,CAAC,QAAQ,EAAE,CAAA;AACd,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;iBAClB;qBAAM;AACH,oBAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;iBAC/B;aACJ,CAAC,CACL,CACJ,CAAA;AAEL,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;aAC9D;iBAAM;AACH,gBAAA,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;oBAC9B,OAAO,QAAQ,CAAC,WAAW,CAAC;yBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;yBACtB,SAAS,CAAC,GAAG,CAAC,CAAA;iBACtB;qBAAM;AACH,oBAAA,OAAO,MAAM,CAAC,GAAG,WAAW,CAAC;yBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;yBACtB,SAAS,CAAC,GAAG,CAAC,CAAA;iBACtB;aACJ;AACL,SAAC,CAAC,CAAA;KACL;IAED,OAAO,GAAA;QACH,CAAC;AAAC,QAAA,IAAY,CAAC,SAAS,GAAG,IAAW,CAAA;KACzC;AACJ;;AC3JM,MAAM,IAAI,GAAI,MAAc,CAAC,IAAI,CAAA;AAElC,SAAU,eAAe,CAAmB,GAAM,EAAA;IACpD,MAAM,MAAM,GACR,OAAO,IAAI,KAAK,WAAW,IAAK,IAAY,CAAC,UAAU;AACnD,UAAG,IAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/B,UAAE,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE,CAAA;AACjC,IAAA,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,WAAW,GAAG,MAAM,GAAG,GAAG,CAAA;AAC/D,CAAC;AAEY,MAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,EAAC;AACrD,MAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,EAAC;AACzD,MAAA,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,EAAC;AACvD,MAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,EAAC;AAC3D,MAAA,wBAAwB,GAAG,MAAM,CAAC,eAAe,CAAC,uBAAuB,CAAC,EAAC;AAC3E,MAAA,uBAAuB,GAAG,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC;;ACXrF,MAAM,QAAQ,CAAA;AACV,IAAA,MAAM,CAAK;IACX,OAAO,GAA0B,EAAE,CAAA;IACnC,QAAQ,GAA0B,EAAE,CAAA;AAE7B,IAAA,MAAM,CAAC,OAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAA;KACnB;AAEM,IAAA,UAAU,CAAC,OAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC9B,SAAC,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,EAAE,CAAA;KACnB;AAEM,IAAA,OAAO,CAAC,OAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAA;KACnB;AAEM,IAAA,QAAQ,CAAC,EAAe,EAAE,KAA6B,EAAE,KAAsB,EAAA;AAClF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAK;AACb,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACX,oBAAA,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;iBAC7B;qBAAM;oBACH,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;iBAC7B;aACJ;YAED,KAAK,IAAI,KAAK,EAAE,CAAA;AACpB,SAAC,CAAC,CAAA;KACL;AAEM,IAAA,aAAa,CAAC,EAAe,EAAE,KAA6B,EAAE,KAAsB,EAAA;AACvF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAK;AACb,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACX,oBAAA,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;iBACxB;qBAAM;AACH,oBAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;iBACxB;aACJ;YAED,KAAK,IAAI,KAAK,EAAE,CAAA;AACpB,SAAC,CAAC,CAAA;KACL;IAEO,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;SACjE;KACJ;IAEO,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QAEvB,IAAI,CAAC,OAAO,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,CAAC,CAAA;AAEZ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7C,IAAI,CAAC,SAAS,EAAE,CAAA;SACnB;KACJ;AACJ,CAAA;AAED,SAAS,IAAI,CAAC,KAAuB,EAAA;AACjC,IAAA,IAAI,IAAoB,CAAA;IACxB,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,GAAG;AAC5B,QAAA,IAAI,EAAE,CAAA;KACT;AACL,CAAC;AAEY,MAAA,OAAO,GAAG,IAAI,QAAQ;;AChFnC;AAEa,MAAA,SAAS,GAAqB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAS;AAC9G;AACO,MAAM,aAAa,GAAgDA,gBAAqB;AAEzF,SAAU,UAAU,CAAI,GAAM,EAAA;AAChC,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACb,QAAA,OAAO,GAAU,CAAA;KACpB;AAED,IAAA,IAAI,GAAG,YAAY,GAAG,EAAE;AACpB,QAAA,GAAG,CAAC,KAAK;AACL,YAAA,GAAG,CAAC,MAAM;AACV,gBAAA,GAAG,CAAC,GAAG;AACH,oBAAA,YAAA;AACI,wBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;AACvC,qBAAC,CAAA;KACZ;AAAM,SAAA,IAAI,GAAG,YAAY,GAAG,EAAE;AAC3B,QAAA,GAAG,CAAC,GAAG;AACH,YAAA,GAAG,CAAC,KAAK;AACT,gBAAA,GAAG,CAAC,MAAM;AACN,oBAAA,YAAA;AACI,wBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;AACvC,qBAAC,CAAA;KACZ;;AAGD,IAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAElB,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3C,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC,CAAA;AAC/B,QAAA,MAAM,IAAI,GAAG,OAAO,IAAI,CAAA;;AAGxB,QAAA,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtE,UAAU,CAAC,IAAI,CAAC,CAAA;SACnB;AACL,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,GAAU,CAAA;AACrB,CAAC;AAED;;;;;AAKG;AACa,SAAA,QAAQ,CAAI,KAAmB,EAAE,EAA0B,EAAA;AACvE,IAAA,IAAI,OAAQ,KAAa,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC/C,QAAA,OAAQ,KAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;KACrC;SAAM;QACH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KACjC;AACL;;AC3DA;;AAEG;;;;"}
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 (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","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngutil/common",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "peerDependencies": {
5
5
  "@angular/cdk": "^17.3.6",
6
6
  "@angular/core": "^17.3.6",