@taiga-ui/cdk 4.5.0-canary.50decb3 → 4.5.0-canary.d55e3ee

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.
Files changed (30) hide show
  1. package/directives/native-validator/native-validator.directive.d.ts +1 -2
  2. package/esm2022/directives/native-validator/native-validator.directive.mjs +4 -7
  3. package/esm2022/directives/obscured/obscured.service.mjs +3 -3
  4. package/esm2022/utils/color/parse-gradient.mjs +8 -8
  5. package/esm2022/utils/color/rgba-to-hex.mjs +3 -3
  6. package/esm2022/utils/miscellaneous/is-valid-url.mjs +7 -7
  7. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs +3 -6
  8. package/fesm2022/taiga-ui-cdk-directives-native-validator.mjs.map +1 -1
  9. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs +2 -2
  10. package/fesm2022/taiga-ui-cdk-directives-obscured.mjs.map +1 -1
  11. package/fesm2022/taiga-ui-cdk-utils-color.mjs +9 -9
  12. package/fesm2022/taiga-ui-cdk-utils-color.mjs.map +1 -1
  13. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs +6 -6
  14. package/fesm2022/taiga-ui-cdk-utils-miscellaneous.mjs.map +1 -1
  15. package/package.json +4 -4
  16. package/schematics/constants/taiga-styles.d.ts +0 -2
  17. package/schematics/constants/taiga-styles.js +1 -3
  18. package/schematics/ng-add/index.js +4 -7
  19. package/schematics/ng-add/schema.d.ts +0 -1
  20. package/schematics/ng-add/schema.json +0 -9
  21. package/schematics/ng-add/steps/add-taiga-modules.js +2 -0
  22. package/schematics/ng-add/steps/add-taiga-styles.js +1 -4
  23. package/schematics/ng-update/v4/index.js +4 -0
  24. package/schematics/ng-update/v4/steps/constants/identifiers-to-replace.js +0 -41
  25. package/schematics/ng-update/v4/steps/drop-universal-mock.d.ts +2 -0
  26. package/schematics/ng-update/v4/steps/drop-universal-mock.js +20 -0
  27. package/schematics/ng-update/v4/steps/migrate-editor.d.ts +5 -0
  28. package/schematics/ng-update/v4/steps/migrate-editor.js +77 -0
  29. package/schematics/ng-update/v4/steps/update-packages.d.ts +0 -1
  30. package/schematics/ng-update/v4/steps/update-packages.js +1 -6
@@ -3,12 +3,11 @@ import * as i0 from "@angular/core";
3
3
  export declare class TuiNativeValidator implements Validator {
4
4
  private readonly destroyRef;
5
5
  private readonly zone;
6
- private readonly host;
6
+ private readonly el;
7
7
  private control?;
8
8
  tuiNativeValidator: string;
9
9
  validate(control: AbstractControl): null;
10
10
  protected handleValidation(): void;
11
- private get el();
12
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiNativeValidator, never>;
13
12
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiNativeValidator, "[tuiNativeValidator]", never, { "tuiNativeValidator": { "alias": "tuiNativeValidator"; "required": false; }; }, {}, never, never, true, never>;
14
13
  }
@@ -8,7 +8,7 @@ class TuiNativeValidator {
8
8
  constructor() {
9
9
  this.destroyRef = inject(DestroyRef);
10
10
  this.zone = inject(NgZone);
11
- this.host = tuiInjectElement();
11
+ this.el = tuiInjectElement();
12
12
  this.tuiNativeValidator = 'Invalid';
13
13
  }
14
14
  validate(control) {
@@ -21,11 +21,8 @@ class TuiNativeValidator {
21
21
  handleValidation() {
22
22
  this.el.setCustomValidity?.(this.control?.touched && this.control?.invalid ? this.tuiNativeValidator : '');
23
23
  }
24
- get el() {
25
- return this.host.querySelector('input,textarea,select') || this.host;
26
- }
27
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
28
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeValidator, isStandalone: true, selector: "[tuiNativeValidator]", inputs: { tuiNativeValidator: "tuiNativeValidator" }, host: { listeners: { "blur": "handleValidation()" } }, providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)], ngImport: i0 }); }
25
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeValidator, isStandalone: true, selector: "[tuiNativeValidator]", inputs: { tuiNativeValidator: "tuiNativeValidator" }, host: { listeners: { "focusout": "handleValidation()" } }, providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)], ngImport: i0 }); }
29
26
  }
30
27
  export { TuiNativeValidator };
31
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeValidator, decorators: [{
@@ -35,10 +32,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35
32
  selector: '[tuiNativeValidator]',
36
33
  providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)],
37
34
  host: {
38
- '(blur)': 'handleValidation()',
35
+ '(focusout)': 'handleValidation()',
39
36
  },
40
37
  }]
41
38
  }], propDecorators: { tuiNativeValidator: [{
42
39
  type: Input
43
40
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yL25hdGl2ZS12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTNCLE1BUWEsa0JBQWtCO0lBUi9CO1FBU3FCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7UUFJdEQsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO0tBcUJ6QztJQW5CVSxRQUFRLENBQUMsT0FBd0I7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNwRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUU5QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNoRixDQUFDO0lBQ04sQ0FBQztJQUVELElBQVksRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7K0dBM0JRLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdMQUxoQixDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7O1NBS3ZELGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQVI5QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxzQkFBc0IsSUFBSSxDQUFDLENBQUM7b0JBQ2hFLElBQUksRUFBRTt3QkFDRixRQUFRLEVBQUUsb0JBQW9CO3FCQUNqQztpQkFDSjs4QkFRVSxrQkFBa0I7c0JBRHhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge3R1aVRha2VVbnRpbERlc3Ryb3llZCwgdHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlQcm92aWRlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzJztcbmltcG9ydCB7dGltZXJ9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aU5hdGl2ZVZhbGlkYXRvcl0nLFxuICAgIHByb3ZpZGVyczogW3R1aVByb3ZpZGUoTkdfVkFMSURBVE9SUywgVHVpTmF0aXZlVmFsaWRhdG9yLCB0cnVlKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJsdXIpJzogJ2hhbmRsZVZhbGlkYXRpb24oKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTmF0aXZlVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuICAgIHByaXZhdGUgY29udHJvbD86IEFic3RyYWN0Q29udHJvbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aU5hdGl2ZVZhbGlkYXRvciA9ICdJbnZhbGlkJztcblxuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBudWxsIHtcbiAgICAgICAgdGhpcy5jb250cm9sID0gY29udHJvbDtcblxuICAgICAgICB0aW1lcigwKVxuICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUodGhpcy56b25lKSwgdHVpVGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlVmFsaWRhdGlvbigpKTtcblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbC5zZXRDdXN0b21WYWxpZGl0eT8uKFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMudHVpTmF0aXZlVmFsaWRhdG9yIDogJycsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZWwoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3QucXVlcnlTZWxlY3RvcignaW5wdXQsdGV4dGFyZWEsc2VsZWN0JykgfHwgdGhpcy5ob3N0O1xuICAgIH1cbn1cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXZhbGlkYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yL25hdGl2ZS12YWxpZGF0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTNCLE1BUWEsa0JBQWtCO0lBUi9CO1FBU3FCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixPQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7UUFJcEQsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO0tBaUJ6QztJQWZVLFFBQVEsQ0FBQyxPQUF3QjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUV2QixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2hGLENBQUM7SUFDTixDQUFDOytHQXZCUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixvTEFMaEIsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDOztTQUt2RCxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFSOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsc0JBQXNCLElBQUksQ0FBQyxDQUFDO29CQUNoRSxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLG9CQUFvQjtxQkFDckM7aUJBQ0o7OEJBUVUsa0JBQWtCO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TkdfVkFMSURBVE9SU30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHt0dWlUYWtlVW50aWxEZXN0cm95ZWQsIHR1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudCwgdHVpUHJvdmlkZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscyc7XG5pbXBvcnQge3RpbWVyfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlOYXRpdmVWYWxpZGF0b3JdJyxcbiAgICBwcm92aWRlcnM6IFt0dWlQcm92aWRlKE5HX1ZBTElEQVRPUlMsIFR1aU5hdGl2ZVZhbGlkYXRvciwgdHJ1ZSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c291dCknOiAnaGFuZGxlVmFsaWRhdGlvbigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlOYXRpdmVWYWxpZGF0b3IgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PigpO1xuICAgIHByaXZhdGUgY29udHJvbD86IEFic3RyYWN0Q29udHJvbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aU5hdGl2ZVZhbGlkYXRvciA9ICdJbnZhbGlkJztcblxuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBudWxsIHtcbiAgICAgICAgdGhpcy5jb250cm9sID0gY29udHJvbDtcblxuICAgICAgICB0aW1lcigwKVxuICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUodGhpcy56b25lKSwgdHVpVGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlVmFsaWRhdGlvbigpKTtcblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbC5zZXRDdXN0b21WYWxpZGl0eT8uKFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMudHVpTmF0aXZlVmFsaWRhdG9yIDogJycsXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { WA_ANIMATION_FRAME } from '@ng-web-apis/common';
3
- import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
3
+ import { tuiZonefreeScheduler, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
4
4
  import { tuiGetElementObscures, tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
5
5
  import { distinctUntilChanged, map, Observable, startWith, throttleTime } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
@@ -12,7 +12,7 @@ class TuiObscuredService extends Observable {
12
12
  constructor() {
13
13
  super((subscriber) => this.obscured$.subscribe(subscriber));
14
14
  this.el = tuiInjectElement();
15
- this.obscured$ = inject(WA_ANIMATION_FRAME).pipe(throttleTime(100), map(() => tuiGetElementObscures(this.el)), startWith(null), distinctUntilChanged(), tuiZoneOptimized());
15
+ this.obscured$ = inject(WA_ANIMATION_FRAME).pipe(throttleTime(100, tuiZonefreeScheduler()), map(() => tuiGetElementObscures(this.el)), startWith(null), distinctUntilChanged(), tuiZoneOptimized());
16
16
  }
17
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObscuredService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
18
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObscuredService }); }
@@ -21,4 +21,4 @@ export { TuiObscuredService };
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObscuredService, decorators: [{
22
22
  type: Injectable
23
23
  }], ctorParameters: function () { return []; } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzY3VyZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL29ic2N1cmVkL29ic2N1cmVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFcEY7OztHQUdHO0FBQ0gsTUFDYSxrQkFBbUIsU0FBUSxVQUFxQztJQVV6RTtRQUNJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQVYvQyxPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUN4RCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLG9CQUFvQixFQUFFLEVBQ3RCLGdCQUFnQixFQUFFLENBQ3JCLENBQUM7SUFJRixDQUFDOytHQVpRLGtCQUFrQjttSEFBbEIsa0JBQWtCOztTQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V0FfQU5JTUFUSU9OX0ZSQU1FfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7dHVpWm9uZU9wdGltaXplZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUdldEVsZW1lbnRPYnNjdXJlcywgdHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1vbml0b3JzIGVsZW1lbnQgdmlzaWJpbGl0eSBieSBwb2xsaW5nIGFuZCByZXR1cm5pbmdcbiAqIGVpdGhlciBudWxsIG9yIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgb3ZlcmxhcCBnaXZlbiBlbGVtZW50IGVkZ2VzXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdWlPYnNjdXJlZFNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzY3VyZWQkID0gaW5qZWN0KFdBX0FOSU1BVElPTl9GUkFNRSkucGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCksXG4gICAgICAgIG1hcCgoKSA9PiB0dWlHZXRFbGVtZW50T2JzY3VyZXModGhpcy5lbCkpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHR1aVpvbmVPcHRpbWl6ZWQoKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB0aGlzLm9ic2N1cmVkJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzY3VyZWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL29ic2N1cmVkL29ic2N1cmVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDakYsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFcEY7OztHQUdHO0FBQ0gsTUFDYSxrQkFBbUIsU0FBUSxVQUFxQztJQVV6RTtRQUNJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQVYvQyxPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUN4RCxZQUFZLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFDekMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2Ysb0JBQW9CLEVBQUUsRUFDdEIsZ0JBQWdCLEVBQUUsQ0FDckIsQ0FBQztJQUlGLENBQUM7K0dBWlEsa0JBQWtCO21IQUFsQixrQkFBa0I7O1NBQWxCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXQV9BTklNQVRJT05fRlJBTUV9IGZyb20gJ0BuZy13ZWItYXBpcy9jb21tb24nO1xuaW1wb3J0IHt0dWlab25lZnJlZVNjaGVkdWxlciwgdHVpWm9uZU9wdGltaXplZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUdldEVsZW1lbnRPYnNjdXJlcywgdHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1vbml0b3JzIGVsZW1lbnQgdmlzaWJpbGl0eSBieSBwb2xsaW5nIGFuZCByZXR1cm5pbmdcbiAqIGVpdGhlciBudWxsIG9yIGFuIGFycmF5IG9mIGVsZW1lbnRzIHRoYXQgb3ZlcmxhcCBnaXZlbiBlbGVtZW50IGVkZ2VzXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdWlPYnNjdXJlZFNlcnZpY2UgZXh0ZW5kcyBPYnNlcnZhYmxlPHJlYWRvbmx5IEVsZW1lbnRbXSB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzY3VyZWQkID0gaW5qZWN0KFdBX0FOSU1BVElPTl9GUkFNRSkucGlwZShcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCwgdHVpWm9uZWZyZWVTY2hlZHVsZXIoKSksXG4gICAgICAgIG1hcCgoKSA9PiB0dWlHZXRFbGVtZW50T2JzY3VyZXModGhpcy5lbCkpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHR1aVpvbmVPcHRpbWl6ZWQoKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB0aGlzLm9ic2N1cmVkJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cbn1cbiJdfQ==
@@ -4,11 +4,11 @@ import { tuiParseColor } from './parse-color';
4
4
  // https://stackoverflow.com/a/20238168/2706426
5
5
  //
6
6
  // SETUP CODE
7
- const COMMA = '\\s*,\\s*'; // Allow space around comma.
7
+ const COMMA = String.raw `\s*,\s*`; // Allow space around comma.
8
8
  const HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form
9
- const RGB = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)'; // "(1, 2, 3)"
10
- const RGBA = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)'; // "(1, 2, 3, 4)"
11
- const VALUE = '(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?'; // ".9", "-5px", "100%".
9
+ const RGB = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*\)`; // "(1, 2, 3)"
10
+ const RGBA = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*,\s*\d*\.?\d+\)`; // "(1, 2, 3, 4)"
11
+ const VALUE = String.raw `(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?`; // ".9", "-5px", "100%".
12
12
  const KEYWORD = '[_a-z-][_a-z0-9-]*'; // "red", "transparent", "border-collapse".
