@taiga-ui/addon-commerce 4.0.0-rc.2 → 4.0.0-rc.4

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 (41) hide show
  1. package/components/index.d.ts +1 -1
  2. package/components/input-card-group/index.d.ts +3 -0
  3. package/components/{input-card-grouped/input-card-grouped.component.d.ts → input-card-group/input-card-group.component.d.ts} +10 -10
  4. package/components/{input-card-grouped/input-card-grouped.options.d.ts → input-card-group/input-card-group.options.d.ts} +3 -3
  5. package/components/{input-card-grouped/input-card-grouped.providers.d.ts → input-card-group/input-card-group.providers.d.ts} +2 -2
  6. package/components/thumbnail-card/thumbnail-card.component.d.ts +3 -3
  7. package/esm2022/components/index.mjs +2 -2
  8. package/esm2022/components/input-card/input-card.directive.mjs +2 -2
  9. package/esm2022/components/input-card-group/index.mjs +4 -0
  10. package/esm2022/components/input-card-group/input-card-group.component.mjs +278 -0
  11. package/esm2022/components/input-card-group/input-card-group.options.mjs +15 -0
  12. package/esm2022/components/input-card-group/input-card-group.providers.mjs +29 -0
  13. package/esm2022/components/input-card-group/taiga-ui-addon-commerce-components-input-card-group.mjs +5 -0
  14. package/esm2022/components/thumbnail-card/thumbnail-card.component.mjs +7 -7
  15. package/esm2022/constants/default-card-validator.mjs +2 -2
  16. package/esm2022/constants/mask-card-holder.mjs +2 -2
  17. package/esm2022/constants/mask-cvc.mjs +2 -2
  18. package/esm2022/pipes/amount/amount.pipe.mjs +2 -2
  19. package/esm2022/tokens/i18n.mjs +2 -2
  20. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs +318 -0
  21. package/fesm2022/taiga-ui-addon-commerce-components-input-card-group.mjs.map +1 -0
  22. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs +1 -1
  23. package/fesm2022/taiga-ui-addon-commerce-components-input-card.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs +6 -6
  25. package/fesm2022/taiga-ui-addon-commerce-components-thumbnail-card.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-addon-commerce-components.mjs +1 -1
  27. package/fesm2022/taiga-ui-addon-commerce-constants.mjs +3 -3
  28. package/fesm2022/taiga-ui-addon-commerce-constants.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs +1 -1
  30. package/fesm2022/taiga-ui-addon-commerce-pipes-amount.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-addon-commerce-tokens.mjs +1 -1
  32. package/fesm2022/taiga-ui-addon-commerce-tokens.mjs.map +1 -1
  33. package/package.json +12 -12
  34. package/components/input-card-grouped/index.d.ts +0 -3
  35. package/esm2022/components/input-card-grouped/index.mjs +0 -4
  36. package/esm2022/components/input-card-grouped/input-card-grouped.component.mjs +0 -288
  37. package/esm2022/components/input-card-grouped/input-card-grouped.options.mjs +0 -15
  38. package/esm2022/components/input-card-grouped/input-card-grouped.providers.mjs +0 -29
  39. package/esm2022/components/input-card-grouped/taiga-ui-addon-commerce-components-input-card-grouped.mjs +0 -5
  40. package/fesm2022/taiga-ui-addon-commerce-components-input-card-grouped.mjs +0 -328
  41. package/fesm2022/taiga-ui-addon-commerce-components-input-card-grouped.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  export * from '@taiga-ui/addon-commerce/components/input-card';
2
- export * from '@taiga-ui/addon-commerce/components/input-card-grouped';
2
+ export * from '@taiga-ui/addon-commerce/components/input-card-group';
3
3
  export * from '@taiga-ui/addon-commerce/components/input-cvc';
4
4
  export * from '@taiga-ui/addon-commerce/components/input-expire';
5
5
  export * from '@taiga-ui/addon-commerce/components/thumbnail-card';
@@ -0,0 +1,3 @@
1
+ export * from './input-card-group.component';
2
+ export * from './input-card-group.options';
3
+ export * from './input-card-group.providers';
@@ -1,4 +1,4 @@
1
- import type { WritableSignal } from '@angular/core';
1
+ import type { Signal } from '@angular/core';
2
2
  import { EventEmitter } from '@angular/core';
3
3
  import { TuiControl } from '@taiga-ui/cdk/classes';
4
4
  import type { TuiBooleanHandler } from '@taiga-ui/cdk/types';
@@ -8,7 +8,7 @@ import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@taiga-ui/core/directives/appearance";
10
10
  import * as i2 from "@taiga-ui/core/directives/dropdown";
11
- import * as i3 from "@taiga-ui/core/components/data-list";
11
+ import * as i3 from "@taiga-ui/core/components/textfield";
12
12
  export interface TuiCard {
13
13
  card: string;
14
14
  cvc: string;
@@ -31,13 +31,13 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
31
31
  protected readonly maskCard: import("@maskito/core").MaskitoOptions;
32
32
  protected readonly maskExpire: Required<import("@maskito/core").MaskitoOptions>;
33
33
  protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
34
- protected readonly texts: import("@angular/core").Signal<import("./input-card-grouped.providers").TuiCardGroupedTexts | undefined>;
35
- protected readonly open: WritableSignal<boolean>;
36
- protected readonly state: import("@angular/core").Signal<"disabled" | "hover" | null>;
37
- protected readonly focus: import("@angular/core").Signal<boolean>;
38
- protected readonly sub: import("rxjs").Subscription;
39
- protected readonly labelRaised: import("@angular/core").Signal<boolean>;
40
- protected readonly hasCleaner: import("@angular/core").Signal<boolean>;
34
+ protected readonly texts: Signal<import("./input-card-group.providers").TuiCardGroupedTexts | undefined>;
35
+ protected readonly open: import("@angular/core").WritableSignal<boolean>;
36
+ protected readonly appearance: import("@angular/core").WritableSignal<string>;
37
+ protected readonly state: Signal<unknown>;
38
+ protected readonly focus: Signal<boolean | null>;
39
+ protected readonly labelRaised: Signal<boolean>;
40
+ protected readonly hasCleaner: Signal<boolean>;
41
41
  exampleText: string;
42
42
  cardValidator: TuiBooleanHandler<string>;
43
43
  icon: PolymorpheusContent;
@@ -77,5 +77,5 @@ export declare class TuiInputCardGroup extends TuiControl<TuiCard | null> implem
77
77
  private updateProperty;
78
78
  private focusInput;
79
79
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputCardGroup, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCardGroup, "tui-input-card-grouped", never, { "exampleText": { "alias": "exampleText"; "required": false; }; "cardValidator": { "alias": "cardValidator"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "id": { "alias": "id"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "codeLength": { "alias": "codeLength"; "required": false; }; }, { "binChange": "binChange"; }, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithDataList; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownOpen; inputs: { "tuiDropdownOpen": "open"; }; outputs: { "tuiDropdownOpenChange": "openChange"; }; }]>;
80
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputCardGroup, "tui-input-card-group", never, { "exampleText": { "alias": "exampleText"; "required": false; }; "cardValidator": { "alias": "cardValidator"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "id": { "alias": "id"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "codeLength": { "alias": "codeLength"; "required": false; }; }, { "binChange": "binChange"; }, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithDropdownOpen; inputs: {}; outputs: {}; }]>;
81
81
  }
@@ -7,6 +7,6 @@ export interface TuiInputCardGroupOptions extends TuiInputCardOptions {
7
7
  readonly exampleTextCVC: string;
8
8
  readonly cvcHidden: boolean;
9
9
  }
10
- export declare const TUI_INPUT_CARD_GROUPED_DEFAULT_OPTIONS: TuiInputCardGroupOptions;
11
- export declare const TUI_INPUT_CARD_GROUPED_OPTIONS: import("@angular/core").InjectionToken<TuiInputCardGroupOptions>;
12
- export declare function tuiInputCardGroupedOptionsProvider(options: Partial<TuiInputCardGroupOptions>): Provider;
10
+ export declare const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS: TuiInputCardGroupOptions;
11
+ export declare const TUI_INPUT_CARD_GROUP_OPTIONS: import("@angular/core").InjectionToken<TuiInputCardGroupOptions>;
12
+ export declare function tuiInputCardGroupOptionsProvider(options: Partial<TuiInputCardGroupOptions>): Provider;
@@ -5,6 +5,6 @@ export interface TuiCardGroupedTexts {
5
5
  readonly expiryText: string;
6
6
  }
7
7
  /**
8
- * InputCardGrouped texts
8
+ * InputCardGroup texts
9
9
  */
10
- export declare const TUI_INPUT_CARD_GROUPED_TEXTS: import("@angular/core").InjectionToken<Observable<TuiCardGroupedTexts>>;
10
+ export declare const TUI_INPUT_CARD_GROUP_TEXTS: import("@angular/core").InjectionToken<Observable<TuiCardGroupedTexts>>;
@@ -5,9 +5,9 @@ export declare class TuiThumbnailCard {
5
5
  protected readonly paymentIcons: Record<TuiPaymentSystem, string>;
6
6
  size: TuiSizeL | TuiSizeS;
7
7
  paymentSystem: TuiPaymentSystem | null;
8
- iconLeft: string;
9
- iconRight: string;
8
+ iconStart: string;
9
+ iconEnd: string;
10
10
  protected get isMono(): boolean;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiThumbnailCard, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiThumbnailCard, "tui-thumbnail-card", never, { "size": { "alias": "size"; "required": false; }; "paymentSystem": { "alias": "paymentSystem"; "required": false; }; "iconLeft": { "alias": "iconLeft"; "required": false; }; "iconRight": { "alias": "iconRight"; "required": false; }; }, {}, never, ["*"], true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiThumbnailCard, "tui-thumbnail-card", never, { "size": { "alias": "size"; "required": false; }; "paymentSystem": { "alias": "paymentSystem"; "required": false; }; "iconStart": { "alias": "iconStart"; "required": false; }; "iconEnd": { "alias": "iconEnd"; "required": false; }; }, {}, never, ["*"], true, never>;
13
13
  }
@@ -1,6 +1,6 @@
1
1
  export * from '@taiga-ui/addon-commerce/components/input-card';
2
- export * from '@taiga-ui/addon-commerce/components/input-card-grouped';
2
+ export * from '@taiga-ui/addon-commerce/components/input-card-group';
3
3
  export * from '@taiga-ui/addon-commerce/components/input-cvc';
4
4
  export * from '@taiga-ui/addon-commerce/components/input-expire';
5
5
  export * from '@taiga-ui/addon-commerce/components/thumbnail-card';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQnO1xuZXhwb3J0ICogZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZC1ncm91cGVkJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWN2Yyc7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvY29tcG9uZW50cy9pbnB1dC1leHBpcmUnO1xuZXhwb3J0ICogZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvdGh1bWJuYWlsLWNhcmQnO1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQnO1xuZXhwb3J0ICogZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtY2FyZC1ncm91cCc7XG5leHBvcnQgKiBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvY29tcG9uZW50cy9pbnB1dC1jdmMnO1xuZXhwb3J0ICogZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbXBvbmVudHMvaW5wdXQtZXhwaXJlJztcbmV4cG9ydCAqIGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL3RodW1ibmFpbC1jYXJkJztcbiJdfQ==
@@ -24,7 +24,7 @@ class TuiInputCard {
24
24
  });
25
25
  this.autocomplete = this.options.autocomplete;
26
26
  this.icon = this.options.icon;
27
- this.binChange = timer(0).pipe(switchMap(() => tuiControlValue(this.control)), map(value => (value.length < 6 ? null : value.replace(' ', '').slice(0, 6))), startWith(null), distinctUntilChanged(), skip(1));
27
+ this.binChange = timer(0).pipe(switchMap(() => tuiControlValue(this.control)), map((value) => (value.length < 6 ? null : value.replace(' ', '').slice(0, 6))), startWith(null), distinctUntilChanged(), skip(1));
28
28
  }
29
29
  ngOnInit() {
30
30
  this.mask.options = TUI_MASK_CARD;
@@ -70,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
70
70
  }], binChange: [{
71
71
  type: Output
72
72
  }], getPaymentSystem: [] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQvaW5wdXQtY2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWxGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUFFNUQsTUFXYSxZQUFZO0lBWHpCO1FBWXFCLFVBQUssR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDekMsYUFBUSxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1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bkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RlZmF1bHRWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge1RVSV9NQVNLX0NBUkR9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb25zdGFudHMnO1xuaW1wb3J0IHtUVUlfUEFZTUVOVF9TWVNURU1fSUNPTlN9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVBheW1lbnRTeXN0ZW19IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS90eXBlcyc7XG5pbXBvcnQge3R1aUNvbnRyb2xWYWx1ZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R1aUluamVjdEljb25SZXNvbHZlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfQ0FSRF9PUFRJT05TfSBmcm9tICcuL2lucHV0LWNhcmQub3B0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dENhcmRdJyxcbiAgICBob3N0RGlyZWN0aXZlczogW01hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgaW5wdXRtb2RlOiAnbnVtZXJpYycsXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnMDAwMCAwMDAwIDAwMDAgMDAwMCcsXG4gICAgICAgICdbYXV0b2NvbXBsZXRlXSc6ICdhdXRvY29tcGxldGUgPyBcImNjLW51bWJlclwiIDogXCJvZmZcIicsXG4gICAgICAgICdbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV0nOiAnYmFja2dyb3VuZEltYWdlJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENhcmQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX1BBWU1FTlRfU1lTVEVNX0lDT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX0NBUkRfT1BUSU9OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlciA9IHR1aUluamVjdEljb25SZXNvbHZlcigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFzayA9IGluamVjdChNYXNraXRvRGlyZWN0aXZlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjY2Vzc29yID0gaW5qZWN0KERlZmF1bHRWYWx1ZUFjY2Vzc29yLCB7XG4gICAgICAgIHNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlID0gdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb24gPSB0aGlzLm9wdGlvbnMuaWNvbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBiaW5DaGFuZ2UgPSB0aW1lcigwKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdHVpQ29udHJvbFZhbHVlPHN0cmluZz4odGhpcy5jb250cm9sKSksXG4gICAgICAgIG1hcCh2YWx1ZSA9PiAodmFsdWUubGVuZ3RoIDwgNiA/IG51bGwgOiB2YWx1ZS5yZXBsYWNlKCcgJywgJycpLnNsaWNlKDAsIDYpKSksXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2tpcCgxKSxcbiAgICApO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hc2sub3B0aW9ucyA9IFRVSV9NQVNLX0NBUkQ7XG4gICAgICAgIHRoaXMubWFzay5uZ09uQ2hhbmdlcygpO1xuXG4gICAgICAgIGlmICghdGhpcy5hY2Nlc3Nvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb25DaGFuZ2VzID0gdGhpcy5hY2Nlc3Nvci5vbkNoYW5nZS5iaW5kKHRoaXMuYWNjZXNzb3IpO1xuXG4gICAgICAgIHRoaXMuYWNjZXNzb3Iub25DaGFuZ2UgPSAodmFsdWU6IHN0cmluZykgPT4gb25DaGFuZ2VzKHZhbHVlLnJlcGxhY2VBbGwoJyAnLCAnJykpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgYmFja2dyb3VuZEltYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBzeXN0ZW0gPSB0aGlzLmdldFBheW1lbnRTeXN0ZW0odGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5pY29uIHx8IChzeXN0ZW0gJiYgdGhpcy5yZXNvbHZlcih0aGlzLmljb25zW3N5c3RlbV0pKTtcblxuICAgICAgICByZXR1cm4gdXJsICYmIHRoaXMuaWNvbiAhPT0gJycgPyBgdXJsKCR7dXJsfSlgIDogbnVsbDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0UGF5bWVudFN5c3RlbSh2YWx1ZTogc3RyaW5nKTogVHVpUGF5bWVudFN5c3RlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBheW1lbnRTeXN0ZW1IYW5kbGVyKHZhbHVlKTtcbiAgICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQvaW5wdXQtY2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLG9CQUFvQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWxGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUFFNUQsTUFXYSxZQUFZO0lBWHpCO1FBWXFCLFVBQUssR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDekMsYUFBUSxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QixTQUFJLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUNyRCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUdJLGlCQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFHekMsU0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBR2hCLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixvQkFBb0IsRUFBRSxFQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1YsQ0FBQztLQTBCTDtJQXhCVSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBR08sZ0JBQWdCLENBQUMsS0FBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0FqRFEsWUFBWTttR0FBWixZQUFZOztBQStDYjtJQURQLE9BQU87b0RBR1A7U0FqRFEsWUFBWTs0RkFBWixZQUFZO2tCQVh4QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEMsSUFBSSxFQUFFO3dCQUNGLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixXQUFXLEVBQUUscUJBQXFCO3dCQUNsQyxnQkFBZ0IsRUFBRSxvQ0FBb0M7d0JBQ3RELDBCQUEwQixFQUFFLGlCQUFpQjtxQkFDaEQ7aUJBQ0o7OEJBYVUsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSVUsU0FBUztzQkFEeEIsTUFBTTtnQkE4QkMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge09uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGVmYXVsdFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7VFVJX01BU0tfQ0FSRH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9QQVlNRU5UX1NZU1RFTV9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpUGF5bWVudFN5c3RlbX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3R5cGVzJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpSW5qZWN0SWNvblJlc29sdmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1RVSV9JTlBVVF9DQVJEX09QVElPTlN9IGZyb20gJy4vaW5wdXQtY2FyZC5vcHRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0Q2FyZF0nLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbTWFza2l0b0RpcmVjdGl2ZV0sXG4gICAgaG9zdDoge1xuICAgICAgICBpbnB1dG1vZGU6ICdudW1lcmljJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcwMDAwIDAwMDAgMDAwMCAwMDAwJyxcbiAgICAgICAgJ1thdXRvY29tcGxldGVdJzogJ2F1dG9jb21wbGV0ZSA/IFwiY2MtbnVtYmVyXCIgOiBcIm9mZlwiJyxcbiAgICAgICAgJ1tzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXSc6ICdiYWNrZ3JvdW5kSW1hZ2UnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0Q2FyZCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29ucyA9IGluamVjdChUVUlfUEFZTUVOVF9TWVNURU1fSUNPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSU5QVVRfQ0FSRF9PUFRJT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc29sdmVyID0gdHVpSW5qZWN0SWNvblJlc29sdmVyKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXNrID0gaW5qZWN0KE1hc2tpdG9EaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzb3IgPSBpbmplY3QoRGVmYXVsdFZhbHVlQWNjZXNzb3IsIHtcbiAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGUgPSB0aGlzLm9wdGlvbnMuYXV0b2NvbXBsZXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvbiA9IHRoaXMub3B0aW9ucy5pY29uO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGJpbkNoYW5nZSA9IHRpbWVyKDApLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0dWlDb250cm9sVmFsdWU8c3RyaW5nPih0aGlzLmNvbnRyb2wpKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHZhbHVlLmxlbmd0aCA8IDYgPyBudWxsIDogdmFsdWUucmVwbGFjZSgnICcsICcnKS5zbGljZSgwLCA2KSkpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHNraXAoMSksXG4gICAgKTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXNrLm9wdGlvbnMgPSBUVUlfTUFTS19DQVJEO1xuICAgICAgICB0aGlzLm1hc2submdPbkNoYW5nZXMoKTtcblxuICAgICAgICBpZiAoIXRoaXMuYWNjZXNzb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9uQ2hhbmdlcyA9IHRoaXMuYWNjZXNzb3Iub25DaGFuZ2UuYmluZCh0aGlzLmFjY2Vzc29yKTtcblxuICAgICAgICB0aGlzLmFjY2Vzc29yLm9uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IG9uQ2hhbmdlcyh2YWx1ZS5yZXBsYWNlQWxsKCcgJywgJycpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGJhY2tncm91bmRJbWFnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc3lzdGVtID0gdGhpcy5nZXRQYXltZW50U3lzdGVtKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuaWNvbiB8fCAoc3lzdGVtICYmIHRoaXMucmVzb2x2ZXIodGhpcy5pY29uc1tzeXN0ZW1dKSk7XG5cbiAgICAgICAgcmV0dXJuIHVybCAmJiB0aGlzLmljb24gIT09ICcnID8gYHVybCgke3VybH0pYCA6IG51bGw7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldFBheW1lbnRTeXN0ZW0odmFsdWU6IHN0cmluZyk6IFR1aVBheW1lbnRTeXN0ZW0gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wYXltZW50U3lzdGVtSGFuZGxlcih2YWx1ZSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './input-card-group.component';