13
13
  const COLOR = [
14
14
  '(?:',
@@ -24,16 +24,16 @@ const COLOR = [
24
24
  ')',
25
25
  ];
26
26
  const REGEXP_ARRAY = [
27
- '\\s*(',
27
+ String.raw `\s*(`,
28
28
  ...COLOR,
29
29
  ')',
30
- '(?:\\s+',
30
+ String.raw `(?:\s+`,
31
31
  '(',
32
32
  VALUE,
33
33
  '))?',
34
34
  '(?:',
35
35
  COMMA,
36
- '\\s*)?',
36
+ String.raw `\s*)?`,
37
37
  ];
38
38
  function getPosition(match, stops) {
39
39
  const fallback = stops === 1 ? '100%' : `${stops}%`;
@@ -67,4 +67,4 @@ export function tuiToGradient({ stops, side }) {
67
67
  .map(({ color, position }) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`)
68
68
  .join(', ')})`;
69
69
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZ3JhZGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvcGFyc2UtZ3JhZGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQW9CNUMsRUFBRTtBQUNGLG1EQUFtRDtBQUNuRCwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGFBQWE7QUFDYixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyw0QkFBNEI7QUFDdkQsTUFBTSxHQUFHLEdBQUcsOEJBQThCLENBQUMsQ0FBQyx3QkFBd0I7QUFDcEUsTUFBTSxHQUFHLEdBQUcsZ0RBQWdELENBQUMsQ0FBQyxjQUFjO0FBQzVFLE1BQU0sSUFBSSxHQUFHLGlFQUFpRSxDQUFDLENBQUMsaUJBQWlCO0FBQ2pHLE1BQU0sS0FBSyxHQUFHLG9DQUFvQyxDQUFDLENBQUMsd0JBQXdCO0FBQzVFLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLENBQUMsMkNBQTJDO0FBQ2pGLE1BQU0sS0FBSyxHQUFHO0lBQ1YsS0FBSztJQUNMLEdBQUc7SUFDSCxHQUFHO0lBQ0gsYUFBYTtJQUNiLEdBQUc7SUFDSCxHQUFHO0lBQ0gsZUFBZTtJQUNmLElBQUk7SUFDSixHQUFHO0lBQ0gsT0FBTztJQUNQLEdBQUc7Q0FDTixDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUc7SUFDakIsT0FBTztJQUNQLEdBQUcsS0FBSztJQUNSLEdBQUc7SUFDSCxTQUFTO0lBQ1QsR0FBRztJQUNILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxRQUFRO0NBQ1gsQ0FBQztBQUVGLFNBQVMsV0FBVyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzdDLE1BQU0sUUFBUSxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQztJQUVwRCxPQUFPLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYTtJQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELE1BQU0sV0FBVyxHQUNiLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtRQUN6RCxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWhCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUMsQ0FBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBMEI7UUFDL0MsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNsQixJQUFJLEtBQUssR0FBK0IsRUFBRSxDQUFDO0lBRTNDLElBQUksY0FBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkQsT0FBTyxjQUFjLEtBQUssSUFBSSxFQUFFO1FBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUM5QixRQUFRLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUMvRCxDQUFDLENBQUM7UUFFSCxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUNsRDtJQUVELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFcEYsT0FBTztRQUNILEtBQUs7UUFDTCxJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBb0I7SUFDMUQsT0FBTyxtQkFBbUIsSUFBSSxLQUFLLEtBQUs7U0FDbkMsR0FBRyxDQUNBLENBQUMsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FDaEY7U0FDQSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlQYXJzZUNvbG9yfSBmcm9tICcuL3BhcnNlLWNvbG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlQYXJzZWRHcmFkaWVudCB7XG4gICAgcmVhZG9ubHkgc2lkZTogVHVpR3JhZGllbnREaXJlY3Rpb247XG4gICAgcmVhZG9ubHkgc3RvcHM6IFJlYWRvbmx5QXJyYXk8e1xuICAgICAgICByZWFkb25seSBjb2xvcjogc3RyaW5nO1xuICAgICAgICByZWFkb25seSBwb3NpdGlvbjogc3RyaW5nO1xuICAgIH0+O1xufVxuXG5leHBvcnQgdHlwZSBUdWlHcmFkaWVudERpcmVjdGlvbiA9XG4gICAgfCAndG8gYm90dG9tIGxlZnQnXG4gICAgfCAndG8gYm90dG9tIHJpZ2h0J1xuICAgIHwgJ3RvIGJvdHRvbSdcbiAgICB8ICd0byBsZWZ0J1xuICAgIHwgJ3RvIHJpZ2h0J1xuICAgIHwgJ3RvIHRvcCBsZWZ0J1xuICAgIHwgJ3RvIHRvcCByaWdodCdcbiAgICB8ICd0byB0b3AnO1xuXG4vL1xuLy8gVHlwZVNjcmlwdCBwYXJzZXIgYmFzZWQgb24gRGVhbiBUYXlsb3IncyBhbnN3ZXI6XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjAyMzgxNjgvMjcwNjQyNlxuLy9cbi8vIFNFVFVQIENPREVcbmNvbnN0IENPTU1BID0gJ1xcXFxzKixcXFxccyonOyAvLyBBbGxvdyBzcGFjZSBhcm91bmQgY29tbWEuXG5jb25zdCBIRVggPSAnIyg/OlthLWYwLTldezZ9fFthLWYwLTldezN9KSc7IC8vIDMgb3IgNiBjaGFyYWN0ZXIgZm9ybVxuY29uc3QgUkdCID0gJ1xcXFwoXFxcXHMqKD86XFxcXGR7MSwzfVxcXFxzKixcXFxccyopezJ9XFxcXGR7MSwzfVxcXFxzKlxcXFwpJzsgLy8gXCIoMSwgMiwgMylcIlxuY29uc3QgUkdCQSA9ICdcXFxcKFxcXFxzKig/OlxcXFxkezEsM31cXFxccyosXFxcXHMqKXsyfVxcXFxkezEsM31cXFxccyosXFxcXHMqXFxcXGQqXFxcXC4/XFxcXGQrXFxcXCknOyAvLyBcIigxLCAyLCAzLCA0KVwiXG5jb25zdCBWQUxVRSA9ICcoPzpbKy1dP1xcXFxkKlxcXFwuP1xcXFxkKykoPzolfFthLXpdKyk/JzsgLy8gXCIuOVwiLCBcIi01cHhcIiwgXCIxMDAlXCIuXG5jb25zdCBLRVlXT1JEID0gJ1tfYS16LV1bX2EtejAtOS1dKic7IC8vIFwicmVkXCIsIFwidHJhbnNwYXJlbnRcIiwgXCJib3JkZXItY29sbGFwc2VcIi5cbmNvbnN0IENPTE9SID0gW1xuICAgICcoPzonLFxuICAgIEhFWCxcbiAgICAnfCcsXG4gICAgJyg/OnJnYnxoc2wpJyxcbiAgICBSR0IsXG4gICAgJ3wnLFxuICAgICcoPzpyZ2JhfGhzbGEpJyxcbiAgICBSR0JBLFxuICAgICd8JyxcbiAgICBLRVlXT1JELFxuICAgICcpJyxcbl07XG5jb25zdCBSRUdFWFBfQVJSQVkgPSBbXG4gICAgJ1xcXFxzKignLFxuICAgIC4uLkNPTE9SLFxuICAgICcpJyxcbiAgICAnKD86XFxcXHMrJyxcbiAgICAnKCcsXG4gICAgVkFMVUUsXG4gICAgJykpPycsXG4gICAgJyg/OicsXG4gICAgQ09NTUEsXG4gICAgJ1xcXFxzKik/Jyxcbl07XG5cbmZ1bmN0aW9uIGdldFBvc2l0aW9uKG1hdGNoOiBzdHJpbmcsIHN0b3BzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZhbGxiYWNrID0gc3RvcHMgPT09IDEgPyAnMTAwJScgOiBgJHtzdG9wc30lYDtcblxuICAgIHJldHVybiBtYXRjaD8uaW5jbHVkZXMoJyUnKSA/IG1hdGNoIDogZmFsbGJhY2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlQYXJzZUdyYWRpZW50KGlucHV0OiBzdHJpbmcpOiBUdWlQYXJzZWRHcmFkaWVudCB7XG4gICAgY29uc3Qgc3RvcHNSZWdleHAgPSBuZXcgUmVnRXhwKFJFR0VYUF9BUlJBWS5qb2luKCcnKSwgJ2dpJyk7XG4gICAgY29uc3Qgc3RvcHNTdHJpbmcgPVxuICAgICAgICBpbnB1dC5zdGFydHNXaXRoKCd0bycpIHx8IGlucHV0Lm1hdGNoKC9eXFxkLylcbiAgICAgICAgICAgID8gaW5wdXQuc2xpY2UoTWF0aC5tYXgoMCwgaW5wdXQuaW5kZXhPZignLCcpICsgMSkpLnRyaW0oKVxuICAgICAgICAgICAgOiBpbnB1dDtcblxuICAgIGNvbnN0IHNpZGUgPSBpbnB1dC5zdGFydHNXaXRoKCd0bycpXG4gICAgICAgID8gKGlucHV0LnNwbGl0KCcsJylbMF0gYXMgVHVpR3JhZGllbnREaXJlY3Rpb24pXG4gICAgICAgIDogJ3RvIGJvdHRvbSc7XG4gICAgbGV0IHN0b3BzOiBUdWlQYXJzZWRHcmFkaWVudFsnc3RvcHMnXSA9IFtdO1xuXG4gICAgbGV0IG1hdGNoQ29sb3JTdG9wID0gc3RvcHNSZWdleHAuZXhlYyhzdG9wc1N0cmluZyk7XG5cbiAgICB3aGlsZSAobWF0Y2hDb2xvclN0b3AgIT09IG51bGwpIHtcbiAgICAgICAgc3RvcHMgPSBzdG9wcy5jb25jYXQoe1xuICAgICAgICAgICAgY29sb3I6IG1hdGNoQ29sb3JTdG9wWzFdIHx8ICcnLFxuICAgICAgICAgICAgcG9zaXRpb246IGdldFBvc2l0aW9uKG1hdGNoQ29sb3JTdG9wWzJdIHx8ICcnLCBzdG9wcy5sZW5ndGgpLFxuICAgICAgICB9KTtcblxuICAgICAgICBtYXRjaENvbG9yU3RvcCA9IHN0b3BzUmVnZXhwLmV4ZWMoc3RvcHNTdHJpbmcpO1xuICAgIH1cblxuICAgIHN0b3BzID0gc3RvcHMuZmlsdGVyKCh7Y29sb3J9KSA9PiBjb2xvci5zdGFydHNXaXRoKCcjJykgfHwgY29sb3Iuc3RhcnRzV2l0aCgncmdiJykpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RvcHMsXG4gICAgICAgIHNpZGUsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVRvR3JhZGllbnQoe3N0b3BzLCBzaWRlfTogVHVpUGFyc2VkR3JhZGllbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7c2lkZX0sICR7c3RvcHNcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAgICh7Y29sb3IsIHBvc2l0aW9ufSkgPT4gYHJnYmEoJHt0dWlQYXJzZUNvbG9yKGNvbG9yKS5qb2luKCcsICcpfSkgJHtwb3NpdGlvbn1gLFxuICAgICAgICApXG4gICAgICAgIC5qb2luKCcsICcpfSlgO1xufVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZ3JhZGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvcGFyc2UtZ3JhZGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQW9CNUMsRUFBRTtBQUNGLG1EQUFtRDtBQUNuRCwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLGFBQWE7QUFDYixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBLFNBQVMsQ0FBQyxDQUFDLDRCQUE0QjtBQUMvRCxNQUFNLEdBQUcsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLHdCQUF3QjtBQUNwRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBLHdDQUF3QyxDQUFDLENBQUMsY0FBYztBQUM5RSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBLHFEQUFxRCxDQUFDLENBQUMsaUJBQWlCO0FBQy9GLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUEsaUNBQWlDLENBQUMsQ0FBQyx3QkFBd0I7QUFDbkYsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsQ0FBQywyQ0FBMkM7QUFDakYsTUFBTSxLQUFLLEdBQUc7SUFDVixLQUFLO0lBQ0wsR0FBRztJQUNILEdBQUc7SUFDSCxhQUFhO0lBQ2IsR0FBRztJQUNILEdBQUc7SUFDSCxlQUFlO0lBQ2YsSUFBSTtJQUNKLEdBQUc7SUFDSCxPQUFPO0lBQ1AsR0FBRztDQUNOLENBQUM7QUFDRixNQUFNLFlBQVksR0FBRztJQUNqQixNQUFNLENBQUMsR0FBRyxDQUFBLE1BQU07SUFDaEIsR0FBRyxLQUFLO0lBQ1IsR0FBRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUEsUUFBUTtJQUNsQixHQUFHO0lBQ0gsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUEsT0FBTztDQUNwQixDQUFDO0FBRUYsU0FBUyxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDN0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDO0lBRXBELE9BQU8sS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhO0lBQzFDLE1BQU0sV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUQsTUFBTSxXQUFXLEdBQ2IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFaEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0IsQ0FBQyxDQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUEwQjtRQUMvQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLElBQUksS0FBSyxHQUErQixFQUFFLENBQUM7SUFFM0MsSUFBSSxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxPQUFPLGNBQWMsS0FBSyxJQUFJLEVBQUU7UUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakIsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQzlCLFFBQVEsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQy9ELENBQUMsQ0FBQztRQUVILGNBQWMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVwRixPQUFPO1FBQ0gsS0FBSztRQUNMLElBQUk7S0FDUCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFvQjtJQUMxRCxPQUFPLG1CQUFtQixJQUFJLEtBQUssS0FBSztTQUNuQyxHQUFHLENBQ0EsQ0FBQyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUNoRjtTQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3R1aVBhcnNlQ29sb3J9IGZyb20gJy4vcGFyc2UtY29sb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR1aVBhcnNlZEdyYWRpZW50IHtcbiAgICByZWFkb25seSBzaWRlOiBUdWlHcmFkaWVudERpcmVjdGlvbjtcbiAgICByZWFkb25seSBzdG9wczogUmVhZG9ubHlBcnJheTx7XG4gICAgICAgIHJlYWRvbmx5IGNvbG9yOiBzdHJpbmc7XG4gICAgICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBzdHJpbmc7XG4gICAgfT47XG59XG5cbmV4cG9ydCB0eXBlIFR1aUdyYWRpZW50RGlyZWN0aW9uID1cbiAgICB8ICd0byBib3R0b20gbGVmdCdcbiAgICB8ICd0byBib3R0b20gcmlnaHQnXG4gICAgfCAndG8gYm90dG9tJ1xuICAgIHwgJ3RvIGxlZnQnXG4gICAgfCAndG8gcmlnaHQnXG4gICAgfCAndG8gdG9wIGxlZnQnXG4gICAgfCAndG8gdG9wIHJpZ2h0J1xuICAgIHwgJ3RvIHRvcCc7XG5cbi8vXG4vLyBUeXBlU2NyaXB0IHBhcnNlciBiYXNlZCBvbiBEZWFuIFRheWxvcidzIGFuc3dlcjpcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMDIzODE2OC8yNzA2NDI2XG4vL1xuLy8gU0VUVVAgQ09ERVxuY29uc3QgQ09NTUEgPSBTdHJpbmcucmF3YFxccyosXFxzKmA7IC8vIEFsbG93IHNwYWNlIGFyb3VuZCBjb21tYS5cbmNvbnN0IEhFWCA9ICcjKD86W2EtZjAtOV17Nn18W2EtZjAtOV17M30pJzsgLy8gMyBvciA2IGNoYXJhY3RlciBmb3JtXG5jb25zdCBSR0IgPSBTdHJpbmcucmF3YFxcKFxccyooPzpcXGR7MSwzfVxccyosXFxzKil7Mn1cXGR7MSwzfVxccypcXClgOyAvLyBcIigxLCAyLCAzKVwiXG5jb25zdCBSR0JBID0gU3RyaW5nLnJhd2BcXChcXHMqKD86XFxkezEsM31cXHMqLFxccyopezJ9XFxkezEsM31cXHMqLFxccypcXGQqXFwuP1xcZCtcXClgOyAvLyBcIigxLCAyLCAzLCA0KVwiXG5jb25zdCBWQUxVRSA9IFN0cmluZy5yYXdgKD86WystXT9cXGQqXFwuP1xcZCspKD86JXxbYS16XSspP2A7IC8vIFwiLjlcIiwgXCItNXB4XCIsIFwiMTAwJVwiLlxuY29uc3QgS0VZV09SRCA9ICdbX2Etei1dW19hLXowLTktXSonOyAvLyBcInJlZFwiLCBcInRyYW5zcGFyZW50XCIsIFwiYm9yZGVyLWNvbGxhcHNlXCIuXG5jb25zdCBDT0xPUiA9IFtcbiAgICAnKD86JyxcbiAgICBIRVgsXG4gICAgJ3wnLFxuICAgICcoPzpyZ2J8aHNsKScsXG4gICAgUkdCLFxuICAgICd8JyxcbiAgICAnKD86cmdiYXxoc2xhKScsXG4gICAgUkdCQSxcbiAgICAnfCcsXG4gICAgS0VZV09SRCxcbiAgICAnKScsXG5dO1xuY29uc3QgUkVHRVhQX0FSUkFZID0gW1xuICAgIFN0cmluZy5yYXdgXFxzKihgLFxuICAgIC4uLkNPTE9SLFxuICAgICcpJyxcbiAgICBTdHJpbmcucmF3YCg/OlxccytgLFxuICAgICcoJyxcbiAgICBWQUxVRSxcbiAgICAnKSk/JyxcbiAgICAnKD86JyxcbiAgICBDT01NQSxcbiAgICBTdHJpbmcucmF3YFxccyopP2AsXG5dO1xuXG5mdW5jdGlvbiBnZXRQb3NpdGlvbihtYXRjaDogc3RyaW5nLCBzdG9wczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBmYWxsYmFjayA9IHN0b3BzID09PSAxID8gJzEwMCUnIDogYCR7c3RvcHN9JWA7XG5cbiAgICByZXR1cm4gbWF0Y2g/LmluY2x1ZGVzKCclJykgPyBtYXRjaCA6IGZhbGxiYWNrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpUGFyc2VHcmFkaWVudChpbnB1dDogc3RyaW5nKTogVHVpUGFyc2VkR3JhZGllbnQge1xuICAgIGNvbnN0IHN0b3BzUmVnZXhwID0gbmV3IFJlZ0V4cChSRUdFWFBfQVJSQVkuam9pbignJyksICdnaScpO1xuICAgIGNvbnN0IHN0b3BzU3RyaW5nID1cbiAgICAgICAgaW5wdXQuc3RhcnRzV2l0aCgndG8nKSB8fCBpbnB1dC5tYXRjaCgvXlxcZC8pXG4gICAgICAgICAgICA/IGlucHV0LnNsaWNlKE1hdGgubWF4KDAsIGlucHV0LmluZGV4T2YoJywnKSArIDEpKS50cmltKClcbiAgICAgICAgICAgIDogaW5wdXQ7XG5cbiAgICBjb25zdCBzaWRlID0gaW5wdXQuc3RhcnRzV2l0aCgndG8nKVxuICAgICAgICA/IChpbnB1dC5zcGxpdCgnLCcpWzBdIGFzIFR1aUdyYWRpZW50RGlyZWN0aW9uKVxuICAgICAgICA6ICd0byBib3R0b20nO1xuICAgIGxldCBzdG9wczogVHVpUGFyc2VkR3JhZGllbnRbJ3N0b3BzJ10gPSBbXTtcblxuICAgIGxldCBtYXRjaENvbG9yU3RvcCA9IHN0b3BzUmVnZXhwLmV4ZWMoc3RvcHNTdHJpbmcpO1xuXG4gICAgd2hpbGUgKG1hdGNoQ29sb3JTdG9wICE9PSBudWxsKSB7XG4gICAgICAgIHN0b3BzID0gc3RvcHMuY29uY2F0KHtcbiAgICAgICAgICAgIGNvbG9yOiBtYXRjaENvbG9yU3RvcFsxXSB8fCAnJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBnZXRQb3NpdGlvbihtYXRjaENvbG9yU3RvcFsyXSB8fCAnJywgc3RvcHMubGVuZ3RoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWF0Y2hDb2xvclN0b3AgPSBzdG9wc1JlZ2V4cC5leGVjKHN0b3BzU3RyaW5nKTtcbiAgICB9XG5cbiAgICBzdG9wcyA9IHN0b3BzLmZpbHRlcigoe2NvbG9yfSkgPT4gY29sb3Iuc3RhcnRzV2l0aCgnIycpIHx8IGNvbG9yLnN0YXJ0c1dpdGgoJ3JnYicpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHN0b3BzLFxuICAgICAgICBzaWRlLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlUb0dyYWRpZW50KHtzdG9wcywgc2lkZX06IFR1aVBhcnNlZEdyYWRpZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCgke3NpZGV9LCAke3N0b3BzXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoe2NvbG9yLCBwb3NpdGlvbn0pID0+IGByZ2JhKCR7dHVpUGFyc2VDb2xvcihjb2xvcikuam9pbignLCAnKX0pICR7cG9zaXRpb259YCxcbiAgICAgICAgKVxuICAgICAgICAuam9pbignLCAnKX0pYDtcbn1cbiJdfQ==
@@ -16,8 +16,8 @@ export function tuiRgbaToHex(color) {
16
16
  return `#${hex.toUpperCase()}`;
17
17
  }
18
18
  export function tuiIsValidRgba(rgba) {
19
- const range = '(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})';
20
- const alpha = '([01]|0?\\.\\d+)';
19
+ const range = String.raw `(\d|[1-9]\d|1\d{2}|2[0-4]\d|2[0-5]{2})`;
20
+ const alpha = String.raw `([01]|0?\.\d+)`;
21
21
  return new RegExp(`^(?:rgb\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*\\)|rgba\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*,\\s*${alpha}\\s*\\))$`).test(rgba);
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmdiYS10by1oZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvcmdiYS10by1oZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNuQztJQUVELE1BQU0sR0FBRyxHQUNMLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQztRQUM1RSxJQUFJLENBQUM7SUFFVCxJQUFJLEtBQUssR0FBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVoRSxJQUFJLEdBQUcsR0FBRyxHQUFHO1FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFWixLQUFLLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLEdBQUcsSUFBSSxLQUFLLENBQUM7SUFFYixPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN2QyxNQUFNLEtBQUssR0FBRyw0Q0FBNEMsQ0FBQztJQUMzRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztJQUVqQyxPQUFPLElBQUksTUFBTSxDQUNiLGlCQUFpQixLQUFLLFlBQVksS0FBSyxZQUFZLEtBQUssc0JBQXNCLEtBQUssWUFBWSxLQUFLLFlBQVksS0FBSyxZQUFZLEtBQUssV0FBVyxDQUNwSixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHR1aVJnYmFUb0hleChjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXR1aUlzVmFsaWRSZ2JhKGNvbG9yKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUkdCYScpO1xuICAgIH1cblxuICAgIGNvbnN0IHJnYiA9XG4gICAgICAgIGNvbG9yLnJlcGxhY2VBbGwoL1xccy9nLCAnJykubWF0Y2goL15yZ2JhP1xcKChcXGQrKSwoXFxkKyksKFxcZCspLD8oW14sXFxzKV0rKT8vaSkgPz9cbiAgICAgICAgbnVsbDtcblxuICAgIGxldCBhbHBoYTogbnVtYmVyIHwgc3RyaW5nID0gKHJnYj8uWzRdID8/ICcnKS50b1N0cmluZygpLnRyaW0oKTtcblxuICAgIGxldCBoZXggPSByZ2JcbiAgICAgICAgPyAoKHBhcnNlSW50KHJnYj8uWzFdID8/ICcnLCAxMCkgfHwgMCkgfCAoMSA8PCA4KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpICtcbiAgICAgICAgICAoKHBhcnNlSW50KHJnYj8uWzJdID8/ICcnLCAxMCkgfHwgMCkgfCAoMSA8PCA4KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpICtcbiAgICAgICAgICAoKHBhcnNlSW50KHJnYj8uWzNdID8/ICcnLCAxMCkgfHwgMCkgfCAoMSA8PCA4KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpXG4gICAgICAgIDogY29sb3I7XG5cbiAgICBhbHBoYSA9IGFscGhhICE9PSAnJyA/IGFscGhhIDogMG8xO1xuICAgIGFscGhhID0gKChOdW1iZXIoYWxwaGEpICogMjU1KSB8ICgxIDw8IDgpKS50b1N0cmluZygxNikuc2xpY2UoMSk7XG4gICAgaGV4ICs9IGFscGhhO1xuXG4gICAgcmV0dXJuIGAjJHtoZXgudG9VcHBlckNhc2UoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpSXNWYWxpZFJnYmEocmdiYTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmFuZ2UgPSAnKFxcXFxkfFsxLTldXFxcXGR8MVxcXFxkezJ9fDJbMC00XVxcXFxkfDJbMC01XXsyfSknO1xuICAgIGNvbnN0IGFscGhhID0gJyhbMDFdfDA/XFxcXC5cXFxcZCspJztcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICBgXig/OnJnYlxcXFwoXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccypcXFxcKXxyZ2JhXFxcXChcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke2FscGhhfVxcXFxzKlxcXFwpKSRgLFxuICAgICkudGVzdChyZ2JhKTtcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmdiYS10by1oZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvY29sb3IvcmdiYS10by1oZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNuQztJQUVELE1BQU0sR0FBRyxHQUNMLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQztRQUM1RSxJQUFJLENBQUM7SUFFVCxJQUFJLEtBQUssR0FBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVoRSxJQUFJLEdBQUcsR0FBRyxHQUFHO1FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFWixLQUFLLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLEdBQUcsSUFBSSxLQUFLLENBQUM7SUFFYixPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBLHdDQUF3QyxDQUFDO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUEsZ0JBQWdCLENBQUM7SUFFekMsT0FBTyxJQUFJLE1BQU0sQ0FDYixpQkFBaUIsS0FBSyxZQUFZLEtBQUssWUFBWSxLQUFLLHNCQUFzQixLQUFLLFlBQVksS0FBSyxZQUFZLEtBQUssWUFBWSxLQUFLLFdBQVcsQ0FDcEosQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0dWlSZ2JhVG9IZXgoY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0dWlJc1ZhbGlkUmdiYShjb2xvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJHQmEnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZ2IgPVxuICAgICAgICBjb2xvci5yZXBsYWNlQWxsKC9cXHMvZywgJycpLm1hdGNoKC9ecmdiYT9cXCgoXFxkKyksKFxcZCspLChcXGQrKSw/KFteLFxccyldKyk/L2kpID8/XG4gICAgICAgIG51bGw7XG5cbiAgICBsZXQgYWxwaGE6IG51bWJlciB8IHN0cmluZyA9IChyZ2I/Lls0XSA/PyAnJykudG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICBsZXQgaGV4ID0gcmdiXG4gICAgICAgID8gKChwYXJzZUludChyZ2I/LlsxXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSArXG4gICAgICAgICAgKChwYXJzZUludChyZ2I/LlsyXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSArXG4gICAgICAgICAgKChwYXJzZUludChyZ2I/LlszXSA/PyAnJywgMTApIHx8IDApIHwgKDEgPDwgOCkpLnRvU3RyaW5nKDE2KS5zbGljZSgxKVxuICAgICAgICA6IGNvbG9yO1xuXG4gICAgYWxwaGEgPSBhbHBoYSAhPT0gJycgPyBhbHBoYSA6IDBvMTtcbiAgICBhbHBoYSA9ICgoTnVtYmVyKGFscGhhKSAqIDI1NSkgfCAoMSA8PCA4KSkudG9TdHJpbmcoMTYpLnNsaWNlKDEpO1xuICAgIGhleCArPSBhbHBoYTtcblxuICAgIHJldHVybiBgIyR7aGV4LnRvVXBwZXJDYXNlKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzVmFsaWRSZ2JhKHJnYmE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJhbmdlID0gU3RyaW5nLnJhd2AoXFxkfFsxLTldXFxkfDFcXGR7Mn18MlswLTRdXFxkfDJbMC01XXsyfSlgO1xuICAgIGNvbnN0IGFscGhhID0gU3RyaW5nLnJhd2AoWzAxXXwwP1xcLlxcZCspYDtcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgICBgXig/OnJnYlxcXFwoXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccyosXFxcXHMqJHtyYW5nZX1cXFxccypcXFxcKXxyZ2JhXFxcXChcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke3JhbmdlfVxcXFxzKixcXFxccyoke2FscGhhfVxcXFxzKlxcXFwpKSRgLFxuICAgICkudGVzdChyZ2JhKTtcbn1cbiJdfQ==
@@ -1,11 +1,11 @@
1
1
  export function tuiIsValidUrl(url) {
2
- const pattern = new RegExp('^([a-zA-Z]+:\\/\\/)?' + // protocol
3
- '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|' + // domain name
4
- '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR IP (v4) address
5
- '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
6
- '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
7
- '(\\#[-a-z\\d_]*)?$', // fragment locator
2
+ const pattern = new RegExp(String.raw `^([a-zA-Z]+:\/\/)?` + // protocol
3
+ String.raw `((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|localhost|` + // domain name
4
+ String.raw `((\d{1,3}\.){3}\d{1,3}))` + // OR IP (v4) address
5
+ String.raw `(\:\d+)?(\/[-a-z\d%_.~+]*)*` + // port and path
6
+ String.raw `(\?[;&a-z\d%_.~+=-]*)?` + // query string
7
+ String.raw `(\#[-a-z\d_]*)?$`, // fragment locator
8
8
  'i');
9
9
  return pattern.test(url);
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvaXMtdmFsaWQtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FDdEIsc0JBQXNCLEdBQUcsV0FBVztRQUNoQyw0REFBNEQsR0FBRyxjQUFjO1FBQzdFLDZCQUE2QixHQUFHLHFCQUFxQjtRQUNyRCxpQ0FBaUMsR0FBRyxnQkFBZ0I7UUFDcEQsMEJBQTBCLEdBQUcsZUFBZTtRQUM1QyxvQkFBb0IsRUFBRSxtQkFBbUI7SUFDN0MsR0FBRyxDQUNOLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0dWlJc1ZhbGlkVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgICAgICdeKFthLXpBLVpdKzpcXFxcL1xcXFwvKT8nICsgLy8gcHJvdG9jb2xcbiAgICAgICAgICAgICcoKChbYS16XFxcXGRdKFthLXpcXFxcZC1dKlthLXpcXFxcZF0pKilcXFxcLikrW2Etel17Mix9fGxvY2FsaG9zdHwnICsgLy8gZG9tYWluIG5hbWVcbiAgICAgICAgICAgICcoKFxcXFxkezEsM31cXFxcLil7M31cXFxcZHsxLDN9KSknICsgLy8gT1IgSVAgKHY0KSBhZGRyZXNzXG4gICAgICAgICAgICAnKFxcXFw6XFxcXGQrKT8oXFxcXC9bLWEtelxcXFxkJV8ufitdKikqJyArIC8vIHBvcnQgYW5kIHBhdGhcbiAgICAgICAgICAgICcoXFxcXD9bOyZhLXpcXFxcZCVfLn4rPS1dKik/JyArIC8vIHF1ZXJ5IHN0cmluZ1xuICAgICAgICAgICAgJyhcXFxcI1stYS16XFxcXGRfXSopPyQnLCAvLyBmcmFnbWVudCBsb2NhdG9yXG4gICAgICAgICdpJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdCh1cmwpO1xufVxuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtdmFsaWQtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMvaXMtdmFsaWQtdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBVztJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQSxvQkFBb0IsR0FBRyxXQUFXO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLENBQUEsd0RBQXdELEdBQUcsY0FBYztRQUNuRixNQUFNLENBQUMsR0FBRyxDQUFBLDBCQUEwQixHQUFHLHFCQUFxQjtRQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFBLDZCQUE2QixHQUFHLGdCQUFnQjtRQUMxRCxNQUFNLENBQUMsR0FBRyxDQUFBLHdCQUF3QixHQUFHLGVBQWU7UUFDcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQSxrQkFBa0IsRUFBRSxtQkFBbUI7SUFDckQsR0FBRyxDQUNOLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0dWlJc1ZhbGlkVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgICAgIFN0cmluZy5yYXdgXihbYS16QS1aXSs6XFwvXFwvKT9gICsgLy8gcHJvdG9jb2xcbiAgICAgICAgICAgIFN0cmluZy5yYXdgKCgoW2EtelxcZF0oW2EtelxcZC1dKlthLXpcXGRdKSopXFwuKStbYS16XXsyLH18bG9jYWxob3N0fGAgKyAvLyBkb21haW4gbmFtZVxuICAgICAgICAgICAgU3RyaW5nLnJhd2AoKFxcZHsxLDN9XFwuKXszfVxcZHsxLDN9KSlgICsgLy8gT1IgSVAgKHY0KSBhZGRyZXNzXG4gICAgICAgICAgICBTdHJpbmcucmF3YChcXDpcXGQrKT8oXFwvWy1hLXpcXGQlXy5+K10qKSpgICsgLy8gcG9ydCBhbmQgcGF0aFxuICAgICAgICAgICAgU3RyaW5nLnJhd2AoXFw/WzsmYS16XFxkJV8ufis9LV0qKT9gICsgLy8gcXVlcnkgc3RyaW5nXG4gICAgICAgICAgICBTdHJpbmcucmF3YChcXCNbLWEtelxcZF9dKik/JGAsIC8vIGZyYWdtZW50IGxvY2F0b3JcbiAgICAgICAgJ2knLFxuICAgICk7XG5cbiAgICByZXR1cm4gcGF0dGVybi50ZXN0KHVybCk7XG59XG4iXX0=
@@ -9,7 +9,7 @@ class TuiNativeValidator {
9
9
  constructor() {
10
10
  this.destroyRef = inject(DestroyRef);
11
11
  this.zone = inject(NgZone);
12
- this.host = tuiInjectElement();
12
+ this.el = tuiInjectElement();
13
13
  this.tuiNativeValidator = 'Invalid';
14
14
  }
15
15
  validate(control) {
@@ -22,11 +22,8 @@ class TuiNativeValidator {
22
22
  handleValidation() {
23
23
  this.el.setCustomValidity?.(this.control?.touched && this.control?.invalid ? this.tuiNativeValidator : '');
24
24
  }
25
- get el() {
26
- return this.host.querySelector('input,textarea,select') || this.host;
27
- }
28
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeValidator, isStandalone: true, selector: "[tuiNativeValidator]", inputs: { tuiNativeValidator: "tuiNativeValidator" }, host: { listeners: { "blur": "handleValidation()" } }, providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)], ngImport: i0 }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeValidator, isStandalone: true, selector: "[tuiNativeValidator]", inputs: { tuiNativeValidator: "tuiNativeValidator" }, host: { listeners: { "focusout": "handleValidation()" } }, providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)], ngImport: i0 }); }
30
27
  }
31
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeValidator, decorators: [{
32
29
  type: Directive,
@@ -35,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35
32
  selector: '[tuiNativeValidator]',
36
33
  providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)],
37
34
  host: {
38
- '(blur)': 'handleValidation()',
35
+ '(focusout)': 'handleValidation()',
39
36
  },
40
37
  }]