2
+ export * from './input-card-group.options';
3
+ export * from './input-card-group.providers';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lucHV0LWNhcmQtZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtY2FyZC1ncm91cC5vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtY2FyZC1ncm91cC5wcm92aWRlcnMnO1xuIl19
@@ -0,0 +1,278 @@
1
+ import { __decorate } from "tslib";
2
+ import { NgIf } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, computed, EventEmitter, inject, Input, Output, ViewChild, } from '@angular/core';
4
+ import { toSignal } from '@angular/core/rxjs-interop';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { MaskitoDirective } from '@maskito/angular';
7
+ import { ResizeObserverDirective } from '@ng-web-apis/resize-observer';
8
+ import { TUI_MASK_CARD, TUI_MASK_CVC, TUI_MASK_EXPIRE, } from '@taiga-ui/addon-commerce/constants';
9
+ import { TuiFormatCardPipe } from '@taiga-ui/addon-commerce/pipes';
10
+ import { TUI_PAYMENT_SYSTEM_ICONS } from '@taiga-ui/addon-commerce/tokens';
11
+ import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
12
+ import { TUI_NON_DIGIT_REGEXP } from '@taiga-ui/cdk/constants';
13
+ import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
14
+ import { tuiHovered, TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
15
+ import { TuiLet } from '@taiga-ui/cdk/directives/let';
16
+ import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
17
+ import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
18
+ import { TuiIdService } from '@taiga-ui/cdk/services';
19
+ import { tuiInjectElement, tuiIsElement, tuiIsInput } from '@taiga-ui/cdk/utils/dom';
20
+ import { tuiIsNativeFocused, tuiIsNativeFocusedIn } from '@taiga-ui/cdk/utils/focus';
21
+ import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
22
+ import { tuiAsDataListHost } from '@taiga-ui/core/components/data-list';
23
+ import { TuiIcon, TuiIconPipe } from '@taiga-ui/core/components/icon';
24
+ import { TUI_TEXTFIELD_OPTIONS, TuiWithTextfieldDropdown, } from '@taiga-ui/core/components/textfield';
25
+ import { TuiAppearance, tuiAppearance, tuiAppearanceFocus, tuiAppearanceState, } from '@taiga-ui/core/directives/appearance';
26
+ import { TuiDropdownDirective, tuiDropdownOpen, tuiDropdownOptionsProvider, TuiWithDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
27
+ import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
28
+ import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
29
+ import { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
30
+ import { map, merge } from 'rxjs';
31
+ import { TUI_INPUT_CARD_GROUP_OPTIONS } from './input-card-group.options';
32
+ import { TUI_INPUT_CARD_GROUP_TEXTS } from './input-card-group.providers';
33
+ import * as i0 from "@angular/core";
34
+ import * as i1 from "@taiga-ui/core/directives/appearance";
35
+ import * as i2 from "@taiga-ui/core/directives/dropdown";
36
+ import * as i3 from "@taiga-ui/core/components/textfield";
37
+ import * as i4 from "@angular/forms";
38
+ class TuiInputCardGroup extends TuiControl {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.expirePrefilled = false;
42
+ this.paymentSystems = inject(TUI_PAYMENT_SYSTEM_ICONS);
43
+ this.options = inject(TUI_INPUT_CARD_GROUP_OPTIONS);
44
+ this.el = tuiInjectElement();
45
+ this.hover = tuiHovered();
46
+ this.focusedIn = toSignal(merge(tuiTypedFromEvent(this.el, 'focusin'), tuiTypedFromEvent(this.el, 'focusout')).pipe(map(() => tuiIsNativeFocusedIn(this.el))), { initialValue: false });
47
+ this.exampleTextCVC = this.options.exampleTextCVC;
48
+ this.cvcHidden = this.options.cvcHidden;
49
+ this.maskCVC = TUI_MASK_CVC(3);
50
+ this.dropdown = inject(TuiDropdownDirective);
51
+ this.maskCard = TUI_MASK_CARD;
52
+ this.maskExpire = TUI_MASK_EXPIRE;
53
+ this.icons = inject(TUI_COMMON_ICONS);
54
+ this.texts = toSignal(inject(TUI_INPUT_CARD_GROUP_TEXTS));
55
+ this.open = tuiDropdownOpen();
56
+ this.appearance = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);
57
+ this.state = tuiAppearanceState(
58
+ // eslint-disable-next-line no-nested-ternary
59
+ computed(() => (this.disabled() ? 'disabled' : this.hover() ? 'hover' : null)));
60
+ this.focus = tuiAppearanceFocus(computed(() => this.open() || this.focusedIn()));
61
+ this.labelRaised = computed(() => (this.focus() && !this.readOnly()) || !!this.value()?.card);
62
+ this.hasCleaner = computed(() => !!this.value()?.card && this.interactive());
63
+ this.exampleText = this.options.exampleText;
64
+ this.cardValidator = this.options.cardValidator;
65
+ this.icon = this.options.icon;
66
+ this.id = inject(TuiIdService).generate();
67
+ this.autocomplete = this.options.autocomplete;
68
+ this.binChange = new EventEmitter();
69
+ }
70
+ set codeLength(length) {
71
+ this.exampleTextCVC = '0'.repeat(length);
72
+ this.maskCVC = TUI_MASK_CVC(length);
73
+ }
74
+ get bin() {
75
+ return this.card.length < 6 ? null : this.card.slice(0, 6);
76
+ }
77
+ writeValue(value) {
78
+ const { bin } = this;
79
+ super.writeValue(value);
80
+ this.updateBin(bin);
81
+ this.expirePrefilled = !!this.expire && this.cardPrefilled;
82
+ }
83
+ /** Public API for manual focus management */
84
+ focusCard() {
85
+ this.inputCard?.nativeElement.focus({ preventScroll: true });
86
+ }
87
+ focusExpire() {
88
+ this.inputExpire?.nativeElement.focus({ preventScroll: true });
89
+ }
90
+ focusCVC() {
91
+ this.inputCVC?.nativeElement.focus({ preventScroll: true });
92
+ }
93
+ handleOption(option) {
94
+ const { card = '', expire = '', cvc = '' } = option || {};
95
+ const { bin } = this;
96
+ const element = (!card && this.inputCard?.nativeElement) ||
97
+ (!expire && this.inputExpire?.nativeElement) ||
98
+ this.inputCVC?.nativeElement;
99
+ this.onChange({ card, expire, cvc });
100
+ this.updateBin(bin);
101
+ this.open.set(false);
102
+ this.expirePrefilled = !!expire;
103
+ element?.focus();
104
+ }
105
+ clear() {
106
+ this.expirePrefilled = false;
107
+ this.onChange(null);
108
+ this.focusCard();
109
+ }
110
+ get content() {
111
+ const system = this.getPaymentSystem(this.card);
112
+ return this.icon || (system && this.paymentSystems[system]);
113
+ }
114
+ get card() {
115
+ return this.value()?.card || '';
116
+ }
117
+ get expire() {
118
+ return this.value()?.expire || '';
119
+ }
120
+ get cvc() {
121
+ return this.value()?.cvc || '';
122
+ }
123
+ get cardCollapsed() {
124
+ return (this.isFocusable(this.card) &&
125
+ !tuiIsNativeFocused(this.inputCard?.nativeElement));
126
+ }
127
+ get tailLength() {
128
+ return this.card.length % 4 > 0 ? 5 : 4;
129
+ }
130
+ get cardPrefilled() {
131
+ return !!this.card.match(TUI_NON_DIGIT_REGEXP);
132
+ }
133
+ get cvcPrefilled() {
134
+ return !!this.cvc.match(TUI_NON_DIGIT_REGEXP);
135
+ }
136
+ get cardFocusable() {
137
+ return !this.cardPrefilled;
138
+ }
139
+ get expireFocusable() {
140
+ return this.isFocusable(this.card) && !this.expirePrefilled;
141
+ }
142
+ get cvcFocusable() {
143
+ return this.isFocusable(this.card);
144
+ }
145
+ get masked() {
146
+ return this.cardPrefilled ? `*${this.card.slice(-4)}` : '*';
147
+ }
148
+ onCardChange(card) {
149
+ const { value, bin } = this;
150
+ const parsed = card.split(' ').join('');
151
+ if (value()?.card === parsed) {
152
+ return;
153
+ }
154
+ this.updateProperty(parsed, 'card');
155
+ this.updateBin(bin);
156
+ if (this.cardValidator(this.card) && !value()?.expire && this.inputExpire) {
157
+ this.focusExpire();
158
+ }
159
+ }
160
+ onExpireChange(expire) {
161
+ this.updateProperty(expire, 'expire');
162
+ if (Number(this.inputExpire?.nativeElement.selectionStart) === 5 // MM/YY
163
+ ) {
164
+ this.focusCVC();
165
+ }
166
+ }
167
+ onCVCChange(cvc) {
168
+ this.updateProperty(cvc, 'cvc');
169
+ }
170
+ transform({ offsetWidth }) {
171
+ return this.cardCollapsed ? `translate3d(${offsetWidth}px, 0, 0)` : '';
172
+ }
173
+ onMouseDown(event) {
174
+ if (tuiIsElement(event.target) && tuiIsInput(event.target)) {
175
+ return;
176
+ }
177
+ event.preventDefault();
178
+ this.focusInput();
179
+ }
180
+ toggle() {
181
+ this.open.set(!this.open());
182
+ }
183
+ isFocusable(card) {
184
+ return this.cardValidator(card) || this.cardPrefilled;
185
+ }
186
+ getPaymentSystem(value) {
187
+ return this.options.paymentSystemHandler(value);
188
+ }
189
+ updateBin(oldBin) {
190
+ const { bin } = this;
191
+ if (bin !== oldBin && !this.cardPrefilled) {
192
+ this.binChange.emit(bin);
193
+ }
194
+ }
195
+ updateProperty(value, propName) {
196
+ const { card = '', expire = '', cvc = '' } = this.value() || {};
197
+ const newValue = { card, expire, cvc };
198
+ newValue[propName] = value;
199
+ this.onChange(newValue.expire || newValue.cvc || newValue.card ? newValue : null);
200
+ }
201
+ focusInput() {
202
+ const element = (this.cardFocusable && this.inputCard?.nativeElement) ||
203
+ (this.expireFocusable && this.inputExpire?.nativeElement) ||
204
+ this.inputCVC?.nativeElement;
205
+ element?.focus();
206
+ }
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputCardGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputCardGroup, isStandalone: true, selector: "tui-input-card-group", inputs: { exampleText: "exampleText", cardValidator: "cardValidator", icon: "icon", id: "id", autocomplete: "autocomplete", codeLength: "codeLength" }, outputs: { binChange: "binChange" }, host: { attributes: { "data-size": "l" }, listeners: { "mousedown": "onMouseDown($event)" }, properties: { "attr.data-mode": "mode()" } }, providers: [
209
+ tuiAsDataListHost(TuiInputCardGroup),
210
+ tuiAsControl(TuiInputCardGroup),
211
+ tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
212
+ TuiHoveredService,
213
+ ], viewQueries: [{ propertyName: "inputCard", first: true, predicate: ["inputCard"], descendants: true }, { propertyName: "inputExpire", first: true, predicate: ["inputExpire"], descendants: true }, { propertyName: "inputCVC", first: true, predicate: ["inputCVC"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiAppearance }, { directive: i2.TuiDropdownDirective }, { directive: i3.TuiWithTextfieldDropdown }, { directive: i2.TuiWithDropdownOpen }], ngImport: i0, template: "<div class=\"t-wrapper\">\n <label\n *tuiLet=\"value()?.card | tuiFormatCard: cardPrefilled as formattedCard\"\n (click.silent.prevent)=\"(0)\"\n >\n <input\n #inputCard\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"id + '_card'\"\n [autocomplete]=\"autocomplete ? 'cc-number' : 'off'\"\n [class.t-input_hidden]=\"!card.length && focus()\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [placeholder]=\"cardPrefilled ? '' : exampleText\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"(0)\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style.transform]=\"transform(ghost)\"\n >\n {{ formattedCard }}\n </span>\n </span>\n </span>\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cardNumberText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.silent.prevent)=\"(0)\">\n <input\n #inputExpire\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n placeholder=\"00/00\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"id + '_expire'\"\n [attr.name]=\"autocomplete ? 'ccexpiryyear' : null\"\n [autocomplete]=\"autocomplete ? 'cc-exp' : 'off'\"\n [class.t-input_inert]=\"!expireFocusable\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"expireFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.silent.prevent)=\"(0)\">\n <input\n #inputCVC\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"id + '_cvc'\"\n [autocomplete]=\"autocomplete ? 'cc-csc' : 'off'\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n <div\n *ngIf=\"content\"\n class=\"t-icon-outlet\"\n >\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n <tui-icon\n *ngIf=\"hasCleaner()\"\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n <tui-icon\n *ngIf=\"dropdown.content\"\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n (click)=\"toggle()\"\n />\n</div>\n", styles: [":host{position:relative;display:block;height:var(--tui-height-l);width:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){width:18rem}.t-outline{height:100%;width:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;width:100%;height:100%}.t-wrapper_cvc{margin-left:7.1875rem;transform:translate3d(100%,0,0)}:host-context(tui-root._mobile) .t-wrapper_cvc{margin-left:4.0625rem}.t-wrapper_expire{transform:translate3d(100%,0,0)}.t-wrapper_active{transform:translate3d(6.5625rem,0,0)}:host-context(tui-root._mobile) .t-wrapper_active{transform:translate3d(4.125rem,0,0)}.t-card{width:2rem;height:2rem}.t-collapsed{position:absolute;top:0;left:0;width:100%;height:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-s);line-height:2.25rem;color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:1.375rem}.t-collapsed-wrapper{position:absolute;top:0;display:block;width:100%;height:100%;overflow:hidden}.t-value{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;transform:translate3d(100%,0,0)}.t-input{position:absolute;top:0;left:0;width:100%;height:100%;border:0;margin:0;padding:1.25rem var(--tui-padding-l) 0;outline:none;background:transparent;box-sizing:border-box;font:var(--tui-font-text-s);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input.t-input.t-input_card:not(.t-input_hidden),.t-input.t-input.t-input_card:not(.t-input_hidden)::placeholder,.t-input.t-input.t-input_card:not(.t-input_hidden):-webkit-autofill{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}@supports (-webkit-touch-callout: none){.t-input:active{font-size:1rem}}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;height:100%}.t-icon-outlet{display:flex;margin-right:.25rem}.t-icon{cursor:pointer;border:.25rem solid transparent}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1.125rem 1rem;font:var(--tui-font-text-m);line-height:1.25rem;color:var(--tui-text-secondary)}.t-label_raised{font-size:.8156rem;transform:translateY(-.7em)}:host([data-mode=\"invalid\"]) .t-label{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: ResizeObserverDirective, selector: "[waResizeObserver]", outputs: ["waResizeObserver"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: TuiFormatCardPipe, name: "tuiFormatCard" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus"] }, { kind: "pipe", type: TuiIconPipe, name: "tuiIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
214
+ }
215
+ __decorate([
216
+ tuiPure
217
+ ], TuiInputCardGroup.prototype, "isFocusable", null);
218
+ __decorate([
219
+ tuiPure
220
+ ], TuiInputCardGroup.prototype, "getPaymentSystem", null);
221
+ export { TuiInputCardGroup };
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputCardGroup, decorators: [{
223
+ type: Component,
224
+ args: [{ standalone: true, selector: 'tui-input-card-group', imports: [
225
+ NgIf,
226
+ FormsModule,
227
+ MaskitoDirective,
228
+ ResizeObserverDirective,
229
+ PolymorpheusOutlet,
230
+ PolymorpheusTemplate,
231
+ TuiActiveZone,
232
+ TuiFormatCardPipe,
233
+ TuiMapperPipe,
234
+ TuiLet,
235
+ TuiIcon,
236
+ TuiChevron,
237
+ TuiAppearance,
238
+ TuiIconPipe,
239
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
240
+ tuiAsDataListHost(TuiInputCardGroup),
241
+ tuiAsControl(TuiInputCardGroup),
242
+ tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
243
+ TuiHoveredService,
244
+ ], hostDirectives: [
245
+ TuiAppearance,
246
+ TuiDropdownDirective,
247
+ TuiWithTextfieldDropdown,
248
+ TuiWithDropdownOpen,
249
+ ], host: {
250
+ 'data-size': 'l',
251
+ '[attr.data-mode]': 'mode()',
252
+ '(mousedown)': 'onMouseDown($event)',
253
+ }, template: "<div class=\"t-wrapper\">\n <label\n *tuiLet=\"value()?.card | tuiFormatCard: cardPrefilled as formattedCard\"\n (click.silent.prevent)=\"(0)\"\n >\n <input\n #inputCard\n automation-id=\"tui-input-card-group__card\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input t-input_card\"\n [attr.aria-invalid]=\"!cardPrefilled && !(this.card | tuiMapper: cardValidator)\"\n [attr.id]=\"id + '_card'\"\n [autocomplete]=\"autocomplete ? 'cc-number' : 'off'\"\n [class.t-input_hidden]=\"!card.length && focus()\"\n [class.t-input_inert]=\"cardPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCard\"\n [ngModel]=\"formattedCard\"\n [placeholder]=\"cardPrefilled ? '' : exampleText\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"cardFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCardChange($event)\"\n />\n <span\n aria-hidden=\"true\"\n translate=\"no\"\n class=\"t-collapsed\"\n [attr.data-before]=\"masked\"\n [class.t-collapsed_enable-mask]=\"cardCollapsed\"\n (waResizeObserver)=\"(0)\"\n >\n <span\n #ghost\n class=\"t-ghost\"\n [textContent]=\"formattedCard.slice(-tailLength)\"\n ></span>\n\n <span class=\"t-collapsed-wrapper\">\n <span\n class=\"t-value\"\n [style.transform]=\"transform(ghost)\"\n >\n {{ formattedCard }}\n </span>\n </span>\n </span>\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cardNumberText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_expire\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.silent.prevent)=\"(0)\">\n <input\n #inputExpire\n automation-id=\"tui-input-card-group__expire\"\n inputmode=\"numeric\"\n placeholder=\"00/00\"\n translate=\"no\"\n class=\"t-input\"\n [attr.id]=\"id + '_expire'\"\n [attr.name]=\"autocomplete ? 'ccexpiryyear' : null\"\n [autocomplete]=\"autocomplete ? 'cc-exp' : 'off'\"\n [class.t-input_inert]=\"!expireFocusable\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskExpire\"\n [ngModel]=\"expire\"\n [readOnly]=\"readOnly()\"\n [tabIndex]=\"expireFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onExpireChange($event)\"\n />\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.expiryText }}\n </div>\n </label>\n</div>\n<div\n class=\"t-wrapper t-wrapper_cvc\"\n [class.t-wrapper_active]=\"cardCollapsed\"\n>\n <label (click.silent.prevent)=\"(0)\">\n <input\n #inputCVC\n automation-id=\"tui-input-card-group__cvc\"\n inputmode=\"numeric\"\n translate=\"no\"\n type=\"text\"\n class=\"t-input\"\n [attr.id]=\"id + '_cvc'\"\n [autocomplete]=\"autocomplete ? 'cc-csc' : 'off'\"\n [class.t-input_cvc_hidden]=\"cvcHidden\"\n [class.t-input_prefilled]=\"cvcPrefilled\"\n [disabled]=\"disabled()\"\n [maskito]=\"maskCVC\"\n [ngModel]=\"cvc\"\n [placeholder]=\"cvcPrefilled ? '\u2022\u2022\u2022' : exampleTextCVC\"\n [readOnly]=\"readOnly() || cvcPrefilled\"\n [tabIndex]=\"cvcFocusable ? 0 : -1\"\n (focus)=\"(0)\"\n (ngModelChange)=\"onCVCChange($event)\"\n />\n <div\n class=\"t-label\"\n [class.t-label_raised]=\"labelRaised()\"\n >\n {{ texts()?.cvcText }}\n </div>\n </label>\n</div>\n<div class=\"t-icons\">\n <div\n *ngIf=\"content\"\n class=\"t-icon-outlet\"\n >\n <img\n *polymorpheusOutlet=\"content as src\"\n alt=\"\"\n automation-id=\"tui-input-card-group__icon\"\n class=\"t-card\"\n [src]=\"src | tuiIcon\"\n />\n </div>\n <tui-icon\n *ngIf=\"hasCleaner()\"\n automation-id=\"tui-input-card-group__cleaner\"\n tuiAppearance=\"icon\"\n class=\"t-icon\"\n [icon]=\"icons.close\"\n (click)=\"clear()\"\n />\n <tui-icon\n *ngIf=\"dropdown.content\"\n automation-id=\"tui-input-card-group__dropdown\"\n tuiAppearance=\"icon\"\n tuiChevron\n (click)=\"toggle()\"\n />\n</div>\n", styles: [":host{position:relative;display:block;height:var(--tui-height-l);width:29.5rem;border-radius:var(--tui-radius-l);overflow:clip}:host :host-context(tui-root._mobile){width:18rem}.t-outline{height:100%;width:100%}.t-wrapper{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;width:100%;height:100%}.t-wrapper_cvc{margin-left:7.1875rem;transform:translate3d(100%,0,0)}:host-context(tui-root._mobile) .t-wrapper_cvc{margin-left:4.0625rem}.t-wrapper_expire{transform:translate3d(100%,0,0)}.t-wrapper_active{transform:translate3d(6.5625rem,0,0)}:host-context(tui-root._mobile) .t-wrapper_active{transform:translate3d(4.125rem,0,0)}.t-card{width:2rem;height:2rem}.t-collapsed{position:absolute;top:0;left:0;width:100%;height:100%;padding:1.25rem var(--tui-padding-l) 0;box-sizing:border-box;font:var(--tui-font-text-s);line-height:2.25rem;color:var(--tui-text-primary);white-space:nowrap;pointer-events:none}.t-collapsed_enable-mask:before{content:attr(data-before)}.t-collapsed_enable-mask .t-collapsed-wrapper{left:1.375rem}.t-collapsed-wrapper{position:absolute;top:0;display:block;width:100%;height:100%;overflow:hidden}.t-value{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:absolute;bottom:0;right:100%;display:block;transform:translate3d(100%,0,0)}.t-input{position:absolute;top:0;left:0;width:100%;height:100%;border:0;margin:0;padding:1.25rem var(--tui-padding-l) 0;outline:none;background:transparent;box-sizing:border-box;font:var(--tui-font-text-s);color:var(--tui-text-primary)}.t-input::placeholder{color:var(--tui-text-tertiary)}.t-input.t-input.t-input_card:not(.t-input_hidden),.t-input.t-input.t-input_card:not(.t-input_hidden)::placeholder,.t-input.t-input.t-input_card:not(.t-input_hidden):-webkit-autofill{caret-color:var(--tui-text-primary);color:transparent!important;-webkit-text-fill-color:transparent!important}.t-input.t-input.t-input_card::-webkit-credit-card-auto-fill-button{content:none!important;position:absolute;left:-62.4375rem;top:-62.4375rem;z-index:-999;display:none!important;background:transparent!important;pointer-events:none!important}.t-input_inert{pointer-events:none}.t-input_cvc_hidden{-webkit-text-security:disc}@supports (-webkit-touch-callout: none){.t-input:active{font-size:1rem}}.t-icons{position:absolute;right:.75rem;display:flex;align-items:center;height:100%}.t-icon-outlet{display:flex;margin-right:.25rem}.t-icon{cursor:pointer;border:.25rem solid transparent}.t-label{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1.125rem 1rem;font:var(--tui-font-text-m);line-height:1.25rem;color:var(--tui-text-secondary)}.t-label_raised{font-size:.8156rem;transform:translateY(-.7em)}:host([data-mode=\"invalid\"]) .t-label{color:var(--tui-text-negative)}:host([data-focus=\"true\"]) .t-label{color:var(--tui-text-primary)}.t-ghost{visibility:hidden}\n"] }]
254
+ }], propDecorators: { inputCard: [{
255
+ type: ViewChild,
256
+ args: ['inputCard']
257
+ }], inputExpire: [{
258
+ type: ViewChild,
259
+ args: ['inputExpire']
260
+ }], inputCVC: [{
261
+ type: ViewChild,
262
+ args: ['inputCVC']
263
+ }], exampleText: [{
264
+ type: Input
265
+ }], cardValidator: [{
266
+ type: Input
267
+ }], icon: [{
268
+ type: Input
269
+ }], id: [{
270
+ type: Input
271
+ }], autocomplete: [{
272
+ type: Input
273
+ }], binChange: [{
274
+ type: Output
275
+ }], codeLength: [{
276
+ type: Input
277
+ }], isFocusable: [], getPaymentSystem: [] } });
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQtZ3JvdXAvaW5wdXQtY2FyZC1ncm91cC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEdBQ2xCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVB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IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtFbGVtZW50UmVmLCBTaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b0RpcmVjdGl2ZX0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQge1Jlc2l6ZU9ic2VydmVyRGlyZWN0aXZlfSBmcm9tICdAbmctd2ViLWFwaXMvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7XG4gICAgVFVJX01BU0tfQ0FSRCxcbiAgICBUVUlfTUFTS19DVkMsXG4gICAgVFVJX01BU0tfRVhQSVJFLFxufSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY29tbWVyY2UvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpRm9ybWF0Q2FyZFBpcGV9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9waXBlcyc7XG5pbXBvcnQge1RVSV9QQVlNRU5UX1NZU1RFTV9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpUGF5bWVudFN5c3RlbX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3R5cGVzJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfTk9OX0RJR0lUX1JFR0VYUH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlBY3RpdmVab25lfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUnO1xuaW1wb3J0IHt0dWlIb3ZlcmVkLCBUdWlIb3ZlcmVkU2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2hvdmVyZWQnO1xuaW1wb3J0IHtUdWlMZXR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9sZXQnO1xuaW1wb3J0IHt0dWlUeXBlZEZyb21FdmVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1R1aU1hcHBlclBpcGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvbWFwcGVyJztcbmltcG9ydCB7VHVpSWRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3NlcnZpY2VzJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aUlzRWxlbWVudCwgdHVpSXNJbnB1dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc05hdGl2ZUZvY3VzZWQsIHR1aUlzTmF0aXZlRm9jdXNlZElufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2ZvY3VzJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB0eXBlIHtUdWlEYXRhTGlzdEhvc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7dHVpQXNEYXRhTGlzdEhvc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VHVpSWNvbiwgVHVpSWNvblBpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkRHJvcGRvd24sXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7XG4gICAgVHVpQXBwZWFyYW5jZSxcbiAgICB0dWlBcHBlYXJhbmNlLFxuICAgIHR1aUFwcGVhcmFuY2VGb2N1cyxcbiAgICB0dWlBcHBlYXJhbmNlU3RhdGUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvYXBwZWFyYW5jZSc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgIHR1aURyb3Bkb3duT3BlbixcbiAgICB0dWlEcm9wZG93bk9wdGlvbnNQcm92aWRlcixcbiAgICBUdWlXaXRoRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VFVJX0NPTU1PTl9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VHVpQ2hldnJvbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9kaXJlY3RpdmVzL2NoZXZyb24nO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXQsIFBvbHltb3JwaGV1c1RlbXBsYXRlfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCBtZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NBUkRfR1JPVVBfT1BUSU9OU30gZnJvbSAnLi9pbnB1dC1jYXJkLWdyb3VwLm9wdGlvbnMnO1xuaW1wb3J0IHtUVUlfSU5QVVRfQ0FSRF9HUk9VUF9URVhUU30gZnJvbSAnLi9pbnB1dC1jYXJkLWdyb3VwLnByb3ZpZGVycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpQ2FyZCB7XG4gICAgY2FyZDogc3RyaW5nO1xuICAgIGN2Yzogc3RyaW5nO1xuICAgIGV4cGlyZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LWNhcmQtZ3JvdXAnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgICAgIFJlc2l6ZU9ic2VydmVyRGlyZWN0aXZlLFxuICAgICAgICBQb2x5bW9ycGhldXNPdXRsZXQsXG4gICAgICAgIFBvbHltb3JwaGV1c1RlbXBsYXRlLFxuICAgICAgICBUdWlBY3RpdmVab25lLFxuICAgICAgICBUdWlGb3JtYXRDYXJkUGlwZSxcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICAgICAgVHVpTGV0LFxuICAgICAgICBUdWlJY29uLFxuICAgICAgICBUdWlDaGV2cm9uLFxuICAgICAgICBUdWlBcHBlYXJhbmNlLFxuICAgICAgICBUdWlJY29uUGlwZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1jYXJkLWdyb3VwLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNhcmQtZ3JvdXAuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0RhdGFMaXN0SG9zdChUdWlJbnB1dENhcmRHcm91cCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dENhcmRHcm91cCksXG4gICAgICAgIHR1aURyb3Bkb3duT3B0aW9uc1Byb3ZpZGVyKHtsaW1pdFdpZHRoOiAnZml4ZWQnfSksXG4gICAgICAgIFR1aUhvdmVyZWRTZXJ2aWNlLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAgVHVpQXBwZWFyYW5jZSxcbiAgICAgICAgVHVpRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgICAgIFR1aVdpdGhUZXh0ZmllbGREcm9wZG93bixcbiAgICAgICAgVHVpV2l0aERyb3Bkb3duT3BlbixcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2RhdGEtc2l6ZSc6ICdsJyxcbiAgICAgICAgJ1thdHRyLmRhdGEtbW9kZV0nOiAnbW9kZSgpJyxcbiAgICAgICAgJyhtb3VzZWRvd24pJzogJ29uTW91c2VEb3duKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0Q2FyZEdyb3VwXG4gICAgZXh0ZW5kcyBUdWlDb250cm9sPFR1aUNhcmQgfCBudWxsPlxuICAgIGltcGxlbWVudHMgVHVpRGF0YUxpc3RIb3N0PFBhcnRpYWw8VHVpQ2FyZD4+XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXRDYXJkJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0Q2FyZD86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dEV4cGlyZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dEV4cGlyZT86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dENWQycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dENWQz86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcml2YXRlIGV4cGlyZVByZWZpbGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudFN5c3RlbXMgPSBpbmplY3QoVFVJX1BBWU1FTlRfU1lTVEVNX0lDT05TKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0lOUFVUX0NBUkRfR1JPVVBfT1BUSU9OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvdmVyID0gdHVpSG92ZXJlZCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNlZEluID0gdG9TaWduYWwoXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQodGhpcy5lbCwgJ2ZvY3VzaW4nKSxcbiAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KHRoaXMuZWwsICdmb2N1c291dCcpLFxuICAgICAgICApLnBpcGUobWFwKCgpID0+IHR1aUlzTmF0aXZlRm9jdXNlZEluKHRoaXMuZWwpKSksXG4gICAgICAgIHtpbml0aWFsVmFsdWU6IGZhbHNlfSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIGV4YW1wbGVUZXh0Q1ZDID0gdGhpcy5vcHRpb25zLmV4YW1wbGVUZXh0Q1ZDO1xuICAgIHByb3RlY3RlZCBjdmNIaWRkZW4gPSB0aGlzLm9wdGlvbnMuY3ZjSGlkZGVuO1xuICAgIHByb3RlY3RlZCBtYXNrQ1ZDID0gVFVJX01BU0tfQ1ZDKDMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93biA9IGluamVjdChUdWlEcm9wZG93bkRpcmVjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1hc2tDYXJkID0gVFVJX01BU0tfQ0FSRDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFza0V4cGlyZSA9IFRVSV9NQVNLX0VYUElSRTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX0NPTU1PTl9JQ09OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRzID0gdG9TaWduYWwoaW5qZWN0KFRVSV9JTlBVVF9DQVJEX0dST1VQX1RFWFRTKSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcHBlYXJhbmNlID0gdHVpQXBwZWFyYW5jZShcbiAgICAgICAgaW5qZWN0KFRVSV9URVhURklFTERfT1BUSU9OUykuYXBwZWFyYW5jZSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0YXRlOiBTaWduYWw8dW5rbm93bj4gPSB0dWlBcHBlYXJhbmNlU3RhdGUoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXN0ZWQtdGVybmFyeVxuICAgICAgICBjb21wdXRlZCgoKSA9PiAodGhpcy5kaXNhYmxlZCgpID8gJ2Rpc2FibGVkJyA6IHRoaXMuaG92ZXIoKSA/ICdob3ZlcicgOiBudWxsKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBmb2N1cyA9IHR1aUFwcGVhcmFuY2VGb2N1cyhcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gdGhpcy5vcGVuKCkgfHwgdGhpcy5mb2N1c2VkSW4oKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBsYWJlbFJhaXNlZCA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiAodGhpcy5mb2N1cygpICYmICF0aGlzLnJlYWRPbmx5KCkpIHx8ICEhdGhpcy52YWx1ZSgpPy5jYXJkLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGFzQ2xlYW5lciA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiAhIXRoaXMudmFsdWUoKT8uY2FyZCAmJiB0aGlzLmludGVyYWN0aXZlKCksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4YW1wbGVUZXh0ID0gdGhpcy5vcHRpb25zLmV4YW1wbGVUZXh0O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FyZFZhbGlkYXRvcjogVHVpQm9vbGVhbkhhbmRsZXI8c3RyaW5nPiA9IHRoaXMub3B0aW9ucy5jYXJkVmFsaWRhdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvbjogUG9seW1vcnBoZXVzQ29udGVudCA9IHRoaXMub3B0aW9ucy5pY29uO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBpbmplY3QoVHVpSWRTZXJ2aWNlKS5nZW5lcmF0ZSgpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlID0gdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBiaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29kZUxlbmd0aChsZW5ndGg6IDMgfCA0KSB7XG4gICAgICAgIHRoaXMuZXhhbXBsZVRleHRDVkMgPSAnMCcucmVwZWF0KGxlbmd0aCk7XG4gICAgICAgIHRoaXMubWFza0NWQyA9IFRVSV9NQVNLX0NWQyhsZW5ndGgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmluKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJkLmxlbmd0aCA8IDYgPyBudWxsIDogdGhpcy5jYXJkLnNsaWNlKDAsIDYpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBUdWlDYXJkIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7YmlufSA9IHRoaXM7XG5cbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlQmluKGJpbik7XG4gICAgICAgIHRoaXMuZXhwaXJlUHJlZmlsbGVkID0gISF0aGlzLmV4cGlyZSAmJiB0aGlzLmNhcmRQcmVmaWxsZWQ7XG4gICAgfVxuXG4gICAgLyoqIFB1YmxpYyBBUEkgZm9yIG1hbnVhbCBmb2N1cyBtYW5hZ2VtZW50ICovXG4gICAgcHVibGljIGZvY3VzQ2FyZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dENhcmQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNFeHBpcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNDVkMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRDVkM/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3B0aW9uKG9wdGlvbjogUGFydGlhbDxUdWlDYXJkPiB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2NhcmQgPSAnJywgZXhwaXJlID0gJycsIGN2YyA9ICcnfSA9IG9wdGlvbiB8fCB7fTtcbiAgICAgICAgY29uc3Qge2Jpbn0gPSB0aGlzO1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgICghY2FyZCAmJiB0aGlzLmlucHV0Q2FyZD8ubmF0aXZlRWxlbWVudCkgfHxcbiAgICAgICAgICAgICghZXhwaXJlICYmIHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICB0aGlzLmlucHV0Q1ZDPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2Uoe2NhcmQsIGV4cGlyZSwgY3ZjfSk7XG4gICAgICAgIHRoaXMudXBkYXRlQmluKGJpbik7XG4gICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmV4cGlyZVByZWZpbGxlZCA9ICEhZXhwaXJlO1xuXG4gICAgICAgIGVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4cGlyZVByZWZpbGxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICB0aGlzLmZvY3VzQ2FyZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgY29uc3Qgc3lzdGVtID0gdGhpcy5nZXRQYXltZW50U3lzdGVtKHRoaXMuY2FyZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvbiB8fCAoc3lzdGVtICYmIHRoaXMucGF5bWVudFN5c3RlbXNbc3lzdGVtXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYXJkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKCk/LmNhcmQgfHwgJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBleHBpcmUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUoKT8uZXhwaXJlIHx8ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY3ZjKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKCk/LmN2YyB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhcmRDb2xsYXBzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmlzRm9jdXNhYmxlKHRoaXMuY2FyZCkgJiZcbiAgICAgICAgICAgICF0dWlJc05hdGl2ZUZvY3VzZWQodGhpcy5pbnB1dENhcmQ/Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCB0YWlsTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcmQubGVuZ3RoICUgNCA+IDAgPyA1IDogNDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhcmRQcmVmaWxsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY2FyZC5tYXRjaChUVUlfTk9OX0RJR0lUX1JFR0VYUCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjdmNQcmVmaWxsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3ZjLm1hdGNoKFRVSV9OT05fRElHSVRfUkVHRVhQKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNhcmRGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jYXJkUHJlZmlsbGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZXhwaXJlRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZvY3VzYWJsZSh0aGlzLmNhcmQpICYmICF0aGlzLmV4cGlyZVByZWZpbGxlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGN2Y0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGb2N1c2FibGUodGhpcy5jYXJkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IG1hc2tlZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJkUHJlZmlsbGVkID8gYCoke3RoaXMuY2FyZC5zbGljZSgtNCl9YCA6ICcqJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYXJkQ2hhbmdlKGNhcmQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGJpbn0gPSB0aGlzO1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBjYXJkLnNwbGl0KCcgJykuam9pbignJyk7XG5cbiAgICAgICAgaWYgKHZhbHVlKCk/LmNhcmQgPT09IHBhcnNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eShwYXJzZWQsICdjYXJkJyk7XG4gICAgICAgIHRoaXMudXBkYXRlQmluKGJpbik7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FyZFZhbGlkYXRvcih0aGlzLmNhcmQpICYmICF2YWx1ZSgpPy5leHBpcmUgJiYgdGhpcy5pbnB1dEV4cGlyZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0V4cGlyZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRXhwaXJlQ2hhbmdlKGV4cGlyZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoZXhwaXJlLCAnZXhwaXJlJyk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgTnVtYmVyKHRoaXMuaW5wdXRFeHBpcmU/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQpID09PSA1IC8vIE1NL1lZXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0NWQygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ1ZDQ2hhbmdlKGN2Yzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoY3ZjLCAnY3ZjJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybSh7b2Zmc2V0V2lkdGh9OiBIVE1MU3BhbkVsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJkQ29sbGFwc2VkID8gYHRyYW5zbGF0ZTNkKCR7b2Zmc2V0V2lkdGh9cHgsIDAsIDApYCA6ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodHVpSXNFbGVtZW50KGV2ZW50LnRhcmdldCkgJiYgdHVpSXNJbnB1dChldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4uc2V0KCF0aGlzLm9wZW4oKSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGlzRm9jdXNhYmxlKGNhcmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJkVmFsaWRhdG9yKGNhcmQpIHx8IHRoaXMuY2FyZFByZWZpbGxlZDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0UGF5bWVudFN5c3RlbSh2YWx1ZTogc3RyaW5nKTogVHVpUGF5bWVudFN5c3RlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBheW1lbnRTeXN0ZW1IYW5kbGVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUJpbihvbGRCaW46IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2Jpbn0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChiaW4gIT09IG9sZEJpbiAmJiAhdGhpcy5jYXJkUHJlZmlsbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmJpbkNoYW5nZS5lbWl0KGJpbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHByb3BOYW1lOiAnY2FyZCcgfCAnY3ZjJyB8ICdleHBpcmUnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtjYXJkID0gJycsIGV4cGlyZSA9ICcnLCBjdmMgPSAnJ30gPSB0aGlzLnZhbHVlKCkgfHwge307XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlOiBUdWlDYXJkID0ge2NhcmQsIGV4cGlyZSwgY3ZjfTtcblxuICAgICAgICBuZXdWYWx1ZVtwcm9wTmFtZV0gPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLmV4cGlyZSB8fCBuZXdWYWx1ZS5jdmMgfHwgbmV3VmFsdWUuY2FyZCA/IG5ld1ZhbHVlIDogbnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c0lucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgICh0aGlzLmNhcmRGb2N1c2FibGUgJiYgdGhpcy5pbnB1dENhcmQ/Lm5hdGl2ZUVsZW1lbnQpIHx8XG4gICAgICAgICAgICAodGhpcy5leHBpcmVGb2N1c2FibGUgJiYgdGhpcy5pbnB1dEV4cGlyZT8ubmF0aXZlRWxlbWVudCkgfHxcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDVkM/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgZWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidC13cmFwcGVyXCI+XG4gICAgPGxhYmVsXG4gICAgICAgICp0dWlMZXQ9XCJ2YWx1ZSgpPy5jYXJkIHwgdHVpRm9ybWF0Q2FyZDogY2FyZFByZWZpbGxlZCBhcyBmb3JtYXR0ZWRDYXJkXCJcbiAgICAgICAgKGNsaWNrLnNpbGVudC5wcmV2ZW50KT1cIigwKVwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dENhcmRcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cF9fY2FyZFwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT1cIm5vXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1pbnB1dCB0LWlucHV0X2NhcmRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiFjYXJkUHJlZmlsbGVkICYmICEodGhpcy5jYXJkIHwgdHVpTWFwcGVyOiBjYXJkVmFsaWRhdG9yKVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJpZCArICdfY2FyZCdcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUgPyAnY2MtbnVtYmVyJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWlucHV0X2hpZGRlbl09XCIhY2FyZC5sZW5ndGggJiYgZm9jdXMoKVwiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9pbmVydF09XCJjYXJkUHJlZmlsbGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFttYXNraXRvXT1cIm1hc2tDYXJkXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImZvcm1hdHRlZENhcmRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNhcmRQcmVmaWxsZWQgPyAnJyA6IGV4YW1wbGVUZXh0XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSgpXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJjYXJkRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCIoMClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DYXJkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT1cIm5vXCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2xsYXBzZWRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1iZWZvcmVdPVwibWFza2VkXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWNvbGxhcHNlZF9lbmFibGUtbWFza109XCJjYXJkQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIigwKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgI2dob3N0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWdob3N0XCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiZm9ybWF0dGVkQ2FyZC5zbGljZSgtdGFpbExlbmd0aClcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvbGxhcHNlZC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0cmFuc2Zvcm0oZ2hvc3QpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdHRlZENhcmQgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWxhYmVsXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWxhYmVsX3JhaXNlZF09XCJsYWJlbFJhaXNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdGV4dHMoKT8uY2FyZE51bWJlclRleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cbjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwidC13cmFwcGVyIHQtd3JhcHBlcl9leHBpcmVcIlxuICAgIFtjbGFzcy50LXdyYXBwZXJfYWN0aXZlXT1cImNhcmRDb2xsYXBzZWRcIlxuPlxuICAgIDxsYWJlbCAoY2xpY2suc2lsZW50LnByZXZlbnQpPVwiKDApXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0RXhwaXJlXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2V4cGlyZVwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMDAvMDBcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19leHBpcmUnXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjZXhwaXJ5eWVhcicgOiBudWxsXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjLWV4cCcgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9pbmVydF09XCIhZXhwaXJlRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFttYXNraXRvXT1cIm1hc2tFeHBpcmVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZXhwaXJlXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSgpXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJleHBpcmVGb2N1c2FibGUgPyAwIDogLTFcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIigwKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkV4cGlyZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWxhYmVsXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWxhYmVsX3JhaXNlZF09XCJsYWJlbFJhaXNlZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdGV4dHMoKT8uZXhwaXJ5VGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJ0LXdyYXBwZXIgdC13cmFwcGVyX2N2Y1wiXG4gICAgW2NsYXNzLnQtd3JhcHBlcl9hY3RpdmVdPVwiY2FyZENvbGxhcHNlZFwiXG4+XG4gICAgPGxhYmVsIChjbGljay5zaWxlbnQucHJldmVudCk9XCIoMClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRDVkNcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cF9fY3ZjXCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPVwibm9cIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWlucHV0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ19jdmMnXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8gJ2NjLWNzYycgOiAnb2ZmJ1wiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9jdmNfaGlkZGVuXT1cImN2Y0hpZGRlblwiXG4gICAgICAgICAgICBbY2xhc3MudC1pbnB1dF9wcmVmaWxsZWRdPVwiY3ZjUHJlZmlsbGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFttYXNraXRvXT1cIm1hc2tDVkNcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiY3ZjXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjdmNQcmVmaWxsZWQgPyAn4oCi4oCi4oCiJyA6IGV4YW1wbGVUZXh0Q1ZDXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seSgpIHx8IGN2Y1ByZWZpbGxlZFwiXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwiY3ZjRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCIoMClcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DVkNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgICAgICAgICBbY2xhc3MudC1sYWJlbF9yYWlzZWRdPVwibGFiZWxSYWlzZWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRleHRzKCk/LmN2Y1RleHQgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInQtaWNvbnNcIj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29udGVudFwiXG4gICAgICAgIGNsYXNzPVwidC1pY29uLW91dGxldFwiXG4gICAgPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29udGVudCBhcyBzcmNcIlxuICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cF9faWNvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtY2FyZFwiXG4gICAgICAgICAgICBbc3JjXT1cInNyYyB8IHR1aUljb25cIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDx0dWktaWNvblxuICAgICAgICAqbmdJZj1cImhhc0NsZWFuZXIoKVwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtY2FyZC1ncm91cF9fY2xlYW5lclwiXG4gICAgICAgIHR1aUFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWljb25cIlxuICAgICAgICBbaWNvbl09XCJpY29ucy5jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCJcbiAgICAvPlxuICAgIDx0dWktaWNvblxuICAgICAgICAqbmdJZj1cImRyb3Bkb3duLmNvbnRlbnRcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWNhcmQtZ3JvdXBfX2Ryb3Bkb3duXCJcbiAgICAgICAgdHVpQXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICB0dWlDaGV2cm9uXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgLz5cbjwvZGl2PlxuIl19
@@ -0,0 +1,15 @@
1
+ import { TUI_INPUT_CARD_DEFAULT_OPTIONS } from '@taiga-ui/addon-commerce/components/input-card';
2
+ import { tuiDefaultCardValidator } from '@taiga-ui/addon-commerce/constants';
3
+ import { tuiCreateToken, tuiProvideOptions } from '@taiga-ui/cdk/utils/miscellaneous';
4
+ export const TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS = {
5
+ ...TUI_INPUT_CARD_DEFAULT_OPTIONS,
6
+ cardValidator: tuiDefaultCardValidator,
7
+ exampleText: '0000 0000 0000 0000',
8
+ exampleTextCVC: '000',
9
+ cvcHidden: true,
10
+ };
11
+ export const TUI_INPUT_CARD_GROUP_OPTIONS = tuiCreateToken(TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS);
12
+ export function tuiInputCardGroupOptionsProvider(options) {
13
+ return tuiProvideOptions(TUI_INPUT_CARD_GROUP_OPTIONS, options, TUI_INPUT_CARD_GROUP_DEFAULT_OPTIONS);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY2FyZC1ncm91cC5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY29tbWVyY2UvY29tcG9uZW50cy9pbnB1dC1jYXJkLWdyb3VwL2lucHV0LWNhcmQtZ3JvdXAub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUM5RixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFTcEYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQTZCO0lBQzFFLEdBQUcsOEJBQThCO0lBQ2pDLGFBQWEsRUFBRSx1QkFBdUI7SUFDdEMsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxjQUFjLEVBQUUsS0FBSztJQUNyQixTQUFTLEVBQUUsSUFBSTtDQUNsQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsY0FBYyxDQUN0RCxvQ0FBb0MsQ0FDdkMsQ0FBQztBQUVGLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsT0FBMEM7SUFFMUMsT0FBTyxpQkFBaUIsQ0FDcEIsNEJBQTRCLEVBQzVCLE9BQU8sRUFDUCxvQ0FBb0MsQ0FDdkMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1R1aUlucHV0Q2FyZE9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQnO1xuaW1wb3J0IHtUVUlfSU5QVVRfQ0FSRF9ERUZBVUxUX09QVElPTlN9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jb21tZXJjZS9jb21wb25lbnRzL2lucHV0LWNhcmQnO1xuaW1wb3J0IHt0dWlEZWZhdWx0Q2FyZFZhbGlkYXRvcn0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbiwgdHVpUHJvdmlkZU9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHVpSW5wdXRDYXJkR3JvdXBPcHRpb25zIGV4dGVuZHMgVHVpSW5wdXRDYXJkT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgY2FyZFZhbGlkYXRvcjogVHVpQm9vbGVhbkhhbmRsZXI8c3RyaW5nPjtcbiAgICByZWFkb25seSBleGFtcGxlVGV4dDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGV4YW1wbGVUZXh0Q1ZDOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY3ZjSGlkZGVuOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0NBUkRfR1JPVVBfREVGQVVMVF9PUFRJT05TOiBUdWlJbnB1dENhcmRHcm91cE9wdGlvbnMgPSB7XG4gICAgLi4uVFVJX0lOUFVUX0NBUkRfREVGQVVMVF9PUFRJT05TLFxuICAgIGNhcmRWYWxpZGF0b3I6IHR1aURlZmF1bHRDYXJkVmFsaWRhdG9yLFxuICAgIGV4YW1wbGVUZXh0OiAnMDAwMCAwMDAwIDAwMDAgMDAwMCcsXG4gICAgZXhhbXBsZVRleHRDVkM6ICcwMDAnLFxuICAgIGN2Y0hpZGRlbjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBUVUlfSU5QVVRfQ0FSRF9HUk9VUF9PUFRJT05TID0gdHVpQ3JlYXRlVG9rZW4oXG4gICAgVFVJX0lOUFVUX0NBUkRfR1JPVVBfREVGQVVMVF9PUFRJT05TLFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlucHV0Q2FyZEdyb3VwT3B0aW9uc1Byb3ZpZGVyKFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8VHVpSW5wdXRDYXJkR3JvdXBPcHRpb25zPixcbik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gdHVpUHJvdmlkZU9wdGlvbnMoXG4gICAgICAgIFRVSV9JTlBVVF9DQVJEX0dST1VQX09QVElPTlMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIFRVSV9JTlBVVF9DQVJEX0dST1VQX0RFRkFVTFRfT1BUSU9OUyxcbiAgICApO1xufVxuIl19