41
38
  }], propDecorators: { tuiNativeValidator: [{
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-native-validator.mjs","sources":["../../../projects/cdk/directives/native-validator/native-validator.directive.ts","../../../projects/cdk/directives/native-validator/taiga-ui-cdk-directives-native-validator.ts"],"sourcesContent":["import {DestroyRef, Directive, inject, Input, NgZone} from '@angular/core';\nimport type {AbstractControl, Validator} from '@angular/forms';\nimport {NG_VALIDATORS} from '@angular/forms';\nimport {tuiTakeUntilDestroyed, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement, tuiProvide} from '@taiga-ui/cdk/utils';\nimport {timer} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiNativeValidator]',\n providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)],\n host: {\n '(blur)': 'handleValidation()',\n },\n})\nexport class TuiNativeValidator implements Validator {\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly host = tuiInjectElement<HTMLInputElement>();\n private control?: AbstractControl;\n\n @Input()\n public tuiNativeValidator = 'Invalid';\n\n public validate(control: AbstractControl): null {\n this.control = control;\n\n timer(0)\n .pipe(tuiZonefree(this.zone), tuiTakeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleValidation());\n\n return null;\n }\n\n protected handleValidation(): void {\n this.el.setCustomValidity?.(\n this.control?.touched && this.control?.invalid ? this.tuiNativeValidator : '',\n );\n }\n\n private get el(): HTMLInputElement {\n return this.host.querySelector('input,textarea,select') || this.host;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAOA,MAQa,kBAAkB,CAAA;AAR/B,IAAA,WAAA,GAAA;AASqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAA,IAAA,GAAG,gBAAgB,EAAoB,CAAC;QAItD,IAAkB,CAAA,kBAAA,GAAG,SAAS,CAAC;AAqBzC,KAAA;AAnBU,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,KAAK,CAAC,CAAC,CAAC;AACH,aAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACpE,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC;KACf;IAES,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,GACrB,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAChF,CAAC;KACL;AAED,IAAA,IAAY,EAAE,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;KACxE;+GA3BQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EALhB,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAKvD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,CAAC,UAAU,CAAC,aAAa,EAAsB,kBAAA,EAAA,IAAI,CAAC,CAAC;AAChE,oBAAA,IAAI,EAAE;AACF,wBAAA,QAAQ,EAAE,oBAAoB;AACjC,qBAAA;AACJ,iBAAA,CAAA;8BAQU,kBAAkB,EAAA,CAAA;sBADxB,KAAK;;;ACrBV;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-native-validator.mjs","sources":["../../../projects/cdk/directives/native-validator/native-validator.directive.ts","../../../projects/cdk/directives/native-validator/taiga-ui-cdk-directives-native-validator.ts"],"sourcesContent":["import {DestroyRef, Directive, inject, Input, NgZone} from '@angular/core';\nimport type {AbstractControl, Validator} from '@angular/forms';\nimport {NG_VALIDATORS} from '@angular/forms';\nimport {tuiTakeUntilDestroyed, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement, tuiProvide} from '@taiga-ui/cdk/utils';\nimport {timer} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiNativeValidator]',\n providers: [tuiProvide(NG_VALIDATORS, TuiNativeValidator, true)],\n host: {\n '(focusout)': 'handleValidation()',\n },\n})\nexport class TuiNativeValidator implements Validator {\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private control?: AbstractControl;\n\n @Input()\n public tuiNativeValidator = 'Invalid';\n\n public validate(control: AbstractControl): null {\n this.control = control;\n\n timer(0)\n .pipe(tuiZonefree(this.zone), tuiTakeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleValidation());\n\n return null;\n }\n\n protected handleValidation(): void {\n this.el.setCustomValidity?.(\n this.control?.touched && this.control?.invalid ? this.tuiNativeValidator : '',\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAOA,MAQa,kBAAkB,CAAA;AAR/B,IAAA,WAAA,GAAA;AASqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;QAIpD,IAAkB,CAAA,kBAAA,GAAG,SAAS,CAAC;AAiBzC,KAAA;AAfU,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,KAAK,CAAC,CAAC,CAAC;AACH,aAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACpE,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC;KACf;IAES,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,EAAE,CAAC,iBAAiB,GACrB,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAChF,CAAC;KACL;+GAvBQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EALhB,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAKvD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,CAAC,UAAU,CAAC,aAAa,EAAsB,kBAAA,EAAA,IAAI,CAAC,CAAC;AAChE,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,oBAAoB;AACrC,qBAAA;AACJ,iBAAA,CAAA;8BAQU,kBAAkB,EAAA,CAAA;sBADxB,KAAK;;;ACrBV;;AAEG;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Injectable, Directive, Output, Input } from '@angular/core';
3
3
  import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
4
- import { tuiZoneOptimized, tuiIfMap } from '@taiga-ui/cdk/observables';
4
+ import { tuiZonefreeScheduler, tuiZoneOptimized, tuiIfMap } from '@taiga-ui/cdk/observables';
5
5
  import { Observable, throttleTime, map, startWith, distinctUntilChanged, Subject } from 'rxjs';
6
6
  import { WA_ANIMATION_FRAME } from '@ng-web-apis/common';
7
7
  import { tuiInjectElement, tuiGetElementObscures } from '@taiga-ui/cdk/utils/dom';
@@ -14,7 +14,7 @@ class TuiObscuredService extends Observable {
14
14
  constructor() {
15
15
  super((subscriber) => this.obscured$.subscribe(subscriber));
16
16
  this.el = tuiInjectElement();
17
- this.obscured$ = inject(WA_ANIMATION_FRAME).pipe(throttleTime(100), map(() => tuiGetElementObscures(this.el)), startWith(null), distinctUntilChanged(), tuiZoneOptimized());
17
+ this.obscured$ = inject(WA_ANIMATION_FRAME).pipe(throttleTime(100, tuiZonefreeScheduler()), map(() => tuiGetElementObscures(this.el)), startWith(null), distinctUntilChanged(), tuiZoneOptimized());
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObscuredService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
20
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiObscuredService }); }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {map, Subject} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n standalone: true,\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly enabled$ = new Subject<boolean>();\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => !this.activeZone?.contains(el))),\n );\n\n @Output()\n public readonly tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));\n\n @Input()\n public set tuiObscuredEnabled(enabled: boolean) {\n this.enabled$.next(enabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA;;;AAGG;AACH,MACa,kBAAmB,SAAQ,UAAqC,CAAA;AAUzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAV/C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,EACtB,gBAAgB,EAAE,CACrB,CAAC;KAID;+GAZQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACHX;;AAEG;AACH,MAKa,WAAW,CAAA;AALxB,IAAA,WAAA,GAAA;QAMqB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;QAClC,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CACnE,CAAC;AAGc,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAMpF,KAAA;IAJG,IACW,kBAAkB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;+GAbQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFT,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA,CAAA;8BASmB,WAAW,EAAA,CAAA;sBAD1B,MAAM;gBAII,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;;;ACzBV;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-cdk-directives-obscured.mjs","sources":["../../../projects/cdk/directives/obscured/obscured.service.ts","../../../projects/cdk/directives/obscured/obscured.directive.ts","../../../projects/cdk/directives/obscured/taiga-ui-cdk-directives-obscured.ts"],"sourcesContent":["import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiGetElementObscures, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\n/**\n * Service that monitors element visibility by polling and returning\n * either null or an array of elements that overlap given element edges\n */\n@Injectable()\nexport class TuiObscuredService extends Observable<readonly Element[] | null> {\n private readonly el = tuiInjectElement();\n private readonly obscured$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(100, tuiZonefreeScheduler()),\n map(() => tuiGetElementObscures(this.el)),\n startWith(null),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.obscured$.subscribe(subscriber));\n }\n}\n","import {Directive, inject, Input, Output} from '@angular/core';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {map, Subject} from 'rxjs';\n\nimport {TuiObscuredService} from './obscured.service';\n\n/**\n * Directive that monitors element visibility\n */\n@Directive({\n standalone: true,\n selector: '[tuiObscured]',\n providers: [TuiObscuredService],\n})\nexport class TuiObscured {\n private readonly activeZone = inject(TuiActiveZone, {optional: true});\n private readonly enabled$ = new Subject<boolean>();\n private readonly obscured$ = inject(TuiObscuredService, {self: true}).pipe(\n map((by) => !!by?.every((el) => !this.activeZone?.contains(el))),\n );\n\n @Output()\n public readonly tuiObscured = this.enabled$.pipe(tuiIfMap(() => this.obscured$));\n\n @Input()\n public set tuiObscuredEnabled(enabled: boolean) {\n this.enabled$.next(enabled);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA;;;AAGG;AACH,MACa,kBAAmB,SAAQ,UAAqC,CAAA;AAUzE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAV/C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACxD,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EACzC,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,EACf,oBAAoB,EAAE,EACtB,gBAAgB,EAAE,CACrB,CAAC;KAID;+GAZQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACHX;;AAEG;AACH,MAKa,WAAW,CAAA;AALxB,IAAA,WAAA,GAAA;QAMqB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;QAClC,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CACnE,CAAC;AAGc,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAMpF,KAAA;IAJG,IACW,kBAAkB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;+GAbQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFT,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,iBAAA,CAAA;8BASmB,WAAW,EAAA,CAAA;sBAD1B,MAAM;gBAII,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;;;ACzBV;;AAEG;;;;"}
@@ -88,11 +88,11 @@ function tuiParseColor(color) {
88
88
  // https://stackoverflow.com/a/20238168/2706426
89
89
  //
90
90
  // SETUP CODE
91
- const COMMA = '\\s*,\\s*'; // Allow space around comma.
91
+ const COMMA = String.raw `\s*,\s*`; // Allow space around comma.
92
92
  const HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form
93
- const RGB = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)'; // "(1, 2, 3)"
94
- const RGBA = '\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)'; // "(1, 2, 3, 4)"
95
- const VALUE = '(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?'; // ".9", "-5px", "100%".
93
+ const RGB = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*\)`; // "(1, 2, 3)"
94
+ const RGBA = String.raw `\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*,\s*\d*\.?\d+\)`; // "(1, 2, 3, 4)"
95
+ const VALUE = String.raw `(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?`; // ".9", "-5px", "100%".
96
96
  const KEYWORD = '[_a-z-][_a-z0-9-]*'; // "red", "transparent", "border-collapse".
97
97
  const COLOR = [
98
98
  '(?:',
@@ -108,16 +108,16 @@ const COLOR = [
108
108
  ')',
109
109
  ];
110
110
  const REGEXP_ARRAY = [
111
- '\\s*(',
111
+ String.raw `\s*(`,
112
112
  ...COLOR,
113
113
  ')',
114
- '(?:\\s+',
114
+ String.raw `(?:\s+`,
115
115
  '(',
116
116
  VALUE,
117
117
  '))?',
118
118
  '(?:',
119
119
  COMMA,
120
- '\\s*)?',
120
+ String.raw `\s*)?`,
121
121
  ];
122
122
  function getPosition(match, stops) {
123
123
  const fallback = stops === 1 ? '100%' : `${stops}%`;
@@ -182,8 +182,8 @@ function tuiRgbaToHex(color) {
182
182
  return `#${hex.toUpperCase()}`;
183
183
  }
184
184
  function tuiIsValidRgba(rgba) {
185
- const range = '(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})';
186
- const alpha = '([01]|0?\\.\\d+)';
185
+ const range = String.raw `(\d|[1-9]\d|1\d{2}|2[0-4]\d|2[0-5]{2})`;
186
+ const alpha = String.raw `([01]|0?\.\d+)`;
187
187
  return new RegExp(`^(?:rgb\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*\\)|rgba\\(\\s*${range}\\s*,\\s*${range}\\s*,\\s*${range}\\s*,\\s*${alpha}\\s*\\))$`).test(rgba);
188
188
  }
189
189
 
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a?: number, alpha?: number): number => {\n if (typeof a !== 'undefined') {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] || DEFAULT[0],\n parsed[1] || DEFAULT[1],\n parsed[2] || DEFAULT[2],\n parsed[3] === undefined ? DEFAULT[3] : parsed[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = '\\\\s*,\\\\s*'; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = '\\\\(\\\\s*(?:\\\\d{1,3}\\\\s*,\\\\s*){2}\\\\d{1,3}\\\\s*\\\\)'; // \"(1, 2, 3)\"\nconst RGBA = '\\\\(\\\\s*(?:\\\\d{1,3}\\\\s*,\\\\s*){2}\\\\d{1,3}\\\\s*,\\\\s*\\\\d*\\\\.?\\\\d+\\\\)'; // \"(1, 2, 3, 4)\"\nconst VALUE = '(?:[+-]?\\\\d*\\\\.?\\\\d+)(?:%|[a-z]+)?'; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n '\\\\s*(',\n ...COLOR,\n ')',\n '(?:\\\\s+',\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n '\\\\s*)?',\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || input.match(/^\\d/)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1] || '',\n position: getPosition(matchColorStop[2] || '', stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","export function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb =\n color.replaceAll(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i) ??\n null;\n\n let alpha: number | string = (rgb?.[4] ?? '').toString().trim();\n\n let hex = rgb\n ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = '(\\\\d|[1-9]\\\\d|1\\\\d{2}|2[0-4]\\\\d|2[0-5]{2})';\n const alpha = '([01]|0?\\\\.\\\\d+)';\n\n return new RegExp(\n `^(?:rgb\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*\\\\)|rgba\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${alpha}\\\\s*\\\\))$`,\n ).test(rgba);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-color.mjs","sources":["../../../projects/cdk/utils/color/get-gradient-data.ts","../../../projects/cdk/utils/color/hex-to-rgb.ts","../../../projects/cdk/utils/color/hex-to-rgba.ts","../../../projects/cdk/utils/color/hsv-to-rgb.ts","../../../projects/cdk/utils/color/parse-color.ts","../../../projects/cdk/utils/color/parse-gradient.ts","../../../projects/cdk/utils/color/rgb-to-hex.ts","../../../projects/cdk/utils/color/rgb-to-hsv.ts","../../../projects/cdk/utils/color/rgba-to-hex.ts","../../../projects/cdk/utils/color/taiga-ui-cdk-utils-color.ts"],"sourcesContent":["export function tuiGetGradientData(gradient: string): string {\n return gradient\n .slice(0, Math.max(0, gradient.length - 1))\n .replace('linear-gradient(', '');\n}\n","export function tuiHexToRgb(hex: string): [number, number, number] {\n const matches = hex\n .replace('#', '')\n .split('')\n .map((char, _, array) => (array.length === 3 ? char + char : char))\n .join('')\n .match(/.{2}/g);\n\n return matches\n ? (matches.map((x) => Number.parseInt(x, 16)) as [number, number, number])\n : [0, 0, 0];\n}\n","const getChunksFromString = (hex: string, chunkSize: number): RegExpMatchArray | null =>\n hex.match(new RegExp(`.{${chunkSize}}`, 'g'));\n\nconst convertHexUnitTo256 = (hexStr: string): number =>\n parseInt(hexStr.repeat(2 / hexStr.length), 16);\n\nconst getAlphaFloat = (a?: number, alpha?: number): number => {\n if (typeof a !== 'undefined') {\n return Number((a / 255).toFixed(2));\n }\n\n if (typeof alpha !== 'number' || alpha < 0 || alpha > 1) {\n return 1;\n }\n\n return alpha;\n};\n\nexport function tuiHexToRGBA(hex: string, alpha?: number): string {\n const [r, g, b, a] = tuiParseHex(hex, alpha);\n\n return a < 1 ? `rgba(${r}, ${g}, ${b}, ${a})` : `rgb(${r}, ${g}, ${b})`;\n}\n\nexport function tuiIsValidHex(hex: string): boolean {\n return /^#([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);\n}\n\nexport function tuiParseHex(\n hex: string,\n alpha?: number,\n): [number, number, number, number] {\n if (!tuiIsValidHex(hex)) {\n throw new Error('Invalid HEX');\n }\n\n const chunkSize = Math.floor((hex.length - 1) / 3);\n const hexArr = getChunksFromString(hex.slice(1), chunkSize);\n const [r = NaN, g = NaN, b = NaN, a] = hexArr?.map(convertHexUnitTo256) ?? [];\n const floatAlpha = getAlphaFloat(a, alpha);\n\n return [r, g, b, floatAlpha];\n}\n","function hsvToColor(h: number, s: number, v: number, n: number): number {\n const k = (n + h / 60) % 6;\n\n return Math.round(v - v * s * Math.max(Math.min(k, 4 - k, 1), 0));\n}\n\n/**\n * https://stackoverflow.com/a/54024653/2706426\n */\nexport function tuiHsvToRgb(h: number, s: number, v: number): [number, number, number] {\n return [hsvToColor(h, s, v, 5), hsvToColor(h, s, v, 3), hsvToColor(h, s, v, 1)];\n}\n","const DEFAULT: [number, number, number, number] = [0, 0, 0, 1];\n\nexport function tuiParseColor(color: string): [number, number, number, number] {\n const stripped = color\n .replace('#', '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '');\n const array = stripped.split(',').map((item) => parseFloat(item));\n\n if (array.length === 4) {\n return array as [number, number, number, number];\n }\n\n if (array.length === 3) {\n return array.concat(1) as [number, number, number, number];\n }\n\n const matches = stripped.match(new RegExp(`(.{${stripped.length / 3}})`, 'g'));\n\n if (!matches) {\n return DEFAULT;\n }\n\n const parsed = matches.map((char) =>\n parseInt(stripped.length % 2 ? char + char : char, 16),\n );\n\n return [\n parsed[0] || DEFAULT[0],\n parsed[1] || DEFAULT[1],\n parsed[2] || DEFAULT[2],\n parsed[3] === undefined ? DEFAULT[3] : parsed[3],\n ];\n}\n","import {tuiParseColor} from './parse-color';\n\nexport interface TuiParsedGradient {\n readonly side: TuiGradientDirection;\n readonly stops: ReadonlyArray<{\n readonly color: string;\n readonly position: string;\n }>;\n}\n\nexport type TuiGradientDirection =\n | 'to bottom left'\n | 'to bottom right'\n | 'to bottom'\n | 'to left'\n | 'to right'\n | 'to top left'\n | 'to top right'\n | 'to top';\n\n//\n// TypeScript parser based on Dean Taylor's answer:\n// https://stackoverflow.com/a/20238168/2706426\n//\n// SETUP CODE\nconst COMMA = String.raw`\\s*,\\s*`; // Allow space around comma.\nconst HEX = '#(?:[a-f0-9]{6}|[a-f0-9]{3})'; // 3 or 6 character form\nconst RGB = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)`; // \"(1, 2, 3)\"\nconst RGBA = String.raw`\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)`; // \"(1, 2, 3, 4)\"\nconst VALUE = String.raw`(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?`; // \".9\", \"-5px\", \"100%\".\nconst KEYWORD = '[_a-z-][_a-z0-9-]*'; // \"red\", \"transparent\", \"border-collapse\".\nconst COLOR = [\n '(?:',\n HEX,\n '|',\n '(?:rgb|hsl)',\n RGB,\n '|',\n '(?:rgba|hsla)',\n RGBA,\n '|',\n KEYWORD,\n ')',\n];\nconst REGEXP_ARRAY = [\n String.raw`\\s*(`,\n ...COLOR,\n ')',\n String.raw`(?:\\s+`,\n '(',\n VALUE,\n '))?',\n '(?:',\n COMMA,\n String.raw`\\s*)?`,\n];\n\nfunction getPosition(match: string, stops: number): string {\n const fallback = stops === 1 ? '100%' : `${stops}%`;\n\n return match?.includes('%') ? match : fallback;\n}\n\nexport function tuiParseGradient(input: string): TuiParsedGradient {\n const stopsRegexp = new RegExp(REGEXP_ARRAY.join(''), 'gi');\n const stopsString =\n input.startsWith('to') || input.match(/^\\d/)\n ? input.slice(Math.max(0, input.indexOf(',') + 1)).trim()\n : input;\n\n const side = input.startsWith('to')\n ? (input.split(',')[0] as TuiGradientDirection)\n : 'to bottom';\n let stops: TuiParsedGradient['stops'] = [];\n\n let matchColorStop = stopsRegexp.exec(stopsString);\n\n while (matchColorStop !== null) {\n stops = stops.concat({\n color: matchColorStop[1] || '',\n position: getPosition(matchColorStop[2] || '', stops.length),\n });\n\n matchColorStop = stopsRegexp.exec(stopsString);\n }\n\n stops = stops.filter(({color}) => color.startsWith('#') || color.startsWith('rgb'));\n\n return {\n stops,\n side,\n };\n}\n\nexport function tuiToGradient({stops, side}: TuiParsedGradient): string {\n return `linear-gradient(${side}, ${stops\n .map(\n ({color, position}) => `rgba(${tuiParseColor(color).join(', ')}) ${position}`,\n )\n .join(', ')})`;\n}\n","export function tuiRgbToHex(r: number, g: number, b: number): string {\n return `#${[r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n}\n","export function tuiRgbToHsv(r: number, g: number, b: number): [number, number, number] {\n const v = Math.max(r, g, b);\n const n = v - Math.min(r, g, b);\n\n // eslint-disable-next-line no-nested-ternary\n const h = n && (v === r ? (g - b) / n : v === g ? 2 + (b - r) / n : 4 + (r - g) / n);\n\n return [60 * (h < 0 ? h + 6 : h), v && n / v, v];\n}\n","export function tuiRgbaToHex(color: string): string {\n if (!tuiIsValidRgba(color)) {\n throw new Error('Invalid RGBa');\n }\n\n const rgb =\n color.replaceAll(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i) ??\n null;\n\n let alpha: number | string = (rgb?.[4] ?? '').toString().trim();\n\n let hex = rgb\n ? ((parseInt(rgb?.[1] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[2] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1) +\n ((parseInt(rgb?.[3] ?? '', 10) || 0) | (1 << 8)).toString(16).slice(1)\n : color;\n\n alpha = alpha !== '' ? alpha : 0o1;\n alpha = ((Number(alpha) * 255) | (1 << 8)).toString(16).slice(1);\n hex += alpha;\n\n return `#${hex.toUpperCase()}`;\n}\n\nexport function tuiIsValidRgba(rgba: string): boolean {\n const range = String.raw`(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|2[0-5]{2})`;\n const alpha = String.raw`([01]|0?\\.\\d+)`;\n\n return new RegExp(\n `^(?:rgb\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*\\\\)|rgba\\\\(\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${range}\\\\s*,\\\\s*${alpha}\\\\s*\\\\))$`,\n ).test(rgba);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -135,12 +135,12 @@ function tuiIsPresent(value) {
135
135
  }
136
136
 
137
137
  function tuiIsValidUrl(url) {
138
- const pattern = new RegExp('^([a-zA-Z]+:\\/\\/)?' + // protocol
139
- '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|' + // domain name
140
- '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR IP (v4) address
141
- '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
142
- '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
143
- '(\\#[-a-z\\d_]*)?$', // fragment locator
138
+ const pattern = new RegExp(String.raw `^([a-zA-Z]+:\/\/)?` + // protocol
139
+ String.raw `((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|localhost|` + // domain name
140
+ String.raw `((\d{1,3}\.){3}\d{1,3}))` + // OR IP (v4) address
141
+ String.raw `(\:\d+)?(\/[-a-z\d%_.~+]*)*` + // port and path
142
+ String.raw `(\?[;&a-z\d%_.~+=-]*)?` + // query string
143
+ String.raw `(\#[-a-z\d_]*)?$`, // fragment locator
144
144
  'i');
145
145
  return pattern.test(url);
146
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/is-control-empty.ts","../../../projects/cdk/utils/miscellaneous/count-filled-controls.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import type {AbstractControl} from '@angular/forms';\n\nexport function tuiIsControlEmpty({value = null}: AbstractControl): boolean {\n return value === null || value === '' || (Array.isArray(value) && !value.length);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\nimport {tuiToInt} from '@taiga-ui/cdk/utils/math';\n\nimport {tuiIsControlEmpty} from './is-control-empty';\n\nexport function tuiCountFilledControls(control: AbstractControl): number {\n if (control instanceof FormArray) {\n return control.controls.reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n if (control instanceof FormGroup) {\n return Object.values(control.controls).reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n return tuiToInt(!tuiIsControlEmpty(control));\n}\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', {factory});\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(\n () => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n },\n {allowSignalWrites: true},\n );\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n (touches[0]?.clientX ?? 0) - (touches[1]?.clientX ?? 0),\n (touches[0]?.clientY ?? 0) - (touches[1]?.clientY ?? 0),\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","export function tuiIsValidUrl(url: string): boolean {\n const pattern = new RegExp(\n '^([a-zA-Z]+:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|localhost|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR IP (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$', // fragment locator\n 'i',\n );\n\n return pattern.test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n deps: [[new Optional(), new SkipSelf(), provide]],\n useFactory: (parent: T | null): T => ({\n ...(parent || fallback),\n ...options,\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-cdk-utils-miscellaneous.mjs","sources":["../../../projects/cdk/utils/miscellaneous/array-remove.ts","../../../projects/cdk/utils/miscellaneous/array-shallow-equals.ts","../../../projects/cdk/utils/miscellaneous/array-toggle.ts","../../../projects/cdk/utils/miscellaneous/change-date-separator.ts","../../../projects/cdk/utils/miscellaneous/is-control-empty.ts","../../../projects/cdk/utils/miscellaneous/count-filled-controls.ts","../../../projects/cdk/utils/miscellaneous/create-token.ts","../../../projects/cdk/utils/miscellaneous/is-string.ts","../../../projects/cdk/utils/miscellaneous/default-sort.ts","../../../projects/cdk/utils/miscellaneous/directive-binding.ts","../../../projects/cdk/utils/miscellaneous/directive-listener.ts","../../../projects/cdk/utils/miscellaneous/distance-between-touches.ts","../../../projects/cdk/utils/miscellaneous/ease-in-out-quad.ts","../../../projects/cdk/utils/miscellaneous/flat-length.ts","../../../projects/cdk/utils/miscellaneous/get-original-array-from-query-list.ts","../../../projects/cdk/utils/miscellaneous/is-falsy.ts","../../../projects/cdk/utils/miscellaneous/is-number.ts","../../../projects/cdk/utils/miscellaneous/is-object.ts","../../../projects/cdk/utils/miscellaneous/is-present.ts","../../../projects/cdk/utils/miscellaneous/is-valid-url.ts","../../../projects/cdk/utils/miscellaneous/mark-control-as-touched-and-validate.ts","../../../projects/cdk/utils/miscellaneous/nullable-same.ts","../../../projects/cdk/utils/miscellaneous/provide.ts","../../../projects/cdk/utils/miscellaneous/provide-options.ts","../../../projects/cdk/utils/miscellaneous/pure.ts","../../../projects/cdk/utils/miscellaneous/px.ts","../../../projects/cdk/utils/miscellaneous/uniq-by.ts","../../../projects/cdk/utils/miscellaneous/with-styles.ts","../../../projects/cdk/utils/miscellaneous/taiga-ui-cdk-utils-miscellaneous.ts"],"sourcesContent":["export function tuiArrayRemove<T>(array: readonly T[], index: number): T[] {\n return array.slice(0, Math.max(index, 0)).concat(array.slice(Math.max(index + 1, 0)));\n}\n","export function tuiArrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {tuiArrayRemove} from './array-remove';\n\nexport function tuiArrayToggle<T>(array: readonly T[], item: T): T[] {\n const index = array.indexOf(item);\n\n return index === -1 ? [...array, item] : tuiArrayRemove(array, index);\n}\n","/* internal */\nexport const changeDateSeparator = (\n dateString: string,\n newDateSeparator: string,\n): string => dateString.replaceAll(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator);\n","import type {AbstractControl} from '@angular/forms';\n\nexport function tuiIsControlEmpty({value = null}: AbstractControl): boolean {\n return value === null || value === '' || (Array.isArray(value) && !value.length);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\nimport {tuiToInt} from '@taiga-ui/cdk/utils/math';\n\nimport {tuiIsControlEmpty} from './is-control-empty';\n\nexport function tuiCountFilledControls(control: AbstractControl): number {\n if (control instanceof FormArray) {\n return control.controls.reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n if (control instanceof FormGroup) {\n return Object.values(control.controls).reduce(\n (acc, nestedControl) => acc + tuiCountFilledControls(nestedControl),\n 0,\n );\n }\n\n return tuiToInt(!tuiIsControlEmpty(control));\n}\n","import {InjectionToken} from '@angular/core';\n\nexport function tuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return tuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function tuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', {factory});\n}\n","export function tuiIsString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {tuiIsString} from './is-string';\n\nexport function tuiDefaultSort<T>(x: T, y: T): number {\n if (x === y) {\n return 0;\n }\n\n if (tuiIsString(x) && tuiIsString(y)) {\n return x.localeCompare(y);\n }\n\n return x > y ? 1 : -1;\n}\n","import type {InjectOptions, ProviderToken, Signal, WritableSignal} from '@angular/core';\nimport {effect, inject, isSignal, signal} from '@angular/core';\n\ntype SignalLikeTypeOf<T> = T extends Signal<infer R> ? R : T;\n\ntype SignalLike<T> = Signal<T> | T;\n\nexport function tuiDirectiveBinding<\n T,\n G extends keyof T,\n I extends SignalLike<SignalLikeTypeOf<T[G]>>,\n>(\n token: ProviderToken<T>,\n key: G,\n initial: I,\n options: InjectOptions = {self: true},\n): I extends Signal<any> ? I : WritableSignal<I> {\n const result: any = isSignal(initial) ? initial : signal(initial);\n const directive: any = inject(token, options);\n const output = directive[`${key.toString()}Change`];\n\n // TODO: Figure out why effects are executed all the time and not just when result changes (check with Angular 18)\n let previous: any;\n\n effect(\n () => {\n const value: any = result();\n\n if (previous === value) {\n return;\n }\n\n if (isSignal(directive[key])) {\n directive[key].set(value);\n } else {\n directive[key] = value;\n }\n\n directive.ngOnChanges?.({});\n output?.emit?.(value);\n previous = value;\n },\n {allowSignalWrites: true},\n );\n\n return result;\n}\n","import type {InjectOptions, ProviderToken, Signal} from '@angular/core';\nimport {inject, isSignal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport type {Observable} from 'rxjs';\n\ntype OutputKeysOf<T> = {\n [K in keyof T]: T[K] extends Observable<any> | Signal<any> ? K : never;\n}[keyof T];\n\ntype OutputTypeOf<T> =\n T extends Signal<infer R> ? R : T extends Observable<infer O> ? O : never;\n\nexport function tuiDirectiveListener<T, K extends OutputKeysOf<T>>(\n token: ProviderToken<T>,\n key: K,\n options: InjectOptions = {self: true},\n): Signal<OutputTypeOf<T[K]>> {\n const prop: any = inject(token, options)?.[key];\n\n return isSignal(prop) ? prop : toSignal<any>(prop);\n}\n","export function tuiDistanceBetweenTouches({touches}: TouchEvent): number {\n return Math.hypot(\n (touches[0]?.clientX ?? 0) - (touches[1]?.clientX ?? 0),\n (touches[0]?.clientY ?? 0) - (touches[1]?.clientY ?? 0),\n );\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nexport function tuiEaseInOutQuad(t: number): number {\n ngDevMode &&\n console.assert(\n t >= 0 && t <= 1,\n 'Input must be between 0 and 1 inclusive but received ',\n t,\n );\n\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n}\n","/**\n * Flattens two-dimensional array and calculates resulting length\n *\n * @param array twi dimensional array\n */\nexport function tuiFlatLength(array: ReadonlyArray<readonly unknown[]>): number {\n return array.reduce((count, section) => count + section.length, 0);\n}\n","import type {QueryList} from '@angular/core';\n\n/**\n * Extracts original array from {@link QueryList} rather than\n * creating a copy like {@link QueryList.toArray} does.\n * @param queryList\n * @returns original array from {@link QueryList}.\n */\nexport function tuiGetOriginalArrayFromQueryList<T>(\n queryList: QueryList<T>,\n): readonly T[] {\n let array: readonly T[] = [];\n\n queryList.find((_item, _index, originalArray) => {\n array = originalArray;\n\n return true;\n });\n\n return array;\n}\n","export function tuiIsFalsy(value: unknown): boolean {\n return !value;\n}\n","export function tuiIsNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","export function tuiIsObject<T extends Record<string, any>>(\n value: unknown,\n): value is NonNullable<T> {\n return typeof value === 'object' && !!value;\n}\n","export function tuiIsPresent<T>(value?: T | null): value is T {\n return value !== null && value !== undefined;\n}\n","export function tuiIsValidUrl(url: string): boolean {\n const pattern = new RegExp(\n String.raw`^([a-zA-Z]+:\\/\\/)?` + // protocol\n String.raw`((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|localhost|` + // domain name\n String.raw`((\\d{1,3}\\.){3}\\d{1,3}))` + // OR IP (v4) address\n String.raw`(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*` + // port and path\n String.raw`(\\?[;&a-z\\d%_.~+=-]*)?` + // query string\n String.raw`(\\#[-a-z\\d_]*)?$`, // fragment locator\n 'i',\n );\n\n return pattern.test(url);\n}\n","import type {AbstractControl} from '@angular/forms';\nimport {FormArray, FormGroup} from '@angular/forms';\n\nexport function tuiMarkControlAsTouchedAndValidate(control: AbstractControl): void {\n if (control instanceof FormArray) {\n control.controls.forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n if (control instanceof FormGroup) {\n Object.values(control.controls).forEach((nestedControl) => {\n tuiMarkControlAsTouchedAndValidate(nestedControl);\n });\n }\n\n control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import type {TuiIdentityMatcher} from '@taiga-ui/cdk/types';\n\n/**\n * Checks identity for nullable elements.\n *\n * @param a element a\n * @param b element b\n * @param handler called if both elements are not null\n * @return true if either both are null or they pass identity handler\n */\nexport function tuiNullableSame<T>(\n a: T | null,\n b: T | null,\n handler: TuiIdentityMatcher<T>,\n): boolean {\n if (a === null) {\n return b === null;\n }\n\n if (b === null) {\n return false;\n }\n\n return handler(a, b);\n}\n","import type {ExistingProvider, ProviderToken} from '@angular/core';\n\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function tuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return {provide, useExisting, multi};\n}\n","import type {FactoryProvider, InjectionToken} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\n\nexport function tuiProvideOptions<T>(\n provide: InjectionToken<T>,\n options: Partial<T>,\n fallback: T,\n): FactoryProvider {\n return {\n provide,\n deps: [[new Optional(), new SkipSelf(), provide]],\n useFactory: (parent: T | null): T => ({\n ...(parent || fallback),\n ...options,\n }),\n };\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\nfunction decorateMethod(\n originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalMethod.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n}\n\nfunction decorateGetter(\n originalGetter: () => unknown,\n propertyKey: string | symbol,\n enumerable = true,\n): (this: object) => unknown {\n return function tuiPureGetterPatched(this: object): unknown {\n const value = originalGetter.call(this);\n\n Object.defineProperty(this, propertyKey, {enumerable, value});\n\n return value;\n };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<T>(\n target: object,\n propertyKey: string,\n {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n */\nexport function tuiPure<A extends unknown[], R>(\n target: (...args: A) => R,\n context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n target: object | ((...args: unknown[]) => unknown),\n propertyKeyOrContext:\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext\n | string,\n descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n if (typeof target === 'function') {\n const context = propertyKeyOrContext as\n | ClassGetterDecoratorContext\n | ClassMethodDecoratorContext;\n\n if (context.kind === 'getter') {\n return decorateGetter(target as () => unknown, context.name);\n }\n\n if (context.kind === 'method') {\n return decorateMethod(target as (...args: unknown[]) => unknown);\n }\n\n throw new TuiPureException();\n }\n\n const {get, enumerable, value} = descriptor!;\n const propertyKey = propertyKeyOrContext as string;\n\n if (get) {\n return {\n configurable: true,\n enumerable,\n get: decorateGetter(get, propertyKey, enumerable),\n };\n }\n\n if (typeof value !== 'function') {\n throw new TuiPureException();\n }\n\n const original = value;\n\n return {\n configurable: true,\n enumerable,\n get(): unknown {\n let previousArgs: readonly unknown[] = [];\n let originalFnWasCalledLeastAtOnce = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure =\n originalFnWasCalledLeastAtOnce &&\n previousArgs.length === args.length &&\n args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = original.apply(this, args);\n originalFnWasCalledLeastAtOnce = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, {\n configurable: true,\n value: patched,\n });\n\n return patched as unknown;\n },\n };\n}\n\nexport class TuiPureException extends Error {\n constructor() {\n super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\n\n/**\n * Adds 'px' to the number and turns it into a string\n */\nexport function tuiPx(value: number): string {\n ngDevMode && console.assert(Number.isFinite(value), 'Value must be finite number');\n\n return `${value}px`;\n}\n","import type {TuiValuesOf} from '@taiga-ui/cdk/types';\n\nexport function tuiUniqBy<T extends Record<string, any>>(\n array: readonly T[],\n key: keyof T,\n): readonly T[] {\n return Array.from(\n array\n .reduce(\n (map, item) => (map.has(item[key]) ? map : map.set(item[key], item)),\n new Map<TuiValuesOf<T>, T>(),\n )\n .values(),\n );\n}\n","import type {Type} from '@angular/core';\nimport {createComponent, DestroyRef, EnvironmentInjector, inject} from '@angular/core';\n\nimport {tuiCreateTokenFromFactory} from './create-token';\n\nconst MAP = tuiCreateTokenFromFactory(() => {\n const map = new Map();\n\n inject(DestroyRef).onDestroy(() => map.forEach((component) => component.destroy()));\n\n return map;\n});\n\nexport function tuiWithStyles(component: Type<unknown>): undefined {\n const map = inject(MAP);\n const environmentInjector = inject(EnvironmentInjector);\n\n if (!map.has(component)) {\n map.set(component, createComponent(component, {environmentInjector}));\n }\n\n return undefined;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/cdk",
3
- "version": "4.5.0-canary.50decb3",
3
+ "version": "4.5.0-canary.d55e3ee",
4
4
  "description": "Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance",
5
5
  "keywords": [
6
6
  "angular",
@@ -26,15 +26,15 @@
26
26
  "@ng-web-apis/common": "^4.2.1",
27
27
  "@ng-web-apis/mutation-observer": "^4.2.1",
28
28
  "@ng-web-apis/resize-observer": "^4.2.1",
29
- "@taiga-ui/event-plugins": "^4.0.1",
30
- "@taiga-ui/polymorpheus": "^4.6.4",
29
+ "@taiga-ui/event-plugins": "^4.0.2",
30
+ "@taiga-ui/polymorpheus": "^4.7.0",
31
31
  "rxjs": ">=7.0.0"
32
32
  },
33
33
  "optionalDependencies": {
34
34
  "@angular-devkit/core": ">=16.0.0",
35
35
  "@angular-devkit/schematics": ">=16.0.0",
36
36
  "@schematics/angular": ">=16.0.0",
37
- "ng-morph": "^4.6.4",
37
+ "ng-morph": "^4.6.5",
38
38
  "parse5": "^7.1.2"
39
39
  },
40
40
  "ng-update": {
@@ -1,4 +1,2 @@
1
- export declare const TAIGA_GLOBAL_OLD_STYLE = "node_modules/@taiga-ui/core/styles/taiga-ui-global.less";
2
- export declare const TAIGA_GLOBAL_NEW_STYLE = "node_modules/@taiga-ui/styles/taiga-ui-global.less";
3
1
  export declare const TAIGA_THEME_STYLE = "node_modules/@taiga-ui/core/styles/taiga-ui-theme.less";
4
2
  export declare const TAIGA_THEME_FONTS = "node_modules/@taiga-ui/core/styles/taiga-ui-fonts.less";
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TAIGA_THEME_FONTS = exports.TAIGA_THEME_STYLE = exports.TAIGA_GLOBAL_NEW_STYLE = exports.TAIGA_GLOBAL_OLD_STYLE = void 0;
4
- exports.TAIGA_GLOBAL_OLD_STYLE = 'node_modules/@taiga-ui/core/styles/taiga-ui-global.less';
5
- exports.TAIGA_GLOBAL_NEW_STYLE = 'node_modules/@taiga-ui/styles/taiga-ui-global.less';
3
+ exports.TAIGA_THEME_FONTS = exports.TAIGA_THEME_STYLE = void 0;
6
4
  exports.TAIGA_THEME_STYLE = 'node_modules/@taiga-ui/core/styles/taiga-ui-theme.less';
7
5
  exports.TAIGA_THEME_FONTS = 'node_modules/@taiga-ui/core/styles/taiga-ui-fonts.less';
@@ -14,14 +14,11 @@ function addDependencies(tree, options) {
14
14
  type: ng_morph_1.NodeDependencyType.Default,
15
15
  });
16
16
  });
17
+ (0, ng_morph_1.addPackageJsonDependency)(tree, {
18
+ name: '@taiga-ui/event-plugins',
19
+ version: '^4.0.2',
20
+ });
17
21
  removeTaigaSchematicsPackage(tree);
18
- if (options.addGlobalStyles) {
19
- (0, ng_morph_1.addPackageJsonDependency)(tree, {
20
- name: '@taiga-ui/styles',
21
- version: versions_1.TAIGA_VERSION,
22
- type: ng_morph_1.NodeDependencyType.Default,
23
- });
24
- }
25
22
  if (packages.includes('addon-table') || packages.includes('addon-mobile')) {
26
23
  addAngularCdkDep(tree);
27
24
  }
@@ -1,5 +1,4 @@
1
1
  export interface TuiSchema {
2
- readonly addGlobalStyles: boolean;
3
2
  readonly addons: readonly string[];
4
3
  readonly project: string;
5
4
  /**
@@ -11,15 +11,6 @@
11
11
  "$source": "projectName"
12
12
  }
13
13
  },
14
- "addGlobalStyles": {
15
- "description": "Setting up global styles",
16
- "type": "boolean",
17
- "default": false,
18
- "x-prompt": {
19
- "message": "Do you want to use global Taiga UI classes, such as 'tui-space', 'tui-skeleton', etc?",
20
- "type": "confirmation"
21
- }
22
- },
23
14
  "addons": {
24
15
  "description": "Setting up additional packages",
25
16
  "type": "array",
@@ -19,6 +19,8 @@ function addTuiModules({ mainClass, context, }) {
19
19
  (0, ng_morph_1.addImportToNgModule)(mainClass, module.name, { unique: true });
20
20
  (0, add_unique_import_1.addUniqueImport)(mainModulePath, module.name, module.packageName);
21
21
  });
22
+ (0, ng_morph_1.addProviderToNgModule)(mainClass, 'NG_EVENT_PLUGINS', { unique: true });
23
+ (0, add_unique_import_1.addUniqueImport)(mainModulePath, 'NG_EVENT_PLUGINS', '@taiga-ui/event-plugins');
22
24
  context.logger.info(`${modules.map((module) => module.name)} was added to ${mainModulePath}`);
23
25
  }
24
26
  function addTuiEntitiesToStandalone({ bootstrapFunction, options, context, }) {
@@ -6,10 +6,7 @@ const angular_json_manipulations_1 = require("../../utils/angular-json-manipulat
6
6
  function addTaigaStyles(options) {
7
7
  return (_, context) => {
8
8
  const taigaLocalStyles = [taiga_styles_1.TAIGA_THEME_STYLE, taiga_styles_1.TAIGA_THEME_FONTS];
9
- const taigaStyles = options.addGlobalStyles
10
- ? [...taigaLocalStyles, taiga_styles_1.TAIGA_GLOBAL_NEW_STYLE]
11
- : taigaLocalStyles;
12
- return (0, angular_json_manipulations_1.addStylesToAngularJson)(options, context, taigaStyles);
9
+ return (0, angular_json_manipulations_1.addStylesToAngularJson)(options, context, taigaLocalStyles);
13
10
  };
14
11
  }
15
12
  exports.addTaigaStyles = addTaigaStyles;
@@ -16,11 +16,14 @@ const steps_2 = require("./steps");
16
16
  const constants_1 = require("./steps/constants");
17
17
  const modules_to_replace_1 = require("./steps/constants/modules-to-replace");
18
18
  const types_1 = require("./steps/constants/types");
19
+ const drop_universal_mock_1 = require("./steps/drop-universal-mock");
20
+ const migrate_editor_1 = require("./steps/migrate-editor");
19
21
  const migrate_root_1 = require("./steps/migrate-root");
20
22
  const replace_modules_with_providers_1 = require("./steps/utils/replace-modules-with-providers");
21
23
  function main(options) {
22
24
  return (tree, context) => {
23
25
  const fileSystem = (0, get_file_system_1.getFileSystem)(tree);
26
+ (0, migrate_editor_1.migrateEditor)(fileSystem, options);
24
27
  (0, steps_1.replaceEnums)(options, enums_1.ENUMS_TO_REPLACE);
25
28
  (0, migrate_root_1.migrateRoot)(fileSystem, options);
26
29
  (0, replace_services_1.replaceServices)(options, constants_1.SERVICES_TO_REPLACE);
@@ -37,6 +40,7 @@ function main(options) {
37
40
  (0, steps_2.migrateAlertService)(options);
38
41
  (0, steps_2.migrateNumberFormatSettings)(options);
39
42
  (0, steps_2.migrateMonthContext)(options);
43
+ (0, drop_universal_mock_1.dropUniversalMock)(options);
40
44
  (0, ng_morph_1.saveActiveProject)();
41
45
  (0, steps_2.migrateTemplates)(fileSystem, options);
42
46
  (0, steps_1.showWarnings)(context, constants_1.MIGRATION_WARNINGS);
@@ -587,47 +587,6 @@ exports.IDENTIFIERS_TO_REPLACE = [
587
587
  moduleSpecifier: '@taiga-ui/kit',
588
588
  },
589
589
  },
590
- {
591
- from: { name: 'TuiEditorModule', moduleSpecifier: '@tinkoff/tui-editor' },
592
- to: [
593
- { name: 'TuiEditor', moduleSpecifier: '@taiga-ui/editor' },
594
- { name: 'TuiEditorSocket', moduleSpecifier: '@taiga-ui/editor' },
595
- ],
596
- },
597
- {
598
- from: { name: 'TuiEditorSocketModule', moduleSpecifier: '@tinkoff/tui-editor' },
599
- to: { name: 'TuiEditorSocket', moduleSpecifier: '@taiga-ui/editor' },
600
- },
601
- {
602
- from: { name: 'TuiToolbarModule', moduleSpecifier: '@tinkoff/tui-editor' },
603
- to: { name: 'TuiToolbar', moduleSpecifier: '@taiga-ui/editor' },
604
- },
605
- {
606
- from: { name: 'defaultEditorExtensions', moduleSpecifier: '@tinkoff/tui-editor' },
607
- to: { name: 'TUI_EDITOR_DEFAULT_EXTENSIONS', moduleSpecifier: '@taiga-ui/editor' },
608
- },
609
- {
610
- from: {
611
- name: 'TUI_EDITOR_DEFAULT_EXTENSIONS',
612
- moduleSpecifier: '@tinkoff/tui-editor',
613
- },
614
- to: { name: 'TUI_EDITOR_DEFAULT_EXTENSIONS', moduleSpecifier: '@taiga-ui/editor' },
615
- },
616
- {
617
- from: [
618
- { name: 'defaultEditorTools', moduleSpecifier: '@tinkoff/tui-editor' },
619
- { name: 'TUI_EDITOR_DEFAULT_TOOLS', moduleSpecifier: '@tinkoff/tui-editor' },
620
- ],
621
- to: { name: 'TUI_EDITOR_DEFAULT_TOOLS', moduleSpecifier: '@taiga-ui/editor' },
622
- },
623
- {
624
- from: { name: 'TuiColorPickerModule', moduleSpecifier: '@tinkoff/tui-editor' },
625
- to: { name: 'TuiColorPickerModule', moduleSpecifier: '@taiga-ui/legacy' },
626
- },
627
- {
628
- from: { name: 'TuiInputColorModule', moduleSpecifier: '@tinkoff/tui-editor' },
629
- to: { name: 'TuiInputColorModule', moduleSpecifier: '@taiga-ui/legacy' },
630
- },
631
590
  {
632
591
  from: { name: 'TuiFadeModule', moduleSpecifier: '@taiga-ui/experimental' },
633
592
  to: {
@@ -0,0 +1,2 @@
1
+ import type { TuiSchema } from '../../../ng-add/schema';
2
+ export declare function dropUniversalMock(options: TuiSchema): void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dropUniversalMock = void 0;
4
+ const ng_morph_1 = require("ng-morph");
5
+ const file_globs_1 = require("../../../constants/file-globs");
6
+ const colored_log_1 = require("../../../utils/colored-log");
7
+ function dropUniversalMock(options) {
8
+ const moduleSpecifier = '@ng-web-apis/universal/mocks';
9
+ const imports = (0, ng_morph_1.getImports)(file_globs_1.ALL_TS_FILES, { moduleSpecifier });
10
+ if (imports.length) {
11
+ !options['skip-logs'] &&
12
+ (0, colored_log_1.infoLog)(`${colored_log_1.SMALL_TAB_SYMBOL}${colored_log_1.REPLACE_SYMBOL} drop "${moduleSpecifier}" import`);
13
+ const match = new RegExp(`import\\s+[\\'\\"\`]${moduleSpecifier}[\\'\\"\`];`, 'g');
14
+ imports.forEach((declaration) => declaration
15
+ .getSourceFile()
16
+ .replaceWithText(declaration.getSourceFile().getFullText().replaceAll(match, '')));
17
+ !options['skip-logs'] && (0, colored_log_1.titleLog)(`${colored_log_1.FINISH_SYMBOL} successfully migrated \n`);
18
+ }
19
+ }
20
+ exports.dropUniversalMock = dropUniversalMock;
@@ -0,0 +1,5 @@
1
+ /// <reference lib="es2021" />
2
+ import { type DevkitFileSystem } from 'ng-morph';
3
+ import type { TuiSchema } from '../../../ng-add/schema';
4
+ export declare const TUI_EDITOR_VERSION = "^4.0.0";
5
+ export declare function migrateEditor(fileSystem: DevkitFileSystem, options: TuiSchema): void;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateEditor = exports.TUI_EDITOR_VERSION = void 0;
4
+ /// <reference lib="es2021" />
5
+ const ng_morph_1 = require("ng-morph");
6
+ const ng_morph_2 = require("ng-morph");
7
+ const file_globs_1 = require("../../../constants/file-globs");
8
+ const colored_log_1 = require("../../../utils/colored-log");
9
+ const replace_identifier_1 = require("../../steps/replace-identifier");
10
+ const replace_package_name_1 = require("../../steps/replace-package-name");
11
+ exports.TUI_EDITOR_VERSION = '^4.0.0';
12
+ function migrateEditor(fileSystem, options) {
13
+ const moduleSpecifier = ['@tinkoff/tui-editor', '@taiga-ui/addon-editor'];
14
+ const hasEditor = moduleSpecifier.every((pkg) => !(0, ng_morph_1.getPackageJsonDependency)(fileSystem.tree, pkg));
15
+ if (hasEditor) {
16
+ return;
17
+ }
18
+ !options['skip-logs'] &&
19
+ (0, colored_log_1.infoLog)(`${colored_log_1.SMALL_TAB_SYMBOL}${colored_log_1.REPLACE_SYMBOL} migrating editor...`);
20
+ (0, replace_identifier_1.replaceIdentifiers)(options, [
21
+ {
22
+ from: { name: 'TuiEditorModule', moduleSpecifier },
23
+ to: [
24
+ { name: 'TuiEditor', moduleSpecifier: '@taiga-ui/editor' },
25
+ { name: 'TuiEditorSocket', moduleSpecifier: '@taiga-ui/editor' },
26
+ ],
27
+ },
28
+ {
29
+ from: { name: 'TuiEditorSocketModule', moduleSpecifier },
30
+ to: { name: 'TuiEditorSocket', moduleSpecifier: '@taiga-ui/editor' },
31
+ },
32
+ {
33
+ from: { name: 'TuiToolbarModule', moduleSpecifier },
34
+ to: { name: 'TuiToolbar', moduleSpecifier: '@taiga-ui/editor' },
35
+ },
36
+ {
37
+ from: { name: 'defaultEditorExtensions', moduleSpecifier },
38
+ to: {
39
+ name: 'TUI_EDITOR_DEFAULT_EXTENSIONS',
40
+ moduleSpecifier: '@taiga-ui/editor',
41
+ },
42
+ },
43
+ {
44
+ from: { name: 'TUI_EDITOR_DEFAULT_EXTENSIONS', moduleSpecifier },
45
+ to: {
46
+ name: 'TUI_EDITOR_DEFAULT_EXTENSIONS',
47
+ moduleSpecifier: '@taiga-ui/editor',
48
+ },
49
+ },
50
+ {
51
+ from: [
52
+ { name: 'defaultEditorTools', moduleSpecifier },
53
+ {
54
+ name: 'TUI_EDITOR_DEFAULT_TOOLS',
55
+ moduleSpecifier: '@tinkoff/tui-editor',
56
+ },
57
+ ],
58
+ to: { name: 'TUI_EDITOR_DEFAULT_TOOLS', moduleSpecifier: '@taiga-ui/editor' },
59
+ },
60
+ {
61
+ from: { name: 'TuiColorPickerModule', moduleSpecifier },
62
+ to: { name: 'TuiColorPickerModule', moduleSpecifier: '@taiga-ui/legacy' },
63
+ },
64
+ {
65
+ from: { name: 'TuiInputColorModule', moduleSpecifier },
66
+ to: { name: 'TuiInputColorModule', moduleSpecifier: '@taiga-ui/legacy' },
67
+ },
68
+ ]);
69
+ (0, ng_morph_2.getSourceFiles)(file_globs_1.ALL_TS_FILES).forEach((sourceFile) => sourceFile.replaceWithText(sourceFile
70
+ .getFullText()
71
+ .replaceAll(/import\(['"`](@tinkoff|@taiga-ui)\/(tui-editor|addon-editor)\/(.*)['"`]\)/g, "import('@taiga-ui/editor')")));
72
+ (0, ng_morph_2.saveActiveProject)();
73
+ moduleSpecifier.forEach((pkg) => (0, replace_package_name_1.replacePackageName)(pkg, { name: '@taiga-ui/editor', version: exports.TUI_EDITOR_VERSION }, fileSystem.tree));
74
+ (0, ng_morph_2.saveActiveProject)();
75
+ !options['skip-logs'] && (0, colored_log_1.titleLog)(`${colored_log_1.FINISH_SYMBOL} successfully migrated \n`);
76
+ }
77
+ exports.migrateEditor = migrateEditor;
@@ -4,5 +4,4 @@ import type { TuiSchema } from '../../../ng-add/schema';
4
4
  export declare const TUI_POLYMORPHEUS_VERSION = "^4.6.4";
5
5
  export declare const TUI_DOMPURIFY_VERSION = "^4.1.2";
6
6
  export declare const TUI_EVENT_PLUGINS_VERSION = "^4.0.1";
7
- export declare const TUI_EDITOR_VERSION = "^2.5.0";
8
7
  export declare function updatePackages({ tree }: DevkitFileSystem, _: TuiSchema): void;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updatePackages = exports.TUI_EDITOR_VERSION = exports.TUI_EVENT_PLUGINS_VERSION = exports.TUI_DOMPURIFY_VERSION = exports.TUI_POLYMORPHEUS_VERSION = void 0;
3
+ exports.updatePackages = exports.TUI_EVENT_PLUGINS_VERSION = exports.TUI_DOMPURIFY_VERSION = exports.TUI_POLYMORPHEUS_VERSION = void 0;
4
4
  const ng_morph_1 = require("ng-morph");
5
5
  const version_1 = require("../../../../constants/version");
6
6
  const constants_1 = require("../../../constants");
@@ -8,7 +8,6 @@ const steps_1 = require("../../steps");
8
8
  exports.TUI_POLYMORPHEUS_VERSION = '^4.6.4';
9
9
  exports.TUI_DOMPURIFY_VERSION = '^4.1.2';
10
10
  exports.TUI_EVENT_PLUGINS_VERSION = '^4.0.1';
11
- exports.TUI_EDITOR_VERSION = '^2.5.0';
12
11
  function updatePackages({ tree }, _) {
13
12
  const packagesToRemove = ['@taiga-ui/addon-tablebars', '@taiga-ui/addon-preview'];
14
13
  packagesToRemove.forEach((pkg) => {
@@ -26,10 +25,6 @@ function updatePackages({ tree }, _) {
26
25
  name: '@taiga-ui/event-plugins',
27
26
  version: exports.TUI_EVENT_PLUGINS_VERSION,
28
27
  }, tree);
29
- (0, steps_1.replacePackageName)('@tinkoff/tui-editor', {
30
- name: '@taiga-ui/editor',
31
- version: exports.TUI_EDITOR_VERSION,
32
- }, tree);
33
28
  const cdk = (0, ng_morph_1.getPackageJsonDependency)(tree, '@taiga-ui/cdk');
34
29
  if (!(0, ng_morph_1.getPackageJsonDependency)(tree, '@taiga-ui/event-plugins')) {
35
30
  (0, ng_morph_1.addPackageJsonDependency)(tree, {